From de27d6da4722a379cb7afe254d29727a8aba8fac Mon Sep 17 00:00:00 2001 From: "J. Oliva" Date: Wed, 6 Dec 2017 21:01:56 +0100 Subject: [PATCH] Add v2.6.4 dist files --- dist/dash.all.debug.js | 1708 +++++++++++++++++++--------- dist/dash.all.debug.js.map | 616 +++++----- dist/dash.all.min.js | 28 +- dist/dash.all.min.js.map | 2 +- dist/dash.mediaplayer.debug.js | 595 +++++++--- dist/dash.mediaplayer.debug.js.map | 470 ++++---- dist/dash.mediaplayer.min.js | 22 +- dist/dash.mediaplayer.min.js.map | 2 +- dist/dash.protection.debug.js | 495 ++++++-- dist/dash.protection.debug.js.map | 76 +- dist/dash.protection.min.js | 6 +- dist/dash.protection.min.js.map | 2 +- dist/dash.reporting.debug.js | 13 + dist/dash.reporting.debug.js.map | 80 +- dist/dash.reporting.min.js | 4 +- dist/dash.reporting.min.js.map | 2 +- 16 files changed, 2670 insertions(+), 1451 deletions(-) diff --git a/dist/dash.all.debug.js b/dist/dash.all.debug.js index 80c36d3972..d36791cde1 100644 --- a/dist/dash.all.debug.js +++ b/dist/dash.all.debug.js @@ -2194,13 +2194,13 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -_dereq_(6); +var _index_mediaplayerOnly = _dereq_(6); -var _srcStreamingMetricsMetricsReporting = _dereq_(116); +var _srcStreamingMetricsMetricsReporting = _dereq_(117); var _srcStreamingMetricsMetricsReporting2 = _interopRequireDefault(_srcStreamingMetricsMetricsReporting); -var _srcStreamingProtectionProtection = _dereq_(147); +var _srcStreamingProtectionProtection = _dereq_(148); var _srcStreamingProtectionProtection2 = _interopRequireDefault(_srcStreamingProtectionProtection); @@ -2213,11 +2213,12 @@ dashjs.MetricsReporting = _srcStreamingMetricsMetricsReporting2['default']; dashjs.MediaPlayerFactory = _srcStreamingMediaPlayerFactory2['default']; exports['default'] = dashjs; +exports.MediaPlayer = _index_mediaplayerOnly.MediaPlayer; exports.Protection = _srcStreamingProtectionProtection2['default']; exports.MetricsReporting = _srcStreamingMetricsMetricsReporting2['default']; exports.MediaPlayerFactory = _srcStreamingMediaPlayerFactory2['default']; -},{"116":116,"147":147,"6":6,"95":95}],6:[function(_dereq_,module,exports){ +},{"117":117,"148":148,"6":6,"95":95}],6:[function(_dereq_,module,exports){ (function (global){ /** * The copyright in this software is being made available under the BSD License, @@ -15364,7 +15365,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); exports.getVersionString = getVersionString; -var VERSION = '2.6.3'; +var VERSION = '2.6.4'; function getVersionString() { return VERSION; @@ -15462,6 +15463,7 @@ var CoreEvents = (function (_EventsBase) { this.STREAMS_COMPOSED = 'streamsComposed'; this.STREAM_BUFFERING_COMPLETED = 'streamBufferingCompleted'; this.STREAM_COMPLETED = 'streamCompleted'; + this.TEXT_TRACKS_QUEUE_INITIALIZED = 'textTracksQueueInitialized'; this.TIMED_TEXT_REQUESTED = 'timedTextRequested'; this.TIME_SYNCHRONIZATION_COMPLETED = 'timeSynchronizationComplete'; this.URL_RESOLUTION_FAILED = 'urlResolutionFailed'; @@ -15662,19 +15664,19 @@ var _streamingConstantsConstants = _dereq_(100); var _streamingConstantsConstants2 = _interopRequireDefault(_streamingConstantsConstants); -var _streamingVoRepresentationInfo = _dereq_(215); +var _streamingVoRepresentationInfo = _dereq_(217); var _streamingVoRepresentationInfo2 = _interopRequireDefault(_streamingVoRepresentationInfo); -var _streamingVoMediaInfo = _dereq_(213); +var _streamingVoMediaInfo = _dereq_(215); var _streamingVoMediaInfo2 = _interopRequireDefault(_streamingVoMediaInfo); -var _streamingVoStreamInfo = _dereq_(216); +var _streamingVoStreamInfo = _dereq_(218); var _streamingVoStreamInfo2 = _interopRequireDefault(_streamingVoStreamInfo); -var _streamingVoManifestInfo = _dereq_(212); +var _streamingVoManifestInfo = _dereq_(214); var _streamingVoManifestInfo2 = _interopRequireDefault(_streamingVoManifestInfo); @@ -16187,7 +16189,7 @@ DashAdapter.__dashjs_factory_name = 'DashAdapter'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(DashAdapter); module.exports = exports['default']; -},{"100":100,"2":2,"212":212,"213":213,"215":215,"216":216,"51":51,"83":83}],57:[function(_dereq_,module,exports){ +},{"100":100,"2":2,"214":214,"215":215,"217":217,"218":218,"51":51,"83":83}],57:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -16234,15 +16236,15 @@ var _constantsDashConstants = _dereq_(61); var _constantsDashConstants2 = _interopRequireDefault(_constantsDashConstants); -var _streamingVoFragmentRequest = _dereq_(209); +var _streamingVoFragmentRequest = _dereq_(211); var _streamingVoFragmentRequest2 = _interopRequireDefault(_streamingVoFragmentRequest); -var _streamingVoDashJSError = _dereq_(207); +var _streamingVoDashJSError = _dereq_(209); var _streamingVoDashJSError2 = _interopRequireDefault(_streamingVoDashJSError); -var _streamingVoMetricsHTTPRequest = _dereq_(224); +var _streamingVoMetricsHTTPRequest = _dereq_(226); var _coreEventsEvents = _dereq_(54); @@ -16260,7 +16262,7 @@ var _coreDebug = _dereq_(49); var _coreDebug2 = _interopRequireDefault(_coreDebug); -var _streamingUtilsURLUtils = _dereq_(202); +var _streamingUtilsURLUtils = _dereq_(204); var _streamingUtilsURLUtils2 = _interopRequireDefault(_streamingUtilsURLUtils); @@ -16286,6 +16288,7 @@ var SEGMENTS_UNAVAILABLE_ERROR_CODE = 1; function DashHandler(config) { + config = config || {}; var context = this.context; var eventBus = (0, _coreEventBus2['default'])(context).getInstance(); var urlUtils = (0, _streamingUtilsURLUtils2['default'])(context).getInstance(); @@ -16448,7 +16451,7 @@ function DashHandler(config) { } else { var seg = (0, _utilsSegmentsUtils.getSegmentByIndex)(index, representation); if (seg) { - var time = seg.presentationStartTime - representation.adaptation.period.start; + var time = parseFloat((seg.presentationStartTime - representation.adaptation.period.start).toFixed(5)); var duration = representation.adaptation.period.duration; log(representation.segmentInfoType + ': ' + time + ' / ' + duration); isFinished = representation.segmentInfoType === _constantsDashConstants2['default'].SEGMENT_TIMELINE && isDynamic ? false : time >= duration; @@ -16779,7 +16782,7 @@ _coreFactoryMaker2['default'].updateClassFactory(DashHandler.__dashjs_factory_na exports['default'] = factory; module.exports = exports['default']; -},{"100":100,"202":202,"207":207,"209":209,"224":224,"49":49,"50":50,"51":51,"54":54,"59":59,"60":60,"61":61,"76":76,"77":77,"87":87}],58:[function(_dereq_,module,exports){ +},{"100":100,"204":204,"209":209,"211":211,"226":226,"49":49,"50":50,"51":51,"54":54,"59":59,"60":60,"61":61,"76":76,"77":77,"87":87}],58:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -16818,7 +16821,7 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _streamingVoMetricsHTTPRequest = _dereq_(224); +var _streamingVoMetricsHTTPRequest = _dereq_(226); var _coreFactoryMaker = _dereq_(51); @@ -16836,6 +16839,7 @@ var _round10 = _dereq_(43); */ function DashMetrics(config) { + config = config || {}; var instance = undefined; var dashManifestModel = config.dashManifestModel; var manifestModel = config.manifestModel; @@ -17198,7 +17202,7 @@ DashMetrics.__dashjs_factory_name = 'DashMetrics'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(DashMetrics); module.exports = exports['default']; -},{"101":101,"224":224,"43":43,"51":51}],59:[function(_dereq_,module,exports){ +},{"101":101,"226":226,"43":43,"51":51}],59:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -17237,7 +17241,7 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _streamingUtilsRequestModifier = _dereq_(200); +var _streamingUtilsRequestModifier = _dereq_(202); var _streamingUtilsRequestModifier2 = _interopRequireDefault(_streamingUtilsRequestModifier); @@ -17245,7 +17249,7 @@ var _voSegment = _dereq_(88); var _voSegment2 = _interopRequireDefault(_voSegment); -var _streamingVoDashJSError = _dereq_(207); +var _streamingVoDashJSError = _dereq_(209); var _streamingVoDashJSError2 = _interopRequireDefault(_streamingVoDashJSError); @@ -17257,7 +17261,7 @@ var _coreEventBus = _dereq_(50); var _coreEventBus2 = _interopRequireDefault(_coreEventBus); -var _streamingUtilsBoxParser = _dereq_(190); +var _streamingUtilsBoxParser = _dereq_(192); var _streamingUtilsBoxParser2 = _interopRequireDefault(_streamingUtilsBoxParser); @@ -17269,9 +17273,9 @@ var _coreDebug = _dereq_(49); var _coreDebug2 = _interopRequireDefault(_coreDebug); -var _streamingVoMetricsHTTPRequest = _dereq_(224); +var _streamingVoMetricsHTTPRequest = _dereq_(226); -var _streamingVoFragmentRequest = _dereq_(209); +var _streamingVoFragmentRequest = _dereq_(211); var _streamingVoFragmentRequest2 = _interopRequireDefault(_streamingVoFragmentRequest); @@ -17351,7 +17355,6 @@ function SegmentBaseLoader() { var request = getFragmentRequest(info); var onload = function onload(response) { - info.bytesLoaded = info.range.end; isoFile = boxParser.parse(response); initRange = findInitRange(isoFile); @@ -17494,7 +17497,6 @@ function SegmentBaseLoader() { } function getSegmentsForSidx(sidx, info) { - var refs = sidx.references; var len = refs.length; var timescale = sidx.timescale; @@ -17553,7 +17555,6 @@ function SegmentBaseLoader() { } var request = new _streamingVoFragmentRequest2['default'](); - request.type = info.init ? _streamingVoMetricsHTTPRequest.HTTPRequest.INIT_SEGMENT_TYPE : _streamingVoMetricsHTTPRequest.HTTPRequest.MEDIA_SEGMENT_TYPE; request.url = info.url; request.range = info.range.start + '-' + info.range.end; @@ -17584,7 +17585,7 @@ SegmentBaseLoader.__dashjs_factory_name = 'SegmentBaseLoader'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(SegmentBaseLoader); module.exports = exports['default']; -},{"190":190,"200":200,"207":207,"209":209,"224":224,"49":49,"50":50,"51":51,"54":54,"88":88,"98":98}],60:[function(_dereq_,module,exports){ +},{"192":192,"202":202,"209":209,"211":211,"226":226,"49":49,"50":50,"51":51,"54":54,"88":88,"98":98}],60:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { @@ -17601,7 +17602,7 @@ var _coreEventBus = _dereq_(50); var _coreEventBus2 = _interopRequireDefault(_coreEventBus); -var _streamingUtilsEBMLParser = _dereq_(194); +var _streamingUtilsEBMLParser = _dereq_(196); var _streamingUtilsEBMLParser2 = _interopRequireDefault(_streamingUtilsEBMLParser); @@ -17613,7 +17614,7 @@ var _coreDebug = _dereq_(49); var _coreDebug2 = _interopRequireDefault(_coreDebug); -var _streamingUtilsRequestModifier = _dereq_(200); +var _streamingUtilsRequestModifier = _dereq_(202); var _streamingUtilsRequestModifier2 = _interopRequireDefault(_streamingUtilsRequestModifier); @@ -17621,9 +17622,9 @@ var _voSegment = _dereq_(88); var _voSegment2 = _interopRequireDefault(_voSegment); -var _streamingVoMetricsHTTPRequest = _dereq_(224); +var _streamingVoMetricsHTTPRequest = _dereq_(226); -var _streamingVoFragmentRequest = _dereq_(209); +var _streamingVoFragmentRequest = _dereq_(211); var _streamingVoFragmentRequest2 = _interopRequireDefault(_streamingVoFragmentRequest); @@ -17700,9 +17701,6 @@ function WebmSegmentBaseLoader() { tag: 0xF1, required: true, parse: 'getMatroskaUint' - }, - CueBlockNumber: { - tag: 0x5378 } } } @@ -17738,15 +17736,12 @@ function WebmSegmentBaseLoader() { function parseCues(ab) { var cues = []; var cue = undefined; - var cueSize = undefined; var cueTrack = undefined; var ebmlParser = (0, _streamingUtilsEBMLParser2['default'])(context).create({ data: ab }); - var numSize = undefined; - ebmlParser.consumeTag(WebM.Segment.Cues); - cueSize = ebmlParser.getMatroskaCodedNum(); + ebmlParser.consumeTagAndSize(WebM.Segment.Cues); while (ebmlParser.moreData() && ebmlParser.consumeTagAndSize(WebM.Segment.Cues.CuePoint, true)) { cue = {}; @@ -17754,7 +17749,9 @@ function WebmSegmentBaseLoader() { cue.CueTime = ebmlParser.parseTag(WebM.Segment.Cues.CuePoint.CueTime); cue.CueTracks = []; - while (ebmlParser.moreData() && ebmlParser.consumeTagAndSize(WebM.Segment.Cues.CuePoint.CueTrackPositions, true)) { + while (ebmlParser.moreData() && ebmlParser.consumeTag(WebM.Segment.Cues.CuePoint.CueTrackPositions, true)) { + var cueTrackPositionSize = ebmlParser.getMatroskaCodedNum(); + var startPos = ebmlParser.getPos(); cueTrack = {}; cueTrack.Track = ebmlParser.parseTag(WebM.Segment.Cues.CuePoint.CueTrackPositions.CueTrack); @@ -17764,20 +17761,10 @@ function WebmSegmentBaseLoader() { cueTrack.ClusterPosition = ebmlParser.parseTag(WebM.Segment.Cues.CuePoint.CueTrackPositions.CueClusterPosition); - // block number is strictly optional. - // we also have to make sure we don't go beyond the end - // of the cues - if (ebmlParser.getPos() + 4 > cueSize || !ebmlParser.consumeTag(WebM.Segment.Cues.CuePoint.CueTrackPositions.CueBlockNumber, true)) { - cue.CueTracks.push(cueTrack); - } else { - // since we have already consumed the tag, get the size of - // the tag's payload, and manually parse an unsigned int - // from the bit stream - numSize = ebmlParser.getMatroskaCodedNum(); - cueTrack.BlockNumber = ebmlParser.getMatroskaUint(numSize); + cue.CueTracks.push(cueTrack); - cue.CueTracks.push(cueTrack); - } + // we're not interested any other elements - skip remaining bytes + ebmlParser.setPos(startPos + cueTrackPositionSize); } if (cue.CueTracks.length === 0) { @@ -18058,7 +18045,7 @@ WebmSegmentBaseLoader.__dashjs_factory_name = 'WebmSegmentBaseLoader'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(WebmSegmentBaseLoader); module.exports = exports['default']; -},{"194":194,"200":200,"209":209,"224":224,"49":49,"50":50,"51":51,"54":54,"88":88,"98":98}],61:[function(_dereq_,module,exports){ +},{"196":196,"202":202,"211":211,"226":226,"49":49,"50":50,"51":51,"54":54,"88":88,"98":98}],61:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -18258,7 +18245,7 @@ var _constantsDashConstants = _dereq_(61); var _constantsDashConstants2 = _interopRequireDefault(_constantsDashConstants); -var _streamingVoDashJSError = _dereq_(207); +var _streamingVoDashJSError = _dereq_(209); var _streamingVoDashJSError2 = _interopRequireDefault(_streamingVoDashJSError); @@ -18624,7 +18611,7 @@ RepresentationController.__dashjs_factory_name = 'RepresentationController'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(RepresentationController); module.exports = exports['default']; -},{"100":100,"207":207,"50":50,"51":51,"54":54,"61":61,"87":87,"94":94}],63:[function(_dereq_,module,exports){ +},{"100":100,"209":209,"50":50,"51":51,"54":54,"61":61,"87":87,"94":94}],63:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -18703,11 +18690,11 @@ var _voEventStream = _dereq_(84); var _voEventStream2 = _interopRequireDefault(_voEventStream); -var _streamingUtilsObjectUtils = _dereq_(199); +var _streamingUtilsObjectUtils = _dereq_(201); var _streamingUtilsObjectUtils2 = _interopRequireDefault(_streamingUtilsObjectUtils); -var _streamingUtilsURLUtils = _dereq_(202); +var _streamingUtilsURLUtils = _dereq_(204); var _streamingUtilsURLUtils2 = _interopRequireDefault(_streamingUtilsURLUtils); @@ -18717,6 +18704,7 @@ var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); function DashManifestModel(config) { + config = config || {}; var instance = undefined; var context = this.context; @@ -19240,7 +19228,7 @@ function DashManifestModel(config) { // of the previous Period. else if (realPeriod1 !== null && realPeriod.hasOwnProperty(_constantsDashConstants2['default'].DURATION) && voPeriod1 !== null) { voPeriod = new _voPeriod2['default'](); - voPeriod.start = voPeriod1.start + voPeriod1.duration; + voPeriod.start = parseFloat((voPeriod1.start + voPeriod1.duration).toFixed(5)); voPeriod.duration = realPeriod.duration; } // If (i) @start attribute is absent, and (ii) the Period element @@ -19255,7 +19243,7 @@ function DashManifestModel(config) { // The difference between the PeriodStart time of a Period and // the PeriodStart time of the following Period. if (voPeriod1 !== null && isNaN(voPeriod1.duration)) { - voPeriod1.duration = voPeriod.start - voPeriod1.start; + voPeriod1.duration = parseFloat((voPeriod.start - voPeriod1.start).toFixed(5)); } if (voPeriod !== null) { @@ -19286,7 +19274,7 @@ function DashManifestModel(config) { // The difference between the PeriodStart time of the last Period // and the mpd duration if (voPeriod1 !== null && isNaN(voPeriod1.duration)) { - voPeriod1.duration = getEndTimeForLastPeriod(voPeriod1) - voPeriod1.start; + voPeriod1.duration = parseFloat((getEndTimeForLastPeriod(voPeriod1) - voPeriod1.start).toFixed(5)); } return voPeriods; @@ -19650,7 +19638,7 @@ DashManifestModel.__dashjs_factory_name = 'DashManifestModel'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(DashManifestModel); module.exports = exports['default']; -},{"100":100,"199":199,"202":202,"51":51,"61":61,"81":81,"82":82,"83":83,"84":84,"85":85,"86":86,"87":87,"89":89}],64:[function(_dereq_,module,exports){ +},{"100":100,"201":201,"204":204,"51":51,"61":61,"81":81,"82":82,"83":83,"84":84,"85":85,"86":86,"87":87,"89":89}],64:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -19731,6 +19719,7 @@ var _mapsSegmentValuesMap2 = _interopRequireDefault(_mapsSegmentValuesMap); function DashParser(config) { + config = config || {}; var context = this.context; var log = (0, _coreDebug2['default'])(context).getInstance().log; var errorHandler = config.errorHandler; @@ -20796,11 +20785,12 @@ var _SegmentsUtils = _dereq_(77); function ListSegmentsGetter(config, isDynamic) { + config = config || {}; var timelineConverter = config.timelineConverter; var instance = undefined; - function getSegmentsFromList(representation, requestedTime, index) { + function getSegmentsFromList(representation, requestedTime, index, availabilityUpperLimit) { var list = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentList; var len = list.SegmentURL_asArray.length; @@ -20816,7 +20806,7 @@ function ListSegmentsGetter(config, isDynamic) { start = representation.startNumber; - range = (0, _SegmentsUtils.decideSegmentListRangeForTemplate)(timelineConverter, isDynamic, representation, requestedTime, index); + range = (0, _SegmentsUtils.decideSegmentListRangeForTemplate)(timelineConverter, isDynamic, representation, requestedTime, index, availabilityUpperLimit); startIdx = Math.max(range.start, 0); endIdx = Math.min(range.end, list.SegmentURL_asArray.length - 1); @@ -20925,7 +20915,9 @@ function SegmentsGetter(config, isDynamic) { listSegmentsGetter = (0, _ListSegmentsGetter2['default'])(context).create(config, isDynamic); } - function getSegments(representation, requestedTime, index, onSegmentListUpdatedCallback) { + // availabilityUpperLimit parameter is not used directly by any dash.js function, but it is needed as a helper + // for other developments that extend dash.js, and provide their own transport layers (ex: P2P transport) + function getSegments(representation, requestedTime, index, onSegmentListUpdatedCallback, availabilityUpperLimit) { var segments = undefined; var type = representation.segmentInfoType; @@ -20934,11 +20926,11 @@ function SegmentsGetter(config, isDynamic) { segments = representation.segments; } else { if (type === _constantsDashConstants2['default'].SEGMENT_TIMELINE) { - segments = timelineSegmentsGetter.getSegments(representation, requestedTime, index); + segments = timelineSegmentsGetter.getSegments(representation, requestedTime, index, availabilityUpperLimit); } else if (type === _constantsDashConstants2['default'].SEGMENT_TEMPLATE) { - segments = templateSegmentsGetter.getSegments(representation, requestedTime, index); + segments = templateSegmentsGetter.getSegments(representation, requestedTime, index, availabilityUpperLimit); } else if (type === _constantsDashConstants2['default'].SEGMENT_LIST) { - segments = listSegmentsGetter.getSegments(representation, requestedTime, index); + segments = listSegmentsGetter.getSegments(representation, requestedTime, index, availabilityUpperLimit); } if (onSegmentListUpdatedCallback) { @@ -21132,8 +21124,8 @@ function getIndexBasedSegment(timelineConverter, isDynamic, representation, inde duration = representation.adaptation.period.duration; } - presentationStartTime = representation.adaptation.period.start + index * duration; - presentationEndTime = presentationStartTime + duration; + presentationStartTime = parseFloat((representation.adaptation.period.start + index * duration).toFixed(5)); + presentationEndTime = parseFloat((presentationStartTime + duration).toFixed(5)); seg = new _voSegment2['default'](); @@ -21324,7 +21316,7 @@ function TemplateSegmentsGetter(config, isDynamic) { var instance = undefined; - function getSegmentsFromTemplate(representation, requestedTime, index) { + function getSegmentsFromTemplate(representation, requestedTime, index, availabilityUpperLimit) { var template = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentTemplate; var duration = representation.segmentDuration; var availabilityWindow = representation.segmentAvailabilityRange; @@ -21344,7 +21336,7 @@ function TemplateSegmentsGetter(config, isDynamic) { if (isNaN(duration) && !isDynamic) { segmentRange = { start: start, end: start }; } else { - segmentRange = (0, _SegmentsUtils.decideSegmentListRangeForTemplate)(timelineConverter, isDynamic, representation, requestedTime, index); + segmentRange = (0, _SegmentsUtils.decideSegmentListRangeForTemplate)(timelineConverter, isDynamic, representation, requestedTime, index, availabilityUpperLimit); } startIdx = segmentRange.start; @@ -21674,6 +21666,7 @@ var _SegmentsUtils = _dereq_(77); function TimelineSegmentsGetter(config, isDynamic) { + config = config || {}; var timelineConverter = config.timelineConverter; var instance = undefined; @@ -21684,8 +21677,7 @@ function TimelineSegmentsGetter(config, isDynamic) { } } - function getSegmentsFromTimeline(representation, requestedTime, index) { - + function getSegmentsFromTimeline(representation, requestedTime, index, availabilityUpperLimit) { checkConfig(); if (!representation) { @@ -21703,7 +21695,11 @@ function TimelineSegmentsGetter(config, isDynamic) { var maxSegmentsAhead = undefined; - maxSegmentsAhead = index > -1 || requestedTime !== null ? 10 : Infinity; + if (availabilityUpperLimit) { + maxSegmentsAhead = availabilityUpperLimit; + } else { + maxSegmentsAhead = index > -1 || requestedTime !== null ? 10 : Infinity; + } var time = 0; var scaledTime = 0; @@ -22453,11 +22449,11 @@ var _XHRLoader = _dereq_(98); var _XHRLoader2 = _interopRequireDefault(_XHRLoader); -var _voHeadRequest = _dereq_(210); +var _voHeadRequest = _dereq_(212); var _voHeadRequest2 = _interopRequireDefault(_voHeadRequest); -var _voDashJSError = _dereq_(207); +var _voDashJSError = _dereq_(209); var _voDashJSError2 = _interopRequireDefault(_voDashJSError); @@ -22479,6 +22475,7 @@ var FRAGMENT_LOADER_MESSAGE_NULL_REQUEST = 'request is null'; function FragmentLoader(config) { + config = config || {}; var context = this.context; var eventBus = (0, _coreEventBus2['default'])(context).getInstance(); @@ -22588,7 +22585,7 @@ _coreFactoryMaker2['default'].updateClassFactory(FragmentLoader.__dashjs_factory exports['default'] = factory; module.exports = exports['default']; -},{"207":207,"210":210,"50":50,"51":51,"54":54,"98":98}],91:[function(_dereq_,module,exports){ +},{"209":209,"212":212,"50":50,"51":51,"54":54,"98":98}],91:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -22631,7 +22628,7 @@ var _constantsConstants = _dereq_(100); var _constantsConstants2 = _interopRequireDefault(_constantsConstants); -var _controllersXlinkController = _dereq_(115); +var _controllersXlinkController = _dereq_(116); var _controllersXlinkController2 = _interopRequireDefault(_controllersXlinkController); @@ -22639,19 +22636,19 @@ var _XHRLoader = _dereq_(98); var _XHRLoader2 = _interopRequireDefault(_XHRLoader); -var _utilsURLUtils = _dereq_(202); +var _utilsURLUtils = _dereq_(204); var _utilsURLUtils2 = _interopRequireDefault(_utilsURLUtils); -var _voTextRequest = _dereq_(217); +var _voTextRequest = _dereq_(219); var _voTextRequest2 = _interopRequireDefault(_voTextRequest); -var _voDashJSError = _dereq_(207); +var _voDashJSError = _dereq_(209); var _voDashJSError2 = _interopRequireDefault(_voDashJSError); -var _voMetricsHTTPRequest = _dereq_(224); +var _voMetricsHTTPRequest = _dereq_(226); var _coreEventBus = _dereq_(50); @@ -22679,6 +22676,7 @@ var MANIFEST_LOADER_MESSAGE_PARSING_FAILURE = 'parsing failed'; function ManifestLoader(config) { + config = config || {}; var context = this.context; var eventBus = (0, _coreEventBus2['default'])(context).getInstance(); var urlUtils = (0, _utilsURLUtils2['default'])(context).getInstance(); @@ -22854,7 +22852,7 @@ _coreFactoryMaker2['default'].updateClassFactory(ManifestLoader.__dashjs_factory exports['default'] = factory; module.exports = exports['default']; -},{"100":100,"115":115,"202":202,"207":207,"217":217,"224":224,"49":49,"50":50,"51":51,"54":54,"64":64,"98":98}],92:[function(_dereq_,module,exports){ +},{"100":100,"116":116,"204":204,"209":209,"219":219,"226":226,"49":49,"50":50,"51":51,"54":54,"64":64,"98":98}],92:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -23105,15 +23103,15 @@ var _dashVoUTCTiming = _dereq_(89); var _dashVoUTCTiming2 = _interopRequireDefault(_dashVoUTCTiming); -var _controllersPlaybackController = _dereq_(110); +var _controllersPlaybackController = _dereq_(111); var _controllersPlaybackController2 = _interopRequireDefault(_controllersPlaybackController); -var _controllersStreamController = _dereq_(113); +var _controllersStreamController = _dereq_(114); var _controllersStreamController2 = _interopRequireDefault(_controllersStreamController); -var _controllersMediaController = _dereq_(108); +var _controllersMediaController = _dereq_(109); var _controllersMediaController2 = _interopRequireDefault(_controllersMediaController); @@ -23121,55 +23119,55 @@ var _ManifestLoader = _dereq_(91); var _ManifestLoader2 = _interopRequireDefault(_ManifestLoader); -var _utilsErrorHandler = _dereq_(195); +var _utilsErrorHandler = _dereq_(197); var _utilsErrorHandler2 = _interopRequireDefault(_utilsErrorHandler); -var _utilsCapabilities = _dereq_(191); +var _utilsCapabilities = _dereq_(193); var _utilsCapabilities2 = _interopRequireDefault(_utilsCapabilities); -var _textTextTracks = _dereq_(188); +var _textTextTracks = _dereq_(190); var _textTextTracks2 = _interopRequireDefault(_textTextTracks); -var _utilsRequestModifier = _dereq_(200); +var _utilsRequestModifier = _dereq_(202); var _utilsRequestModifier2 = _interopRequireDefault(_utilsRequestModifier); -var _textTextController = _dereq_(186); +var _textTextController = _dereq_(188); var _textTextController2 = _interopRequireDefault(_textTextController); -var _modelsURIQueryAndFragmentModel = _dereq_(144); +var _modelsURIQueryAndFragmentModel = _dereq_(145); var _modelsURIQueryAndFragmentModel2 = _interopRequireDefault(_modelsURIQueryAndFragmentModel); -var _modelsManifestModel = _dereq_(141); +var _modelsManifestModel = _dereq_(142); var _modelsManifestModel2 = _interopRequireDefault(_modelsManifestModel); -var _modelsMediaPlayerModel = _dereq_(142); +var _modelsMediaPlayerModel = _dereq_(143); var _modelsMediaPlayerModel2 = _interopRequireDefault(_modelsMediaPlayerModel); -var _modelsMetricsModel = _dereq_(143); +var _modelsMetricsModel = _dereq_(144); var _modelsMetricsModel2 = _interopRequireDefault(_modelsMetricsModel); -var _controllersAbrController = _dereq_(102); +var _controllersAbrController = _dereq_(103); var _controllersAbrController2 = _interopRequireDefault(_controllersAbrController); -var _controllersSourceBufferController = _dereq_(112); +var _controllersSourceBufferController = _dereq_(113); var _controllersSourceBufferController2 = _interopRequireDefault(_controllersSourceBufferController); -var _modelsVideoModel = _dereq_(145); +var _modelsVideoModel = _dereq_(146); var _modelsVideoModel2 = _interopRequireDefault(_modelsVideoModel); -var _utilsDOMStorage = _dereq_(193); +var _utilsDOMStorage = _dereq_(195); var _utilsDOMStorage2 = _interopRequireDefault(_utilsDOMStorage); @@ -23213,7 +23211,7 @@ var _dashUtilsTimelineConverter = _dereq_(79); var _dashUtilsTimelineConverter2 = _interopRequireDefault(_dashUtilsTimelineConverter); -var _voMetricsHTTPRequest = _dereq_(224); +var _voMetricsHTTPRequest = _dereq_(226); var _externalsBase64 = _dereq_(1); @@ -23714,15 +23712,15 @@ function MediaPlayer() { */ function getDVRSeekOffset(value) { var metric = getDVRInfoMetric(); - + var liveDelay = playbackController.getLiveDelay(); if (!metric) { return 0; } var val = metric.range.start + value; - if (val > metric.range.end) { - val = metric.range.end; + if (val > metric.range.end - liveDelay) { + val = metric.range.end - liveDelay; } return val; @@ -24819,6 +24817,99 @@ function MediaPlayer() { TEXT MANAGEMENT --------------------------------------------------------------------------- */ + /** + * Set default language for text. If default language is not one of text tracks, dash will choose the first one. + * + * @param {string} lang - default language + * @memberof module:MediaPlayer + * @instance + */ + function setTextDefaultLanguage(lang) { + if (textController === undefined) { + textController = (0, _textTextController2['default'])(context).getInstance(); + } + + textController.setTextDefaultLanguage(lang); + } + + /** + * Get default language for text. + * + * @return {string} the default language if it has been set using setTextDefaultLanguage + * @memberof module:MediaPlayer + * @instance + */ + function getTextDefaultLanguage() { + if (textController === undefined) { + textController = (0, _textTextController2['default'])(context).getInstance(); + } + + return textController.getTextDefaultLanguage(); + } + + /** + * Set enabled default state. + * This is used to enable/disable text when a file is loaded. + * During playback, use enableText to enable text for the file + * + * @param {boolean} enable - true to enable text, false otherwise + * @memberof module:MediaPlayer + * @instance + */ + function setTextDefaultEnabled(enable) { + if (textController === undefined) { + textController = (0, _textTextController2['default'])(context).getInstance(); + } + + textController.setTextDefaultEnabled(enable); + } + + /** + * Get enabled default state. + * + * @return {boolean} default enable state + * @memberof module:MediaPlayer + * @instance + */ + function getTextDefaultEnabled() { + if (textController === undefined) { + textController = (0, _textTextController2['default'])(context).getInstance(); + } + + return textController.getTextDefaultEnabled(); + } + + /** + * Enable/disable text + * When enabling text, dash will choose the previous selected text track + * + * @param {boolean} enable - true to enable text, false otherwise (same as setTextTrack(-1)) + * @memberof module:MediaPlayer + * @instance + */ + function enableText(enable) { + if (textController === undefined) { + textController = (0, _textTextController2['default'])(context).getInstance(); + } + + textController.enableText(enable); + } + + /** + * Return if text is enabled + * + * @return {boolean} return true if text is enabled, false otherwise + * @memberof module:MediaPlayer + * @instance + */ + function isTextEnabled() { + if (textController === undefined) { + textController = (0, _textTextController2['default'])(context).getInstance(); + } + + return textController.isTextEnabled(); + } + /** * Use this method to change the current text track for both external time text files and fragmented text tracks. There is no need to * set the track mode on the video object to switch a track when using this method. @@ -24918,6 +25009,9 @@ function MediaPlayer() { if (!mediaPlayerInitialized) { throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR; } + if (videoModel) { + videoModel.reset(); + } videoModel = null; if (element) { videoModel = (0, _modelsVideoModel2['default'])(context).getInstance(); @@ -25701,6 +25795,12 @@ function MediaPlayer() { setLimitBitrateByPortal: setLimitBitrateByPortal, getUsePixelRatioInLimitBitrateByPortal: getUsePixelRatioInLimitBitrateByPortal, setUsePixelRatioInLimitBitrateByPortal: setUsePixelRatioInLimitBitrateByPortal, + setTextDefaultLanguage: setTextDefaultLanguage, + getTextDefaultLanguage: getTextDefaultLanguage, + setTextDefaultEnabled: setTextDefaultEnabled, + getTextDefaultEnabled: getTextDefaultEnabled, + enableText: enableText, + isTextEnabled: isTextEnabled, setTextTrack: setTextTrack, getBitrateInfoListFor: getBitrateInfoListFor, setInitialBitrateFor: setInitialBitrateFor, @@ -25785,7 +25885,7 @@ _coreFactoryMaker2['default'].updateClassFactory(MediaPlayer.__dashjs_factory_na exports['default'] = factory; module.exports = exports['default']; -},{"1":1,"100":100,"101":101,"102":102,"108":108,"11":11,"110":110,"112":112,"113":113,"141":141,"142":142,"143":143,"144":144,"145":145,"186":186,"188":188,"191":191,"193":193,"195":195,"200":200,"224":224,"49":49,"50":50,"51":51,"52":52,"54":54,"56":56,"58":58,"63":63,"79":79,"89":89,"91":91,"94":94}],94:[function(_dereq_,module,exports){ +},{"1":1,"100":100,"101":101,"103":103,"109":109,"11":11,"111":111,"113":113,"114":114,"142":142,"143":143,"144":144,"145":145,"146":146,"188":188,"190":190,"193":193,"195":195,"197":197,"202":202,"226":226,"49":49,"50":50,"51":51,"52":52,"54":54,"56":56,"58":58,"63":63,"79":79,"89":89,"91":91,"94":94}],94:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -25951,7 +26051,13 @@ var MediaPlayerEvents = (function (_EventsBase) { this.QUALITY_CHANGE_RENDERED = 'qualityChangeRendered'; /** - * Triggered when the stream is setup and ready. + * Triggered when the source is setup and ready. + * @event MediaPlayerEvents#SOURCE_INITIALIZED + */ + this.SOURCE_INITIALIZED = 'sourceInitialized'; + + /** + * Triggered when a stream (period) is loaded * @event MediaPlayerEvents#STREAM_INITIALIZED */ this.STREAM_INITIALIZED = 'streamInitialized'; @@ -26261,11 +26367,11 @@ var _StreamProcessor = _dereq_(97); var _StreamProcessor2 = _interopRequireDefault(_StreamProcessor); -var _controllersEventController = _dereq_(106); +var _controllersEventController = _dereq_(107); var _controllersEventController2 = _interopRequireDefault(_controllersEventController); -var _controllersFragmentController = _dereq_(107); +var _controllersFragmentController = _dereq_(108); var _controllersFragmentController2 = _interopRequireDefault(_controllersFragmentController); @@ -26288,7 +26394,7 @@ var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); function Stream(config) { var DATA_UPDATE_FAILED_ERROR_CODE = 1; - + config = config || {}; var context = this.context; var log = (0, _coreDebug2['default'])(context).getInstance().log; var eventBus = (0, _coreEventBus2['default'])(context).getInstance(); @@ -26374,7 +26480,6 @@ function Stream(config) { streamProcessors = []; isStreamActivated = false; isMediaInitialized = false; - clearEventController(); eventBus.off(_coreEventsEvents2['default'].CURRENT_TRACK_CHANGED, onCurrentTrackChanged, instance); } @@ -26456,9 +26561,9 @@ function Stream(config) { } } - function clearEventController() { + function stopEventController() { if (eventController) { - eventController.clear(); + eventController.stop(); } } @@ -26529,7 +26634,7 @@ function Stream(config) { } } - function createStreamProcessor(mediaInfo, mediaSource, optionalSettings) { + function createStreamProcessor(mediaInfo, allMediaForType, mediaSource, optionalSettings) { var streamProcessor = (0, _StreamProcessor2['default'])(context).create({ type: getMimeTypeOrType(mediaInfo), mimeType: mediaInfo.mimeType, @@ -26552,7 +26657,6 @@ function Stream(config) { errHandler: errHandler }); - var allMediaForType = adapter.getAllMediaInfoForType(streamInfo, mediaInfo.type); streamProcessor.initialize(mediaSource); abrController.updateTopQualityIndex(mediaInfo); @@ -26620,22 +26724,25 @@ function Stream(config) { // TODO : How to tell index handler live/duration? // TODO : Pass to controller and then pass to each method on handler? - createStreamProcessor(initialMediaInfo, mediaSource); + createStreamProcessor(initialMediaInfo, allMediaForType, mediaSource); } function initializeMedia(mediaSource) { checkConfig(); var events = undefined; - eventController = (0, _controllersEventController2['default'])(context).create(); + //if initializeMedia is called from a switch period, eventController could have been already created. + if (!eventController) { + eventController = (0, _controllersEventController2['default'])(context).create(); - eventController.setConfig({ - manifestModel: manifestModel, - manifestUpdater: manifestUpdater, - playbackController: playbackController - }); - events = adapter.getEventsFor(streamInfo); - eventController.addInlineEvents(events); + eventController.setConfig({ + manifestModel: manifestModel, + manifestUpdater: manifestUpdater, + playbackController: playbackController + }); + events = adapter.getEventsFor(streamInfo); + eventController.addInlineEvents(events); + } isUpdating = true; @@ -26840,6 +26947,7 @@ function Stream(config) { getEventController: getEventController, getBitrateListFor: getBitrateListFor, startEventController: startEventController, + stopEventController: stopEventController, updateData: updateData, reset: reset, getProcessors: getProcessors @@ -26853,7 +26961,7 @@ Stream.__dashjs_factory_name = 'Stream'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(Stream); module.exports = exports['default']; -},{"100":100,"106":106,"107":107,"49":49,"50":50,"51":51,"54":54,"97":97}],97:[function(_dereq_,module,exports){ +},{"100":100,"107":107,"108":108,"49":49,"50":50,"51":51,"54":54,"97":97}],97:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -26896,19 +27004,19 @@ var _constantsConstants = _dereq_(100); var _constantsConstants2 = _interopRequireDefault(_constantsConstants); -var _utilsLiveEdgeFinder = _dereq_(198); +var _utilsLiveEdgeFinder = _dereq_(200); var _utilsLiveEdgeFinder2 = _interopRequireDefault(_utilsLiveEdgeFinder); -var _controllersBufferController = _dereq_(105); +var _controllersBufferController = _dereq_(106); var _controllersBufferController2 = _interopRequireDefault(_controllersBufferController); -var _textTextBufferController = _dereq_(185); +var _textTextBufferController = _dereq_(187); var _textTextBufferController2 = _interopRequireDefault(_textTextBufferController); -var _controllersScheduleController = _dereq_(111); +var _controllersScheduleController = _dereq_(112); var _controllersScheduleController2 = _interopRequireDefault(_controllersScheduleController); @@ -26926,6 +27034,7 @@ var _dashDashHandler2 = _interopRequireDefault(_dashDashHandler); function StreamProcessor(config) { + config = config || {}; var context = this.context; var indexHandler = undefined; @@ -26959,10 +27068,12 @@ function StreamProcessor(config) { spExternalControllers = undefined; function setup() { - liveEdgeFinder = (0, _utilsLiveEdgeFinder2['default'])(context).create({ - timelineConverter: timelineConverter, - streamProcessor: instance - }); + if (playbackController && playbackController.getIsDynamic()) { + liveEdgeFinder = (0, _utilsLiveEdgeFinder2['default'])(context).create({ + timelineConverter: timelineConverter, + streamProcessor: instance + }); + } resetInitialSettings(); } @@ -27075,7 +27186,10 @@ function StreamProcessor(config) { resetInitialSettings(); type = null; stream = null; - liveEdgeFinder.reset(); + if (liveEdgeFinder) { + liveEdgeFinder.reset(); + liveEdgeFinder = null; + } } function isUpdating() { @@ -27266,7 +27380,7 @@ StreamProcessor.__dashjs_factory_name = 'StreamProcessor'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(StreamProcessor); module.exports = exports['default']; -},{"100":100,"105":105,"111":111,"185":185,"198":198,"51":51,"57":57,"62":62}],98:[function(_dereq_,module,exports){ +},{"100":100,"106":106,"112":112,"187":187,"200":200,"51":51,"57":57,"62":62}],98:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -27307,13 +27421,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'd function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -var _voMetricsHTTPRequest = _dereq_(224); +var _voMetricsHTTPRequest = _dereq_(226); var _coreFactoryMaker = _dereq_(51); var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); -var _utilsErrorHandlerJs = _dereq_(195); +var _utilsErrorHandlerJs = _dereq_(197); var _utilsErrorHandlerJs2 = _interopRequireDefault(_utilsErrorHandlerJs); @@ -27323,8 +27437,8 @@ var _utilsErrorHandlerJs2 = _interopRequireDefault(_utilsErrorHandlerJs); * @param {Object} cfg - dependancies from parent */ function XHRLoader(cfg) { - //const context = this.context; - //const log = Debug(context).getInstance().log; + + cfg = cfg || {}; var errHandler = cfg.errHandler; var metricsModel = cfg.metricsModel; var mediaPlayerModel = cfg.mediaPlayerModel; @@ -27567,7 +27681,7 @@ var factory = _coreFactoryMaker2['default'].getClassFactory(XHRLoader); exports['default'] = factory; module.exports = exports['default']; -},{"195":195,"224":224,"51":51}],99:[function(_dereq_,module,exports){ +},{"197":197,"226":226,"51":51}],99:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -27606,7 +27720,7 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _voDashJSError = _dereq_(207); +var _voDashJSError = _dereq_(209); var _voDashJSError2 = _interopRequireDefault(_voDashJSError); @@ -27614,9 +27728,9 @@ var _XHRLoader = _dereq_(98); var _XHRLoader2 = _interopRequireDefault(_XHRLoader); -var _voMetricsHTTPRequest = _dereq_(224); +var _voMetricsHTTPRequest = _dereq_(226); -var _voTextRequest = _dereq_(217); +var _voTextRequest = _dereq_(219); var _voTextRequest2 = _interopRequireDefault(_voTextRequest); @@ -27636,6 +27750,7 @@ var XLINK_LOADER_ERROR_LOADING_FAILURE = 1; function XlinkLoader(config) { + config = config || {}; var RESOLVE_TO_ZERO = 'urn:mpeg:dash:resolve-to-zero:2013'; var context = this.context; @@ -27702,7 +27817,7 @@ _coreFactoryMaker2['default'].updateClassFactory(XlinkLoader.__dashjs_factory_na exports['default'] = factory; module.exports = exports['default']; -},{"207":207,"217":217,"224":224,"50":50,"51":51,"54":54,"98":98}],100:[function(_dereq_,module,exports){ +},{"209":209,"219":219,"226":226,"50":50,"51":51,"54":54,"98":98}],100:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -27908,6 +28023,76 @@ module.exports = exports['default']; * POSSIBILITY OF SUCH DAMAGE. */ +/** + * Protection Constants declaration + * @class + * @ignore + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +var ProtectionConstants = (function () { + _createClass(ProtectionConstants, [{ + key: 'init', + value: function init() { + this.CLEARKEY_KEYSTEM_STRING = 'org.w3.clearkey'; + this.WIDEVINE_KEYSTEM_STRING = 'com.widevine.alpha'; + this.PLAYREADY_KEYSTEM_STRING = 'com.microsoft.playready'; + } + }]); + + function ProtectionConstants() { + _classCallCheck(this, ProtectionConstants); + + this.init(); + } + + return ProtectionConstants; +})(); + +var constants = new ProtectionConstants(); +exports['default'] = constants; +module.exports = exports['default']; + +},{}],103:[function(_dereq_,module,exports){ +/** + * The copyright in this software is being made available under the BSD License, + * included below. This software may be subject to other third party and contributor + * rights, including patent rights, and no such rights are granted under this license. + * + * Copyright (c) 2013, Dash Industry Forum. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * * Neither the name of Dash Industry Forum nor the names of its + * contributors may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + 'use strict'; Object.defineProperty(exports, '__esModule', { @@ -27916,7 +28101,7 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _rulesAbrABRRulesCollection = _dereq_(174); +var _rulesAbrABRRulesCollection = _dereq_(176); var _rulesAbrABRRulesCollection2 = _interopRequireDefault(_rulesAbrABRRulesCollection); @@ -27928,11 +28113,11 @@ var _constantsMetricsConstants = _dereq_(101); var _constantsMetricsConstants2 = _interopRequireDefault(_constantsMetricsConstants); -var _voBitrateInfo = _dereq_(206); +var _voBitrateInfo = _dereq_(208); var _voBitrateInfo2 = _interopRequireDefault(_voBitrateInfo); -var _modelsFragmentModel = _dereq_(140); +var _modelsFragmentModel = _dereq_(141); var _modelsFragmentModel2 = _interopRequireDefault(_modelsFragmentModel); @@ -27948,27 +28133,27 @@ var _coreFactoryMaker = _dereq_(51); var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); -var _rulesRulesContextJs = _dereq_(170); +var _rulesRulesContextJs = _dereq_(172); var _rulesRulesContextJs2 = _interopRequireDefault(_rulesRulesContextJs); -var _rulesSwitchRequestJs = _dereq_(171); +var _rulesSwitchRequestJs = _dereq_(173); var _rulesSwitchRequestJs2 = _interopRequireDefault(_rulesSwitchRequestJs); -var _rulesSwitchRequestHistoryJs = _dereq_(172); +var _rulesSwitchRequestHistoryJs = _dereq_(174); var _rulesSwitchRequestHistoryJs2 = _interopRequireDefault(_rulesSwitchRequestHistoryJs); -var _rulesDroppedFramesHistoryJs = _dereq_(169); +var _rulesDroppedFramesHistoryJs = _dereq_(171); var _rulesDroppedFramesHistoryJs2 = _interopRequireDefault(_rulesDroppedFramesHistoryJs); -var _rulesThroughputHistoryJs = _dereq_(173); +var _rulesThroughputHistoryJs = _dereq_(175); var _rulesThroughputHistoryJs2 = _interopRequireDefault(_rulesThroughputHistoryJs); -var _voMetricsHTTPRequest = _dereq_(224); +var _voMetricsHTTPRequest = _dereq_(226); var _coreDebug = _dereq_(49); @@ -28678,7 +28863,7 @@ _coreFactoryMaker2['default'].updateSingletonFactory(AbrController.__dashjs_fact exports['default'] = factory; module.exports = exports['default']; -},{"100":100,"101":101,"140":140,"169":169,"170":170,"171":171,"172":172,"173":173,"174":174,"206":206,"224":224,"49":49,"50":50,"51":51,"54":54}],103:[function(_dereq_,module,exports){ +},{"100":100,"101":101,"141":141,"171":171,"172":172,"173":173,"174":174,"175":175,"176":176,"208":208,"226":226,"49":49,"50":50,"51":51,"54":54}],104:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -28718,15 +28903,15 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _modelsBaseURLTreeModel = _dereq_(139); +var _modelsBaseURLTreeModel = _dereq_(140); var _modelsBaseURLTreeModel2 = _interopRequireDefault(_modelsBaseURLTreeModel); -var _utilsBaseURLSelector = _dereq_(189); +var _utilsBaseURLSelector = _dereq_(191); var _utilsBaseURLSelector2 = _interopRequireDefault(_utilsBaseURLSelector); -var _utilsURLUtils = _dereq_(202); +var _utilsURLUtils = _dereq_(204); var _utilsURLUtils2 = _interopRequireDefault(_utilsURLUtils); @@ -28847,7 +29032,7 @@ BaseURLController.__dashjs_factory_name = 'BaseURLController'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(BaseURLController); module.exports = exports['default']; -},{"139":139,"189":189,"202":202,"50":50,"51":51,"54":54,"82":82}],104:[function(_dereq_,module,exports){ +},{"140":140,"191":191,"204":204,"50":50,"51":51,"54":54,"82":82}],105:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -28897,6 +29082,7 @@ var _coreEventBus2 = _interopRequireDefault(_coreEventBus); function BlackListController(config) { + config = config || {}; var blacklist = []; var eventBus = (0, _coreEventBus2['default'])(this.context).getInstance(); @@ -28950,7 +29136,7 @@ BlackListController.__dashjs_factory_name = 'BlackListController'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(BlackListController); module.exports = exports['default']; -},{"50":50,"51":51}],105:[function(_dereq_,module,exports){ +},{"50":50,"51":51}],106:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -28993,19 +29179,19 @@ var _constantsConstants = _dereq_(100); var _constantsConstants2 = _interopRequireDefault(_constantsConstants); -var _modelsFragmentModel = _dereq_(140); +var _modelsFragmentModel = _dereq_(141); var _modelsFragmentModel2 = _interopRequireDefault(_modelsFragmentModel); -var _SourceBufferController = _dereq_(112); +var _SourceBufferController = _dereq_(113); var _SourceBufferController2 = _interopRequireDefault(_SourceBufferController); -var _AbrController = _dereq_(102); +var _AbrController = _dereq_(103); var _AbrController2 = _interopRequireDefault(_AbrController); -var _MediaController = _dereq_(108); +var _MediaController = _dereq_(109); var _MediaController2 = _interopRequireDefault(_MediaController); @@ -29017,7 +29203,7 @@ var _coreEventsEvents = _dereq_(54); var _coreEventsEvents2 = _interopRequireDefault(_coreEventsEvents); -var _utilsBoxParser = _dereq_(190); +var _utilsBoxParser = _dereq_(192); var _utilsBoxParser2 = _interopRequireDefault(_utilsBoxParser); @@ -29029,7 +29215,7 @@ var _coreDebug = _dereq_(49); var _coreDebug2 = _interopRequireDefault(_coreDebug); -var _utilsInitCache = _dereq_(196); +var _utilsInitCache = _dereq_(198); var _utilsInitCache2 = _interopRequireDefault(_utilsInitCache); @@ -29041,6 +29227,7 @@ var BUFFER_CONTROLLER_TYPE = 'BufferController'; function BufferController(config) { + config = config || {}; var context = this.context; var eventBus = (0, _coreEventBus2['default'])(context).getInstance(); var metricsModel = config.metricsModel; @@ -29563,7 +29750,7 @@ _coreFactoryMaker2['default'].updateClassFactory(BufferController.__dashjs_facto exports['default'] = factory; module.exports = exports['default']; -},{"100":100,"102":102,"108":108,"112":112,"140":140,"190":190,"196":196,"49":49,"50":50,"51":51,"54":54}],106:[function(_dereq_,module,exports){ +},{"100":100,"103":103,"109":109,"113":113,"141":141,"192":192,"198":198,"49":49,"50":50,"51":51,"54":54}],107:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -29661,7 +29848,7 @@ function EventController() { } } - function clear() { + function stop() { if (eventInterval !== null && isStarted) { clearInterval(eventInterval); eventInterval = null; @@ -29796,14 +29983,14 @@ function EventController() { } function reset() { - clear(); + stop(); resetInitialSettings(); } instance = { addInlineEvents: addInlineEvents, addInbandEvents: addInbandEvents, - clear: clear, + stop: stop, start: start, setConfig: setConfig, reset: reset @@ -29818,7 +30005,7 @@ EventController.__dashjs_factory_name = 'EventController'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(EventController); module.exports = exports['default']; -},{"49":49,"50":50,"51":51}],107:[function(_dereq_,module,exports){ +},{"49":49,"50":50,"51":51}],108:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -29861,13 +30048,13 @@ var _constantsConstants = _dereq_(100); var _constantsConstants2 = _interopRequireDefault(_constantsConstants); -var _voMetricsHTTPRequest = _dereq_(224); +var _voMetricsHTTPRequest = _dereq_(226); -var _voDataChunk = _dereq_(208); +var _voDataChunk = _dereq_(210); var _voDataChunk2 = _interopRequireDefault(_voDataChunk); -var _modelsFragmentModel = _dereq_(140); +var _modelsFragmentModel = _dereq_(141); var _modelsFragmentModel2 = _interopRequireDefault(_modelsFragmentModel); @@ -29875,7 +30062,7 @@ var _FragmentLoader = _dereq_(90); var _FragmentLoader2 = _interopRequireDefault(_FragmentLoader); -var _utilsRequestModifier = _dereq_(200); +var _utilsRequestModifier = _dereq_(202); var _utilsRequestModifier2 = _interopRequireDefault(_utilsRequestModifier); @@ -29897,6 +30084,7 @@ var _coreDebug2 = _interopRequireDefault(_coreDebug); function FragmentController(config) { + config = config || {}; var context = this.context; var log = (0, _coreDebug2['default'])(context).getInstance().log; var eventBus = (0, _coreEventBus2['default'])(context).getInstance(); @@ -30009,7 +30197,7 @@ FragmentController.__dashjs_factory_name = 'FragmentController'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(FragmentController); module.exports = exports['default']; -},{"100":100,"140":140,"200":200,"208":208,"224":224,"49":49,"50":50,"51":51,"54":54,"90":90}],108:[function(_dereq_,module,exports){ +},{"100":100,"141":141,"202":202,"210":210,"226":226,"49":49,"50":50,"51":51,"54":54,"90":90}],109:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -30151,7 +30339,14 @@ function MediaController() { tracks[streamId] = tracks[streamId] || createTrackInfo(); - if (tracks[streamId][mediaType].list.indexOf(track) >= 0) return; + var len = tracks[streamId][mediaType].list.length; + + for (var i = 0; i < len; i++) { + //track is already set. + if (isTracksEqual(tracks[streamId][mediaType].list[i], track)) { + return; + } + } tracks[streamId][mediaType].list.push(track); @@ -30523,7 +30718,7 @@ _coreFactoryMaker2['default'].updateSingletonFactory(MediaController.__dashjs_fa exports['default'] = factory; module.exports = exports['default']; -},{"100":100,"49":49,"50":50,"51":51,"54":54}],109:[function(_dereq_,module,exports){ +},{"100":100,"49":49,"50":50,"51":51,"54":54}],110:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -30642,7 +30837,7 @@ MediaSourceController.__dashjs_factory_name = 'MediaSourceController'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(MediaSourceController); module.exports = exports['default']; -},{"51":51}],110:[function(_dereq_,module,exports){ +},{"51":51}],111:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -30685,11 +30880,11 @@ var _constantsConstants = _dereq_(100); var _constantsConstants2 = _interopRequireDefault(_constantsConstants); -var _BufferController = _dereq_(105); +var _BufferController = _dereq_(106); var _BufferController2 = _interopRequireDefault(_BufferController); -var _modelsURIQueryAndFragmentModel = _dereq_(144); +var _modelsURIQueryAndFragmentModel = _dereq_(145); var _modelsURIQueryAndFragmentModel2 = _interopRequireDefault(_modelsURIQueryAndFragmentModel); @@ -30709,6 +30904,8 @@ var _coreDebug = _dereq_(49); var _coreDebug2 = _interopRequireDefault(_coreDebug); +var LIVE_UPDATE_PLAYBACK_TIME_INTERVAL_MS = 500; + function PlaybackController() { var context = this.context; @@ -30727,11 +30924,13 @@ function PlaybackController() { liveStartTime = undefined, wallclockTimeIntervalId = undefined, commonEarliestTime = undefined, + liveDelay = undefined, bufferedRange = undefined, streamInfo = undefined, isDynamic = undefined, mediaPlayerModel = undefined, - playOnceInitialized = undefined; + playOnceInitialized = undefined, + lastLivePlaybackTime = undefined; function setup() { reset(); @@ -30839,6 +31038,7 @@ function PlaybackController() { var mpd = dashManifestModel.getMpd(manifestModel.getValue()); var delay = undefined; + var ret = undefined; var END_OF_PLAYLIST_PADDING = 10; if (mediaPlayerModel.getUseSuggestedPresentationDelay() && mpd.hasOwnProperty(_constantsConstants2['default'].SUGGESTED_PRESENTATION_DELAY)) { @@ -30856,10 +31056,16 @@ function PlaybackController() { // - dvrWindowSize / 2 for short playlists // - dvrWindowSize - END_OF_PLAYLIST_PADDING for longer playlists var targetDelayCapping = Math.max(dvrWindowSize - END_OF_PLAYLIST_PADDING, dvrWindowSize / 2); - return Math.min(delay, targetDelayCapping); + ret = Math.min(delay, targetDelayCapping); } else { - return delay; + ret = delay; } + liveDelay = ret; + return ret; + } + + function getLiveDelay() { + return liveDelay; } function reset() { @@ -30868,6 +31074,7 @@ function PlaybackController() { wallclockTimeIntervalId = null; playOnceInitialized = false; commonEarliestTime = {}; + liveDelay = 0; bufferedRange = {}; if (videoModel) { eventBus.off(_coreEventsEvents2['default'].DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this); @@ -31054,7 +31261,6 @@ function PlaybackController() { function onPlaybackTimeUpdated() { var time = getTime(); - if (time === currentTime) return; currentTime = time; eventBus.trigger(_coreEventsEvents2['default'].PLAYBACK_TIME_UPDATED, { timeToEnd: getTimeToStreamEnd(), @@ -31062,6 +31268,14 @@ function PlaybackController() { }); } + function updateLivePlaybackTime() { + var now = Date.now(); + if (!lastLivePlaybackTime || now > lastLivePlaybackTime + LIVE_UPDATE_PLAYBACK_TIME_INTERVAL_MS) { + lastLivePlaybackTime = now; + onPlaybackTimeUpdated(); + } + } + function onPlaybackProgress() { eventBus.trigger(_coreEventsEvents2['default'].PLAYBACK_PROGRESS); } @@ -31099,6 +31313,12 @@ function PlaybackController() { isDynamic: isDynamic, time: new Date() }); + + // Updates playback time for paused dynamic streams + // (video element doesn't call timeupdate when the playback is paused) + if (getIsDynamic() && isPaused()) { + updateLivePlaybackTime(); + } } function checkTimeInRanges(time, ranges) { @@ -31223,6 +31443,7 @@ function PlaybackController() { setLiveStartTime: setLiveStartTime, getLiveStartTime: getLiveStartTime, computeLiveDelay: computeLiveDelay, + getLiveDelay: getLiveDelay, play: play, isPaused: isPaused, pause: pause, @@ -31240,7 +31461,7 @@ PlaybackController.__dashjs_factory_name = 'PlaybackController'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(PlaybackController); module.exports = exports['default']; -},{"100":100,"105":105,"144":144,"49":49,"50":50,"51":51,"54":54}],111:[function(_dereq_,module,exports){ +},{"100":100,"106":106,"145":145,"49":49,"50":50,"51":51,"54":54}],112:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -31283,25 +31504,25 @@ var _constantsConstants = _dereq_(100); var _constantsConstants2 = _interopRequireDefault(_constantsConstants); -var _voMetricsPlayList = _dereq_(226); +var _voMetricsPlayList = _dereq_(228); -var _AbrController = _dereq_(102); +var _AbrController = _dereq_(103); var _AbrController2 = _interopRequireDefault(_AbrController); -var _BufferController = _dereq_(105); +var _BufferController = _dereq_(106); var _BufferController2 = _interopRequireDefault(_BufferController); -var _rulesSchedulingBufferLevelRule = _dereq_(181); +var _rulesSchedulingBufferLevelRule = _dereq_(183); var _rulesSchedulingBufferLevelRule2 = _interopRequireDefault(_rulesSchedulingBufferLevelRule); -var _rulesSchedulingNextFragmentRequestRule = _dereq_(182); +var _rulesSchedulingNextFragmentRequestRule = _dereq_(184); var _rulesSchedulingNextFragmentRequestRule2 = _interopRequireDefault(_rulesSchedulingNextFragmentRequestRule); -var _modelsFragmentModel = _dereq_(140); +var _modelsFragmentModel = _dereq_(141); var _modelsFragmentModel2 = _interopRequireDefault(_modelsFragmentModel); @@ -31323,6 +31544,7 @@ var _coreDebug2 = _interopRequireDefault(_coreDebug); function ScheduleController(config) { + config = config || {}; var context = this.context; var eventBus = (0, _coreEventBus2['default'])(context).getInstance(); var metricsModel = config.metricsModel; @@ -31454,6 +31676,7 @@ function ScheduleController(config) { function schedule() { if (isStopped || isFragmentProcessingInProgress || !streamProcessor.getBufferController() || playbackController.isPaused() && !scheduleWhilePaused) { + log('ScheduleController ' + type + '- schedule stop!'); return; } @@ -31920,7 +32143,7 @@ ScheduleController.__dashjs_factory_name = 'ScheduleController'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(ScheduleController); module.exports = exports['default']; -},{"100":100,"102":102,"105":105,"140":140,"181":181,"182":182,"226":226,"49":49,"50":50,"51":51,"54":54}],112:[function(_dereq_,module,exports){ +},{"100":100,"103":103,"106":106,"141":141,"183":183,"184":184,"228":228,"49":49,"50":50,"51":51,"54":54}],113:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -31959,7 +32182,7 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _voDashJSError = _dereq_(207); +var _voDashJSError = _dereq_(209); var _voDashJSError2 = _interopRequireDefault(_voDashJSError); @@ -32366,7 +32589,7 @@ _coreFactoryMaker2['default'].updateSingletonFactory(SourceBufferController.__da exports['default'] = factory; module.exports = exports['default']; -},{"207":207,"50":50,"51":51,"54":54}],113:[function(_dereq_,module,exports){ +},{"209":209,"50":50,"51":51,"54":54}],114:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -32429,7 +32652,7 @@ var _coreEventsEvents = _dereq_(54); var _coreEventsEvents2 = _interopRequireDefault(_coreEventsEvents); -var _modelsMediaPlayerModel = _dereq_(142); +var _modelsMediaPlayerModel = _dereq_(143); var _modelsMediaPlayerModel2 = _interopRequireDefault(_modelsMediaPlayerModel); @@ -32437,17 +32660,17 @@ var _coreFactoryMaker = _dereq_(51); var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); -var _voMetricsPlayList = _dereq_(226); +var _voMetricsPlayList = _dereq_(228); var _coreDebug = _dereq_(49); var _coreDebug2 = _interopRequireDefault(_coreDebug); -var _utilsInitCache = _dereq_(196); +var _utilsInitCache = _dereq_(198); var _utilsInitCache2 = _interopRequireDefault(_utilsInitCache); -var _utilsURLUtils = _dereq_(202); +var _utilsURLUtils = _dereq_(204); var _utilsURLUtils2 = _interopRequireDefault(_utilsURLUtils); @@ -32455,15 +32678,15 @@ var _MediaPlayerEvents = _dereq_(94); var _MediaPlayerEvents2 = _interopRequireDefault(_MediaPlayerEvents); -var _TimeSyncController = _dereq_(114); +var _TimeSyncController = _dereq_(115); var _TimeSyncController2 = _interopRequireDefault(_TimeSyncController); -var _BaseURLController = _dereq_(103); +var _BaseURLController = _dereq_(104); var _BaseURLController2 = _interopRequireDefault(_BaseURLController); -var _MediaSourceController = _dereq_(109); +var _MediaSourceController = _dereq_(110); var _MediaSourceController2 = _interopRequireDefault(_MediaSourceController); @@ -32578,7 +32801,7 @@ function StreamController() { if (e.timeToEnd <= STREAM_END_THRESHOLD) { // In some cases the ended event is not triggered at the end of the stream, do it artificially here. // This should only be a fallback, put an extra STREAM_END_TIMEOUT_DELAY to give the real ended event time to trigger. - + log('[StreamController][onPlaybackTimeUpdated] timeToEnd = ' + e.timeToEnd + ' PLAYBACK_ENDED need to be triggered'); if (endedTimeout) { clearTimeout(endedTimeout); endedTimeout = undefined; @@ -32641,7 +32864,7 @@ function StreamController() { for (var i = 0; i < ln; i++) { stream = streams[i]; - duration += stream.getDuration(); + duration = parseFloat((duration + stream.getDuration()).toFixed(5)); if (time < duration) { return stream; @@ -32724,7 +32947,7 @@ function StreamController() { return { v: streams.filter(function (stream) { - return stream.getStreamInfo().start === start + duration; + return stream.getStreamInfo().start === parseFloat((start + duration).toFixed(5)); })[0] }; })(); @@ -32743,15 +32966,18 @@ function StreamController() { toStreamInfo: newStream.getStreamInfo() }); - if (oldStream) oldStream.deactivate(); + if (oldStream) { + oldStream.stopEventController(); + oldStream.deactivate(); + } activeStream = newStream; playbackController.initialize(activeStream.getStreamInfo()); //TODO detect if we should close and repose or jump to activateStream. - openMediaSource(seekTime); + openMediaSource(seekTime, oldStream); } - function openMediaSource(seekTime) { + function openMediaSource(seekTime, oldStream) { var sourceUrl = undefined; @@ -32762,6 +32988,10 @@ function StreamController() { mediaSource.removeEventListener('webkitsourceopen', onMediaSourceOpen); setMediaDuration(); activateStream(seekTime); + + if (!oldStream) { + eventBus.trigger(_coreEventsEvents2['default'].SOURCE_INITIALIZED); + } } if (!mediaSource) { @@ -33256,7 +33486,7 @@ StreamController.__dashjs_factory_name = 'StreamController'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(StreamController); module.exports = exports['default']; -},{"100":100,"101":101,"103":103,"109":109,"114":114,"142":142,"196":196,"202":202,"226":226,"49":49,"50":50,"51":51,"54":54,"92":92,"94":94,"96":96}],114:[function(_dereq_,module,exports){ +},{"100":100,"101":101,"104":104,"110":110,"115":115,"143":143,"198":198,"204":204,"228":228,"49":49,"50":50,"51":51,"54":54,"92":92,"94":94,"96":96}],115:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -33299,11 +33529,11 @@ var _constantsConstants = _dereq_(100); var _constantsConstants2 = _interopRequireDefault(_constantsConstants); -var _voDashJSError = _dereq_(207); +var _voDashJSError = _dereq_(209); var _voDashJSError2 = _interopRequireDefault(_voDashJSError); -var _voMetricsHTTPRequest = _dereq_(224); +var _voMetricsHTTPRequest = _dereq_(226); var _coreEventBus = _dereq_(50); @@ -33636,7 +33866,7 @@ _coreFactoryMaker2['default'].updateSingletonFactory(TimeSyncController.__dashjs exports['default'] = factory; module.exports = exports['default']; -},{"100":100,"207":207,"224":224,"49":49,"50":50,"51":51,"54":54}],115:[function(_dereq_,module,exports){ +},{"100":100,"209":209,"226":226,"49":49,"50":50,"51":51,"54":54}],116:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -33695,7 +33925,7 @@ var _externalsXml2json = _dereq_(4); var _externalsXml2json2 = _interopRequireDefault(_externalsXml2json); -var _utilsURLUtils = _dereq_(202); +var _utilsURLUtils = _dereq_(204); var _utilsURLUtils2 = _interopRequireDefault(_utilsURLUtils); @@ -33708,6 +33938,7 @@ var RESOLVE_TO_ZERO = 'urn:mpeg:dash:resolve-to-zero:2013'; function XlinkController(config) { + config = config || {}; var context = this.context; var eventBus = (0, _coreEventBus2['default'])(context).getInstance(); var urlUtils = (0, _utilsURLUtils2['default'])(context).getInstance(); @@ -33964,7 +34195,7 @@ XlinkController.__dashjs_factory_name = 'XlinkController'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(XlinkController); module.exports = exports['default']; -},{"202":202,"4":4,"50":50,"51":51,"54":54,"99":99}],116:[function(_dereq_,module,exports){ +},{"204":204,"4":4,"50":50,"51":51,"54":54,"99":99}],117:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -34004,23 +34235,23 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _utilsDVBErrorsTranslator = _dereq_(130); +var _utilsDVBErrorsTranslator = _dereq_(131); var _utilsDVBErrorsTranslator2 = _interopRequireDefault(_utilsDVBErrorsTranslator); -var _MetricsReportingEvents = _dereq_(117); +var _MetricsReportingEvents = _dereq_(118); var _MetricsReportingEvents2 = _interopRequireDefault(_MetricsReportingEvents); -var _controllersMetricsCollectionController = _dereq_(118); +var _controllersMetricsCollectionController = _dereq_(119); var _controllersMetricsCollectionController2 = _interopRequireDefault(_controllersMetricsCollectionController); -var _metricsMetricsHandlerFactory = _dereq_(123); +var _metricsMetricsHandlerFactory = _dereq_(124); var _metricsMetricsHandlerFactory2 = _interopRequireDefault(_metricsMetricsHandlerFactory); -var _reportingReportingFactory = _dereq_(128); +var _reportingReportingFactory = _dereq_(129); var _reportingReportingFactory2 = _interopRequireDefault(_reportingReportingFactory); @@ -34079,7 +34310,7 @@ dashjs.FactoryMaker.updateClassFactory(MetricsReporting.__dashjs_factory_name, f exports['default'] = factory; module.exports = exports['default']; -},{"117":117,"118":118,"123":123,"128":128,"130":130}],117:[function(_dereq_,module,exports){ +},{"118":118,"119":119,"124":124,"129":129,"131":131}],118:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -34147,7 +34378,7 @@ var metricsReportingEvents = new MetricsReportingEvents(); exports['default'] = metricsReportingEvents; module.exports = exports['default']; -},{"55":55}],118:[function(_dereq_,module,exports){ +},{"55":55}],119:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -34187,20 +34418,21 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _MetricsController = _dereq_(119); +var _MetricsController = _dereq_(120); var _MetricsController2 = _interopRequireDefault(_MetricsController); -var _utilsManifestParsing = _dereq_(132); +var _utilsManifestParsing = _dereq_(133); var _utilsManifestParsing2 = _interopRequireDefault(_utilsManifestParsing); -var _MetricsReportingEvents = _dereq_(117); +var _MetricsReportingEvents = _dereq_(118); var _MetricsReportingEvents2 = _interopRequireDefault(_MetricsReportingEvents); function MetricsCollectionController(config) { + config = config || {}; var metricsControllers = {}; var context = this.context; @@ -34276,7 +34508,7 @@ exports['default'] = dashjs.FactoryMaker.getClassFactory(MetricsCollectionContro /* jshint ignore:line */ module.exports = exports['default']; -},{"117":117,"119":119,"132":132}],119:[function(_dereq_,module,exports){ +},{"118":118,"120":120,"133":133}],120:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -34316,20 +34548,21 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _RangeController = _dereq_(121); +var _RangeController = _dereq_(122); var _RangeController2 = _interopRequireDefault(_RangeController); -var _ReportingController = _dereq_(122); +var _ReportingController = _dereq_(123); var _ReportingController2 = _interopRequireDefault(_ReportingController); -var _MetricsHandlersController = _dereq_(120); +var _MetricsHandlersController = _dereq_(121); var _MetricsHandlersController2 = _interopRequireDefault(_MetricsHandlersController); function MetricsController(config) { + config = config || {}; var metricsHandlersController = undefined, reportingController = undefined, rangeController = undefined, @@ -34393,7 +34626,7 @@ exports['default'] = dashjs.FactoryMaker.getClassFactory(MetricsController); /* jshint ignore:line */ module.exports = exports['default']; -},{"120":120,"121":121,"122":122}],120:[function(_dereq_,module,exports){ +},{"121":121,"122":122,"123":123}],121:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -34433,11 +34666,13 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _metricsMetricsHandlerFactory = _dereq_(123); +var _metricsMetricsHandlerFactory = _dereq_(124); var _metricsMetricsHandlerFactory2 = _interopRequireDefault(_metricsMetricsHandlerFactory); function MetricsHandlersController(config) { + + config = config || {}; var handlers = []; var instance = undefined; @@ -34512,7 +34747,7 @@ exports['default'] = dashjs.FactoryMaker.getClassFactory(MetricsHandlersControll /* jshint ignore:line */ module.exports = exports['default']; -},{"123":123}],121:[function(_dereq_,module,exports){ +},{"124":124}],122:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -34552,12 +34787,13 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _utilsCustomTimeRanges = _dereq_(192); +var _utilsCustomTimeRanges = _dereq_(194); var _utilsCustomTimeRanges2 = _interopRequireDefault(_utilsCustomTimeRanges); function RangeController(config) { + config = config || {}; var useWallClockTime = false; var context = this.context; var instance = undefined, @@ -34626,7 +34862,7 @@ exports['default'] = dashjs.FactoryMaker.getClassFactory(RangeController); /* jshint ignore:line */ module.exports = exports['default']; -},{"192":192}],122:[function(_dereq_,module,exports){ +},{"194":194}],123:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -34666,7 +34902,7 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _reportingReportingFactory = _dereq_(128); +var _reportingReportingFactory = _dereq_(129); var _reportingReportingFactory2 = _interopRequireDefault(_reportingReportingFactory); @@ -34719,7 +34955,7 @@ exports['default'] = dashjs.FactoryMaker.getClassFactory(ReportingController); /* jshint ignore:line */ module.exports = exports['default']; -},{"128":128}],123:[function(_dereq_,module,exports){ +},{"129":129}],124:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -34759,24 +34995,25 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _handlersBufferLevelHandler = _dereq_(124); +var _handlersBufferLevelHandler = _dereq_(125); var _handlersBufferLevelHandler2 = _interopRequireDefault(_handlersBufferLevelHandler); -var _handlersDVBErrorsHandler = _dereq_(125); +var _handlersDVBErrorsHandler = _dereq_(126); var _handlersDVBErrorsHandler2 = _interopRequireDefault(_handlersDVBErrorsHandler); -var _handlersHttpListHandler = _dereq_(127); +var _handlersHttpListHandler = _dereq_(128); var _handlersHttpListHandler2 = _interopRequireDefault(_handlersHttpListHandler); -var _handlersGenericMetricHandler = _dereq_(126); +var _handlersGenericMetricHandler = _dereq_(127); var _handlersGenericMetricHandler2 = _interopRequireDefault(_handlersGenericMetricHandler); function MetricsHandlerFactory(config) { + config = config || {}; var instance = undefined; var log = config.log; @@ -34839,7 +35076,7 @@ exports['default'] = dashjs.FactoryMaker.getSingletonFactory(MetricsHandlerFacto /* jshint ignore:line */ module.exports = exports['default']; -},{"124":124,"125":125,"126":126,"127":127}],124:[function(_dereq_,module,exports){ +},{"125":125,"126":126,"127":127,"128":128}],125:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -34879,12 +35116,13 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _utilsHandlerHelpers = _dereq_(131); +var _utilsHandlerHelpers = _dereq_(132); var _utilsHandlerHelpers2 = _interopRequireDefault(_utilsHandlerHelpers); function BufferLevelHandler(config) { + config = config || {}; var instance = undefined, reportingController = undefined, n = undefined, @@ -34961,7 +35199,7 @@ exports['default'] = dashjs.FactoryMaker.getClassFactory(BufferLevelHandler); /* jshint ignore:line */ module.exports = exports['default']; -},{"131":131}],125:[function(_dereq_,module,exports){ +},{"132":132}],126:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -35001,12 +35239,13 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _MetricsReportingEvents = _dereq_(117); +var _MetricsReportingEvents = _dereq_(118); var _MetricsReportingEvents2 = _interopRequireDefault(_MetricsReportingEvents); function DVBErrorsHandler(config) { + config = config || {}; var instance = undefined, reportingController = undefined; @@ -35056,7 +35295,7 @@ exports['default'] = dashjs.FactoryMaker.getClassFactory(DVBErrorsHandler); /* jshint ignore:line */ module.exports = exports['default']; -},{"117":117}],126:[function(_dereq_,module,exports){ +},{"118":118}],127:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -35132,7 +35371,7 @@ exports['default'] = dashjs.FactoryMaker.getClassFactory(GenericMetricHandler); /* jshint ignore:line */ module.exports = exports['default']; -},{}],127:[function(_dereq_,module,exports){ +},{}],128:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -35172,12 +35411,13 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _utilsHandlerHelpers = _dereq_(131); +var _utilsHandlerHelpers = _dereq_(132); var _utilsHandlerHelpers2 = _interopRequireDefault(_utilsHandlerHelpers); function HttpListHandler(config) { + config = config || {}; var instance = undefined, reportingController = undefined, n = undefined, @@ -35253,7 +35493,7 @@ exports['default'] = dashjs.FactoryMaker.getClassFactory(HttpListHandler); /* jshint ignore:line */ module.exports = exports['default']; -},{"131":131}],128:[function(_dereq_,module,exports){ +},{"132":132}],129:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -35293,11 +35533,12 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _reportersDVBReporting = _dereq_(129); +var _reportersDVBReporting = _dereq_(130); var _reportersDVBReporting2 = _interopRequireDefault(_reportersDVBReporting); function ReportingFactory(config) { + config = config || {}; var knownReportingSchemeIdUris = { 'urn:dvb:dash:reporting:2014': _reportersDVBReporting2['default'] @@ -35349,7 +35590,7 @@ exports['default'] = dashjs.FactoryMaker.getSingletonFactory(ReportingFactory); /* jshint ignore:line */ module.exports = exports['default']; -},{"129":129}],129:[function(_dereq_,module,exports){ +},{"130":130}],130:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -35389,15 +35630,16 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _utilsMetricSerialiser = _dereq_(133); +var _utilsMetricSerialiser = _dereq_(134); var _utilsMetricSerialiser2 = _interopRequireDefault(_utilsMetricSerialiser); -var _utilsRNG = _dereq_(134); +var _utilsRNG = _dereq_(135); var _utilsRNG2 = _interopRequireDefault(_utilsRNG); function DVBReporting(config) { + config = config || {}; var instance = undefined; var context = this.context; @@ -35549,7 +35791,7 @@ exports['default'] = dashjs.FactoryMaker.getClassFactory(DVBReporting); /* jshint ignore:line */ module.exports = exports['default']; -},{"133":133,"134":134}],130:[function(_dereq_,module,exports){ +},{"134":134,"135":135}],131:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -35589,16 +35831,17 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _voDVBErrors = _dereq_(135); +var _voDVBErrors = _dereq_(136); var _voDVBErrors2 = _interopRequireDefault(_voDVBErrors); -var _MetricsReportingEvents = _dereq_(117); +var _MetricsReportingEvents = _dereq_(118); var _MetricsReportingEvents2 = _interopRequireDefault(_MetricsReportingEvents); function DVBErrorsTranslator(config) { + config = config || {}; var instance = undefined; var eventBus = config.eventBus; var metricModel = config.metricsModel; @@ -35731,7 +35974,7 @@ exports['default'] = dashjs.FactoryMaker.getSingletonFactory(DVBErrorsTranslator /* jshint ignore:line */ module.exports = exports['default']; -},{"117":117,"135":135}],131:[function(_dereq_,module,exports){ +},{"118":118,"136":136}],132:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -35811,7 +36054,7 @@ exports['default'] = dashjs.FactoryMaker.getSingletonFactory(HandlerHelpers); /* jshint ignore:line */ module.exports = exports['default']; -},{}],132:[function(_dereq_,module,exports){ +},{}],133:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { @@ -35820,19 +36063,20 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _voMetrics = _dereq_(136); +var _voMetrics = _dereq_(137); var _voMetrics2 = _interopRequireDefault(_voMetrics); -var _voRange = _dereq_(137); +var _voRange = _dereq_(138); var _voRange2 = _interopRequireDefault(_voRange); -var _voReporting = _dereq_(138); +var _voReporting = _dereq_(139); var _voReporting2 = _interopRequireDefault(_voReporting); function ManifestParsing(config) { + config = config || {}; var instance = undefined; var dashManifestModel = config.dashManifestModel; var constants = config.constants; @@ -35950,7 +36194,7 @@ exports['default'] = dashjs.FactoryMaker.getSingletonFactory(ManifestParsing); /* jshint ignore:line */ module.exports = exports['default']; -},{"136":136,"137":137,"138":138}],133:[function(_dereq_,module,exports){ +},{"137":137,"138":138,"139":139}],134:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -36056,7 +36300,7 @@ exports['default'] = dashjs.FactoryMaker.getSingletonFactory(MetricSerialiser); /* jshint ignore:line */ module.exports = exports['default']; -},{}],134:[function(_dereq_,module,exports){ +},{}],135:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -36161,7 +36405,7 @@ exports['default'] = dashjs.FactoryMaker.getSingletonFactory(RNG); /* jshint ignore:line */ module.exports = exports['default']; -},{}],135:[function(_dereq_,module,exports){ +},{}],136:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -36269,7 +36513,7 @@ DVBErrors.BECAME_REPORTER = 'S00'; exports['default'] = DVBErrors; module.exports = exports['default']; -},{}],136:[function(_dereq_,module,exports){ +},{}],137:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -36323,7 +36567,7 @@ var Metrics = function Metrics() { exports['default'] = Metrics; module.exports = exports['default']; -},{}],137:[function(_dereq_,module,exports){ +},{}],138:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -36380,7 +36624,7 @@ var Range = function Range() { exports["default"] = Range; module.exports = exports["default"]; -},{}],138:[function(_dereq_,module,exports){ +},{}],139:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -36434,7 +36678,7 @@ var Reporting = function Reporting() { exports['default'] = Reporting; module.exports = exports['default']; -},{}],139:[function(_dereq_,module,exports){ +},{}],140:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -36476,7 +36720,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'd function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _utilsObjectUtils = _dereq_(199); +var _utilsObjectUtils = _dereq_(201); var _utilsObjectUtils2 = _interopRequireDefault(_utilsObjectUtils); @@ -36619,7 +36863,7 @@ BaseURLTreeModel.__dashjs_factory_name = 'BaseURLTreeModel'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(BaseURLTreeModel); module.exports = exports['default']; -},{"199":199,"51":51}],140:[function(_dereq_,module,exports){ +},{"201":201,"51":51}],141:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -36671,7 +36915,7 @@ var _coreFactoryMaker = _dereq_(51); var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); -var _voFragmentRequest = _dereq_(209); +var _voFragmentRequest = _dereq_(211); var _voFragmentRequest2 = _interopRequireDefault(_voFragmentRequest); @@ -36686,6 +36930,7 @@ var FRAGMENT_MODEL_FAILED = 'failed'; function FragmentModel(config) { + config = config || {}; var context = this.context; var log = (0, _coreDebug2['default'])(context).getInstance().log; var eventBus = (0, _coreEventBus2['default'])(context).getInstance(); @@ -36712,6 +36957,11 @@ function FragmentModel(config) { } function isFragmentLoaded(request) { + + var isEqualUrl = function isEqualUrl(req1, req2) { + return req1.url === req2.url; + }; + var isEqualComplete = function isEqualComplete(req1, req2) { return req1.action === _voFragmentRequest2['default'].ACTION_COMPLETE && req1.action === req2.action; }; @@ -36727,7 +36977,7 @@ function FragmentModel(config) { var check = function check(requests) { var isLoaded = false; requests.some(function (req) { - if (isEqualMedia(request, req) || isEqualInit(request, req) || isEqualComplete(request, req)) { + if (isEqualUrl(request, req) && (isEqualMedia(request, req) || isEqualInit(request, req) || isEqualComplete(request, req))) { isLoaded = true; return isLoaded; } @@ -36791,7 +37041,7 @@ function FragmentModel(config) { function removeExecutedRequestsBeforeTime(time) { executedRequests = executedRequests.filter(function (req) { - return isNaN(req.startTime) || req.startTime >= time; + return isNaN(req.startTime) || time !== undefined ? req.startTime >= time : false; }); } @@ -36949,7 +37199,7 @@ _coreFactoryMaker2['default'].updateClassFactory(FragmentModel.__dashjs_factory_ exports['default'] = factory; module.exports = exports['default']; -},{"209":209,"49":49,"50":50,"51":51,"54":54}],141:[function(_dereq_,module,exports){ +},{"211":211,"49":49,"50":50,"51":51,"54":54}],142:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -37031,7 +37281,7 @@ ManifestModel.__dashjs_factory_name = 'ManifestModel'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(ManifestModel); module.exports = exports['default']; -},{"50":50,"51":51,"54":54}],142:[function(_dereq_,module,exports){ +},{"50":50,"51":51,"54":54}],143:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -37076,7 +37326,7 @@ var _coreFactoryMaker = _dereq_(51); var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); -var _voMetricsHTTPRequest = _dereq_(224); +var _voMetricsHTTPRequest = _dereq_(226); var _constantsConstants = _dereq_(100); @@ -37554,7 +37804,7 @@ _coreFactoryMaker2['default'].updateSingletonFactory(MediaPlayerModel.__dashjs_f exports['default'] = factory; module.exports = exports['default']; -},{"100":100,"224":224,"51":51}],143:[function(_dereq_,module,exports){ +},{"100":100,"226":226,"51":51}],144:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -37601,39 +37851,39 @@ var _constantsMetricsConstants = _dereq_(101); var _constantsMetricsConstants2 = _interopRequireDefault(_constantsMetricsConstants); -var _voMetricsList = _dereq_(214); +var _voMetricsList = _dereq_(216); var _voMetricsList2 = _interopRequireDefault(_voMetricsList); -var _voMetricsTCPConnection = _dereq_(230); +var _voMetricsTCPConnection = _dereq_(232); var _voMetricsTCPConnection2 = _interopRequireDefault(_voMetricsTCPConnection); -var _voMetricsHTTPRequest = _dereq_(224); +var _voMetricsHTTPRequest = _dereq_(226); -var _voMetricsRepresentationSwitch = _dereq_(227); +var _voMetricsRepresentationSwitch = _dereq_(229); var _voMetricsRepresentationSwitch2 = _interopRequireDefault(_voMetricsRepresentationSwitch); -var _voMetricsBufferLevel = _dereq_(220); +var _voMetricsBufferLevel = _dereq_(222); var _voMetricsBufferLevel2 = _interopRequireDefault(_voMetricsBufferLevel); -var _voMetricsBufferState = _dereq_(221); +var _voMetricsBufferState = _dereq_(223); var _voMetricsBufferState2 = _interopRequireDefault(_voMetricsBufferState); -var _voMetricsDVRInfo = _dereq_(222); +var _voMetricsDVRInfo = _dereq_(224); var _voMetricsDVRInfo2 = _interopRequireDefault(_voMetricsDVRInfo); -var _voMetricsDroppedFrames = _dereq_(223); +var _voMetricsDroppedFrames = _dereq_(225); var _voMetricsDroppedFrames2 = _interopRequireDefault(_voMetricsDroppedFrames); -var _voMetricsManifestUpdate = _dereq_(225); +var _voMetricsManifestUpdate = _dereq_(227); -var _voMetricsSchedulingInfo = _dereq_(229); +var _voMetricsSchedulingInfo = _dereq_(231); var _voMetricsSchedulingInfo2 = _interopRequireDefault(_voMetricsSchedulingInfo); @@ -37641,7 +37891,7 @@ var _coreEventBus = _dereq_(50); var _coreEventBus2 = _interopRequireDefault(_coreEventBus); -var _voMetricsRequestsQueue = _dereq_(228); +var _voMetricsRequestsQueue = _dereq_(230); var _voMetricsRequestsQueue2 = _interopRequireDefault(_voMetricsRequestsQueue); @@ -38039,7 +38289,7 @@ MetricsModel.__dashjs_factory_name = 'MetricsModel'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(MetricsModel); module.exports = exports['default']; -},{"100":100,"101":101,"214":214,"220":220,"221":221,"222":222,"223":223,"224":224,"225":225,"227":227,"228":228,"229":229,"230":230,"50":50,"51":51,"54":54}],144:[function(_dereq_,module,exports){ +},{"100":100,"101":101,"216":216,"222":222,"223":223,"224":224,"225":225,"226":226,"227":227,"229":229,"230":230,"231":231,"232":232,"50":50,"51":51,"54":54}],145:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -38079,7 +38329,7 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _voURIFragmentData = _dereq_(219); +var _voURIFragmentData = _dereq_(221); var _voURIFragmentData2 = _interopRequireDefault(_voURIFragmentData); @@ -38176,7 +38426,7 @@ URIQueryAndFragmentModel.__dashjs_factory_name = 'URIQueryAndFragmentModel'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(URIQueryAndFragmentModel); module.exports = exports['default']; -},{"219":219,"51":51}],145:[function(_dereq_,module,exports){ +},{"221":221,"51":51}],146:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -38247,6 +38497,11 @@ function VideoModel() { function initialize() { stalledStreams = []; + eventBus.on(_coreEventsEvents2['default'].PLAYBACK_PLAYING, onPlaying, this); + } + + function reset() { + eventBus.off(_coreEventsEvents2['default'].PLAYBACK_PLAYING, onPlaying, this); } function onPlaybackCanPlay() { @@ -38390,6 +38645,15 @@ function VideoModel() { } } + //Calling play on the element will emit playing - even if the stream is stalled. If the stream is stalled, emit a waiting event. + function onPlaying() { + if (element && isStalled() && element.playbackRate === 0) { + var _event = document.createEvent('Event'); + _event.initEvent('waiting', true, false); + element.dispatchEvent(_event); + } + } + function getPlaybackQuality() { var hasWebKit = 'webkitDroppedFrameCount' in element && 'webkitDecodedFrameCount' in element; var hasQuality = ('getVideoPlaybackQuality' in element); @@ -38490,16 +38754,24 @@ function VideoModel() { return element ? element.videoHeight : NaN; } + function getVideoRelativeOffsetTop() { + return element && element.parentNode ? element.getBoundingClientRect().top - element.parentNode.getBoundingClientRect().top : NaN; + } + + function getVideoRelativeOffsetLeft() { + return element && element.parentNode ? element.getBoundingClientRect().left - element.parentNode.getBoundingClientRect().left : NaN; + } + function getTextTracks() { return element ? element.textTracks : []; } - function getTextTrack(kind, label, lang) { + function getTextTrack(kind, label, lang, isTTML, isEmbedded) { if (element) { for (var i = 0; i < element.textTracks.length; i++) { //label parameter could be a number (due to adaptationSet), but label, the attribute of textTrack, is a string => to modify... //label could also be undefined (due to adaptationSet) - if (element.textTracks[i].kind === kind && (label ? element.textTracks[i].label == label : true) && element.textTracks[i].language === lang) { + if (element.textTracks[i].kind === kind && (label ? element.textTracks[i].label == label : true) && element.textTracks[i].language === lang && element.textTracks[i].isTTML === isTTML && element.textTracks[i].isEmbedded === isEmbedded) { return element.textTracks[i]; } } @@ -38518,6 +38790,11 @@ function VideoModel() { function appendChild(childElement) { if (element) { element.appendChild(childElement); + //in Chrome, we need to differenciate textTrack with same lang, kind and label but different format (vtt, ttml, etc...) + if (childElement.isTTML !== undefined) { + element.textTracks[element.textTracks.length - 1].isTTML = childElement.isTTML; + element.textTracks[element.textTracks.length - 1].isEmbedded = childElement.isEmbedded; + } } } @@ -38560,7 +38837,10 @@ function VideoModel() { appendChild: appendChild, removeChild: removeChild, getVideoWidth: getVideoWidth, - getVideoHeight: getVideoHeight + getVideoHeight: getVideoHeight, + getVideoRelativeOffsetTop: getVideoRelativeOffsetTop, + getVideoRelativeOffsetLeft: getVideoRelativeOffsetLeft, + reset: reset }; return instance; @@ -38570,7 +38850,7 @@ VideoModel.__dashjs_factory_name = 'VideoModel'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(VideoModel); module.exports = exports['default']; -},{"49":49,"50":50,"51":51,"54":54}],146:[function(_dereq_,module,exports){ +},{"49":49,"50":50,"51":51,"54":54}],147:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -38714,7 +38994,7 @@ var CommonEncryption = (function () { if (data === null) return []; - var dv = new DataView(data); + var dv = new DataView(data.buffer || data); // data.buffer first for Uint8Array support var done = false; var pssh = {}; @@ -38808,7 +39088,7 @@ var CommonEncryption = (function () { exports['default'] = CommonEncryption; module.exports = exports['default']; -},{}],147:[function(_dereq_,module,exports){ +},{}],148:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -38847,27 +39127,27 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _controllersProtectionController = _dereq_(149); +var _controllersProtectionController = _dereq_(150); var _controllersProtectionController2 = _interopRequireDefault(_controllersProtectionController); -var _controllersProtectionKeyController = _dereq_(150); +var _controllersProtectionKeyController = _dereq_(151); var _controllersProtectionKeyController2 = _interopRequireDefault(_controllersProtectionKeyController); -var _ProtectionEvents = _dereq_(148); +var _ProtectionEvents = _dereq_(149); var _ProtectionEvents2 = _interopRequireDefault(_ProtectionEvents); -var _modelsProtectionModel_21Jan2015 = _dereq_(155); +var _modelsProtectionModel_21Jan2015 = _dereq_(157); var _modelsProtectionModel_21Jan20152 = _interopRequireDefault(_modelsProtectionModel_21Jan2015); -var _modelsProtectionModel_3Feb2014 = _dereq_(156); +var _modelsProtectionModel_3Feb2014 = _dereq_(158); var _modelsProtectionModel_3Feb20142 = _interopRequireDefault(_modelsProtectionModel_3Feb2014); -var _modelsProtectionModel_01b = _dereq_(154); +var _modelsProtectionModel_01b = _dereq_(156); var _modelsProtectionModel_01b2 = _interopRequireDefault(_modelsProtectionModel_01b); @@ -39029,7 +39309,7 @@ dashjs.FactoryMaker.updateClassFactory(Protection.__dashjs_factory_name, factory exports['default'] = factory; module.exports = exports['default']; -},{"148":148,"149":149,"150":150,"154":154,"155":155,"156":156}],148:[function(_dereq_,module,exports){ +},{"149":149,"150":150,"151":151,"156":156,"157":157,"158":158}],149:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -39232,7 +39512,7 @@ var protectionEvents = new ProtectionEvents(); exports['default'] = protectionEvents; module.exports = exports['default']; -},{"55":55}],149:[function(_dereq_,module,exports){ +},{"55":55}],150:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -39272,15 +39552,15 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _CommonEncryption = _dereq_(146); +var _CommonEncryption = _dereq_(147); var _CommonEncryption2 = _interopRequireDefault(_CommonEncryption); -var _voMediaCapability = _dereq_(167); +var _voMediaCapability = _dereq_(169); var _voMediaCapability2 = _interopRequireDefault(_voMediaCapability); -var _voKeySystemConfiguration = _dereq_(166); +var _voKeySystemConfiguration = _dereq_(168); var _voKeySystemConfiguration2 = _interopRequireDefault(_voKeySystemConfiguration); @@ -39300,6 +39580,7 @@ var _voKeySystemConfiguration2 = _interopRequireDefault(_voKeySystemConfiguratio function ProtectionController(config) { + config = config || {}; var protectionKeyController = config.protectionKeyController; var protectionModel = config.protectionModel; var adapter = config.adapter; @@ -39404,6 +39685,7 @@ function ProtectionController(config) { */ function createKeySession(initData, cdmData) { var initDataForKS = _CommonEncryption2['default'].getPSSHForKeySystem(keySystem, initData); + var protData = getProtData(keySystem); if (initDataForKS) { // Check for duplicate initData @@ -39415,10 +39697,12 @@ function ProtectionController(config) { } } try { - protectionModel.createKeySession(initDataForKS, sessionType, cdmData); + protectionModel.createKeySession(initDataForKS, protData, sessionType, cdmData); } catch (error) { eventBus.trigger(events.KEY_SESSION_CREATED, { data: null, error: 'Error creating key session! ' + error.message }); } + } else if (initData) { + protectionModel.createKeySession(initData, protData, sessionType, cdmData); } else { eventBus.trigger(events.KEY_SESSION_CREATED, { data: null, error: 'Selected key system is ' + keySystem.systemString + '. needkey/encrypted event contains no initData corresponding to that key system!' }); } @@ -39672,6 +39956,10 @@ function ProtectionController(config) { for (var i = 0; i < pendingNeedKeyData.length; i++) { for (ksIdx = 0; ksIdx < pendingNeedKeyData[i].length; ksIdx++) { if (keySystem === pendingNeedKeyData[i][ksIdx].ks) { + if (pendingNeedKeyData[i][ksIdx].initData === null && protData && protData.hasOwnProperty('clearkeys')) { + var initData = { kids: Object.keys(protData.clearkeys) }; + pendingNeedKeyData[i][ksIdx].initData = new TextEncoder().encode(JSON.stringify(initData)); + } createKeySession(pendingNeedKeyData[i][ksIdx].initData, pendingNeedKeyData[i][ksIdx].cdmData); break; } @@ -39726,7 +40014,7 @@ function ProtectionController(config) { // Perform any special handling for ClearKey if (protectionKeyController.isClearKey(keySystem)) { - var clearkeys = protectionKeyController.processClearKeyLicenseRequest(protData, message); + var clearkeys = protectionKeyController.processClearKeyLicenseRequest(keySystem, protData, message); if (clearkeys) { log('DRM: ClearKey license request handled by application!'); sendLicenseRequestCompleteEvent(eventData); @@ -39808,9 +40096,9 @@ function ProtectionController(config) { } updateHeaders(keySystem.getRequestHeadersFromMessage(message)); - // Set withCredentials property from protData - if (protData && protData.withCredentials) { - xhr.withCredentials = true; + // Overwrite withCredentials property from protData if present + if (protData && typeof protData.withCredentials == 'boolean') { + xhr.withCredentials = protData.withCredentials; } xhr.send(keySystem.getLicenseRequestFromMessage(message)); @@ -39887,7 +40175,7 @@ exports['default'] = dashjs.FactoryMaker.getClassFactory(ProtectionController); /* jshint ignore:line */ module.exports = exports['default']; -},{"146":146,"166":166,"167":167}],150:[function(_dereq_,module,exports){ +},{"147":147,"168":168,"169":169}],151:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -39926,38 +40214,46 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _CommonEncryption = _dereq_(146); +var _CommonEncryption = _dereq_(147); var _CommonEncryption2 = _interopRequireDefault(_CommonEncryption); -var _drmKeySystemClearKey = _dereq_(151); +var _drmKeySystemClearKey = _dereq_(152); var _drmKeySystemClearKey2 = _interopRequireDefault(_drmKeySystemClearKey); -var _drmKeySystemWidevine = _dereq_(153); +var _drmKeySystemW3CClearKey = _dereq_(154); + +var _drmKeySystemW3CClearKey2 = _interopRequireDefault(_drmKeySystemW3CClearKey); + +var _drmKeySystemWidevine = _dereq_(155); var _drmKeySystemWidevine2 = _interopRequireDefault(_drmKeySystemWidevine); -var _drmKeySystemPlayReady = _dereq_(152); +var _drmKeySystemPlayReady = _dereq_(153); var _drmKeySystemPlayReady2 = _interopRequireDefault(_drmKeySystemPlayReady); -var _serversDRMToday = _dereq_(158); +var _serversDRMToday = _dereq_(160); var _serversDRMToday2 = _interopRequireDefault(_serversDRMToday); -var _serversPlayReady = _dereq_(159); +var _serversPlayReady = _dereq_(161); var _serversPlayReady2 = _interopRequireDefault(_serversPlayReady); -var _serversWidevine = _dereq_(160); +var _serversWidevine = _dereq_(162); var _serversWidevine2 = _interopRequireDefault(_serversWidevine); -var _serversClearKey = _dereq_(157); +var _serversClearKey = _dereq_(159); var _serversClearKey2 = _interopRequireDefault(_serversClearKey); +var _constantsProtectionConstants = _dereq_(102); + +var _constantsProtectionConstants2 = _interopRequireDefault(_constantsProtectionConstants); + /** * @module ProtectionKeyController * @description Media protection key system functionality that can be modified/overridden by applications @@ -39970,7 +40266,8 @@ function ProtectionKeyController() { log = undefined, keySystems = undefined, BASE64 = undefined, - clearkeyKeySystem = undefined; + clearkeyKeySystem = undefined, + clearkeyW3CKeySystem = undefined; function setConfig(config) { if (!config) return; @@ -40001,6 +40298,11 @@ function ProtectionKeyController() { keySystem = (0, _drmKeySystemClearKey2['default'])(context).getInstance({ BASE64: BASE64 }); keySystems.push(keySystem); clearkeyKeySystem = keySystem; + + // W3C ClearKey + keySystem = (0, _drmKeySystemW3CClearKey2['default'])(context).getInstance({ BASE64: BASE64, log: log }); + keySystems.push(keySystem); + clearkeyW3CKeySystem = keySystem; } /** @@ -40052,7 +40354,7 @@ function ProtectionKeyController() { * @instance */ function isClearKey(keySystem) { - return keySystem === clearkeyKeySystem; + return keySystem === clearkeyKeySystem || keySystem === clearkeyW3CKeySystem; } /** @@ -40107,7 +40409,6 @@ function ProtectionKeyController() { for (cpIdx = 0; cpIdx < cps.length; ++cpIdx) { cp = cps[cpIdx]; if (cp.schemeIdUri.toLowerCase() === ks.schemeIdURI) { - // Look for DRM-specific ContentProtection var initData = ks.getInitData(cp); if (!!initData) { @@ -40116,6 +40417,11 @@ function ProtectionKeyController() { initData: initData, cdmData: ks.getCDMData() }); + } else if (this.isClearKey(ks)) { + supportedKS.push({ + ks: ks, + initData: null + }); } } } @@ -40186,11 +40492,11 @@ function ProtectionKeyController() { var licenseServerData = null; if (protData && protData.hasOwnProperty('drmtoday')) { licenseServerData = (0, _serversDRMToday2['default'])(context).getInstance({ BASE64: BASE64 }); - } else if (keySystem.systemString === 'com.widevine.alpha') { + } else if (keySystem.systemString === _constantsProtectionConstants2['default'].WIDEVINE_KEYSTEM_STRING) { licenseServerData = (0, _serversWidevine2['default'])(context).getInstance(); - } else if (keySystem.systemString === 'com.microsoft.playready') { + } else if (keySystem.systemString === _constantsProtectionConstants2['default'].PLAYREADY_KEYSTEM_STRING) { licenseServerData = (0, _serversPlayReady2['default'])(context).getInstance(); - } else if (keySystem.systemString === 'org.w3.clearkey') { + } else if (keySystem.systemString === _constantsProtectionConstants2['default'].CLEARKEY_KEYSTEM_STRING) { licenseServerData = (0, _serversClearKey2['default'])(context).getInstance(); } @@ -40200,6 +40506,7 @@ function ProtectionKeyController() { /** * Allows application-specific retrieval of ClearKey keys. * + * @param {KeySystem} clearkeyKeySystem They exact ClearKey System to be used * @param {ProtectionData} protData protection data to use for the * request * @param {ArrayBuffer} message the key message from the CDM @@ -40208,7 +40515,7 @@ function ProtectionKeyController() { * @memberof module:ProtectionKeyController * @instance */ - function processClearKeyLicenseRequest(protData, message) { + function processClearKeyLicenseRequest(clearkeyKeySystem, protData, message) { try { return clearkeyKeySystem.getClearKeysFromProtectionData(protData, message); } catch (error) { @@ -40256,7 +40563,7 @@ exports['default'] = dashjs.FactoryMaker.getSingletonFactory(ProtectionKeyContro /* jshint ignore:line */ module.exports = exports['default']; -},{"146":146,"151":151,"152":152,"153":153,"157":157,"158":158,"159":159,"160":160}],151:[function(_dereq_,module,exports){ +},{"102":102,"147":147,"152":152,"153":153,"154":154,"155":155,"159":159,"160":160,"161":161,"162":162}],152:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -40296,26 +40603,32 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _voKeyPair = _dereq_(164); +var _voKeyPair = _dereq_(166); var _voKeyPair2 = _interopRequireDefault(_voKeyPair); -var _voClearKeyKeySet = _dereq_(161); +var _voClearKeyKeySet = _dereq_(163); var _voClearKeyKeySet2 = _interopRequireDefault(_voClearKeyKeySet); -var _CommonEncryption = _dereq_(146); +var _CommonEncryption = _dereq_(147); var _CommonEncryption2 = _interopRequireDefault(_CommonEncryption); -var uuid = '1077efec-c0b2-4d02-ace3-3c1e52e2fb4b'; -var systemString = 'org.w3.clearkey'; +var _constantsProtectionConstants = _dereq_(102); + +var _constantsProtectionConstants2 = _interopRequireDefault(_constantsProtectionConstants); + +var uuid = 'e2719d58-a985-b3c9-781a-b030af78d30e'; +var systemString = _constantsProtectionConstants2['default'].CLEARKEY_KEYSTEM_STRING; var schemeIdURI = 'urn:uuid:' + uuid; function KeySystemClearKey(config) { + config = config || {}; var instance = undefined; var BASE64 = config.BASE64; + /** * Returns desired clearkeys (as specified in the CDM message) from protection data * @@ -40335,7 +40648,7 @@ function KeySystemClearKey(config) { var keyPairs = []; for (var i = 0; i < jsonMsg.kids.length; i++) { var clearkeyID = jsonMsg.kids[i]; - var clearkey = protectionData.clearkeys.hasOwnProperty(clearkeyID) ? protectionData.clearkeys[clearkeyID] : null; + var clearkey = protectionData.clearkeys && protectionData.clearkeys.hasOwnProperty(clearkeyID) ? protectionData.clearkeys[clearkeyID] : null; if (!clearkey) { throw new Error('DRM: ClearKey keyID (' + clearkeyID + ') is not known!'); } @@ -40387,7 +40700,7 @@ exports['default'] = dashjs.FactoryMaker.getSingletonFactory(KeySystemClearKey); /* jshint ignore:line */ module.exports = exports['default']; -},{"146":146,"161":161,"164":164}],152:[function(_dereq_,module,exports){ +},{"102":102,"147":147,"163":163,"166":166}],153:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -40433,21 +40746,26 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _CommonEncryption = _dereq_(146); +var _CommonEncryption = _dereq_(147); var _CommonEncryption2 = _interopRequireDefault(_CommonEncryption); +var _constantsProtectionConstants = _dereq_(102); + +var _constantsProtectionConstants2 = _interopRequireDefault(_constantsProtectionConstants); + var uuid = '9a04f079-9840-4286-ab92-e65be0885f95'; -var systemString = 'com.microsoft.playready'; +var systemString = _constantsProtectionConstants2['default'].PLAYREADY_KEYSTEM_STRING; var schemeIdURI = 'urn:uuid:' + uuid; var PRCDMData = '%CUSTOMDATA%'; var protData = undefined; function KeySystemPlayReady(config) { + config = config || {}; var instance = undefined; var messageFormat = 'utf16'; - var BASE64 = config ? config.BASE64 : null; + var BASE64 = config.BASE64; function checkConfig() { if (!BASE64 || !BASE64.hasOwnProperty('decodeArray') || !BASE64.hasOwnProperty('decodeArray')) { @@ -40633,11 +40951,13 @@ function KeySystemPlayReady(config) { * Get Playready Custom data */ function getCDMData() { - var customData, cdmData, cdmDataBytes, i; + var customData = undefined, + cdmData = undefined, + cdmDataBytes = undefined, + i = undefined; checkConfig(); if (protData && protData.cdmData) { - // Convert custom data into multibyte string customData = []; for (i = 0; i < protData.cdmData.length; ++i) { @@ -40687,7 +41007,144 @@ exports['default'] = dashjs.FactoryMaker.getSingletonFactory(KeySystemPlayReady) /* jshint ignore:line */ module.exports = exports['default']; -},{"146":146}],153:[function(_dereq_,module,exports){ +},{"102":102,"147":147}],154:[function(_dereq_,module,exports){ +/** + * The copyright in this software is being made available under the BSD License, + * included below. This software may be subject to other third party and contributor + * rights, including patent rights, and no such rights are granted under this license. + * + * Copyright (c) 2013, Dash Industry Forum. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * * Neither the name of Dash Industry Forum nor the names of its + * contributors may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _voKeyPair = _dereq_(166); + +var _voKeyPair2 = _interopRequireDefault(_voKeyPair); + +var _voClearKeyKeySet = _dereq_(163); + +var _voClearKeyKeySet2 = _interopRequireDefault(_voClearKeyKeySet); + +var _CommonEncryption = _dereq_(147); + +var _CommonEncryption2 = _interopRequireDefault(_CommonEncryption); + +var _constantsProtectionConstants = _dereq_(102); + +var _constantsProtectionConstants2 = _interopRequireDefault(_constantsProtectionConstants); + +var uuid = '1077efec-c0b2-4d02-ace3-3c1e52e2fb4b'; +var systemString = _constantsProtectionConstants2['default'].CLEARKEY_KEYSTEM_STRING; +var schemeIdURI = 'urn:uuid:' + uuid; + +function KeySystemW3CClearKey(config) { + var instance = undefined; + var BASE64 = config.BASE64; + var log = config.log; + /** + * Returns desired clearkeys (as specified in the CDM message) from protection data + * + * @param {ProtectionData} protectionData the protection data + * @param {ArrayBuffer} message the ClearKey CDM message + * @returns {ClearKeyKeySet} the key set or null if none found + * @throws {Error} if a keyID specified in the CDM message was not found in the + * protection data + * @memberof KeySystemClearKey + */ + function getClearKeysFromProtectionData(protectionData, message) { + var clearkeySet = null; + if (protectionData) { + // ClearKey is the only system that does not require a license server URL, so we + // handle it here when keys are specified in protection data + var jsonMsg = JSON.parse(String.fromCharCode.apply(null, new Uint8Array(message))); + var keyPairs = []; + for (var i = 0; i < jsonMsg.kids.length; i++) { + var clearkeyID = jsonMsg.kids[i]; + var clearkey = protectionData.clearkeys && protectionData.clearkeys.hasOwnProperty(clearkeyID) ? protectionData.clearkeys[clearkeyID] : null; + if (!clearkey) { + throw new Error('DRM: ClearKey keyID (' + clearkeyID + ') is not known!'); + } + // KeyIDs from CDM are not base64 padded. Keys may or may not be padded + keyPairs.push(new _voKeyPair2['default'](clearkeyID, clearkey)); + } + clearkeySet = new _voClearKeyKeySet2['default'](keyPairs); + + log('Warning: ClearKey schemeIdURI is using W3C Common PSSH systemID (1077efec-c0b2-4d02-ace3-3c1e52e2fb4b) in Content Protection. See DASH-IF IOP v4.1 section 7.6.2.4'); + } + return clearkeySet; + } + + function getInitData(cp) { + return _CommonEncryption2['default'].parseInitDataFromContentProtection(cp, BASE64); + } + + function getRequestHeadersFromMessage() /*message*/{ + return null; + } + + function getLicenseRequestFromMessage(message) { + return new Uint8Array(message); + } + + function getLicenseServerURLFromInitData() /*initData*/{ + return null; + } + + function getCDMData() { + return null; + } + + instance = { + uuid: uuid, + schemeIdURI: schemeIdURI, + systemString: systemString, + getInitData: getInitData, + getRequestHeadersFromMessage: getRequestHeadersFromMessage, + getLicenseRequestFromMessage: getLicenseRequestFromMessage, + getLicenseServerURLFromInitData: getLicenseServerURLFromInitData, + getCDMData: getCDMData, + getClearKeysFromProtectionData: getClearKeysFromProtectionData + }; + + return instance; +} + +KeySystemW3CClearKey.__dashjs_factory_name = 'KeySystemW3CClearKey'; +exports['default'] = dashjs.FactoryMaker.getSingletonFactory(KeySystemW3CClearKey); +/* jshint ignore:line */ +module.exports = exports['default']; + +},{"102":102,"147":147,"163":163,"166":166}],155:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -40734,16 +41191,21 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _CommonEncryption = _dereq_(146); +var _CommonEncryption = _dereq_(147); var _CommonEncryption2 = _interopRequireDefault(_CommonEncryption); +var _constantsProtectionConstants = _dereq_(102); + +var _constantsProtectionConstants2 = _interopRequireDefault(_constantsProtectionConstants); + var uuid = 'edef8ba9-79d6-4ace-a3c8-27dcd51d21ed'; -var systemString = 'com.widevine.alpha'; +var systemString = _constantsProtectionConstants2['default'].WIDEVINE_KEYSTEM_STRING; var schemeIdURI = 'urn:uuid:' + uuid; function KeySystemWidevine(config) { + config = config || {}; var instance = undefined; var protData = null; var BASE64 = config.BASE64; @@ -40837,7 +41299,7 @@ exports['default'] = dashjs.FactoryMaker.getSingletonFactory(KeySystemWidevine); /* jshint ignore:line */ module.exports = exports['default']; -},{"146":146}],154:[function(_dereq_,module,exports){ +},{"102":102,"147":147}],156:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -40885,32 +41347,33 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _controllersProtectionKeyController = _dereq_(150); +var _controllersProtectionKeyController = _dereq_(151); var _controllersProtectionKeyController2 = _interopRequireDefault(_controllersProtectionKeyController); -var _voNeedKey = _dereq_(168); +var _voNeedKey = _dereq_(170); var _voNeedKey2 = _interopRequireDefault(_voNeedKey); -var _voKeyError = _dereq_(162); +var _voKeyError = _dereq_(164); var _voKeyError2 = _interopRequireDefault(_voKeyError); -var _voKeyMessage = _dereq_(163); +var _voKeyMessage = _dereq_(165); var _voKeyMessage2 = _interopRequireDefault(_voKeyMessage); -var _voKeySystemConfiguration = _dereq_(166); +var _voKeySystemConfiguration = _dereq_(168); var _voKeySystemConfiguration2 = _interopRequireDefault(_voKeySystemConfiguration); -var _voKeySystemAccess = _dereq_(165); +var _voKeySystemAccess = _dereq_(167); var _voKeySystemAccess2 = _interopRequireDefault(_voKeySystemAccess); function ProtectionModel_01b(config) { + config = config || {}; var context = this.context; var eventBus = config.eventBus; //Need to pass in here so we can use same instance since this is optional module var events = config.events; @@ -41057,15 +41520,13 @@ function ProtectionModel_01b(config) { } } - function createKeySession(initData /*, keySystemType */) { - + function createKeySession(initData /*, protData, keySystemType */) { if (!keySystem) { throw new Error('Can not create sessions until you have selected a key system'); } // Determine if creating a new session is allowed if (moreSessionsAllowed || sessions.length === 0) { - var newSession = { // Implements SessionToken sessionID: null, initData: initData, @@ -41119,7 +41580,6 @@ function ProtectionModel_01b(config) { handleEvent: function handleEvent(event) { var sessionToken = null; switch (event.type) { - case api.needkey: var initData = ArrayBuffer.isView(event.initData) ? event.initData.buffer : event.initData; eventBus.trigger(events.NEED_KEY, { key: new _voNeedKey2['default'](initData, 'cenc') }); @@ -41176,14 +41636,12 @@ function ProtectionModel_01b(config) { break; case api.keymessage: - // If this CDM does not support session IDs, we will be limited // to a single session moreSessionsAllowed = event.sessionId !== null && event.sessionId !== undefined; // SessionIDs supported if (moreSessionsAllowed) { - // Attempt to find an uninitialized token with this sessionID sessionToken = findSessionByID(sessions, event.sessionId); if (!sessionToken && pendingSessions.length > 0) { @@ -41196,7 +41654,6 @@ function ProtectionModel_01b(config) { } } else if (pendingSessions.length > 0) { // SessionIDs not supported - sessionToken = pendingSessions.shift(); sessions.push(sessionToken); @@ -41231,7 +41688,6 @@ function ProtectionModel_01b(config) { * @returns {*} the session token with the given sessionID */ function findSessionByID(sessionArray, sessionID) { - if (!sessionID || !sessionArray) { return null; } else { @@ -41277,7 +41733,7 @@ exports['default'] = dashjs.FactoryMaker.getClassFactory(ProtectionModel_01b); /* jshint ignore:line */ module.exports = exports['default']; -},{"150":150,"162":162,"163":163,"165":165,"166":166,"168":168}],155:[function(_dereq_,module,exports){ +},{"151":151,"164":164,"165":165,"167":167,"168":168,"170":170}],157:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -41325,28 +41781,33 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _controllersProtectionKeyController = _dereq_(150); +var _controllersProtectionKeyController = _dereq_(151); var _controllersProtectionKeyController2 = _interopRequireDefault(_controllersProtectionKeyController); -var _voNeedKey = _dereq_(168); +var _voNeedKey = _dereq_(170); var _voNeedKey2 = _interopRequireDefault(_voNeedKey); -var _voKeyError = _dereq_(162); +var _voKeyError = _dereq_(164); var _voKeyError2 = _interopRequireDefault(_voKeyError); -var _voKeyMessage = _dereq_(163); +var _voKeyMessage = _dereq_(165); var _voKeyMessage2 = _interopRequireDefault(_voKeyMessage); -var _voKeySystemAccess = _dereq_(165); +var _voKeySystemAccess = _dereq_(167); var _voKeySystemAccess2 = _interopRequireDefault(_voKeySystemAccess); +var _constantsProtectionConstants = _dereq_(102); + +var _constantsProtectionConstants2 = _interopRequireDefault(_constantsProtectionConstants); + function ProtectionModel_21Jan2015(config) { + config = config || {}; var context = this.context; var eventBus = config.eventBus; //Need to pass in here so we can use same instance since this is optional module var events = config.events; @@ -41471,17 +41932,19 @@ function ProtectionModel_21Jan2015(config) { }); } - function createKeySession(initData, sessionType) { - + function createKeySession(initData, protData, sessionType) { if (!keySystem || !mediaKeys) { throw new Error('Can not create sessions until you have selected a key system'); } var session = mediaKeys.createSession(sessionType); var sessionToken = createSessionToken(session, initData, sessionType); + var ks = this.getKeySystem(); - // Generate initial key request - session.generateRequest('cenc', initData).then(function () { + // Generate initial key request. + // keyids type is used for clearkey when keys are provided directly in the protection data and then request to a license server is not needed + var dataType = ks.systemString === _constantsProtectionConstants2['default'].CLEARKEY_KEYSTEM_STRING && protData && protData.clearkeys ? 'keyids' : 'cenc'; + session.generateRequest(dataType, initData).then(function () { log('DRM: Session created. SessionID = ' + sessionToken.getSessionID()); eventBus.trigger(events.KEY_SESSION_CREATED, { data: sessionToken }); })['catch'](function (error) { @@ -41492,7 +41955,6 @@ function ProtectionModel_21Jan2015(config) { } function updateKeySession(sessionToken, message) { - var session = sessionToken.session; // Send our request to the key session @@ -41549,7 +42011,6 @@ function ProtectionModel_21Jan2015(config) { var keySystem = ksConfigurations[i].ks; var configs = ksConfigurations[i].configs; navigator.requestMediaKeySystemAccess(keySystem.systemString, configs).then(function (mediaKeySystemAccess) { - // Chrome 40 does not currently implement MediaKeySystemAccess.getConfiguration() var configuration = typeof mediaKeySystemAccess.getConfiguration === 'function' ? mediaKeySystemAccess.getConfiguration() : null; var keySystemAccess = new _voKeySystemAccess2['default'](keySystem, configuration); @@ -41583,7 +42044,6 @@ function ProtectionModel_21Jan2015(config) { return { handleEvent: function handleEvent(event) { switch (event.type) { - case 'encrypted': if (event.initData) { var initData = ArrayBuffer.isView(event.initData) ? event.initData.buffer : event.initData; @@ -41608,7 +42068,6 @@ function ProtectionModel_21Jan2015(config) { // Function to create our session token objects which manage the EME // MediaKeySession and session-specific event handler function createSessionToken(session, initData, sessionType) { - var token = { // Implements SessionToken session: session, initData: initData, @@ -41688,7 +42147,7 @@ exports['default'] = dashjs.FactoryMaker.getClassFactory(ProtectionModel_21Jan20 /* jshint ignore:line */ module.exports = exports['default']; -},{"150":150,"162":162,"163":163,"165":165,"168":168}],156:[function(_dereq_,module,exports){ +},{"102":102,"151":151,"164":164,"165":165,"167":167,"170":170}],158:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -41737,32 +42196,33 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _controllersProtectionKeyController = _dereq_(150); +var _controllersProtectionKeyController = _dereq_(151); var _controllersProtectionKeyController2 = _interopRequireDefault(_controllersProtectionKeyController); -var _voNeedKey = _dereq_(168); +var _voNeedKey = _dereq_(170); var _voNeedKey2 = _interopRequireDefault(_voNeedKey); -var _voKeyError = _dereq_(162); +var _voKeyError = _dereq_(164); var _voKeyError2 = _interopRequireDefault(_voKeyError); -var _voKeyMessage = _dereq_(163); +var _voKeyMessage = _dereq_(165); var _voKeyMessage2 = _interopRequireDefault(_voKeyMessage); -var _voKeySystemConfiguration = _dereq_(166); +var _voKeySystemConfiguration = _dereq_(168); var _voKeySystemConfiguration2 = _interopRequireDefault(_voKeySystemConfiguration); -var _voKeySystemAccess = _dereq_(165); +var _voKeySystemAccess = _dereq_(167); var _voKeySystemAccess2 = _interopRequireDefault(_voKeySystemAccess); function ProtectionModel_3Feb2014(config) { + config = config || {}; var context = this.context; var eventBus = config.eventBus; //Need to pass in here so we can use same instance since this is optional module var events = config.events; @@ -41903,7 +42363,7 @@ function ProtectionModel_3Feb2014(config) { } } - function createKeySession(initData, sessionType, cdmData) { + function createKeySession(initData, protData, sessionType, cdmData) { if (!keySystem || !mediaKeys || !keySystemAccess) { throw new Error('Can not create sessions until you have selected a key system'); @@ -42088,7 +42548,7 @@ exports['default'] = dashjs.FactoryMaker.getClassFactory(ProtectionModel_3Feb201 /* jshint ignore:line */ module.exports = exports['default']; -},{"150":150,"162":162,"163":163,"165":165,"166":166,"168":168}],157:[function(_dereq_,module,exports){ +},{"151":151,"164":164,"165":165,"167":167,"168":168,"170":170}],159:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -42137,11 +42597,11 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _voKeyPair = _dereq_(164); +var _voKeyPair = _dereq_(166); var _voKeyPair2 = _interopRequireDefault(_voKeyPair); -var _voClearKeyKeySet = _dereq_(161); +var _voClearKeyKeySet = _dereq_(163); var _voClearKeyKeySet2 = _interopRequireDefault(_voClearKeyKeySet); @@ -42203,7 +42663,7 @@ exports['default'] = dashjs.FactoryMaker.getSingletonFactory(ClearKey); /* jshint ignore:line */ module.exports = exports['default']; -},{"161":161,"164":164}],158:[function(_dereq_,module,exports){ +},{"163":163,"166":166}],160:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -42247,28 +42707,35 @@ module.exports = exports['default']; Object.defineProperty(exports, '__esModule', { value: true }); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _constantsProtectionConstants = _dereq_(102); + +var _constantsProtectionConstants2 = _interopRequireDefault(_constantsProtectionConstants); + function DRMToday(config) { + config = config || {}; var BASE64 = config.BASE64; - var keySystems = { - 'com.widevine.alpha': { - responseType: 'json', - getLicenseMessage: function getLicenseMessage(response) { - return BASE64.decodeArray(response.license); - }, - getErrorResponse: function getErrorResponse(response) { - return response; - } + var keySystems = {}; + keySystems[_constantsProtectionConstants2['default'].WIDEVINE_KEYSTEM_STRING] = { + responseType: 'json', + getLicenseMessage: function getLicenseMessage(response) { + return BASE64.decodeArray(response.license); }, - 'com.microsoft.playready': { - responseType: 'arraybuffer', - getLicenseMessage: function getLicenseMessage(response) { - return response; - }, - getErrorResponse: function getErrorResponse(response) { - return String.fromCharCode.apply(null, new Uint8Array(response)); - } + getErrorResponse: function getErrorResponse(response) { + return response; + } + }; + keySystems[_constantsProtectionConstants2['default'].PLAYREADY_KEYSTEM_STRING] = { + responseType: 'arraybuffer', + getLicenseMessage: function getLicenseMessage(response) { + return response; + }, + getErrorResponse: function getErrorResponse(response) { + return String.fromCharCode.apply(null, new Uint8Array(response)); } }; @@ -42317,7 +42784,7 @@ exports['default'] = dashjs.FactoryMaker.getSingletonFactory(DRMToday); /* jshint ignore:line */ module.exports = exports['default']; -},{}],159:[function(_dereq_,module,exports){ +},{"102":102}],161:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -42473,7 +42940,7 @@ exports['default'] = dashjs.FactoryMaker.getSingletonFactory(PlayReady); /* jshint ignore:line */ module.exports = exports['default']; -},{}],160:[function(_dereq_,module,exports){ +},{}],162:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -42550,7 +43017,7 @@ exports['default'] = dashjs.FactoryMaker.getSingletonFactory(Widevine); /* jshint ignore:line */ module.exports = exports['default']; -},{}],161:[function(_dereq_,module,exports){ +},{}],163:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -42656,7 +43123,7 @@ var ClearKeyKeySet = (function () { exports['default'] = ClearKeyKeySet; module.exports = exports['default']; -},{}],162:[function(_dereq_,module,exports){ +},{}],164:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -42717,7 +43184,7 @@ function KeyError(sessionToken, errorString) { exports["default"] = KeyError; module.exports = exports["default"]; -},{}],163:[function(_dereq_,module,exports){ +},{}],165:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -42782,7 +43249,7 @@ function KeyMessage(sessionToken, message, defaultURL, messageType) { exports['default'] = KeyMessage; module.exports = exports['default']; -},{}],164:[function(_dereq_,module,exports){ +},{}],166:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -42842,7 +43309,7 @@ function KeyPair(keyID, key) { exports["default"] = KeyPair; module.exports = exports["default"]; -},{}],165:[function(_dereq_,module,exports){ +},{}],167:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -42906,7 +43373,7 @@ function KeySystemAccess(keySystem, ksConfiguration) { exports["default"] = KeySystemAccess; module.exports = exports["default"]; -},{}],166:[function(_dereq_,module,exports){ +},{}],168:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -42985,7 +43452,7 @@ function KeySystemConfiguration(audioCapabilities, videoCapabilities, distinctiv exports['default'] = KeySystemConfiguration; module.exports = exports['default']; -},{}],167:[function(_dereq_,module,exports){ +},{}],169:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -43045,7 +43512,7 @@ function MediaCapability(contentType, robustness) { exports["default"] = MediaCapability; module.exports = exports["default"]; -},{}],168:[function(_dereq_,module,exports){ +},{}],170:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -43104,7 +43571,7 @@ function NeedKey(initData, initDataType) { exports["default"] = NeedKey; module.exports = exports["default"]; -},{}],169:[function(_dereq_,module,exports){ +},{}],171:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { @@ -43162,7 +43629,7 @@ var factory = _coreFactoryMakerJs2['default'].getClassFactory(DroppedFramesHisto exports['default'] = factory; module.exports = exports['default']; -},{"51":51}],170:[function(_dereq_,module,exports){ +},{"51":51}],172:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -43208,6 +43675,7 @@ var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); function RulesContext(config) { + config = config || {}; var instance = undefined; var abrController = config.abrController; var streamProcessor = config.streamProcessor; @@ -43277,7 +43745,7 @@ RulesContext.__dashjs_factory_name = 'RulesContext'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(RulesContext); module.exports = exports['default']; -},{"51":51}],171:[function(_dereq_,module,exports){ +},{"51":51}],173:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -43369,7 +43837,7 @@ _coreFactoryMaker2['default'].updateClassFactory(SwitchRequest.__dashjs_factory_ exports['default'] = factory; module.exports = exports['default']; -},{"51":51}],172:[function(_dereq_,module,exports){ +},{"51":51}],174:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -43413,7 +43881,7 @@ var _coreFactoryMakerJs = _dereq_(51); var _coreFactoryMakerJs2 = _interopRequireDefault(_coreFactoryMakerJs); -var _SwitchRequestJs = _dereq_(171); +var _SwitchRequestJs = _dereq_(173); var _SwitchRequestJs2 = _interopRequireDefault(_SwitchRequestJs); @@ -43475,7 +43943,7 @@ var factory = _coreFactoryMakerJs2['default'].getClassFactory(SwitchRequestHisto exports['default'] = factory; module.exports = exports['default']; -},{"171":171,"51":51}],173:[function(_dereq_,module,exports){ +},{"173":173,"51":51}],175:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -43528,6 +43996,7 @@ var _coreFactoryMakerJs2 = _interopRequireDefault(_coreFactoryMakerJs); function ThroughputHistory(config) { + config = config || {}; // sliding window constants var MAX_MEASUREMENTS_TO_KEEP = 20; var AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_LIVE = 3; @@ -43751,7 +44220,7 @@ ThroughputHistory.__dashjs_factory_name = 'ThroughputHistory'; exports['default'] = _coreFactoryMakerJs2['default'].getClassFactory(ThroughputHistory); module.exports = exports['default']; -},{"100":100,"51":51}],174:[function(_dereq_,module,exports){ +},{"100":100,"51":51}],176:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -43790,27 +44259,27 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _ThroughputRule = _dereq_(180); +var _ThroughputRule = _dereq_(182); var _ThroughputRule2 = _interopRequireDefault(_ThroughputRule); -var _InsufficientBufferRule = _dereq_(178); +var _InsufficientBufferRule = _dereq_(180); var _InsufficientBufferRule2 = _interopRequireDefault(_InsufficientBufferRule); -var _AbandonRequestsRule = _dereq_(175); +var _AbandonRequestsRule = _dereq_(177); var _AbandonRequestsRule2 = _interopRequireDefault(_AbandonRequestsRule); -var _DroppedFramesRuleJs = _dereq_(177); +var _DroppedFramesRuleJs = _dereq_(179); var _DroppedFramesRuleJs2 = _interopRequireDefault(_DroppedFramesRuleJs); -var _SwitchHistoryRuleJs = _dereq_(179); +var _SwitchHistoryRuleJs = _dereq_(181); var _SwitchHistoryRuleJs2 = _interopRequireDefault(_SwitchHistoryRuleJs); -var _BolaRule = _dereq_(176); +var _BolaRule = _dereq_(178); var _BolaRule2 = _interopRequireDefault(_BolaRule); @@ -43818,7 +44287,7 @@ var _coreFactoryMaker = _dereq_(51); var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); -var _SwitchRequestJs = _dereq_(171); +var _SwitchRequestJs = _dereq_(173); var _SwitchRequestJs2 = _interopRequireDefault(_SwitchRequestJs); @@ -43827,6 +44296,7 @@ var ABANDON_FRAGMENT_RULES = 'abandonFragmentRules'; function ABRRulesCollection(config) { + config = config || {}; var context = this.context; var mediaPlayerModel = config.mediaPlayerModel; @@ -43978,7 +44448,7 @@ _coreFactoryMaker2['default'].updateSingletonFactory(ABRRulesCollection.__dashjs exports['default'] = factory; module.exports = exports['default']; -},{"171":171,"175":175,"176":176,"177":177,"178":178,"179":179,"180":180,"51":51}],175:[function(_dereq_,module,exports){ +},{"173":173,"177":177,"178":178,"179":179,"180":180,"181":181,"182":182,"51":51}],177:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -44017,7 +44487,7 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _SwitchRequest = _dereq_(171); +var _SwitchRequest = _dereq_(173); var _SwitchRequest2 = _interopRequireDefault(_SwitchRequest); @@ -44031,6 +44501,7 @@ var _coreDebug2 = _interopRequireDefault(_coreDebug); function AbandonRequestsRule(config) { + config = config || {}; var ABANDON_MULTIPLIER = 1.8; var GRACE_TIME_THRESHOLD = 500; var MIN_LENGTH_TO_AVERAGE = 5; @@ -44155,7 +44626,7 @@ AbandonRequestsRule.__dashjs_factory_name = 'AbandonRequestsRule'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(AbandonRequestsRule); module.exports = exports['default']; -},{"171":171,"49":49,"51":51}],176:[function(_dereq_,module,exports){ +},{"173":173,"49":49,"51":51}],178:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -44201,7 +44672,7 @@ var _constantsMetricsConstants = _dereq_(101); var _constantsMetricsConstants2 = _interopRequireDefault(_constantsMetricsConstants); -var _SwitchRequest = _dereq_(171); +var _SwitchRequest = _dereq_(173); var _SwitchRequest2 = _interopRequireDefault(_SwitchRequest); @@ -44209,7 +44680,7 @@ var _coreFactoryMaker = _dereq_(51); var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); -var _voMetricsHTTPRequest = _dereq_(224); +var _voMetricsHTTPRequest = _dereq_(226); var _coreEventBus = _dereq_(50); @@ -44240,6 +44711,7 @@ var PLACEHOLDER_BUFFER_DECAY = 0.99; // Make sure placeholder buffer does not st function BolaRule(config) { + config = config || {}; var context = this.context; var log = (0, _coreDebug2['default'])(context).getInstance().log; @@ -44729,7 +45201,7 @@ BolaRule.__dashjs_factory_name = 'BolaRule'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(BolaRule); module.exports = exports['default']; -},{"101":101,"171":171,"224":224,"49":49,"50":50,"51":51,"54":54}],177:[function(_dereq_,module,exports){ +},{"101":101,"173":173,"226":226,"49":49,"50":50,"51":51,"54":54}],179:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { @@ -44742,7 +45214,7 @@ var _coreFactoryMakerJs = _dereq_(51); var _coreFactoryMakerJs2 = _interopRequireDefault(_coreFactoryMakerJs); -var _SwitchRequestJs = _dereq_(171); +var _SwitchRequestJs = _dereq_(173); var _SwitchRequestJs2 = _interopRequireDefault(_SwitchRequestJs); @@ -44793,7 +45265,7 @@ DroppedFramesRule.__dashjs_factory_name = 'DroppedFramesRule'; exports['default'] = _coreFactoryMakerJs2['default'].getClassFactory(DroppedFramesRule); module.exports = exports['default']; -},{"171":171,"49":49,"51":51}],178:[function(_dereq_,module,exports){ +},{"173":173,"49":49,"51":51}],180:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -44832,7 +45304,7 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _controllersBufferController = _dereq_(105); +var _controllersBufferController = _dereq_(106); var _controllersBufferController2 = _interopRequireDefault(_controllersBufferController); @@ -44852,12 +45324,13 @@ var _coreDebug = _dereq_(49); var _coreDebug2 = _interopRequireDefault(_coreDebug); -var _SwitchRequestJs = _dereq_(171); +var _SwitchRequestJs = _dereq_(173); var _SwitchRequestJs2 = _interopRequireDefault(_SwitchRequestJs); function InsufficientBufferRule(config) { + config = config || {}; var INSUFFICIENT_BUFFER_SAFETY_FACTOR = 0.5; var context = this.context; @@ -44971,7 +45444,7 @@ InsufficientBufferRule.__dashjs_factory_name = 'InsufficientBufferRule'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(InsufficientBufferRule); module.exports = exports['default']; -},{"105":105,"171":171,"49":49,"50":50,"51":51,"54":54}],179:[function(_dereq_,module,exports){ +},{"106":106,"173":173,"49":49,"50":50,"51":51,"54":54}],181:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { @@ -44988,7 +45461,7 @@ var _coreDebug = _dereq_(49); var _coreDebug2 = _interopRequireDefault(_coreDebug); -var _SwitchRequestJs = _dereq_(171); +var _SwitchRequestJs = _dereq_(173); var _SwitchRequestJs2 = _interopRequireDefault(_SwitchRequestJs); @@ -45039,7 +45512,7 @@ SwitchHistoryRule.__dashjs_factory_name = 'SwitchHistoryRule'; exports['default'] = _coreFactoryMakerJs2['default'].getClassFactory(SwitchHistoryRule); module.exports = exports['default']; -},{"171":171,"49":49,"51":51}],180:[function(_dereq_,module,exports){ +},{"173":173,"49":49,"51":51}],182:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -45078,11 +45551,11 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _controllersBufferController = _dereq_(105); +var _controllersBufferController = _dereq_(106); var _controllersBufferController2 = _interopRequireDefault(_controllersBufferController); -var _controllersAbrController = _dereq_(102); +var _controllersAbrController = _dereq_(103); var _controllersAbrController2 = _interopRequireDefault(_controllersAbrController); @@ -45094,12 +45567,13 @@ var _coreDebug = _dereq_(49); var _coreDebug2 = _interopRequireDefault(_coreDebug); -var _SwitchRequestJs = _dereq_(171); +var _SwitchRequestJs = _dereq_(173); var _SwitchRequestJs2 = _interopRequireDefault(_SwitchRequestJs); function ThroughputRule(config) { + config = config || {}; var context = this.context; var log = (0, _coreDebug2['default'])(context).getInstance().log; @@ -45165,7 +45639,7 @@ ThroughputRule.__dashjs_factory_name = 'ThroughputRule'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(ThroughputRule); module.exports = exports['default']; -},{"102":102,"105":105,"171":171,"49":49,"51":51}],181:[function(_dereq_,module,exports){ +},{"103":103,"106":106,"173":173,"49":49,"51":51}],183:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -45214,6 +45688,7 @@ var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); function BufferLevelRule(config) { + config = config || {}; var dashMetrics = config.dashMetrics; var metricsModel = config.metricsModel; var mediaPlayerModel = config.mediaPlayerModel; @@ -45266,7 +45741,7 @@ BufferLevelRule.__dashjs_factory_name = 'BufferLevelRule'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(BufferLevelRule); module.exports = exports['default']; -},{"100":100,"51":51}],182:[function(_dereq_,module,exports){ +},{"100":100,"51":51}],184:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -45319,6 +45794,7 @@ var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); function NextFragmentRequestRule(config) { + config = config || {}; var context = this.context; var log = (0, _coreDebug2['default'])(context).getInstance().log; var adapter = config.adapter; @@ -45400,7 +45876,7 @@ NextFragmentRequestRule.__dashjs_factory_name = 'NextFragmentRequestRule'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(NextFragmentRequestRule); module.exports = exports['default']; -},{"100":100,"49":49,"51":51}],183:[function(_dereq_,module,exports){ +},{"100":100,"49":49,"51":51}],185:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -45739,7 +46215,7 @@ EmbeddedTextHtmlRender.__dashjs_factory_name = 'EmbeddedTextHtmlRender'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(EmbeddedTextHtmlRender); module.exports = exports['default']; -},{"51":51}],184:[function(_dereq_,module,exports){ +},{"51":51}],186:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -45794,13 +46270,14 @@ var _coreFactoryMaker = _dereq_(51); var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); -var _utilsInitCache = _dereq_(196); +var _utilsInitCache = _dereq_(198); var _utilsInitCache2 = _interopRequireDefault(_utilsInitCache); var BUFFER_CONTROLLER_TYPE = 'NotFragmentedTextBufferController'; function NotFragmentedTextBufferController(config) { + config = config || {}; var context = this.context; var eventBus = (0, _coreEventBus2['default'])(context).getInstance(); @@ -45970,7 +46447,7 @@ NotFragmentedTextBufferController.__dashjs_factory_name = BUFFER_CONTROLLER_TYPE exports['default'] = _coreFactoryMaker2['default'].getClassFactory(NotFragmentedTextBufferController); module.exports = exports['default']; -},{"100":100,"196":196,"50":50,"51":51,"54":54}],185:[function(_dereq_,module,exports){ +},{"100":100,"198":198,"50":50,"51":51,"54":54}],187:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -46017,16 +46494,17 @@ var _coreFactoryMaker = _dereq_(51); var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); -var _controllersBufferController = _dereq_(105); +var _controllersBufferController = _dereq_(106); var _controllersBufferController2 = _interopRequireDefault(_controllersBufferController); -var _NotFragmentedTextBufferController = _dereq_(184); +var _NotFragmentedTextBufferController = _dereq_(186); var _NotFragmentedTextBufferController2 = _interopRequireDefault(_NotFragmentedTextBufferController); function TextBufferController(config) { + config = config || {}; var context = this.context; var _BufferControllerImpl = undefined; @@ -46153,7 +46631,7 @@ TextBufferController.__dashjs_factory_name = 'TextBufferController'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(TextBufferController); module.exports = exports['default']; -},{"100":100,"105":105,"184":184,"51":51}],186:[function(_dereq_,module,exports){ +},{"100":100,"106":106,"186":186,"51":51}],188:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -46200,30 +46678,37 @@ var _coreFactoryMaker = _dereq_(51); var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); -var _TextSourceBuffer = _dereq_(187); +var _TextSourceBuffer = _dereq_(189); var _TextSourceBuffer2 = _interopRequireDefault(_TextSourceBuffer); -var _TextTracks = _dereq_(188); +var _TextTracks = _dereq_(190); var _TextTracks2 = _interopRequireDefault(_TextTracks); -var _utilsVTTParser = _dereq_(203); +var _utilsVTTParser = _dereq_(205); var _utilsVTTParser2 = _interopRequireDefault(_utilsVTTParser); -var _utilsTTMLParser = _dereq_(201); +var _utilsTTMLParser = _dereq_(203); var _utilsTTMLParser2 = _interopRequireDefault(_utilsTTMLParser); +var _coreEventBus = _dereq_(50); + +var _coreEventBus2 = _interopRequireDefault(_coreEventBus); + +var _coreEventsEvents = _dereq_(54); + +var _coreEventsEvents2 = _interopRequireDefault(_coreEventsEvents); + function TextController() { var context = this.context; var instance = undefined; var textSourceBuffer = undefined; - var allTracksAreDisabled = undefined, - errHandler = undefined, + var errHandler = undefined, dashManifestModel = undefined, manifestModel = undefined, mediaController = undefined, @@ -46231,16 +46716,27 @@ function TextController() { streamController = undefined, textTracks = undefined, vttParser = undefined, - ttmlParser = undefined; + ttmlParser = undefined, + eventBus = undefined, + defaultLanguage = undefined, + lastEnabledIndex = undefined, + textDefaultEnabled = undefined, + // this is used for default settings (each time a file is loaded, we check value of this settings ) + allTracksAreDisabled = undefined; // this is used for one session (when a file has been loaded, we use this settings to enable/disable text) function setup() { + defaultLanguage = ''; + lastEnabledIndex = -1; + textDefaultEnabled = true; textTracks = (0, _TextTracks2['default'])(context).getInstance(); vttParser = (0, _utilsVTTParser2['default'])(context).getInstance(); ttmlParser = (0, _utilsTTMLParser2['default'])(context).getInstance(); textSourceBuffer = (0, _TextSourceBuffer2['default'])(context).getInstance(); + eventBus = (0, _coreEventBus2['default'])(context).getInstance(); textTracks.initialize(); + eventBus.on(_coreEventsEvents2['default'].TEXT_TRACKS_QUEUE_INITIALIZED, onTextTracksAdded, instance); resetInitialSettings(); } @@ -46303,6 +46799,79 @@ function TextController() { textSourceBuffer.addEmbeddedTrack(mediaInfo); } + function setTextDefaultLanguage(lang) { + if (typeof lang !== 'string') { + return; + } + + defaultLanguage = lang; + } + + function getTextDefaultLanguage() { + return defaultLanguage; + } + + function onTextTracksAdded(e) { + var tracks = e.tracks; + var index = e.index; + // find track corresponding to default subtitle and apply it + var defaultLanguageIndex = tracks.findIndex(function (item) { + return item.lang === defaultLanguage; + }); + + if (defaultLanguageIndex !== -1) { + this.setTextTrack(defaultLanguageIndex); + index = defaultLanguageIndex; + } + + if (!textDefaultEnabled) { + // disable text at startup + this.setTextTrack(-1); + } + + lastEnabledIndex = index; + eventBus.trigger(_coreEventsEvents2['default'].TEXT_TRACKS_ADDED, { + enabled: !allTracksAreDisabled, + index: index, + tracks: tracks + }); + } + + function setTextDefaultEnabled(enable) { + if (typeof enable !== 'boolean') { + return; + } + textDefaultEnabled = enable; + } + + function getTextDefaultEnabled() { + return textDefaultEnabled; + } + + function enableText(enable) { + if (typeof enable !== 'boolean') { + return; + } + var isTextEnabled = !allTracksAreDisabled; + if (isTextEnabled !== enable) { + // change track selection + if (enable) { + // apply last enabled tractk + this.setTextTrack(lastEnabledIndex); + } + + if (!enable) { + // keep last index and disable text track + lastEnabledIndex = this.getCurrentTrackIdx(); + this.setTextTrack(-1); + } + } + } + + function isTextEnabled() { + return !allTracksAreDisabled; + } + function setTextTrack(idx) { //For external time text file, the only action needed to change a track is marking the track mode to showing. // Fragmented text tracks need the additional step of calling TextController.setTextTrack(); @@ -46326,6 +46895,8 @@ function TextController() { var currentFragTrack = mediaController.getCurrentTrackFor(_constantsConstants2['default'].FRAGMENTED_TEXT, streamController.getActiveStreamInfo()); if (mediaInfo !== currentFragTrack) { fragmentModel.abortRequests(); + fragmentModel.removeExecutedRequestsBeforeTime(); + textSourceBuffer.remove(); textTracks.deleteCuesFromTrackIdx(oldTrackIdx); mediaController.setTrack(mediaInfo); textSourceBuffer.setCurrentFragmentedTrackIdx(i); @@ -46339,7 +46910,6 @@ function TextController() { } function getCurrentTrackIdx() { - var textTracks = textSourceBuffer.getConfig().textTracks; return textTracks.getCurrentTrackIdx(); } @@ -46357,6 +46927,12 @@ function TextController() { getTextSourceBuffer: getTextSourceBuffer, getAllTracksAreDisabled: getAllTracksAreDisabled, addEmbeddedTrack: addEmbeddedTrack, + getTextDefaultLanguage: getTextDefaultLanguage, + setTextDefaultLanguage: setTextDefaultLanguage, + setTextDefaultEnabled: setTextDefaultEnabled, + getTextDefaultEnabled: getTextDefaultEnabled, + enableText: enableText, + isTextEnabled: isTextEnabled, setTextTrack: setTextTrack, getCurrentTrackIdx: getCurrentTrackIdx, reset: reset @@ -46369,7 +46945,7 @@ TextController.__dashjs_factory_name = 'TextController'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(TextController); module.exports = exports['default']; -},{"100":100,"187":187,"188":188,"201":201,"203":203,"51":51}],187:[function(_dereq_,module,exports){ +},{"100":100,"189":189,"190":190,"203":203,"205":205,"50":50,"51":51,"54":54}],189:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -46412,9 +46988,9 @@ var _constantsConstants = _dereq_(100); var _constantsConstants2 = _interopRequireDefault(_constantsConstants); -var _voMetricsHTTPRequest = _dereq_(224); +var _voMetricsHTTPRequest = _dereq_(226); -var _voTextTrackInfo = _dereq_(218); +var _voTextTrackInfo = _dereq_(220); var _voTextTrackInfo2 = _interopRequireDefault(_voTextTrackInfo); @@ -46422,11 +46998,11 @@ var _dashUtilsFragmentedTextBoxParser = _dereq_(74); var _dashUtilsFragmentedTextBoxParser2 = _interopRequireDefault(_dashUtilsFragmentedTextBoxParser); -var _utilsBoxParser = _dereq_(190); +var _utilsBoxParser = _dereq_(192); var _utilsBoxParser2 = _interopRequireDefault(_utilsBoxParser); -var _utilsCustomTimeRanges = _dereq_(192); +var _utilsCustomTimeRanges = _dereq_(194); var _utilsCustomTimeRanges2 = _interopRequireDefault(_utilsCustomTimeRanges); @@ -46438,11 +47014,11 @@ var _coreDebug = _dereq_(49); var _coreDebug2 = _interopRequireDefault(_coreDebug); -var _TextTracks = _dereq_(188); +var _TextTracks = _dereq_(190); var _TextTracks2 = _interopRequireDefault(_TextTracks); -var _EmbeddedTextHtmlRender = _dereq_(183); +var _EmbeddedTextHtmlRender = _dereq_(185); var _EmbeddedTextHtmlRender2 = _interopRequireDefault(_EmbeddedTextHtmlRender); @@ -46984,6 +47560,15 @@ function TextSourceBuffer() { return parser; } + function remove(start, end) { + //if start and end are not defined, remove all + if (start === undefined && start === end) { + start = this.buffered.start(0); + end = this.buffered.end(this.buffered.length - 1); + } + this.buffered.remove(start, end); + } + instance = { initialize: initialize, append: append, @@ -46992,7 +47577,8 @@ function TextSourceBuffer() { resetEmbedded: resetEmbedded, setConfig: setConfig, getConfig: getConfig, - setCurrentFragmentedTrackIdx: setCurrentFragmentedTrackIdx + setCurrentFragmentedTrackIdx: setCurrentFragmentedTrackIdx, + remove: remove }; return instance; @@ -47002,7 +47588,7 @@ TextSourceBuffer.__dashjs_factory_name = 'TextSourceBuffer'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(TextSourceBuffer); module.exports = exports['default']; -},{"100":100,"11":11,"183":183,"188":188,"190":190,"192":192,"2":2,"218":218,"224":224,"49":49,"50":50,"51":51,"54":54,"74":74}],188:[function(_dereq_,module,exports){ +},{"100":100,"11":11,"185":185,"190":190,"192":192,"194":194,"2":2,"220":220,"226":226,"49":49,"50":50,"51":51,"54":54,"74":74}],190:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -47128,6 +47714,8 @@ function TextTracks() { var kind = textTrackQueue[i].kind; var label = textTrackQueue[i].label !== undefined ? textTrackQueue[i].label : textTrackQueue[i].lang; var lang = textTrackQueue[i].lang; + var isTTML = textTrackQueue[i].isTTML; + var isEmbedded = textTrackQueue[i].isEmbedded; var track = isChrome ? document.createElement('track') : videoModel.addTextTrack(kind, label, lang); if (isChrome) { @@ -47136,6 +47724,9 @@ function TextTracks() { track.srclang = lang; } + track.isEmbedded = isEmbedded; + track.isTTML = isTTML; + return track; } @@ -47204,7 +47795,7 @@ function TextTracks() { } } - eventBus.trigger(_coreEventsEvents2['default'].TEXT_TRACKS_ADDED, { + eventBus.trigger(_coreEventsEvents2['default'].TEXT_TRACKS_QUEUE_INITIALIZED, { index: currentTrackIdx, tracks: textTrackQueue }); //send default idx. @@ -47234,15 +47825,13 @@ function TextTracks() { if (videoPictureAspect > aspectRatio) { videoPictureHeightAspect = videoPictureHeight; - videoPictureWidthAspect = videoPictureHeight / (1 / aspectRatio); - videoPictureXAspect = (viewWidth - videoPictureWidthAspect) / 2; - videoPictureYAspect = 0; + videoPictureWidthAspect = videoPictureHeight * aspectRatio; } else { videoPictureWidthAspect = videoPictureWidth; videoPictureHeightAspect = videoPictureWidth / aspectRatio; - videoPictureXAspect = 0; - videoPictureYAspect = (viewHeight - videoPictureHeightAspect) / 2; } + videoPictureXAspect = (viewWidth - videoPictureWidthAspect) / 2; + videoPictureYAspect = (viewHeight - videoPictureHeightAspect) / 2; if (use80Percent) { return { @@ -47266,7 +47855,9 @@ function TextTracks() { var clientHeight = videoModel.getClientHeight(); var videoWidth = videoModel.getVideoWidth(); var videoHeight = videoModel.getVideoHeight(); - var aspectRatio = clientWidth / clientHeight; + var videoOffsetTop = videoModel.getVideoRelativeOffsetTop(); + var videoOffsetLeft = videoModel.getVideoRelativeOffsetLeft(); + var aspectRatio = videoWidth / videoHeight; var use80Percent = false; if (track.isFromCEA608) { // If this is CEA608 then use predefined aspect ratio @@ -47278,10 +47869,12 @@ function TextTracks() { var newVideoWidth = realVideoSize.w; var newVideoHeight = realVideoSize.h; + var newVideoLeft = realVideoSize.x; + var newVideoTop = realVideoSize.y; - if (newVideoWidth != actualVideoWidth || newVideoHeight != actualVideoHeight) { - actualVideoLeft = realVideoSize.x; - actualVideoTop = realVideoSize.y; + if (newVideoWidth != actualVideoWidth || newVideoHeight != actualVideoHeight || newVideoLeft != actualVideoLeft || newVideoTop != actualVideoTop) { + actualVideoLeft = newVideoLeft + videoOffsetLeft; + actualVideoTop = newVideoTop + videoOffsetTop; actualVideoWidth = newVideoWidth; actualVideoHeight = newVideoHeight; captionContainer.style.left = actualVideoLeft + 'px'; @@ -47371,6 +47964,38 @@ function TextTracks() { } } } + + if (activeCue.isd) { + var htmlCaptionDiv = document.getElementById(activeCue.cueID); + if (htmlCaptionDiv) { + captionContainer.removeChild(htmlCaptionDiv); + renderCaption(activeCue); + } + } + } + + function renderCaption(cue) { + var finalCue = document.createElement('div'); + captionContainer.appendChild(finalCue); + (0, _imsc.renderHTML)(cue.isd, finalCue, function (uri) { + var imsc1ImgUrnTester = /^(urn:)(mpeg:[a-z0-9][a-z0-9-]{0,31}:)(subs:)([0-9])$/; + var smpteImgUrnTester = /^#(.*)$/; + if (imsc1ImgUrnTester.test(uri)) { + var match = imsc1ImgUrnTester.exec(uri); + var imageId = parseInt(match[4], 10) - 1; + var imageData = btoa(cue.images[imageId]); + var dataUrl = 'data:image/png;base64,' + imageData; + return dataUrl; + } else if (smpteImgUrnTester.test(uri)) { + var match = smpteImgUrnTester.exec(uri); + var imageId = match[1]; + var dataUrl = 'data:image/png;base64,' + cue.embeddedImages[imageId]; + return dataUrl; + } else { + return null; + } + }, captionContainer.clientHeight, captionContainer.clientWidth); + finalCue.id = cue.cueID; } /* @@ -47388,7 +48013,7 @@ function TextTracks() { return; } - var _loop = function (item) { + for (var item in captionData) { var cue = undefined; var currentItem = captionData[item]; @@ -47417,28 +48042,8 @@ function TextTracks() { cue.onenter = function () { if (track.mode === _constantsConstants2['default'].TEXT_SHOWING) { if (this.isd) { - var finalCue = document.createElement('div'); + renderCaption(this); log('Cue enter id:' + this.cueID); - captionContainer.appendChild(finalCue); - (0, _imsc.renderHTML)(this.isd, finalCue, function (uri) { - var imsc1ImgUrnTester = /^(urn:)(mpeg:[a-z0-9][a-z0-9-]{0,31}:)(subs:)([0-9])$/; - var smpteImgUrnTester = /^#(.*)$/; - if (imsc1ImgUrnTester.test(uri)) { - var match = imsc1ImgUrnTester.exec(uri); - var imageId = parseInt(match[4], 10) - 1; - var imageData = btoa(cue.images[imageId]); - var dataUrl = 'data:image/png;base64,' + imageData; - return dataUrl; - } else if (smpteImgUrnTester.test(uri)) { - var match = smpteImgUrnTester.exec(uri); - var imageId = match[1]; - var dataUrl = 'data:image/png;base64,' + cue.embeddedImages[imageId]; - return dataUrl; - } else { - return null; - } - }, captionContainer.clientHeight, captionContainer.clientWidth); - finalCue.id = this.cueID; } else { captionContainer.appendChild(this.cueHTMLElement); scaleCue.call(self, this); @@ -47474,15 +48079,11 @@ function TextTracks() { } track.addCue(cue); - }; - - for (var item in captionData) { - _loop(item); } } function getTrackByIdx(idx) { - return idx >= 0 && textTrackQueue[idx] ? videoModel.getTextTrack(textTrackQueue[idx].kind, textTrackQueue[idx].label, textTrackQueue[idx].lang) : null; + return idx >= 0 && textTrackQueue[idx] ? videoModel.getTextTrack(textTrackQueue[idx].kind, textTrackQueue[idx].label, textTrackQueue[idx].lang, textTrackQueue[idx].isTTML, textTrackQueue[idx].isEmbedded) : null; } function getCurrentTrackIdx() { @@ -47667,7 +48268,7 @@ TextTracks.__dashjs_factory_name = 'TextTracks'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(TextTracks); module.exports = exports['default']; -},{"100":100,"21":21,"49":49,"50":50,"51":51,"54":54}],189:[function(_dereq_,module,exports){ +},{"100":100,"21":21,"49":49,"50":50,"51":51,"54":54}],191:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -47715,15 +48316,15 @@ var _coreEventsEvents = _dereq_(54); var _coreEventsEvents2 = _interopRequireDefault(_coreEventsEvents); -var _controllersBlacklistController = _dereq_(104); +var _controllersBlacklistController = _dereq_(105); var _controllersBlacklistController2 = _interopRequireDefault(_controllersBlacklistController); -var _baseUrlResolutionDVBSelector = _dereq_(205); +var _baseUrlResolutionDVBSelector = _dereq_(207); var _baseUrlResolutionDVBSelector2 = _interopRequireDefault(_baseUrlResolutionDVBSelector); -var _baseUrlResolutionBasicSelector = _dereq_(204); +var _baseUrlResolutionBasicSelector = _dereq_(206); var _baseUrlResolutionBasicSelector2 = _interopRequireDefault(_baseUrlResolutionBasicSelector); @@ -47837,7 +48438,7 @@ _coreFactoryMaker2['default'].updateClassFactory(BaseURLSelector.__dashjs_factor exports['default'] = factory; module.exports = exports['default']; -},{"104":104,"204":204,"205":205,"50":50,"51":51,"54":54}],190:[function(_dereq_,module,exports){ +},{"105":105,"206":206,"207":207,"50":50,"51":51,"54":54}],192:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -47877,7 +48478,7 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _IsoFile = _dereq_(197); +var _IsoFile = _dereq_(199); var _IsoFile2 = _interopRequireDefault(_IsoFile); @@ -47924,7 +48525,7 @@ BoxParser.__dashjs_factory_name = 'BoxParser'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(BoxParser); module.exports = exports['default']; -},{"11":11,"197":197,"51":51}],191:[function(_dereq_,module,exports){ +},{"11":11,"199":199,"51":51}],193:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -48024,7 +48625,7 @@ Capabilities.__dashjs_factory_name = 'Capabilities'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(Capabilities); module.exports = exports['default']; -},{"51":51}],192:[function(_dereq_,module,exports){ +},{"51":51}],194:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -48203,7 +48804,7 @@ CustomTimeRanges.__dashjs_factory_name = 'CustomTimeRanges'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(CustomTimeRanges); module.exports = exports['default']; -},{"51":51}],193:[function(_dereq_,module,exports){ +},{"51":51}],195:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -48262,6 +48863,7 @@ var LAST_MEDIA_SETTINGS = 'LastMediaSettings'; function DOMStorage(config) { + config = config || {}; var context = this.context; var log = (0, _coreDebug2['default'])(context).getInstance().log; var mediaPlayerModel = config.mediaPlayerModel; @@ -48432,7 +49034,7 @@ var factory = _coreFactoryMaker2['default'].getSingletonFactory(DOMStorage); exports['default'] = factory; module.exports = exports['default']; -},{"49":49,"51":51}],194:[function(_dereq_,module,exports){ +},{"49":49,"51":51}],196:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { @@ -48453,6 +49055,7 @@ var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); */ function EBMLParser(config) { + config = config || {}; var instance = undefined; var data = new DataView(config.data); @@ -48712,7 +49315,7 @@ EBMLParser.__dashjs_factory_name = 'EBMLParser'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(EBMLParser); module.exports = exports['default']; -},{"51":51}],195:[function(_dereq_,module,exports){ +},{"51":51}],197:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -48850,7 +49453,7 @@ _coreFactoryMaker2['default'].updateSingletonFactory(ErrorHandler.__dashjs_facto exports['default'] = factory; module.exports = exports['default']; -},{"50":50,"51":51,"54":54}],196:[function(_dereq_,module,exports){ +},{"50":50,"51":51,"54":54}],198:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -48935,7 +49538,7 @@ InitCache.__dashjs_factory_name = 'InitCache'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(InitCache); module.exports = exports['default']; -},{"51":51}],197:[function(_dereq_,module,exports){ +},{"51":51}],199:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -48975,7 +49578,7 @@ Object.defineProperty(exports, '__esModule', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } -var _voIsoBox = _dereq_(211); +var _voIsoBox = _dereq_(213); var _voIsoBox2 = _interopRequireDefault(_voIsoBox); @@ -49071,7 +49674,7 @@ IsoFile.__dashjs_factory_name = 'IsoFile'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(IsoFile); module.exports = exports['default']; -},{"211":211,"51":51}],198:[function(_dereq_,module,exports){ +},{"213":213,"51":51}],200:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -49121,6 +49724,7 @@ var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); */ function LiveEdgeFinder(config) { + config = config || {}; var instance = undefined; var timelineConverter = config.timelineConverter; var streamProcessor = config.streamProcessor; @@ -49159,7 +49763,7 @@ LiveEdgeFinder.__dashjs_factory_name = 'LiveEdgeFinder'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(LiveEdgeFinder); module.exports = exports['default']; -},{"51":51}],199:[function(_dereq_,module,exports){ +},{"51":51}],201:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -49238,7 +49842,7 @@ ObjectUtils.__dashjs_factory_name = 'ObjectUtils'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(ObjectUtils); module.exports = exports['default']; -},{"13":13,"51":51}],200:[function(_dereq_,module,exports){ +},{"13":13,"51":51}],202:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -49306,7 +49910,7 @@ RequestModifier.__dashjs_factory_name = 'RequestModifier'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(RequestModifier); module.exports = exports['default']; -},{"51":51}],201:[function(_dereq_,module,exports){ +},{"51":51}],203:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -49481,7 +50085,7 @@ TTMLParser.__dashjs_factory_name = 'TTMLParser'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(TTMLParser); module.exports = exports['default']; -},{"21":21,"49":49,"51":51}],202:[function(_dereq_,module,exports){ +},{"21":21,"49":49,"51":51}],204:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -49761,7 +50365,7 @@ URLUtils.__dashjs_factory_name = 'URLUtils'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(URLUtils); module.exports = exports['default']; -},{"51":51}],203:[function(_dereq_,module,exports){ +},{"51":51}],205:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -49970,7 +50574,7 @@ VTTParser.__dashjs_factory_name = 'VTTParser'; exports['default'] = _coreFactoryMaker2['default'].getSingletonFactory(VTTParser); module.exports = exports['default']; -},{"49":49,"51":51}],204:[function(_dereq_,module,exports){ +},{"49":49,"51":51}],206:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -50016,6 +50620,7 @@ var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); function BasicSelector(config) { + config = config || {}; var instance = undefined; var blacklistController = config.blacklistController; @@ -50046,7 +50651,7 @@ BasicSelector.__dashjs_factory_name = 'BasicSelector'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(BasicSelector); module.exports = exports['default']; -},{"51":51}],205:[function(_dereq_,module,exports){ +},{"51":51}],207:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -50091,6 +50696,7 @@ var _coreFactoryMaker2 = _interopRequireDefault(_coreFactoryMaker); function DVBSelector(config) { + config = config || {}; var instance = undefined; var blacklistController = config.blacklistController; @@ -50198,7 +50804,7 @@ DVBSelector.__dashjs_factory_name = 'DVBSelector'; exports['default'] = _coreFactoryMaker2['default'].getClassFactory(DVBSelector); module.exports = exports['default']; -},{"51":51}],206:[function(_dereq_,module,exports){ +},{"51":51}],208:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -50255,7 +50861,7 @@ var BitrateInfo = function BitrateInfo() { exports["default"] = BitrateInfo; module.exports = exports["default"]; -},{}],207:[function(_dereq_,module,exports){ +},{}],209:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -50309,7 +50915,7 @@ var DashJSError = function DashJSError(code, message, data) { exports["default"] = DashJSError; module.exports = exports["default"]; -},{}],208:[function(_dereq_,module,exports){ +},{}],210:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -50373,7 +50979,7 @@ function DataChunk() { exports["default"] = DataChunk; module.exports = exports["default"]; -},{}],209:[function(_dereq_,module,exports){ +},{}],211:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -50450,7 +51056,7 @@ FragmentRequest.ACTION_COMPLETE = 'complete'; exports['default'] = FragmentRequest; module.exports = exports['default']; -},{}],210:[function(_dereq_,module,exports){ +},{}],212:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -50499,7 +51105,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -var _FragmentRequest2 = _dereq_(209); +var _FragmentRequest2 = _dereq_(211); var _FragmentRequest3 = _interopRequireDefault(_FragmentRequest2); @@ -50520,7 +51126,7 @@ var HeadRequest = (function (_FragmentRequest) { exports['default'] = HeadRequest; module.exports = exports['default']; -},{"209":209}],211:[function(_dereq_,module,exports){ +},{"211":211}],213:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -50679,7 +51285,7 @@ var IsoBox = (function () { exports['default'] = IsoBox; module.exports = exports['default']; -},{}],212:[function(_dereq_,module,exports){ +},{}],214:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -50737,7 +51343,7 @@ var ManifestInfo = function ManifestInfo() { exports["default"] = ManifestInfo; module.exports = exports["default"]; -},{}],213:[function(_dereq_,module,exports){ +},{}],215:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -50804,7 +51410,7 @@ var MediaInfo = function MediaInfo() { exports["default"] = MediaInfo; module.exports = exports["default"]; -},{}],214:[function(_dereq_,module,exports){ +},{}],216:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -50867,7 +51473,7 @@ var MetricsList = function MetricsList() { exports["default"] = MetricsList; module.exports = exports["default"]; -},{}],215:[function(_dereq_,module,exports){ +},{}],217:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -50924,7 +51530,7 @@ var RepresentationInfo = function RepresentationInfo() { exports["default"] = RepresentationInfo; module.exports = exports["default"]; -},{}],216:[function(_dereq_,module,exports){ +},{}],218:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -50981,7 +51587,7 @@ var StreamInfo = function StreamInfo() { exports["default"] = StreamInfo; module.exports = exports["default"]; -},{}],217:[function(_dereq_,module,exports){ +},{}],219:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -51034,7 +51640,7 @@ var _constantsConstants = _dereq_(100); var _constantsConstants2 = _interopRequireDefault(_constantsConstants); -var _FragmentRequest2 = _dereq_(209); +var _FragmentRequest2 = _dereq_(211); var _FragmentRequest3 = _interopRequireDefault(_FragmentRequest2); @@ -51057,7 +51663,7 @@ var TextRequest = (function (_FragmentRequest) { exports['default'] = TextRequest; module.exports = exports['default']; -},{"100":100,"209":209}],218:[function(_dereq_,module,exports){ +},{"100":100,"211":211}],220:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -51115,7 +51721,7 @@ var TextTrackInfo = function TextTrackInfo() { exports["default"] = TextTrackInfo; module.exports = exports["default"]; -},{}],219:[function(_dereq_,module,exports){ +},{}],221:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -51187,7 +51793,7 @@ exports["default"] = URIFragmentData; */ module.exports = exports["default"]; -},{}],220:[function(_dereq_,module,exports){ +},{}],222:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -51254,7 +51860,7 @@ function BufferLevel() { exports["default"] = BufferLevel; module.exports = exports["default"]; -},{}],221:[function(_dereq_,module,exports){ +},{}],223:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -51295,7 +51901,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'd function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -var _controllersBufferController = _dereq_(105); +var _controllersBufferController = _dereq_(106); var _controllersBufferController2 = _interopRequireDefault(_controllersBufferController); @@ -51325,7 +51931,7 @@ function BufferState() { exports['default'] = BufferState; module.exports = exports['default']; -},{"105":105}],222:[function(_dereq_,module,exports){ +},{"106":106}],224:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -51395,7 +52001,7 @@ function DVRInfo() { exports["default"] = DVRInfo; module.exports = exports["default"]; -},{}],223:[function(_dereq_,module,exports){ +},{}],225:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -51459,7 +52065,7 @@ function DroppedFrames() { exports["default"] = DroppedFrames; module.exports = exports["default"]; -},{}],224:[function(_dereq_,module,exports){ +},{}],226:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -51638,7 +52244,7 @@ HTTPRequest.OTHER_TYPE = 'other'; exports.HTTPRequest = HTTPRequest; exports.HTTPRequestTrace = HTTPRequestTrace; -},{}],225:[function(_dereq_,module,exports){ +},{}],227:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -51836,7 +52442,7 @@ exports.ManifestUpdate = ManifestUpdate; exports.ManifestUpdateStreamInfo = ManifestUpdateStreamInfo; exports.ManifestUpdateRepresentationInfo = ManifestUpdateRepresentationInfo; -},{}],226:[function(_dereq_,module,exports){ +},{}],228:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -51996,7 +52602,7 @@ PlayListTrace.FAILURE_STOP_REASON = 'failure'; exports.PlayList = PlayList; exports.PlayListTrace = PlayListTrace; -},{}],227:[function(_dereq_,module,exports){ +},{}],229:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -52076,7 +52682,7 @@ function RepresentationSwitch() { exports["default"] = RepresentationSwitch; module.exports = exports["default"]; -},{}],228:[function(_dereq_,module,exports){ +},{}],230:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -52141,7 +52747,7 @@ function RequestsQueue() { exports["default"] = RequestsQueue; module.exports = exports["default"]; -},{}],229:[function(_dereq_,module,exports){ +},{}],231:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor @@ -52242,7 +52848,7 @@ function SchedulingInfo() { exports["default"] = SchedulingInfo; module.exports = exports["default"]; -},{}],230:[function(_dereq_,module,exports){ +},{}],232:[function(_dereq_,module,exports){ /** * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and contributor diff --git a/dist/dash.all.debug.js.map b/dist/dash.all.debug.js.map index e8ec20a23c..b19d4b8419 100644 --- a/dist/dash.all.debug.js.map +++ b/dist/dash.all.debug.js.map @@ -1,240 +1,242 @@ { "version": 3, "sources": [ - "node_modules/browser-pack/_prelude.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/externals/base64.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/externals/cea608-parser.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/externals/objectiron.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/externals/xml2json.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/index.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/index_mediaplayerOnly.js", - "node_modules/base64-js/lib/b64.js", - "node_modules/browser-resolve/empty.js", - "node_modules/browserify/node_modules/string_decoder/index.js", - "node_modules/buffer/index.js", - "node_modules/codem-isoboxer/dist/iso_boxer.js", - "node_modules/core-util-is/lib/util.js", - "node_modules/deep-equal/index.js", - "node_modules/deep-equal/lib/is_arguments.js", - "node_modules/deep-equal/lib/keys.js", - "node_modules/events/events.js", - "node_modules/ieee754/index.js", - "node_modules/imsc/src/main/js/doc.js", - "node_modules/imsc/src/main/js/html.js", - "node_modules/imsc/src/main/js/isd.js", - "node_modules/imsc/src/main/js/main.js", - "node_modules/imsc/src/main/js/names.js", - "node_modules/imsc/src/main/js/styles.js", - "node_modules/imsc/src/main/js/utils.js", - "node_modules/inherits/inherits_browser.js", - "node_modules/is-buffer/index.js", - "node_modules/isarray/index.js", - "node_modules/process-nextick-args/index.js", - "node_modules/process/browser.js", - "node_modules/readable-stream/duplex-browser.js", - "node_modules/readable-stream/lib/_stream_duplex.js", - "node_modules/readable-stream/lib/_stream_passthrough.js", - "node_modules/readable-stream/lib/_stream_readable.js", - "node_modules/readable-stream/lib/_stream_transform.js", - "node_modules/readable-stream/lib/_stream_writable.js", - "node_modules/readable-stream/lib/internal/streams/BufferList.js", - "node_modules/readable-stream/lib/internal/streams/destroy.js", - "node_modules/readable-stream/lib/internal/streams/stream-browser.js", - "node_modules/readable-stream/passthrough.js", - "node_modules/readable-stream/readable-browser.js", - "node_modules/readable-stream/transform.js", - "node_modules/readable-stream/writable-browser.js", - "node_modules/round10/round10.js", - "node_modules/safe-buffer/index.js", - "node_modules/sax/lib/sax.js", - "node_modules/stream-browserify/index.js", - "node_modules/string_decoder/lib/string_decoder.js", - "node_modules/util-deprecate/browser.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/core/Debug.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/core/EventBus.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/core/FactoryMaker.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/core/Version.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/core/events/CoreEvents.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/core/events/Events.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/core/events/EventsBase.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/DashAdapter.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/DashHandler.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/DashMetrics.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/SegmentBaseLoader.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/WebmSegmentBaseLoader.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/constants/DashConstants.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/controllers/RepresentationController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/models/DashManifestModel.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/parser/DashParser.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/parser/maps/CommonProperty.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/parser/maps/MapNode.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/parser/maps/RepresentationBaseValuesMap.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/parser/maps/SegmentValuesMap.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/parser/matchers/BaseMatcher.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/parser/matchers/DateTimeMatcher.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/parser/matchers/DurationMatcher.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/parser/matchers/NumericMatcher.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/parser/matchers/StringMatcher.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/utils/FragmentedTextBoxParser.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/utils/ListSegmentsGetter.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/utils/SegmentsGetter.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/utils/SegmentsUtils.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/utils/TemplateSegmentsGetter.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/utils/TimelineConverter.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/utils/TimelineSegmentsGetter.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/vo/AdaptationSet.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/vo/BaseURL.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/vo/Event.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/vo/EventStream.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/vo/Mpd.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/vo/Period.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/vo/Representation.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/vo/Segment.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/dash/vo/UTCTiming.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/FragmentLoader.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/ManifestLoader.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/ManifestUpdater.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/MediaPlayer.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/MediaPlayerEvents.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/MediaPlayerFactory.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/Stream.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/StreamProcessor.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/XHRLoader.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/XlinkLoader.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/constants/Constants.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/constants/MetricsConstants.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/controllers/AbrController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/controllers/BaseURLController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/controllers/BlacklistController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/controllers/BufferController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/controllers/EventController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/controllers/FragmentController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/controllers/MediaController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/controllers/MediaSourceController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/controllers/PlaybackController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/controllers/ScheduleController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/controllers/SourceBufferController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/controllers/StreamController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/controllers/TimeSyncController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/controllers/XlinkController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/MetricsReporting.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/MetricsReportingEvents.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/controllers/MetricsCollectionController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/controllers/MetricsController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/controllers/MetricsHandlersController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/controllers/RangeController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/controllers/ReportingController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/metrics/MetricsHandlerFactory.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/metrics/handlers/BufferLevelHandler.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/metrics/handlers/DVBErrorsHandler.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/metrics/handlers/GenericMetricHandler.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/metrics/handlers/HttpListHandler.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/reporting/ReportingFactory.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/reporting/reporters/DVBReporting.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/utils/DVBErrorsTranslator.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/utils/HandlerHelpers.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/utils/ManifestParsing.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/utils/MetricSerialiser.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/utils/RNG.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/vo/DVBErrors.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/vo/Metrics.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/vo/Range.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/metrics/vo/Reporting.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/models/BaseURLTreeModel.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/models/FragmentModel.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/models/ManifestModel.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/models/MediaPlayerModel.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/models/MetricsModel.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/models/URIQueryAndFragmentModel.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/models/VideoModel.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/CommonEncryption.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/Protection.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/ProtectionEvents.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/controllers/ProtectionController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/controllers/ProtectionKeyController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/drm/KeySystemClearKey.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/drm/KeySystemPlayReady.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/drm/KeySystemWidevine.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/models/ProtectionModel_01b.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/models/ProtectionModel_21Jan2015.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/models/ProtectionModel_3Feb2014.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/servers/ClearKey.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/servers/DRMToday.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/servers/PlayReady.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/servers/Widevine.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/vo/ClearKeyKeySet.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/vo/KeyError.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/vo/KeyMessage.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/vo/KeyPair.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/vo/KeySystemAccess.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/vo/KeySystemConfiguration.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/vo/MediaCapability.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/protection/vo/NeedKey.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/rules/DroppedFramesHistory.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/rules/RulesContext.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/rules/SwitchRequest.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/rules/SwitchRequestHistory.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/rules/ThroughputHistory.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/rules/abr/ABRRulesCollection.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/rules/abr/AbandonRequestsRule.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/rules/abr/BolaRule.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/rules/abr/DroppedFramesRule.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/rules/abr/InsufficientBufferRule.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/rules/abr/SwitchHistoryRule.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/rules/abr/ThroughputRule.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/rules/scheduling/BufferLevelRule.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/rules/scheduling/NextFragmentRequestRule.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/text/EmbeddedTextHtmlRender.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/text/NotFragmentedTextBufferController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/text/TextBufferController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/text/TextController.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/text/TextSourceBuffer.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/text/TextTracks.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/BaseURLSelector.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/BoxParser.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/Capabilities.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/CustomTimeRanges.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/DOMStorage.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/EBMLParser.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/ErrorHandler.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/InitCache.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/IsoFile.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/LiveEdgeFinder.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/ObjectUtils.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/RequestModifier.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/TTMLParser.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/URLUtils.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/VTTParser.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/baseUrlResolution/BasicSelector.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/utils/baseUrlResolution/DVBSelector.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/BitrateInfo.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/DashJSError.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/DataChunk.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/FragmentRequest.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/HeadRequest.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/IsoBox.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/ManifestInfo.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/MediaInfo.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/MetricsList.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/RepresentationInfo.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/StreamInfo.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/TextRequest.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/TextTrackInfo.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/URIFragmentData.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/metrics/BufferLevel.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/metrics/BufferState.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/metrics/DVRInfo.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/metrics/DroppedFrames.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/metrics/HTTPRequest.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/metrics/ManifestUpdate.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/metrics/PlayList.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/metrics/RepresentationSwitch.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/metrics/RequestsQueue.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/metrics/SchedulingInfo.js", - "/Users/joliva/epicLabsRepo/dashif/dashjsrepo/dash.js/src/streaming/vo/metrics/TCPConnection.js" + "../node_modules/browser-pack/_prelude.js", + "../externals/base64.js", + "../externals/cea608-parser.js", + "../externals/objectiron.js", + "../externals/xml2json.js", + "../index.js", + "../index_mediaplayerOnly.js", + "../node_modules/base64-js/lib/b64.js", + "../node_modules/browser-resolve/empty.js", + "../node_modules/browserify/node_modules/string_decoder/index.js", + "../node_modules/buffer/index.js", + "../node_modules/codem-isoboxer/dist/iso_boxer.js", + "../node_modules/core-util-is/lib/util.js", + "../node_modules/deep-equal/index.js", + "../node_modules/deep-equal/lib/is_arguments.js", + "../node_modules/deep-equal/lib/keys.js", + "../node_modules/events/events.js", + "../node_modules/ieee754/index.js", + "../node_modules/imsc/src/main/js/doc.js", + "../node_modules/imsc/src/main/js/html.js", + "../node_modules/imsc/src/main/js/isd.js", + "../node_modules/imsc/src/main/js/main.js", + "../node_modules/imsc/src/main/js/names.js", + "../node_modules/imsc/src/main/js/styles.js", + "../node_modules/imsc/src/main/js/utils.js", + "../node_modules/inherits/inherits_browser.js", + "../node_modules/is-buffer/index.js", + "../node_modules/isarray/index.js", + "../node_modules/process-nextick-args/index.js", + "../node_modules/process/browser.js", + "../node_modules/readable-stream/duplex-browser.js", + "../node_modules/readable-stream/lib/_stream_duplex.js", + "../node_modules/readable-stream/lib/_stream_passthrough.js", + "../node_modules/readable-stream/lib/_stream_readable.js", + "../node_modules/readable-stream/lib/_stream_transform.js", + "../node_modules/readable-stream/lib/_stream_writable.js", + "../node_modules/readable-stream/lib/internal/streams/BufferList.js", + "../node_modules/readable-stream/lib/internal/streams/destroy.js", + "../node_modules/readable-stream/lib/internal/streams/stream-browser.js", + "../node_modules/readable-stream/passthrough.js", + "../node_modules/readable-stream/readable-browser.js", + "../node_modules/readable-stream/transform.js", + "../node_modules/readable-stream/writable-browser.js", + "../node_modules/round10/round10.js", + "../node_modules/safe-buffer/index.js", + "../node_modules/sax/lib/sax.js", + "../node_modules/stream-browserify/index.js", + "../node_modules/string_decoder/lib/string_decoder.js", + "../node_modules/util-deprecate/browser.js", + "core/Debug.js", + "core/EventBus.js", + "core/FactoryMaker.js", + "core/Version.js", + "core/events/CoreEvents.js", + "core/events/Events.js", + "core/events/EventsBase.js", + "dash/DashAdapter.js", + "dash/DashHandler.js", + "dash/DashMetrics.js", + "dash/SegmentBaseLoader.js", + "dash/WebmSegmentBaseLoader.js", + "dash/constants/DashConstants.js", + "dash/controllers/RepresentationController.js", + "dash/models/DashManifestModel.js", + "dash/parser/DashParser.js", + "dash/parser/maps/CommonProperty.js", + "dash/parser/maps/MapNode.js", + "dash/parser/maps/RepresentationBaseValuesMap.js", + "dash/parser/maps/SegmentValuesMap.js", + "dash/parser/matchers/BaseMatcher.js", + "dash/parser/matchers/DateTimeMatcher.js", + "dash/parser/matchers/DurationMatcher.js", + "dash/parser/matchers/NumericMatcher.js", + "dash/parser/matchers/StringMatcher.js", + "dash/utils/FragmentedTextBoxParser.js", + "dash/utils/ListSegmentsGetter.js", + "dash/utils/SegmentsGetter.js", + "dash/utils/SegmentsUtils.js", + "dash/utils/TemplateSegmentsGetter.js", + "dash/utils/TimelineConverter.js", + "dash/utils/TimelineSegmentsGetter.js", + "dash/vo/AdaptationSet.js", + "dash/vo/BaseURL.js", + "dash/vo/Event.js", + "dash/vo/EventStream.js", + "dash/vo/Mpd.js", + "dash/vo/Period.js", + "dash/vo/Representation.js", + "dash/vo/Segment.js", + "dash/vo/UTCTiming.js", + "streaming/FragmentLoader.js", + "streaming/ManifestLoader.js", + "streaming/ManifestUpdater.js", + "streaming/MediaPlayer.js", + "streaming/MediaPlayerEvents.js", + "streaming/MediaPlayerFactory.js", + "streaming/Stream.js", + "streaming/StreamProcessor.js", + "streaming/XHRLoader.js", + "streaming/XlinkLoader.js", + "streaming/constants/Constants.js", + "streaming/constants/MetricsConstants.js", + "streaming/constants/ProtectionConstants.js", + "streaming/controllers/AbrController.js", + "streaming/controllers/BaseURLController.js", + "streaming/controllers/BlacklistController.js", + "streaming/controllers/BufferController.js", + "streaming/controllers/EventController.js", + "streaming/controllers/FragmentController.js", + "streaming/controllers/MediaController.js", + "streaming/controllers/MediaSourceController.js", + "streaming/controllers/PlaybackController.js", + "streaming/controllers/ScheduleController.js", + "streaming/controllers/SourceBufferController.js", + "streaming/controllers/StreamController.js", + "streaming/controllers/TimeSyncController.js", + "streaming/controllers/XlinkController.js", + "streaming/metrics/MetricsReporting.js", + "streaming/metrics/MetricsReportingEvents.js", + "streaming/metrics/controllers/MetricsCollectionController.js", + "streaming/metrics/controllers/MetricsController.js", + "streaming/metrics/controllers/MetricsHandlersController.js", + "streaming/metrics/controllers/RangeController.js", + "streaming/metrics/controllers/ReportingController.js", + "streaming/metrics/metrics/MetricsHandlerFactory.js", + "streaming/metrics/metrics/handlers/BufferLevelHandler.js", + "streaming/metrics/metrics/handlers/DVBErrorsHandler.js", + "streaming/metrics/metrics/handlers/GenericMetricHandler.js", + "streaming/metrics/metrics/handlers/HttpListHandler.js", + "streaming/metrics/reporting/ReportingFactory.js", + "streaming/metrics/reporting/reporters/DVBReporting.js", + "streaming/metrics/utils/DVBErrorsTranslator.js", + "streaming/metrics/utils/HandlerHelpers.js", + "streaming/metrics/utils/ManifestParsing.js", + "streaming/metrics/utils/MetricSerialiser.js", + "streaming/metrics/utils/RNG.js", + "streaming/metrics/vo/DVBErrors.js", + "streaming/metrics/vo/Metrics.js", + "streaming/metrics/vo/Range.js", + "streaming/metrics/vo/Reporting.js", + "streaming/models/BaseURLTreeModel.js", + "streaming/models/FragmentModel.js", + "streaming/models/ManifestModel.js", + "streaming/models/MediaPlayerModel.js", + "streaming/models/MetricsModel.js", + "streaming/models/URIQueryAndFragmentModel.js", + "streaming/models/VideoModel.js", + "streaming/protection/CommonEncryption.js", + "streaming/protection/Protection.js", + "streaming/protection/ProtectionEvents.js", + "streaming/protection/controllers/ProtectionController.js", + "streaming/protection/controllers/ProtectionKeyController.js", + "streaming/protection/drm/KeySystemClearKey.js", + "streaming/protection/drm/KeySystemPlayReady.js", + "streaming/protection/drm/KeySystemW3CClearKey.js", + "streaming/protection/drm/KeySystemWidevine.js", + "streaming/protection/models/ProtectionModel_01b.js", + "streaming/protection/models/ProtectionModel_21Jan2015.js", + "streaming/protection/models/ProtectionModel_3Feb2014.js", + "streaming/protection/servers/ClearKey.js", + "streaming/protection/servers/DRMToday.js", + "streaming/protection/servers/PlayReady.js", + "streaming/protection/servers/Widevine.js", + "streaming/protection/vo/ClearKeyKeySet.js", + "streaming/protection/vo/KeyError.js", + "streaming/protection/vo/KeyMessage.js", + "streaming/protection/vo/KeyPair.js", + "streaming/protection/vo/KeySystemAccess.js", + "streaming/protection/vo/KeySystemConfiguration.js", + "streaming/protection/vo/MediaCapability.js", + "streaming/protection/vo/NeedKey.js", + "streaming/rules/DroppedFramesHistory.js", + "streaming/rules/RulesContext.js", + "streaming/rules/SwitchRequest.js", + "streaming/rules/SwitchRequestHistory.js", + "streaming/rules/ThroughputHistory.js", + "streaming/rules/abr/ABRRulesCollection.js", + "streaming/rules/abr/AbandonRequestsRule.js", + "streaming/rules/abr/BolaRule.js", + "streaming/rules/abr/DroppedFramesRule.js", + "streaming/rules/abr/InsufficientBufferRule.js", + "streaming/rules/abr/SwitchHistoryRule.js", + "streaming/rules/abr/ThroughputRule.js", + "streaming/rules/scheduling/BufferLevelRule.js", + "streaming/rules/scheduling/NextFragmentRequestRule.js", + "streaming/text/EmbeddedTextHtmlRender.js", + "streaming/text/NotFragmentedTextBufferController.js", + "streaming/text/TextBufferController.js", + "streaming/text/TextController.js", + "streaming/text/TextSourceBuffer.js", + "streaming/text/TextTracks.js", + "streaming/utils/BaseURLSelector.js", + "streaming/utils/BoxParser.js", + "streaming/utils/Capabilities.js", + "streaming/utils/CustomTimeRanges.js", + "streaming/utils/DOMStorage.js", + "streaming/utils/EBMLParser.js", + "streaming/utils/ErrorHandler.js", + "streaming/utils/InitCache.js", + "streaming/utils/IsoFile.js", + "streaming/utils/LiveEdgeFinder.js", + "streaming/utils/ObjectUtils.js", + "streaming/utils/RequestModifier.js", + "streaming/utils/TTMLParser.js", + "streaming/utils/URLUtils.js", + "streaming/utils/VTTParser.js", + "streaming/utils/baseUrlResolution/BasicSelector.js", + "streaming/utils/baseUrlResolution/DVBSelector.js", + "streaming/vo/BitrateInfo.js", + "streaming/vo/DashJSError.js", + "streaming/vo/DataChunk.js", + "streaming/vo/FragmentRequest.js", + "streaming/vo/HeadRequest.js", + "streaming/vo/IsoBox.js", + "streaming/vo/ManifestInfo.js", + "streaming/vo/MediaInfo.js", + "streaming/vo/MetricsList.js", + "streaming/vo/RepresentationInfo.js", + "streaming/vo/StreamInfo.js", + "streaming/vo/TextRequest.js", + "streaming/vo/TextTrackInfo.js", + "streaming/vo/URIFragmentData.js", + "streaming/vo/metrics/BufferLevel.js", + "streaming/vo/metrics/BufferState.js", + "streaming/vo/metrics/DVRInfo.js", + "streaming/vo/metrics/DroppedFrames.js", + "streaming/vo/metrics/HTTPRequest.js", + "streaming/vo/metrics/ManifestUpdate.js", + "streaming/vo/metrics/PlayList.js", + "streaming/vo/metrics/RepresentationSwitch.js", + "streaming/vo/metrics/RequestsQueue.js", + "streaming/vo/metrics/SchedulingInfo.js", + "streaming/vo/metrics/TCPConnection.js" ], "names": [], - "mappings": "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CX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;;;AAGX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;;;AAGX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,IAA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C,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,IAAK,MAAM,CAAC;;AAElE,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC5B,IAAI,CAAC,MAAM,EAAE;AACT,QAAM,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;CAChC;;AAED,MAAM,CAAC,WAAW,uCAAc,CAAC;AACjC,MAAM,CAAC,YAAY,mCAAe,CAAC;AACnC,MAAM,CAAC,OAAO,GAAG,uCAAkB,CAAC;;qBAErB,MAAM;QACZ,WAAW;QAAE,YAAY;;;;;AChDlC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5HA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC5gDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnoCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrhDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACx0BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvlBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC91BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC9+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACvpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;;ACDA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;;ACDA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACxiDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC/QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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", + "mappings": "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CX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;;;AAGX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;;;AAGX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,IAAI;AACX,YAAI,EAAG,MAAM;AACb,YAAI,EAAG,IAA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AAO,GAAG,AAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,IAAK,MAAM,CAAC;;AAElE,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC5B,IAAI,CAAC,MAAM,EAAE;AACT,QAAM,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;CAChC;;AAED,MAAM,CAAC,WAAW,uCAAc,CAAC;AACjC,MAAM,CAAC,YAAY,mCAAe,CAAC;AACnC,MAAM,CAAC,OAAO,GAAG,uCAAkB,CAAC;;qBAErB,MAAM;QACZ,WAAW;QAAE,YAAY;;;;;AChDlC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5HA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC5gDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnoCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrhDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACx0BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvlBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC91BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC9+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACvpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;;ACDA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;;ACDA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACxiDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC/QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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", "file": "generated.js", "sourceRoot": "", "sourcesContent": [ @@ -243,7 +245,7 @@ "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2015-2016, DASH Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * 2. Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n(function(exports) {\n\n \"use strict\";\n\n /**\n * Exceptions from regular ASCII. CodePoints are mapped to UTF-16 codes\n */\n\n var specialCea608CharsCodes = {\n 0x2a : 0xe1, // lowercase a, acute accent\n 0x5c : 0xe9, // lowercase e, acute accent\n 0x5e : 0xed, // lowercase i, acute accent\n 0x5f : 0xf3, // lowercase o, acute accent\n 0x60 : 0xfa, // lowercase u, acute accent\n 0x7b : 0xe7, // lowercase c with cedilla\n 0x7c : 0xf7, // division symbol\n 0x7d : 0xd1, // uppercase N tilde\n 0x7e : 0xf1, // lowercase n tilde\n 0x7f : 0x2588, // Full block\n // THIS BLOCK INCLUDES THE 16 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x11 AND LOW BETWEEN 0x30 AND 0x3F\n // THIS MEANS THAT \\x50 MUST BE ADDED TO THE VALUES\n 0x80 : 0xae, // Registered symbol (R)\n 0x81 : 0xb0, // degree sign\n 0x82 : 0xbd, // 1/2 symbol\n 0x83 : 0xbf, // Inverted (open) question mark\n 0x84 : 0x2122, // Trademark symbol (TM)\n 0x85 : 0xa2, // Cents symbol\n 0x86 : 0xa3, // Pounds sterling\n 0x87 : 0x266a, // Music 8'th note\n 0x88 : 0xe0, // lowercase a, grave accent\n 0x89 : 0x20, // transparent space (regular)\n 0x8a : 0xe8, // lowercase e, grave accent\n 0x8b : 0xe2, // lowercase a, circumflex accent\n 0x8c : 0xea, // lowercase e, circumflex accent\n 0x8d : 0xee, // lowercase i, circumflex accent\n 0x8e : 0xf4, // lowercase o, circumflex accent\n 0x8f : 0xfb, // lowercase u, circumflex accent\n // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x12 AND LOW BETWEEN 0x20 AND 0x3F\n 0x90 : 0xc1, // capital letter A with acute\n 0x91 : 0xc9, // capital letter E with acute\n 0x92 : 0xd3, // capital letter O with acute\n 0x93 : 0xda, // capital letter U with acute\n 0x94 : 0xdc, // capital letter U with diaresis\n 0x95 : 0xfc, // lowercase letter U with diaeresis\n 0x96 : 0x2018, // opening single quote\n 0x97 : 0xa1, // inverted exclamation mark\n 0x98 : 0x2a, // asterisk\n 0x99 : 0x2019, // closing single quote\n 0x9a : 0x2501, // box drawings heavy horizontal\n 0x9b : 0xa9, // copyright sign\n 0x9c : 0x2120, // Service mark\n 0x9d : 0x2022, // (round) bullet\n 0x9e : 0x201c, // Left double quotation mark\n 0x9f : 0x201d, // Right double quotation mark\n 0xa0 : 0xc0, // uppercase A, grave accent\n 0xa1 : 0xc2, // uppercase A, circumflex\n 0xa2 : 0xc7, // uppercase C with cedilla\n 0xa3 : 0xc8, // uppercase E, grave accent\n 0xa4 : 0xca, // uppercase E, circumflex\n 0xa5 : 0xcb, // capital letter E with diaresis\n 0xa6 : 0xeb, // lowercase letter e with diaresis\n 0xa7 : 0xce, // uppercase I, circumflex\n 0xa8 : 0xcf, // uppercase I, with diaresis\n 0xa9 : 0xef, // lowercase i, with diaresis\n 0xaa : 0xd4, // uppercase O, circumflex\n 0xab : 0xd9, // uppercase U, grave accent\n 0xac : 0xf9, // lowercase u, grave accent\n 0xad : 0xdb, // uppercase U, circumflex\n 0xae : 0xab, // left-pointing double angle quotation mark\n 0xaf : 0xbb, // right-pointing double angle quotation mark\n // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x13 AND LOW BETWEEN 0x20 AND 0x3F\n 0xb0 : 0xc3, // Uppercase A, tilde\n 0xb1 : 0xe3, // Lowercase a, tilde\n 0xb2 : 0xcd, // Uppercase I, acute accent\n 0xb3 : 0xcc, // Uppercase I, grave accent\n 0xb4 : 0xec, // Lowercase i, grave accent\n 0xb5 : 0xd2, // Uppercase O, grave accent\n 0xb6 : 0xf2, // Lowercase o, grave accent\n 0xb7 : 0xd5, // Uppercase O, tilde\n 0xb8 : 0xf5, // Lowercase o, tilde\n 0xb9 : 0x7b, // Open curly brace\n 0xba : 0x7d, // Closing curly brace\n 0xbb : 0x5c, // Backslash\n 0xbc : 0x5e, // Caret\n 0xbd : 0x5f, // Underscore\n 0xbe : 0x7c, // Pipe (vertical line)\n 0xbf : 0x223c, // Tilde operator\n 0xc0 : 0xc4, // Uppercase A, umlaut\n 0xc1 : 0xe4, // Lowercase A, umlaut\n 0xc2 : 0xd6, // Uppercase O, umlaut\n 0xc3 : 0xf6, // Lowercase o, umlaut\n 0xc4 : 0xdf, // Esszett (sharp S)\n 0xc5 : 0xa5, // Yen symbol\n 0xc6 : 0xa4, // Generic currency sign\n 0xc7 : 0x2503, // Box drawings heavy vertical\n 0xc8 : 0xc5, // Uppercase A, ring\n 0xc9 : 0xe5, // Lowercase A, ring\n 0xca : 0xd8, // Uppercase O, stroke\n 0xcb : 0xf8, // Lowercase o, strok\n 0xcc : 0x250f, // Box drawings heavy down and right\n 0xcd : 0x2513, // Box drawings heavy down and left\n 0xce : 0x2517, // Box drawings heavy up and right\n 0xcf : 0x251b // Box drawings heavy up and left\n };\n\n /**\n * Get Unicode Character from CEA-608 byte code\n */\n var getCharForByte = function(byte) {\n var charCode = byte;\n if (specialCea608CharsCodes.hasOwnProperty(byte)) {\n charCode = specialCea608CharsCodes[byte];\n }\n return String.fromCharCode(charCode);\n };\n\n var NR_ROWS = 15,\n NR_COLS = 32;\n // Tables to look up row from PAC data\n var rowsLowCh1 = {0x11 : 1, 0x12 : 3, 0x15 : 5, 0x16 : 7, 0x17 : 9, 0x10 : 11, 0x13 : 12, 0x14 : 14};\n var rowsHighCh1 = {0x11 : 2, 0x12 : 4, 0x15 : 6, 0x16 : 8, 0x17 : 10, 0x13 : 13, 0x14 : 15};\n var rowsLowCh2 = {0x19 : 1, 0x1A : 3, 0x1D : 5, 0x1E : 7, 0x1F : 9, 0x18 : 11, 0x1B : 12, 0x1C : 14};\n var rowsHighCh2 = {0x19 : 2, 0x1A : 4, 0x1D : 6, 0x1E : 8, 0x1F : 10, 0x1B : 13, 0x1C : 15};\n\n var backgroundColors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'black', 'transparent'];\n\n /**\n * Simple logger class to be able to write with time-stamps and filter on level.\n */\n var logger = {\n verboseFilter : {'DATA' : 3, 'DEBUG' : 3, 'INFO' : 2, 'WARNING' : 2, 'TEXT' : 1, 'ERROR' : 0},\n time : null,\n verboseLevel : 0, // Only write errors\n setTime : function(newTime) {\n this.time = newTime;\n },\n log : function(severity, msg) {\n var minLevel = this.verboseFilter[severity];\n if (this.verboseLevel >= minLevel) {\n console.log(this.time + \" [\" + severity + \"] \" + msg);\n }\n }\n };\n\n var numArrayToHexArray = function(numArray) {\n var hexArray = [];\n for (var j = 0; j < numArray.length; j++) {\n hexArray.push(numArray[j].toString(16));\n }\n return hexArray;\n };\n\n /**\n * State of CEA-608 pen or character\n * @constructor\n */\n var PenState = function(foreground, underline, italics, background, flash) {\n this.foreground = foreground || \"white\";\n this.underline = underline || false;\n this.italics = italics || false;\n this.background = background || \"black\";\n this.flash = flash || false;\n };\n\n PenState.prototype = {\n \n reset : function() {\n this.foreground = \"white\";\n this.underline = false;\n this.italics = false;\n this.background = \"black\";\n this.flash = false;\n },\n \n setStyles : function(styles) {\n var attribs = [\"foreground\", \"underline\", \"italics\", \"background\", \"flash\"];\n for (var i = 0 ; i < attribs.length; i++) {\n var style = attribs[i];\n if (styles.hasOwnProperty(style)) {\n this[style] = styles[style];\n }\n }\n },\n \n isDefault : function() {\n return (this.foreground === \"white\" && !this.underline && !this.italics && \n this.background === \"black\" && !this.flash);\n },\n\n equals : function(other) {\n return ( (this.foreground === other.foreground) && \n (this.underline === other.underline) &&\n (this.italics === other.italics) &&\n (this.background === other.background) &&\n (this.flash === other.flash) );\n },\n\n copy : function(newPenState) {\n this.foreground = newPenState.foreground;\n this.underline = newPenState.underline;\n this.italics = newPenState.italics;\n this.background = newPenState.background;\n this.flash = newPenState.flash;\n },\n \n toString: function() {\n return (\"color=\" + this.foreground + \", underline=\" + this.underline + \", italics=\" + this.italics +\n \", background=\" + this.background + \", flash=\" + this.flash);\n }\n };\n\n /**\n * Unicode character with styling and background.\n * @constructor\n */\n var StyledUnicodeChar = function(uchar, foreground, underline, italics, background, flash) {\n this.uchar = uchar || ' '; // unicode character\n this.penState = new PenState(foreground, underline,italics, background, flash);\n };\n\n StyledUnicodeChar.prototype = {\n \n reset: function() {\n this.uchar = ' ';\n this.penState.reset();\n },\n \n setChar: function(uchar, newPenState) {\n this.uchar = uchar;\n this.penState.copy(newPenState);\n },\n \n setPenState: function(newPenState) {\n this.penState.copy(newPenState);\n },\n \n equals: function(other) {\n return this.uchar === other.uchar && this.penState.equals(other.penState);\n },\n \n copy: function(newChar) {\n this.uchar = newChar.uchar;\n this.penState.copy(newChar.penState);\n },\n \n isEmpty : function() {\n return this.uchar === ' ' && this.penState.isDefault();\n }\n };\n\n /**\n * CEA-608 row consisting of NR_COLS instances of StyledUnicodeChar.\n * @constructor\n */\n var Row = function() {\n this.chars = [];\n for (var i = 0 ; i < NR_COLS ; i++) {\n this.chars.push(new StyledUnicodeChar());\n }\n this.pos = 0;\n this.currPenState = new PenState();\n };\n\n Row.prototype = {\n \n equals: function(other) {\n var equal = true;\n for (var i = 0 ; i < NR_COLS; i ++) {\n if (!this.chars[i].equals(other.chars[i])) {\n equal = false;\n break;\n }\n }\n return equal;\n },\n \n copy: function(other) {\n for (var i = 0 ; i < NR_COLS; i ++) {\n this.chars[i].copy(other.chars[i]);\n }\n },\n \n isEmpty : function() {\n var empty = true;\n for (var i = 0 ; i < NR_COLS; i ++) {\n if (!this.chars[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n return empty;\n },\n\n /**\n * Set the cursor to a valid column.\n */\n setCursor : function(absPos) {\n if (this.pos !== absPos) {\n this.pos = absPos;\n }\n if (this.pos < 0) {\n logger.log(\"ERROR\", \"Negative cursor position \" + this.pos);\n this.pos = 0;\n } else if (this.pos > NR_COLS) {\n logger.log(\"ERROR\", \"Too large cursor position \" + this.pos);\n this.pos = NR_COLS;\n }\n },\n\n /** \n * Move the cursor relative to current position.\n */\n moveCursor : function(relPos) {\n var newPos = this.pos + relPos;\n if (relPos > 1) {\n for (var i = this.pos+1; i < newPos+1 ; i++) {\n this.chars[i].setPenState(this.currPenState);\n }\n }\n this.setCursor(newPos);\n },\n\n /**\n * Backspace, move one step back and clear character.\n */\n backSpace : function () {\n this.moveCursor(-1);\n this.chars[this.pos].setChar(' ', this.currPenState);\n },\n\n insertChar: function(byte) {\n if (byte >= 0x90) { //Extended char\n this.backSpace();\n }\n var char = getCharForByte(byte);\n if (this.pos >= NR_COLS) {\n logger.log(\"ERROR\", \"Cannot insert \" + byte.toString(16) + \n \" (\" + char + \") at position \" + this.pos + \". Skipping it!\");\n return;\n }\n this.chars[this.pos].setChar(char, this.currPenState);\n this.moveCursor(1);\n },\n\n clearFromPos : function(startPos) {\n var i;\n for (i = startPos ; i < NR_COLS ; i++) {\n this.chars[i].reset();\n }\n },\n\n clear : function() {\n this.clearFromPos(0);\n this.pos = 0;\n this.currPenState.reset();\n },\n\n clearToEndOfRow : function() {\n this.clearFromPos(this.pos);\n },\n\n getTextString: function() {\n var chars = [];\n var empty = true;\n for (var i = 0 ; i < NR_COLS ; i++) {\n var char = this.chars[i].uchar;\n if (char !== \" \") {\n empty = false;\n }\n chars.push(char);\n }\n if (empty) {\n return \"\";\n } else {\n return chars.join(\"\");\n }\n },\n\n setPenStyles: function(styles) {\n this.currPenState.setStyles(styles);\n var currChar = this.chars[this.pos];\n currChar.setPenState(this.currPenState);\n }\n };\n\n /**\n * Keep a CEA-608 screen of 32x15 styled characters\n * @constructor\n */\n var CaptionScreen = function() {\n\n this.rows = [];\n for (var i = 0 ; i < NR_ROWS; i++) {\n this.rows.push(new Row()); // Note that we use zero-based numbering (0-14)\n }\n this.currRow = NR_ROWS - 1;\n this.nrRollUpRows = null;\n this.reset();\n };\n\n CaptionScreen.prototype = {\n\n reset : function() {\n for (var i = 0 ; i < NR_ROWS ; i++) {\n this.rows[i].clear();\n }\n this.currRow = NR_ROWS - 1;\n },\n\n equals : function(other) {\n var equal = true;\n for (var i = 0 ; i < NR_ROWS ; i++) {\n if (!this.rows[i].equals(other.rows[i])) {\n equal = false;\n break;\n }\n }\n return equal;\n },\n\n copy : function(other) {\n for (var i = 0 ; i < NR_ROWS ; i++) {\n this.rows[i].copy(other.rows[i]);\n }\n },\n\n isEmpty : function() {\n var empty = true;\n for (var i = 0 ; i < NR_ROWS ; i++) {\n if (!this.rows[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n return empty;\n },\n\n backSpace : function() {\n var row = this.rows[this.currRow]; \n row.backSpace();\n },\n\n clearToEndOfRow : function() {\n var row = this.rows[this.currRow];\n row.clearToEndOfRow();\n },\n\n /**\n * Insert a character (without styling) in the current row.\n */\n insertChar : function(char) {\n var row = this.rows[this.currRow];\n row.insertChar(char);\n },\n\n setPen : function(styles) {\n var row = this.rows[this.currRow];\n row.setPenStyles(styles);\n },\n\n moveCursor : function(relPos) {\n var row = this.rows[this.currRow];\n row.moveCursor(relPos); \n },\n\n setCursor : function(absPos) {\n logger.log(\"INFO\", \"setCursor: \" + absPos);\n var row = this.rows[this.currRow];\n row.setCursor(absPos);\n },\n\n setPAC : function(pacData) {\n logger.log(\"INFO\", \"pacData = \" + JSON.stringify(pacData));\n var newRow = pacData.row - 1;\n if (this.nrRollUpRows && newRow < this.nrRollUpRows - 1) {\n newRow = this.nrRollUpRows-1;\n }\n this.currRow = newRow;\n var row = this.rows[this.currRow];\n if (pacData.indent !== null) {\n var indent = pacData.indent;\n var prevPos = Math.max(indent-1, 0);\n row.setCursor(pacData.indent);\n pacData.color = row.chars[prevPos].penState.foreground;\n }\n var styles = {foreground : pacData.color, underline : pacData.underline, italics : pacData.italics, background : 'black', flash : false};\n this.setPen(styles);\n },\n\n /**\n * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).\n */\n setBkgData : function(bkgData) {\n\n logger.log(\"INFO\", \"bkgData = \" + JSON.stringify(bkgData));\n this.backSpace();\n this.setPen(bkgData);\n this.insertChar(0x20); //Space\n },\n\n setRollUpRows : function(nrRows) {\n this.nrRollUpRows = nrRows;\n },\n\n rollUp : function() {\n if (this.nrRollUpRows === null) {\n logger.log(\"DEBUG\", \"roll_up but nrRollUpRows not set yet\");\n return; //Not properly setup\n }\n logger.log(\"TEXT\", this.getDisplayText());\n var topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n var topRow = this.rows.splice(topRowIndex, 1)[0];\n topRow.clear();\n this.rows.splice(this.currRow, 0, topRow);\n logger.log(\"INFO\", \"Rolling up\");\n //logger.log(\"TEXT\", this.get_display_text())\n },\n\n /**\n * Get all non-empty rows with as unicode text. \n */ \n getDisplayText : function(asOneRow) {\n asOneRow = asOneRow || false;\n var displayText = [];\n var text = \"\";\n var rowNr = -1;\n for (var i = 0 ; i < NR_ROWS ; i++) {\n var rowText = this.rows[i].getTextString();\n if (rowText) {\n rowNr = i+1;\n if (asOneRow) {\n displayText.push(\"Row \" + rowNr + ': \"' + rowText + '\"');\n } else {\n displayText.push(rowText.trim());\n }\n }\n }\n if (displayText.length > 0) {\n if (asOneRow) {\n text = \"[\" + displayText.join(\" | \") + \"]\";\n } else {\n text = displayText.join(\"\\n\");\n }\n }\n return text;\n },\n\n getTextAndFormat : function() {\n return this.rows;\n }\n };\n\n /**\n * Handle a CEA-608 channel and send decoded data to outputFilter\n * @constructor\n * @param {Number} channelNumber (1 or 2)\n * @param {CueHandler} outputFilter Output from channel1 newCue(startTime, endTime, captionScreen)\n */\n var Cea608Channel = function(channelNumber, outputFilter) {\n\n this.chNr = channelNumber;\n this.outputFilter = outputFilter;\n this.mode = null;\n this.verbose = 0;\n this.displayedMemory = new CaptionScreen();\n this.nonDisplayedMemory = new CaptionScreen();\n this.lastOutputScreen = new CaptionScreen();\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS-1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null; // Keeps track of where a cue started.\n };\n\n Cea608Channel.prototype = {\n \n modes : [\"MODE_ROLL-UP\", \"MODE_POP-ON\", \"MODE_PAINT-ON\", \"MODE_TEXT\"],\n \n reset : function() {\n this.mode = null;\n this.displayedMemory.reset();\n this.nonDisplayedMemory.reset();\n this.lastOutputScreen.reset();\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS-1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null;\n this.lastCueEndTime = null;\n },\n\n getHandler : function() {\n return this.outputFilter;\n },\n\n setHandler : function(newHandler) {\n this.outputFilter = newHandler;\n },\n\n setPAC : function(pacData) {\n this.writeScreen.setPAC(pacData);\n },\n\n setBkgData : function(bkgData) {\n this.writeScreen.setBkgData(bkgData);\n },\n\n setMode : function(newMode) {\n if (newMode === this.mode) {\n return;\n }\n this.mode = newMode;\n logger.log(\"INFO\", \"MODE=\" + newMode);\n if (this.mode == \"MODE_POP-ON\") {\n this.writeScreen = this.nonDisplayedMemory;\n } else {\n this.writeScreen = this.displayedMemory;\n this.writeScreen.reset();\n }\n if (this.mode !== \"MODE_ROLL-UP\") {\n this.displayedMemory.nrRollUpRows = null;\n this.nonDisplayedMemory.nrRollUpRows = null;\n }\n this.mode = newMode;\n },\n\n insertChars : function(chars) {\n for (var i = 0 ; i < chars.length ; i++) {\n this.writeScreen.insertChar(chars[i]);\n }\n var screen = this.writeScreen === this.displayedMemory ? \"DISP\" : \"NON_DISP\";\n logger.log(\"INFO\", screen + \": \" + this.writeScreen.getDisplayText(true));\n if (this.mode === \"MODE_PAINT-ON\" || this.mode === \"MODE_ROLL-UP\") {\n logger.log(\"TEXT\", \"DISPLAYED: \" + this.displayedMemory.getDisplayText(true));\n this.outputDataUpdate();\n }\n },\n\n cc_RCL: function() { // Resume Caption Loading (switch mode to Pop On)\n logger.log(\"INFO\", \"RCL - Resume Caption Loading\");\n this.setMode(\"MODE_POP-ON\");\n },\n cc_BS: function() { // BackSpace\n logger.log(\"INFO\", \"BS - BackSpace\");\n if (this.mode === \"MODE_TEXT\") {\n return;\n }\n this.writeScreen.backSpace();\n if (this.writeScreen === this.displayedMemory) {\n this.outputDataUpdate();\n }\n },\n cc_AOF : function() { // Reserved (formerly Alarm Off)\n return;\n },\n cc_AON: function() { // Reserved (formerly Alarm On)\n return;\n },\n cc_DER: function() { // Delete to End of Row\n logger.log(\"INFO\", \"DER- Delete to End of Row\");\n this.writeScreen.clearToEndOfRow();\n this.outputDataUpdate();\n },\n cc_RU: function(nrRows) { //Roll-Up Captions-2,3,or 4 Rows\n logger.log(\"INFO\", \"RU(\" + nrRows +\") - Roll Up\");\n this.writeScreen = this.displayedMemory;\n this.setMode(\"MODE_ROLL-UP\");\n this.writeScreen.setRollUpRows(nrRows);\n },\n cc_FON: function() { //Flash On\n logger.log(\"INFO\", \"FON - Flash On\");\n this.writeScreen.setPen({flash : true});\n },\n cc_RDC: function() { // Resume Direct Captioning (switch mode to PaintOn)\n logger.log(\"INFO\", \"RDC - Resume Direct Captioning\");\n this.setMode(\"MODE_PAINT-ON\");\n },\n cc_TR: function() { // Text Restart in text mode (not supported, however)\n logger.log(\"INFO\", \"TR\");\n this.setMode(\"MODE_TEXT\");\n },\n cc_RTD: function() { // Resume Text Display in Text mode (not supported, however)\n logger.log(\"INFO\", \"RTD\");\n this.setMode(\"MODE_TEXT\");\n },\n cc_EDM: function() { // Erase Displayed Memory\n logger.log(\"INFO\", \"EDM - Erase Displayed Memory\");\n this.displayedMemory.reset();\n this.outputDataUpdate();\n },\n cc_CR: function() { // Carriage Return\n logger.log(\"CR - Carriage Return\");\n this.writeScreen.rollUp();\n this.outputDataUpdate();\n },\n cc_ENM: function() { //Erase Non-Displayed Memory\n logger.log(\"INFO\", \"ENM - Erase Non-displayed Memory\");\n this.nonDisplayedMemory.reset();\n },\n cc_EOC: function() { //End of Caption (Flip Memories)\n logger.log(\"INFO\", \"EOC - End Of Caption\");\n if (this.mode === \"MODE_POP-ON\") {\n var tmp = this.displayedMemory;\n this.displayedMemory = this.nonDisplayedMemory;\n this.nonDisplayedMemory = tmp;\n this.writeScreen = this.nonDisplayedMemory;\n logger.log(\"TEXT\", \"DISP: \" + this.displayedMemory.getDisplayText());\n }\n this.outputDataUpdate();\n },\n cc_TO: function(nrCols) { // Tab Offset 1,2, or 3 columns\n logger.log(\"INFO\", \"TO(\" + nrCols + \") - Tab Offset\");\n this.writeScreen.moveCursor(nrCols);\n },\n cc_MIDROW: function(secondByte) { // Parse MIDROW command\n var styles = {flash : false};\n styles.underline = secondByte % 2 === 1;\n styles.italics = secondByte >= 0x2e;\n if (!styles.italics) {\n var colorIndex = Math.floor(secondByte/2) - 0x10;\n var colors = [\"white\", \"green\", \"blue\", \"cyan\", \"red\", \"yellow\", \"magenta\"];\n styles.foreground = colors[colorIndex];\n } else {\n styles.foreground = \"white\";\n }\n logger.log(\"INFO\", \"MIDROW: \" + JSON.stringify(styles));\n this.writeScreen.setPen(styles);\n },\n\n outputDataUpdate: function() {\n var t = logger.time;\n if (t === null) {\n return;\n }\n if (this.outputFilter) {\n if (this.outputFilter.updateData) {\n this.outputFilter.updateData(t, this.displayedMemory);\n }\n if (this.cueStartTime === null && !this.displayedMemory.isEmpty()) { // Start of a new cue\n this.cueStartTime = t;\n } else {\n if (!this.displayedMemory.equals(this.lastOutputScreen)) { \n if (this.outputFilter.newCue) {\n this.outputFilter.newCue(this.cueStartTime, t, this.lastOutputScreen);\n }\n this.cueStartTime = this.displayedMemory.isEmpty() ? null : t;\n }\n }\n this.lastOutputScreen.copy(this.displayedMemory);\n }\n },\n\n cueSplitAtTime : function(t) {\n if (this.outputFilter) {\n if (!this.displayedMemory.isEmpty()) {\n if (this.outputFilter.newCue) {\n this.outputFilter.newCue(this.cueStartTime, t, this.displayedMemory);\n }\n this.cueStartTime = t;\n }\n }\n }\n };\n\n /**\n * Parse CEA-608 data and send decoded data to out1 and out2.\n * @constructor\n * @param {Number} field CEA-608 field (1 or 2)\n * @param {CueHandler} out1 Output from channel1 newCue(startTime, endTime, captionScreen)\n * @param {CueHandler} out2 Output from channel2 newCue(startTime, endTime, captionScreen)\n */\n var Cea608Parser = function(field, out1, out2) {\n this.field = field || 1;\n this.outputs = [out1, out2];\n this.channels = [new Cea608Channel(1, out1), new Cea608Channel(2, out2)];\n this.currChNr = -1; // Will be 1 or 2\n this.lastCmdA = null; // First byte of last command\n this.lastCmdB = null; // Second byte of last command\n this.bufferedData = [];\n this.startTime = null;\n this.lastTime = null;\n this.dataCounters = {'padding' : 0, 'char' : 0, 'cmd' : 0, 'other' : 0};\n };\n\n Cea608Parser.prototype = {\n \n getHandler : function(index) {\n return this.channels[index].getHandler();\n },\n \n setHandler : function(index, newHandler) {\n this.channels[index].setHandler(newHandler);\n },\n\n /**\n * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs.\n */\n addData : function(t, byteList) {\n var cmdFound, a, b, \n charsFound = false;\n \n this.lastTime = t;\n logger.setTime(t);\n\n for (var i = 0 ; i < byteList.length ; i+=2) {\n a = byteList[i] & 0x7f;\n b = byteList[i+1] & 0x7f;\n\n if (a >= 0x10 && a <= 0x1f && a === this.lastCmdA && b === this.lastCmdB) {\n this.lastCmdA = null;\n this.lastCmdB = null;\n logger.log(\"DEBUG\", \"Repeated command (\" + numArrayToHexArray([a, b]) + \") is dropped\");\n continue; // Repeated commands are dropped (once)\n }\n\n if (a === 0 && b === 0) {\n this.dataCounters.padding += 2;\n continue;\n } else {\n logger.log(\"DATA\", \"[\" + numArrayToHexArray([byteList[i], byteList[i+1]]) +\"] -> (\" + numArrayToHexArray([a, b]) + \")\");\n }\n cmdFound = this.parseCmd(a, b);\n if (!cmdFound) {\n cmdFound = this.parseMidrow(a, b);\n }\n if (!cmdFound) {\n cmdFound = this.parsePAC(a, b);\n }\n if (!cmdFound) {\n cmdFound = this.parseBackgroundAttributes(a, b);\n }\n if (!cmdFound) {\n charsFound = this.parseChars(a, b);\n if (charsFound) {\n if (this.currChNr && this.currChNr >=0) {\n var channel = this.channels[this.currChNr-1];\n channel.insertChars(charsFound);\n } else {\n logger.log(\"WARNING\", \"No channel found yet. TEXT-MODE?\");\n }\n }\n }\n if (cmdFound) {\n this.dataCounters.cmd += 2;\n } else if (charsFound) {\n this.dataCounters.char += 2;\n } else {\n this.dataCounters.other += 2;\n logger.log(\"WARNING\", \"Couldn't parse cleaned data \" + numArrayToHexArray([a, b]) +\n \" orig: \" + numArrayToHexArray([byteList[i], byteList[i+1]]));\n }\n }\n },\n\n /**\n * Parse Command.\n * @returns {Boolean} Tells if a command was found\n */\n parseCmd: function(a, b) {\n var chNr = null;\n\n var cond1 = (a === 0x14 || a === 0x15 || a === 0x1C || a === 0x1D) && (0x20 <= b && b <= 0x2F);\n var cond2 = (a === 0x17 || a === 0x1F) && (0x21 <= b && b <= 0x23);\n if (!(cond1 || cond2)) {\n return false;\n }\n \n if (a === 0x14 || a === 0x15 || a === 0x17) {\n chNr = 1;\n } else {\n chNr = 2; // (a === 0x1C || a === 0x1D || a=== 0x1f)\n }\n\n var channel = this.channels[chNr - 1];\n\n if (a === 0x14 || a === 0x15 || a === 0x1C || a === 0x1D) {\n if (b === 0x20) {\n channel.cc_RCL();\n } else if (b === 0x21) {\n channel.cc_BS();\n } else if (b === 0x22) {\n channel.cc_AOF();\n } else if (b === 0x23) {\n channel.cc_AON();\n } else if (b === 0x24) {\n channel.cc_DER();\n } else if (b === 0x25) {\n channel.cc_RU(2);\n } else if (b === 0x26) {\n channel.cc_RU(3);\n } else if (b === 0x27) {\n channel.cc_RU(4);\n } else if (b === 0x28) {\n channel.cc_FON();\n } else if (b === 0x29) {\n channel.cc_RDC();\n } else if (b === 0x2A) {\n channel.cc_TR();\n } else if (b === 0x2B) {\n channel.cc_RTD();\n } else if (b === 0x2C) {\n channel.cc_EDM();\n } else if (b === 0x2D) {\n channel.cc_CR();\n } else if (b === 0x2E) {\n channel.cc_ENM();\n } else if (b === 0x2F) {\n channel.cc_EOC();\n }\n } else { //a == 0x17 || a == 0x1F\n channel.cc_TO(b - 0x20);\n }\n this.lastCmdA = a;\n this.lastCmdB = b;\n this.currChNr = chNr;\n return true;\n },\n\n /**\n * Parse midrow styling command\n * @returns {Boolean}\n */\n parseMidrow : function(a, b) {\n var chNr = null;\n \n if ( ((a === 0x11) || (a === 0x19)) && 0x20 <= b && b <= 0x2f) {\n if (a === 0x11) {\n chNr = 1;\n } else {\n chNr = 2;\n }\n if (chNr !== this.currChNr) {\n logger.log(\"ERROR\", \"Mismatch channel in midrow parsing\");\n return false;\n }\n var channel = this.channels[chNr-1];\n // cea608 spec says midrow codes should inject a space\n channel.insertChars([0x20]);\n channel.cc_MIDROW(b);\n logger.log(\"DEBUG\", \"MIDROW (\" + numArrayToHexArray([a, b]) + \")\");\n this.lastCmdA = a;\n this.lastCmdB = b;\n return true;\n }\n return false;\n },\n /**\n * Parse Preable Access Codes (Table 53).\n * @returns {Boolean} Tells if PAC found\n */\n parsePAC : function(a, b) {\n\n var chNr = null;\n var row = null;\n \n var case1 = ((0x11 <= a && a <= 0x17) || (0x19 <= a && a <= 0x1F)) && (0x40 <= b && b <= 0x7F);\n var case2 = (a === 0x10 || a === 0x18) && (0x40 <= b && b <= 0x5F);\n if (! (case1 || case2)) {\n return false;\n }\n\n chNr = (a <= 0x17) ? 1 : 2;\n\n if (0x40 <= b && b <= 0x5F) {\n row = (chNr === 1) ? rowsLowCh1[a] : rowsLowCh2[a];\n } else { // 0x60 <= b <= 0x7F\n row = (chNr === 1) ? rowsHighCh1[a] : rowsHighCh2[a];\n }\n var pacData = this.interpretPAC(row, b);\n var channel = this.channels[chNr-1];\n channel.setPAC(pacData);\n this.lastCmdA = a;\n this.lastCmdB = b;\n this.currChNr = chNr;\n return true;\n },\n\n /**\n * Interpret the second byte of the pac, and return the information.\n * @returns {Object} pacData with style parameters.\n */\n interpretPAC : function (row, byte) {\n var pacIndex = byte;\n var pacData = {color : null, italics : false, indent : null, underline : false, row : row};\n \n if (byte > 0x5F) {\n pacIndex = byte - 0x60;\n } else {\n pacIndex = byte - 0x40;\n }\n pacData.underline = (pacIndex & 1) === 1;\n if (pacIndex <= 0xd) {\n pacData.color = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'white'][Math.floor(pacIndex/2)];\n } else if (pacIndex <= 0xf) {\n pacData.italics = true;\n pacData.color = 'white';\n } else {\n pacData.indent = (Math.floor((pacIndex-0x10)/2))*4;\n }\n return pacData; // Note that row has zero offset. The spec uses 1.\n },\n\n /**\n * Parse characters.\n * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise.\n */\n parseChars : function(a, b) {\n\n var channelNr = null,\n charCodes = null,\n charCode1 = null,\n charCode2 = null;\n\n if (a >= 0x19) {\n channelNr = 2;\n charCode1 = a - 8;\n } else {\n channelNr = 1;\n charCode1 = a;\n }\n if (0x11 <= charCode1 && charCode1 <= 0x13) {\n // Special character\n var oneCode = b;\n if (charCode1 === 0x11) {\n oneCode = b + 0x50;\n } else if (charCode1 === 0x12) {\n oneCode = b + 0x70;\n } else {\n oneCode = b + 0x90;\n }\n logger.log(\"INFO\", \"Special char '\" + getCharForByte(oneCode) + \"' in channel \" + channelNr);\n charCodes = [oneCode];\n this.lastCmdA = a;\n this.lastCmdB = b;\n } else if (0x20 <= a && a <= 0x7f) {\n charCodes = (b === 0) ? [a] : [a, b];\n this.lastCmdA = null;\n this.lastCmdB = null;\n }\n if (charCodes) {\n var hexCodes = numArrayToHexArray(charCodes);\n logger.log(\"DEBUG\", \"Char codes = \" + hexCodes.join(\",\"));\n }\n return charCodes;\n },\n \n /**\n * Parse extended background attributes as well as new foreground color black.\n * @returns{Boolean} Tells if background attributes are found\n */\n parseBackgroundAttributes : function(a, b) {\n var bkgData,\n index,\n chNr,\n channel;\n\n var case1 = (a === 0x10 || a === 0x18) && (0x20 <= b && b <= 0x2f);\n var case2 = (a === 0x17 || a === 0x1f) && (0x2d <=b && b <= 0x2f);\n if (!(case1 || case2)) {\n return false;\n }\n bkgData = {};\n if (a === 0x10 || a === 0x18) {\n index = Math.floor((b-0x20)/2);\n bkgData.background = backgroundColors[index];\n if (b % 2 === 1) {\n bkgData.background = bkgData.background + \"_semi\";\n }\n } else if (b === 0x2d) {\n bkgData.background = \"transparent\";\n } else {\n bkgData.foreground = \"black\";\n if (b === 0x2f) {\n bkgData.underline = true;\n }\n }\n chNr = (a < 0x18) ? 1 : 2;\n channel = this.channels[chNr-1];\n channel.setBkgData(bkgData);\n this.lastCmdA = a;\n this.lastCmdB = b;\n return true;\n },\n\n /**\n * Reset state of parser and its channels.\n */\n reset : function() {\n for (var i=0 ; i < this.channels.length ; i++) {\n if (this.channels[i]) {\n this.channels[i].reset();\n }\n }\n this.lastCmdA = null;\n this.lastCmdB = null;\n },\n\n /**\n * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty.\n */\n cueSplitAtTime : function(t) {\n for (var i=0 ; i < this.channels.length ; i++) {\n if (this.channels[i]) {\n this.channels[i].cueSplitAtTime(t);\n }\n }\n },\n };\n\n /**\n * Find ranges corresponding to SEA CEA-608 NALUS in sizeprepended NALU array.\n * @param {raw} dataView of binary data\n * @param {startPos} start position in raw\n * @param {size} total size of data in raw to consider\n * @returns \n */\n var findCea608Nalus = function(raw, startPos, size) {\n var nalSize = 0,\n cursor = startPos,\n nalType = 0,\n cea608NaluRanges = [],\n // Check SEI data according to ANSI-SCTE 128\n isCEA608SEI = function (payloadType, payloadSize, raw, pos) {\n if (payloadType !== 4 || payloadSize < 8) {\n return null;\n }\n var countryCode = raw.getUint8(pos);\n var providerCode = raw.getUint16(pos + 1);\n var userIdentifier = raw.getUint32(pos + 3);\n var userDataTypeCode = raw.getUint8(pos + 7);\n return countryCode == 0xB5 && providerCode == 0x31 && userIdentifier == 0x47413934 && userDataTypeCode == 0x3;\n };\n while (cursor < startPos + size) {\n nalSize = raw.getUint32(cursor);\n nalType = raw.getUint8(cursor + 4) & 0x1F;\n //console.log(time + \" NAL \" + nalType);\n if (nalType === 6) {\n // SEI NAL Unit. The NAL header is the first byte\n //console.log(\"SEI NALU of size \" + nalSize + \" at time \" + time);\n var pos = cursor + 5;\n var payloadType = -1;\n while (pos < cursor + 4 + nalSize - 1) { // The last byte should be rbsp_trailing_bits\n payloadType = 0;\n var b = 0xFF;\n while (b === 0xFF) {\n b = raw.getUint8(pos);\n payloadType += b;\n pos++;\n }\n var payloadSize = 0;\n b = 0xFF;\n while (b === 0xFF) {\n b = raw.getUint8(pos);\n payloadSize += b;\n pos++;\n }\n if (isCEA608SEI(payloadType, payloadSize, raw, pos)) {\n //console.log(\"CEA608 SEI \" + time + \" \" + payloadSize);\n cea608NaluRanges.push([pos, payloadSize]);\n }\n pos += payloadSize;\n }\n }\n cursor += nalSize + 4;\n }\n return cea608NaluRanges;\n };\n \n var extractCea608DataFromRange = function(raw, cea608Range) {\n var pos = cea608Range[0];\n var fieldData = [[], []];\n\n pos += 8; // Skip the identifier up to userDataTypeCode\n var ccCount = raw.getUint8(pos) & 0x1f;\n pos += 2; // Advance 1 and skip reserved byte\n \n for (var i = 0; i < ccCount; i++) {\n var byte = raw.getUint8(pos);\n var ccValid = byte & 0x4;\n var ccType = byte & 0x3;\n pos++;\n var ccData1 = raw.getUint8(pos); // Keep parity bit\n pos++;\n var ccData2 = raw.getUint8(pos); // Keep parity bit\n pos++;\n if (ccValid && ((ccData1 & 0x7f) + (ccData2 & 0x7f) !== 0)) { //Check validity and non-empty data\n if (ccType === 0) {\n fieldData[0].push(ccData1);\n fieldData[0].push(ccData2);\n } else if (ccType === 1) {\n fieldData[1].push(ccData1);\n fieldData[1].push(ccData2);\n }\n }\n }\n return fieldData;\n };\n\n exports.logger = logger;\n exports.PenState = PenState;\n exports.CaptionScreen = CaptionScreen; \n exports.Cea608Parser = Cea608Parser;\n exports.findCea608Nalus = findCea608Nalus;\n exports.extractCea608DataFromRange = extractCea608DataFromRange;\n\n}(typeof exports === 'undefined' ? this.cea608parser = {} : exports));\n", "/*\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * author Digital Primates\n * copyright dash-if 2012\n */\n\n/*\n * var parent,\n * child,\n * properties = [\n {\n name: 'profiles',\n merge: false\n }\n ];\n *\n * parent = {};\n * parent.name = \"ParentNode\";\n * parent.isRoor = false;\n * parent.isArray = false;\n * parent.children = [];\n * parent.properties = properties;\n *\n * child = {};\n * child.name = \"ChildNode\";\n * child.isRoor = false;\n * child.isArray = true;\n * child.children = null;\n * child.properties = properties;\n * parent.children.push(child);\n *\n */\n\nfunction ObjectIron(map) {\n\n var lookup,\n len,\n i;\n\n // create a list of top level items to search for\n lookup = [];\n for (i = 0, len = map.length; i < len; i += 1) {\n if (map[i].isRoot) {\n lookup.push(\"root\");\n } else {\n lookup.push(map[i].name);\n }\n }\n\n var mergeValues = function (parentItem, childItem) {\n var name,\n parentValue,\n childValue;\n\n if (parentItem === null || childItem === null) {\n return;\n }\n\n for (name in parentItem) {\n if (parentItem.hasOwnProperty(name)) {\n if (!childItem.hasOwnProperty(name)) {\n childItem[name] = parentItem[name];\n }\n }\n }\n },\n\n mapProperties = function (properties, parent, child) {\n var i,\n len,\n property,\n parentValue,\n childValue;\n\n if (properties === null || properties.length === 0) {\n return;\n }\n\n for (i = 0, len = properties.length; i < len; i += 1) {\n property = properties[i];\n\n if (parent.hasOwnProperty(property.name)) {\n if (child.hasOwnProperty(property.name)) {\n // check to see if we should merge\n if (property.merge) {\n parentValue = parent[property.name];\n childValue = child[property.name];\n\n // complex objects; merge properties\n if (typeof parentValue === 'object' && typeof childValue === 'object') {\n mergeValues(parentValue, childValue);\n }\n // simple objects; merge them together\n else {\n if (property.mergeFunction != null) {\n child[property.name] = property.mergeFunction(parentValue, childValue);\n } else {\n child[property.name] = parentValue + childValue;\n }\n }\n }\n } else {\n // just add the property\n child[property.name] = parent[property.name];\n }\n }\n }\n },\n\n mapItem = function (obj, node) {\n var item = obj,\n i,\n len,\n v,\n len2,\n array,\n childItem,\n childNode,\n property;\n\n if (item.children === null || item.children.length === 0) {\n return;\n }\n\n for (i = 0, len = item.children.length; i < len; i += 1) {\n childItem = item.children[i];\n\n if (node.hasOwnProperty(childItem.name)) {\n if (childItem.isArray) {\n array = node[childItem.name + \"_asArray\"];\n for (v = 0, len2 = array.length; v < len2; v += 1) {\n childNode = array[v];\n mapProperties(item.properties, node, childNode);\n mapItem(childItem, childNode);\n }\n } else {\n childNode = node[childItem.name];\n mapProperties(item.properties, node, childNode);\n mapItem(childItem, childNode);\n }\n }\n }\n },\n\n performMapping = function (source) {\n var i,\n len,\n pi,\n pp,\n item,\n node,\n array;\n\n if (source === null) {\n return source;\n }\n\n if (typeof source !== 'object') {\n return source;\n }\n\n // first look to see if anything cares about the root node\n for (i = 0, len = lookup.length; i < len; i += 1) {\n if (lookup[i] === \"root\") {\n item = map[i];\n node = source;\n mapItem(item, node);\n }\n }\n\n // iterate over the objects and look for any of the items we care about\n for (pp in source) {\n if (source.hasOwnProperty(pp) && pp != \"__children\") {\n pi = lookup.indexOf(pp);\n if (pi !== -1) {\n item = map[pi];\n\n if (item.isArray) {\n array = source[pp + \"_asArray\"];\n for (i = 0, len = array.length; i < len; i += 1) {\n node = array[i];\n mapItem(item, node);\n }\n } else {\n node = source[pp];\n mapItem(item, node);\n }\n }\n // now check this to see if he has any of the properties we care about\n performMapping(source[pp]);\n }\n }\n\n return source;\n };\n\n return {\n run: performMapping\n };\n}\n\nexport default ObjectIron;\n", "/*\n Copyright 2011-2013 Abdulla Abdurakhmanov\n Original sources are available at https://code.google.com/p/x2js/\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/*\n Further modified for dashjs to:\n - keep track of children nodes in order in attribute __children.\n - add type conversion matchers\n - re-add ignoreRoot\n - allow zero-length attributePrefix\n - don't add white-space text nodes\n - remove explicit RequireJS support\n*/\n\nfunction X2JS(config) {\n 'use strict';\n\n var VERSION = \"1.2.0\";\n\n config = config || {};\n initConfigDefaults();\n initRequiredPolyfills();\n\n function initConfigDefaults() {\n if(config.escapeMode === undefined) {\n config.escapeMode = true;\n }\n\n if (config.attributePrefix === undefined) {\n config.attributePrefix = \"_\";\n }\n\n config.arrayAccessForm = config.arrayAccessForm || \"none\";\n config.emptyNodeForm = config.emptyNodeForm || \"text\";\n\n if(config.enableToStringFunc === undefined) {\n config.enableToStringFunc = true;\n }\n config.arrayAccessFormPaths = config.arrayAccessFormPaths || [];\n if(config.skipEmptyTextNodesForObj === undefined) {\n config.skipEmptyTextNodesForObj = true;\n }\n if(config.stripWhitespaces === undefined) {\n config.stripWhitespaces = true;\n }\n config.datetimeAccessFormPaths = config.datetimeAccessFormPaths || [];\n\n if(config.useDoubleQuotes === undefined) {\n config.useDoubleQuotes = false;\n }\n\n config.xmlElementsFilter = config.xmlElementsFilter || [];\n config.jsonPropertiesFilter = config.jsonPropertiesFilter || [];\n\n if(config.keepCData === undefined) {\n config.keepCData = false;\n }\n\n if (config.ignoreRoot === undefined) {\n config.ignoreRoot = false;\n }\n }\n\n var DOMNodeTypes = {\n ELEMENT_NODE \t : 1,\n TEXT_NODE \t : 3,\n CDATA_SECTION_NODE : 4,\n COMMENT_NODE\t : 8,\n DOCUMENT_NODE \t : 9\n };\n\n function initRequiredPolyfills() {\n }\n\n function getNodeLocalName( node ) {\n var nodeLocalName = node.localName;\n if(nodeLocalName == null) // Yeah, this is IE!!\n nodeLocalName = node.baseName;\n if(nodeLocalName == null || nodeLocalName==\"\") // ==\"\" is IE too\n nodeLocalName = node.nodeName;\n return nodeLocalName;\n }\n\n function getNodePrefix(node) {\n return node.prefix;\n }\n\n function escapeXmlChars(str) {\n if(typeof(str) == \"string\")\n return str.replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"').replace(/'/g, ''');\n else\n return str;\n }\n\n function unescapeXmlChars(str) {\n return str.replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '\"').replace(/'/g, \"'\").replace(/&/g, '&');\n }\n\n function checkInStdFiltersArrayForm(stdFiltersArrayForm, obj, name, path) {\n var idx = 0;\n for(; idx < stdFiltersArrayForm.length; idx++) {\n var filterPath = stdFiltersArrayForm[idx];\n if( typeof filterPath === \"string\" ) {\n if(filterPath == path)\n break;\n }\n else\n if( filterPath instanceof RegExp) {\n if(filterPath.test(path))\n break;\n }\n else\n if( typeof filterPath === \"function\") {\n if(filterPath(obj, name, path))\n break;\n }\n }\n return idx!=stdFiltersArrayForm.length;\n }\n\n function toArrayAccessForm(obj, childName, path) {\n switch(config.arrayAccessForm) {\n case \"property\":\n if(!(obj[childName] instanceof Array))\n obj[childName+\"_asArray\"] = [obj[childName]];\n else\n obj[childName+\"_asArray\"] = obj[childName];\n break;\n /*case \"none\":\n break;*/\n }\n\n if(!(obj[childName] instanceof Array) && config.arrayAccessFormPaths.length > 0) {\n if(checkInStdFiltersArrayForm(config.arrayAccessFormPaths, obj, childName, path)) {\n obj[childName] = [obj[childName]];\n }\n }\n }\n\n function fromXmlDateTime(prop) {\n // Implementation based up on http://stackoverflow.com/questions/8178598/xml-datetime-to-javascript-date-object\n // Improved to support full spec and optional parts\n var bits = prop.split(/[-T:+Z]/g);\n\n var d = new Date(bits[0], bits[1]-1, bits[2]);\n var secondBits = bits[5].split(\"\\.\");\n d.setHours(bits[3], bits[4], secondBits[0]);\n if(secondBits.length>1)\n d.setMilliseconds(secondBits[1]);\n\n // Get supplied time zone offset in minutes\n if(bits[6] && bits[7]) {\n var offsetMinutes = bits[6] * 60 + Number(bits[7]);\n var sign = /\\d\\d-\\d\\d:\\d\\d$/.test(prop)? '-' : '+';\n\n // Apply the sign\n offsetMinutes = 0 + (sign == '-'? -1 * offsetMinutes : offsetMinutes);\n\n // Apply offset and local timezone\n d.setMinutes(d.getMinutes() - offsetMinutes - d.getTimezoneOffset())\n }\n else\n if(prop.indexOf(\"Z\", prop.length - 1) !== -1) {\n d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds()));\n }\n\n // d is now a local time equivalent to the supplied time\n return d;\n }\n\n function checkFromXmlDateTimePaths(value, childName, fullPath) {\n if(config.datetimeAccessFormPaths.length > 0) {\n var path = fullPath.split(\"\\.#\")[0];\n if(checkInStdFiltersArrayForm(config.datetimeAccessFormPaths, value, childName, path)) {\n return fromXmlDateTime(value);\n }\n else\n return value;\n }\n else\n return value;\n }\n\n function checkXmlElementsFilter(obj, childType, childName, childPath) {\n if( childType == DOMNodeTypes.ELEMENT_NODE && config.xmlElementsFilter.length > 0) {\n return checkInStdFiltersArrayForm(config.xmlElementsFilter, obj, childName, childPath);\n }\n else\n return true;\n }\n\n function parseDOMChildren( node, path ) {\n if(node.nodeType == DOMNodeTypes.DOCUMENT_NODE) {\n var result = new Object;\n var nodeChildren = node.childNodes;\n // Alternative for firstElementChild which is not supported in some environments\n for(var cidx=0; cidx 1 && result.__text!=null && config.skipEmptyTextNodesForObj) {\n if( (config.stripWhitespaces && result.__text==\"\") || (result.__text.trim()==\"\")) {\n delete result.__text;\n }\n }\n delete result.__cnt;\n\n if( config.enableToStringFunc && (result.__text!=null || result.__cdata!=null )) {\n result.toString = function() {\n return (this.__text!=null? this.__text:'')+( this.__cdata!=null ? this.__cdata:'');\n };\n }\n\n return result;\n }\n else\n if(node.nodeType == DOMNodeTypes.TEXT_NODE || node.nodeType == DOMNodeTypes.CDATA_SECTION_NODE) {\n return node.nodeValue;\n }\n }\n\n function startTag(jsonObj, element, attrList, closed) {\n var resultStr = \"<\"+ ( (jsonObj!=null && jsonObj.__prefix!=null)? (jsonObj.__prefix+\":\"):\"\") + element;\n if(attrList!=null) {\n for(var aidx = 0; aidx < attrList.length; aidx++) {\n var attrName = attrList[aidx];\n var attrVal = jsonObj[attrName];\n if(config.escapeMode)\n attrVal=escapeXmlChars(attrVal);\n resultStr+=\" \"+attrName.substr(config.attributePrefix.length)+\"=\";\n if(config.useDoubleQuotes)\n resultStr+='\"'+attrVal+'\"';\n else\n resultStr+=\"'\"+attrVal+\"'\";\n }\n }\n if(!closed)\n resultStr+=\">\";\n else\n resultStr+=\"/>\";\n return resultStr;\n }\n\n function endTag(jsonObj,elementName) {\n return \"\";\n }\n\n function endsWith(str, suffix) {\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n }\n\n function jsonXmlSpecialElem ( jsonObj, jsonObjField ) {\n if((config.arrayAccessForm==\"property\" && endsWith(jsonObjField.toString(),(\"_asArray\")))\n || jsonObjField.toString().indexOf(config.attributePrefix)==0\n || jsonObjField.toString().indexOf(\"__\")==0\n || (jsonObj[jsonObjField] instanceof Function) )\n return true;\n else\n return false;\n }\n\n function jsonXmlElemCount ( jsonObj ) {\n var elementsCnt = 0;\n if(jsonObj instanceof Object ) {\n for( var it in jsonObj ) {\n if(jsonXmlSpecialElem ( jsonObj, it) )\n continue;\n elementsCnt++;\n }\n }\n return elementsCnt;\n }\n\n function checkJsonObjPropertiesFilter(jsonObj, propertyName, jsonObjPath) {\n return config.jsonPropertiesFilter.length == 0\n || jsonObjPath==\"\"\n || checkInStdFiltersArrayForm(config.jsonPropertiesFilter, jsonObj, propertyName, jsonObjPath);\n }\n\n function parseJSONAttributes ( jsonObj ) {\n var attrList = [];\n if(jsonObj instanceof Object ) {\n for( var ait in jsonObj ) {\n if(ait.toString().indexOf(\"__\")== -1 && ait.toString().indexOf(config.attributePrefix)==0) {\n attrList.push(ait);\n }\n }\n }\n return attrList;\n }\n\n function parseJSONTextAttrs ( jsonTxtObj ) {\n var result =\"\";\n\n if(jsonTxtObj.__cdata!=null) {\n result+=\"\";\n }\n\n if(jsonTxtObj.__text!=null) {\n if(config.escapeMode)\n result+=escapeXmlChars(jsonTxtObj.__text);\n else\n result+=jsonTxtObj.__text;\n }\n return result;\n }\n\n function parseJSONTextObject ( jsonTxtObj ) {\n var result =\"\";\n\n if( jsonTxtObj instanceof Object ) {\n result+=parseJSONTextAttrs ( jsonTxtObj );\n }\n else\n if(jsonTxtObj!=null) {\n if(config.escapeMode)\n result+=escapeXmlChars(jsonTxtObj);\n else\n result+=jsonTxtObj;\n }\n\n return result;\n }\n\n function getJsonPropertyPath(jsonObjPath, jsonPropName) {\n if (jsonObjPath===\"\") {\n return jsonPropName;\n }\n else\n return jsonObjPath+\".\"+jsonPropName;\n }\n\n function parseJSONArray ( jsonArrRoot, jsonArrObj, attrList, jsonObjPath ) {\n var result = \"\";\n if(jsonArrRoot.length == 0) {\n result+=startTag(jsonArrRoot, jsonArrObj, attrList, true);\n }\n else {\n for(var arIdx = 0; arIdx < jsonArrRoot.length; arIdx++) {\n result+=startTag(jsonArrRoot[arIdx], jsonArrObj, parseJSONAttributes(jsonArrRoot[arIdx]), false);\n result+=parseJSONObject(jsonArrRoot[arIdx], getJsonPropertyPath(jsonObjPath,jsonArrObj));\n result+=endTag(jsonArrRoot[arIdx],jsonArrObj);\n }\n }\n return result;\n }\n\n function parseJSONObject ( jsonObj, jsonObjPath ) {\n var result = \"\";\n\n var elementsCnt = jsonXmlElemCount ( jsonObj );\n\n if(elementsCnt > 0) {\n for( var it in jsonObj ) {\n\n if(jsonXmlSpecialElem ( jsonObj, it) || (jsonObjPath!=\"\" && !checkJsonObjPropertiesFilter(jsonObj, it, getJsonPropertyPath(jsonObjPath,it))) )\n continue;\n\n var subObj = jsonObj[it];\n\n var attrList = parseJSONAttributes( subObj )\n\n if(subObj == null || subObj == undefined) {\n result+=startTag(subObj, it, attrList, true);\n }\n else\n if(subObj instanceof Object) {\n\n if(subObj instanceof Array) {\n result+=parseJSONArray( subObj, it, attrList, jsonObjPath );\n }\n else if(subObj instanceof Date) {\n result+=startTag(subObj, it, attrList, false);\n result+=subObj.toISOString();\n result+=endTag(subObj,it);\n }\n else {\n var subObjElementsCnt = jsonXmlElemCount ( subObj );\n if(subObjElementsCnt > 0 || subObj.__text!=null || subObj.__cdata!=null) {\n result+=startTag(subObj, it, attrList, false);\n result+=parseJSONObject(subObj, getJsonPropertyPath(jsonObjPath,it));\n result+=endTag(subObj,it);\n }\n else {\n result+=startTag(subObj, it, attrList, true);\n }\n }\n }\n else {\n result+=startTag(subObj, it, attrList, false);\n result+=parseJSONTextObject(subObj);\n result+=endTag(subObj,it);\n }\n }\n }\n result+=parseJSONTextObject(jsonObj);\n\n return result;\n }\n\n this.parseXmlString = function(xmlDocStr) {\n var isIEParser = window.ActiveXObject || \"ActiveXObject\" in window;\n if (xmlDocStr === undefined) {\n return null;\n }\n var xmlDoc;\n if (window.DOMParser) {\n var parser=new window.DOMParser();\n var parsererrorNS = null;\n try {\n xmlDoc = parser.parseFromString( xmlDocStr, \"text/xml\" );\n if(xmlDoc.getElementsByTagNameNS(\"*\", \"parseerror\").length > 0) {\n xmlDoc = null;\n }\n }\n catch(err) {\n xmlDoc = null;\n }\n }\n else {\n // IE :(\n if(xmlDocStr.indexOf(\"\") + 2 );\n }\n xmlDoc=new ActiveXObject(\"Microsoft.XMLDOM\");\n xmlDoc.async=\"false\";\n xmlDoc.loadXML(xmlDocStr);\n }\n return xmlDoc;\n };\n\n this.asArray = function(prop) {\n if (prop === undefined || prop == null)\n return [];\n else\n if(prop instanceof Array)\n return prop;\n else\n return [prop];\n };\n\n this.toXmlDateTime = function(dt) {\n if(dt instanceof Date)\n return dt.toISOString();\n else\n if(typeof(dt) === 'number' )\n return new Date(dt).toISOString();\n else\n return null;\n };\n\n this.asDateTime = function(prop) {\n if(typeof(prop) == \"string\") {\n return fromXmlDateTime(prop);\n }\n else\n return prop;\n };\n\n this.xml2json = function (xmlDoc) {\n return parseDOMChildren ( xmlDoc );\n };\n\n this.xml_str2json = function (xmlDocStr) {\n var xmlDoc = this.parseXmlString(xmlDocStr);\n if(xmlDoc!=null)\n return this.xml2json(xmlDoc);\n else\n return null;\n };\n\n this.json2xml_str = function (jsonObj) {\n return parseJSONObject ( jsonObj, \"\" );\n };\n\n this.json2xml = function (jsonObj) {\n var xmlDocStr = this.json2xml_str (jsonObj);\n return this.parseXmlString(xmlDocStr);\n };\n\n this.getVersion = function () {\n return VERSION;\n };\n}\n\nexport default X2JS;\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport './index_mediaplayerOnly';\n\nimport MetricsReporting from './src/streaming/metrics/MetricsReporting';\nimport Protection from './src/streaming/protection/Protection';\nimport MediaPlayerFactory from './src/streaming/MediaPlayerFactory';\n\ndashjs.Protection = Protection;\ndashjs.MetricsReporting = MetricsReporting;\ndashjs.MediaPlayerFactory = MediaPlayerFactory;\n\nexport default dashjs;\nexport { Protection, MetricsReporting, MediaPlayerFactory};", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { MediaPlayer } from './index_mediaplayerOnly';\n\nimport MetricsReporting from './src/streaming/metrics/MetricsReporting';\nimport Protection from './src/streaming/protection/Protection';\nimport MediaPlayerFactory from './src/streaming/MediaPlayerFactory';\n\ndashjs.Protection = Protection;\ndashjs.MetricsReporting = MetricsReporting;\ndashjs.MediaPlayerFactory = MediaPlayerFactory;\n\nexport default dashjs;\nexport { MediaPlayer, Protection, MetricsReporting, MediaPlayerFactory};", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MediaPlayer from './src/streaming/MediaPlayer';\nimport FactoryMaker from './src/core/FactoryMaker';\nimport {getVersionString} from './src/core/Version';\n\n// Shove both of these into the global scope\nvar context = (typeof window !== 'undefined' && window) || global;\n\nvar dashjs = context.dashjs;\nif (!dashjs) {\n dashjs = context.dashjs = {};\n}\n\ndashjs.MediaPlayer = MediaPlayer;\ndashjs.FactoryMaker = FactoryMaker;\ndashjs.Version = getVersionString();\n\nexport default dashjs;\nexport { MediaPlayer, FactoryMaker};\n", "var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n;(function (exports) {\n\t'use strict';\n\n var Arr = (typeof Uint8Array !== 'undefined')\n ? Uint8Array\n : Array\n\n\tvar PLUS = '+'.charCodeAt(0)\n\tvar SLASH = '/'.charCodeAt(0)\n\tvar NUMBER = '0'.charCodeAt(0)\n\tvar LOWER = 'a'.charCodeAt(0)\n\tvar UPPER = 'A'.charCodeAt(0)\n\tvar PLUS_URL_SAFE = '-'.charCodeAt(0)\n\tvar SLASH_URL_SAFE = '_'.charCodeAt(0)\n\n\tfunction decode (elt) {\n\t\tvar code = elt.charCodeAt(0)\n\t\tif (code === PLUS ||\n\t\t code === PLUS_URL_SAFE)\n\t\t\treturn 62 // '+'\n\t\tif (code === SLASH ||\n\t\t code === SLASH_URL_SAFE)\n\t\t\treturn 63 // '/'\n\t\tif (code < NUMBER)\n\t\t\treturn -1 //no match\n\t\tif (code < NUMBER + 10)\n\t\t\treturn code - NUMBER + 26 + 26\n\t\tif (code < UPPER + 26)\n\t\t\treturn code - UPPER\n\t\tif (code < LOWER + 26)\n\t\t\treturn code - LOWER + 26\n\t}\n\n\tfunction b64ToByteArray (b64) {\n\t\tvar i, j, l, tmp, placeHolders, arr\n\n\t\tif (b64.length % 4 > 0) {\n\t\t\tthrow new Error('Invalid string. Length must be a multiple of 4')\n\t\t}\n\n\t\t// the number of equal signs (place holders)\n\t\t// if there are two placeholders, than the two characters before it\n\t\t// represent one byte\n\t\t// if there is only one, then the three characters before it represent 2 bytes\n\t\t// this is just a cheap hack to not do indexOf twice\n\t\tvar len = b64.length\n\t\tplaceHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0\n\n\t\t// base64 is 4/3 + up to two characters of the original data\n\t\tarr = new Arr(b64.length * 3 / 4 - placeHolders)\n\n\t\t// if there are placeholders, only get up to the last complete 4 chars\n\t\tl = placeHolders > 0 ? b64.length - 4 : b64.length\n\n\t\tvar L = 0\n\n\t\tfunction push (v) {\n\t\t\tarr[L++] = v\n\t\t}\n\n\t\tfor (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))\n\t\t\tpush((tmp & 0xFF0000) >> 16)\n\t\t\tpush((tmp & 0xFF00) >> 8)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\tif (placeHolders === 2) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)\n\t\t\tpush(tmp & 0xFF)\n\t\t} else if (placeHolders === 1) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)\n\t\t\tpush((tmp >> 8) & 0xFF)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\treturn arr\n\t}\n\n\tfunction uint8ToBase64 (uint8) {\n\t\tvar i,\n\t\t\textraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes\n\t\t\toutput = \"\",\n\t\t\ttemp, length\n\n\t\tfunction encode (num) {\n\t\t\treturn lookup.charAt(num)\n\t\t}\n\n\t\tfunction tripletToBase64 (num) {\n\t\t\treturn encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)\n\t\t}\n\n\t\t// go through the array every three bytes, we'll deal with trailing stuff later\n\t\tfor (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {\n\t\t\ttemp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t\t\toutput += tripletToBase64(temp)\n\t\t}\n\n\t\t// pad the end with zeros, but make sure to not forget the extra bytes\n\t\tswitch (extraBytes) {\n\t\t\tcase 1:\n\t\t\t\ttemp = uint8[uint8.length - 1]\n\t\t\t\toutput += encode(temp >> 2)\n\t\t\t\toutput += encode((temp << 4) & 0x3F)\n\t\t\t\toutput += '=='\n\t\t\t\tbreak\n\t\t\tcase 2:\n\t\t\t\ttemp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])\n\t\t\t\toutput += encode(temp >> 10)\n\t\t\t\toutput += encode((temp >> 4) & 0x3F)\n\t\t\t\toutput += encode((temp << 2) & 0x3F)\n\t\t\t\toutput += '='\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn output\n\t}\n\n\texports.toByteArray = b64ToByteArray\n\texports.fromByteArray = uint8ToBase64\n}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))\n", null, @@ -290,19 +292,19 @@ "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventBus from './EventBus';\nimport Events from './events/Events';\nimport FactoryMaker from './FactoryMaker';\n\n/**\n * @module Debug\n */\nfunction Debug() {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n logToBrowserConsole,\n showLogTimestamp,\n showCalleeName,\n startTime;\n\n function setup() {\n logToBrowserConsole = true;\n showLogTimestamp = true;\n showCalleeName = false;\n startTime = new Date().getTime();\n }\n\n /**\n * Prepends a timestamp in milliseconds to each log message.\n * @param {boolean} value Set to true if you want to see a timestamp in each log message.\n * @default false\n * @memberof module:Debug\n * @instance\n */\n function setLogTimestampVisible(value) {\n showLogTimestamp = value;\n }\n /**\n * Prepends the callee object name, and media type if available, to each log message.\n * @param {boolean} value Set to true if you want to see the callee object name and media type in each log message.\n * @default false\n * @memberof module:Debug\n * @instance\n */\n function setCalleeNameVisible(value) {\n showCalleeName = value;\n }\n /**\n * Toggles logging to the browser's javascript console. If you set to false you will still receive a log event with the same message.\n * @param {boolean} value Set to false if you want to turn off logging to the browser's console.\n * @default true\n * @memberof module:Debug\n * @instance\n */\n function setLogToBrowserConsole(value) {\n logToBrowserConsole = value;\n }\n /**\n * Use this method to get the state of logToBrowserConsole.\n * @returns {boolean} The current value of logToBrowserConsole\n * @memberof module:Debug\n * @instance\n */\n function getLogToBrowserConsole() {\n return logToBrowserConsole;\n }\n /**\n * This method will allow you send log messages to either the browser's console and/or dispatch an event to capture at the media player level.\n * @param {...*} arguments The message you want to log. The Arguments object is supported for this method so you can send in comma separated logging items.\n * @memberof module:Debug\n * @instance\n */\n function log() {\n\n let message = '';\n let logTime = null;\n\n if (showLogTimestamp) {\n logTime = new Date().getTime();\n message += '[' + (logTime - startTime) + ']';\n }\n\n if (showCalleeName && this && this.getClassName) {\n message += '[' + this.getClassName() + ']';\n if (this.getType) {\n message += '[' + this.getType() + ']';\n }\n }\n\n if (message.length > 0) {\n message += ' ';\n }\n\n Array.apply(null, arguments).forEach(function (item) {\n message += item + ' ';\n });\n\n if (logToBrowserConsole) {\n console.log(message);\n }\n\n eventBus.trigger(Events.LOG, {message: message});\n }\n\n instance = {\n log: log,\n setLogTimestampVisible: setLogTimestampVisible,\n setCalleeNameVisible: setCalleeNameVisible,\n setLogToBrowserConsole: setLogToBrowserConsole,\n getLogToBrowserConsole: getLogToBrowserConsole\n };\n\n setup();\n\n return instance;\n}\n\nDebug.__dashjs_factory_name = 'Debug';\nexport default FactoryMaker.getSingletonFactory(Debug);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from './FactoryMaker';\n\nconst EVENT_PRIORITY_LOW = 0;\nconst EVENT_PRIORITY_HIGH = 5000;\n\nfunction EventBus() {\n\n let handlers = {};\n\n function on(type, listener, scope, priority = EVENT_PRIORITY_LOW) {\n\n if (!type) {\n throw new Error('event type cannot be null or undefined');\n }\n if (!listener || typeof (listener) !== 'function') {\n throw new Error('listener must be a function: ' + listener);\n }\n\n if (getHandlerIdx(type, listener, scope) >= 0) return;\n\n handlers[type] = handlers[type] || [];\n\n const handler = {\n callback: listener,\n scope: scope,\n priority: priority\n };\n\n const inserted = handlers[type].some((item , idx) => {\n if (item && priority > item.priority ) {\n handlers[type].splice(idx, 0, handler);\n return true;\n }\n });\n\n if (!inserted) {\n handlers[type].push(handler);\n }\n }\n\n function off(type, listener, scope) {\n if (!type || !listener || !handlers[type]) return;\n const idx = getHandlerIdx(type, listener, scope);\n if (idx < 0) return;\n handlers[type][idx] = null;\n }\n\n function trigger(type, payload) {\n if (!type || !handlers[type]) return;\n\n payload = payload || {};\n\n if (payload.hasOwnProperty('type')) throw new Error('\\'type\\' is a reserved word for event dispatching');\n\n payload.type = type;\n\n handlers[type] = handlers[type].filter((item) => item);\n handlers[type].forEach( handler => handler && handler.callback.call(handler.scope, payload) );\n }\n\n function getHandlerIdx(type, listener, scope) {\n\n let idx = -1;\n\n if (!handlers[type]) return idx;\n\n handlers[type].some( (item, index) => {\n if (item && item.callback === listener && (!scope || scope === item.scope)) {\n idx = index;\n return true;\n }\n });\n return idx;\n }\n\n function reset() {\n handlers = {};\n }\n\n const instance = {\n on: on,\n off: off,\n trigger: trigger,\n reset: reset\n };\n\n return instance;\n}\n\nEventBus.__dashjs_factory_name = 'EventBus';\nconst factory = FactoryMaker.getSingletonFactory(EventBus);\nfactory.EVENT_PRIORITY_LOW = EVENT_PRIORITY_LOW;\nfactory.EVENT_PRIORITY_HIGH = EVENT_PRIORITY_HIGH;\nFactoryMaker.updateSingletonFactory(EventBus.__dashjs_factory_name, factory);\nexport default factory;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @module FactoryMaker\n */\nlet FactoryMaker = (function () {\n\n let instance;\n const extensions = [];\n const singletonContexts = [];\n const singletonFactories = [];\n const classFactories = [];\n\n function extend(name, childInstance, override, context) {\n const extensionContext = getExtensionContext(context);\n if (!extensionContext[name] && childInstance) {\n extensionContext[name] = {\n instance: childInstance,\n override: override\n };\n }\n }\n\n /**\n * Use this method from your extended object. this.factory is injected into your object.\n * this.factory.getSingletonInstance(this.context, 'VideoModel')\n * will return the video model for use in the extended object.\n *\n * @param {Object} context - injected into extended object as this.context\n * @param {string} className - string name found in all dash.js objects\n * with name __dashjs_factory_name Will be at the bottom. Will be the same as the object's name.\n * @returns {*} Context aware instance of specified singleton name.\n * @memberof module:FactoryMaker\n * @instance\n */\n function getSingletonInstance(context, className) {\n for (const i in singletonContexts) {\n const obj = singletonContexts[i];\n if (obj.context === context && obj.name === className) {\n return obj.instance;\n }\n }\n return null;\n }\n\n /**\n * Use this method to add an singleton instance to the system. Useful for unit testing to mock objects etc.\n *\n * @param {Object} context\n * @param {string} className\n * @param {Object} instance\n * @memberof module:FactoryMaker\n * @instance\n */\n function setSingletonInstance(context, className, instance) {\n for (const i in singletonContexts) {\n const obj = singletonContexts[i];\n if (obj.context === context && obj.name === className) {\n singletonContexts[i].instance = instance;\n return;\n }\n }\n singletonContexts.push({\n name: className,\n context: context,\n instance: instance\n });\n }\n\n /*------------------------------------------------------------------------------------------*/\n\n // Factories storage Management\n\n /*------------------------------------------------------------------------------------------*/\n\n function registerFactory(name, factory, factoriesArray) {\n for (const i in factoriesArray) {\n const obj = factoriesArray[i];\n if (obj.name === name) {\n factoriesArray[i].factory = factory;\n return;\n }\n }\n factoriesArray.push({\n name: name,\n factory: factory\n });\n }\n\n function getFactoryByName(name, factoriesArray) {\n for (const i in factoriesArray) {\n const obj = factoriesArray[i];\n if (obj.name === name) {\n return factoriesArray[i].factory;\n }\n }\n return null;\n }\n\n function updateFactory(name, factory, factoriesArray) {\n for (const i in factoriesArray) {\n const obj = factoriesArray[i];\n if (obj.name === name) {\n factoriesArray[i].factory = factory;\n return;\n }\n }\n }\n\n /*------------------------------------------------------------------------------------------*/\n\n // Class Factories Management\n\n /*------------------------------------------------------------------------------------------*/\n\n function updateClassFactory(name, factory) {\n updateFactory(name, factory, classFactories);\n }\n\n function getClassFactoryByName(name) {\n return getFactoryByName(name, classFactories);\n }\n\n function getClassFactory(classConstructor) {\n let factory = getFactoryByName(classConstructor.__dashjs_factory_name, classFactories);\n\n if (!factory) {\n factory = function (context) {\n if (context === undefined) {\n context = {};\n }\n return {\n create: function () {\n return merge(classConstructor.__dashjs_factory_name, classConstructor.apply({\n context: context\n }, arguments), context, arguments);\n }\n };\n };\n\n registerFactory(classConstructor.__dashjs_factory_name, factory, classFactories); // store factory\n }\n return factory;\n }\n\n /*------------------------------------------------------------------------------------------*/\n\n // Singleton Factory MAangement\n\n /*------------------------------------------------------------------------------------------*/\n\n function updateSingletonFactory(name, factory) {\n updateFactory(name, factory, singletonFactories);\n }\n\n function getSingletonFactoryByName(name) {\n return getFactoryByName(name, singletonFactories);\n }\n\n function getSingletonFactory(classConstructor) {\n let factory = getFactoryByName(classConstructor.__dashjs_factory_name, singletonFactories);\n if (!factory) {\n factory = function (context) {\n let instance;\n if (context === undefined) {\n context = {};\n }\n return {\n getInstance: function () {\n // If we don't have an instance yet check for one on the context\n if (!instance) {\n instance = getSingletonInstance(context, classConstructor.__dashjs_factory_name);\n }\n // If there's no instance on the context then create one\n if (!instance) {\n instance = merge(classConstructor.__dashjs_factory_name, classConstructor.apply({\n context: context\n }, arguments), context, arguments);\n singletonContexts.push({\n name: classConstructor.__dashjs_factory_name,\n context: context,\n instance: instance\n });\n }\n return instance;\n }\n };\n };\n registerFactory(classConstructor.__dashjs_factory_name, factory, singletonFactories); // store factory\n }\n\n return factory;\n }\n\n function merge(name, classConstructor, context, args) {\n // Add getClassName function to class instance prototype (used by Debug)\n classConstructor.getClassName = function () {return name;};\n\n const extensionContext = getExtensionContext(context);\n const extensionObject = extensionContext[name];\n if (extensionObject) {\n let extension = extensionObject.instance;\n if (extensionObject.override) { //Override public methods in parent but keep parent.\n extension = extension.apply({\n context: context,\n factory: instance,\n parent: classConstructor\n }, args);\n for (const prop in extension) {\n if (classConstructor.hasOwnProperty(prop)) {\n classConstructor[prop] = extension[prop];\n }\n }\n } else { //replace parent object completely with new object. Same as dijon.\n return extension.apply({\n context: context,\n factory: instance\n }, args);\n }\n }\n return classConstructor;\n }\n\n function getExtensionContext(context) {\n let extensionContext;\n extensions.forEach(function (obj) {\n if (obj === context) {\n extensionContext = obj;\n }\n });\n if (!extensionContext) {\n extensions.push(context);\n extensionContext = context;\n }\n return extensionContext;\n }\n\n instance = {\n extend: extend,\n getSingletonInstance: getSingletonInstance,\n setSingletonInstance: setSingletonInstance,\n getSingletonFactory: getSingletonFactory,\n getSingletonFactoryByName: getSingletonFactoryByName,\n updateSingletonFactory: updateSingletonFactory,\n getClassFactory: getClassFactory,\n getClassFactoryByName: getClassFactoryByName,\n updateClassFactory: updateClassFactory\n };\n\n return instance;\n\n}());\n\nexport default FactoryMaker;\n", - "const VERSION = '2.6.3';\nexport function getVersionString() {\n return VERSION;\n}\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventsBase from './EventsBase';\n\n/**\n * These are internal events that should not be needed at the player level.\n * If you find and event in here that you would like access to from MediaPlayer level\n * please add an issue at https://github.com/Dash-Industry-Forum/dash.js/issues/new\n * @class\n * @ignore\n */\nclass CoreEvents extends EventsBase {\n constructor () {\n super();\n this.BUFFERING_COMPLETED = 'bufferingCompleted';\n this.BUFFER_CLEARED = 'bufferCleared';\n this.BUFFER_LEVEL_UPDATED = 'bufferLevelUpdated';\n this.BYTES_APPENDED = 'bytesAppended';\n this.CHECK_FOR_EXISTENCE_COMPLETED = 'checkForExistenceCompleted';\n this.CURRENT_TRACK_CHANGED = 'currentTrackChanged';\n this.DATA_UPDATE_COMPLETED = 'dataUpdateCompleted';\n this.DATA_UPDATE_STARTED = 'dataUpdateStarted';\n this.INITIALIZATION_LOADED = 'initializationLoaded';\n this.INIT_FRAGMENT_LOADED = 'initFragmentLoaded';\n this.INIT_REQUESTED = 'initRequested';\n this.INTERNAL_MANIFEST_LOADED = 'internalManifestLoaded';\n this.LIVE_EDGE_SEARCH_COMPLETED = 'liveEdgeSearchCompleted';\n this.LOADING_COMPLETED = 'loadingCompleted';\n this.LOADING_PROGRESS = 'loadingProgress';\n this.LOADING_ABANDONED = 'loadingAborted';\n this.MANIFEST_UPDATED = 'manifestUpdated';\n this.MEDIA_FRAGMENT_LOADED = 'mediaFragmentLoaded';\n this.QUOTA_EXCEEDED = 'quotaExceeded';\n this.REPRESENTATION_UPDATED = 'representationUpdated';\n this.SEGMENTS_LOADED = 'segmentsLoaded';\n this.SERVICE_LOCATION_BLACKLIST_ADD = 'serviceLocationBlacklistAdd';\n this.SERVICE_LOCATION_BLACKLIST_CHANGED = 'serviceLocationBlacklistChanged';\n this.SOURCEBUFFER_APPEND_COMPLETED = 'sourceBufferAppendCompleted';\n this.SOURCEBUFFER_REMOVE_COMPLETED = 'sourceBufferRemoveCompleted';\n this.STREAMS_COMPOSED = 'streamsComposed';\n this.STREAM_BUFFERING_COMPLETED = 'streamBufferingCompleted';\n this.STREAM_COMPLETED = 'streamCompleted';\n this.TIMED_TEXT_REQUESTED = 'timedTextRequested';\n this.TIME_SYNCHRONIZATION_COMPLETED = 'timeSynchronizationComplete';\n this.URL_RESOLUTION_FAILED = 'urlResolutionFailed';\n this.VIDEO_CHUNK_RECEIVED = 'videoChunkReceived';\n this.WALLCLOCK_TIME_UPDATED = 'wallclockTimeUpdated';\n this.XLINK_ELEMENT_LOADED = 'xlinkElementLoaded';\n this.XLINK_READY = 'xlinkReady';\n }\n}\n\nexport default CoreEvents;\n", + "const VERSION = '2.6.4';\nexport function getVersionString() {\n return VERSION;\n}\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventsBase from './EventsBase';\n\n/**\n * These are internal events that should not be needed at the player level.\n * If you find and event in here that you would like access to from MediaPlayer level\n * please add an issue at https://github.com/Dash-Industry-Forum/dash.js/issues/new\n * @class\n * @ignore\n */\nclass CoreEvents extends EventsBase {\n constructor () {\n super();\n this.BUFFERING_COMPLETED = 'bufferingCompleted';\n this.BUFFER_CLEARED = 'bufferCleared';\n this.BUFFER_LEVEL_UPDATED = 'bufferLevelUpdated';\n this.BYTES_APPENDED = 'bytesAppended';\n this.CHECK_FOR_EXISTENCE_COMPLETED = 'checkForExistenceCompleted';\n this.CURRENT_TRACK_CHANGED = 'currentTrackChanged';\n this.DATA_UPDATE_COMPLETED = 'dataUpdateCompleted';\n this.DATA_UPDATE_STARTED = 'dataUpdateStarted';\n this.INITIALIZATION_LOADED = 'initializationLoaded';\n this.INIT_FRAGMENT_LOADED = 'initFragmentLoaded';\n this.INIT_REQUESTED = 'initRequested';\n this.INTERNAL_MANIFEST_LOADED = 'internalManifestLoaded';\n this.LIVE_EDGE_SEARCH_COMPLETED = 'liveEdgeSearchCompleted';\n this.LOADING_COMPLETED = 'loadingCompleted';\n this.LOADING_PROGRESS = 'loadingProgress';\n this.LOADING_ABANDONED = 'loadingAborted';\n this.MANIFEST_UPDATED = 'manifestUpdated';\n this.MEDIA_FRAGMENT_LOADED = 'mediaFragmentLoaded';\n this.QUOTA_EXCEEDED = 'quotaExceeded';\n this.REPRESENTATION_UPDATED = 'representationUpdated';\n this.SEGMENTS_LOADED = 'segmentsLoaded';\n this.SERVICE_LOCATION_BLACKLIST_ADD = 'serviceLocationBlacklistAdd';\n this.SERVICE_LOCATION_BLACKLIST_CHANGED = 'serviceLocationBlacklistChanged';\n this.SOURCEBUFFER_APPEND_COMPLETED = 'sourceBufferAppendCompleted';\n this.SOURCEBUFFER_REMOVE_COMPLETED = 'sourceBufferRemoveCompleted';\n this.STREAMS_COMPOSED = 'streamsComposed';\n this.STREAM_BUFFERING_COMPLETED = 'streamBufferingCompleted';\n this.STREAM_COMPLETED = 'streamCompleted';\n this.TEXT_TRACKS_QUEUE_INITIALIZED = 'textTracksQueueInitialized';\n this.TIMED_TEXT_REQUESTED = 'timedTextRequested';\n this.TIME_SYNCHRONIZATION_COMPLETED = 'timeSynchronizationComplete';\n this.URL_RESOLUTION_FAILED = 'urlResolutionFailed';\n this.VIDEO_CHUNK_RECEIVED = 'videoChunkReceived';\n this.WALLCLOCK_TIME_UPDATED = 'wallclockTimeUpdated';\n this.XLINK_ELEMENT_LOADED = 'xlinkElementLoaded';\n this.XLINK_READY = 'xlinkReady';\n }\n}\n\nexport default CoreEvents;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nimport CoreEvents from './CoreEvents';\nclass Events extends CoreEvents {\n}\nlet events = new Events();\nexport default events;", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass EventsBase {\n extend (events, config) {\n if (!events) return;\n\n let override = config ? config.override : false;\n let publicOnly = config ? config.publicOnly : false;\n\n\n for (const evt in events) {\n if (!events.hasOwnProperty(evt) || (this[evt] && !override)) continue;\n if (publicOnly && events[evt].indexOf('public_') === -1) continue;\n this[evt] = events[evt];\n\n }\n }\n}\n\nexport default EventsBase;", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Constants from '../streaming/constants/Constants';\nimport RepresentationInfo from '../streaming/vo/RepresentationInfo';\nimport MediaInfo from '../streaming/vo/MediaInfo';\nimport StreamInfo from '../streaming/vo/StreamInfo';\nimport ManifestInfo from '../streaming/vo/ManifestInfo';\nimport Event from './vo/Event';\nimport FactoryMaker from '../core/FactoryMaker';\nimport cea608parser from '../../externals/cea608-parser';\n\nfunction DashAdapter() {\n let instance,\n dashManifestModel,\n voPeriods,\n voAdaptations;\n\n function setup() {\n reset();\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n }\n\n\n function getRepresentationForRepresentationInfo(representationInfo, representationController) {\n return representationController && representationInfo ? representationController.getRepresentationForQuality(representationInfo.quality) : null;\n }\n\n function getAdaptationForMediaInfo(mediaInfo) {\n\n if (!mediaInfo || !mediaInfo.streamInfo || mediaInfo.streamInfo.id === undefined || !voAdaptations[mediaInfo.streamInfo.id]) return null;\n return voAdaptations[mediaInfo.streamInfo.id][mediaInfo.index];\n }\n\n function getPeriodForStreamInfo(streamInfo, voPeriodsArray) {\n const ln = voPeriodsArray.length;\n\n for (let i = 0; i < ln; i++) {\n let voPeriod = voPeriodsArray[i];\n\n if (streamInfo.id === voPeriod.id) return voPeriod;\n }\n\n return null;\n }\n\n function convertRepresentationToRepresentationInfo(voRepresentation) {\n let representationInfo = new RepresentationInfo();\n const realAdaptation = voRepresentation.adaptation.period.mpd.manifest.Period_asArray[voRepresentation.adaptation.period.index].AdaptationSet_asArray[voRepresentation.adaptation.index];\n const realRepresentation = dashManifestModel.getRepresentationFor(voRepresentation.index, realAdaptation);\n\n representationInfo.id = voRepresentation.id;\n representationInfo.quality = voRepresentation.index;\n representationInfo.bandwidth = dashManifestModel.getBandwidth(realRepresentation);\n representationInfo.DVRWindow = voRepresentation.segmentAvailabilityRange;\n representationInfo.fragmentDuration = voRepresentation.segmentDuration || (voRepresentation.segments && voRepresentation.segments.length > 0 ? voRepresentation.segments[0].duration : NaN);\n representationInfo.MSETimeOffset = voRepresentation.MSETimeOffset;\n representationInfo.useCalculatedLiveEdgeTime = voRepresentation.useCalculatedLiveEdgeTime;\n representationInfo.mediaInfo = convertAdaptationToMediaInfo(voRepresentation.adaptation);\n\n return representationInfo;\n }\n\n function convertAdaptationToMediaInfo(adaptation) {\n let mediaInfo = new MediaInfo();\n const realAdaptation = adaptation.period.mpd.manifest.Period_asArray[adaptation.period.index].AdaptationSet_asArray[adaptation.index];\n let viewpoint;\n\n mediaInfo.id = adaptation.id;\n mediaInfo.index = adaptation.index;\n mediaInfo.type = adaptation.type;\n mediaInfo.streamInfo = convertPeriodToStreamInfo(adaptation.period);\n mediaInfo.representationCount = dashManifestModel.getRepresentationCount(realAdaptation);\n mediaInfo.lang = dashManifestModel.getLanguageForAdaptation(realAdaptation);\n viewpoint = dashManifestModel.getViewpointForAdaptation(realAdaptation);\n mediaInfo.viewpoint = viewpoint ? viewpoint.value : undefined;\n mediaInfo.accessibility = dashManifestModel.getAccessibilityForAdaptation(realAdaptation).map(function (accessibility) {\n let accessibilityValue = accessibility.value;\n let accessibilityData = accessibilityValue;\n if (accessibility.schemeIdUri && (accessibility.schemeIdUri.search('cea-608') >= 0) && typeof (cea608parser) !== 'undefined') {\n if (accessibilityValue) {\n accessibilityData = 'cea-608:' + accessibilityValue;\n } else {\n accessibilityData = 'cea-608';\n }\n mediaInfo.embeddedCaptions = true;\n }\n return accessibilityData;\n });\n\n mediaInfo.audioChannelConfiguration = dashManifestModel.getAudioChannelConfigurationForAdaptation(realAdaptation).map(function (audioChannelConfiguration) {\n return audioChannelConfiguration.value;\n });\n mediaInfo.roles = dashManifestModel.getRolesForAdaptation(realAdaptation).map(function (role) {\n return role.value;\n });\n mediaInfo.codec = dashManifestModel.getCodec(realAdaptation);\n mediaInfo.mimeType = dashManifestModel.getMimeType(realAdaptation);\n mediaInfo.contentProtection = dashManifestModel.getContentProtectionData(realAdaptation);\n mediaInfo.bitrateList = dashManifestModel.getBitrateListForAdaptation(realAdaptation);\n\n if (mediaInfo.contentProtection) {\n mediaInfo.contentProtection.forEach(function (item) {\n item.KID = dashManifestModel.getKID(item);\n });\n }\n\n mediaInfo.isText = dashManifestModel.getIsTextTrack(mediaInfo.mimeType);\n\n return mediaInfo;\n }\n\n function convertVideoInfoToEmbeddedTextInfo(mediaInfo, channel, lang) {\n mediaInfo.id = channel; // CC1, CC2, CC3, or CC4\n mediaInfo.index = 100 + parseInt(channel.substring(2, 3));\n mediaInfo.type = Constants.EMBEDDED_TEXT;\n mediaInfo.codec = 'cea-608-in-SEI';\n mediaInfo.isText = true;\n mediaInfo.isEmbedded = true;\n mediaInfo.lang = channel + ' ' + lang;\n mediaInfo.roles = ['caption'];\n }\n\n function convertPeriodToStreamInfo(period) {\n let streamInfo = new StreamInfo();\n const THRESHOLD = 1;\n\n streamInfo.id = period.id;\n streamInfo.index = period.index;\n streamInfo.start = period.start;\n streamInfo.duration = period.duration;\n streamInfo.manifestInfo = convertMpdToManifestInfo(period.mpd);\n streamInfo.isLast = period.mpd.manifest.Period_asArray.length === 1 || Math.abs((streamInfo.start + streamInfo.duration) - streamInfo.manifestInfo.duration) < THRESHOLD;\n\n return streamInfo;\n }\n\n function convertMpdToManifestInfo(mpd) {\n let manifestInfo = new ManifestInfo();\n\n manifestInfo.DVRWindowSize = mpd.timeShiftBufferDepth;\n manifestInfo.loadedTime = mpd.manifest.loadedTime;\n manifestInfo.availableFrom = mpd.availabilityStartTime;\n manifestInfo.minBufferTime = mpd.manifest.minBufferTime;\n manifestInfo.maxFragmentDuration = mpd.maxSegmentDuration;\n manifestInfo.duration = dashManifestModel.getDuration(mpd.manifest);\n manifestInfo.isDynamic = dashManifestModel.getIsDynamic(mpd.manifest);\n\n return manifestInfo;\n }\n\n function getMediaInfoForType(streamInfo, type) {\n\n if (voPeriods.length === 0) {\n return null;\n }\n\n const manifest = voPeriods[0].mpd.manifest;\n let realAdaptation = dashManifestModel.getAdaptationForType(manifest, streamInfo.index, type, streamInfo);\n if (!realAdaptation) return null;\n\n let selectedVoPeriod = getPeriodForStreamInfo(streamInfo, voPeriods);\n let periodId = selectedVoPeriod.id;\n let idx = dashManifestModel.getIndexForAdaptation(realAdaptation, manifest, streamInfo.index);\n\n voAdaptations[periodId] = voAdaptations[periodId] || dashManifestModel.getAdaptationsForPeriod(selectedVoPeriod);\n\n return convertAdaptationToMediaInfo(voAdaptations[periodId][idx]);\n }\n\n function getAllMediaInfoForType(streamInfo, type, externalManifest) {\n let voLocalPeriods = voPeriods;\n let manifest = externalManifest;\n let mediaArr = [];\n let data,\n media,\n idx,\n i,\n j,\n ln;\n\n if (manifest) {\n checkSetConfigCall();\n const mpd = dashManifestModel.getMpd(manifest);\n\n voLocalPeriods = dashManifestModel.getRegularPeriods(mpd);\n\n }else {\n if (voPeriods.length > 0) {\n manifest = voPeriods[0].mpd.manifest;\n } else {\n return mediaArr;\n }\n }\n\n const selectedVoPeriod = getPeriodForStreamInfo(streamInfo, voLocalPeriods);\n const periodId = selectedVoPeriod.id;\n const adaptationsForType = dashManifestModel.getAdaptationsForType(manifest, streamInfo.index, type !== Constants.EMBEDDED_TEXT ? type : Constants.VIDEO);\n\n if (!adaptationsForType) return mediaArr;\n\n voAdaptations[periodId] = voAdaptations[periodId] || dashManifestModel.getAdaptationsForPeriod(selectedVoPeriod);\n\n for (i = 0, ln = adaptationsForType.length; i < ln; i++) {\n data = adaptationsForType[i];\n idx = dashManifestModel.getIndexForAdaptation(data, manifest, streamInfo.index);\n media = convertAdaptationToMediaInfo(voAdaptations[periodId][idx]);\n\n if (type === Constants.EMBEDDED_TEXT) {\n let accessibilityLength = media.accessibility.length;\n for (j = 0; j < accessibilityLength; j++) {\n if (!media) {\n continue;\n }\n let accessibility = media.accessibility[j];\n if (accessibility.indexOf('cea-608:') === 0) {\n let value = accessibility.substring(8);\n let parts = value.split(';');\n if (parts[0].substring(0, 2) === 'CC') {\n for (j = 0; j < parts.length; j++) {\n if (!media) {\n media = convertAdaptationToMediaInfo.call(this, voAdaptations[periodId][idx]);\n }\n convertVideoInfoToEmbeddedTextInfo(media, parts[j].substring(0, 3), parts[j].substring(4));\n mediaArr.push(media);\n media = null;\n }\n } else {\n for (j = 0; j < parts.length; j++) { // Only languages for CC1, CC2, ...\n if (!media) {\n media = convertAdaptationToMediaInfo.call(this, voAdaptations[periodId][idx]);\n }\n convertVideoInfoToEmbeddedTextInfo(media, 'CC' + (j + 1), parts[j]);\n mediaArr.push(media);\n media = null;\n }\n }\n } else if (accessibility.indexOf('cea-608') === 0) { // Nothing known. We interpret it as CC1=eng\n convertVideoInfoToEmbeddedTextInfo(media, Constants.CC1, 'eng');\n mediaArr.push(media);\n media = null;\n }\n }\n }\n if (media && type !== Constants.EMBEDDED_TEXT) {\n mediaArr.push(media);\n }\n }\n\n return mediaArr;\n }\n\n function checkSetConfigCall() {\n if (!dashManifestModel || !dashManifestModel.hasOwnProperty('getMpd') || !dashManifestModel.hasOwnProperty('getRegularPeriods')) {\n throw new Error('setConfig function has to be called previously');\n }\n }\n\n function updatePeriods(newManifest) {\n if (!newManifest) return null;\n\n checkSetConfigCall();\n\n const mpd = dashManifestModel.getMpd(newManifest);\n\n voPeriods = dashManifestModel.getRegularPeriods(mpd);\n voAdaptations = {};\n }\n\n function getStreamsInfo(externalManifest) {\n const streams = [];\n let voLocalPeriods = voPeriods;\n\n //if manifest is defined, getStreamsInfo is for an outside manifest, not the current one\n if (externalManifest) {\n checkSetConfigCall();\n const mpd = dashManifestModel.getMpd(externalManifest);\n\n voLocalPeriods = dashManifestModel.getRegularPeriods(mpd);\n }\n\n for (let i = 0; i < voLocalPeriods.length; i++) {\n streams.push(convertPeriodToStreamInfo(voLocalPeriods[i]));\n }\n\n return streams;\n }\n\n function checkStreamProcessor(streamProcessor) {\n if (!streamProcessor || !streamProcessor.hasOwnProperty('getRepresentationController') || !streamProcessor.hasOwnProperty('getIndexHandler') ||\n !streamProcessor.hasOwnProperty('getMediaInfo') || !streamProcessor.hasOwnProperty('getType') || !streamProcessor.hasOwnProperty('getStreamInfo')) {\n throw new Error('streamProcessor parameter is missing or malformed!');\n }\n }\n\n function checkRepresentationController(representationController) {\n if (!representationController || !representationController.hasOwnProperty('getRepresentationForQuality') || !representationController.hasOwnProperty('getCurrentRepresentation')) {\n throw new Error('representationController parameter is missing or malformed!');\n }\n }\n\n function checkQuality(quality) {\n const isInt = quality !== null && !isNaN(quality) && (quality % 1 === 0);\n\n if (!isInt) {\n throw new Error('quality argument is not an integer');\n }\n }\n\n function getInitRequest(streamProcessor, quality) {\n let representationController,\n representation,\n indexHandler;\n\n checkStreamProcessor(streamProcessor);\n checkQuality(quality);\n\n representationController = streamProcessor.getRepresentationController();\n indexHandler = streamProcessor.getIndexHandler();\n\n representation = representationController ? representationController.getRepresentationForQuality(quality) : null;\n\n return indexHandler ? indexHandler.getInitRequest(representation) : null;\n }\n\n function getNextFragmentRequest(streamProcessor, representationInfo) {\n let representationController,\n representation,\n indexHandler;\n\n checkStreamProcessor(streamProcessor);\n\n representationController = streamProcessor.getRepresentationController();\n representation = getRepresentationForRepresentationInfo(representationInfo, representationController);\n indexHandler = streamProcessor.getIndexHandler();\n\n return indexHandler ? indexHandler.getNextSegmentRequest(representation) : null;\n }\n\n function getFragmentRequestForTime(streamProcessor, representationInfo, time, options) {\n let representationController,\n representation,\n indexHandler;\n\n checkStreamProcessor(streamProcessor);\n\n representationController = streamProcessor.getRepresentationController();\n representation = getRepresentationForRepresentationInfo(representationInfo, representationController);\n indexHandler = streamProcessor.getIndexHandler();\n\n return indexHandler ? indexHandler.getSegmentRequestForTime(representation, time, options) : null;\n }\n\n function generateFragmentRequestForTime(streamProcessor, representationInfo, time) {\n let representationController,\n representation,\n indexHandler;\n\n checkStreamProcessor(streamProcessor);\n\n representationController = streamProcessor.getRepresentationController();\n representation = getRepresentationForRepresentationInfo(representationInfo, representationController);\n indexHandler = streamProcessor.getIndexHandler();\n\n return indexHandler ? indexHandler.generateSegmentRequestForTime(representation, time) : null;\n }\n\n function getIndexHandlerTime(streamProcessor) {\n checkStreamProcessor(streamProcessor);\n\n const indexHandler = streamProcessor.getIndexHandler();\n\n if (indexHandler) {\n return indexHandler.getCurrentTime();\n }\n return NaN;\n }\n\n function setIndexHandlerTime(streamProcessor, value) {\n checkStreamProcessor(streamProcessor);\n\n const indexHandler = streamProcessor.getIndexHandler();\n if (indexHandler) {\n indexHandler.setCurrentTime(value);\n }\n }\n\n function updateData(streamProcessor) {\n checkStreamProcessor(streamProcessor);\n\n const selectedVoPeriod = getPeriodForStreamInfo(streamProcessor.getStreamInfo(), voPeriods);\n const mediaInfo = streamProcessor.getMediaInfo();\n const voAdaptation = getAdaptationForMediaInfo(mediaInfo);\n const type = streamProcessor.getType();\n\n let id,\n realAdaptation;\n\n id = mediaInfo ? mediaInfo.id : null;\n if (voPeriods.length > 0) {\n realAdaptation = id ? dashManifestModel.getAdaptationForId(id, voPeriods[0].mpd.manifest, selectedVoPeriod.index) : dashManifestModel.getAdaptationForIndex(mediaInfo.index, voPeriods[0].mpd.manifest, selectedVoPeriod.index);\n streamProcessor.getRepresentationController().updateData(realAdaptation, voAdaptation, type);\n }\n }\n\n function getRepresentationInfoForQuality(representationController, quality) {\n checkRepresentationController(representationController);\n checkQuality(quality);\n\n let voRepresentation = representationController.getRepresentationForQuality(quality);\n return voRepresentation ? convertRepresentationToRepresentationInfo(voRepresentation) : null;\n }\n\n function getCurrentRepresentationInfo(representationController) {\n checkRepresentationController(representationController);\n let voRepresentation = representationController.getCurrentRepresentation();\n return voRepresentation ? convertRepresentationToRepresentationInfo(voRepresentation) : null;\n }\n\n function getEvent(eventBox, eventStreams, startTime) {\n if (!eventBox || !eventStreams) {\n return null;\n }\n let event = new Event();\n const schemeIdUri = eventBox.scheme_id_uri;\n const value = eventBox.value;\n const timescale = eventBox.timescale;\n const presentationTimeDelta = eventBox.presentation_time_delta;\n const duration = eventBox.event_duration;\n const id = eventBox.id;\n const messageData = eventBox.message_data;\n const presentationTime = startTime * timescale + presentationTimeDelta;\n\n if (!eventStreams[schemeIdUri]) return null;\n\n event.eventStream = eventStreams[schemeIdUri];\n event.eventStream.value = value;\n event.eventStream.timescale = timescale;\n event.duration = duration;\n event.id = id;\n event.presentationTime = presentationTime;\n event.messageData = messageData;\n event.presentationTimeDelta = presentationTimeDelta;\n\n return event;\n }\n\n function getEventsFor(info, streamProcessor) {\n\n let events = [];\n\n if (voPeriods.length === 0) {\n return events;\n }\n\n const manifest = voPeriods[0].mpd.manifest;\n\n if (info instanceof StreamInfo) {\n events = dashManifestModel.getEventsForPeriod(getPeriodForStreamInfo(info, voPeriods));\n } else if (info instanceof MediaInfo) {\n events = dashManifestModel.getEventStreamForAdaptationSet(manifest, getAdaptationForMediaInfo(info));\n } else if (info instanceof RepresentationInfo) {\n events = dashManifestModel.getEventStreamForRepresentation(manifest, getRepresentationForRepresentationInfo(info, streamProcessor.getRepresentationController()));\n }\n\n return events;\n }\n\n function reset() {\n voPeriods = [];\n voAdaptations = {};\n }\n\n instance = {\n convertDataToRepresentationInfo: convertRepresentationToRepresentationInfo,\n getDataForMedia: getAdaptationForMediaInfo,\n getStreamsInfo: getStreamsInfo,\n getMediaInfoForType: getMediaInfoForType,\n getAllMediaInfoForType: getAllMediaInfoForType,\n getCurrentRepresentationInfo: getCurrentRepresentationInfo,\n getRepresentationInfoForQuality: getRepresentationInfoForQuality,\n updateData: updateData,\n getInitRequest: getInitRequest,\n getNextFragmentRequest: getNextFragmentRequest,\n getFragmentRequestForTime: getFragmentRequestForTime,\n generateFragmentRequestForTime: generateFragmentRequestForTime,\n getIndexHandlerTime: getIndexHandlerTime,\n setIndexHandlerTime: setIndexHandlerTime,\n getEventsFor: getEventsFor,\n getEvent: getEvent,\n setConfig: setConfig,\n updatePeriods: updatePeriods,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nDashAdapter.__dashjs_factory_name = 'DashAdapter';\nexport default FactoryMaker.getSingletonFactory(DashAdapter);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../streaming/constants/Constants';\nimport DashConstants from './constants/DashConstants';\nimport FragmentRequest from '../streaming/vo/FragmentRequest';\nimport DashJSError from '../streaming/vo/DashJSError';\nimport {HTTPRequest} from '../streaming/vo/metrics/HTTPRequest';\nimport Events from '../core/events/Events';\nimport EventBus from '../core/EventBus';\nimport FactoryMaker from '../core/FactoryMaker';\nimport Debug from '../core/Debug';\nimport URLUtils from '../streaming/utils/URLUtils';\nimport Representation from './vo/Representation';\n\nimport {replaceTokenForTemplate, getTimeBasedSegment, getSegmentByIndex} from './utils/SegmentsUtils';\nimport SegmentsGetter from './utils/SegmentsGetter';\n\nimport SegmentBaseLoader from './SegmentBaseLoader';\nimport WebmSegmentBaseLoader from './WebmSegmentBaseLoader';\n\nconst SEGMENTS_UNAVAILABLE_ERROR_CODE = 1;\n\nfunction DashHandler(config) {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n const urlUtils = URLUtils(context).getInstance();\n\n let segmentBaseLoader;\n let timelineConverter = config.timelineConverter;\n let dashMetrics = config.dashMetrics;\n let metricsModel = config.metricsModel;\n let mediaPlayerModel = config.mediaPlayerModel;\n let errHandler = config.errHandler;\n const baseURLController = config.baseURLController;\n\n let instance,\n log,\n index,\n requestedTime,\n currentTime,\n earliestTime,\n streamProcessor,\n segmentsGetter;\n\n function setup() {\n log = Debug(context).getInstance().log.bind(instance);\n\n resetInitialSettings();\n\n segmentBaseLoader = isWebM(config.mimeType) ? WebmSegmentBaseLoader(context).getInstance() : SegmentBaseLoader(context).getInstance();\n segmentBaseLoader.setConfig({\n baseURLController: baseURLController,\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n errHandler: errHandler\n });\n\n eventBus.on(Events.INITIALIZATION_LOADED, onInitializationLoaded, instance);\n eventBus.on(Events.SEGMENTS_LOADED, onSegmentsLoaded, instance);\n }\n\n function isWebM (mimeType) {\n let type = mimeType.split('/')[1];\n\n return 'webm' === type.toLowerCase();\n }\n\n function initialize(StreamProcessor) {\n streamProcessor = StreamProcessor;\n\n let isDynamic = streamProcessor ? streamProcessor.getStreamInfo().manifestInfo.isDynamic : null;\n\n segmentBaseLoader.initialize();\n\n segmentsGetter = SegmentsGetter(context).create(config, isDynamic);\n }\n\n function getStreamProcessor() {\n return streamProcessor;\n }\n\n function setCurrentTime(value) {\n currentTime = value;\n }\n\n function getCurrentTime() {\n return currentTime;\n }\n\n function getEarliestTime() {\n return earliestTime;\n }\n\n function resetInitialSettings() {\n index = -1;\n currentTime = 0;\n earliestTime = NaN;\n requestedTime = null;\n streamProcessor = null;\n segmentsGetter = null;\n }\n\n function reset() {\n resetInitialSettings();\n\n eventBus.off(Events.INITIALIZATION_LOADED, onInitializationLoaded, instance);\n eventBus.off(Events.SEGMENTS_LOADED, onSegmentsLoaded, instance);\n }\n\n function unescapeDollarsInTemplate(url) {\n return url ? url.split('$$').join('$') : url;\n }\n\n function replaceIDForTemplate(url, value) {\n if (value === null || url === null || url.indexOf('$RepresentationID$') === -1) { return url; }\n let v = value.toString();\n return url.split('$RepresentationID$').join(v);\n }\n\n function setRequestUrl(request, destination, representation) {\n const baseURL = baseURLController.resolve(representation.path);\n let url,\n serviceLocation;\n\n if (!baseURL || (destination === baseURL.url) || (!urlUtils.isRelative(destination))) {\n url = destination;\n } else {\n url = baseURL.url;\n serviceLocation = baseURL.serviceLocation;\n\n if (destination) {\n url = urlUtils.resolve(destination, url);\n }\n }\n\n if (urlUtils.isRelative(url)) {\n return false;\n }\n\n request.url = url;\n request.serviceLocation = serviceLocation;\n\n return true;\n }\n\n function generateInitRequest(representation, mediaType) {\n\n const request = new FragmentRequest();\n const period = representation.adaptation.period;\n const presentationStartTime = period.start;\n const isDynamic = streamProcessor ? streamProcessor.getStreamInfo().manifestInfo.isDynamic : null;\n\n request.mediaType = mediaType;\n request.type = HTTPRequest.INIT_SEGMENT_TYPE;\n request.range = representation.range;\n request.availabilityStartTime = timelineConverter.calcAvailabilityStartTimeFromPresentationTime(presentationStartTime, period.mpd, isDynamic);\n request.availabilityEndTime = timelineConverter.calcAvailabilityEndTimeFromPresentationTime(presentationStartTime + period.duration, period.mpd, isDynamic);\n request.quality = representation.index;\n request.mediaInfo = streamProcessor ? streamProcessor.getMediaInfo() : null;\n request.representationId = representation.id;\n\n if (setRequestUrl(request, representation.initialization, representation)) {\n return request;\n }\n }\n\n function getInitRequest(representation) {\n const type = streamProcessor ? streamProcessor.getType() : null;\n if (!representation) return null;\n const request = generateInitRequest(representation, type);\n return request;\n }\n\n function isMediaFinished(representation) {\n\n let isFinished = false;\n const isDynamic = streamProcessor ? streamProcessor.getStreamInfo().manifestInfo.isDynamic : null;\n\n if (!isDynamic && index === representation.availableSegmentsNumber) {\n isFinished = true;\n } else {\n const seg = getSegmentByIndex(index, representation);\n if (seg) {\n const time = seg.presentationStartTime - representation.adaptation.period.start;\n const duration = representation.adaptation.period.duration;\n log(representation.segmentInfoType + ': ' + time + ' / ' + duration);\n isFinished = representation.segmentInfoType === DashConstants.SEGMENT_TIMELINE && isDynamic ? false : time >= duration;\n } else {\n log('isMediaFinished - no segment found');\n }\n }\n\n return isFinished;\n }\n\n function updateSegments(voRepresentation) {\n segmentsGetter.getSegments(voRepresentation, requestedTime, index, onSegmentListUpdated);\n }\n\n function onSegmentListUpdated(voRepresentation, segments) {\n const isDynamic = streamProcessor ? streamProcessor.getStreamInfo().manifestInfo.isDynamic : null;\n voRepresentation.segments = segments;\n if (segments && segments.length > 0) {\n earliestTime = isNaN(earliestTime) ? segments[0].presentationStartTime : Math.min(segments[0].presentationStartTime, earliestTime);\n if (isDynamic && isNaN(timelineConverter.getExpectedLiveEdge())) {\n const lastSegment = segments[segments.length - 1];\n const liveEdge = lastSegment.presentationStartTime;\n const metrics = metricsModel.getMetricsFor(Constants.STREAM);\n // the last segment is the Expected, not calculated, live edge.\n timelineConverter.setExpectedLiveEdge(liveEdge);\n metricsModel.updateManifestUpdateInfo(dashMetrics.getCurrentManifestUpdate(metrics), {presentationStartTime: liveEdge});\n }\n }\n }\n\n function updateSegmentList(voRepresentation) {\n\n if (!voRepresentation) {\n throw new Error('no representation');\n }\n\n voRepresentation.segments = null;\n\n updateSegments(voRepresentation);\n }\n\n function updateRepresentation(voRepresentation, keepIdx) {\n const hasInitialization = Representation.hasInitialization(voRepresentation);\n const hasSegments = Representation.hasSegments(voRepresentation);\n const type = streamProcessor ? streamProcessor.getType() : null;\n const isDynamic = streamProcessor ? streamProcessor.getStreamInfo().manifestInfo.isDynamic : null;\n let error;\n\n if (!voRepresentation.segmentDuration && !voRepresentation.segments) {\n updateSegmentList(voRepresentation);\n }\n\n voRepresentation.segmentAvailabilityRange = null;\n voRepresentation.segmentAvailabilityRange = timelineConverter.calcSegmentAvailabilityRange(voRepresentation, isDynamic);\n\n if ((voRepresentation.segmentAvailabilityRange.end < voRepresentation.segmentAvailabilityRange.start) && !voRepresentation.useCalculatedLiveEdgeTime) {\n error = new DashJSError(SEGMENTS_UNAVAILABLE_ERROR_CODE, 'no segments are available yet', {availabilityDelay: voRepresentation.segmentAvailabilityRange.start - voRepresentation.segmentAvailabilityRange.end});\n eventBus.trigger(Events.REPRESENTATION_UPDATED, {sender: this, representation: voRepresentation, error: error});\n return;\n }\n\n if (!keepIdx) index = -1;\n\n if (voRepresentation.segmentDuration) {\n updateSegmentList(voRepresentation);\n }\n\n if (!hasInitialization) {\n segmentBaseLoader.loadInitialization(voRepresentation);\n }\n\n if (!hasSegments) {\n segmentBaseLoader.loadSegments(voRepresentation, type, voRepresentation.indexRange);\n }\n\n if (hasInitialization && hasSegments) {\n eventBus.trigger(Events.REPRESENTATION_UPDATED, {sender: this, representation: voRepresentation});\n }\n }\n\n function getIndexForSegments(time, representation, timeThreshold) {\n const segments = representation.segments;\n const ln = segments ? segments.length : null;\n\n let idx = -1;\n let epsilon,\n frag,\n ft,\n fd,\n i;\n\n if (segments && ln > 0) {\n for (i = 0; i < ln; i++) {\n frag = segments[i];\n ft = frag.presentationStartTime;\n fd = frag.duration;\n epsilon = (timeThreshold === undefined || timeThreshold === null) ? fd / 2 : timeThreshold;\n if ((time + epsilon) >= ft &&\n (time - epsilon) < (ft + fd)) {\n idx = frag.availabilityIdx;\n break;\n }\n }\n }\n\n return idx;\n }\n\n function getRequestForSegment(segment) {\n if (segment === null || segment === undefined) {\n return null;\n }\n\n let request = new FragmentRequest();\n let representation = segment.representation;\n let bandwidth = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].bandwidth;\n let url = segment.media;\n const type = streamProcessor ? streamProcessor.getType() : null;\n\n url = replaceTokenForTemplate(url, 'Number', segment.replacementNumber);\n url = replaceTokenForTemplate(url, 'Time', segment.replacementTime);\n url = replaceTokenForTemplate(url, 'Bandwidth', bandwidth);\n url = replaceIDForTemplate(url, representation.id);\n url = unescapeDollarsInTemplate(url);\n\n request.mediaType = type;\n request.type = HTTPRequest.MEDIA_SEGMENT_TYPE;\n request.range = segment.mediaRange;\n request.startTime = segment.presentationStartTime;\n request.duration = segment.duration;\n request.timescale = representation.timescale;\n request.availabilityStartTime = segment.availabilityStartTime;\n request.availabilityEndTime = segment.availabilityEndTime;\n request.wallStartTime = segment.wallStartTime;\n request.quality = representation.index;\n request.index = segment.availabilityIdx;\n request.mediaInfo = streamProcessor.getMediaInfo();\n request.adaptationIndex = representation.adaptation.index;\n\n if (setRequestUrl(request, url, representation)) {\n return request;\n }\n }\n\n function getSegmentRequestForTime(representation, time, options) {\n let request,\n segment,\n finished;\n\n const type = streamProcessor ? streamProcessor.getType() : null;\n const isDynamic = streamProcessor ? streamProcessor.getStreamInfo().manifestInfo.isDynamic : null;\n let idx = index;\n let keepIdx = options ? options.keepIdx : false;\n let timeThreshold = options ? options.timeThreshold : null;\n let ignoreIsFinished = (options && options.ignoreIsFinished) ? true : false;\n\n if (!representation) {\n return null;\n }\n\n if (requestedTime !== time) { // When playing at live edge with 0 delay we may loop back with same time and index until it is available. Reduces verboseness of logs.\n requestedTime = time;\n log('Getting the request for ' + type + ' time : ' + time);\n }\n\n updateSegments(representation);\n index = getIndexForSegments(time, representation, timeThreshold);\n //Index may be -1 if getSegments needs to update again. So after getSegments is called and updated then try to get index again.\n if (index < 0) {\n updateSegments(representation);\n index = getIndexForSegments(time, representation, timeThreshold);\n }\n\n if (index > 0) {\n log('Index for ' + type + ' time ' + time + ' is ' + index );\n }\n\n finished = !ignoreIsFinished ? isMediaFinished(representation) : false;\n if (finished) {\n request = new FragmentRequest();\n request.action = FragmentRequest.ACTION_COMPLETE;\n request.index = index;\n request.mediaType = type;\n request.mediaInfo = streamProcessor.getMediaInfo();\n log('Signal complete.', request);\n\n } else {\n segment = getSegmentByIndex(index, representation);\n request = getRequestForSegment(segment);\n // log('[getSegmentRequestForTime]request is ' + JSON.stringify(request));\n }\n\n if (keepIdx && idx >= 0) {\n index = representation.segmentInfoType === DashConstants.SEGMENT_TIMELINE && isDynamic ? index : idx;\n }\n\n return request;\n }\n\n function generateSegmentRequestForTime(representation, time) {\n const step = (representation.segmentAvailabilityRange.end - representation.segmentAvailabilityRange.start) / 2;\n\n representation.segments = null;\n representation.segmentAvailabilityRange = {start: time - step, end: time + step};\n return getSegmentRequestForTime(representation, time, {keepIdx: false, ignoreIsFinished: true});\n }\n\n function getNextSegmentRequest(representation) {\n let request,\n segment,\n finished;\n\n const type = streamProcessor ? streamProcessor.getType() : null;\n const isDynamic = streamProcessor ? streamProcessor.getStreamInfo().manifestInfo.isDynamic : null;\n\n if (!representation || index === -1) {\n return null;\n }\n\n requestedTime = null;\n index++;\n\n log('Getting the next request at index: ' + index);\n\n // check that there is a segment in this index. If none, update segments and wait for next time loop is called\n let seg = getSegmentByIndex(index, representation);\n if (!seg && isDynamic) {\n log('No segment found at index: ' + index + '. Wait for next loop');\n updateSegments(representation);\n index--;\n return null;\n }\n\n finished = isMediaFinished(representation);\n if (finished) {\n request = new FragmentRequest();\n request.action = FragmentRequest.ACTION_COMPLETE;\n request.index = index;\n request.mediaType = type;\n request.mediaInfo = streamProcessor.getMediaInfo();\n log('Signal complete.');\n } else {\n updateSegments(representation);\n segment = getSegmentByIndex(index, representation);\n request = getRequestForSegment(segment);\n // log('[getSegmentRequestForTime]request is ' + JSON.stringify(request));\n if (!segment && isDynamic) {\n /*\n Sometimes when playing dynamic streams with 0 fragment delay at live edge we ask for\n an index before it is available so we decrement index back and send null request\n which triggers the validate loop to rerun and the next time the segment should be\n available.\n */\n index-- ;\n }\n }\n\n return request;\n }\n\n function onInitializationLoaded(e) {\n let representation = e.representation;\n //log(\"Got an initialization.\");\n if (!representation.segments) return;\n\n eventBus.trigger(Events.REPRESENTATION_UPDATED, {sender: this, representation: representation});\n }\n\n function onSegmentsLoaded(e) {\n const type = streamProcessor ? streamProcessor.getType() : null;\n const isDynamic = streamProcessor ? streamProcessor.getStreamInfo().manifestInfo.isDynamic : null;\n if (e.error || (type !== e.mediaType)) return;\n\n const fragments = e.segments;\n let representation = e.representation;\n let segments = [];\n let count = 0;\n\n let i,\n len,\n s,\n seg;\n\n for (i = 0, len = fragments.length; i < len; i++) {\n s = fragments[i];\n\n seg = getTimeBasedSegment(\n timelineConverter,\n isDynamic,\n representation,\n s.startTime,\n s.duration,\n s.timescale,\n s.media,\n s.mediaRange,\n count);\n\n segments.push(seg);\n seg = null;\n count++;\n }\n\n representation.segmentAvailabilityRange = {start: segments[0].presentationStartTime, end: segments[len - 1].presentationStartTime};\n representation.availableSegmentsNumber = len;\n\n onSegmentListUpdated(representation, segments);\n\n if (!Representation.hasInitialization(representation)) return;\n\n eventBus.trigger(Events.REPRESENTATION_UPDATED, {sender: this, representation: representation});\n }\n\n instance = {\n initialize: initialize,\n getStreamProcessor: getStreamProcessor,\n getInitRequest: getInitRequest,\n getSegmentRequestForTime: getSegmentRequestForTime,\n getNextSegmentRequest: getNextSegmentRequest,\n generateSegmentRequestForTime: generateSegmentRequestForTime,\n updateRepresentation: updateRepresentation,\n updateSegmentList: updateSegmentList,\n setCurrentTime: setCurrentTime,\n getCurrentTime: getCurrentTime,\n getEarliestTime: getEarliestTime,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nDashHandler.__dashjs_factory_name = 'DashHandler';\nlet factory = FactoryMaker.getClassFactory(DashHandler);\nfactory.SEGMENTS_UNAVAILABLE_ERROR_CODE = SEGMENTS_UNAVAILABLE_ERROR_CODE;\nFactoryMaker.updateClassFactory(DashHandler.__dashjs_factory_name, factory);\nexport default factory;\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport {HTTPRequest} from '../streaming/vo/metrics/HTTPRequest';\nimport FactoryMaker from '../core/FactoryMaker';\nimport MetricsConstants from '../streaming/constants/MetricsConstants';\nimport { round10 } from 'round10';\n\n/**\n * @module DashMetrics\n * @param {object} config configuration passed to DashMetrics\n */\nfunction DashMetrics(config) {\n\n let instance;\n let dashManifestModel = config.dashManifestModel;\n let manifestModel = config.manifestModel;\n\n function getBandwidthForRepresentation(representationId, periodId) {\n let representation;\n const manifest = manifestModel.getValue();\n let period = manifest.Period_asArray[periodId];\n\n representation = findRepresentation(period, representationId);\n\n if (representation === null) {\n return null;\n }\n\n return representation.bandwidth;\n }\n\n\n /**\n *\n * @param {string} representationId\n * @param {number} periodIdx\n * @returns {*}\n */\n function getIndexForRepresentation(representationId, periodIdx) {\n let representationIndex;\n const manifest = manifestModel.getValue();\n let period = manifest.Period_asArray[periodIdx];\n\n representationIndex = findRepresentationIndex(period, representationId);\n return representationIndex;\n }\n\n /**\n * This method returns the current max index based on what is defined in the MPD.\n *\n * @param {string} bufferType - String 'audio' or 'video',\n * @param {number} periodIdx - Make sure this is the period index not id\n * @return {number}\n * @memberof module:DashMetrics\n * @instance\n */\n function getMaxIndexForBufferType(bufferType, periodIdx) {\n let maxIndex;\n const manifest = manifestModel.getValue();\n let period = manifest.Period_asArray[periodIdx];\n\n maxIndex = findMaxBufferIndex(period, bufferType);\n return maxIndex;\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentRepresentationSwitch(metrics) {\n return getCurrent(metrics, MetricsConstants.TRACK_SWITCH);\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getLatestBufferLevelVO(metrics) {\n return getCurrent(metrics, MetricsConstants.BUFFER_LEVEL);\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {number}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentBufferLevel(metrics) {\n const vo = getLatestBufferLevelVO(metrics);\n\n if (vo) {\n return round10(vo.level / 1000, -3);\n }\n\n return 0;\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {null|*|vo}\n * @memberof module:DashMetrics\n * @instance\n */\n function getRequestsQueue(metrics) {\n return metrics ? metrics.RequestsQueue : null;\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentHttpRequest(metrics) {\n if (!metrics) {\n return null;\n }\n\n const httpList = metrics.HttpList;\n let currentHttpList = null;\n\n let httpListLength,\n httpListLastIndex;\n\n if (!httpList || httpList.length <= 0) {\n return null;\n }\n\n httpListLength = httpList.length;\n httpListLastIndex = httpListLength - 1;\n\n while (httpListLastIndex >= 0) {\n if (httpList[httpListLastIndex].responsecode) {\n currentHttpList = httpList[httpListLastIndex];\n break;\n }\n httpListLastIndex--;\n }\n return currentHttpList;\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getHttpRequests(metrics) {\n if (!metrics) {\n return [];\n }\n\n return !!metrics.HttpList ? metrics.HttpList : [];\n }\n\n /**\n * @param {MetricsList} metrics\n * @param {string} metricName\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrent(metrics, metricName) {\n if (!metrics) {\n return null;\n }\n\n const list = metrics[metricName];\n\n if (!list) {\n return null;\n }\n\n const length = list.length;\n\n if (length <= 0) {\n return null;\n }\n\n return list[length - 1];\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentDroppedFrames(metrics) {\n return getCurrent(metrics, MetricsConstants.DROPPED_FRAMES);\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentSchedulingInfo(metrics) {\n return getCurrent(metrics, MetricsConstants.SCHEDULING_INFO);\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentManifestUpdate(metrics) {\n return getCurrent(metrics, MetricsConstants.MANIFEST_UPDATE);\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentDVRInfo(metrics) {\n return getCurrent(metrics, MetricsConstants.DVR_INFO);\n }\n\n /**\n * @param {MetricsList} metrics\n * @param {string} id\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getLatestMPDRequestHeaderValueByID(metrics, id) {\n let headers = {};\n let httpRequestList,\n httpRequest,\n i;\n\n httpRequestList = getHttpRequests(metrics);\n\n for (i = httpRequestList.length - 1; i >= 0; i--) {\n httpRequest = httpRequestList[i];\n\n if (httpRequest.type === HTTPRequest.MPD_TYPE) {\n headers = parseResponseHeaders(httpRequest._responseHeaders);\n break;\n }\n }\n\n return headers[id] === undefined ? null : headers[id];\n }\n\n /**\n * @param {MetricsList} metrics\n * @param {string} id\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getLatestFragmentRequestHeaderValueByID(metrics, id) {\n let headers = {};\n let httpRequest = getCurrentHttpRequest(metrics);\n if (httpRequest) {\n headers = parseResponseHeaders(httpRequest._responseHeaders);\n }\n return headers[id] === undefined ? null : headers[id];\n }\n\n function parseResponseHeaders(headerStr) {\n let headers = {};\n if (!headerStr) {\n return headers;\n }\n\n // Trim headerStr to fix a MS Edge bug with xhr.getAllResponseHeaders method\n // which send a string starting with a \"\\n\" character\n let headerPairs = headerStr.trim().split('\\u000d\\u000a');\n for (let i = 0, ilen = headerPairs.length; i < ilen; i++) {\n let headerPair = headerPairs[i];\n let index = headerPair.indexOf('\\u003a\\u0020');\n if (index > 0) {\n headers[headerPair.substring(0, index)] = headerPair.substring(index + 2);\n }\n }\n return headers;\n }\n\n function findRepresentationIndex(period, representationId) {\n const index = findRepresentation(period, representationId, true);\n\n if (index !== null) {\n return index;\n }\n\n return -1;\n }\n\n function findRepresentation(period, representationId, returnIndex) {\n let adaptationSet,\n adaptationSetArray,\n representation,\n representationArray,\n adaptationSetArrayIndex,\n representationArrayIndex;\n\n if (period) {\n adaptationSetArray = period.AdaptationSet_asArray;\n for (adaptationSetArrayIndex = 0; adaptationSetArrayIndex < adaptationSetArray.length; adaptationSetArrayIndex = adaptationSetArrayIndex + 1) {\n adaptationSet = adaptationSetArray[adaptationSetArrayIndex];\n representationArray = adaptationSet.Representation_asArray;\n for (representationArrayIndex = 0; representationArrayIndex < representationArray.length; representationArrayIndex = representationArrayIndex + 1) {\n representation = representationArray[representationArrayIndex];\n if (representationId === representation.id) {\n if (returnIndex) {\n return representationArrayIndex;\n } else {\n return representation;\n }\n }\n }\n }\n }\n\n return null;\n }\n\n function adaptationIsType(adaptation, bufferType) {\n return dashManifestModel.getIsTypeOf(adaptation, bufferType);\n }\n\n function findMaxBufferIndex(period, bufferType) {\n let adaptationSet,\n adaptationSetArray,\n representationArray,\n adaptationSetArrayIndex;\n\n if (!period || !bufferType) return -1;\n\n adaptationSetArray = period.AdaptationSet_asArray;\n for (adaptationSetArrayIndex = 0; adaptationSetArrayIndex < adaptationSetArray.length; adaptationSetArrayIndex = adaptationSetArrayIndex + 1) {\n adaptationSet = adaptationSetArray[adaptationSetArrayIndex];\n representationArray = adaptationSet.Representation_asArray;\n if (adaptationIsType(adaptationSet, bufferType)) {\n return representationArray.length;\n }\n }\n\n return -1;\n }\n\n instance = {\n getBandwidthForRepresentation: getBandwidthForRepresentation,\n getIndexForRepresentation: getIndexForRepresentation,\n getMaxIndexForBufferType: getMaxIndexForBufferType,\n getCurrentRepresentationSwitch: getCurrentRepresentationSwitch,\n getLatestBufferLevelVO: getLatestBufferLevelVO,\n getCurrentBufferLevel: getCurrentBufferLevel,\n getCurrentHttpRequest: getCurrentHttpRequest,\n getHttpRequests: getHttpRequests,\n getCurrentDroppedFrames: getCurrentDroppedFrames,\n getCurrentSchedulingInfo: getCurrentSchedulingInfo,\n getCurrentDVRInfo: getCurrentDVRInfo,\n getCurrentManifestUpdate: getCurrentManifestUpdate,\n getLatestFragmentRequestHeaderValueByID: getLatestFragmentRequestHeaderValueByID,\n getLatestMPDRequestHeaderValueByID: getLatestMPDRequestHeaderValueByID,\n getRequestsQueue: getRequestsQueue\n };\n\n return instance;\n}\n\nDashMetrics.__dashjs_factory_name = 'DashMetrics';\nexport default FactoryMaker.getSingletonFactory(DashMetrics);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport RequestModifier from '../streaming/utils/RequestModifier';\nimport Segment from './vo/Segment';\nimport DashJSError from '../streaming/vo/DashJSError';\nimport Events from '../core/events/Events';\nimport EventBus from '../core/EventBus';\nimport BoxParser from '../streaming/utils/BoxParser';\nimport FactoryMaker from '../core/FactoryMaker';\nimport Debug from '../core/Debug';\nimport {HTTPRequest} from '../streaming/vo/metrics/HTTPRequest';\nimport FragmentRequest from '../streaming/vo/FragmentRequest';\nimport XHRLoader from '../streaming/XHRLoader';\n\nfunction SegmentBaseLoader() {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n errHandler,\n boxParser,\n requestModifier,\n metricsModel,\n mediaPlayerModel,\n xhrLoader,\n baseURLController;\n\n function initialize() {\n boxParser = BoxParser(context).getInstance();\n requestModifier = RequestModifier(context).getInstance();\n xhrLoader = XHRLoader(context).create({\n errHandler: errHandler,\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n requestModifier: requestModifier\n });\n }\n\n function setConfig(config) {\n if (config.baseURLController) {\n baseURLController = config.baseURLController;\n }\n\n if (config.metricsModel) {\n metricsModel = config.metricsModel;\n }\n\n if (config.mediaPlayerModel) {\n mediaPlayerModel = config.mediaPlayerModel;\n }\n\n if (config.errHandler) {\n errHandler = config.errHandler;\n }\n }\n\n function checkSetConfigCall() {\n if (!baseURLController || !baseURLController.hasOwnProperty('resolve')) {\n throw new Error('setConfig function has to be called previously');\n }\n }\n\n function loadInitialization(representation, loadingInfo) {\n checkSetConfigCall();\n let initRange = null;\n let isoFile = null;\n let baseUrl = baseURLController.resolve(representation.path);\n let info = loadingInfo || {\n init: true,\n url: baseUrl ? baseUrl.url : undefined,\n range: {\n start: 0,\n end: 1500\n },\n searching: false,\n bytesLoaded: 0,\n bytesToLoad: 1500\n };\n\n log('Start searching for initialization.');\n\n const request = getFragmentRequest(info);\n\n const onload = function (response) {\n\n info.bytesLoaded = info.range.end;\n isoFile = boxParser.parse(response);\n initRange = findInitRange(isoFile);\n\n if (initRange) {\n representation.range = initRange;\n // note that we don't explicitly set rep.initialization as this\n // will be computed when all BaseURLs are resolved later\n eventBus.trigger(Events.INITIALIZATION_LOADED, {representation: representation});\n } else {\n info.range.end = info.bytesLoaded + info.bytesToLoad;\n loadInitialization(representation, info);\n }\n\n };\n\n const onerror = function () {\n eventBus.trigger(Events.INITIALIZATION_LOADED, {representation: representation});\n };\n\n xhrLoader.load({request: request, success: onload, error: onerror});\n\n log('Perform init search: ' + info.url);\n }\n\n function loadSegments(representation, type, range, loadingInfo, callback) {\n checkSetConfigCall();\n if (range && (range.start === undefined || range.end === undefined)) {\n let parts = range ? range.toString().split('-') : null;\n range = parts ? {start: parseFloat(parts[0]), end: parseFloat(parts[1])} : null;\n }\n\n callback = !callback ? onLoaded : callback;\n let isoFile = null;\n let sidx = null;\n let hasRange = !!range;\n let baseUrl = baseURLController.resolve(representation.path);\n let info = {\n init: false,\n url: baseUrl ? baseUrl.url : undefined,\n range: hasRange ? range : { start: 0, end: 1500 },\n searching: !hasRange,\n bytesLoaded: loadingInfo ? loadingInfo.bytesLoaded : 0,\n bytesToLoad: 1500\n };\n\n const request = getFragmentRequest(info);\n\n const onload = function (response) {\n let extraBytes = info.bytesToLoad;\n let loadedLength = response.byteLength;\n\n info.bytesLoaded = info.range.end - info.range.start;\n isoFile = boxParser.parse(response);\n sidx = isoFile.getBox('sidx');\n\n if (!sidx || !sidx.isComplete) {\n if (sidx) {\n info.range.start = sidx.offset || info.range.start;\n info.range.end = info.range.start + (sidx.size || extraBytes);\n } else if (loadedLength < info.bytesLoaded) {\n // if we have reached a search limit or if we have reached the end of the file we have to stop trying to find sidx\n callback(null, representation, type);\n return;\n } else {\n let lastBox = isoFile.getLastBox();\n\n if (lastBox && lastBox.size) {\n info.range.start = lastBox.offset + lastBox.size;\n info.range.end = info.range.start + extraBytes;\n } else {\n info.range.end += extraBytes;\n }\n }\n loadSegments(representation, type, info.range, info, callback);\n } else {\n let ref = sidx.references;\n let loadMultiSidx,\n segments;\n\n if (ref !== null && ref !== undefined && ref.length > 0) {\n loadMultiSidx = (ref[0].reference_type === 1);\n }\n\n if (loadMultiSidx) {\n log('Initiate multiple SIDX load.');\n info.range.end = info.range.start + sidx.size;\n\n let j, len, ss, se, r;\n let segs = [];\n let count = 0;\n let offset = (sidx.offset || info.range.start) + sidx.size;\n const tmpCallback = function (result) {\n if (result) {\n segs = segs.concat(result);\n count++;\n\n if (count >= len) {\n callback(segs, representation, type);\n }\n } else {\n callback(null, representation, type);\n }\n };\n\n for (j = 0, len = ref.length; j < len; j++) {\n ss = offset;\n se = offset + ref[j].referenced_size - 1;\n offset = offset + ref[j].referenced_size;\n r = {start: ss, end: se};\n loadSegments(representation, null, r, info, tmpCallback);\n }\n\n } else {\n log('Parsing segments from SIDX.');\n segments = getSegmentsForSidx(sidx, info);\n callback(segments, representation, type);\n }\n }\n };\n\n const onerror = function () {\n callback(null, representation, type);\n };\n\n xhrLoader.load({request: request, success: onload, error: onerror});\n log('Perform SIDX load: ' + info.url);\n }\n\n function reset() {\n xhrLoader.abort();\n xhrLoader = null;\n errHandler = null;\n boxParser = null;\n requestModifier = null;\n }\n\n function getSegmentsForSidx(sidx, info) {\n\n const refs = sidx.references;\n const len = refs.length;\n const timescale = sidx.timescale;\n let time = sidx.earliest_presentation_time;\n let start = info.range.start + sidx.offset + sidx.first_offset + sidx.size;\n let segments = [];\n let segment,\n end,\n duration,\n size;\n\n for (let i = 0; i < len; i++) {\n duration = refs[i].subsegment_duration;\n size = refs[i].referenced_size;\n\n segment = new Segment();\n // note that we don't explicitly set segment.media as this will be\n // computed when all BaseURLs are resolved later\n segment.duration = duration;\n segment.startTime = time;\n segment.timescale = timescale;\n end = start + size - 1;\n segment.mediaRange = start + '-' + end;\n segments.push(segment);\n time += duration;\n start += size;\n }\n\n return segments;\n }\n\n function findInitRange(isoFile) {\n const ftyp = isoFile.getBox('ftyp');\n const moov = isoFile.getBox('moov');\n\n let initRange = null;\n let start,\n end;\n\n log('Searching for initialization.');\n\n if (moov && moov.isComplete) {\n start = ftyp ? ftyp.offset : moov.offset;\n end = moov.offset + moov.size - 1;\n initRange = start + '-' + end;\n\n log('Found the initialization. Range: ' + initRange);\n }\n\n return initRange;\n }\n\n function getFragmentRequest(info) {\n if (!info.url) {\n return;\n }\n\n let request = new FragmentRequest();\n\n request.type = info.init ? HTTPRequest.INIT_SEGMENT_TYPE : HTTPRequest.MEDIA_SEGMENT_TYPE;\n request.url = info.url;\n request.range = info.range.start + '-' + info.range.end;\n\n return request;\n }\n\n function onLoaded(segments, representation, type) {\n if (segments) {\n eventBus.trigger(Events.SEGMENTS_LOADED, {segments: segments, representation: representation, mediaType: type});\n } else {\n eventBus.trigger(Events.SEGMENTS_LOADED, {segments: null, representation: representation, mediaType: type, error: new DashJSError(null, 'error loading segments', null)});\n }\n }\n\n instance = {\n setConfig: setConfig,\n initialize: initialize,\n loadInitialization: loadInitialization,\n loadSegments: loadSegments,\n reset: reset\n };\n\n return instance;\n}\n\nSegmentBaseLoader.__dashjs_factory_name = 'SegmentBaseLoader';\nexport default FactoryMaker.getSingletonFactory(SegmentBaseLoader);\n", - "import Events from '../core/events/Events';\nimport EventBus from '../core/EventBus';\nimport EBMLParser from '../streaming/utils/EBMLParser';\nimport FactoryMaker from '../core/FactoryMaker';\nimport Debug from '../core/Debug';\nimport RequestModifier from '../streaming/utils/RequestModifier';\nimport Segment from './vo/Segment';\nimport {\n HTTPRequest\n} from '../streaming/vo/metrics/HTTPRequest';\nimport FragmentRequest from '../streaming/vo/FragmentRequest';\nimport XHRLoader from '../streaming/XHRLoader';\n\nfunction WebmSegmentBaseLoader() {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n WebM,\n errHandler,\n requestModifier,\n metricsModel,\n mediaPlayerModel,\n xhrLoader,\n baseURLController;\n\n function setup() {\n WebM = {\n EBML: {\n tag: 0x1A45DFA3,\n required: true\n },\n Segment: {\n tag: 0x18538067,\n required: true,\n SeekHead: {\n tag: 0x114D9B74,\n required: true\n },\n Info: {\n tag: 0x1549A966,\n required: true,\n TimecodeScale: {\n tag: 0x2AD7B1,\n required: true,\n parse: 'getMatroskaUint'\n },\n Duration: {\n tag: 0x4489,\n required: true,\n parse: 'getMatroskaFloat'\n }\n },\n Tracks: {\n tag: 0x1654AE6B,\n required: true\n },\n Cues: {\n tag: 0x1C53BB6B,\n required: true,\n CuePoint: {\n tag: 0xBB,\n required: true,\n CueTime: {\n tag: 0xB3,\n required: true,\n parse: 'getMatroskaUint'\n },\n CueTrackPositions: {\n tag: 0xB7,\n required: true,\n CueTrack: {\n tag: 0xF7,\n required: true,\n parse: 'getMatroskaUint'\n },\n CueClusterPosition: {\n tag: 0xF1,\n required: true,\n parse: 'getMatroskaUint'\n },\n CueBlockNumber: {\n tag: 0x5378\n }\n }\n }\n }\n },\n Void: {\n tag: 0xEC,\n required: true\n }\n };\n }\n\n function initialize() {\n requestModifier = RequestModifier(context).getInstance();\n xhrLoader = XHRLoader(context).create({\n errHandler: errHandler,\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n requestModifier: requestModifier\n });\n }\n\n function setConfig(config) {\n if (!config.baseURLController || !config.metricsModel || !config.mediaPlayerModel || !config.errHandler) {\n throw new Error('Missing config parameter(s)');\n }\n baseURLController = config.baseURLController;\n metricsModel = config.metricsModel;\n mediaPlayerModel = config.mediaPlayerModel;\n errHandler = config.errHandler;\n }\n\n function parseCues(ab) {\n let cues = [];\n let cue;\n let cueSize;\n let cueTrack;\n let ebmlParser = EBMLParser(context).create({\n data: ab\n });\n let numSize;\n\n ebmlParser.consumeTag(WebM.Segment.Cues);\n cueSize = ebmlParser.getMatroskaCodedNum();\n\n while (ebmlParser.moreData() &&\n ebmlParser.consumeTagAndSize(WebM.Segment.Cues.CuePoint, true)) {\n cue = {};\n\n cue.CueTime = ebmlParser.parseTag(WebM.Segment.Cues.CuePoint.CueTime);\n\n cue.CueTracks = [];\n while (ebmlParser.moreData() &&\n ebmlParser.consumeTagAndSize(WebM.Segment.Cues.CuePoint.CueTrackPositions, true)) {\n cueTrack = {};\n\n cueTrack.Track = ebmlParser.parseTag(WebM.Segment.Cues.CuePoint.CueTrackPositions.CueTrack);\n if (cueTrack.Track === 0) {\n throw new Error('Cue track cannot be 0');\n }\n\n cueTrack.ClusterPosition =\n ebmlParser.parseTag(WebM.Segment.Cues.CuePoint.CueTrackPositions.CueClusterPosition);\n\n // block number is strictly optional.\n // we also have to make sure we don't go beyond the end\n // of the cues\n if (ebmlParser.getPos() + 4 > cueSize ||\n !ebmlParser.consumeTag(WebM.Segment.Cues.CuePoint.CueTrackPositions.CueBlockNumber, true)) {\n cue.CueTracks.push(cueTrack);\n } else {\n // since we have already consumed the tag, get the size of\n // the tag's payload, and manually parse an unsigned int\n // from the bit stream\n numSize = ebmlParser.getMatroskaCodedNum();\n cueTrack.BlockNumber = ebmlParser.getMatroskaUint(numSize);\n\n cue.CueTracks.push(cueTrack);\n }\n }\n\n if (cue.CueTracks.length === 0) {\n throw new Error('Mandatory cuetrack not found');\n }\n cues.push(cue);\n }\n\n if (cues.length === 0) {\n throw new Error('mandatory cuepoint not found');\n }\n return cues;\n }\n\n function parseSegments(data, segmentStart, segmentEnd, segmentDuration) {\n let duration;\n let parsed;\n let segments;\n let segment;\n let i;\n let len;\n let start;\n let end;\n\n parsed = parseCues(data);\n segments = [];\n\n // we are assuming one cue track per cue point\n // both duration and media range require the i + 1 segment\n // the final segment has to use global segment parameters\n for (i = 0, len = parsed.length; i < len; i += 1) {\n segment = new Segment();\n duration = 0;\n\n if (i < parsed.length - 1) {\n duration = parsed[i + 1].CueTime - parsed[i].CueTime;\n } else {\n duration = segmentDuration - parsed[i].CueTime;\n }\n\n // note that we don't explicitly set segment.media as this will be\n // computed when all BaseURLs are resolved later\n segment.duration = duration;\n segment.startTime = parsed[i].CueTime;\n segment.timescale = 1000; // hardcoded for ms\n start = parsed[i].CueTracks[0].ClusterPosition + segmentStart;\n\n if (i < parsed.length - 1) {\n end = parsed[i + 1].CueTracks[0].ClusterPosition + segmentStart - 1;\n } else {\n end = segmentEnd - 1;\n }\n\n segment.mediaRange = start + '-' + end;\n segments.push(segment);\n }\n\n log('Parsed cues: ' + segments.length + ' cues.');\n\n return segments;\n }\n\n function parseEbmlHeader(data, media, theRange, callback) {\n let ebmlParser = EBMLParser(context).create({\n data: data\n });\n let duration;\n let segments;\n let parts = theRange.split('-');\n let request = null;\n let info = {\n url: media,\n range: {\n start: parseFloat(parts[0]),\n end: parseFloat(parts[1])\n },\n request: request\n };\n let segmentEnd;\n let segmentStart;\n\n log('Parse EBML header: ' + info.url);\n\n // skip over the header itself\n ebmlParser.skipOverElement(WebM.EBML);\n ebmlParser.consumeTag(WebM.Segment);\n\n // segments start here\n segmentEnd = ebmlParser.getMatroskaCodedNum();\n segmentEnd += ebmlParser.getPos();\n segmentStart = ebmlParser.getPos();\n\n // skip over any top level elements to get to the segment info\n while (ebmlParser.moreData() &&\n !ebmlParser.consumeTagAndSize(WebM.Segment.Info, true)) {\n if (!(ebmlParser.skipOverElement(WebM.Segment.SeekHead, true) ||\n ebmlParser.skipOverElement(WebM.Segment.Tracks, true) ||\n ebmlParser.skipOverElement(WebM.Segment.Cues, true) ||\n ebmlParser.skipOverElement(WebM.Void, true))) {\n throw new Error('no valid top level element found');\n }\n }\n\n // we only need one thing in segment info, duration\n while (duration === undefined) {\n let infoTag = ebmlParser.getMatroskaCodedNum(true);\n let infoElementSize = ebmlParser.getMatroskaCodedNum();\n\n switch (infoTag) {\n case WebM.Segment.Info.Duration.tag:\n duration = ebmlParser[WebM.Segment.Info.Duration.parse](infoElementSize);\n break;\n default:\n ebmlParser.setPos(ebmlParser.getPos() + infoElementSize);\n break;\n }\n }\n\n // once we have what we need from segment info, we jump right to the\n // cues\n\n request = getFragmentRequest(info);\n\n const onload = function (response) {\n segments = parseSegments(response, segmentStart, segmentEnd, duration);\n callback(segments);\n };\n\n const onloadend = function () {\n log('Download Error: Cues ' + info.url);\n callback(null);\n };\n\n xhrLoader.load({\n request: request,\n success: onload,\n error: onloadend\n });\n\n log('Perform cues load: ' + info.url + ' bytes=' + info.range.start + '-' + info.range.end);\n }\n\n function checkSetConfigCall() {\n if (!baseURLController || !baseURLController.hasOwnProperty('resolve')) {\n throw new Error('setConfig function has to be called previously');\n }\n }\n\n function loadInitialization(representation, loadingInfo) {\n checkSetConfigCall();\n let request = null;\n let baseUrl = baseURLController.resolve(representation.path);\n let media = baseUrl ? baseUrl.url : undefined;\n let initRange = representation.range.split('-');\n let info = loadingInfo || {\n range: {\n start: parseFloat(initRange[0]),\n end: parseFloat(initRange[1])\n },\n request: request,\n url: media,\n init: true\n };\n\n log('Start loading initialization.');\n\n request = getFragmentRequest(info);\n\n const onload = function () {\n // note that we don't explicitly set rep.initialization as this\n // will be computed when all BaseURLs are resolved later\n eventBus.trigger(Events.INITIALIZATION_LOADED, {\n representation: representation\n });\n };\n\n const onloadend = function () {\n eventBus.trigger(Events.INITIALIZATION_LOADED, {\n representation: representation\n });\n };\n\n xhrLoader.load({\n request: request,\n success: onload,\n error: onloadend\n });\n\n log('Perform init load: ' + info.url);\n }\n\n function loadSegments(representation, type, theRange, callback) {\n checkSetConfigCall();\n let request = null;\n let baseUrl = baseURLController.resolve(representation.path);\n let media = baseUrl ? baseUrl.url : undefined;\n let bytesToLoad = 8192;\n let info = {\n bytesLoaded: 0,\n bytesToLoad: bytesToLoad,\n range: {\n start: 0,\n end: bytesToLoad\n },\n request: request,\n url: media,\n init: false\n };\n\n callback = !callback ? onLoaded : callback;\n request = getFragmentRequest(info);\n\n // first load the header, but preserve the manifest range so we can\n // load the cues after parsing the header\n // NOTE: we expect segment info to appear in the first 8192 bytes\n log('Parsing ebml header');\n\n const onload = function (response) {\n parseEbmlHeader(response, media, theRange, function (segments) {\n callback(segments, representation, type);\n });\n };\n\n const onloadend = function () {\n callback(null, representation, type);\n };\n\n xhrLoader.load({\n request: request,\n success: onload,\n error: onloadend\n });\n }\n\n function onLoaded(segments, representation, type) {\n if (segments) {\n eventBus.trigger(Events.SEGMENTS_LOADED, {\n segments: segments,\n representation: representation,\n mediaType: type\n });\n } else {\n eventBus.trigger(Events.SEGMENTS_LOADED, {\n segments: null,\n representation: representation,\n mediaType: type,\n error: new Error(null, 'error loading segments', null)\n });\n }\n }\n\n function getFragmentRequest(info) {\n let request = new FragmentRequest();\n\n request.type = info.init ? HTTPRequest.INIT_SEGMENT_TYPE : HTTPRequest.MEDIA_SEGMENT_TYPE;\n request.url = info.url;\n request.range = info.range.start + '-' + info.range.end;\n\n return request;\n }\n\n function reset() {\n errHandler = null;\n requestModifier = null;\n log = null;\n }\n\n instance = {\n setConfig: setConfig,\n initialize: initialize,\n loadInitialization: loadInitialization,\n loadSegments: loadSegments,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nWebmSegmentBaseLoader.__dashjs_factory_name = 'WebmSegmentBaseLoader';\nexport default FactoryMaker.getSingletonFactory(WebmSegmentBaseLoader);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../streaming/constants/Constants';\nimport DashConstants from './constants/DashConstants';\nimport FragmentRequest from '../streaming/vo/FragmentRequest';\nimport DashJSError from '../streaming/vo/DashJSError';\nimport {HTTPRequest} from '../streaming/vo/metrics/HTTPRequest';\nimport Events from '../core/events/Events';\nimport EventBus from '../core/EventBus';\nimport FactoryMaker from '../core/FactoryMaker';\nimport Debug from '../core/Debug';\nimport URLUtils from '../streaming/utils/URLUtils';\nimport Representation from './vo/Representation';\n\nimport {replaceTokenForTemplate, getTimeBasedSegment, getSegmentByIndex} from './utils/SegmentsUtils';\nimport SegmentsGetter from './utils/SegmentsGetter';\n\nimport SegmentBaseLoader from './SegmentBaseLoader';\nimport WebmSegmentBaseLoader from './WebmSegmentBaseLoader';\n\nconst SEGMENTS_UNAVAILABLE_ERROR_CODE = 1;\n\nfunction DashHandler(config) {\n\n config = config || {};\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n const urlUtils = URLUtils(context).getInstance();\n\n let segmentBaseLoader;\n let timelineConverter = config.timelineConverter;\n let dashMetrics = config.dashMetrics;\n let metricsModel = config.metricsModel;\n let mediaPlayerModel = config.mediaPlayerModel;\n let errHandler = config.errHandler;\n const baseURLController = config.baseURLController;\n\n let instance,\n log,\n index,\n requestedTime,\n currentTime,\n earliestTime,\n streamProcessor,\n segmentsGetter;\n\n function setup() {\n log = Debug(context).getInstance().log.bind(instance);\n\n resetInitialSettings();\n\n segmentBaseLoader = isWebM(config.mimeType) ? WebmSegmentBaseLoader(context).getInstance() : SegmentBaseLoader(context).getInstance();\n segmentBaseLoader.setConfig({\n baseURLController: baseURLController,\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n errHandler: errHandler\n });\n\n eventBus.on(Events.INITIALIZATION_LOADED, onInitializationLoaded, instance);\n eventBus.on(Events.SEGMENTS_LOADED, onSegmentsLoaded, instance);\n }\n\n function isWebM (mimeType) {\n let type = mimeType.split('/')[1];\n\n return 'webm' === type.toLowerCase();\n }\n\n function initialize(StreamProcessor) {\n streamProcessor = StreamProcessor;\n\n let isDynamic = streamProcessor ? streamProcessor.getStreamInfo().manifestInfo.isDynamic : null;\n\n segmentBaseLoader.initialize();\n\n segmentsGetter = SegmentsGetter(context).create(config, isDynamic);\n }\n\n function getStreamProcessor() {\n return streamProcessor;\n }\n\n function setCurrentTime(value) {\n currentTime = value;\n }\n\n function getCurrentTime() {\n return currentTime;\n }\n\n function getEarliestTime() {\n return earliestTime;\n }\n\n function resetInitialSettings() {\n index = -1;\n currentTime = 0;\n earliestTime = NaN;\n requestedTime = null;\n streamProcessor = null;\n segmentsGetter = null;\n }\n\n function reset() {\n resetInitialSettings();\n\n eventBus.off(Events.INITIALIZATION_LOADED, onInitializationLoaded, instance);\n eventBus.off(Events.SEGMENTS_LOADED, onSegmentsLoaded, instance);\n }\n\n function unescapeDollarsInTemplate(url) {\n return url ? url.split('$$').join('$') : url;\n }\n\n function replaceIDForTemplate(url, value) {\n if (value === null || url === null || url.indexOf('$RepresentationID$') === -1) { return url; }\n let v = value.toString();\n return url.split('$RepresentationID$').join(v);\n }\n\n function setRequestUrl(request, destination, representation) {\n const baseURL = baseURLController.resolve(representation.path);\n let url,\n serviceLocation;\n\n if (!baseURL || (destination === baseURL.url) || (!urlUtils.isRelative(destination))) {\n url = destination;\n } else {\n url = baseURL.url;\n serviceLocation = baseURL.serviceLocation;\n\n if (destination) {\n url = urlUtils.resolve(destination, url);\n }\n }\n\n if (urlUtils.isRelative(url)) {\n return false;\n }\n\n request.url = url;\n request.serviceLocation = serviceLocation;\n\n return true;\n }\n\n function generateInitRequest(representation, mediaType) {\n\n const request = new FragmentRequest();\n const period = representation.adaptation.period;\n const presentationStartTime = period.start;\n const isDynamic = streamProcessor ? streamProcessor.getStreamInfo().manifestInfo.isDynamic : null;\n\n request.mediaType = mediaType;\n request.type = HTTPRequest.INIT_SEGMENT_TYPE;\n request.range = representation.range;\n request.availabilityStartTime = timelineConverter.calcAvailabilityStartTimeFromPresentationTime(presentationStartTime, period.mpd, isDynamic);\n request.availabilityEndTime = timelineConverter.calcAvailabilityEndTimeFromPresentationTime(presentationStartTime + period.duration, period.mpd, isDynamic);\n request.quality = representation.index;\n request.mediaInfo = streamProcessor ? streamProcessor.getMediaInfo() : null;\n request.representationId = representation.id;\n\n if (setRequestUrl(request, representation.initialization, representation)) {\n return request;\n }\n }\n\n function getInitRequest(representation) {\n const type = streamProcessor ? streamProcessor.getType() : null;\n if (!representation) return null;\n const request = generateInitRequest(representation, type);\n return request;\n }\n\n function isMediaFinished(representation) {\n\n let isFinished = false;\n const isDynamic = streamProcessor ? streamProcessor.getStreamInfo().manifestInfo.isDynamic : null;\n\n if (!isDynamic && index === representation.availableSegmentsNumber) {\n isFinished = true;\n } else {\n const seg = getSegmentByIndex(index, representation);\n if (seg) {\n const time = parseFloat((seg.presentationStartTime - representation.adaptation.period.start).toFixed(5));\n const duration = representation.adaptation.period.duration;\n log(representation.segmentInfoType + ': ' + time + ' / ' + duration);\n isFinished = representation.segmentInfoType === DashConstants.SEGMENT_TIMELINE && isDynamic ? false : time >= duration;\n } else {\n log('isMediaFinished - no segment found');\n }\n }\n\n return isFinished;\n }\n\n function updateSegments(voRepresentation) {\n segmentsGetter.getSegments(voRepresentation, requestedTime, index, onSegmentListUpdated);\n }\n\n function onSegmentListUpdated(voRepresentation, segments) {\n const isDynamic = streamProcessor ? streamProcessor.getStreamInfo().manifestInfo.isDynamic : null;\n voRepresentation.segments = segments;\n if (segments && segments.length > 0) {\n earliestTime = isNaN(earliestTime) ? segments[0].presentationStartTime : Math.min(segments[0].presentationStartTime, earliestTime);\n if (isDynamic && isNaN(timelineConverter.getExpectedLiveEdge())) {\n const lastSegment = segments[segments.length - 1];\n const liveEdge = lastSegment.presentationStartTime;\n const metrics = metricsModel.getMetricsFor(Constants.STREAM);\n // the last segment is the Expected, not calculated, live edge.\n timelineConverter.setExpectedLiveEdge(liveEdge);\n metricsModel.updateManifestUpdateInfo(dashMetrics.getCurrentManifestUpdate(metrics), {presentationStartTime: liveEdge});\n }\n }\n }\n\n function updateSegmentList(voRepresentation) {\n\n if (!voRepresentation) {\n throw new Error('no representation');\n }\n\n voRepresentation.segments = null;\n\n updateSegments(voRepresentation);\n }\n\n function updateRepresentation(voRepresentation, keepIdx) {\n const hasInitialization = Representation.hasInitialization(voRepresentation);\n const hasSegments = Representation.hasSegments(voRepresentation);\n const type = streamProcessor ? streamProcessor.getType() : null;\n const isDynamic = streamProcessor ? streamProcessor.getStreamInfo().manifestInfo.isDynamic : null;\n let error;\n\n if (!voRepresentation.segmentDuration && !voRepresentation.segments) {\n updateSegmentList(voRepresentation);\n }\n\n voRepresentation.segmentAvailabilityRange = null;\n voRepresentation.segmentAvailabilityRange = timelineConverter.calcSegmentAvailabilityRange(voRepresentation, isDynamic);\n\n if ((voRepresentation.segmentAvailabilityRange.end < voRepresentation.segmentAvailabilityRange.start) && !voRepresentation.useCalculatedLiveEdgeTime) {\n error = new DashJSError(SEGMENTS_UNAVAILABLE_ERROR_CODE, 'no segments are available yet', {availabilityDelay: voRepresentation.segmentAvailabilityRange.start - voRepresentation.segmentAvailabilityRange.end});\n eventBus.trigger(Events.REPRESENTATION_UPDATED, {sender: this, representation: voRepresentation, error: error});\n return;\n }\n\n if (!keepIdx) index = -1;\n\n if (voRepresentation.segmentDuration) {\n updateSegmentList(voRepresentation);\n }\n\n if (!hasInitialization) {\n segmentBaseLoader.loadInitialization(voRepresentation);\n }\n\n if (!hasSegments) {\n segmentBaseLoader.loadSegments(voRepresentation, type, voRepresentation.indexRange);\n }\n\n if (hasInitialization && hasSegments) {\n eventBus.trigger(Events.REPRESENTATION_UPDATED, {sender: this, representation: voRepresentation});\n }\n }\n\n function getIndexForSegments(time, representation, timeThreshold) {\n const segments = representation.segments;\n const ln = segments ? segments.length : null;\n\n let idx = -1;\n let epsilon,\n frag,\n ft,\n fd,\n i;\n\n if (segments && ln > 0) {\n for (i = 0; i < ln; i++) {\n frag = segments[i];\n ft = frag.presentationStartTime;\n fd = frag.duration;\n epsilon = (timeThreshold === undefined || timeThreshold === null) ? fd / 2 : timeThreshold;\n if ((time + epsilon) >= ft &&\n (time - epsilon) < (ft + fd)) {\n idx = frag.availabilityIdx;\n break;\n }\n }\n }\n\n return idx;\n }\n\n function getRequestForSegment(segment) {\n if (segment === null || segment === undefined) {\n return null;\n }\n\n let request = new FragmentRequest();\n let representation = segment.representation;\n let bandwidth = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].bandwidth;\n let url = segment.media;\n const type = streamProcessor ? streamProcessor.getType() : null;\n\n url = replaceTokenForTemplate(url, 'Number', segment.replacementNumber);\n url = replaceTokenForTemplate(url, 'Time', segment.replacementTime);\n url = replaceTokenForTemplate(url, 'Bandwidth', bandwidth);\n url = replaceIDForTemplate(url, representation.id);\n url = unescapeDollarsInTemplate(url);\n\n request.mediaType = type;\n request.type = HTTPRequest.MEDIA_SEGMENT_TYPE;\n request.range = segment.mediaRange;\n request.startTime = segment.presentationStartTime;\n request.duration = segment.duration;\n request.timescale = representation.timescale;\n request.availabilityStartTime = segment.availabilityStartTime;\n request.availabilityEndTime = segment.availabilityEndTime;\n request.wallStartTime = segment.wallStartTime;\n request.quality = representation.index;\n request.index = segment.availabilityIdx;\n request.mediaInfo = streamProcessor.getMediaInfo();\n request.adaptationIndex = representation.adaptation.index;\n\n if (setRequestUrl(request, url, representation)) {\n return request;\n }\n }\n\n function getSegmentRequestForTime(representation, time, options) {\n let request,\n segment,\n finished;\n\n const type = streamProcessor ? streamProcessor.getType() : null;\n const isDynamic = streamProcessor ? streamProcessor.getStreamInfo().manifestInfo.isDynamic : null;\n let idx = index;\n let keepIdx = options ? options.keepIdx : false;\n let timeThreshold = options ? options.timeThreshold : null;\n let ignoreIsFinished = (options && options.ignoreIsFinished) ? true : false;\n\n if (!representation) {\n return null;\n }\n\n if (requestedTime !== time) { // When playing at live edge with 0 delay we may loop back with same time and index until it is available. Reduces verboseness of logs.\n requestedTime = time;\n log('Getting the request for ' + type + ' time : ' + time);\n }\n\n updateSegments(representation);\n index = getIndexForSegments(time, representation, timeThreshold);\n //Index may be -1 if getSegments needs to update again. So after getSegments is called and updated then try to get index again.\n if (index < 0) {\n updateSegments(representation);\n index = getIndexForSegments(time, representation, timeThreshold);\n }\n\n if (index > 0) {\n log('Index for ' + type + ' time ' + time + ' is ' + index );\n }\n\n finished = !ignoreIsFinished ? isMediaFinished(representation) : false;\n if (finished) {\n request = new FragmentRequest();\n request.action = FragmentRequest.ACTION_COMPLETE;\n request.index = index;\n request.mediaType = type;\n request.mediaInfo = streamProcessor.getMediaInfo();\n log('Signal complete.', request);\n\n } else {\n segment = getSegmentByIndex(index, representation);\n request = getRequestForSegment(segment);\n // log('[getSegmentRequestForTime]request is ' + JSON.stringify(request));\n }\n\n if (keepIdx && idx >= 0) {\n index = representation.segmentInfoType === DashConstants.SEGMENT_TIMELINE && isDynamic ? index : idx;\n }\n\n return request;\n }\n\n function generateSegmentRequestForTime(representation, time) {\n const step = (representation.segmentAvailabilityRange.end - representation.segmentAvailabilityRange.start) / 2;\n\n representation.segments = null;\n representation.segmentAvailabilityRange = {start: time - step, end: time + step};\n return getSegmentRequestForTime(representation, time, {keepIdx: false, ignoreIsFinished: true});\n }\n\n function getNextSegmentRequest(representation) {\n let request,\n segment,\n finished;\n\n const type = streamProcessor ? streamProcessor.getType() : null;\n const isDynamic = streamProcessor ? streamProcessor.getStreamInfo().manifestInfo.isDynamic : null;\n\n if (!representation || index === -1) {\n return null;\n }\n\n requestedTime = null;\n index++;\n\n log('Getting the next request at index: ' + index);\n\n // check that there is a segment in this index. If none, update segments and wait for next time loop is called\n let seg = getSegmentByIndex(index, representation);\n if (!seg && isDynamic) {\n log('No segment found at index: ' + index + '. Wait for next loop');\n updateSegments(representation);\n index--;\n return null;\n }\n\n finished = isMediaFinished(representation);\n if (finished) {\n request = new FragmentRequest();\n request.action = FragmentRequest.ACTION_COMPLETE;\n request.index = index;\n request.mediaType = type;\n request.mediaInfo = streamProcessor.getMediaInfo();\n log('Signal complete.');\n } else {\n updateSegments(representation);\n segment = getSegmentByIndex(index, representation);\n request = getRequestForSegment(segment);\n // log('[getSegmentRequestForTime]request is ' + JSON.stringify(request));\n if (!segment && isDynamic) {\n /*\n Sometimes when playing dynamic streams with 0 fragment delay at live edge we ask for\n an index before it is available so we decrement index back and send null request\n which triggers the validate loop to rerun and the next time the segment should be\n available.\n */\n index-- ;\n }\n }\n\n return request;\n }\n\n function onInitializationLoaded(e) {\n let representation = e.representation;\n //log(\"Got an initialization.\");\n if (!representation.segments) return;\n\n eventBus.trigger(Events.REPRESENTATION_UPDATED, {sender: this, representation: representation});\n }\n\n function onSegmentsLoaded(e) {\n const type = streamProcessor ? streamProcessor.getType() : null;\n const isDynamic = streamProcessor ? streamProcessor.getStreamInfo().manifestInfo.isDynamic : null;\n if (e.error || (type !== e.mediaType)) return;\n\n const fragments = e.segments;\n let representation = e.representation;\n let segments = [];\n let count = 0;\n\n let i,\n len,\n s,\n seg;\n\n for (i = 0, len = fragments.length; i < len; i++) {\n s = fragments[i];\n\n seg = getTimeBasedSegment(\n timelineConverter,\n isDynamic,\n representation,\n s.startTime,\n s.duration,\n s.timescale,\n s.media,\n s.mediaRange,\n count);\n\n segments.push(seg);\n seg = null;\n count++;\n }\n\n representation.segmentAvailabilityRange = {start: segments[0].presentationStartTime, end: segments[len - 1].presentationStartTime};\n representation.availableSegmentsNumber = len;\n\n onSegmentListUpdated(representation, segments);\n\n if (!Representation.hasInitialization(representation)) return;\n\n eventBus.trigger(Events.REPRESENTATION_UPDATED, {sender: this, representation: representation});\n }\n\n instance = {\n initialize: initialize,\n getStreamProcessor: getStreamProcessor,\n getInitRequest: getInitRequest,\n getSegmentRequestForTime: getSegmentRequestForTime,\n getNextSegmentRequest: getNextSegmentRequest,\n generateSegmentRequestForTime: generateSegmentRequestForTime,\n updateRepresentation: updateRepresentation,\n updateSegmentList: updateSegmentList,\n setCurrentTime: setCurrentTime,\n getCurrentTime: getCurrentTime,\n getEarliestTime: getEarliestTime,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nDashHandler.__dashjs_factory_name = 'DashHandler';\nlet factory = FactoryMaker.getClassFactory(DashHandler);\nfactory.SEGMENTS_UNAVAILABLE_ERROR_CODE = SEGMENTS_UNAVAILABLE_ERROR_CODE;\nFactoryMaker.updateClassFactory(DashHandler.__dashjs_factory_name, factory);\nexport default factory;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport {HTTPRequest} from '../streaming/vo/metrics/HTTPRequest';\nimport FactoryMaker from '../core/FactoryMaker';\nimport MetricsConstants from '../streaming/constants/MetricsConstants';\nimport { round10 } from 'round10';\n\n/**\n * @module DashMetrics\n * @param {object} config configuration passed to DashMetrics\n */\nfunction DashMetrics(config) {\n\n config = config || {};\n let instance;\n let dashManifestModel = config.dashManifestModel;\n let manifestModel = config.manifestModel;\n\n function getBandwidthForRepresentation(representationId, periodId) {\n let representation;\n const manifest = manifestModel.getValue();\n let period = manifest.Period_asArray[periodId];\n\n representation = findRepresentation(period, representationId);\n\n if (representation === null) {\n return null;\n }\n\n return representation.bandwidth;\n }\n\n\n /**\n *\n * @param {string} representationId\n * @param {number} periodIdx\n * @returns {*}\n */\n function getIndexForRepresentation(representationId, periodIdx) {\n let representationIndex;\n const manifest = manifestModel.getValue();\n let period = manifest.Period_asArray[periodIdx];\n\n representationIndex = findRepresentationIndex(period, representationId);\n return representationIndex;\n }\n\n /**\n * This method returns the current max index based on what is defined in the MPD.\n *\n * @param {string} bufferType - String 'audio' or 'video',\n * @param {number} periodIdx - Make sure this is the period index not id\n * @return {number}\n * @memberof module:DashMetrics\n * @instance\n */\n function getMaxIndexForBufferType(bufferType, periodIdx) {\n let maxIndex;\n const manifest = manifestModel.getValue();\n let period = manifest.Period_asArray[periodIdx];\n\n maxIndex = findMaxBufferIndex(period, bufferType);\n return maxIndex;\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentRepresentationSwitch(metrics) {\n return getCurrent(metrics, MetricsConstants.TRACK_SWITCH);\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getLatestBufferLevelVO(metrics) {\n return getCurrent(metrics, MetricsConstants.BUFFER_LEVEL);\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {number}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentBufferLevel(metrics) {\n const vo = getLatestBufferLevelVO(metrics);\n\n if (vo) {\n return round10(vo.level / 1000, -3);\n }\n\n return 0;\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {null|*|vo}\n * @memberof module:DashMetrics\n * @instance\n */\n function getRequestsQueue(metrics) {\n return metrics ? metrics.RequestsQueue : null;\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentHttpRequest(metrics) {\n if (!metrics) {\n return null;\n }\n\n const httpList = metrics.HttpList;\n let currentHttpList = null;\n\n let httpListLength,\n httpListLastIndex;\n\n if (!httpList || httpList.length <= 0) {\n return null;\n }\n\n httpListLength = httpList.length;\n httpListLastIndex = httpListLength - 1;\n\n while (httpListLastIndex >= 0) {\n if (httpList[httpListLastIndex].responsecode) {\n currentHttpList = httpList[httpListLastIndex];\n break;\n }\n httpListLastIndex--;\n }\n return currentHttpList;\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getHttpRequests(metrics) {\n if (!metrics) {\n return [];\n }\n\n return !!metrics.HttpList ? metrics.HttpList : [];\n }\n\n /**\n * @param {MetricsList} metrics\n * @param {string} metricName\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrent(metrics, metricName) {\n if (!metrics) {\n return null;\n }\n\n const list = metrics[metricName];\n\n if (!list) {\n return null;\n }\n\n const length = list.length;\n\n if (length <= 0) {\n return null;\n }\n\n return list[length - 1];\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentDroppedFrames(metrics) {\n return getCurrent(metrics, MetricsConstants.DROPPED_FRAMES);\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentSchedulingInfo(metrics) {\n return getCurrent(metrics, MetricsConstants.SCHEDULING_INFO);\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentManifestUpdate(metrics) {\n return getCurrent(metrics, MetricsConstants.MANIFEST_UPDATE);\n }\n\n /**\n * @param {MetricsList} metrics\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getCurrentDVRInfo(metrics) {\n return getCurrent(metrics, MetricsConstants.DVR_INFO);\n }\n\n /**\n * @param {MetricsList} metrics\n * @param {string} id\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getLatestMPDRequestHeaderValueByID(metrics, id) {\n let headers = {};\n let httpRequestList,\n httpRequest,\n i;\n\n httpRequestList = getHttpRequests(metrics);\n\n for (i = httpRequestList.length - 1; i >= 0; i--) {\n httpRequest = httpRequestList[i];\n\n if (httpRequest.type === HTTPRequest.MPD_TYPE) {\n headers = parseResponseHeaders(httpRequest._responseHeaders);\n break;\n }\n }\n\n return headers[id] === undefined ? null : headers[id];\n }\n\n /**\n * @param {MetricsList} metrics\n * @param {string} id\n * @returns {*}\n * @memberof module:DashMetrics\n * @instance\n */\n function getLatestFragmentRequestHeaderValueByID(metrics, id) {\n let headers = {};\n let httpRequest = getCurrentHttpRequest(metrics);\n if (httpRequest) {\n headers = parseResponseHeaders(httpRequest._responseHeaders);\n }\n return headers[id] === undefined ? null : headers[id];\n }\n\n function parseResponseHeaders(headerStr) {\n let headers = {};\n if (!headerStr) {\n return headers;\n }\n\n // Trim headerStr to fix a MS Edge bug with xhr.getAllResponseHeaders method\n // which send a string starting with a \"\\n\" character\n let headerPairs = headerStr.trim().split('\\u000d\\u000a');\n for (let i = 0, ilen = headerPairs.length; i < ilen; i++) {\n let headerPair = headerPairs[i];\n let index = headerPair.indexOf('\\u003a\\u0020');\n if (index > 0) {\n headers[headerPair.substring(0, index)] = headerPair.substring(index + 2);\n }\n }\n return headers;\n }\n\n function findRepresentationIndex(period, representationId) {\n const index = findRepresentation(period, representationId, true);\n\n if (index !== null) {\n return index;\n }\n\n return -1;\n }\n\n function findRepresentation(period, representationId, returnIndex) {\n let adaptationSet,\n adaptationSetArray,\n representation,\n representationArray,\n adaptationSetArrayIndex,\n representationArrayIndex;\n\n if (period) {\n adaptationSetArray = period.AdaptationSet_asArray;\n for (adaptationSetArrayIndex = 0; adaptationSetArrayIndex < adaptationSetArray.length; adaptationSetArrayIndex = adaptationSetArrayIndex + 1) {\n adaptationSet = adaptationSetArray[adaptationSetArrayIndex];\n representationArray = adaptationSet.Representation_asArray;\n for (representationArrayIndex = 0; representationArrayIndex < representationArray.length; representationArrayIndex = representationArrayIndex + 1) {\n representation = representationArray[representationArrayIndex];\n if (representationId === representation.id) {\n if (returnIndex) {\n return representationArrayIndex;\n } else {\n return representation;\n }\n }\n }\n }\n }\n\n return null;\n }\n\n function adaptationIsType(adaptation, bufferType) {\n return dashManifestModel.getIsTypeOf(adaptation, bufferType);\n }\n\n function findMaxBufferIndex(period, bufferType) {\n let adaptationSet,\n adaptationSetArray,\n representationArray,\n adaptationSetArrayIndex;\n\n if (!period || !bufferType) return -1;\n\n adaptationSetArray = period.AdaptationSet_asArray;\n for (adaptationSetArrayIndex = 0; adaptationSetArrayIndex < adaptationSetArray.length; adaptationSetArrayIndex = adaptationSetArrayIndex + 1) {\n adaptationSet = adaptationSetArray[adaptationSetArrayIndex];\n representationArray = adaptationSet.Representation_asArray;\n if (adaptationIsType(adaptationSet, bufferType)) {\n return representationArray.length;\n }\n }\n\n return -1;\n }\n\n instance = {\n getBandwidthForRepresentation: getBandwidthForRepresentation,\n getIndexForRepresentation: getIndexForRepresentation,\n getMaxIndexForBufferType: getMaxIndexForBufferType,\n getCurrentRepresentationSwitch: getCurrentRepresentationSwitch,\n getLatestBufferLevelVO: getLatestBufferLevelVO,\n getCurrentBufferLevel: getCurrentBufferLevel,\n getCurrentHttpRequest: getCurrentHttpRequest,\n getHttpRequests: getHttpRequests,\n getCurrentDroppedFrames: getCurrentDroppedFrames,\n getCurrentSchedulingInfo: getCurrentSchedulingInfo,\n getCurrentDVRInfo: getCurrentDVRInfo,\n getCurrentManifestUpdate: getCurrentManifestUpdate,\n getLatestFragmentRequestHeaderValueByID: getLatestFragmentRequestHeaderValueByID,\n getLatestMPDRequestHeaderValueByID: getLatestMPDRequestHeaderValueByID,\n getRequestsQueue: getRequestsQueue\n };\n\n return instance;\n}\n\nDashMetrics.__dashjs_factory_name = 'DashMetrics';\nexport default FactoryMaker.getSingletonFactory(DashMetrics);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport RequestModifier from '../streaming/utils/RequestModifier';\nimport Segment from './vo/Segment';\nimport DashJSError from '../streaming/vo/DashJSError';\nimport Events from '../core/events/Events';\nimport EventBus from '../core/EventBus';\nimport BoxParser from '../streaming/utils/BoxParser';\nimport FactoryMaker from '../core/FactoryMaker';\nimport Debug from '../core/Debug';\nimport {HTTPRequest} from '../streaming/vo/metrics/HTTPRequest';\nimport FragmentRequest from '../streaming/vo/FragmentRequest';\nimport XHRLoader from '../streaming/XHRLoader';\n\nfunction SegmentBaseLoader() {\n\n const context = this.context;\n const log = Debug(context).getInstance().log;\n const eventBus = EventBus(context).getInstance();\n\n let instance,\n errHandler,\n boxParser,\n requestModifier,\n metricsModel,\n mediaPlayerModel,\n xhrLoader,\n baseURLController;\n\n function initialize() {\n boxParser = BoxParser(context).getInstance();\n requestModifier = RequestModifier(context).getInstance();\n xhrLoader = XHRLoader(context).create({\n errHandler: errHandler,\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n requestModifier: requestModifier\n });\n }\n\n function setConfig(config) {\n if (config.baseURLController) {\n baseURLController = config.baseURLController;\n }\n\n if (config.metricsModel) {\n metricsModel = config.metricsModel;\n }\n\n if (config.mediaPlayerModel) {\n mediaPlayerModel = config.mediaPlayerModel;\n }\n\n if (config.errHandler) {\n errHandler = config.errHandler;\n }\n }\n\n function checkSetConfigCall() {\n if (!baseURLController || !baseURLController.hasOwnProperty('resolve')) {\n throw new Error('setConfig function has to be called previously');\n }\n }\n\n function loadInitialization(representation, loadingInfo) {\n checkSetConfigCall();\n let initRange = null;\n let isoFile = null;\n const baseUrl = baseURLController.resolve(representation.path);\n const info = loadingInfo || {\n init: true,\n url: baseUrl ? baseUrl.url : undefined,\n range: {\n start: 0,\n end: 1500\n },\n searching: false,\n bytesLoaded: 0,\n bytesToLoad: 1500\n };\n\n log('Start searching for initialization.');\n\n const request = getFragmentRequest(info);\n\n const onload = function (response) {\n info.bytesLoaded = info.range.end;\n isoFile = boxParser.parse(response);\n initRange = findInitRange(isoFile);\n\n if (initRange) {\n representation.range = initRange;\n // note that we don't explicitly set rep.initialization as this\n // will be computed when all BaseURLs are resolved later\n eventBus.trigger(Events.INITIALIZATION_LOADED, {representation: representation});\n } else {\n info.range.end = info.bytesLoaded + info.bytesToLoad;\n loadInitialization(representation, info);\n }\n\n };\n\n const onerror = function () {\n eventBus.trigger(Events.INITIALIZATION_LOADED, {representation: representation});\n };\n\n xhrLoader.load({request: request, success: onload, error: onerror});\n\n log('Perform init search: ' + info.url);\n }\n\n function loadSegments(representation, type, range, loadingInfo, callback) {\n checkSetConfigCall();\n if (range && (range.start === undefined || range.end === undefined)) {\n const parts = range ? range.toString().split('-') : null;\n range = parts ? {start: parseFloat(parts[0]), end: parseFloat(parts[1])} : null;\n }\n\n callback = !callback ? onLoaded : callback;\n let isoFile = null;\n let sidx = null;\n const hasRange = !!range;\n const baseUrl = baseURLController.resolve(representation.path);\n const info = {\n init: false,\n url: baseUrl ? baseUrl.url : undefined,\n range: hasRange ? range : { start: 0, end: 1500 },\n searching: !hasRange,\n bytesLoaded: loadingInfo ? loadingInfo.bytesLoaded : 0,\n bytesToLoad: 1500\n };\n\n const request = getFragmentRequest(info);\n\n const onload = function (response) {\n const extraBytes = info.bytesToLoad;\n const loadedLength = response.byteLength;\n\n info.bytesLoaded = info.range.end - info.range.start;\n isoFile = boxParser.parse(response);\n sidx = isoFile.getBox('sidx');\n\n if (!sidx || !sidx.isComplete) {\n if (sidx) {\n info.range.start = sidx.offset || info.range.start;\n info.range.end = info.range.start + (sidx.size || extraBytes);\n } else if (loadedLength < info.bytesLoaded) {\n // if we have reached a search limit or if we have reached the end of the file we have to stop trying to find sidx\n callback(null, representation, type);\n return;\n } else {\n const lastBox = isoFile.getLastBox();\n\n if (lastBox && lastBox.size) {\n info.range.start = lastBox.offset + lastBox.size;\n info.range.end = info.range.start + extraBytes;\n } else {\n info.range.end += extraBytes;\n }\n }\n loadSegments(representation, type, info.range, info, callback);\n } else {\n const ref = sidx.references;\n let loadMultiSidx,\n segments;\n\n if (ref !== null && ref !== undefined && ref.length > 0) {\n loadMultiSidx = (ref[0].reference_type === 1);\n }\n\n if (loadMultiSidx) {\n log('Initiate multiple SIDX load.');\n info.range.end = info.range.start + sidx.size;\n\n let j, len, ss, se, r;\n let segs = [];\n let count = 0;\n let offset = (sidx.offset || info.range.start) + sidx.size;\n const tmpCallback = function (result) {\n if (result) {\n segs = segs.concat(result);\n count++;\n\n if (count >= len) {\n callback(segs, representation, type);\n }\n } else {\n callback(null, representation, type);\n }\n };\n\n for (j = 0, len = ref.length; j < len; j++) {\n ss = offset;\n se = offset + ref[j].referenced_size - 1;\n offset = offset + ref[j].referenced_size;\n r = {start: ss, end: se};\n loadSegments(representation, null, r, info, tmpCallback);\n }\n\n } else {\n log('Parsing segments from SIDX.');\n segments = getSegmentsForSidx(sidx, info);\n callback(segments, representation, type);\n }\n }\n };\n\n const onerror = function () {\n callback(null, representation, type);\n };\n\n xhrLoader.load({request: request, success: onload, error: onerror});\n log('Perform SIDX load: ' + info.url);\n }\n\n function reset() {\n xhrLoader.abort();\n xhrLoader = null;\n errHandler = null;\n boxParser = null;\n requestModifier = null;\n }\n\n function getSegmentsForSidx(sidx, info) {\n const refs = sidx.references;\n const len = refs.length;\n const timescale = sidx.timescale;\n let time = sidx.earliest_presentation_time;\n let start = info.range.start + sidx.offset + sidx.first_offset + sidx.size;\n const segments = [];\n let segment,\n end,\n duration,\n size;\n\n for (let i = 0; i < len; i++) {\n duration = refs[i].subsegment_duration;\n size = refs[i].referenced_size;\n\n segment = new Segment();\n // note that we don't explicitly set segment.media as this will be\n // computed when all BaseURLs are resolved later\n segment.duration = duration;\n segment.startTime = time;\n segment.timescale = timescale;\n end = start + size - 1;\n segment.mediaRange = start + '-' + end;\n segments.push(segment);\n time += duration;\n start += size;\n }\n\n return segments;\n }\n\n function findInitRange(isoFile) {\n const ftyp = isoFile.getBox('ftyp');\n const moov = isoFile.getBox('moov');\n\n let initRange = null;\n let start,\n end;\n\n log('Searching for initialization.');\n\n if (moov && moov.isComplete) {\n start = ftyp ? ftyp.offset : moov.offset;\n end = moov.offset + moov.size - 1;\n initRange = start + '-' + end;\n\n log('Found the initialization. Range: ' + initRange);\n }\n\n return initRange;\n }\n\n function getFragmentRequest(info) {\n if (!info.url) {\n return;\n }\n\n const request = new FragmentRequest();\n request.type = info.init ? HTTPRequest.INIT_SEGMENT_TYPE : HTTPRequest.MEDIA_SEGMENT_TYPE;\n request.url = info.url;\n request.range = info.range.start + '-' + info.range.end;\n\n return request;\n }\n\n function onLoaded(segments, representation, type) {\n if (segments) {\n eventBus.trigger(Events.SEGMENTS_LOADED, {segments: segments, representation: representation, mediaType: type});\n } else {\n eventBus.trigger(Events.SEGMENTS_LOADED, {segments: null, representation: representation, mediaType: type, error: new DashJSError(null, 'error loading segments', null)});\n }\n }\n\n instance = {\n setConfig: setConfig,\n initialize: initialize,\n loadInitialization: loadInitialization,\n loadSegments: loadSegments,\n reset: reset\n };\n\n return instance;\n}\n\nSegmentBaseLoader.__dashjs_factory_name = 'SegmentBaseLoader';\nexport default FactoryMaker.getSingletonFactory(SegmentBaseLoader);\n", + "import Events from '../core/events/Events';\nimport EventBus from '../core/EventBus';\nimport EBMLParser from '../streaming/utils/EBMLParser';\nimport FactoryMaker from '../core/FactoryMaker';\nimport Debug from '../core/Debug';\nimport RequestModifier from '../streaming/utils/RequestModifier';\nimport Segment from './vo/Segment';\nimport {\n HTTPRequest\n} from '../streaming/vo/metrics/HTTPRequest';\nimport FragmentRequest from '../streaming/vo/FragmentRequest';\nimport XHRLoader from '../streaming/XHRLoader';\n\nfunction WebmSegmentBaseLoader() {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n WebM,\n errHandler,\n requestModifier,\n metricsModel,\n mediaPlayerModel,\n xhrLoader,\n baseURLController;\n\n function setup() {\n WebM = {\n EBML: {\n tag: 0x1A45DFA3,\n required: true\n },\n Segment: {\n tag: 0x18538067,\n required: true,\n SeekHead: {\n tag: 0x114D9B74,\n required: true\n },\n Info: {\n tag: 0x1549A966,\n required: true,\n TimecodeScale: {\n tag: 0x2AD7B1,\n required: true,\n parse: 'getMatroskaUint'\n },\n Duration: {\n tag: 0x4489,\n required: true,\n parse: 'getMatroskaFloat'\n }\n },\n Tracks: {\n tag: 0x1654AE6B,\n required: true\n },\n Cues: {\n tag: 0x1C53BB6B,\n required: true,\n CuePoint: {\n tag: 0xBB,\n required: true,\n CueTime: {\n tag: 0xB3,\n required: true,\n parse: 'getMatroskaUint'\n },\n CueTrackPositions: {\n tag: 0xB7,\n required: true,\n CueTrack: {\n tag: 0xF7,\n required: true,\n parse: 'getMatroskaUint'\n },\n CueClusterPosition: {\n tag: 0xF1,\n required: true,\n parse: 'getMatroskaUint'\n }\n }\n }\n }\n },\n Void: {\n tag: 0xEC,\n required: true\n }\n };\n }\n\n function initialize() {\n requestModifier = RequestModifier(context).getInstance();\n xhrLoader = XHRLoader(context).create({\n errHandler: errHandler,\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n requestModifier: requestModifier\n });\n }\n\n function setConfig(config) {\n if (!config.baseURLController || !config.metricsModel || !config.mediaPlayerModel || !config.errHandler) {\n throw new Error('Missing config parameter(s)');\n }\n baseURLController = config.baseURLController;\n metricsModel = config.metricsModel;\n mediaPlayerModel = config.mediaPlayerModel;\n errHandler = config.errHandler;\n }\n\n function parseCues(ab) {\n let cues = [];\n let cue;\n let cueTrack;\n let ebmlParser = EBMLParser(context).create({\n data: ab\n });\n\n ebmlParser.consumeTagAndSize(WebM.Segment.Cues);\n\n while (ebmlParser.moreData() &&\n ebmlParser.consumeTagAndSize(WebM.Segment.Cues.CuePoint, true)) {\n cue = {};\n\n cue.CueTime = ebmlParser.parseTag(WebM.Segment.Cues.CuePoint.CueTime);\n\n cue.CueTracks = [];\n while (ebmlParser.moreData() &&\n ebmlParser.consumeTag(WebM.Segment.Cues.CuePoint.CueTrackPositions, true)) {\n const cueTrackPositionSize = ebmlParser.getMatroskaCodedNum();\n const startPos = ebmlParser.getPos();\n cueTrack = {};\n\n cueTrack.Track = ebmlParser.parseTag(WebM.Segment.Cues.CuePoint.CueTrackPositions.CueTrack);\n if (cueTrack.Track === 0) {\n throw new Error('Cue track cannot be 0');\n }\n\n cueTrack.ClusterPosition =\n ebmlParser.parseTag(WebM.Segment.Cues.CuePoint.CueTrackPositions.CueClusterPosition);\n\n cue.CueTracks.push(cueTrack);\n\n // we're not interested any other elements - skip remaining bytes\n ebmlParser.setPos(startPos + cueTrackPositionSize);\n }\n\n if (cue.CueTracks.length === 0) {\n throw new Error('Mandatory cuetrack not found');\n }\n cues.push(cue);\n }\n\n if (cues.length === 0) {\n throw new Error('mandatory cuepoint not found');\n }\n return cues;\n }\n\n function parseSegments(data, segmentStart, segmentEnd, segmentDuration) {\n let duration;\n let parsed;\n let segments;\n let segment;\n let i;\n let len;\n let start;\n let end;\n\n parsed = parseCues(data);\n segments = [];\n\n // we are assuming one cue track per cue point\n // both duration and media range require the i + 1 segment\n // the final segment has to use global segment parameters\n for (i = 0, len = parsed.length; i < len; i += 1) {\n segment = new Segment();\n duration = 0;\n\n if (i < parsed.length - 1) {\n duration = parsed[i + 1].CueTime - parsed[i].CueTime;\n } else {\n duration = segmentDuration - parsed[i].CueTime;\n }\n\n // note that we don't explicitly set segment.media as this will be\n // computed when all BaseURLs are resolved later\n segment.duration = duration;\n segment.startTime = parsed[i].CueTime;\n segment.timescale = 1000; // hardcoded for ms\n start = parsed[i].CueTracks[0].ClusterPosition + segmentStart;\n\n if (i < parsed.length - 1) {\n end = parsed[i + 1].CueTracks[0].ClusterPosition + segmentStart - 1;\n } else {\n end = segmentEnd - 1;\n }\n\n segment.mediaRange = start + '-' + end;\n segments.push(segment);\n }\n\n log('Parsed cues: ' + segments.length + ' cues.');\n\n return segments;\n }\n\n function parseEbmlHeader(data, media, theRange, callback) {\n let ebmlParser = EBMLParser(context).create({\n data: data\n });\n let duration;\n let segments;\n let parts = theRange.split('-');\n let request = null;\n let info = {\n url: media,\n range: {\n start: parseFloat(parts[0]),\n end: parseFloat(parts[1])\n },\n request: request\n };\n let segmentEnd;\n let segmentStart;\n\n log('Parse EBML header: ' + info.url);\n\n // skip over the header itself\n ebmlParser.skipOverElement(WebM.EBML);\n ebmlParser.consumeTag(WebM.Segment);\n\n // segments start here\n segmentEnd = ebmlParser.getMatroskaCodedNum();\n segmentEnd += ebmlParser.getPos();\n segmentStart = ebmlParser.getPos();\n\n // skip over any top level elements to get to the segment info\n while (ebmlParser.moreData() &&\n !ebmlParser.consumeTagAndSize(WebM.Segment.Info, true)) {\n if (!(ebmlParser.skipOverElement(WebM.Segment.SeekHead, true) ||\n ebmlParser.skipOverElement(WebM.Segment.Tracks, true) ||\n ebmlParser.skipOverElement(WebM.Segment.Cues, true) ||\n ebmlParser.skipOverElement(WebM.Void, true))) {\n throw new Error('no valid top level element found');\n }\n }\n\n // we only need one thing in segment info, duration\n while (duration === undefined) {\n let infoTag = ebmlParser.getMatroskaCodedNum(true);\n let infoElementSize = ebmlParser.getMatroskaCodedNum();\n\n switch (infoTag) {\n case WebM.Segment.Info.Duration.tag:\n duration = ebmlParser[WebM.Segment.Info.Duration.parse](infoElementSize);\n break;\n default:\n ebmlParser.setPos(ebmlParser.getPos() + infoElementSize);\n break;\n }\n }\n\n // once we have what we need from segment info, we jump right to the\n // cues\n\n request = getFragmentRequest(info);\n\n const onload = function (response) {\n segments = parseSegments(response, segmentStart, segmentEnd, duration);\n callback(segments);\n };\n\n const onloadend = function () {\n log('Download Error: Cues ' + info.url);\n callback(null);\n };\n\n xhrLoader.load({\n request: request,\n success: onload,\n error: onloadend\n });\n\n log('Perform cues load: ' + info.url + ' bytes=' + info.range.start + '-' + info.range.end);\n }\n\n function checkSetConfigCall() {\n if (!baseURLController || !baseURLController.hasOwnProperty('resolve')) {\n throw new Error('setConfig function has to be called previously');\n }\n }\n\n function loadInitialization(representation, loadingInfo) {\n checkSetConfigCall();\n let request = null;\n let baseUrl = baseURLController.resolve(representation.path);\n let media = baseUrl ? baseUrl.url : undefined;\n let initRange = representation.range.split('-');\n let info = loadingInfo || {\n range: {\n start: parseFloat(initRange[0]),\n end: parseFloat(initRange[1])\n },\n request: request,\n url: media,\n init: true\n };\n\n log('Start loading initialization.');\n\n request = getFragmentRequest(info);\n\n const onload = function () {\n // note that we don't explicitly set rep.initialization as this\n // will be computed when all BaseURLs are resolved later\n eventBus.trigger(Events.INITIALIZATION_LOADED, {\n representation: representation\n });\n };\n\n const onloadend = function () {\n eventBus.trigger(Events.INITIALIZATION_LOADED, {\n representation: representation\n });\n };\n\n xhrLoader.load({\n request: request,\n success: onload,\n error: onloadend\n });\n\n log('Perform init load: ' + info.url);\n }\n\n function loadSegments(representation, type, theRange, callback) {\n checkSetConfigCall();\n let request = null;\n let baseUrl = baseURLController.resolve(representation.path);\n let media = baseUrl ? baseUrl.url : undefined;\n let bytesToLoad = 8192;\n let info = {\n bytesLoaded: 0,\n bytesToLoad: bytesToLoad,\n range: {\n start: 0,\n end: bytesToLoad\n },\n request: request,\n url: media,\n init: false\n };\n\n callback = !callback ? onLoaded : callback;\n request = getFragmentRequest(info);\n\n // first load the header, but preserve the manifest range so we can\n // load the cues after parsing the header\n // NOTE: we expect segment info to appear in the first 8192 bytes\n log('Parsing ebml header');\n\n const onload = function (response) {\n parseEbmlHeader(response, media, theRange, function (segments) {\n callback(segments, representation, type);\n });\n };\n\n const onloadend = function () {\n callback(null, representation, type);\n };\n\n xhrLoader.load({\n request: request,\n success: onload,\n error: onloadend\n });\n }\n\n function onLoaded(segments, representation, type) {\n if (segments) {\n eventBus.trigger(Events.SEGMENTS_LOADED, {\n segments: segments,\n representation: representation,\n mediaType: type\n });\n } else {\n eventBus.trigger(Events.SEGMENTS_LOADED, {\n segments: null,\n representation: representation,\n mediaType: type,\n error: new Error(null, 'error loading segments', null)\n });\n }\n }\n\n function getFragmentRequest(info) {\n let request = new FragmentRequest();\n\n request.type = info.init ? HTTPRequest.INIT_SEGMENT_TYPE : HTTPRequest.MEDIA_SEGMENT_TYPE;\n request.url = info.url;\n request.range = info.range.start + '-' + info.range.end;\n\n return request;\n }\n\n function reset() {\n errHandler = null;\n requestModifier = null;\n log = null;\n }\n\n instance = {\n setConfig: setConfig,\n initialize: initialize,\n loadInitialization: loadInitialization,\n loadSegments: loadSegments,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nWebmSegmentBaseLoader.__dashjs_factory_name = 'WebmSegmentBaseLoader';\nexport default FactoryMaker.getSingletonFactory(WebmSegmentBaseLoader);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Dash constants declaration\n * @class\n * @ignore\n */\nclass DashConstants {\n\n init() {\n this.BASE_URL = 'BaseURL';\n this.SEGMENT_BASE = 'SegmentBase';\n this.SEGMENT_TEMPLATE = 'SegmentTemplate';\n this.SEGMENT_LIST = 'SegmentList';\n this.SEGMENT_URL = 'SegmentURL';\n this.SEGMENT_TIMELINE = 'SegmentTimeline';\n this.SEGMENT_PROFILES = 'segmentProfiles';\n this.ADAPTATION_SET = 'AdaptationSet';\n this.REPRESENTATION = 'Representation';\n this.REPRESENTATION_INDEX = 'RepresentationIndex';\n this.SUB_REPRESENTATION = 'SubRepresentation';\n this.INITIALIZATION = 'Initialization';\n this.INITIALIZATION_MINUS = 'initialization';\n this.MPD = 'MPD';\n this.PERIOD = 'Period';\n this.ASSET_IDENTIFIER = 'AssetIdentifier';\n this.EVENT_STREAM = 'EventStream';\n this.ID = 'id';\n this.PROFILES = 'profiles';\n this.SERVICE_LOCATION = 'serviceLocation';\n this.RANGE = 'range';\n this.INDEX = 'index';\n this.MEDIA = 'media';\n this.BYTE_RANGE = 'byteRange';\n this.INDEX_RANGE = 'indexRange';\n this.MEDIA_RANGE = 'mediaRange';\n this.VALUE = 'value';\n this.CONTENT_TYPE = 'contentType';\n this.MIME_TYPE = 'mimeType';\n this.BITSTREAM_SWITCHING = 'BitstreamSwitching';\n this.BITSTREAM_SWITCHING_MINUS = 'bitstreamSwitching';\n this.CODECS = 'codecs';\n this.DEPENDENCY_ID = 'dependencyId';\n this.MEDIA_STREAM_STRUCTURE_ID = 'mediaStreamStructureId';\n this.METRICS = 'Metrics';\n this.METRICS_MINUS = 'metrics';\n this.REPORTING = 'Reporting';\n this.WIDTH = 'width';\n this.HEIGHT = 'height';\n this.SAR = 'sar';\n this.FRAMERATE = 'frameRate';\n this.AUDIO_SAMPLING_RATE = 'audioSamplingRate';\n this.MAXIMUM_SAP_PERIOD = 'maximumSAPPeriod';\n this.START_WITH_SAP = 'startWithSAP';\n this.MAX_PLAYOUT_RATE = 'maxPlayoutRate';\n this.CODING_DEPENDENCY = 'codingDependency';\n this.SCAN_TYPE = 'scanType';\n this.FRAME_PACKING = 'FramePacking';\n this.AUDIO_CHANNEL_CONFIGURATION = 'AudioChannelConfiguration';\n this.CONTENT_PROTECTION = 'ContentProtection';\n this.ESSENTIAL_PROPERTY = 'EssentialProperty';\n this.SUPPLEMENTAL_PROPERTY = 'SupplementalProperty';\n this.INBAND_EVENT_STREAM = 'InbandEventStream';\n this.ACCESSIBILITY = 'Accessibility';\n this.ROLE = 'Role';\n this.RATING = 'Rating';\n this.CONTENT_COMPONENT = 'ContentComponent';\n this.SUBSET = 'Subset';\n this.LANG = 'lang';\n this.VIEWPOINT = 'Viewpoint';\n this.ROLE_ASARRAY = 'Role_asArray';\n this.ACCESSIBILITY_ASARRAY = 'Accessibility_asArray';\n this.AUDIOCHANNELCONFIGURATION_ASARRAY = 'AudioChannelConfiguration_asArray';\n this.CONTENTPROTECTION_ASARRAY = 'ContentProtection_asArray';\n this.MAIN = 'main';\n this.DYNAMIC = 'dynamic';\n this.MEDIA_PRESENTATION_DURATION = 'mediaPresentationDuration';\n this.MINIMUM_UPDATE_PERIOD = 'minimumUpdatePeriod';\n this.CODEC_PRIVATE_DATA = 'codecPrivateData';\n this.BANDWITH = 'bandwidth';\n this.SOURCE_URL = 'sourceURL';\n this.TIMESCALE = 'timescale';\n this.DURATION = 'duration';\n this.START_NUMBER = 'startNumber';\n this.PRESENTATION_TIME_OFFSET = 'presentationTimeOffset';\n this.AVAILABILITY_START_TIME = 'availabilityStartTime';\n this.AVAILABILITY_END_TIME = 'availabilityEndTime';\n this.TIMESHIFT_BUFFER_DEPTH = 'timeShiftBufferDepth';\n this.MAX_SEGMENT_DURATION = 'maxSegmentDuration';\n this.PRESENTATION_TIME = 'presentationTime';\n this.MIN_BUFFER_TIME = 'minBufferTime';\n this.MAX_SUBSEGMENT_DURATION = 'maxSubsegmentDuration';\n this.START = 'start';\n this.CENC_DEFAULT_KID = 'cenc:default_KID';\n this.DVB_PRIORITY = 'dvb:priority';\n this.DVB_WEIGHT = 'dvb:weight';\n }\n\n constructor () {\n this.init();\n }\n}\n\nlet constants = new DashConstants();\nexport default constants;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../../streaming/constants/Constants';\nimport DashConstants from '../constants/DashConstants';\nimport DashJSError from '../../streaming/vo/DashJSError';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport MediaPlayerEvents from '../../streaming/MediaPlayerEvents';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Representation from '../vo/Representation';\n\nfunction RepresentationController() {\n\n const SEGMENTS_UPDATE_FAILED_ERROR_CODE = 1;\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n realAdaptation,\n realAdaptationIndex,\n updating,\n voAvailableRepresentations,\n currentVoRepresentation,\n abrController,\n indexHandler,\n playbackController,\n metricsModel,\n domStorage,\n timelineConverter,\n dashManifestModel,\n dashMetrics,\n streamProcessor,\n manifestModel;\n\n function setup() {\n resetInitialSettings();\n\n eventBus.on(Events.QUALITY_CHANGE_REQUESTED, onQualityChanged, instance);\n eventBus.on(Events.REPRESENTATION_UPDATED, onRepresentationUpdated, instance);\n eventBus.on(Events.WALLCLOCK_TIME_UPDATED, onWallclockTimeUpdated, instance);\n eventBus.on(Events.BUFFER_LEVEL_UPDATED, onBufferLevelUpdated, instance);\n }\n\n function setConfig(config) {\n // allow the abrController created in setup to be overidden\n if (config.abrController) {\n abrController = config.abrController;\n }\n if (config.domStorage) {\n domStorage = config.domStorage;\n }\n if (config.metricsModel) {\n metricsModel = config.metricsModel;\n }\n if (config.dashMetrics) {\n dashMetrics = config.dashMetrics;\n }\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n if (config.playbackController) {\n playbackController = config.playbackController;\n }\n if (config.timelineConverter) {\n timelineConverter = config.timelineConverter;\n }\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n if (config.streamProcessor) {\n streamProcessor = config.streamProcessor;\n }\n }\n\n function initialize() {\n indexHandler = streamProcessor.getIndexHandler();\n }\n\n function getStreamProcessor() {\n return streamProcessor;\n }\n\n function getData() {\n return realAdaptation;\n }\n\n function getDataIndex() {\n return realAdaptationIndex;\n }\n\n function isUpdating() {\n return updating;\n }\n\n function getCurrentRepresentation() {\n return currentVoRepresentation;\n }\n\n function resetInitialSettings() {\n realAdaptation = null;\n realAdaptationIndex = -1;\n updating = true;\n voAvailableRepresentations = [];\n abrController = null;\n playbackController = null;\n metricsModel = null;\n domStorage = null;\n timelineConverter = null;\n dashManifestModel = null;\n dashMetrics = null;\n }\n\n function reset() {\n\n eventBus.off(Events.QUALITY_CHANGE_REQUESTED, onQualityChanged, instance);\n eventBus.off(Events.REPRESENTATION_UPDATED, onRepresentationUpdated, instance);\n eventBus.off(Events.WALLCLOCK_TIME_UPDATED, onWallclockTimeUpdated, instance);\n eventBus.off(Events.BUFFER_LEVEL_UPDATED, onBufferLevelUpdated, instance);\n\n resetInitialSettings();\n }\n\n function updateData(newRealAdaptation, voAdaptation, type) {\n const streamInfo = streamProcessor.getStreamInfo();\n const maxQuality = abrController.getTopQualityIndexFor(type, streamInfo.id);\n const minIdx = abrController.getMinAllowedIndexFor(type);\n\n let quality,\n averageThroughput;\n let bitrate = null;\n\n updating = true;\n eventBus.trigger(Events.DATA_UPDATE_STARTED, {sender: this});\n\n voAvailableRepresentations = updateRepresentations(voAdaptation);\n\n if ((realAdaptation === null || (realAdaptation.id != newRealAdaptation.id)) && type !== Constants.FRAGMENTED_TEXT) {\n averageThroughput = abrController.getThroughputHistory().getAverageThroughput(type);\n bitrate = averageThroughput || abrController.getInitialBitrateFor(type, streamInfo);\n quality = abrController.getQualityForBitrate(streamProcessor.getMediaInfo(), bitrate);\n } else {\n quality = abrController.getQualityFor(type, streamInfo);\n }\n\n if (minIdx !== undefined && quality < minIdx) {\n quality = minIdx;\n }\n if (quality > maxQuality) {\n quality = maxQuality;\n }\n\n currentVoRepresentation = getRepresentationForQuality(quality);\n realAdaptation = newRealAdaptation;\n\n if (type !== Constants.VIDEO && type !== Constants.AUDIO && type !== Constants.FRAGMENTED_TEXT) {\n updating = false;\n eventBus.trigger(Events.DATA_UPDATE_COMPLETED, {sender: this, data: realAdaptation, currentRepresentation: currentVoRepresentation});\n return;\n }\n\n for (let i = 0; i < voAvailableRepresentations.length; i++) {\n indexHandler.updateRepresentation(voAvailableRepresentations[i], true);\n }\n }\n\n function addRepresentationSwitch() {\n let now = new Date();\n let currentRepresentation = getCurrentRepresentation();\n let currentVideoTimeMs = playbackController.getTime() * 1000;\n\n metricsModel.addRepresentationSwitch(currentRepresentation.adaptation.type, now, currentVideoTimeMs, currentRepresentation.id);\n }\n\n function addDVRMetric() {\n let streamInfo = streamProcessor.getStreamInfo();\n let manifestInfo = streamInfo ? streamInfo.manifestInfo : null;\n let isDynamic = manifestInfo ? manifestInfo.isDynamic : null;\n let range = timelineConverter.calcSegmentAvailabilityRange(currentVoRepresentation, isDynamic);\n metricsModel.addDVRInfo(streamProcessor.getType(), playbackController.getTime(), manifestInfo, range);\n }\n\n function getRepresentationForQuality(quality) {\n return voAvailableRepresentations[quality];\n }\n\n function getQualityForRepresentation(voRepresentation) {\n return voAvailableRepresentations.indexOf(voRepresentation);\n }\n\n function isAllRepresentationsUpdated() {\n for (let i = 0, ln = voAvailableRepresentations.length; i < ln; i++) {\n let segmentInfoType = voAvailableRepresentations[i].segmentInfoType;\n if (voAvailableRepresentations[i].segmentAvailabilityRange === null || !Representation.hasInitialization(voAvailableRepresentations[i]) ||\n ((segmentInfoType === DashConstants.SEGMENT_BASE || segmentInfoType === DashConstants.BASE_URL) && !voAvailableRepresentations[i].segments)\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n function updateRepresentations(voAdaptation) {\n let voReps;\n\n realAdaptationIndex = dashManifestModel.getIndexForAdaptation(realAdaptation, voAdaptation.period.mpd.manifest, voAdaptation.period.index);\n voReps = dashManifestModel.getRepresentationsForAdaptation(voAdaptation);\n\n return voReps;\n }\n\n function updateAvailabilityWindow(isDynamic) {\n let voRepresentation;\n\n for (let i = 0, ln = voAvailableRepresentations.length; i < ln; i++) {\n voRepresentation = voAvailableRepresentations[i];\n voRepresentation.segmentAvailabilityRange = timelineConverter.calcSegmentAvailabilityRange(voRepresentation, isDynamic);\n }\n }\n\n function resetAvailabilityWindow() {\n voAvailableRepresentations.forEach(rep => {\n rep.segmentAvailabilityRange = null;\n });\n }\n\n function postponeUpdate(postponeTimePeriod) {\n let delay = postponeTimePeriod;\n let update = function () {\n if (isUpdating()) return;\n\n updating = true;\n eventBus.trigger(Events.DATA_UPDATE_STARTED, { sender: instance });\n\n // clear the segmentAvailabilityRange for all reps.\n // this ensures all are updated before the live edge search starts\n resetAvailabilityWindow();\n\n for (let i = 0; i < voAvailableRepresentations.length; i++) {\n indexHandler.updateRepresentation(voAvailableRepresentations[i], true);\n }\n };\n\n updating = false;\n eventBus.trigger(MediaPlayerEvents.AST_IN_FUTURE, { delay: delay });\n setTimeout(update, delay);\n }\n\n function onRepresentationUpdated(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor || !isUpdating()) return;\n\n let r = e.representation;\n let streamMetrics = metricsModel.getMetricsFor(Constants.STREAM);\n var metrics = metricsModel.getMetricsFor(getCurrentRepresentation().adaptation.type);\n let manifestUpdateInfo = dashMetrics.getCurrentManifestUpdate(streamMetrics);\n let alreadyAdded = false;\n let postponeTimePeriod = 0;\n let repInfo,\n err,\n repSwitch;\n\n if (r.adaptation.period.mpd.manifest.type === DashConstants.DYNAMIC && !r.adaptation.period.mpd.manifest.ignorePostponeTimePeriod)\n {\n let segmentAvailabilityTimePeriod = r.segmentAvailabilityRange.end - r.segmentAvailabilityRange.start;\n // We must put things to sleep unless till e.g. the startTime calculation in ScheduleController.onLiveEdgeSearchCompleted fall after the segmentAvailabilityRange.start\n let liveDelay = playbackController.computeLiveDelay(currentVoRepresentation.segmentDuration, streamProcessor.getStreamInfo().manifestInfo.DVRWindowSize);\n postponeTimePeriod = (liveDelay - segmentAvailabilityTimePeriod) * 1000;\n }\n\n if (postponeTimePeriod > 0) {\n addDVRMetric();\n postponeUpdate(postponeTimePeriod);\n err = new DashJSError(SEGMENTS_UPDATE_FAILED_ERROR_CODE, 'Segments update failed', null);\n eventBus.trigger(Events.DATA_UPDATE_COMPLETED, {sender: this, data: realAdaptation, currentRepresentation: currentVoRepresentation, error: err});\n\n return;\n }\n\n if (manifestUpdateInfo) {\n for (let i = 0; i < manifestUpdateInfo.representationInfo.length; i++) {\n repInfo = manifestUpdateInfo.representationInfo[i];\n if (repInfo.index === r.index && repInfo.mediaType === streamProcessor.getType()) {\n alreadyAdded = true;\n break;\n }\n }\n\n if (!alreadyAdded) {\n metricsModel.addManifestUpdateRepresentationInfo(manifestUpdateInfo, r.id, r.index, r.adaptation.period.index,\n streamProcessor.getType(),r.presentationTimeOffset, r.startNumber, r.segmentInfoType);\n }\n }\n\n if (isAllRepresentationsUpdated()) {\n updating = false;\n abrController.setPlaybackQuality(streamProcessor.getType(), streamProcessor.getStreamInfo(), getQualityForRepresentation(currentVoRepresentation));\n metricsModel.updateManifestUpdateInfo(manifestUpdateInfo, {latency: currentVoRepresentation.segmentAvailabilityRange.end - playbackController.getTime()});\n\n repSwitch = dashMetrics.getCurrentRepresentationSwitch(metrics);\n\n if (!repSwitch) {\n addRepresentationSwitch();\n }\n\n eventBus.trigger(Events.DATA_UPDATE_COMPLETED, {sender: this, data: realAdaptation, currentRepresentation: currentVoRepresentation});\n }\n }\n\n function onWallclockTimeUpdated(e) {\n if (e.isDynamic) {\n updateAvailabilityWindow(e.isDynamic);\n }\n }\n\n function onBufferLevelUpdated(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) return;\n let manifest = manifestModel.getValue();\n if (!manifest.doNotUpdateDVRWindowOnBufferUpdated) {\n addDVRMetric();\n }\n }\n\n function onQualityChanged(e) {\n if (e.mediaType !== streamProcessor.getType() || streamProcessor.getStreamInfo().id !== e.streamInfo.id) return;\n\n if (e.oldQuality !== e.newQuality) {\n currentVoRepresentation = getRepresentationForQuality(e.newQuality);\n const bitrate = abrController.getThroughputHistory().getAverageThroughput(e.mediaType);\n if (!isNaN(bitrate)) {\n domStorage.setSavedBitrateSettings(e.mediaType, bitrate);\n }\n addRepresentationSwitch();\n }\n }\n\n instance = {\n initialize: initialize,\n setConfig: setConfig,\n getData: getData,\n getDataIndex: getDataIndex,\n isUpdating: isUpdating,\n updateData: updateData,\n getStreamProcessor: getStreamProcessor,\n getCurrentRepresentation: getCurrentRepresentation,\n getRepresentationForQuality: getRepresentationForQuality,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nRepresentationController.__dashjs_factory_name = 'RepresentationController';\nexport default FactoryMaker.getClassFactory(RepresentationController);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../../streaming/constants/Constants';\nimport DashConstants from '../constants/DashConstants';\nimport Representation from '../vo/Representation';\nimport AdaptationSet from '../vo/AdaptationSet';\nimport Period from '../vo/Period';\nimport Mpd from '../vo/Mpd';\nimport UTCTiming from '../vo/UTCTiming';\nimport Event from '../vo/Event';\nimport BaseURL from '../vo/BaseURL';\nimport EventStream from '../vo/EventStream';\nimport ObjectUtils from '../../streaming/utils/ObjectUtils';\nimport URLUtils from '../../streaming/utils/URLUtils';\nimport FactoryMaker from '../../core/FactoryMaker';\n\nfunction DashManifestModel(config) {\n\n let instance;\n const context = this.context;\n\n const urlUtils = URLUtils(context).getInstance();\n const mediaController = config.mediaController;\n const timelineConverter = config.timelineConverter;\n const adapter = config.adapter;\n\n const PROFILE_DVB = 'urn:dvb:dash:profile:dvb-dash:2014';\n const isInteger = Number.isInteger || function (value) {\n return typeof value === 'number' &&\n isFinite(value) &&\n Math.floor(value) === value;\n };\n\n function getIsTypeOf(adaptation, type) {\n\n let i,\n len,\n representation,\n col,\n mimeTypeRegEx,\n codecs;\n let result = false;\n let found = false;\n\n if (!adaptation) {\n throw new Error('adaptation is not defined');\n }\n\n if (!type) {\n throw new Error('type is not defined');\n }\n\n if (adaptation.hasOwnProperty('ContentComponent_asArray')) {\n col = adaptation.ContentComponent_asArray;\n }\n\n mimeTypeRegEx = (type !== Constants.TEXT) ? new RegExp(type) : new RegExp('(vtt|ttml)');\n\n if ((adaptation.Representation_asArray && adaptation.Representation_asArray.length && adaptation.Representation_asArray.length > 0) &&\n (adaptation.Representation_asArray[0].hasOwnProperty(DashConstants.CODECS))) {\n // Just check the start of the codecs string\n codecs = adaptation.Representation_asArray[0].codecs;\n if (codecs.search(Constants.STPP) === 0 || codecs.search(Constants.WVTT) === 0) {\n return type === Constants.FRAGMENTED_TEXT;\n }\n }\n\n if (col) {\n if (col.length > 1) {\n return (type === Constants.MUXED);\n } else if (col[0] && col[0].contentType === type) {\n result = true;\n found = true;\n }\n }\n\n if (adaptation.hasOwnProperty(DashConstants.MIME_TYPE)) {\n result = mimeTypeRegEx.test(adaptation.mimeType);\n found = true;\n }\n\n // couldn't find on adaptationset, so check a representation\n if (!found) {\n i = 0;\n len = adaptation.Representation_asArray && adaptation.Representation_asArray.length ? adaptation.Representation_asArray.length : 0;\n while (!found && i < len) {\n representation = adaptation.Representation_asArray[i];\n\n if (representation.hasOwnProperty(DashConstants.MIME_TYPE)) {\n result = mimeTypeRegEx.test(representation.mimeType);\n found = true;\n }\n\n i++;\n }\n }\n\n return result;\n }\n\n function getIsAudio(adaptation) {\n return getIsTypeOf(adaptation, Constants.AUDIO);\n }\n\n function getIsVideo(adaptation) {\n return getIsTypeOf(adaptation, Constants.VIDEO);\n }\n\n function getIsFragmentedText(adaptation) {\n return getIsTypeOf(adaptation, Constants.FRAGMENTED_TEXT);\n }\n\n function getIsText(adaptation) {\n return getIsTypeOf(adaptation, Constants.TEXT);\n }\n\n function getIsMuxed(adaptation) {\n return getIsTypeOf(adaptation, Constants.MUXED);\n }\n\n function getIsTextTrack(type) {\n return (type === 'text/vtt' || type === 'application/ttml+xml');\n }\n\n function getLanguageForAdaptation(adaptation) {\n let lang = '';\n\n if (adaptation && adaptation.hasOwnProperty(DashConstants.LANG)) {\n //Filter out any other characters not allowed according to RFC5646\n lang = adaptation.lang.replace(/[^A-Za-z0-9-]/g, '');\n }\n\n return lang;\n }\n\n function getViewpointForAdaptation(adaptation) {\n return adaptation && adaptation.hasOwnProperty(DashConstants.VIEWPOINT) ? adaptation.Viewpoint : null;\n }\n\n function getRolesForAdaptation(adaptation) {\n return adaptation && adaptation.hasOwnProperty(DashConstants.ROLE_ASARRAY) ? adaptation.Role_asArray : [];\n }\n\n function getAccessibilityForAdaptation(adaptation) {\n return adaptation && adaptation.hasOwnProperty(DashConstants.ACCESSIBILITY_ASARRAY) ? adaptation.Accessibility_asArray : [];\n }\n\n function getAudioChannelConfigurationForAdaptation(adaptation) {\n return adaptation && adaptation.hasOwnProperty(DashConstants.AUDIOCHANNELCONFIGURATION_ASARRAY) ? adaptation.AudioChannelConfiguration_asArray : [];\n }\n\n function getIsMain(adaptation) {\n return getRolesForAdaptation(adaptation).filter(function (role) {\n return role.value === DashConstants.MAIN;\n })[0];\n }\n\n function getRepresentationSortFunction() {\n return (a, b) => a.bandwidth - b.bandwidth;\n }\n\n function processAdaptation(realAdaptation) {\n if (realAdaptation && realAdaptation.Representation_asArray !== undefined && realAdaptation.Representation_asArray !== null) {\n realAdaptation.Representation_asArray.sort(getRepresentationSortFunction());\n }\n\n return realAdaptation;\n }\n\n function getAdaptationForId(id, manifest, periodIndex) {\n const realAdaptations = manifest && manifest.Period_asArray && isInteger(periodIndex) ? manifest.Period_asArray[periodIndex] ? manifest.Period_asArray[periodIndex].AdaptationSet_asArray : [] : [];\n let i,\n len;\n\n for (i = 0, len = realAdaptations.length; i < len; i++) {\n if (realAdaptations[i].hasOwnProperty(DashConstants.ID) && realAdaptations[i].id === id) {\n return realAdaptations[i];\n }\n }\n\n return null;\n }\n\n function getAdaptationForIndex(index, manifest, periodIndex) {\n const realAdaptations = manifest && manifest.Period_asArray && isInteger(periodIndex) ? manifest.Period_asArray[periodIndex] ? manifest.Period_asArray[periodIndex].AdaptationSet_asArray : null : null;\n if (realAdaptations && isInteger(index)) {\n return realAdaptations[index];\n } else {\n return null;\n }\n }\n\n function getIndexForAdaptation(realAdaptation, manifest, periodIndex) {\n const realAdaptations = manifest && manifest.Period_asArray && isInteger(periodIndex) ? manifest.Period_asArray[periodIndex] ? manifest.Period_asArray[periodIndex].AdaptationSet_asArray : [] : [];\n const len = realAdaptations.length;\n\n if (realAdaptation) {\n for (let i = 0; i < len; i++) {\n let objectUtils = ObjectUtils(context).getInstance();\n if (objectUtils.areEqual(realAdaptations[i], realAdaptation)) {\n return i;\n }\n }\n }\n\n return -1;\n }\n\n function getAdaptationsForType(manifest, periodIndex, type) {\n const realAdaptationSet = manifest && manifest.Period_asArray && isInteger(periodIndex) ? manifest.Period_asArray[periodIndex] ? manifest.Period_asArray[periodIndex].AdaptationSet_asArray : [] : [];\n let i,\n len;\n const adaptations = [];\n\n for (i = 0, len = realAdaptationSet.length; i < len; i++) {\n if (getIsTypeOf(realAdaptationSet[i], type)) {\n adaptations.push(processAdaptation(realAdaptationSet[i]));\n }\n }\n\n return adaptations;\n }\n\n function getAdaptationForType(manifest, periodIndex, type, streamInfo) {\n const adaptations = getAdaptationsForType(manifest, periodIndex, type);\n\n if (!adaptations || adaptations.length === 0) return null;\n\n if (adaptations.length > 1 && streamInfo) {\n const currentTrack = mediaController.getCurrentTrackFor(type, streamInfo);\n const allMediaInfoForType = adapter.getAllMediaInfoForType(streamInfo, type);\n for (let i = 0, ln = adaptations.length; i < ln; i++) {\n if (currentTrack && mediaController.isTracksEqual(currentTrack, allMediaInfoForType[i])) {\n return adaptations[i];\n }\n }\n for (let i = 0, ln = adaptations.length; i < ln; i++) {\n if (getIsMain(adaptations[i])) {\n return adaptations[i];\n }\n }\n }\n\n return adaptations[0];\n }\n\n function getCodec(adaptation, representationId) {\n if (adaptation && adaptation.Representation_asArray && adaptation.Representation_asArray.length > 0) {\n const representation = isInteger(representationId) && representationId >= 0 && representationId < adaptation.Representation_asArray.length ?\n adaptation.Representation_asArray[representationId] : adaptation.Representation_asArray[0];\n return (representation.mimeType + ';codecs=\"' + representation.codecs + '\"');\n }\n\n return null;\n }\n\n function getMimeType(adaptation) {\n return adaptation && adaptation.Representation_asArray && adaptation.Representation_asArray.length > 0 ? adaptation.Representation_asArray[0].mimeType : null;\n }\n\n function getKID(adaptation) {\n if (!adaptation || !adaptation.hasOwnProperty(DashConstants.CENC_DEFAULT_KID)) {\n return null;\n }\n return adaptation[DashConstants.CENC_DEFAULT_KID];\n }\n\n function getContentProtectionData(adaptation) {\n if (!adaptation || !adaptation.hasOwnProperty(DashConstants.CONTENTPROTECTION_ASARRAY) || adaptation.ContentProtection_asArray.length === 0) {\n return null;\n }\n return adaptation.ContentProtection_asArray;\n }\n\n function getIsDynamic(manifest) {\n let isDynamic = false;\n if (manifest && manifest.hasOwnProperty('type')) {\n isDynamic = (manifest.type === DashConstants.DYNAMIC);\n }\n return isDynamic;\n }\n\n function hasProfile(manifest, profile) {\n let has = false;\n\n if (manifest && manifest.profiles && manifest.profiles.length > 0) {\n has = (manifest.profiles.indexOf(profile) !== -1);\n }\n\n return has;\n }\n\n function getIsDVB(manifest) {\n return hasProfile(manifest, PROFILE_DVB);\n }\n\n function getDuration(manifest) {\n let mpdDuration;\n //@mediaPresentationDuration specifies the duration of the entire Media Presentation.\n //If the attribute is not present, the duration of the Media Presentation is unknown.\n if (manifest && manifest.hasOwnProperty(DashConstants.MEDIA_PRESENTATION_DURATION)) {\n mpdDuration = manifest.mediaPresentationDuration;\n } else {\n mpdDuration = Number.MAX_SAFE_INTEGER || Number.MAX_VALUE;\n }\n\n return mpdDuration;\n }\n\n function getBandwidth(representation) {\n return representation && representation.bandwidth ? representation.bandwidth : NaN;\n }\n\n function getManifestUpdatePeriod(manifest, latencyOfLastUpdate = 0) {\n let delay = NaN;\n if (manifest && manifest.hasOwnProperty(DashConstants.MINIMUM_UPDATE_PERIOD)) {\n delay = manifest.minimumUpdatePeriod;\n }\n return isNaN(delay) ? delay : Math.max(delay - latencyOfLastUpdate, 1);\n }\n\n function getRepresentationCount(adaptation) {\n return adaptation && adaptation.Representation_asArray && adaptation.Representation_asArray.length ? adaptation.Representation_asArray.length : 0;\n }\n\n function getBitrateListForAdaptation(realAdaptation) {\n if (!realAdaptation || !realAdaptation.Representation_asArray || !realAdaptation.Representation_asArray.length) return null;\n\n const processedRealAdaptation = processAdaptation(realAdaptation);\n const realRepresentations = processedRealAdaptation.Representation_asArray;\n const ln = realRepresentations.length;\n const bitrateList = [];\n let i = 0;\n\n for (i = 0; i < ln; i++) {\n bitrateList.push({\n bandwidth: realRepresentations[i].bandwidth,\n width: realRepresentations[i].width || 0,\n height: realRepresentations[i].height || 0,\n scanType: realRepresentations[i].scanType || null\n });\n }\n\n return bitrateList;\n }\n\n function getRepresentationFor(index, adaptation) {\n return adaptation && adaptation.Representation_asArray && adaptation.Representation_asArray.length > 0 &&\n isInteger(index) ? adaptation.Representation_asArray[index] : null;\n }\n\n function getRepresentationsForAdaptation(voAdaptation) {\n const voRepresentations = [];\n let voRepresentation,\n initialization,\n segmentInfo,\n processedRealAdaptation,\n realRepresentation,\n i,\n s;\n\n if (voAdaptation && voAdaptation.period && isInteger(voAdaptation.period.index)) {\n const periodArray = voAdaptation.period.mpd.manifest.Period_asArray[voAdaptation.period.index];\n if (periodArray && periodArray.AdaptationSet_asArray && isInteger(voAdaptation.index)) {\n processedRealAdaptation = processAdaptation(periodArray.AdaptationSet_asArray[voAdaptation.index]);\n }\n }\n\n for (i = 0; processedRealAdaptation && i < processedRealAdaptation.Representation_asArray.length; i++) {\n realRepresentation = processedRealAdaptation.Representation_asArray[i];\n voRepresentation = new Representation();\n voRepresentation.index = i;\n voRepresentation.adaptation = voAdaptation;\n\n if (realRepresentation.hasOwnProperty(DashConstants.ID)) {\n voRepresentation.id = realRepresentation.id;\n }\n if (realRepresentation.hasOwnProperty(DashConstants.CODECS)) {\n voRepresentation.codecs = realRepresentation.codecs;\n }\n if (realRepresentation.hasOwnProperty(DashConstants.CODEC_PRIVATE_DATA)) {\n voRepresentation.codecPrivateData = realRepresentation.codecPrivateData;\n }\n if (realRepresentation.hasOwnProperty(DashConstants.BANDWITH)) {\n voRepresentation.bandwidth = realRepresentation.bandwidth;\n }\n if (realRepresentation.hasOwnProperty(DashConstants.WIDTH)) {\n voRepresentation.width = realRepresentation.width;\n }\n if (realRepresentation.hasOwnProperty(DashConstants.HEIGHT)) {\n voRepresentation.height = realRepresentation.height;\n }\n if (realRepresentation.hasOwnProperty(DashConstants.SCAN_TYPE)) {\n voRepresentation.scanType = realRepresentation.scanType;\n }\n if (realRepresentation.hasOwnProperty(DashConstants.MAX_PLAYOUT_RATE)) {\n voRepresentation.maxPlayoutRate = realRepresentation.maxPlayoutRate;\n }\n if (realRepresentation.hasOwnProperty(DashConstants.SEGMENT_BASE)) {\n segmentInfo = realRepresentation.SegmentBase;\n voRepresentation.segmentInfoType = DashConstants.SEGMENT_BASE;\n } else if (realRepresentation.hasOwnProperty(DashConstants.SEGMENT_LIST)) {\n segmentInfo = realRepresentation.SegmentList;\n\n if (segmentInfo.hasOwnProperty(DashConstants.SEGMENT_TIMELINE)) {\n voRepresentation.segmentInfoType = DashConstants.SEGMENT_TIMELINE;\n s = segmentInfo.SegmentTimeline.S_asArray[segmentInfo.SegmentTimeline.S_asArray.length - 1];\n if (!s.hasOwnProperty('r') || s.r >= 0) {\n voRepresentation.useCalculatedLiveEdgeTime = true;\n }\n } else {\n voRepresentation.segmentInfoType = DashConstants.SEGMENT_LIST;\n voRepresentation.useCalculatedLiveEdgeTime = true;\n }\n } else if (realRepresentation.hasOwnProperty(DashConstants.SEGMENT_TEMPLATE)) {\n segmentInfo = realRepresentation.SegmentTemplate;\n\n if (segmentInfo.hasOwnProperty(DashConstants.SEGMENT_TIMELINE)) {\n voRepresentation.segmentInfoType = DashConstants.SEGMENT_TIMELINE;\n s = segmentInfo.SegmentTimeline.S_asArray[segmentInfo.SegmentTimeline.S_asArray.length - 1];\n if (!s.hasOwnProperty('r') || s.r >= 0) {\n voRepresentation.useCalculatedLiveEdgeTime = true;\n }\n } else {\n voRepresentation.segmentInfoType = DashConstants.SEGMENT_TEMPLATE;\n }\n\n if (segmentInfo.hasOwnProperty(DashConstants.INITIALIZATION_MINUS)) {\n voRepresentation.initialization = segmentInfo.initialization.split('$Bandwidth$')\n .join(realRepresentation.bandwidth).split('$RepresentationID$').join(realRepresentation.id);\n }\n } else {\n voRepresentation.segmentInfoType = DashConstants.BASE_URL;\n }\n\n if (segmentInfo) {\n if (segmentInfo.hasOwnProperty(DashConstants.INITIALIZATION)) {\n initialization = segmentInfo.Initialization;\n\n if (initialization.hasOwnProperty(DashConstants.SOURCE_URL)) {\n voRepresentation.initialization = initialization.sourceURL;\n } else if (initialization.hasOwnProperty(DashConstants.RANGE)) {\n voRepresentation.range = initialization.range;\n // initialization source url will be determined from\n // BaseURL when resolved at load time.\n }\n } else if (realRepresentation.hasOwnProperty(DashConstants.MIME_TYPE) && getIsTextTrack(realRepresentation.mimeType)) {\n voRepresentation.range = 0;\n }\n\n if (segmentInfo.hasOwnProperty(DashConstants.TIMESCALE)) {\n voRepresentation.timescale = segmentInfo.timescale;\n }\n if (segmentInfo.hasOwnProperty(DashConstants.DURATION)) {\n // TODO according to the spec @maxSegmentDuration specifies the maximum duration of any Segment in any Representation in the Media Presentation\n // It is also said that for a SegmentTimeline any @d value shall not exceed the value of MPD@maxSegmentDuration, but nothing is said about\n // SegmentTemplate @duration attribute. We need to find out if @maxSegmentDuration should be used instead of calculated duration if the the duration\n // exceeds @maxSegmentDuration\n //representation.segmentDuration = Math.min(segmentInfo.duration / representation.timescale, adaptation.period.mpd.maxSegmentDuration);\n voRepresentation.segmentDuration = segmentInfo.duration / voRepresentation.timescale;\n }\n if (segmentInfo.hasOwnProperty(DashConstants.START_NUMBER)) {\n voRepresentation.startNumber = segmentInfo.startNumber;\n }\n if (segmentInfo.hasOwnProperty(DashConstants.INDEX_RANGE)) {\n voRepresentation.indexRange = segmentInfo.indexRange;\n }\n if (segmentInfo.hasOwnProperty(DashConstants.PRESENTATION_TIME_OFFSET)) {\n voRepresentation.presentationTimeOffset = segmentInfo.presentationTimeOffset / voRepresentation.timescale;\n }\n }\n\n voRepresentation.MSETimeOffset = timelineConverter.calcMSETimeOffset(voRepresentation);\n voRepresentation.path = [voAdaptation.period.index, voAdaptation.index, i];\n voRepresentations.push(voRepresentation);\n }\n\n return voRepresentations;\n }\n\n function getAdaptationsForPeriod(voPeriod) {\n const realPeriod = voPeriod && isInteger(voPeriod.index) ? voPeriod.mpd.manifest.Period_asArray[voPeriod.index] : null;\n const voAdaptations = [];\n let voAdaptationSet,\n realAdaptationSet,\n i;\n\n if (realPeriod && realPeriod.AdaptationSet_asArray) {\n for (i = 0; i < realPeriod.AdaptationSet_asArray.length; i++) {\n realAdaptationSet = realPeriod.AdaptationSet_asArray[i];\n voAdaptationSet = new AdaptationSet();\n if (realAdaptationSet.hasOwnProperty(DashConstants.ID)) {\n voAdaptationSet.id = realAdaptationSet.id;\n }\n voAdaptationSet.index = i;\n voAdaptationSet.period = voPeriod;\n\n if (getIsMuxed(realAdaptationSet)) {\n voAdaptationSet.type = Constants.MUXED;\n } else if (getIsAudio(realAdaptationSet)) {\n voAdaptationSet.type = Constants.AUDIO;\n } else if (getIsVideo(realAdaptationSet)) {\n voAdaptationSet.type = Constants.VIDEO;\n } else if (getIsFragmentedText(realAdaptationSet)) {\n voAdaptationSet.type = Constants.FRAGMENTED_TEXT;\n } else {\n voAdaptationSet.type = Constants.TEXT;\n }\n voAdaptations.push(voAdaptationSet);\n }\n }\n\n return voAdaptations;\n }\n\n function getRegularPeriods(mpd) {\n const isDynamic = mpd ? getIsDynamic(mpd.manifest) : false;\n const voPeriods = [];\n let realPeriod1 = null;\n let realPeriod = null;\n let voPeriod1 = null;\n let voPeriod = null;\n let len,\n i;\n\n for (i = 0, len = mpd && mpd.manifest && mpd.manifest.Period_asArray ? mpd.manifest.Period_asArray.length : 0; i < len; i++) {\n realPeriod = mpd.manifest.Period_asArray[i];\n\n // If the attribute @start is present in the Period, then the\n // Period is a regular Period and the PeriodStart is equal\n // to the value of this attribute.\n if (realPeriod.hasOwnProperty(DashConstants.START)) {\n voPeriod = new Period();\n voPeriod.start = realPeriod.start;\n }\n // If the @start attribute is absent, but the previous Period\n // element contains a @duration attribute then then this new\n // Period is also a regular Period. The start time of the new\n // Period PeriodStart is the sum of the start time of the previous\n // Period PeriodStart and the value of the attribute @duration\n // of the previous Period.\n else if (realPeriod1 !== null && realPeriod.hasOwnProperty(DashConstants.DURATION) && voPeriod1 !== null) {\n voPeriod = new Period();\n voPeriod.start = voPeriod1.start + voPeriod1.duration;\n voPeriod.duration = realPeriod.duration;\n }\n // If (i) @start attribute is absent, and (ii) the Period element\n // is the first in the MPD, and (iii) the MPD@type is 'static',\n // then the PeriodStart time shall be set to zero.\n else if (i === 0 && !isDynamic) {\n voPeriod = new Period();\n voPeriod.start = 0;\n }\n\n // The Period extends until the PeriodStart of the next Period.\n // The difference between the PeriodStart time of a Period and\n // the PeriodStart time of the following Period.\n if (voPeriod1 !== null && isNaN(voPeriod1.duration)) {\n voPeriod1.duration = voPeriod.start - voPeriod1.start;\n }\n\n if (voPeriod !== null) {\n voPeriod.id = getPeriodId(realPeriod, i);\n }\n\n if (voPeriod !== null && realPeriod.hasOwnProperty(DashConstants.DURATION)) {\n voPeriod.duration = realPeriod.duration;\n }\n\n if (voPeriod !== null) {\n voPeriod.index = i;\n voPeriod.mpd = mpd;\n voPeriods.push(voPeriod);\n realPeriod1 = realPeriod;\n voPeriod1 = voPeriod;\n }\n\n realPeriod = null;\n voPeriod = null;\n }\n\n if (voPeriods.length === 0) {\n return voPeriods;\n }\n\n // The last Period extends until the end of the Media Presentation.\n // The difference between the PeriodStart time of the last Period\n // and the mpd duration\n if (voPeriod1 !== null && isNaN(voPeriod1.duration)) {\n voPeriod1.duration = getEndTimeForLastPeriod(voPeriod1) - voPeriod1.start;\n }\n\n return voPeriods;\n }\n\n function getPeriodId(realPeriod, i) {\n if (!realPeriod) {\n throw new Error('Period cannot be null or undefined');\n }\n\n let id = Period.DEFAULT_ID + '_' + i;\n\n if (realPeriod.hasOwnProperty(DashConstants.ID) && realPeriod.id.length > 0 && realPeriod.id !== '__proto__') {\n id = realPeriod.id;\n }\n\n return id;\n }\n\n function getMpd(manifest) {\n const mpd = new Mpd();\n\n if (manifest) {\n mpd.manifest = manifest;\n\n if (manifest.hasOwnProperty(DashConstants.AVAILABILITY_START_TIME)) {\n mpd.availabilityStartTime = new Date(manifest.availabilityStartTime.getTime());\n } else {\n mpd.availabilityStartTime = new Date(manifest.loadedTime.getTime());\n }\n\n if (manifest.hasOwnProperty(DashConstants.AVAILABILITY_END_TIME)) {\n mpd.availabilityEndTime = new Date(manifest.availabilityEndTime.getTime());\n }\n\n if (manifest.hasOwnProperty(DashConstants.MINIMUM_UPDATE_PERIOD)) {\n mpd.minimumUpdatePeriod = manifest.minimumUpdatePeriod;\n }\n\n if (manifest.hasOwnProperty(DashConstants.MEDIA_PRESENTATION_DURATION)) {\n mpd.mediaPresentationDuration = manifest.mediaPresentationDuration;\n }\n\n if (manifest.hasOwnProperty(Constants.SUGGESTED_PRESENTATION_DELAY)) {\n mpd.suggestedPresentationDelay = manifest.suggestedPresentationDelay;\n }\n\n if (manifest.hasOwnProperty(DashConstants.TIMESHIFT_BUFFER_DEPTH)) {\n mpd.timeShiftBufferDepth = manifest.timeShiftBufferDepth;\n }\n\n if (manifest.hasOwnProperty(DashConstants.MAX_SEGMENT_DURATION)) {\n mpd.maxSegmentDuration = manifest.maxSegmentDuration;\n }\n }\n\n return mpd;\n }\n\n\n function getEndTimeForLastPeriod(voPeriod) {\n const isDynamic = getIsDynamic(voPeriod.mpd.manifest);\n\n let periodEnd;\n if (voPeriod.mpd.manifest.mediaPresentationDuration) {\n periodEnd = voPeriod.mpd.manifest.mediaPresentationDuration;\n } else if (voPeriod.duration) {\n periodEnd = voPeriod.duration;\n } else if (isDynamic) {\n periodEnd = Number.POSITIVE_INFINITY;\n } else {\n throw new Error('Must have @mediaPresentationDuratio on MPD or an explicit @duration on the last period.');\n }\n\n return periodEnd;\n }\n\n function getEventsForPeriod(period) {\n const manifest = period && period.mpd && period.mpd.manifest ? period.mpd.manifest : null;\n const periodArray = manifest ? manifest.Period_asArray : null;\n const eventStreams = periodArray && period && isInteger(period.index) ? periodArray[period.index].EventStream_asArray : null;\n const events = [];\n let i,\n j;\n\n if (eventStreams) {\n for (i = 0; i < eventStreams.length; i++) {\n const eventStream = new EventStream();\n eventStream.period = period;\n eventStream.timescale = 1;\n\n if (eventStreams[i].hasOwnProperty(Constants.SCHEME_ID_URI)) {\n eventStream.schemeIdUri = eventStreams[i].schemeIdUri;\n } else {\n throw new Error('Invalid EventStream. SchemeIdUri has to be set');\n }\n if (eventStreams[i].hasOwnProperty(DashConstants.TIMESCALE)) {\n eventStream.timescale = eventStreams[i].timescale;\n }\n if (eventStreams[i].hasOwnProperty(DashConstants.VALUE)) {\n eventStream.value = eventStreams[i].value;\n }\n for (j = 0; j < eventStreams[i].Event_asArray.length; j++) {\n const event = new Event();\n event.presentationTime = 0;\n event.eventStream = eventStream;\n\n if (eventStreams[i].Event_asArray[j].hasOwnProperty(DashConstants.PRESENTATION_TIME)) {\n event.presentationTime = eventStreams[i].Event_asArray[j].presentationTime;\n }\n if (eventStreams[i].Event_asArray[j].hasOwnProperty(DashConstants.DURATION)) {\n event.duration = eventStreams[i].Event_asArray[j].duration;\n }\n if (eventStreams[i].Event_asArray[j].hasOwnProperty(DashConstants.ID)) {\n event.id = eventStreams[i].Event_asArray[j].id;\n }\n events.push(event);\n }\n }\n }\n\n return events;\n }\n\n function getEventStreams(inbandStreams, representation) {\n const eventStreams = [];\n let i;\n\n if (!inbandStreams) return eventStreams;\n\n for (i = 0; i < inbandStreams.length; i++) {\n const eventStream = new EventStream();\n eventStream.timescale = 1;\n eventStream.representation = representation;\n\n if (inbandStreams[i].hasOwnProperty(Constants.SCHEME_ID_URI)) {\n eventStream.schemeIdUri = inbandStreams[i].schemeIdUri;\n } else {\n throw new Error('Invalid EventStream. SchemeIdUri has to be set');\n }\n if (inbandStreams[i].hasOwnProperty(DashConstants.TIMESCALE)) {\n eventStream.timescale = inbandStreams[i].timescale;\n }\n if (inbandStreams[i].hasOwnProperty(DashConstants.VALUE)) {\n eventStream.value = inbandStreams[i].value;\n }\n eventStreams.push(eventStream);\n }\n\n return eventStreams;\n }\n\n function getEventStreamForAdaptationSet(manifest, adaptation) {\n let inbandStreams,\n periodArray,\n adaptationArray;\n\n if (manifest && manifest.Period_asArray && adaptation && adaptation.period && isInteger(adaptation.period.index)) {\n periodArray = manifest.Period_asArray[adaptation.period.index];\n if (periodArray && periodArray.AdaptationSet_asArray && isInteger(adaptation.index)) {\n adaptationArray = periodArray.AdaptationSet_asArray[adaptation.index];\n if (adaptationArray) {\n inbandStreams = adaptationArray.InbandEventStream_asArray;\n }\n }\n }\n\n return getEventStreams(inbandStreams, null);\n }\n\n function getEventStreamForRepresentation(manifest, representation) {\n let inbandStreams,\n periodArray,\n adaptationArray,\n representationArray;\n\n if (manifest && manifest.Period_asArray && representation && representation.adaptation && representation.adaptation.period && isInteger(representation.adaptation.period.index)) {\n periodArray = manifest.Period_asArray[representation.adaptation.period.index];\n if (periodArray && periodArray.AdaptationSet_asArray && isInteger(representation.adaptation.index)) {\n adaptationArray = periodArray.AdaptationSet_asArray[representation.adaptation.index];\n if (adaptationArray && adaptationArray.Representation_asArray && isInteger(representation.index)) {\n representationArray = adaptationArray.Representation_asArray[representation.index];\n if (representationArray) {\n inbandStreams = representationArray.InbandEventStream_asArray;\n }\n }\n }\n }\n\n return getEventStreams(inbandStreams, representation);\n }\n\n function getUTCTimingSources(manifest) {\n const isDynamic = getIsDynamic(manifest);\n const hasAST = manifest ? manifest.hasOwnProperty(DashConstants.AVAILABILITY_START_TIME) : false;\n const utcTimingsArray = manifest ? manifest.UTCTiming_asArray : null;\n const utcTimingEntries = [];\n\n // do not bother synchronizing the clock unless MPD is live,\n // or it is static and has availabilityStartTime attribute\n if ((isDynamic || hasAST)) {\n if (utcTimingsArray) {\n // the order is important here - 23009-1 states that the order\n // in the manifest \"indicates relative preference, first having\n // the highest, and the last the lowest priority\".\n utcTimingsArray.forEach(function (utcTiming) {\n const entry = new UTCTiming();\n\n if (utcTiming.hasOwnProperty(Constants.SCHEME_ID_URI)) {\n entry.schemeIdUri = utcTiming.schemeIdUri;\n } else {\n // entries of type DescriptorType with no schemeIdUri\n // are meaningless. let's just ignore this entry and\n // move on.\n return;\n }\n\n // this is (incorrectly) interpreted as a number - schema\n // defines it as a string\n if (utcTiming.hasOwnProperty(DashConstants.VALUE)) {\n entry.value = utcTiming.value.toString();\n } else {\n // without a value, there's not a lot we can do with\n // this entry. let's just ignore this one and move on\n return;\n }\n\n // we're not interested in the optional id or any other\n // attributes which might be attached to the entry\n\n utcTimingEntries.push(entry);\n });\n }\n }\n\n return utcTimingEntries;\n }\n\n function getBaseURLsFromElement(node) {\n const baseUrls = [];\n // if node.BaseURL_asArray and node.baseUri are undefined entries\n // will be [undefined] which entries.some will just skip\n const entries = node.BaseURL_asArray || [node.baseUri];\n let earlyReturn = false;\n\n entries.some(entry => {\n if (entry) {\n const baseUrl = new BaseURL();\n let text = entry.__text || entry;\n\n if (urlUtils.isRelative(text)) {\n // it doesn't really make sense to have relative and\n // absolute URLs at the same level, or multiple\n // relative URLs at the same level, so assume we are\n // done from this level of the MPD\n earlyReturn = true;\n\n // deal with the specific case where the MPD@BaseURL\n // is specified and is relative. when no MPD@BaseURL\n // entries exist, that case is handled by the\n // [node.baseUri] in the entries definition.\n if (node.baseUri) {\n text = urlUtils.resolve(text, node.baseUri);\n }\n }\n\n baseUrl.url = text;\n\n // serviceLocation is optional, but we need it in order\n // to blacklist correctly. if it's not available, use\n // anything unique since there's no relationship to any\n // other BaseURL and, in theory, the url should be\n // unique so use this instead.\n if (entry.hasOwnProperty(DashConstants.SERVICE_LOCATION) &&\n entry.serviceLocation.length) {\n baseUrl.serviceLocation = entry.serviceLocation;\n } else {\n baseUrl.serviceLocation = text;\n }\n\n if (entry.hasOwnProperty(DashConstants.DVB_PRIORITY)) {\n baseUrl.dvb_priority = entry[DashConstants.DVB_PRIORITY];\n }\n\n if (entry.hasOwnProperty(DashConstants.DVB_WEIGHT)) {\n baseUrl.dvb_weight = entry[DashConstants.DVB_WEIGHT];\n }\n\n /* NOTE: byteRange, availabilityTimeOffset,\n * availabilityTimeComplete currently unused\n */\n\n baseUrls.push(baseUrl);\n\n return earlyReturn;\n }\n });\n\n return baseUrls;\n }\n\n function getLocation(manifest) {\n if (manifest && manifest.hasOwnProperty(Constants.LOCATION)) {\n // for now, do not support multiple Locations -\n // just set Location to the first Location.\n manifest.Location = manifest.Location_asArray[0];\n\n return manifest.Location;\n }\n\n // may well be undefined\n return undefined;\n }\n\n instance = {\n getIsTypeOf: getIsTypeOf,\n getIsAudio: getIsAudio,\n getIsVideo: getIsVideo,\n getIsText: getIsText,\n getIsMuxed: getIsMuxed,\n getIsTextTrack: getIsTextTrack,\n getIsFragmentedText: getIsFragmentedText,\n getIsMain: getIsMain,\n getLanguageForAdaptation: getLanguageForAdaptation,\n getViewpointForAdaptation: getViewpointForAdaptation,\n getRolesForAdaptation: getRolesForAdaptation,\n getAccessibilityForAdaptation: getAccessibilityForAdaptation,\n getAudioChannelConfigurationForAdaptation: getAudioChannelConfigurationForAdaptation,\n getAdaptationForIndex: getAdaptationForIndex,\n getIndexForAdaptation: getIndexForAdaptation,\n getAdaptationForId: getAdaptationForId,\n getAdaptationsForType: getAdaptationsForType,\n getAdaptationForType: getAdaptationForType,\n getCodec: getCodec,\n getMimeType: getMimeType,\n getKID: getKID,\n getContentProtectionData: getContentProtectionData,\n getIsDynamic: getIsDynamic,\n getIsDVB: getIsDVB,\n getDuration: getDuration,\n getBandwidth: getBandwidth,\n getManifestUpdatePeriod: getManifestUpdatePeriod,\n getRepresentationCount: getRepresentationCount,\n getBitrateListForAdaptation: getBitrateListForAdaptation,\n getRepresentationFor: getRepresentationFor,\n getRepresentationsForAdaptation: getRepresentationsForAdaptation,\n getAdaptationsForPeriod: getAdaptationsForPeriod,\n getRegularPeriods: getRegularPeriods,\n getMpd: getMpd,\n getEventsForPeriod: getEventsForPeriod,\n getEventStreamForAdaptationSet: getEventStreamForAdaptationSet,\n getEventStreamForRepresentation: getEventStreamForRepresentation,\n getUTCTimingSources: getUTCTimingSources,\n getBaseURLsFromElement: getBaseURLsFromElement,\n getRepresentationSortFunction: getRepresentationSortFunction,\n getLocation: getLocation\n };\n\n return instance;\n}\n\nDashManifestModel.__dashjs_factory_name = 'DashManifestModel';\nexport default FactoryMaker.getSingletonFactory(DashManifestModel);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\nimport ObjectIron from '../../../externals/objectiron';\nimport X2JS from '../../../externals/xml2json';\nimport StringMatcher from './matchers/StringMatcher';\nimport DurationMatcher from './matchers/DurationMatcher';\nimport DateTimeMatcher from './matchers/DateTimeMatcher';\nimport NumericMatcher from './matchers/NumericMatcher';\nimport RepresentationBaseValuesMap from './maps/RepresentationBaseValuesMap';\nimport SegmentValuesMap from './maps/SegmentValuesMap';\n\nfunction DashParser(config) {\n\n const context = this.context;\n const log = Debug(context).getInstance().log;\n const errorHandler = config.errorHandler;\n\n let instance,\n matchers,\n converter,\n objectIron;\n\n function setup() {\n matchers = [\n new DurationMatcher(),\n new DateTimeMatcher(),\n new NumericMatcher(),\n new StringMatcher() // last in list to take precedence over NumericMatcher\n ];\n\n converter = new X2JS({\n escapeMode: false,\n attributePrefix: '',\n arrayAccessForm: 'property',\n emptyNodeForm: 'object',\n stripWhitespaces: false,\n enableToStringFunc: false,\n ignoreRoot: true,\n matchers: matchers\n });\n\n objectIron = new ObjectIron([\n new RepresentationBaseValuesMap(),\n new SegmentValuesMap()\n ]);\n }\n\n function checkConfig() {\n if (!errorHandler || !errorHandler.hasOwnProperty('manifestError')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n function getMatchers() {\n return matchers;\n }\n\n function getIron() {\n return objectIron;\n }\n\n function parse(data) {\n let manifest;\n\n checkConfig();\n\n try {\n const startTime = window.performance.now();\n\n manifest = converter.xml_str2json(data);\n\n if (!manifest) {\n throw new Error('parser error');\n }\n\n const jsonTime = window.performance.now();\n\n objectIron.run(manifest);\n\n const ironedTime = window.performance.now();\n\n log('Parsing complete: ( xml2json: ' + (jsonTime - startTime).toPrecision(3) + 'ms, objectiron: ' + (ironedTime - jsonTime).toPrecision(3) + 'ms, total: ' + ((ironedTime - startTime) / 1000).toPrecision(3) + 's)');\n } catch (err) {\n errorHandler.manifestError('parsing the manifest failed', 'parse', data, err);\n return null;\n }\n\n return manifest;\n }\n\n instance = {\n parse: parse,\n getMatchers: getMatchers,\n getIron: getIron\n };\n\n setup();\n\n return instance;\n}\n\nDashParser.__dashjs_factory_name = 'DashParser';\nexport default FactoryMaker.getClassFactory(DashParser);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../../streaming/constants/Constants';\nimport DashConstants from '../constants/DashConstants';\nimport Representation from '../vo/Representation';\nimport AdaptationSet from '../vo/AdaptationSet';\nimport Period from '../vo/Period';\nimport Mpd from '../vo/Mpd';\nimport UTCTiming from '../vo/UTCTiming';\nimport Event from '../vo/Event';\nimport BaseURL from '../vo/BaseURL';\nimport EventStream from '../vo/EventStream';\nimport ObjectUtils from '../../streaming/utils/ObjectUtils';\nimport URLUtils from '../../streaming/utils/URLUtils';\nimport FactoryMaker from '../../core/FactoryMaker';\n\nfunction DashManifestModel(config) {\n\n config = config || {};\n let instance;\n const context = this.context;\n\n const urlUtils = URLUtils(context).getInstance();\n const mediaController = config.mediaController;\n const timelineConverter = config.timelineConverter;\n const adapter = config.adapter;\n\n const PROFILE_DVB = 'urn:dvb:dash:profile:dvb-dash:2014';\n const isInteger = Number.isInteger || function (value) {\n return typeof value === 'number' &&\n isFinite(value) &&\n Math.floor(value) === value;\n };\n\n function getIsTypeOf(adaptation, type) {\n\n let i,\n len,\n representation,\n col,\n mimeTypeRegEx,\n codecs;\n let result = false;\n let found = false;\n\n if (!adaptation) {\n throw new Error('adaptation is not defined');\n }\n\n if (!type) {\n throw new Error('type is not defined');\n }\n\n if (adaptation.hasOwnProperty('ContentComponent_asArray')) {\n col = adaptation.ContentComponent_asArray;\n }\n\n mimeTypeRegEx = (type !== Constants.TEXT) ? new RegExp(type) : new RegExp('(vtt|ttml)');\n\n if ((adaptation.Representation_asArray && adaptation.Representation_asArray.length && adaptation.Representation_asArray.length > 0) &&\n (adaptation.Representation_asArray[0].hasOwnProperty(DashConstants.CODECS))) {\n // Just check the start of the codecs string\n codecs = adaptation.Representation_asArray[0].codecs;\n if (codecs.search(Constants.STPP) === 0 || codecs.search(Constants.WVTT) === 0) {\n return type === Constants.FRAGMENTED_TEXT;\n }\n }\n\n if (col) {\n if (col.length > 1) {\n return (type === Constants.MUXED);\n } else if (col[0] && col[0].contentType === type) {\n result = true;\n found = true;\n }\n }\n\n if (adaptation.hasOwnProperty(DashConstants.MIME_TYPE)) {\n result = mimeTypeRegEx.test(adaptation.mimeType);\n found = true;\n }\n\n // couldn't find on adaptationset, so check a representation\n if (!found) {\n i = 0;\n len = adaptation.Representation_asArray && adaptation.Representation_asArray.length ? adaptation.Representation_asArray.length : 0;\n while (!found && i < len) {\n representation = adaptation.Representation_asArray[i];\n\n if (representation.hasOwnProperty(DashConstants.MIME_TYPE)) {\n result = mimeTypeRegEx.test(representation.mimeType);\n found = true;\n }\n\n i++;\n }\n }\n\n return result;\n }\n\n function getIsAudio(adaptation) {\n return getIsTypeOf(adaptation, Constants.AUDIO);\n }\n\n function getIsVideo(adaptation) {\n return getIsTypeOf(adaptation, Constants.VIDEO);\n }\n\n function getIsFragmentedText(adaptation) {\n return getIsTypeOf(adaptation, Constants.FRAGMENTED_TEXT);\n }\n\n function getIsText(adaptation) {\n return getIsTypeOf(adaptation, Constants.TEXT);\n }\n\n function getIsMuxed(adaptation) {\n return getIsTypeOf(adaptation, Constants.MUXED);\n }\n\n function getIsTextTrack(type) {\n return (type === 'text/vtt' || type === 'application/ttml+xml');\n }\n\n function getLanguageForAdaptation(adaptation) {\n let lang = '';\n\n if (adaptation && adaptation.hasOwnProperty(DashConstants.LANG)) {\n //Filter out any other characters not allowed according to RFC5646\n lang = adaptation.lang.replace(/[^A-Za-z0-9-]/g, '');\n }\n\n return lang;\n }\n\n function getViewpointForAdaptation(adaptation) {\n return adaptation && adaptation.hasOwnProperty(DashConstants.VIEWPOINT) ? adaptation.Viewpoint : null;\n }\n\n function getRolesForAdaptation(adaptation) {\n return adaptation && adaptation.hasOwnProperty(DashConstants.ROLE_ASARRAY) ? adaptation.Role_asArray : [];\n }\n\n function getAccessibilityForAdaptation(adaptation) {\n return adaptation && adaptation.hasOwnProperty(DashConstants.ACCESSIBILITY_ASARRAY) ? adaptation.Accessibility_asArray : [];\n }\n\n function getAudioChannelConfigurationForAdaptation(adaptation) {\n return adaptation && adaptation.hasOwnProperty(DashConstants.AUDIOCHANNELCONFIGURATION_ASARRAY) ? adaptation.AudioChannelConfiguration_asArray : [];\n }\n\n function getIsMain(adaptation) {\n return getRolesForAdaptation(adaptation).filter(function (role) {\n return role.value === DashConstants.MAIN;\n })[0];\n }\n\n function getRepresentationSortFunction() {\n return (a, b) => a.bandwidth - b.bandwidth;\n }\n\n function processAdaptation(realAdaptation) {\n if (realAdaptation && realAdaptation.Representation_asArray !== undefined && realAdaptation.Representation_asArray !== null) {\n realAdaptation.Representation_asArray.sort(getRepresentationSortFunction());\n }\n\n return realAdaptation;\n }\n\n function getAdaptationForId(id, manifest, periodIndex) {\n const realAdaptations = manifest && manifest.Period_asArray && isInteger(periodIndex) ? manifest.Period_asArray[periodIndex] ? manifest.Period_asArray[periodIndex].AdaptationSet_asArray : [] : [];\n let i,\n len;\n\n for (i = 0, len = realAdaptations.length; i < len; i++) {\n if (realAdaptations[i].hasOwnProperty(DashConstants.ID) && realAdaptations[i].id === id) {\n return realAdaptations[i];\n }\n }\n\n return null;\n }\n\n function getAdaptationForIndex(index, manifest, periodIndex) {\n const realAdaptations = manifest && manifest.Period_asArray && isInteger(periodIndex) ? manifest.Period_asArray[periodIndex] ? manifest.Period_asArray[periodIndex].AdaptationSet_asArray : null : null;\n if (realAdaptations && isInteger(index)) {\n return realAdaptations[index];\n } else {\n return null;\n }\n }\n\n function getIndexForAdaptation(realAdaptation, manifest, periodIndex) {\n const realAdaptations = manifest && manifest.Period_asArray && isInteger(periodIndex) ? manifest.Period_asArray[periodIndex] ? manifest.Period_asArray[periodIndex].AdaptationSet_asArray : [] : [];\n const len = realAdaptations.length;\n\n if (realAdaptation) {\n for (let i = 0; i < len; i++) {\n let objectUtils = ObjectUtils(context).getInstance();\n if (objectUtils.areEqual(realAdaptations[i], realAdaptation)) {\n return i;\n }\n }\n }\n\n return -1;\n }\n\n function getAdaptationsForType(manifest, periodIndex, type) {\n const realAdaptationSet = manifest && manifest.Period_asArray && isInteger(periodIndex) ? manifest.Period_asArray[periodIndex] ? manifest.Period_asArray[periodIndex].AdaptationSet_asArray : [] : [];\n let i,\n len;\n const adaptations = [];\n\n for (i = 0, len = realAdaptationSet.length; i < len; i++) {\n if (getIsTypeOf(realAdaptationSet[i], type)) {\n adaptations.push(processAdaptation(realAdaptationSet[i]));\n }\n }\n\n return adaptations;\n }\n\n function getAdaptationForType(manifest, periodIndex, type, streamInfo) {\n const adaptations = getAdaptationsForType(manifest, periodIndex, type);\n\n if (!adaptations || adaptations.length === 0) return null;\n\n if (adaptations.length > 1 && streamInfo) {\n const currentTrack = mediaController.getCurrentTrackFor(type, streamInfo);\n const allMediaInfoForType = adapter.getAllMediaInfoForType(streamInfo, type);\n for (let i = 0, ln = adaptations.length; i < ln; i++) {\n if (currentTrack && mediaController.isTracksEqual(currentTrack, allMediaInfoForType[i])) {\n return adaptations[i];\n }\n }\n for (let i = 0, ln = adaptations.length; i < ln; i++) {\n if (getIsMain(adaptations[i])) {\n return adaptations[i];\n }\n }\n }\n\n return adaptations[0];\n }\n\n function getCodec(adaptation, representationId) {\n if (adaptation && adaptation.Representation_asArray && adaptation.Representation_asArray.length > 0) {\n const representation = isInteger(representationId) && representationId >= 0 && representationId < adaptation.Representation_asArray.length ?\n adaptation.Representation_asArray[representationId] : adaptation.Representation_asArray[0];\n return (representation.mimeType + ';codecs=\"' + representation.codecs + '\"');\n }\n\n return null;\n }\n\n function getMimeType(adaptation) {\n return adaptation && adaptation.Representation_asArray && adaptation.Representation_asArray.length > 0 ? adaptation.Representation_asArray[0].mimeType : null;\n }\n\n function getKID(adaptation) {\n if (!adaptation || !adaptation.hasOwnProperty(DashConstants.CENC_DEFAULT_KID)) {\n return null;\n }\n return adaptation[DashConstants.CENC_DEFAULT_KID];\n }\n\n function getContentProtectionData(adaptation) {\n if (!adaptation || !adaptation.hasOwnProperty(DashConstants.CONTENTPROTECTION_ASARRAY) || adaptation.ContentProtection_asArray.length === 0) {\n return null;\n }\n return adaptation.ContentProtection_asArray;\n }\n\n function getIsDynamic(manifest) {\n let isDynamic = false;\n if (manifest && manifest.hasOwnProperty('type')) {\n isDynamic = (manifest.type === DashConstants.DYNAMIC);\n }\n return isDynamic;\n }\n\n function hasProfile(manifest, profile) {\n let has = false;\n\n if (manifest && manifest.profiles && manifest.profiles.length > 0) {\n has = (manifest.profiles.indexOf(profile) !== -1);\n }\n\n return has;\n }\n\n function getIsDVB(manifest) {\n return hasProfile(manifest, PROFILE_DVB);\n }\n\n function getDuration(manifest) {\n let mpdDuration;\n //@mediaPresentationDuration specifies the duration of the entire Media Presentation.\n //If the attribute is not present, the duration of the Media Presentation is unknown.\n if (manifest && manifest.hasOwnProperty(DashConstants.MEDIA_PRESENTATION_DURATION)) {\n mpdDuration = manifest.mediaPresentationDuration;\n } else {\n mpdDuration = Number.MAX_SAFE_INTEGER || Number.MAX_VALUE;\n }\n\n return mpdDuration;\n }\n\n function getBandwidth(representation) {\n return representation && representation.bandwidth ? representation.bandwidth : NaN;\n }\n\n function getManifestUpdatePeriod(manifest, latencyOfLastUpdate = 0) {\n let delay = NaN;\n if (manifest && manifest.hasOwnProperty(DashConstants.MINIMUM_UPDATE_PERIOD)) {\n delay = manifest.minimumUpdatePeriod;\n }\n return isNaN(delay) ? delay : Math.max(delay - latencyOfLastUpdate, 1);\n }\n\n function getRepresentationCount(adaptation) {\n return adaptation && adaptation.Representation_asArray && adaptation.Representation_asArray.length ? adaptation.Representation_asArray.length : 0;\n }\n\n function getBitrateListForAdaptation(realAdaptation) {\n if (!realAdaptation || !realAdaptation.Representation_asArray || !realAdaptation.Representation_asArray.length) return null;\n\n const processedRealAdaptation = processAdaptation(realAdaptation);\n const realRepresentations = processedRealAdaptation.Representation_asArray;\n const ln = realRepresentations.length;\n const bitrateList = [];\n let i = 0;\n\n for (i = 0; i < ln; i++) {\n bitrateList.push({\n bandwidth: realRepresentations[i].bandwidth,\n width: realRepresentations[i].width || 0,\n height: realRepresentations[i].height || 0,\n scanType: realRepresentations[i].scanType || null\n });\n }\n\n return bitrateList;\n }\n\n function getRepresentationFor(index, adaptation) {\n return adaptation && adaptation.Representation_asArray && adaptation.Representation_asArray.length > 0 &&\n isInteger(index) ? adaptation.Representation_asArray[index] : null;\n }\n\n function getRepresentationsForAdaptation(voAdaptation) {\n const voRepresentations = [];\n let voRepresentation,\n initialization,\n segmentInfo,\n processedRealAdaptation,\n realRepresentation,\n i,\n s;\n\n if (voAdaptation && voAdaptation.period && isInteger(voAdaptation.period.index)) {\n const periodArray = voAdaptation.period.mpd.manifest.Period_asArray[voAdaptation.period.index];\n if (periodArray && periodArray.AdaptationSet_asArray && isInteger(voAdaptation.index)) {\n processedRealAdaptation = processAdaptation(periodArray.AdaptationSet_asArray[voAdaptation.index]);\n }\n }\n\n for (i = 0; processedRealAdaptation && i < processedRealAdaptation.Representation_asArray.length; i++) {\n realRepresentation = processedRealAdaptation.Representation_asArray[i];\n voRepresentation = new Representation();\n voRepresentation.index = i;\n voRepresentation.adaptation = voAdaptation;\n\n if (realRepresentation.hasOwnProperty(DashConstants.ID)) {\n voRepresentation.id = realRepresentation.id;\n }\n if (realRepresentation.hasOwnProperty(DashConstants.CODECS)) {\n voRepresentation.codecs = realRepresentation.codecs;\n }\n if (realRepresentation.hasOwnProperty(DashConstants.CODEC_PRIVATE_DATA)) {\n voRepresentation.codecPrivateData = realRepresentation.codecPrivateData;\n }\n if (realRepresentation.hasOwnProperty(DashConstants.BANDWITH)) {\n voRepresentation.bandwidth = realRepresentation.bandwidth;\n }\n if (realRepresentation.hasOwnProperty(DashConstants.WIDTH)) {\n voRepresentation.width = realRepresentation.width;\n }\n if (realRepresentation.hasOwnProperty(DashConstants.HEIGHT)) {\n voRepresentation.height = realRepresentation.height;\n }\n if (realRepresentation.hasOwnProperty(DashConstants.SCAN_TYPE)) {\n voRepresentation.scanType = realRepresentation.scanType;\n }\n if (realRepresentation.hasOwnProperty(DashConstants.MAX_PLAYOUT_RATE)) {\n voRepresentation.maxPlayoutRate = realRepresentation.maxPlayoutRate;\n }\n if (realRepresentation.hasOwnProperty(DashConstants.SEGMENT_BASE)) {\n segmentInfo = realRepresentation.SegmentBase;\n voRepresentation.segmentInfoType = DashConstants.SEGMENT_BASE;\n } else if (realRepresentation.hasOwnProperty(DashConstants.SEGMENT_LIST)) {\n segmentInfo = realRepresentation.SegmentList;\n\n if (segmentInfo.hasOwnProperty(DashConstants.SEGMENT_TIMELINE)) {\n voRepresentation.segmentInfoType = DashConstants.SEGMENT_TIMELINE;\n s = segmentInfo.SegmentTimeline.S_asArray[segmentInfo.SegmentTimeline.S_asArray.length - 1];\n if (!s.hasOwnProperty('r') || s.r >= 0) {\n voRepresentation.useCalculatedLiveEdgeTime = true;\n }\n } else {\n voRepresentation.segmentInfoType = DashConstants.SEGMENT_LIST;\n voRepresentation.useCalculatedLiveEdgeTime = true;\n }\n } else if (realRepresentation.hasOwnProperty(DashConstants.SEGMENT_TEMPLATE)) {\n segmentInfo = realRepresentation.SegmentTemplate;\n\n if (segmentInfo.hasOwnProperty(DashConstants.SEGMENT_TIMELINE)) {\n voRepresentation.segmentInfoType = DashConstants.SEGMENT_TIMELINE;\n s = segmentInfo.SegmentTimeline.S_asArray[segmentInfo.SegmentTimeline.S_asArray.length - 1];\n if (!s.hasOwnProperty('r') || s.r >= 0) {\n voRepresentation.useCalculatedLiveEdgeTime = true;\n }\n } else {\n voRepresentation.segmentInfoType = DashConstants.SEGMENT_TEMPLATE;\n }\n\n if (segmentInfo.hasOwnProperty(DashConstants.INITIALIZATION_MINUS)) {\n voRepresentation.initialization = segmentInfo.initialization.split('$Bandwidth$')\n .join(realRepresentation.bandwidth).split('$RepresentationID$').join(realRepresentation.id);\n }\n } else {\n voRepresentation.segmentInfoType = DashConstants.BASE_URL;\n }\n\n if (segmentInfo) {\n if (segmentInfo.hasOwnProperty(DashConstants.INITIALIZATION)) {\n initialization = segmentInfo.Initialization;\n\n if (initialization.hasOwnProperty(DashConstants.SOURCE_URL)) {\n voRepresentation.initialization = initialization.sourceURL;\n } else if (initialization.hasOwnProperty(DashConstants.RANGE)) {\n voRepresentation.range = initialization.range;\n // initialization source url will be determined from\n // BaseURL when resolved at load time.\n }\n } else if (realRepresentation.hasOwnProperty(DashConstants.MIME_TYPE) && getIsTextTrack(realRepresentation.mimeType)) {\n voRepresentation.range = 0;\n }\n\n if (segmentInfo.hasOwnProperty(DashConstants.TIMESCALE)) {\n voRepresentation.timescale = segmentInfo.timescale;\n }\n if (segmentInfo.hasOwnProperty(DashConstants.DURATION)) {\n // TODO according to the spec @maxSegmentDuration specifies the maximum duration of any Segment in any Representation in the Media Presentation\n // It is also said that for a SegmentTimeline any @d value shall not exceed the value of MPD@maxSegmentDuration, but nothing is said about\n // SegmentTemplate @duration attribute. We need to find out if @maxSegmentDuration should be used instead of calculated duration if the the duration\n // exceeds @maxSegmentDuration\n //representation.segmentDuration = Math.min(segmentInfo.duration / representation.timescale, adaptation.period.mpd.maxSegmentDuration);\n voRepresentation.segmentDuration = segmentInfo.duration / voRepresentation.timescale;\n }\n if (segmentInfo.hasOwnProperty(DashConstants.START_NUMBER)) {\n voRepresentation.startNumber = segmentInfo.startNumber;\n }\n if (segmentInfo.hasOwnProperty(DashConstants.INDEX_RANGE)) {\n voRepresentation.indexRange = segmentInfo.indexRange;\n }\n if (segmentInfo.hasOwnProperty(DashConstants.PRESENTATION_TIME_OFFSET)) {\n voRepresentation.presentationTimeOffset = segmentInfo.presentationTimeOffset / voRepresentation.timescale;\n }\n }\n\n voRepresentation.MSETimeOffset = timelineConverter.calcMSETimeOffset(voRepresentation);\n voRepresentation.path = [voAdaptation.period.index, voAdaptation.index, i];\n voRepresentations.push(voRepresentation);\n }\n\n return voRepresentations;\n }\n\n function getAdaptationsForPeriod(voPeriod) {\n const realPeriod = voPeriod && isInteger(voPeriod.index) ? voPeriod.mpd.manifest.Period_asArray[voPeriod.index] : null;\n const voAdaptations = [];\n let voAdaptationSet,\n realAdaptationSet,\n i;\n\n if (realPeriod && realPeriod.AdaptationSet_asArray) {\n for (i = 0; i < realPeriod.AdaptationSet_asArray.length; i++) {\n realAdaptationSet = realPeriod.AdaptationSet_asArray[i];\n voAdaptationSet = new AdaptationSet();\n if (realAdaptationSet.hasOwnProperty(DashConstants.ID)) {\n voAdaptationSet.id = realAdaptationSet.id;\n }\n voAdaptationSet.index = i;\n voAdaptationSet.period = voPeriod;\n\n if (getIsMuxed(realAdaptationSet)) {\n voAdaptationSet.type = Constants.MUXED;\n } else if (getIsAudio(realAdaptationSet)) {\n voAdaptationSet.type = Constants.AUDIO;\n } else if (getIsVideo(realAdaptationSet)) {\n voAdaptationSet.type = Constants.VIDEO;\n } else if (getIsFragmentedText(realAdaptationSet)) {\n voAdaptationSet.type = Constants.FRAGMENTED_TEXT;\n } else {\n voAdaptationSet.type = Constants.TEXT;\n }\n voAdaptations.push(voAdaptationSet);\n }\n }\n\n return voAdaptations;\n }\n\n function getRegularPeriods(mpd) {\n const isDynamic = mpd ? getIsDynamic(mpd.manifest) : false;\n const voPeriods = [];\n let realPeriod1 = null;\n let realPeriod = null;\n let voPeriod1 = null;\n let voPeriod = null;\n let len,\n i;\n\n for (i = 0, len = mpd && mpd.manifest && mpd.manifest.Period_asArray ? mpd.manifest.Period_asArray.length : 0; i < len; i++) {\n realPeriod = mpd.manifest.Period_asArray[i];\n\n // If the attribute @start is present in the Period, then the\n // Period is a regular Period and the PeriodStart is equal\n // to the value of this attribute.\n if (realPeriod.hasOwnProperty(DashConstants.START)) {\n voPeriod = new Period();\n voPeriod.start = realPeriod.start;\n }\n // If the @start attribute is absent, but the previous Period\n // element contains a @duration attribute then then this new\n // Period is also a regular Period. The start time of the new\n // Period PeriodStart is the sum of the start time of the previous\n // Period PeriodStart and the value of the attribute @duration\n // of the previous Period.\n else if (realPeriod1 !== null && realPeriod.hasOwnProperty(DashConstants.DURATION) && voPeriod1 !== null) {\n voPeriod = new Period();\n voPeriod.start = parseFloat((voPeriod1.start + voPeriod1.duration).toFixed(5));\n voPeriod.duration = realPeriod.duration;\n }\n // If (i) @start attribute is absent, and (ii) the Period element\n // is the first in the MPD, and (iii) the MPD@type is 'static',\n // then the PeriodStart time shall be set to zero.\n else if (i === 0 && !isDynamic) {\n voPeriod = new Period();\n voPeriod.start = 0;\n }\n\n // The Period extends until the PeriodStart of the next Period.\n // The difference between the PeriodStart time of a Period and\n // the PeriodStart time of the following Period.\n if (voPeriod1 !== null && isNaN(voPeriod1.duration)) {\n voPeriod1.duration = parseFloat((voPeriod.start - voPeriod1.start).toFixed(5));\n }\n\n if (voPeriod !== null) {\n voPeriod.id = getPeriodId(realPeriod, i);\n }\n\n if (voPeriod !== null && realPeriod.hasOwnProperty(DashConstants.DURATION)) {\n voPeriod.duration = realPeriod.duration;\n }\n\n if (voPeriod !== null) {\n voPeriod.index = i;\n voPeriod.mpd = mpd;\n voPeriods.push(voPeriod);\n realPeriod1 = realPeriod;\n voPeriod1 = voPeriod;\n }\n\n realPeriod = null;\n voPeriod = null;\n }\n\n if (voPeriods.length === 0) {\n return voPeriods;\n }\n\n // The last Period extends until the end of the Media Presentation.\n // The difference between the PeriodStart time of the last Period\n // and the mpd duration\n if (voPeriod1 !== null && isNaN(voPeriod1.duration)) {\n voPeriod1.duration = parseFloat((getEndTimeForLastPeriod(voPeriod1) - voPeriod1.start).toFixed(5));\n }\n\n return voPeriods;\n }\n\n function getPeriodId(realPeriod, i) {\n if (!realPeriod) {\n throw new Error('Period cannot be null or undefined');\n }\n\n let id = Period.DEFAULT_ID + '_' + i;\n\n if (realPeriod.hasOwnProperty(DashConstants.ID) && realPeriod.id.length > 0 && realPeriod.id !== '__proto__') {\n id = realPeriod.id;\n }\n\n return id;\n }\n\n function getMpd(manifest) {\n const mpd = new Mpd();\n\n if (manifest) {\n mpd.manifest = manifest;\n\n if (manifest.hasOwnProperty(DashConstants.AVAILABILITY_START_TIME)) {\n mpd.availabilityStartTime = new Date(manifest.availabilityStartTime.getTime());\n } else {\n mpd.availabilityStartTime = new Date(manifest.loadedTime.getTime());\n }\n\n if (manifest.hasOwnProperty(DashConstants.AVAILABILITY_END_TIME)) {\n mpd.availabilityEndTime = new Date(manifest.availabilityEndTime.getTime());\n }\n\n if (manifest.hasOwnProperty(DashConstants.MINIMUM_UPDATE_PERIOD)) {\n mpd.minimumUpdatePeriod = manifest.minimumUpdatePeriod;\n }\n\n if (manifest.hasOwnProperty(DashConstants.MEDIA_PRESENTATION_DURATION)) {\n mpd.mediaPresentationDuration = manifest.mediaPresentationDuration;\n }\n\n if (manifest.hasOwnProperty(Constants.SUGGESTED_PRESENTATION_DELAY)) {\n mpd.suggestedPresentationDelay = manifest.suggestedPresentationDelay;\n }\n\n if (manifest.hasOwnProperty(DashConstants.TIMESHIFT_BUFFER_DEPTH)) {\n mpd.timeShiftBufferDepth = manifest.timeShiftBufferDepth;\n }\n\n if (manifest.hasOwnProperty(DashConstants.MAX_SEGMENT_DURATION)) {\n mpd.maxSegmentDuration = manifest.maxSegmentDuration;\n }\n }\n\n return mpd;\n }\n\n\n function getEndTimeForLastPeriod(voPeriod) {\n const isDynamic = getIsDynamic(voPeriod.mpd.manifest);\n\n let periodEnd;\n if (voPeriod.mpd.manifest.mediaPresentationDuration) {\n periodEnd = voPeriod.mpd.manifest.mediaPresentationDuration;\n } else if (voPeriod.duration) {\n periodEnd = voPeriod.duration;\n } else if (isDynamic) {\n periodEnd = Number.POSITIVE_INFINITY;\n } else {\n throw new Error('Must have @mediaPresentationDuratio on MPD or an explicit @duration on the last period.');\n }\n\n return periodEnd;\n }\n\n function getEventsForPeriod(period) {\n const manifest = period && period.mpd && period.mpd.manifest ? period.mpd.manifest : null;\n const periodArray = manifest ? manifest.Period_asArray : null;\n const eventStreams = periodArray && period && isInteger(period.index) ? periodArray[period.index].EventStream_asArray : null;\n const events = [];\n let i,\n j;\n\n if (eventStreams) {\n for (i = 0; i < eventStreams.length; i++) {\n const eventStream = new EventStream();\n eventStream.period = period;\n eventStream.timescale = 1;\n\n if (eventStreams[i].hasOwnProperty(Constants.SCHEME_ID_URI)) {\n eventStream.schemeIdUri = eventStreams[i].schemeIdUri;\n } else {\n throw new Error('Invalid EventStream. SchemeIdUri has to be set');\n }\n if (eventStreams[i].hasOwnProperty(DashConstants.TIMESCALE)) {\n eventStream.timescale = eventStreams[i].timescale;\n }\n if (eventStreams[i].hasOwnProperty(DashConstants.VALUE)) {\n eventStream.value = eventStreams[i].value;\n }\n for (j = 0; j < eventStreams[i].Event_asArray.length; j++) {\n const event = new Event();\n event.presentationTime = 0;\n event.eventStream = eventStream;\n\n if (eventStreams[i].Event_asArray[j].hasOwnProperty(DashConstants.PRESENTATION_TIME)) {\n event.presentationTime = eventStreams[i].Event_asArray[j].presentationTime;\n }\n if (eventStreams[i].Event_asArray[j].hasOwnProperty(DashConstants.DURATION)) {\n event.duration = eventStreams[i].Event_asArray[j].duration;\n }\n if (eventStreams[i].Event_asArray[j].hasOwnProperty(DashConstants.ID)) {\n event.id = eventStreams[i].Event_asArray[j].id;\n }\n events.push(event);\n }\n }\n }\n\n return events;\n }\n\n function getEventStreams(inbandStreams, representation) {\n const eventStreams = [];\n let i;\n\n if (!inbandStreams) return eventStreams;\n\n for (i = 0; i < inbandStreams.length; i++) {\n const eventStream = new EventStream();\n eventStream.timescale = 1;\n eventStream.representation = representation;\n\n if (inbandStreams[i].hasOwnProperty(Constants.SCHEME_ID_URI)) {\n eventStream.schemeIdUri = inbandStreams[i].schemeIdUri;\n } else {\n throw new Error('Invalid EventStream. SchemeIdUri has to be set');\n }\n if (inbandStreams[i].hasOwnProperty(DashConstants.TIMESCALE)) {\n eventStream.timescale = inbandStreams[i].timescale;\n }\n if (inbandStreams[i].hasOwnProperty(DashConstants.VALUE)) {\n eventStream.value = inbandStreams[i].value;\n }\n eventStreams.push(eventStream);\n }\n\n return eventStreams;\n }\n\n function getEventStreamForAdaptationSet(manifest, adaptation) {\n let inbandStreams,\n periodArray,\n adaptationArray;\n\n if (manifest && manifest.Period_asArray && adaptation && adaptation.period && isInteger(adaptation.period.index)) {\n periodArray = manifest.Period_asArray[adaptation.period.index];\n if (periodArray && periodArray.AdaptationSet_asArray && isInteger(adaptation.index)) {\n adaptationArray = periodArray.AdaptationSet_asArray[adaptation.index];\n if (adaptationArray) {\n inbandStreams = adaptationArray.InbandEventStream_asArray;\n }\n }\n }\n\n return getEventStreams(inbandStreams, null);\n }\n\n function getEventStreamForRepresentation(manifest, representation) {\n let inbandStreams,\n periodArray,\n adaptationArray,\n representationArray;\n\n if (manifest && manifest.Period_asArray && representation && representation.adaptation && representation.adaptation.period && isInteger(representation.adaptation.period.index)) {\n periodArray = manifest.Period_asArray[representation.adaptation.period.index];\n if (periodArray && periodArray.AdaptationSet_asArray && isInteger(representation.adaptation.index)) {\n adaptationArray = periodArray.AdaptationSet_asArray[representation.adaptation.index];\n if (adaptationArray && adaptationArray.Representation_asArray && isInteger(representation.index)) {\n representationArray = adaptationArray.Representation_asArray[representation.index];\n if (representationArray) {\n inbandStreams = representationArray.InbandEventStream_asArray;\n }\n }\n }\n }\n\n return getEventStreams(inbandStreams, representation);\n }\n\n function getUTCTimingSources(manifest) {\n const isDynamic = getIsDynamic(manifest);\n const hasAST = manifest ? manifest.hasOwnProperty(DashConstants.AVAILABILITY_START_TIME) : false;\n const utcTimingsArray = manifest ? manifest.UTCTiming_asArray : null;\n const utcTimingEntries = [];\n\n // do not bother synchronizing the clock unless MPD is live,\n // or it is static and has availabilityStartTime attribute\n if ((isDynamic || hasAST)) {\n if (utcTimingsArray) {\n // the order is important here - 23009-1 states that the order\n // in the manifest \"indicates relative preference, first having\n // the highest, and the last the lowest priority\".\n utcTimingsArray.forEach(function (utcTiming) {\n const entry = new UTCTiming();\n\n if (utcTiming.hasOwnProperty(Constants.SCHEME_ID_URI)) {\n entry.schemeIdUri = utcTiming.schemeIdUri;\n } else {\n // entries of type DescriptorType with no schemeIdUri\n // are meaningless. let's just ignore this entry and\n // move on.\n return;\n }\n\n // this is (incorrectly) interpreted as a number - schema\n // defines it as a string\n if (utcTiming.hasOwnProperty(DashConstants.VALUE)) {\n entry.value = utcTiming.value.toString();\n } else {\n // without a value, there's not a lot we can do with\n // this entry. let's just ignore this one and move on\n return;\n }\n\n // we're not interested in the optional id or any other\n // attributes which might be attached to the entry\n\n utcTimingEntries.push(entry);\n });\n }\n }\n\n return utcTimingEntries;\n }\n\n function getBaseURLsFromElement(node) {\n const baseUrls = [];\n // if node.BaseURL_asArray and node.baseUri are undefined entries\n // will be [undefined] which entries.some will just skip\n const entries = node.BaseURL_asArray || [node.baseUri];\n let earlyReturn = false;\n\n entries.some(entry => {\n if (entry) {\n const baseUrl = new BaseURL();\n let text = entry.__text || entry;\n\n if (urlUtils.isRelative(text)) {\n // it doesn't really make sense to have relative and\n // absolute URLs at the same level, or multiple\n // relative URLs at the same level, so assume we are\n // done from this level of the MPD\n earlyReturn = true;\n\n // deal with the specific case where the MPD@BaseURL\n // is specified and is relative. when no MPD@BaseURL\n // entries exist, that case is handled by the\n // [node.baseUri] in the entries definition.\n if (node.baseUri) {\n text = urlUtils.resolve(text, node.baseUri);\n }\n }\n\n baseUrl.url = text;\n\n // serviceLocation is optional, but we need it in order\n // to blacklist correctly. if it's not available, use\n // anything unique since there's no relationship to any\n // other BaseURL and, in theory, the url should be\n // unique so use this instead.\n if (entry.hasOwnProperty(DashConstants.SERVICE_LOCATION) &&\n entry.serviceLocation.length) {\n baseUrl.serviceLocation = entry.serviceLocation;\n } else {\n baseUrl.serviceLocation = text;\n }\n\n if (entry.hasOwnProperty(DashConstants.DVB_PRIORITY)) {\n baseUrl.dvb_priority = entry[DashConstants.DVB_PRIORITY];\n }\n\n if (entry.hasOwnProperty(DashConstants.DVB_WEIGHT)) {\n baseUrl.dvb_weight = entry[DashConstants.DVB_WEIGHT];\n }\n\n /* NOTE: byteRange, availabilityTimeOffset,\n * availabilityTimeComplete currently unused\n */\n\n baseUrls.push(baseUrl);\n\n return earlyReturn;\n }\n });\n\n return baseUrls;\n }\n\n function getLocation(manifest) {\n if (manifest && manifest.hasOwnProperty(Constants.LOCATION)) {\n // for now, do not support multiple Locations -\n // just set Location to the first Location.\n manifest.Location = manifest.Location_asArray[0];\n\n return manifest.Location;\n }\n\n // may well be undefined\n return undefined;\n }\n\n instance = {\n getIsTypeOf: getIsTypeOf,\n getIsAudio: getIsAudio,\n getIsVideo: getIsVideo,\n getIsText: getIsText,\n getIsMuxed: getIsMuxed,\n getIsTextTrack: getIsTextTrack,\n getIsFragmentedText: getIsFragmentedText,\n getIsMain: getIsMain,\n getLanguageForAdaptation: getLanguageForAdaptation,\n getViewpointForAdaptation: getViewpointForAdaptation,\n getRolesForAdaptation: getRolesForAdaptation,\n getAccessibilityForAdaptation: getAccessibilityForAdaptation,\n getAudioChannelConfigurationForAdaptation: getAudioChannelConfigurationForAdaptation,\n getAdaptationForIndex: getAdaptationForIndex,\n getIndexForAdaptation: getIndexForAdaptation,\n getAdaptationForId: getAdaptationForId,\n getAdaptationsForType: getAdaptationsForType,\n getAdaptationForType: getAdaptationForType,\n getCodec: getCodec,\n getMimeType: getMimeType,\n getKID: getKID,\n getContentProtectionData: getContentProtectionData,\n getIsDynamic: getIsDynamic,\n getIsDVB: getIsDVB,\n getDuration: getDuration,\n getBandwidth: getBandwidth,\n getManifestUpdatePeriod: getManifestUpdatePeriod,\n getRepresentationCount: getRepresentationCount,\n getBitrateListForAdaptation: getBitrateListForAdaptation,\n getRepresentationFor: getRepresentationFor,\n getRepresentationsForAdaptation: getRepresentationsForAdaptation,\n getAdaptationsForPeriod: getAdaptationsForPeriod,\n getRegularPeriods: getRegularPeriods,\n getMpd: getMpd,\n getEventsForPeriod: getEventsForPeriod,\n getEventStreamForAdaptationSet: getEventStreamForAdaptationSet,\n getEventStreamForRepresentation: getEventStreamForRepresentation,\n getUTCTimingSources: getUTCTimingSources,\n getBaseURLsFromElement: getBaseURLsFromElement,\n getRepresentationSortFunction: getRepresentationSortFunction,\n getLocation: getLocation\n };\n\n return instance;\n}\n\nDashManifestModel.__dashjs_factory_name = 'DashManifestModel';\nexport default FactoryMaker.getSingletonFactory(DashManifestModel);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\nimport ObjectIron from '../../../externals/objectiron';\nimport X2JS from '../../../externals/xml2json';\nimport StringMatcher from './matchers/StringMatcher';\nimport DurationMatcher from './matchers/DurationMatcher';\nimport DateTimeMatcher from './matchers/DateTimeMatcher';\nimport NumericMatcher from './matchers/NumericMatcher';\nimport RepresentationBaseValuesMap from './maps/RepresentationBaseValuesMap';\nimport SegmentValuesMap from './maps/SegmentValuesMap';\n\nfunction DashParser(config) {\n\n config = config || {};\n const context = this.context;\n const log = Debug(context).getInstance().log;\n const errorHandler = config.errorHandler;\n\n let instance,\n matchers,\n converter,\n objectIron;\n\n function setup() {\n matchers = [\n new DurationMatcher(),\n new DateTimeMatcher(),\n new NumericMatcher(),\n new StringMatcher() // last in list to take precedence over NumericMatcher\n ];\n\n converter = new X2JS({\n escapeMode: false,\n attributePrefix: '',\n arrayAccessForm: 'property',\n emptyNodeForm: 'object',\n stripWhitespaces: false,\n enableToStringFunc: false,\n ignoreRoot: true,\n matchers: matchers\n });\n\n objectIron = new ObjectIron([\n new RepresentationBaseValuesMap(),\n new SegmentValuesMap()\n ]);\n }\n\n function checkConfig() {\n if (!errorHandler || !errorHandler.hasOwnProperty('manifestError')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n function getMatchers() {\n return matchers;\n }\n\n function getIron() {\n return objectIron;\n }\n\n function parse(data) {\n let manifest;\n\n checkConfig();\n\n try {\n const startTime = window.performance.now();\n\n manifest = converter.xml_str2json(data);\n\n if (!manifest) {\n throw new Error('parser error');\n }\n\n const jsonTime = window.performance.now();\n\n objectIron.run(manifest);\n\n const ironedTime = window.performance.now();\n\n log('Parsing complete: ( xml2json: ' + (jsonTime - startTime).toPrecision(3) + 'ms, objectiron: ' + (ironedTime - jsonTime).toPrecision(3) + 'ms, total: ' + ((ironedTime - startTime) / 1000).toPrecision(3) + 's)');\n } catch (err) {\n errorHandler.manifestError('parsing the manifest failed', 'parse', data, err);\n return null;\n }\n\n return manifest;\n }\n\n instance = {\n parse: parse,\n getMatchers: getMatchers,\n getIron: getIron\n };\n\n setup();\n\n return instance;\n}\n\nDashParser.__dashjs_factory_name = 'DashParser';\nexport default FactoryMaker.getClassFactory(DashParser);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @classdesc a property belonging to a MapNode\n */\n\nclass CommonProperty {\n constructor(name, merge) {\n const getDefaultMergeForName =\n (n) => n && n.length && n.charAt(0) === n.charAt(0).toUpperCase();\n\n this._name = name;\n this._merge = merge !== undefined ?\n merge :\n getDefaultMergeForName(name);\n }\n\n get name() {\n return this._name;\n }\n\n get merge() {\n return this._merge;\n }\n}\n\nexport default CommonProperty;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @classdesc a node at some level in a ValueMap\n */\nimport CommonProperty from './CommonProperty';\n\nclass MapNode {\n constructor(name, properties, children, isRoot, isArray) {\n this._name = name || '';\n this._properties = [];\n this._children = children || [];\n this._isRoot = isRoot || false;\n this._isArray = isArray || true ;\n\n if (Array.isArray(properties)) {\n properties.forEach(p => {\n this._properties.push(new CommonProperty(p));\n });\n }\n }\n\n get name() {\n return this._name;\n }\n\n get isRoot() {\n return this._isRoot;\n }\n\n get isArray() {\n return this._isArray;\n }\n\n get children() {\n return this._children;\n }\n\n get properties() {\n return this._properties;\n }\n}\n\nexport default MapNode;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @classdesc a RepresentationBaseValuesMap type for input to objectiron\n */\nimport MapNode from './MapNode';\nimport DashConstants from '../../constants/DashConstants';\n\nclass RepresentationBaseValuesMap extends MapNode {\n constructor() {\n const commonProperties = [\n DashConstants.PROFILES, DashConstants.WIDTH, DashConstants.HEIGHT, DashConstants.SAR, DashConstants.FRAMERATE, DashConstants.AUDIO_SAMPLING_RATE, DashConstants.MIME_TYPE, DashConstants.SEGMENT_PROFILES, DashConstants.CODECS, DashConstants.MAXIMUM_SAP_PERIOD, DashConstants.START_WITH_SAP, DashConstants.MAX_PLAYOUT_RATE, DashConstants.CODING_DEPENDENCY, DashConstants.SCAN_TYPE, DashConstants.FRAME_PACKING, DashConstants.AUDIO_CHANNEL_CONFIGURATION, DashConstants.CONTENT_PROTECTION, DashConstants.ESSENTIAL_PROPERTY, DashConstants.SUPPLEMENTAL_PROPERTY, DashConstants.INBAND_EVENT_STREAM\n ];\n\n super(DashConstants.ADAPTATION_SET, commonProperties, [\n new MapNode(DashConstants.REPRESENTATION, commonProperties, [\n new MapNode(DashConstants.SUB_REPRESENTATION, commonProperties)\n ])\n ]);\n }\n}\n\nexport default RepresentationBaseValuesMap;\n", @@ -313,12 +315,12 @@ "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @classdesc Matches and converts xs:numeric to float\n */\nimport BaseMatcher from './BaseMatcher';\n\nconst numericRegex = /^[-+]?[0-9]+[.]?[0-9]*([eE][-+]?[0-9]+)?$/;\n\nclass NumericMatcher extends BaseMatcher {\n constructor() {\n super(\n attr => numericRegex.test(attr.value),\n str => parseFloat(str)\n );\n }\n}\n\nexport default NumericMatcher;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @classdesc Matches and converts xs:string to string, but only for specific attributes on specific nodes\n */\nimport BaseMatcher from './BaseMatcher';\nimport DashConstants from '../../constants/DashConstants';\n\nclass StringMatcher extends BaseMatcher {\n constructor() {\n super(\n (attr, nodeName) => {\n const stringAttrsInElements = {\n [DashConstants.MPD]: [ DashConstants.ID, DashConstants.PROFILES ],\n [DashConstants.PERIOD]: [ DashConstants.ID ],\n [DashConstants.BASE_URL]: [ DashConstants.SERVICE_LOCATION, DashConstants.BYTE_RANGE ],\n [DashConstants.SEGMENT_BASE]: [ DashConstants.INDEX_RANGE ],\n [DashConstants.INITIALIZATION]: [ DashConstants.RANGE ],\n [DashConstants.REPRESENTATION_INDEX]: [ DashConstants.RANGE ],\n [DashConstants.SEGMENT_LIST]: [ DashConstants.INDEX_RANGE ],\n [DashConstants.BITSTREAM_SWITCHING]: [ DashConstants.RANGE ],\n [DashConstants.SEGMENT_URL]: [ DashConstants.MEDIA_RANGE, DashConstants.INDEX_RANGE ],\n [DashConstants.SEGMENT_TEMPLATE]: [ DashConstants.INDEX_RANGE, DashConstants.MEDIA, DashConstants.INDEX, DashConstants.INITIALIZATION_MINUS, DashConstants.BITSTREAM_SWITCHING_MINUS ],\n [DashConstants.ASSET_IDENTIFIER]: [ DashConstants.VALUE, DashConstants.ID ],\n [DashConstants.EVENT_STREAM]: [ DashConstants.VALUE ],\n [DashConstants.ADAPTATION_SET]: [ DashConstants.PROFILES, DashConstants.MIME_TYPE, DashConstants.SEGMENT_PROFILES, DashConstants.CODECS, DashConstants.CONTENT_TYPE ],\n [DashConstants.FRAME_PACKING]: [ DashConstants.VALUE, DashConstants.ID ],\n [DashConstants.AUDIO_CHANNEL_CONFIGURATION]: [ DashConstants.VALUE, DashConstants.ID ],\n [DashConstants.CONTENT_PROTECTION]: [ DashConstants.VALUE, DashConstants.ID ],\n [DashConstants.ESSENTIAL_PROPERTY]: [ DashConstants.VALUE, DashConstants.ID ],\n [DashConstants.SUPPLEMENTAL_PROPERTY]: [ DashConstants.VALUE, DashConstants.ID ],\n [DashConstants.INBAND_EVENT_STREAM]: [ DashConstants.VALUE, DashConstants.ID ],\n [DashConstants.ACCESSIBILITY]: [ DashConstants.VALUE, DashConstants.ID ],\n [DashConstants.ROLE]: [ DashConstants.VALUE, DashConstants.ID ],\n [DashConstants.RATING]: [ DashConstants.VALUE, DashConstants.ID ],\n [DashConstants.VIEWPOINT]: [ DashConstants.VALUE, DashConstants.ID ],\n [DashConstants.CONTENT_COMPONENT]: [ DashConstants.CONTENT_TYPE ],\n [DashConstants.REPRESENTATION]: [ DashConstants.ID, DashConstants.DEPENDENCY_ID, DashConstants.MEDIA_STREAM_STRUCTURE_ID ],\n [DashConstants.SUBSET]: [ DashConstants.ID ],\n [DashConstants.METRICS]: [ DashConstants.METRICS_MINUS ],\n [DashConstants.REPORTING]: [ DashConstants.VALUE, DashConstants.ID ]\n };\n if (stringAttrsInElements.hasOwnProperty(nodeName)) {\n let attrNames = stringAttrsInElements[nodeName];\n if (attrNames !== undefined) {\n return attrNames.indexOf(attr.name) >= 0;\n } else {\n return false;\n }\n }\n return false;\n },\n str => String(str)\n );\n }\n}\n\nexport default StringMatcher;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\n\nfunction FragmentedTextBoxParser() {\n\n let instance,\n boxParser;\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.boxParser) {\n boxParser = config.boxParser;\n }\n }\n\n function getSamplesInfo(ab) {\n if (!boxParser) {\n throw new Error('boxParser is undefined');\n }\n\n if (!ab) {\n return {sampleList: [], lastSequenceNumber: NaN, totalDuration: NaN, numSequences: NaN};\n }\n let isoFile = boxParser.parse(ab);\n // zero or more moofs\n let moofBoxes = isoFile.getBoxes('moof');\n // exactly one mfhd per moof\n let mfhdBoxes = isoFile.getBoxes('mfhd');\n\n let sampleDuration,\n sampleCompositionTimeOffset,\n sampleCount,\n sampleSize,\n sampleDts,\n sampleList,\n sample,\n i, j, k, l, m, n,\n dataOffset,\n lastSequenceNumber,\n numSequences,\n totalDuration;\n\n numSequences = isoFile.getBoxes('moof').length;\n lastSequenceNumber = mfhdBoxes[mfhdBoxes.length - 1].sequence_number;\n sampleCount = 0;\n\n sampleList = [];\n let subsIndex = -1;\n let nextSubsSample = -1;\n for (l = 0; l < moofBoxes.length; l++) {\n let moofBox = moofBoxes[l];\n // zero or more trafs per moof\n let trafBoxes = moofBox.getChildBoxes('traf');\n for (j = 0; j < trafBoxes.length; j++) {\n let trafBox = trafBoxes[j];\n // exactly one tfhd per traf\n let tfhdBox = trafBox.getChildBox('tfhd');\n // zero or one tfdt per traf\n let tfdtBox = trafBox.getChildBox('tfdt');\n sampleDts = tfdtBox.baseMediaDecodeTime;\n // zero or more truns per traf\n let trunBoxes = trafBox.getChildBoxes('trun');\n // zero or more subs per traf\n let subsBoxes = trafBox.getChildBoxes('subs');\n for (k = 0; k < trunBoxes.length; k++) {\n let trunBox = trunBoxes[k];\n sampleCount = trunBox.sample_count;\n dataOffset = (tfhdBox.base_data_offset || 0) + (trunBox.data_offset || 0);\n\n for (i = 0; i < sampleCount; i++) {\n sample = trunBox.samples[i];\n sampleDuration = (sample.sample_duration !== undefined) ? sample.sample_duration : tfhdBox.default_sample_duration;\n sampleSize = (sample.sample_size !== undefined) ? sample.sample_size : tfhdBox.default_sample_size;\n sampleCompositionTimeOffset = (sample.sample_composition_time_offset !== undefined) ? sample.sample_composition_time_offset : 0;\n let sampleData = {\n 'dts': sampleDts,\n 'cts': (sampleDts + sampleCompositionTimeOffset),\n 'duration': sampleDuration,\n 'offset': moofBox.offset + dataOffset,\n 'size': sampleSize,\n 'subSizes': [sampleSize]\n };\n if (subsBoxes) {\n for (m = 0; m < subsBoxes.length; m++) {\n let subsBox = subsBoxes[m];\n if (subsIndex < subsBox.entry_count && i > nextSubsSample) {\n subsIndex++;\n nextSubsSample += subsBox.entries[subsIndex].sample_delta;\n }\n if (i == nextSubsSample) {\n sampleData.subSizes = [];\n let entry = subsBox.entries[subsIndex];\n for (n = 0; n < entry.subsample_count; n++) {\n sampleData.subSizes.push(entry.subsamples[n].subsample_size);\n }\n }\n }\n }\n sampleList.push(sampleData);\n dataOffset += sampleSize;\n sampleDts += sampleDuration;\n }\n }\n totalDuration = sampleDts - tfdtBox.baseMediaDecodeTime;\n }\n }\n return {sampleList: sampleList, lastSequenceNumber: lastSequenceNumber, totalDuration: totalDuration, numSequences: numSequences};\n }\n\n function getMediaTimescaleFromMoov(ab) {\n if (!boxParser) {\n throw new Error('boxParser is undefined');\n }\n\n let isoFile = boxParser.parse(ab);\n let mdhdBox = isoFile ? isoFile.getBox('mdhd') : undefined;\n\n return mdhdBox ? mdhdBox.timescale : NaN;\n }\n\n instance = {\n getSamplesInfo: getSamplesInfo,\n getMediaTimescaleFromMoov: getMediaTimescaleFromMoov,\n setConfig: setConfig\n };\n\n return instance;\n}\n\nFragmentedTextBoxParser.__dashjs_factory_name = 'FragmentedTextBoxParser';\nexport default FactoryMaker.getSingletonFactory(FragmentedTextBoxParser);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\n\nimport {getIndexBasedSegment, decideSegmentListRangeForTemplate} from './SegmentsUtils';\n\nfunction ListSegmentsGetter(config, isDynamic) {\n\n let timelineConverter = config.timelineConverter;\n\n let instance;\n\n function getSegmentsFromList(representation, requestedTime, index) {\n let list = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentList;\n const len = list.SegmentURL_asArray.length;\n\n let segments = [];\n\n let periodSegIdx,\n seg,\n s,\n range,\n startIdx,\n endIdx,\n start;\n\n start = representation.startNumber;\n\n range = decideSegmentListRangeForTemplate(timelineConverter, isDynamic, representation, requestedTime, index);\n startIdx = Math.max(range.start, 0);\n endIdx = Math.min(range.end, list.SegmentURL_asArray.length - 1);\n\n for (periodSegIdx = startIdx; periodSegIdx <= endIdx; periodSegIdx++) {\n s = list.SegmentURL_asArray[periodSegIdx];\n\n seg = getIndexBasedSegment(timelineConverter, isDynamic, representation, periodSegIdx);\n seg.replacementTime = (start + periodSegIdx - 1) * representation.segmentDuration;\n seg.media = s.media ? s.media : '';\n seg.mediaRange = s.mediaRange;\n seg.index = s.index;\n seg.indexRange = s.indexRange;\n\n segments.push(seg);\n seg = null;\n }\n\n representation.availableSegmentsNumber = len;\n\n return segments;\n }\n\n instance = {\n getSegments: getSegmentsFromList\n };\n\n return instance;\n}\n\nListSegmentsGetter.__dashjs_factory_name = 'ListSegmentsGetter';\nconst factory = FactoryMaker.getClassFactory(ListSegmentsGetter);\nexport default factory;\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport DashConstants from '../constants/DashConstants';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport TimelineSegmentsGetter from './TimelineSegmentsGetter';\nimport TemplateSegmentsGetter from './TemplateSegmentsGetter';\nimport ListSegmentsGetter from './ListSegmentsGetter';\n\nfunction SegmentsGetter(config, isDynamic) {\n\n let context = this.context;\n\n let instance,\n timelineSegmentsGetter,\n templateSegmentsGetter,\n listSegmentsGetter;\n\n function setup() {\n timelineSegmentsGetter = TimelineSegmentsGetter(context).create(config, isDynamic);\n templateSegmentsGetter = TemplateSegmentsGetter(context).create(config, isDynamic);\n listSegmentsGetter = ListSegmentsGetter(context).create(config, isDynamic);\n }\n\n function getSegments(representation, requestedTime, index, onSegmentListUpdatedCallback) {\n let segments;\n const type = representation.segmentInfoType;\n\n // Already figure out the segments.\n if (type === DashConstants.SEGMENT_BASE || type === DashConstants.BASE_URL || !isSegmentListUpdateRequired(representation, index)) {\n segments = representation.segments;\n } else {\n if (type === DashConstants.SEGMENT_TIMELINE) {\n segments = timelineSegmentsGetter.getSegments(representation, requestedTime, index);\n } else if (type === DashConstants.SEGMENT_TEMPLATE) {\n segments = templateSegmentsGetter.getSegments(representation, requestedTime, index);\n } else if (type === DashConstants.SEGMENT_LIST) {\n segments = listSegmentsGetter.getSegments(representation, requestedTime, index);\n }\n\n if (onSegmentListUpdatedCallback) {\n onSegmentListUpdatedCallback(representation, segments);\n }\n }\n }\n\n function isSegmentListUpdateRequired(representation, index) {\n let segments = representation.segments;\n let updateRequired = false;\n\n let upperIdx,\n lowerIdx;\n\n if (!segments || segments.length === 0) {\n updateRequired = true;\n } else {\n lowerIdx = segments[0].availabilityIdx;\n upperIdx = segments[segments.length - 1].availabilityIdx;\n updateRequired = (index < lowerIdx) || (index > upperIdx);\n }\n\n return updateRequired;\n }\n\n instance = {\n getSegments: getSegments\n };\n\n setup();\n\n return instance;\n}\n\nSegmentsGetter.__dashjs_factory_name = 'SegmentsGetter';\nconst factory = FactoryMaker.getClassFactory(SegmentsGetter);\nexport default factory;\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Segment from './../vo/Segment';\n\nfunction zeroPadToLength(numStr, minStrLength) {\n while (numStr.length < minStrLength) {\n numStr = '0' + numStr;\n }\n return numStr;\n}\n\nfunction getNumberForSegment(segment, segmentIndex) {\n return segment.representation.startNumber + segmentIndex;\n}\n\nexport function replaceTokenForTemplate(url, token, value) {\n const formatTag = '%0';\n\n let startPos,\n endPos,\n formatTagPos,\n specifier,\n width,\n paddedValue;\n\n const tokenLen = token.length;\n const formatTagLen = formatTag.length;\n\n if (!url) {\n return url;\n }\n\n // keep looping round until all instances of have been\n // replaced. once that has happened, startPos below will be -1\n // and the completed url will be returned.\n while (true) {\n\n // check if there is a valid $...$ identifier\n // if not, return the url as is.\n startPos = url.indexOf('$' + token);\n if (startPos < 0) {\n return url;\n }\n\n // the next '$' must be the end of the identifier\n // if there isn't one, return the url as is.\n endPos = url.indexOf('$', startPos + tokenLen);\n if (endPos < 0) {\n return url;\n }\n\n // now see if there is an additional format tag suffixed to\n // the identifier within the enclosing '$' characters\n formatTagPos = url.indexOf(formatTag, startPos + tokenLen);\n if (formatTagPos > startPos && formatTagPos < endPos) {\n\n specifier = url.charAt(endPos - 1);\n width = parseInt(url.substring(formatTagPos + formatTagLen, endPos - 1), 10);\n\n // support the minimum specifiers required by IEEE 1003.1\n // (d, i , o, u, x, and X) for completeness\n switch (specifier) {\n // treat all int types as uint,\n // hence deliberate fallthrough\n case 'd':\n case 'i':\n case 'u':\n paddedValue = zeroPadToLength(value.toString(), width);\n break;\n case 'x':\n paddedValue = zeroPadToLength(value.toString(16), width);\n break;\n case 'X':\n paddedValue = zeroPadToLength(value.toString(16), width).toUpperCase();\n break;\n case 'o':\n paddedValue = zeroPadToLength(value.toString(8), width);\n break;\n default:\n //TODO: commented out logging to supress jshint warning -- `log` is undefined here\n //log('Unsupported/invalid IEEE 1003.1 format identifier string in URL');\n return url;\n }\n } else {\n paddedValue = value;\n }\n\n url = url.substring(0, startPos) + paddedValue + url.substring(endPos + 1);\n }\n}\n\nexport function getIndexBasedSegment(timelineConverter, isDynamic, representation, index) {\n let seg,\n duration,\n presentationStartTime,\n presentationEndTime;\n\n duration = representation.segmentDuration;\n\n /*\n * From spec - If neither @duration attribute nor SegmentTimeline element is present, then the Representation\n * shall contain exactly one Media Segment. The MPD start time is 0 and the MPD duration is obtained\n * in the same way as for the last Media Segment in the Representation.\n */\n if (isNaN(duration)) {\n duration = representation.adaptation.period.duration;\n }\n\n presentationStartTime = representation.adaptation.period.start + (index * duration);\n presentationEndTime = presentationStartTime + duration;\n\n seg = new Segment();\n\n seg.representation = representation;\n seg.duration = duration;\n seg.presentationStartTime = presentationStartTime;\n\n seg.mediaStartTime = timelineConverter.calcMediaTimeFromPresentationTime(seg.presentationStartTime, representation);\n\n seg.availabilityStartTime = timelineConverter.calcAvailabilityStartTimeFromPresentationTime(seg.presentationStartTime, representation.adaptation.period.mpd, isDynamic);\n seg.availabilityEndTime = timelineConverter.calcAvailabilityEndTimeFromPresentationTime(presentationEndTime, representation.adaptation.period.mpd, isDynamic);\n\n // at this wall clock time, the video element currentTime should be seg.presentationStartTime\n seg.wallStartTime = timelineConverter.calcWallTimeForSegment(seg, isDynamic);\n\n seg.replacementNumber = getNumberForSegment(seg, index);\n seg.availabilityIdx = index;\n\n return seg;\n}\n\nexport function getTimeBasedSegment(timelineConverter, isDynamic, representation, time, duration, fTimescale, url, range, index, tManifest) {\n const scaledTime = time / fTimescale;\n const scaledDuration = Math.min(duration / fTimescale, representation.adaptation.period.mpd.maxSegmentDuration);\n\n let presentationStartTime,\n presentationEndTime,\n seg;\n\n presentationStartTime = timelineConverter.calcPresentationTimeFromMediaTime(scaledTime, representation);\n presentationEndTime = presentationStartTime + scaledDuration;\n\n seg = new Segment();\n\n seg.representation = representation;\n seg.duration = scaledDuration;\n seg.mediaStartTime = scaledTime;\n\n seg.presentationStartTime = presentationStartTime;\n\n // For SegmentTimeline every segment is available at loadedTime\n seg.availabilityStartTime = representation.adaptation.period.mpd.manifest.loadedTime;\n seg.availabilityEndTime = timelineConverter.calcAvailabilityEndTimeFromPresentationTime(presentationEndTime, representation.adaptation.period.mpd, isDynamic);\n\n // at this wall clock time, the video element currentTime should be seg.presentationStartTime\n seg.wallStartTime = timelineConverter.calcWallTimeForSegment(seg, isDynamic);\n\n seg.replacementTime = tManifest ? tManifest : time;\n\n seg.replacementNumber = getNumberForSegment(seg, index);\n\n url = replaceTokenForTemplate(url, 'Number', seg.replacementNumber);\n url = replaceTokenForTemplate(url, 'Time', seg.replacementTime);\n seg.media = url;\n seg.mediaRange = range;\n seg.availabilityIdx = index;\n\n return seg;\n}\n\nexport function getSegmentByIndex(index, representation) {\n if (!representation || !representation.segments) return null;\n\n const ln = representation.segments.length;\n let seg,\n i;\n\n if (index < ln) {\n seg = representation.segments[index];\n if (seg && seg.availabilityIdx === index) {\n return seg;\n }\n }\n\n for (i = 0; i < ln; i++) {\n seg = representation.segments[i];\n\n if (seg && seg.availabilityIdx === index) {\n return seg;\n }\n }\n\n return null;\n}\n\nexport function decideSegmentListRangeForTemplate(timelineConverter, isDynamic, representation, requestedTime, index, givenAvailabilityUpperLimit) {\n const duration = representation.segmentDuration;\n const minBufferTime = representation.adaptation.period.mpd.manifest.minBufferTime;\n const availabilityWindow = representation.segmentAvailabilityRange;\n let periodRelativeRange = {\n start: timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation, availabilityWindow.start),\n end: timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation, availabilityWindow.end)\n };\n const currentSegmentList = representation.segments;\n const availabilityLowerLimit = 2 * duration;\n const availabilityUpperLimit = givenAvailabilityUpperLimit || Math.max(2 * minBufferTime, 10 * duration);\n\n let originAvailabilityTime = NaN;\n let originSegment = null;\n\n let start,\n end,\n range;\n\n periodRelativeRange.start = Math.max(periodRelativeRange.start, 0);\n\n if (isDynamic && !timelineConverter.isTimeSyncCompleted()) {\n start = Math.floor(periodRelativeRange.start / duration);\n end = Math.floor(periodRelativeRange.end / duration);\n range = {start: start, end: end};\n return range;\n }\n\n // if segments exist we should try to find the latest buffered time, which is the presentation time of the\n // segment for the current index\n if (currentSegmentList && currentSegmentList.length > 0) {\n originSegment = getSegmentByIndex(index, representation);\n if (originSegment) {\n originAvailabilityTime = timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation, originSegment.presentationStartTime);\n } else {\n originAvailabilityTime = index > 0 ? index * duration :\n timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation, requestedTime);\n }\n\n } else {\n // If no segments exist, but index > 0, it means that we switch to the other representation, so\n // we should proceed from this time.\n // Otherwise we should start from the beginning for static mpds or from the end (live edge) for dynamic mpds\n originAvailabilityTime = index > 0 ? index * duration : isDynamic ? periodRelativeRange.end : periodRelativeRange.start;\n }\n\n // segment list should not be out of the availability window range\n start = Math.floor(Math.max(originAvailabilityTime - availabilityLowerLimit, periodRelativeRange.start) / duration);\n end = Math.floor(Math.min(start + availabilityUpperLimit / duration, periodRelativeRange.end / duration));\n\n range = {start: start, end: end};\n\n return range;\n}\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\n\nimport {replaceTokenForTemplate, getIndexBasedSegment, decideSegmentListRangeForTemplate} from './SegmentsUtils';\n\nfunction TemplateSegmentsGetter(config, isDynamic) {\n\n let timelineConverter = config.timelineConverter;\n\n let instance;\n\n function getSegmentsFromTemplate(representation, requestedTime, index) {\n const template = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentTemplate;\n const duration = representation.segmentDuration;\n const availabilityWindow = representation.segmentAvailabilityRange;\n\n let segments = [];\n let url = null;\n let seg = null;\n\n let segmentRange,\n periodSegIdx,\n startIdx,\n endIdx,\n start;\n\n start = representation.startNumber;\n\n if (isNaN(duration) && !isDynamic) {\n segmentRange = {start: start, end: start};\n }\n else {\n segmentRange = decideSegmentListRangeForTemplate(timelineConverter, isDynamic, representation, requestedTime, index);\n }\n\n startIdx = segmentRange.start;\n endIdx = segmentRange.end;\n\n for (periodSegIdx = startIdx; periodSegIdx <= endIdx; periodSegIdx++) {\n\n seg = getIndexBasedSegment(timelineConverter, isDynamic, representation, periodSegIdx);\n seg.replacementTime = (start + periodSegIdx - 1) * representation.segmentDuration;\n url = template.media;\n url = replaceTokenForTemplate(url, 'Number', seg.replacementNumber);\n url = replaceTokenForTemplate(url, 'Time', seg.replacementTime);\n seg.media = url;\n\n segments.push(seg);\n seg = null;\n }\n\n if (isNaN(duration)) {\n representation.availableSegmentsNumber = 1;\n }\n else {\n representation.availableSegmentsNumber = Math.ceil((availabilityWindow.end - availabilityWindow.start) / duration);\n }\n\n return segments;\n }\n\n instance = {\n getSegments: getSegmentsFromTemplate\n };\n\n return instance;\n}\n\nTemplateSegmentsGetter.__dashjs_factory_name = 'TemplateSegmentsGetter';\nconst factory = FactoryMaker.getClassFactory(TemplateSegmentsGetter);\nexport default factory;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\n\nimport {getIndexBasedSegment, decideSegmentListRangeForTemplate} from './SegmentsUtils';\n\nfunction ListSegmentsGetter(config, isDynamic) {\n\n config = config || {};\n const timelineConverter = config.timelineConverter;\n\n let instance;\n\n function getSegmentsFromList(representation, requestedTime, index, availabilityUpperLimit) {\n const list = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentList;\n const len = list.SegmentURL_asArray.length;\n\n const segments = [];\n\n let periodSegIdx,\n seg,\n s,\n range,\n startIdx,\n endIdx,\n start;\n\n start = representation.startNumber;\n\n range = decideSegmentListRangeForTemplate(timelineConverter, isDynamic, representation, requestedTime, index, availabilityUpperLimit);\n startIdx = Math.max(range.start, 0);\n endIdx = Math.min(range.end, list.SegmentURL_asArray.length - 1);\n\n for (periodSegIdx = startIdx; periodSegIdx <= endIdx; periodSegIdx++) {\n s = list.SegmentURL_asArray[periodSegIdx];\n\n seg = getIndexBasedSegment(timelineConverter, isDynamic, representation, periodSegIdx);\n seg.replacementTime = (start + periodSegIdx - 1) * representation.segmentDuration;\n seg.media = s.media ? s.media : '';\n seg.mediaRange = s.mediaRange;\n seg.index = s.index;\n seg.indexRange = s.indexRange;\n\n segments.push(seg);\n seg = null;\n }\n\n representation.availableSegmentsNumber = len;\n\n return segments;\n }\n\n instance = {\n getSegments: getSegmentsFromList\n };\n\n return instance;\n}\n\nListSegmentsGetter.__dashjs_factory_name = 'ListSegmentsGetter';\nconst factory = FactoryMaker.getClassFactory(ListSegmentsGetter);\nexport default factory;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport DashConstants from '../constants/DashConstants';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport TimelineSegmentsGetter from './TimelineSegmentsGetter';\nimport TemplateSegmentsGetter from './TemplateSegmentsGetter';\nimport ListSegmentsGetter from './ListSegmentsGetter';\n\nfunction SegmentsGetter(config, isDynamic) {\n\n const context = this.context;\n\n let instance,\n timelineSegmentsGetter,\n templateSegmentsGetter,\n listSegmentsGetter;\n\n function setup() {\n timelineSegmentsGetter = TimelineSegmentsGetter(context).create(config, isDynamic);\n templateSegmentsGetter = TemplateSegmentsGetter(context).create(config, isDynamic);\n listSegmentsGetter = ListSegmentsGetter(context).create(config, isDynamic);\n }\n\n // availabilityUpperLimit parameter is not used directly by any dash.js function, but it is needed as a helper\n // for other developments that extend dash.js, and provide their own transport layers (ex: P2P transport)\n function getSegments(representation, requestedTime, index, onSegmentListUpdatedCallback, availabilityUpperLimit) {\n let segments;\n const type = representation.segmentInfoType;\n\n // Already figure out the segments.\n if (type === DashConstants.SEGMENT_BASE || type === DashConstants.BASE_URL || !isSegmentListUpdateRequired(representation, index)) {\n segments = representation.segments;\n } else {\n if (type === DashConstants.SEGMENT_TIMELINE) {\n segments = timelineSegmentsGetter.getSegments(representation, requestedTime, index, availabilityUpperLimit);\n } else if (type === DashConstants.SEGMENT_TEMPLATE) {\n segments = templateSegmentsGetter.getSegments(representation, requestedTime, index, availabilityUpperLimit);\n } else if (type === DashConstants.SEGMENT_LIST) {\n segments = listSegmentsGetter.getSegments(representation, requestedTime, index, availabilityUpperLimit);\n }\n\n if (onSegmentListUpdatedCallback) {\n onSegmentListUpdatedCallback(representation, segments);\n }\n }\n }\n\n function isSegmentListUpdateRequired(representation, index) {\n const segments = representation.segments;\n let updateRequired = false;\n\n let upperIdx,\n lowerIdx;\n\n if (!segments || segments.length === 0) {\n updateRequired = true;\n } else {\n lowerIdx = segments[0].availabilityIdx;\n upperIdx = segments[segments.length - 1].availabilityIdx;\n updateRequired = (index < lowerIdx) || (index > upperIdx);\n }\n\n return updateRequired;\n }\n\n instance = {\n getSegments: getSegments\n };\n\n setup();\n\n return instance;\n}\n\nSegmentsGetter.__dashjs_factory_name = 'SegmentsGetter';\nconst factory = FactoryMaker.getClassFactory(SegmentsGetter);\nexport default factory;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Segment from './../vo/Segment';\n\nfunction zeroPadToLength(numStr, minStrLength) {\n while (numStr.length < minStrLength) {\n numStr = '0' + numStr;\n }\n return numStr;\n}\n\nfunction getNumberForSegment(segment, segmentIndex) {\n return segment.representation.startNumber + segmentIndex;\n}\n\nexport function replaceTokenForTemplate(url, token, value) {\n const formatTag = '%0';\n\n let startPos,\n endPos,\n formatTagPos,\n specifier,\n width,\n paddedValue;\n\n const tokenLen = token.length;\n const formatTagLen = formatTag.length;\n\n if (!url) {\n return url;\n }\n\n // keep looping round until all instances of have been\n // replaced. once that has happened, startPos below will be -1\n // and the completed url will be returned.\n while (true) {\n\n // check if there is a valid $...$ identifier\n // if not, return the url as is.\n startPos = url.indexOf('$' + token);\n if (startPos < 0) {\n return url;\n }\n\n // the next '$' must be the end of the identifier\n // if there isn't one, return the url as is.\n endPos = url.indexOf('$', startPos + tokenLen);\n if (endPos < 0) {\n return url;\n }\n\n // now see if there is an additional format tag suffixed to\n // the identifier within the enclosing '$' characters\n formatTagPos = url.indexOf(formatTag, startPos + tokenLen);\n if (formatTagPos > startPos && formatTagPos < endPos) {\n\n specifier = url.charAt(endPos - 1);\n width = parseInt(url.substring(formatTagPos + formatTagLen, endPos - 1), 10);\n\n // support the minimum specifiers required by IEEE 1003.1\n // (d, i , o, u, x, and X) for completeness\n switch (specifier) {\n // treat all int types as uint,\n // hence deliberate fallthrough\n case 'd':\n case 'i':\n case 'u':\n paddedValue = zeroPadToLength(value.toString(), width);\n break;\n case 'x':\n paddedValue = zeroPadToLength(value.toString(16), width);\n break;\n case 'X':\n paddedValue = zeroPadToLength(value.toString(16), width).toUpperCase();\n break;\n case 'o':\n paddedValue = zeroPadToLength(value.toString(8), width);\n break;\n default:\n //TODO: commented out logging to supress jshint warning -- `log` is undefined here\n //log('Unsupported/invalid IEEE 1003.1 format identifier string in URL');\n return url;\n }\n } else {\n paddedValue = value;\n }\n\n url = url.substring(0, startPos) + paddedValue + url.substring(endPos + 1);\n }\n}\n\nexport function getIndexBasedSegment(timelineConverter, isDynamic, representation, index) {\n let seg,\n duration,\n presentationStartTime,\n presentationEndTime;\n\n duration = representation.segmentDuration;\n\n /*\n * From spec - If neither @duration attribute nor SegmentTimeline element is present, then the Representation\n * shall contain exactly one Media Segment. The MPD start time is 0 and the MPD duration is obtained\n * in the same way as for the last Media Segment in the Representation.\n */\n if (isNaN(duration)) {\n duration = representation.adaptation.period.duration;\n }\n\n presentationStartTime = parseFloat((representation.adaptation.period.start + (index * duration)).toFixed(5));\n presentationEndTime = parseFloat((presentationStartTime + duration).toFixed(5));\n\n seg = new Segment();\n\n seg.representation = representation;\n seg.duration = duration;\n seg.presentationStartTime = presentationStartTime;\n\n seg.mediaStartTime = timelineConverter.calcMediaTimeFromPresentationTime(seg.presentationStartTime, representation);\n\n seg.availabilityStartTime = timelineConverter.calcAvailabilityStartTimeFromPresentationTime(seg.presentationStartTime, representation.adaptation.period.mpd, isDynamic);\n seg.availabilityEndTime = timelineConverter.calcAvailabilityEndTimeFromPresentationTime(presentationEndTime, representation.adaptation.period.mpd, isDynamic);\n\n // at this wall clock time, the video element currentTime should be seg.presentationStartTime\n seg.wallStartTime = timelineConverter.calcWallTimeForSegment(seg, isDynamic);\n\n seg.replacementNumber = getNumberForSegment(seg, index);\n seg.availabilityIdx = index;\n\n return seg;\n}\n\nexport function getTimeBasedSegment(timelineConverter, isDynamic, representation, time, duration, fTimescale, url, range, index, tManifest) {\n const scaledTime = time / fTimescale;\n const scaledDuration = Math.min(duration / fTimescale, representation.adaptation.period.mpd.maxSegmentDuration);\n\n let presentationStartTime,\n presentationEndTime,\n seg;\n\n presentationStartTime = timelineConverter.calcPresentationTimeFromMediaTime(scaledTime, representation);\n presentationEndTime = presentationStartTime + scaledDuration;\n\n seg = new Segment();\n\n seg.representation = representation;\n seg.duration = scaledDuration;\n seg.mediaStartTime = scaledTime;\n\n seg.presentationStartTime = presentationStartTime;\n\n // For SegmentTimeline every segment is available at loadedTime\n seg.availabilityStartTime = representation.adaptation.period.mpd.manifest.loadedTime;\n seg.availabilityEndTime = timelineConverter.calcAvailabilityEndTimeFromPresentationTime(presentationEndTime, representation.adaptation.period.mpd, isDynamic);\n\n // at this wall clock time, the video element currentTime should be seg.presentationStartTime\n seg.wallStartTime = timelineConverter.calcWallTimeForSegment(seg, isDynamic);\n\n seg.replacementTime = tManifest ? tManifest : time;\n\n seg.replacementNumber = getNumberForSegment(seg, index);\n\n url = replaceTokenForTemplate(url, 'Number', seg.replacementNumber);\n url = replaceTokenForTemplate(url, 'Time', seg.replacementTime);\n seg.media = url;\n seg.mediaRange = range;\n seg.availabilityIdx = index;\n\n return seg;\n}\n\nexport function getSegmentByIndex(index, representation) {\n if (!representation || !representation.segments) return null;\n\n const ln = representation.segments.length;\n let seg,\n i;\n\n if (index < ln) {\n seg = representation.segments[index];\n if (seg && seg.availabilityIdx === index) {\n return seg;\n }\n }\n\n for (i = 0; i < ln; i++) {\n seg = representation.segments[i];\n\n if (seg && seg.availabilityIdx === index) {\n return seg;\n }\n }\n\n return null;\n}\n\nexport function decideSegmentListRangeForTemplate(timelineConverter, isDynamic, representation, requestedTime, index, givenAvailabilityUpperLimit) {\n const duration = representation.segmentDuration;\n const minBufferTime = representation.adaptation.period.mpd.manifest.minBufferTime;\n const availabilityWindow = representation.segmentAvailabilityRange;\n let periodRelativeRange = {\n start: timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation, availabilityWindow.start),\n end: timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation, availabilityWindow.end)\n };\n const currentSegmentList = representation.segments;\n const availabilityLowerLimit = 2 * duration;\n const availabilityUpperLimit = givenAvailabilityUpperLimit || Math.max(2 * minBufferTime, 10 * duration);\n\n let originAvailabilityTime = NaN;\n let originSegment = null;\n\n let start,\n end,\n range;\n\n periodRelativeRange.start = Math.max(periodRelativeRange.start, 0);\n\n if (isDynamic && !timelineConverter.isTimeSyncCompleted()) {\n start = Math.floor(periodRelativeRange.start / duration);\n end = Math.floor(periodRelativeRange.end / duration);\n range = {start: start, end: end};\n return range;\n }\n\n // if segments exist we should try to find the latest buffered time, which is the presentation time of the\n // segment for the current index\n if (currentSegmentList && currentSegmentList.length > 0) {\n originSegment = getSegmentByIndex(index, representation);\n if (originSegment) {\n originAvailabilityTime = timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation, originSegment.presentationStartTime);\n } else {\n originAvailabilityTime = index > 0 ? index * duration :\n timelineConverter.calcPeriodRelativeTimeFromMpdRelativeTime(representation, requestedTime);\n }\n\n } else {\n // If no segments exist, but index > 0, it means that we switch to the other representation, so\n // we should proceed from this time.\n // Otherwise we should start from the beginning for static mpds or from the end (live edge) for dynamic mpds\n originAvailabilityTime = index > 0 ? index * duration : isDynamic ? periodRelativeRange.end : periodRelativeRange.start;\n }\n\n // segment list should not be out of the availability window range\n start = Math.floor(Math.max(originAvailabilityTime - availabilityLowerLimit, periodRelativeRange.start) / duration);\n end = Math.floor(Math.min(start + availabilityUpperLimit / duration, periodRelativeRange.end / duration));\n\n range = {start: start, end: end};\n\n return range;\n}\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\n\nimport {replaceTokenForTemplate, getIndexBasedSegment, decideSegmentListRangeForTemplate} from './SegmentsUtils';\n\nfunction TemplateSegmentsGetter(config, isDynamic) {\n\n const timelineConverter = config.timelineConverter;\n\n let instance;\n\n function getSegmentsFromTemplate(representation, requestedTime, index, availabilityUpperLimit) {\n const template = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentTemplate;\n const duration = representation.segmentDuration;\n const availabilityWindow = representation.segmentAvailabilityRange;\n\n const segments = [];\n let url = null;\n let seg = null;\n\n let segmentRange,\n periodSegIdx,\n startIdx,\n endIdx,\n start;\n\n start = representation.startNumber;\n\n if (isNaN(duration) && !isDynamic) {\n segmentRange = {start: start, end: start};\n }\n else {\n segmentRange = decideSegmentListRangeForTemplate(timelineConverter, isDynamic, representation, requestedTime, index, availabilityUpperLimit);\n }\n\n startIdx = segmentRange.start;\n endIdx = segmentRange.end;\n\n for (periodSegIdx = startIdx; periodSegIdx <= endIdx; periodSegIdx++) {\n\n seg = getIndexBasedSegment(timelineConverter, isDynamic, representation, periodSegIdx);\n seg.replacementTime = (start + periodSegIdx - 1) * representation.segmentDuration;\n url = template.media;\n url = replaceTokenForTemplate(url, 'Number', seg.replacementNumber);\n url = replaceTokenForTemplate(url, 'Time', seg.replacementTime);\n seg.media = url;\n\n segments.push(seg);\n seg = null;\n }\n\n if (isNaN(duration)) {\n representation.availableSegmentsNumber = 1;\n }\n else {\n representation.availableSegmentsNumber = Math.ceil((availabilityWindow.end - availabilityWindow.start) / duration);\n }\n\n return segments;\n }\n\n instance = {\n getSegments: getSegmentsFromTemplate\n };\n\n return instance;\n}\n\nTemplateSegmentsGetter.__dashjs_factory_name = 'TemplateSegmentsGetter';\nconst factory = FactoryMaker.getClassFactory(TemplateSegmentsGetter);\nexport default factory;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\n\nfunction TimelineConverter() {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n clientServerTimeShift,\n isClientServerTimeSyncCompleted,\n expectedLiveEdge;\n\n function initialize() {\n resetInitialSettings();\n eventBus.on(Events.TIME_SYNCHRONIZATION_COMPLETED, onTimeSyncComplete, this);\n }\n\n function isTimeSyncCompleted() {\n return isClientServerTimeSyncCompleted;\n }\n\n function setTimeSyncCompleted(value) {\n isClientServerTimeSyncCompleted = value;\n }\n\n function getClientTimeOffset() {\n return clientServerTimeShift;\n }\n\n function setClientTimeOffset(value) {\n clientServerTimeShift = value;\n }\n\n function getExpectedLiveEdge() {\n return expectedLiveEdge;\n }\n\n function setExpectedLiveEdge(value) {\n expectedLiveEdge = value;\n }\n\n function calcAvailabilityTimeFromPresentationTime(presentationTime, mpd, isDynamic, calculateEnd) {\n let availabilityTime = NaN;\n\n if (calculateEnd) {\n //@timeShiftBufferDepth specifies the duration of the time shifting buffer that is guaranteed\n // to be available for a Media Presentation with type 'dynamic'.\n // When not present, the value is infinite.\n if (isDynamic && (mpd.timeShiftBufferDepth != Number.POSITIVE_INFINITY)) {\n availabilityTime = new Date(mpd.availabilityStartTime.getTime() + ((presentationTime + mpd.timeShiftBufferDepth) * 1000));\n } else {\n availabilityTime = mpd.availabilityEndTime;\n }\n } else {\n if (isDynamic) {\n availabilityTime = new Date(mpd.availabilityStartTime.getTime() + (presentationTime - clientServerTimeShift) * 1000);\n } else {\n // in static mpd, all segments are available at the same time\n availabilityTime = mpd.availabilityStartTime;\n }\n }\n\n return availabilityTime;\n }\n\n function calcAvailabilityStartTimeFromPresentationTime(presentationTime, mpd, isDynamic) {\n return calcAvailabilityTimeFromPresentationTime.call(this, presentationTime, mpd, isDynamic);\n }\n\n function calcAvailabilityEndTimeFromPresentationTime(presentationTime, mpd, isDynamic) {\n return calcAvailabilityTimeFromPresentationTime.call(this, presentationTime, mpd, isDynamic, true);\n }\n\n function calcPresentationTimeFromWallTime(wallTime, period) {\n //console.log(\"XXX\", wallTime.getTime() - period.mpd.availabilityStartTime.getTime(), clientServerTimeShift * 1000, clientServerTimeShift, period.mpd.availabilityStartTime.getTime())\n return ((wallTime.getTime() - period.mpd.availabilityStartTime.getTime() + clientServerTimeShift * 1000) / 1000);\n }\n\n function calcPresentationTimeFromMediaTime(mediaTime, representation) {\n const periodStart = representation.adaptation.period.start;\n const presentationOffset = representation.presentationTimeOffset;\n\n return mediaTime + (periodStart - presentationOffset);\n }\n\n function calcMediaTimeFromPresentationTime(presentationTime, representation) {\n const periodStart = representation.adaptation.period.start;\n const presentationOffset = representation.presentationTimeOffset;\n\n return presentationTime - periodStart + presentationOffset;\n }\n\n function calcWallTimeForSegment(segment, isDynamic) {\n let suggestedPresentationDelay,\n displayStartTime,\n wallTime;\n\n if (isDynamic) {\n suggestedPresentationDelay = segment.representation.adaptation.period.mpd.suggestedPresentationDelay;\n displayStartTime = segment.presentationStartTime + suggestedPresentationDelay;\n wallTime = new Date(segment.availabilityStartTime.getTime() + (displayStartTime * 1000));\n }\n\n return wallTime;\n }\n\n function calcSegmentAvailabilityRange(voRepresentation, isDynamic) {\n\n // Static Range Finder\n const voPeriod = voRepresentation.adaptation.period;\n const range = { start: voPeriod.start, end: voPeriod.start + voPeriod.duration };\n if (!isDynamic) return range;\n\n if (!isClientServerTimeSyncCompleted && voRepresentation.segmentAvailabilityRange) {\n return voRepresentation.segmentAvailabilityRange;\n }\n\n //Dyanmic Range Finder\n const d = voRepresentation.segmentDuration || (voRepresentation.segments && voRepresentation.segments.length ? voRepresentation.segments[voRepresentation.segments.length - 1].duration : 0);\n const now = calcPresentationTimeFromWallTime(new Date(), voPeriod);\n const periodEnd = voPeriod.start + voPeriod.duration;\n range.start = Math.max((now - voPeriod.mpd.timeShiftBufferDepth), voPeriod.start);\n range.end = now >= periodEnd && now - d < periodEnd ? periodEnd - d : now - d;\n\n return range;\n }\n\n function calcPeriodRelativeTimeFromMpdRelativeTime(representation, mpdRelativeTime) {\n const periodStartTime = representation.adaptation.period.start;\n return mpdRelativeTime - periodStartTime;\n }\n\n /*\n * We need to figure out if we want to timesync for segmentTimeine where useCalculatedLiveEdge = true\n * seems we figure out client offset based on logic in liveEdgeFinder getLiveEdge timelineConverter.setClientTimeOffset(liveEdge - representationInfo.DVRWindow.end);\n * FYI StreamController's onManifestUpdated entry point to timeSync\n * */\n function onTimeSyncComplete(e) {\n\n if (isClientServerTimeSyncCompleted) return;\n\n if (e.offset !== undefined) {\n\n setClientTimeOffset(e.offset / 1000);\n isClientServerTimeSyncCompleted = true;\n\n }\n }\n\n function calcMSETimeOffset(representation) {\n // The MSEOffset is offset from AST for media. It is Period@start - presentationTimeOffset\n const presentationOffset = representation.presentationTimeOffset;\n const periodStart = representation.adaptation.period.start;\n return (periodStart - presentationOffset);\n }\n\n function resetInitialSettings() {\n clientServerTimeShift = 0;\n isClientServerTimeSyncCompleted = false;\n expectedLiveEdge = NaN;\n }\n\n function reset() {\n eventBus.off(Events.TIME_SYNCHRONIZATION_COMPLETED, onTimeSyncComplete, this);\n resetInitialSettings();\n }\n\n instance = {\n initialize: initialize,\n isTimeSyncCompleted: isTimeSyncCompleted,\n setTimeSyncCompleted: setTimeSyncCompleted,\n getClientTimeOffset: getClientTimeOffset,\n setClientTimeOffset: setClientTimeOffset,\n getExpectedLiveEdge: getExpectedLiveEdge,\n setExpectedLiveEdge: setExpectedLiveEdge,\n calcAvailabilityStartTimeFromPresentationTime: calcAvailabilityStartTimeFromPresentationTime,\n calcAvailabilityEndTimeFromPresentationTime: calcAvailabilityEndTimeFromPresentationTime,\n calcPresentationTimeFromWallTime: calcPresentationTimeFromWallTime,\n calcPresentationTimeFromMediaTime: calcPresentationTimeFromMediaTime,\n calcPeriodRelativeTimeFromMpdRelativeTime: calcPeriodRelativeTimeFromMpdRelativeTime,\n calcMediaTimeFromPresentationTime: calcMediaTimeFromPresentationTime,\n calcSegmentAvailabilityRange: calcSegmentAvailabilityRange,\n calcWallTimeForSegment: calcWallTimeForSegment,\n calcMSETimeOffset: calcMSETimeOffset,\n reset: reset\n };\n\n return instance;\n}\n\nTimelineConverter.__dashjs_factory_name = 'TimelineConverter';\nexport default FactoryMaker.getSingletonFactory(TimelineConverter);", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\n\nimport {getTimeBasedSegment} from './SegmentsUtils';\n\nfunction TimelineSegmentsGetter(config, isDynamic) {\n\n let timelineConverter = config.timelineConverter;\n\n let instance;\n\n function checkConfig() {\n if (!timelineConverter || !timelineConverter.hasOwnProperty('calcMediaTimeFromPresentationTime') || !timelineConverter.hasOwnProperty('calcSegmentAvailabilityRange') ||\n !timelineConverter.hasOwnProperty('calcMediaTimeFromPresentationTime')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n function getSegmentsFromTimeline(representation, requestedTime, index) {\n\n checkConfig();\n\n if (!representation) {\n throw new Error('no representation');\n }\n\n if (requestedTime === undefined) {\n requestedTime = null;\n }\n\n const base = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentTemplate ||\n representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentList;\n const timeline = base.SegmentTimeline;\n const list = base.SegmentURL_asArray;\n const isAvailableSegmentNumberCalculated = representation.availableSegmentsNumber > 0;\n\n let maxSegmentsAhead;\n\n maxSegmentsAhead = (index > -1 || requestedTime !== null) ? 10 : Infinity;\n\n let time = 0;\n let scaledTime = 0;\n let availabilityIdx = -1;\n let segments = [];\n let requiredMediaTime = null;\n\n let fragments,\n frag,\n i,\n len,\n j,\n repeat,\n repeatEndTime,\n nextFrag,\n hasEnoughSegments,\n startIdx,\n fTimescale;\n\n let createSegment = function (s, i) {\n let media = base.media;\n let mediaRange = s.mediaRange;\n\n if (list) {\n media = list[i].media || '';\n mediaRange = list[i].mediaRange;\n }\n\n return getTimeBasedSegment(\n timelineConverter,\n isDynamic,\n representation,\n time,\n s.d,\n fTimescale,\n media,\n mediaRange,\n availabilityIdx,\n s.tManifest);\n };\n\n fTimescale = representation.timescale;\n\n fragments = timeline.S_asArray;\n\n startIdx = index;\n\n if (requestedTime !== null) {\n requiredMediaTime = timelineConverter.calcMediaTimeFromPresentationTime(requestedTime, representation);\n }\n\n for (i = 0, len = fragments.length; i < len; i++) {\n frag = fragments[i];\n repeat = 0;\n if (frag.hasOwnProperty('r')) {\n repeat = frag.r;\n }\n\n //For a repeated S element, t belongs only to the first segment\n if (frag.hasOwnProperty('t')) {\n time = frag.t;\n scaledTime = time / fTimescale;\n }\n\n //This is a special case: \"A negative value of the @r attribute of the S element indicates that the duration indicated in @d attribute repeats until the start of the next S element, the end of the Period or until the\n // next MPD update.\"\n if (repeat < 0) {\n nextFrag = fragments[i + 1];\n\n if (nextFrag && nextFrag.hasOwnProperty('t')) {\n repeatEndTime = nextFrag.t / fTimescale;\n } else {\n const availabilityEnd = representation.segmentAvailabilityRange ? representation.segmentAvailabilityRange.end : (timelineConverter.calcSegmentAvailabilityRange(representation, isDynamic).end);\n repeatEndTime = timelineConverter.calcMediaTimeFromPresentationTime(availabilityEnd, representation);\n representation.segmentDuration = frag.d / fTimescale;\n }\n\n repeat = Math.ceil((repeatEndTime - scaledTime) / (frag.d / fTimescale)) - 1;\n }\n\n // if we have enough segments in the list, but we have not calculated the total number of the segments yet we\n // should continue the loop and calc the number. Once it is calculated, we can break the loop.\n if (hasEnoughSegments) {\n if (isAvailableSegmentNumberCalculated) break;\n availabilityIdx += repeat + 1;\n continue;\n }\n\n for (j = 0; j <= repeat; j++) {\n availabilityIdx++;\n\n if (segments.length > maxSegmentsAhead) {\n hasEnoughSegments = true;\n if (isAvailableSegmentNumberCalculated) break;\n continue;\n }\n\n if (requiredMediaTime !== null) {\n // In some cases when requiredMediaTime = actual end time of the last segment\n // it is possible that this time a bit exceeds the declared end time of the last segment.\n // in this case we still need to include the last segment in the segment list. to do this we\n // use a correction factor = 1.5. This number is used because the largest possible deviation is\n // is 50% of segment duration.\n if (scaledTime >= (requiredMediaTime - (frag.d / fTimescale) * 1.5)) {\n segments.push(createSegment(frag, availabilityIdx));\n }\n } else if (availabilityIdx >= startIdx) {\n segments.push(createSegment(frag, availabilityIdx));\n }\n\n time += frag.d;\n scaledTime = time / fTimescale;\n }\n }\n\n if (!isAvailableSegmentNumberCalculated) {\n representation.availableSegmentsNumber = availabilityIdx + 1;\n }\n\n return segments;\n }\n\n instance = {\n getSegments: getSegmentsFromTimeline\n };\n\n return instance;\n}\n\nTimelineSegmentsGetter.__dashjs_factory_name = 'TimelineSegmentsGetter';\nconst factory = FactoryMaker.getClassFactory(TimelineSegmentsGetter);\nexport default factory;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\n\nimport {getTimeBasedSegment} from './SegmentsUtils';\n\nfunction TimelineSegmentsGetter(config, isDynamic) {\n\n config = config || {};\n const timelineConverter = config.timelineConverter;\n\n let instance;\n\n function checkConfig() {\n if (!timelineConverter || !timelineConverter.hasOwnProperty('calcMediaTimeFromPresentationTime') || !timelineConverter.hasOwnProperty('calcSegmentAvailabilityRange') ||\n !timelineConverter.hasOwnProperty('calcMediaTimeFromPresentationTime')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n function getSegmentsFromTimeline(representation, requestedTime, index, availabilityUpperLimit) {\n checkConfig();\n\n if (!representation) {\n throw new Error('no representation');\n }\n\n if (requestedTime === undefined) {\n requestedTime = null;\n }\n\n const base = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentTemplate ||\n representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].SegmentList;\n const timeline = base.SegmentTimeline;\n const list = base.SegmentURL_asArray;\n const isAvailableSegmentNumberCalculated = representation.availableSegmentsNumber > 0;\n\n let maxSegmentsAhead;\n\n if (availabilityUpperLimit) {\n maxSegmentsAhead = availabilityUpperLimit;\n } else {\n maxSegmentsAhead = (index > -1 || requestedTime !== null) ? 10 : Infinity;\n }\n\n let time = 0;\n let scaledTime = 0;\n let availabilityIdx = -1;\n const segments = [];\n let requiredMediaTime = null;\n\n let fragments,\n frag,\n i,\n len,\n j,\n repeat,\n repeatEndTime,\n nextFrag,\n hasEnoughSegments,\n startIdx,\n fTimescale;\n\n let createSegment = function (s, i) {\n let media = base.media;\n let mediaRange = s.mediaRange;\n\n if (list) {\n media = list[i].media || '';\n mediaRange = list[i].mediaRange;\n }\n\n return getTimeBasedSegment(\n timelineConverter,\n isDynamic,\n representation,\n time,\n s.d,\n fTimescale,\n media,\n mediaRange,\n availabilityIdx,\n s.tManifest);\n };\n\n fTimescale = representation.timescale;\n\n fragments = timeline.S_asArray;\n\n startIdx = index;\n\n if (requestedTime !== null) {\n requiredMediaTime = timelineConverter.calcMediaTimeFromPresentationTime(requestedTime, representation);\n }\n\n for (i = 0, len = fragments.length; i < len; i++) {\n frag = fragments[i];\n repeat = 0;\n if (frag.hasOwnProperty('r')) {\n repeat = frag.r;\n }\n\n //For a repeated S element, t belongs only to the first segment\n if (frag.hasOwnProperty('t')) {\n time = frag.t;\n scaledTime = time / fTimescale;\n }\n\n //This is a special case: \"A negative value of the @r attribute of the S element indicates that the duration indicated in @d attribute repeats until the start of the next S element, the end of the Period or until the\n // next MPD update.\"\n if (repeat < 0) {\n nextFrag = fragments[i + 1];\n\n if (nextFrag && nextFrag.hasOwnProperty('t')) {\n repeatEndTime = nextFrag.t / fTimescale;\n } else {\n const availabilityEnd = representation.segmentAvailabilityRange ? representation.segmentAvailabilityRange.end : (timelineConverter.calcSegmentAvailabilityRange(representation, isDynamic).end);\n repeatEndTime = timelineConverter.calcMediaTimeFromPresentationTime(availabilityEnd, representation);\n representation.segmentDuration = frag.d / fTimescale;\n }\n\n repeat = Math.ceil((repeatEndTime - scaledTime) / (frag.d / fTimescale)) - 1;\n }\n\n // if we have enough segments in the list, but we have not calculated the total number of the segments yet we\n // should continue the loop and calc the number. Once it is calculated, we can break the loop.\n if (hasEnoughSegments) {\n if (isAvailableSegmentNumberCalculated) break;\n availabilityIdx += repeat + 1;\n continue;\n }\n\n for (j = 0; j <= repeat; j++) {\n availabilityIdx++;\n\n if (segments.length > maxSegmentsAhead) {\n hasEnoughSegments = true;\n if (isAvailableSegmentNumberCalculated) break;\n continue;\n }\n\n if (requiredMediaTime !== null) {\n // In some cases when requiredMediaTime = actual end time of the last segment\n // it is possible that this time a bit exceeds the declared end time of the last segment.\n // in this case we still need to include the last segment in the segment list. to do this we\n // use a correction factor = 1.5. This number is used because the largest possible deviation is\n // is 50% of segment duration.\n if (scaledTime >= (requiredMediaTime - (frag.d / fTimescale) * 1.5)) {\n segments.push(createSegment(frag, availabilityIdx));\n }\n } else if (availabilityIdx >= startIdx) {\n segments.push(createSegment(frag, availabilityIdx));\n }\n\n time += frag.d;\n scaledTime = time / fTimescale;\n }\n }\n\n if (!isAvailableSegmentNumberCalculated) {\n representation.availableSegmentsNumber = availabilityIdx + 1;\n }\n\n return segments;\n }\n\n instance = {\n getSegments: getSegmentsFromTimeline\n };\n\n return instance;\n}\n\nTimelineSegmentsGetter.__dashjs_factory_name = 'TimelineSegmentsGetter';\nconst factory = FactoryMaker.getClassFactory(TimelineSegmentsGetter);\nexport default factory;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass AdaptationSet {\n constructor() {\n this.period = null;\n this.index = -1;\n this.type = null;\n }\n}\n\nexport default AdaptationSet;", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\n\nconst DEFAULT_DVB_PRIORITY = 1;\nconst DEFAULT_DVB_WEIGHT = 1;\n\nclass BaseURL {\n constructor(url, serviceLocation, priority, weight) {\n this.url = url || '';\n this.serviceLocation = serviceLocation || url || '';\n\n // DVB extensions\n this.dvb_priority = priority || DEFAULT_DVB_PRIORITY;\n this.dvb_weight = weight || DEFAULT_DVB_WEIGHT;\n\n /* currently unused:\n * byteRange,\n * availabilityTimeOffset,\n * availabilityTimeComplete\n */\n }\n}\n\nBaseURL.DEFAULT_DVB_PRIORITY = DEFAULT_DVB_PRIORITY;\nBaseURL.DEFAULT_DVB_WEIGHT = DEFAULT_DVB_WEIGHT;\n\nexport default BaseURL;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass Event {\n constructor() {\n this.duration = NaN;\n this.presentationTime = NaN;\n this.id = NaN;\n this.messageData = '';\n this.eventStream = null;\n this.presentationTimeDelta = NaN; // Specific EMSG Box parameter\n }\n}\n\nexport default Event;", @@ -328,49 +330,50 @@ "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\n\nimport DashConstants from '../constants/DashConstants';\n\nclass Representation {\n constructor() {\n this.id = null;\n this.index = -1;\n this.adaptation = null;\n this.segmentInfoType = null;\n this.initialization = null;\n this.codecs = null;\n this.codecPrivateData = null;\n this.segmentDuration = NaN;\n this.timescale = 1;\n this.startNumber = 1;\n this.indexRange = null;\n this.range = null;\n this.presentationTimeOffset = 0;\n // Set the source buffer timeOffset to this\n this.MSETimeOffset = NaN;\n this.segmentAvailabilityRange = null;\n this.availableSegmentsNumber = 0;\n this.bandwidth = NaN;\n this.width = NaN;\n this.height = NaN;\n this.scanType = null;\n this.maxPlayoutRate = NaN;\n }\n\n static hasInitialization(r) {\n return (r.initialization !== null) ||\n ((r.segmentInfoType !== DashConstants.BASE_URL || r.segmentInfoType !== DashConstants.SEGMENT_BASE ) && (r.range !== null));\n }\n\n static hasSegments(r) {\n return r.segmentInfoType !== DashConstants.BASE_URL &&\n r.segmentInfoType !== DashConstants.SEGMENT_BASE &&\n !r.indexRange;\n }\n}\n\nexport default Representation;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass Segment {\n constructor() {\n this.indexRange = null;\n this.index = null;\n this.mediaRange = null;\n this.media = null;\n this.duration = NaN;\n // this is the time that should be inserted into the media url\n this.replacementTime = null;\n // this is the number that should be inserted into the media url\n this.replacementNumber = NaN;\n // This is supposed to match the time encoded in the media Segment\n this.mediaStartTime = NaN;\n // When the source buffer timeOffset is set to MSETimeOffset this is the\n // time that will match the seekTarget and video.currentTime\n this.presentationStartTime = NaN;\n // Do not schedule this segment until\n this.availabilityStartTime = NaN;\n // Ignore and discard this segment after\n this.availabilityEndTime = NaN;\n // The index of the segment inside the availability window\n this.availabilityIdx = NaN;\n // For dynamic mpd's, this is the wall clock time that the video\n // element currentTime should be presentationStartTime\n this.wallStartTime = NaN;\n this.representation = null;\n }\n}\n\nexport default Segment;", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass UTCTiming {\n constructor() {\n // UTCTiming is a DescriptorType and doesn't have any additional fields\n this.schemeIdUri = '';\n this.value = '';\n }\n}\n\nexport default UTCTiming;", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport XHRLoader from './XHRLoader';\nimport HeadRequest from './vo/HeadRequest';\nimport DashJSError from './vo/DashJSError';\nimport EventBus from './../core/EventBus';\nimport Events from './../core/events/Events';\nimport FactoryMaker from '../core/FactoryMaker';\n\nconst FRAGMENT_LOADER_ERROR_LOADING_FAILURE = 1;\nconst FRAGMENT_LOADER_ERROR_NULL_REQUEST = 2;\nconst FRAGMENT_LOADER_MESSAGE_NULL_REQUEST = 'request is null';\n\nfunction FragmentLoader(config) {\n\n const context = this.context;\n const eventBus = EventBus(context).getInstance();\n\n let instance,\n xhrLoader;\n\n function setup() {\n xhrLoader = XHRLoader(context).create({\n errHandler: config.errHandler,\n metricsModel: config.metricsModel,\n mediaPlayerModel: config.mediaPlayerModel,\n requestModifier: config.requestModifier\n });\n }\n\n function checkForExistence(request) {\n const report = function (success) {\n eventBus.trigger(\n Events.CHECK_FOR_EXISTENCE_COMPLETED, {\n request: request,\n exists: success\n }\n );\n };\n\n if (request) {\n let headRequest = new HeadRequest(request.url);\n\n xhrLoader.load({\n request: headRequest,\n success: function () {\n report(true);\n },\n error: function () {\n report(false);\n }\n });\n } else {\n report(false);\n }\n }\n\n function load(request) {\n const report = function (data, error) {\n eventBus.trigger(Events.LOADING_COMPLETED, {\n request: request,\n response: data || null,\n error: error || null,\n sender: instance\n });\n };\n\n if (request) {\n xhrLoader.load({\n request: request,\n progress: function () {\n eventBus.trigger(Events.LOADING_PROGRESS, {\n request: request\n });\n },\n success: function (data) {\n report(data);\n },\n error: function (xhr, statusText, errorText) {\n report(\n undefined,\n new DashJSError(\n FRAGMENT_LOADER_ERROR_LOADING_FAILURE,\n errorText,\n statusText\n )\n );\n },\n abort: function (request, status) {\n if (request && status === 0) {\n eventBus.trigger(Events.LOADING_ABANDONED, {request: request, mediaType: request.mediaType, sender: instance});\n }\n }\n });\n } else {\n report(\n undefined,\n new DashJSError(\n FRAGMENT_LOADER_ERROR_NULL_REQUEST,\n FRAGMENT_LOADER_MESSAGE_NULL_REQUEST\n )\n );\n }\n }\n\n function abort() {\n if (xhrLoader) {\n xhrLoader.abort();\n }\n }\n\n function reset() {\n if (xhrLoader) {\n xhrLoader.abort();\n xhrLoader = null;\n }\n }\n\n instance = {\n checkForExistence: checkForExistence,\n load: load,\n abort: abort,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nFragmentLoader.__dashjs_factory_name = 'FragmentLoader';\n\nconst factory = FactoryMaker.getClassFactory(FragmentLoader);\nfactory.FRAGMENT_LOADER_ERROR_LOADING_FAILURE = FRAGMENT_LOADER_ERROR_LOADING_FAILURE;\nfactory.FRAGMENT_LOADER_ERROR_NULL_REQUEST = FRAGMENT_LOADER_ERROR_NULL_REQUEST;\nFactoryMaker.updateClassFactory(FragmentLoader.__dashjs_factory_name, factory);\nexport default factory;\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from './constants/Constants';\nimport XlinkController from './controllers/XlinkController';\nimport XHRLoader from './XHRLoader';\nimport URLUtils from './utils/URLUtils';\nimport TextRequest from './vo/TextRequest';\nimport DashJSError from './vo/DashJSError';\nimport {HTTPRequest} from './vo/metrics/HTTPRequest';\nimport EventBus from '../core/EventBus';\nimport Events from '../core/events/Events';\nimport FactoryMaker from '../core/FactoryMaker';\nimport DashParser from '../dash/parser/DashParser';\nimport Debug from '../core/Debug';\n\nconst MANIFEST_LOADER_ERROR_PARSING_FAILURE = 1;\nconst MANIFEST_LOADER_ERROR_LOADING_FAILURE = 2;\nconst MANIFEST_LOADER_MESSAGE_PARSING_FAILURE = 'parsing failed';\n\nfunction ManifestLoader(config) {\n\n const context = this.context;\n const eventBus = EventBus(context).getInstance();\n const urlUtils = URLUtils(context).getInstance();\n const debug = Debug(context).getInstance();\n const log = debug.log;\n\n let instance,\n xhrLoader,\n xlinkController,\n parser;\n let mssHandler = config.mssHandler;\n let errHandler = config.errHandler;\n\n function setup() {\n eventBus.on(Events.XLINK_READY, onXlinkReady, instance);\n\n xhrLoader = XHRLoader(context).create({\n errHandler: errHandler,\n metricsModel: config.metricsModel,\n mediaPlayerModel: config.mediaPlayerModel,\n requestModifier: config.requestModifier\n });\n\n xlinkController = XlinkController(context).create({\n errHandler: errHandler,\n metricsModel: config.metricsModel,\n mediaPlayerModel: config.mediaPlayerModel,\n requestModifier: config.requestModifier\n });\n\n parser = null;\n }\n\n function onXlinkReady(event) {\n eventBus.trigger(\n Events.INTERNAL_MANIFEST_LOADED, {\n manifest: event.manifest\n }\n );\n }\n\n function createParser(data) {\n let parser = null;\n // Analyze manifest content to detect protocol and select appropriate parser\n if (data.indexOf('SmoothStreamingMedia') > -1) {\n //do some business to transform it into a Dash Manifest\n if (mssHandler) {\n parser = mssHandler.createMssParser();\n mssHandler.registerEvents();\n }else {\n errHandler.manifestError('manifest type unsupported', 'createParser');\n }\n return parser;\n } else if (data.indexOf('MPD') > -1) {\n return DashParser(context).create({\n errorHandler: errHandler\n });\n } else {\n return parser;\n }\n }\n\n function load(url) {\n const request = new TextRequest(url, HTTPRequest.MPD_TYPE);\n\n xhrLoader.load({\n request: request,\n success: function (data, textStatus, xhr) {\n let actualUrl,\n baseUri;\n\n // Handle redirects for the MPD - as per RFC3986 Section 5.1.3\n // also handily resolves relative MPD URLs to absolute\n if (xhr.responseURL && xhr.responseURL !== url) {\n baseUri = urlUtils.parseBaseUrl(xhr.responseURL);\n actualUrl = xhr.responseURL;\n } else {\n // usually this case will be caught and resolved by\n // xhr.responseURL above but it is not available for IE11 and Edge/12 and Edge/13\n // baseUri must be absolute for BaseURL resolution later\n if (urlUtils.isRelative(url)) {\n url = urlUtils.resolve(url, window.location.href);\n }\n\n baseUri = urlUtils.parseBaseUrl(url);\n }\n\n // Create parser according to manifest type\n if (parser === null) {\n parser = createParser(data);\n }\n\n if (parser === null) {\n eventBus.trigger(\n Events.INTERNAL_MANIFEST_LOADED, {\n manifest: null,\n error: new DashJSError(\n MANIFEST_LOADER_ERROR_PARSING_FAILURE,\n `Failed detecting manifest type: ${url}`\n )\n }\n );\n return;\n }\n\n // init xlinkcontroller with matchers and iron object from created parser\n xlinkController.setMatchers(parser.getMatchers());\n xlinkController.setIron(parser.getIron());\n\n const manifest = parser.parse(data);\n\n if (manifest) {\n manifest.url = actualUrl || url;\n\n // URL from which the MPD was originally retrieved (MPD updates will not change this value)\n if (!manifest.originalUrl) {\n manifest.originalUrl = manifest.url;\n }\n\n // In the following, we only use the first Location entry even if many are available\n // Compare with ManifestUpdater/DashManifestModel\n if (manifest.hasOwnProperty(Constants.LOCATION)) {\n baseUri = urlUtils.parseBaseUrl(manifest.Location_asArray[0]);\n log('BaseURI set by Location to: ' + baseUri);\n }\n\n manifest.baseUri = baseUri;\n manifest.loadedTime = new Date();\n xlinkController.resolveManifestOnLoad(manifest);\n } else {\n eventBus.trigger(\n Events.INTERNAL_MANIFEST_LOADED, {\n manifest: null,\n error: new DashJSError(\n MANIFEST_LOADER_ERROR_PARSING_FAILURE,\n MANIFEST_LOADER_MESSAGE_PARSING_FAILURE\n )\n }\n );\n }\n },\n error: function (xhr, statusText, errorText) {\n eventBus.trigger(\n Events.INTERNAL_MANIFEST_LOADED, {\n manifest: null,\n error: new DashJSError(\n MANIFEST_LOADER_ERROR_LOADING_FAILURE,\n `Failed loading manifest: ${url}, ${errorText}`\n )\n }\n );\n }\n });\n }\n\n function reset() {\n eventBus.off(Events.XLINK_READY, onXlinkReady, instance);\n\n if (xlinkController) {\n xlinkController.reset();\n xlinkController = null;\n }\n\n if (xhrLoader) {\n xhrLoader.abort();\n xhrLoader = null;\n }\n\n if (mssHandler) {\n mssHandler.reset();\n }\n }\n\n instance = {\n load: load,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nManifestLoader.__dashjs_factory_name = 'ManifestLoader';\n\nconst factory = FactoryMaker.getClassFactory(ManifestLoader);\nfactory.MANIFEST_LOADER_ERROR_PARSING_FAILURE = MANIFEST_LOADER_ERROR_PARSING_FAILURE;\nfactory.MANIFEST_LOADER_ERROR_LOADING_FAILURE = MANIFEST_LOADER_ERROR_LOADING_FAILURE;\nFactoryMaker.updateClassFactory(ManifestLoader.__dashjs_factory_name, factory);\nexport default factory;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport XHRLoader from './XHRLoader';\nimport HeadRequest from './vo/HeadRequest';\nimport DashJSError from './vo/DashJSError';\nimport EventBus from './../core/EventBus';\nimport Events from './../core/events/Events';\nimport FactoryMaker from '../core/FactoryMaker';\n\nconst FRAGMENT_LOADER_ERROR_LOADING_FAILURE = 1;\nconst FRAGMENT_LOADER_ERROR_NULL_REQUEST = 2;\nconst FRAGMENT_LOADER_MESSAGE_NULL_REQUEST = 'request is null';\n\nfunction FragmentLoader(config) {\n\n config = config || {};\n const context = this.context;\n const eventBus = EventBus(context).getInstance();\n\n let instance,\n xhrLoader;\n\n function setup() {\n xhrLoader = XHRLoader(context).create({\n errHandler: config.errHandler,\n metricsModel: config.metricsModel,\n mediaPlayerModel: config.mediaPlayerModel,\n requestModifier: config.requestModifier\n });\n }\n\n function checkForExistence(request) {\n const report = function (success) {\n eventBus.trigger(\n Events.CHECK_FOR_EXISTENCE_COMPLETED, {\n request: request,\n exists: success\n }\n );\n };\n\n if (request) {\n let headRequest = new HeadRequest(request.url);\n\n xhrLoader.load({\n request: headRequest,\n success: function () {\n report(true);\n },\n error: function () {\n report(false);\n }\n });\n } else {\n report(false);\n }\n }\n\n function load(request) {\n const report = function (data, error) {\n eventBus.trigger(Events.LOADING_COMPLETED, {\n request: request,\n response: data || null,\n error: error || null,\n sender: instance\n });\n };\n\n if (request) {\n xhrLoader.load({\n request: request,\n progress: function () {\n eventBus.trigger(Events.LOADING_PROGRESS, {\n request: request\n });\n },\n success: function (data) {\n report(data);\n },\n error: function (xhr, statusText, errorText) {\n report(\n undefined,\n new DashJSError(\n FRAGMENT_LOADER_ERROR_LOADING_FAILURE,\n errorText,\n statusText\n )\n );\n },\n abort: function (request, status) {\n if (request && status === 0) {\n eventBus.trigger(Events.LOADING_ABANDONED, {request: request, mediaType: request.mediaType, sender: instance});\n }\n }\n });\n } else {\n report(\n undefined,\n new DashJSError(\n FRAGMENT_LOADER_ERROR_NULL_REQUEST,\n FRAGMENT_LOADER_MESSAGE_NULL_REQUEST\n )\n );\n }\n }\n\n function abort() {\n if (xhrLoader) {\n xhrLoader.abort();\n }\n }\n\n function reset() {\n if (xhrLoader) {\n xhrLoader.abort();\n xhrLoader = null;\n }\n }\n\n instance = {\n checkForExistence: checkForExistence,\n load: load,\n abort: abort,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nFragmentLoader.__dashjs_factory_name = 'FragmentLoader';\n\nconst factory = FactoryMaker.getClassFactory(FragmentLoader);\nfactory.FRAGMENT_LOADER_ERROR_LOADING_FAILURE = FRAGMENT_LOADER_ERROR_LOADING_FAILURE;\nfactory.FRAGMENT_LOADER_ERROR_NULL_REQUEST = FRAGMENT_LOADER_ERROR_NULL_REQUEST;\nFactoryMaker.updateClassFactory(FragmentLoader.__dashjs_factory_name, factory);\nexport default factory;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from './constants/Constants';\nimport XlinkController from './controllers/XlinkController';\nimport XHRLoader from './XHRLoader';\nimport URLUtils from './utils/URLUtils';\nimport TextRequest from './vo/TextRequest';\nimport DashJSError from './vo/DashJSError';\nimport {HTTPRequest} from './vo/metrics/HTTPRequest';\nimport EventBus from '../core/EventBus';\nimport Events from '../core/events/Events';\nimport FactoryMaker from '../core/FactoryMaker';\nimport DashParser from '../dash/parser/DashParser';\nimport Debug from '../core/Debug';\n\nconst MANIFEST_LOADER_ERROR_PARSING_FAILURE = 1;\nconst MANIFEST_LOADER_ERROR_LOADING_FAILURE = 2;\nconst MANIFEST_LOADER_MESSAGE_PARSING_FAILURE = 'parsing failed';\n\nfunction ManifestLoader(config) {\n\n config = config || {};\n const context = this.context;\n const eventBus = EventBus(context).getInstance();\n const urlUtils = URLUtils(context).getInstance();\n const debug = Debug(context).getInstance();\n const log = debug.log;\n\n let instance,\n xhrLoader,\n xlinkController,\n parser;\n let mssHandler = config.mssHandler;\n let errHandler = config.errHandler;\n\n function setup() {\n eventBus.on(Events.XLINK_READY, onXlinkReady, instance);\n\n xhrLoader = XHRLoader(context).create({\n errHandler: errHandler,\n metricsModel: config.metricsModel,\n mediaPlayerModel: config.mediaPlayerModel,\n requestModifier: config.requestModifier\n });\n\n xlinkController = XlinkController(context).create({\n errHandler: errHandler,\n metricsModel: config.metricsModel,\n mediaPlayerModel: config.mediaPlayerModel,\n requestModifier: config.requestModifier\n });\n\n parser = null;\n }\n\n function onXlinkReady(event) {\n eventBus.trigger(\n Events.INTERNAL_MANIFEST_LOADED, {\n manifest: event.manifest\n }\n );\n }\n\n function createParser(data) {\n let parser = null;\n // Analyze manifest content to detect protocol and select appropriate parser\n if (data.indexOf('SmoothStreamingMedia') > -1) {\n //do some business to transform it into a Dash Manifest\n if (mssHandler) {\n parser = mssHandler.createMssParser();\n mssHandler.registerEvents();\n }else {\n errHandler.manifestError('manifest type unsupported', 'createParser');\n }\n return parser;\n } else if (data.indexOf('MPD') > -1) {\n return DashParser(context).create({\n errorHandler: errHandler\n });\n } else {\n return parser;\n }\n }\n\n function load(url) {\n const request = new TextRequest(url, HTTPRequest.MPD_TYPE);\n\n xhrLoader.load({\n request: request,\n success: function (data, textStatus, xhr) {\n let actualUrl,\n baseUri;\n\n // Handle redirects for the MPD - as per RFC3986 Section 5.1.3\n // also handily resolves relative MPD URLs to absolute\n if (xhr.responseURL && xhr.responseURL !== url) {\n baseUri = urlUtils.parseBaseUrl(xhr.responseURL);\n actualUrl = xhr.responseURL;\n } else {\n // usually this case will be caught and resolved by\n // xhr.responseURL above but it is not available for IE11 and Edge/12 and Edge/13\n // baseUri must be absolute for BaseURL resolution later\n if (urlUtils.isRelative(url)) {\n url = urlUtils.resolve(url, window.location.href);\n }\n\n baseUri = urlUtils.parseBaseUrl(url);\n }\n\n // Create parser according to manifest type\n if (parser === null) {\n parser = createParser(data);\n }\n\n if (parser === null) {\n eventBus.trigger(\n Events.INTERNAL_MANIFEST_LOADED, {\n manifest: null,\n error: new DashJSError(\n MANIFEST_LOADER_ERROR_PARSING_FAILURE,\n `Failed detecting manifest type: ${url}`\n )\n }\n );\n return;\n }\n\n // init xlinkcontroller with matchers and iron object from created parser\n xlinkController.setMatchers(parser.getMatchers());\n xlinkController.setIron(parser.getIron());\n\n const manifest = parser.parse(data);\n\n if (manifest) {\n manifest.url = actualUrl || url;\n\n // URL from which the MPD was originally retrieved (MPD updates will not change this value)\n if (!manifest.originalUrl) {\n manifest.originalUrl = manifest.url;\n }\n\n // In the following, we only use the first Location entry even if many are available\n // Compare with ManifestUpdater/DashManifestModel\n if (manifest.hasOwnProperty(Constants.LOCATION)) {\n baseUri = urlUtils.parseBaseUrl(manifest.Location_asArray[0]);\n log('BaseURI set by Location to: ' + baseUri);\n }\n\n manifest.baseUri = baseUri;\n manifest.loadedTime = new Date();\n xlinkController.resolveManifestOnLoad(manifest);\n } else {\n eventBus.trigger(\n Events.INTERNAL_MANIFEST_LOADED, {\n manifest: null,\n error: new DashJSError(\n MANIFEST_LOADER_ERROR_PARSING_FAILURE,\n MANIFEST_LOADER_MESSAGE_PARSING_FAILURE\n )\n }\n );\n }\n },\n error: function (xhr, statusText, errorText) {\n eventBus.trigger(\n Events.INTERNAL_MANIFEST_LOADED, {\n manifest: null,\n error: new DashJSError(\n MANIFEST_LOADER_ERROR_LOADING_FAILURE,\n `Failed loading manifest: ${url}, ${errorText}`\n )\n }\n );\n }\n });\n }\n\n function reset() {\n eventBus.off(Events.XLINK_READY, onXlinkReady, instance);\n\n if (xlinkController) {\n xlinkController.reset();\n xlinkController = null;\n }\n\n if (xhrLoader) {\n xhrLoader.abort();\n xhrLoader = null;\n }\n\n if (mssHandler) {\n mssHandler.reset();\n }\n }\n\n instance = {\n load: load,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nManifestLoader.__dashjs_factory_name = 'ManifestLoader';\n\nconst factory = FactoryMaker.getClassFactory(ManifestLoader);\nfactory.MANIFEST_LOADER_ERROR_PARSING_FAILURE = MANIFEST_LOADER_ERROR_PARSING_FAILURE;\nfactory.MANIFEST_LOADER_ERROR_LOADING_FAILURE = MANIFEST_LOADER_ERROR_LOADING_FAILURE;\nFactoryMaker.updateClassFactory(ManifestLoader.__dashjs_factory_name, factory);\nexport default factory;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventBus from '../core/EventBus';\nimport Events from '../core/events/Events';\nimport FactoryMaker from '../core/FactoryMaker';\nimport Debug from '../core/Debug';\n\nfunction ManifestUpdater() {\n\n const context = this.context;\n const log = Debug(context).getInstance().log;\n const eventBus = EventBus(context).getInstance();\n\n let instance,\n refreshDelay,\n refreshTimer,\n isPaused,\n isUpdating,\n manifestLoader,\n manifestModel,\n dashManifestModel,\n mediaPlayerModel;\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n if (config.mediaPlayerModel) {\n mediaPlayerModel = config.mediaPlayerModel;\n }\n if (config.manifestLoader) {\n manifestLoader = config.manifestLoader;\n }\n }\n\n function initialize() {\n resetInitialSettings();\n\n eventBus.on(Events.STREAMS_COMPOSED, onStreamsComposed, this);\n eventBus.on(Events.PLAYBACK_STARTED, onPlaybackStarted, this);\n eventBus.on(Events.PLAYBACK_PAUSED, onPlaybackPaused, this);\n eventBus.on(Events.INTERNAL_MANIFEST_LOADED, onManifestLoaded, this);\n }\n\n function setManifest(manifest) {\n update(manifest);\n }\n\n function resetInitialSettings() {\n refreshDelay = NaN;\n isUpdating = false;\n isPaused = true;\n stopManifestRefreshTimer();\n }\n\n function reset() {\n\n eventBus.off(Events.PLAYBACK_STARTED, onPlaybackStarted, this);\n eventBus.off(Events.PLAYBACK_PAUSED, onPlaybackPaused, this);\n eventBus.off(Events.STREAMS_COMPOSED, onStreamsComposed, this);\n eventBus.off(Events.INTERNAL_MANIFEST_LOADED, onManifestLoaded, this);\n\n resetInitialSettings();\n }\n\n function stopManifestRefreshTimer() {\n if (refreshTimer !== null) {\n clearInterval(refreshTimer);\n refreshTimer = null;\n }\n }\n\n function startManifestRefreshTimer() {\n stopManifestRefreshTimer();\n if (!isNaN(refreshDelay)) {\n log('Refresh manifest in ' + refreshDelay + ' seconds.');\n refreshTimer = setTimeout(onRefreshTimer, refreshDelay * 1000);\n }\n }\n\n function refreshManifest() {\n isUpdating = true;\n const manifest = manifestModel.getValue();\n let url = manifest.url;\n const location = dashManifestModel.getLocation(manifest);\n if (location) {\n url = location;\n }\n manifestLoader.load(url);\n }\n\n function update(manifest) {\n\n manifestModel.setValue(manifest);\n\n const date = new Date();\n const latencyOfLastUpdate = (date.getTime() - manifest.loadedTime.getTime()) / 1000;\n refreshDelay = dashManifestModel.getManifestUpdatePeriod(manifest, latencyOfLastUpdate);\n\n eventBus.trigger(Events.MANIFEST_UPDATED, {manifest: manifest});\n log('Manifest has been refreshed at ' + date + '[' + date.getTime() / 1000 + '] ');\n\n if (!isPaused) {\n startManifestRefreshTimer();\n }\n }\n\n function onRefreshTimer() {\n if (isPaused && !mediaPlayerModel.getScheduleWhilePaused() || isUpdating) return;\n refreshManifest();\n }\n\n function onManifestLoaded(e) {\n if (!e.error) {\n update(e.manifest);\n }\n }\n\n function onPlaybackStarted (/*e*/) {\n isPaused = false;\n startManifestRefreshTimer();\n }\n\n function onPlaybackPaused(/*e*/) {\n isPaused = true;\n stopManifestRefreshTimer();\n }\n\n function onStreamsComposed(/*e*/) {\n // When streams are ready we can consider manifest update completed. Resolve the update promise.\n isUpdating = false;\n }\n\n instance = {\n initialize: initialize,\n setManifest: setManifest,\n refreshManifest: refreshManifest,\n setConfig: setConfig,\n reset: reset\n };\n\n return instance;\n}\nManifestUpdater.__dashjs_factory_name = 'ManifestUpdater';\nexport default FactoryMaker.getClassFactory(ManifestUpdater);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from './constants/Constants';\nimport MetricsConstants from './constants/MetricsConstants';\nimport UTCTiming from '../dash/vo/UTCTiming';\nimport PlaybackController from './controllers/PlaybackController';\nimport StreamController from './controllers/StreamController';\nimport MediaController from './controllers/MediaController';\nimport ManifestLoader from './ManifestLoader';\nimport ErrorHandler from './utils/ErrorHandler';\nimport Capabilities from './utils/Capabilities';\nimport TextTracks from './text/TextTracks';\nimport RequestModifier from './utils/RequestModifier';\nimport TextController from './text/TextController';\nimport URIQueryAndFragmentModel from './models/URIQueryAndFragmentModel';\nimport ManifestModel from './models/ManifestModel';\nimport MediaPlayerModel from './models/MediaPlayerModel';\nimport MetricsModel from './models/MetricsModel';\nimport AbrController from './controllers/AbrController';\nimport SourceBufferController from './controllers/SourceBufferController';\nimport VideoModel from './models/VideoModel';\nimport DOMStorage from './utils/DOMStorage';\nimport Debug from './../core/Debug';\nimport EventBus from './../core/EventBus';\nimport Events from './../core/events/Events';\nimport MediaPlayerEvents from './MediaPlayerEvents';\nimport FactoryMaker from '../core/FactoryMaker';\nimport {\n getVersionString\n}\nfrom './../core/Version';\n\n//Dash\nimport DashAdapter from '../dash/DashAdapter';\nimport DashManifestModel from '../dash/models/DashManifestModel';\nimport DashMetrics from '../dash/DashMetrics';\nimport TimelineConverter from '../dash/utils/TimelineConverter';\nimport {\n HTTPRequest\n} from './vo/metrics/HTTPRequest';\nimport BASE64 from '../../externals/base64';\nimport ISOBoxer from 'codem-isoboxer';\n\n/**\n * @module MediaPlayer\n * @description The MediaPlayer is the primary dash.js Module and a Facade to build your player around.\n * It will allow you access to all the important dash.js properties/methods via the public API and all the\n * events to build a robust DASH media player.\n */\nfunction MediaPlayer() {\n\n const PLAYBACK_NOT_INITIALIZED_ERROR = 'You must first call initialize() to init playback before calling this method';\n const ELEMENT_NOT_ATTACHED_ERROR = 'You must first call attachView() to set the video element before calling this method';\n const SOURCE_NOT_ATTACHED_ERROR = 'You must first call attachSource() with a valid source before calling this method';\n const MEDIA_PLAYER_NOT_INITIALIZED_ERROR = 'MediaPlayer not initialized!';\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n let debug = Debug(context).getInstance();\n let log = debug.log;\n\n let instance,\n source,\n protectionData,\n mediaPlayerInitialized,\n playbackInitialized,\n autoPlay,\n abrController,\n timelineConverter,\n mediaController,\n protectionController,\n metricsReportingController,\n mssHandler,\n adapter,\n metricsModel,\n mediaPlayerModel,\n errHandler,\n capabilities,\n streamController,\n playbackController,\n dashMetrics,\n dashManifestModel,\n manifestModel,\n videoModel,\n textController,\n domStorage;\n\n /*\n ---------------------------------------------------------------------------\n\n INIT FUNCTIONS\n\n ---------------------------------------------------------------------------\n */\n function setup() {\n mediaPlayerInitialized = false;\n playbackInitialized = false;\n autoPlay = true;\n protectionController = null;\n protectionData = null;\n adapter = null;\n Events.extend(MediaPlayerEvents);\n mediaPlayerModel = MediaPlayerModel(context).getInstance();\n }\n\n /**\n * Configure media player with customs controllers. Helpful for tests\n *\n * @param {object=} config controllers configuration\n * @memberof module:MediaPlayer\n * @instance\n */\n function setConfig(config) {\n if (!config) {\n return;\n }\n if (config.capabilities) {\n capabilities = config.capabilities;\n }\n if (config.streamController) {\n streamController = config.streamController;\n }\n if (config.playbackController) {\n playbackController = config.playbackController;\n }\n if (config.mediaPlayerModel) {\n mediaPlayerModel = config.mediaPlayerModel;\n }\n if (config.abrController) {\n abrController = config.abrController;\n }\n if (config.mediaController) {\n mediaController = config.mediaController;\n }\n }\n\n /**\n * Upon creating the MediaPlayer you must call initialize before you call anything else.\n * There is one exception to this rule. It is crucial to call {@link module:MediaPlayer#extend extend()}\n * with all your extensions prior to calling initialize.\n *\n * ALL arguments are optional and there are individual methods to set each argument later on.\n * The args in this method are just for convenience and should only be used for a simple player setup.\n *\n * @param {HTML5MediaElement=} view - Optional arg to set the video element. {@link module:MediaPlayer#attachView attachView()}\n * @param {string=} source - Optional arg to set the media source. {@link module:MediaPlayer#attachSource attachSource()}\n * @param {boolean=} AutoPlay - Optional arg to set auto play. {@link module:MediaPlayer#setAutoPlay setAutoPlay()}\n * @see {@link module:MediaPlayer#attachView attachView()}\n * @see {@link module:MediaPlayer#attachSource attachSource()}\n * @see {@link module:MediaPlayer#setAutoPlay setAutoPlay()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function initialize(view, source, AutoPlay) {\n\n if (!capabilities) {\n capabilities = Capabilities(context).getInstance();\n }\n errHandler = ErrorHandler(context).getInstance();\n\n if (!capabilities.supportsMediaSource()) {\n errHandler.capabilityError('mediasource');\n return;\n }\n\n if (mediaPlayerInitialized) return;\n mediaPlayerInitialized = true;\n\n // init some controllers and models\n timelineConverter = TimelineConverter(context).getInstance();\n if (!abrController) {\n abrController = AbrController(context).getInstance();\n }\n\n if (!playbackController) {\n playbackController = PlaybackController(context).getInstance();\n }\n\n if (!mediaController) {\n mediaController = MediaController(context).getInstance();\n }\n\n adapter = DashAdapter(context).getInstance();\n dashManifestModel = DashManifestModel(context).getInstance({\n mediaController: mediaController,\n timelineConverter: timelineConverter,\n adapter: adapter\n });\n manifestModel = ManifestModel(context).getInstance();\n dashMetrics = DashMetrics(context).getInstance({\n manifestModel: manifestModel,\n dashManifestModel: dashManifestModel\n });\n metricsModel = MetricsModel(context).getInstance();\n\n textController = TextController(context).getInstance();\n domStorage = DOMStorage(context).getInstance({\n mediaPlayerModel: mediaPlayerModel\n });\n\n adapter.setConfig({\n dashManifestModel: dashManifestModel\n });\n metricsModel.setConfig({\n adapter: adapter\n });\n\n restoreDefaultUTCTimingSources();\n setAutoPlay(AutoPlay !== undefined ? AutoPlay : true);\n\n if (view) {\n attachView(view);\n }\n\n if (source) {\n attachSource(source);\n }\n\n log('[dash.js ' + getVersion() + '] ' + 'MediaPlayer has been initialized');\n }\n\n /**\n * Sets the MPD source and the video element to null. You can also reset the MediaPlayer by\n * calling attachSource with a new source file.\n *\n * Calling this method is all that is necessary to destroy a MediaPlayer instance.\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function reset() {\n attachSource(null);\n attachView(null);\n protectionData = null;\n if (protectionController) {\n protectionController.reset();\n protectionController = null;\n }\n if (metricsReportingController) {\n metricsReportingController.reset();\n metricsReportingController = null;\n }\n }\n\n /**\n * The ready state of the MediaPlayer based on both the video element and MPD source being defined.\n *\n * @returns {boolean} The current ready state of the MediaPlayer\n * @see {@link module:MediaPlayer#attachView attachView()}\n * @see {@link module:MediaPlayer#attachSource attachSource()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function isReady() {\n return (!!videoModel && !!source);\n }\n\n /**\n * Use the on method to listen for public events found in MediaPlayer.events. {@link MediaPlayerEvents}\n *\n * @param {string} type - {@link MediaPlayerEvents}\n * @param {Function} listener - callback method when the event fires.\n * @param {Object} scope - context of the listener so it can be removed properly.\n * @memberof module:MediaPlayer\n * @instance\n */\n function on(type, listener, scope) {\n eventBus.on(type, listener, scope);\n }\n\n /**\n * Use the off method to remove listeners for public events found in MediaPlayer.events. {@link MediaPlayerEvents}\n *\n * @param {string} type - {@link MediaPlayerEvents}\n * @param {Function} listener - callback method when the event fires.\n * @param {Object} scope - context of the listener so it can be removed properly.\n * @memberof module:MediaPlayer\n * @instance\n */\n function off(type, listener, scope) {\n eventBus.off(type, listener, scope);\n }\n\n /**\n * Current version of Dash.js\n * @returns {string} the current dash.js version string.\n * @memberof module:MediaPlayer\n * @instance\n */\n function getVersion() {\n return getVersionString();\n }\n\n /**\n * Use this method to access the dash.js logging class.\n *\n * @returns {Debug}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getDebug() {\n return debug;\n }\n\n\n /*\n ---------------------------------------------------------------------------\n\n PLAYBACK FUNCTIONS\n\n ---------------------------------------------------------------------------\n */\n /**\n * The play method initiates playback of the media defined by the {@link module:MediaPlayer#attachSource attachSource()} method.\n * This method will call play on the native Video Element.\n *\n * @see {@link module:MediaPlayer#attachSource attachSource()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function play() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n if (!autoPlay || (isPaused() && playbackInitialized)) {\n playbackController.play();\n }\n }\n\n\n /**\n * This method will call pause on the native Video Element.\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function pause() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n playbackController.pause();\n }\n\n /**\n * Returns a Boolean that indicates whether the Video Element is paused.\n * @return {boolean}\n * @memberof module:MediaPlayer\n * @instance\n */\n function isPaused() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return playbackController.isPaused();\n }\n\n /**\n * Sets the currentTime property of the attached video element. If it is a live stream with a\n * timeShiftBufferLength, then the DVR window offset will be automatically calculated.\n *\n * @param {number} value - A relative time, in seconds, based on the return value of the {@link module:MediaPlayer#duration duration()} method is expected\n * @see {@link module:MediaPlayer#getDVRSeekOffset getDVRSeekOffset()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function seek(value) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n let s = playbackController.getIsDynamic() ? getDVRSeekOffset(value) : value;\n playbackController.seek(s);\n }\n\n /**\n * Returns a Boolean that indicates whether the media is in the process of seeking to a new position.\n * @return {boolean}\n * @memberof module:MediaPlayer\n * @instance\n */\n function isSeeking() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return playbackController.isSeeking();\n }\n\n /**\n * Returns a Boolean that indicates whether the media is in the process of dynamic.\n * @return {boolean}\n * @memberof module:MediaPlayer\n * @instance\n */\n function isDynamic() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return playbackController.getIsDynamic();\n }\n\n /**\n * Use this method to set the native Video Element's playback rate.\n * @param {number} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setPlaybackRate(value) {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n getVideoElement().playbackRate = value;\n }\n\n /**\n * Returns the current playback rate.\n * @returns {number}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getPlaybackRate() {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n return getVideoElement().playbackRate;\n }\n\n /**\n * Use this method to set the native Video Element's muted state. Takes a Boolean that determines whether audio is muted. true if the audio is muted and false otherwise.\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setMute(value) {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n getVideoElement().muted = value;\n }\n\n /**\n * A Boolean that determines whether audio is muted.\n * @returns {boolean}\n * @memberof module:MediaPlayer\n * @instance\n */\n function isMuted() {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n return getVideoElement().muted;\n }\n\n /**\n * A double indicating the audio volume, from 0.0 (silent) to 1.0 (loudest).\n * @param {number} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setVolume(value) {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n getVideoElement().volume = value;\n }\n\n /**\n * Returns the current audio volume, from 0.0 (silent) to 1.0 (loudest).\n * @returns {number}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getVolume() {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n return getVideoElement().volume;\n }\n\n /**\n * The length of the buffer for a given media type, in seconds. Valid media\n * types are \"video\", \"audio\" and \"fragmentedText\". If no type is passed\n * in, then the minimum of video, audio and fragmentedText buffer length is\n * returned. NaN is returned if an invalid type is requested, the\n * presentation does not contain that type, or if no arguments are passed\n * and the presentation does not include any adaption sets of valid media\n * type.\n *\n * @param {string} type - the media type of the buffer\n * @returns {number} The length of the buffer for the given media type, in\n * seconds, or NaN\n * @memberof module:MediaPlayer\n * @instance\n */\n function getBufferLength(type) {\n const types = [Constants.VIDEO, Constants.AUDIO, Constants.FRAGMENTED_TEXT];\n if (!type) {\n const buffer = types.map(\n t => getTracksFor(t).length > 0 ? getDashMetrics().getCurrentBufferLevel(getMetricsFor(t)) : Number.MAX_VALUE\n ).reduce(\n (p, c) => Math.min(p, c)\n );\n return buffer === Number.MAX_VALUE ? NaN : buffer;\n } else {\n if (types.indexOf(type) !== -1) {\n const buffer = getDashMetrics().getCurrentBufferLevel(getMetricsFor(type));\n return buffer ? buffer : NaN;\n } else {\n log('Warning - getBufferLength requested for invalid type');\n return NaN;\n }\n }\n }\n\n /**\n * The timeShiftBufferLength (DVR Window), in seconds.\n *\n * @returns {number} The window of allowable play time behind the live point of a live stream.\n * @memberof module:MediaPlayer\n * @instance\n */\n function getDVRWindowSize() {\n let metric = getDVRInfoMetric();\n if (!metric) {\n return 0;\n }\n return metric.manifestInfo.DVRWindowSize;\n }\n\n /**\n * This method should only be used with a live stream that has a valid timeShiftBufferLength (DVR Window).\n * NOTE - If you do not need the raw offset value (i.e. media analytics, tracking, etc) consider using the {@link module:MediaPlayer#seek seek()} method\n * which will calculate this value for you and set the video element's currentTime property all in one simple call.\n *\n * @param {number} value - A relative time, in seconds, based on the return value of the {@link module:MediaPlayer#duration duration()} method is expected.\n * @returns {number} A value that is relative the available range within the timeShiftBufferLength (DVR Window).\n * @see {@link module:MediaPlayer#seek seek()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getDVRSeekOffset(value) {\n let metric = getDVRInfoMetric();\n\n if (!metric) {\n return 0;\n }\n\n let val = metric.range.start + value;\n\n if (val > metric.range.end) {\n val = metric.range.end;\n }\n\n return val;\n }\n\n /**\n * Current time of the playhead, in seconds.\n *\n * If called with no arguments then the returned time value is time elapsed since the start point of the first stream, or if it is a live stream, then the time will be based on the return value of the {@link module:MediaPlayer#duration duration()} method.\n * However if a stream ID is supplied then time is relative to the start of that stream, or is null if there is no such stream id in the manifest.\n *\n * @param {string} streamId - The ID of a stream that the returned playhead time must be relative to the start of. If undefined, then playhead time is relative to the first stream.\n * @returns {number} The current playhead time of the media, or null.\n * @memberof module:MediaPlayer\n * @instance\n */\n function time(streamId) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n let t = getVideoElement().currentTime;\n\n if (streamId !== undefined) {\n t = streamController.getTimeRelativeToStreamId(t, streamId);\n\n } else if (playbackController.getIsDynamic()) {\n let metric = getDVRInfoMetric();\n t = (metric === null) ? 0 : duration() - (metric.range.end - metric.time);\n }\n\n return t;\n }\n\n /**\n * Duration of the media's playback, in seconds.\n *\n * @returns {number} The current duration of the media.\n * @memberof module:MediaPlayer\n * @instance\n */\n function duration() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n let d = getVideoElement().duration;\n\n if (playbackController.getIsDynamic()) {\n\n let metric = getDVRInfoMetric();\n let range;\n\n if (!metric) {\n return 0;\n }\n\n range = metric.range.end - metric.range.start;\n d = range < metric.manifestInfo.DVRWindowSize ? range : metric.manifestInfo.DVRWindowSize;\n }\n return d;\n }\n\n /**\n * Use this method to get the current playhead time as an absolute value, the time in seconds since midnight UTC, Jan 1 1970.\n * Note - this property only has meaning for live streams. If called before play() has begun, it will return a value of NaN.\n *\n * @returns {number} The current playhead time as UTC timestamp.\n * @memberof module:MediaPlayer\n * @instance\n */\n function timeAsUTC() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n if (time() < 0) {\n return NaN;\n }\n return getAsUTC(time());\n }\n\n /**\n * Use this method to get the current duration as an absolute value, the time in seconds since midnight UTC, Jan 1 1970.\n * Note - this property only has meaning for live streams.\n *\n * @returns {number} The current duration as UTC timestamp.\n * @memberof module:MediaPlayer\n * @instance\n */\n function durationAsUTC() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return getAsUTC(duration());\n }\n\n /*\n ---------------------------------------------------------------------------\n\n AUTO BITRATE\n\n ---------------------------------------------------------------------------\n */\n /**\n * When switching multi-bitrate content (auto or manual mode) this property specifies the maximum bitrate allowed.\n * If you set this property to a value lower than that currently playing, the switching engine will switch down to\n * satisfy this requirement. If you set it to a value that is lower than the lowest bitrate, it will still play\n * that lowest bitrate.\n *\n * You can set or remove this bitrate cap at anytime before or during playback. To clear this setting you must use the API\n * and set the value param to NaN.\n *\n * This feature is typically used to reserve higher bitrates for playback only when the player is in large or full-screen format.\n *\n * @param {string} type - 'video' or 'audio' are the type options.\n * @param {number} value - Value in kbps representing the maximum bitrate allowed.\n * @memberof module:MediaPlayer\n * @instance\n */\n function setMaxAllowedBitrateFor(type, value) {\n abrController.setMaxAllowedBitrateFor(type, value);\n }\n\n /**\n * When switching multi-bitrate content (auto or manual mode) this property specifies the minimum bitrate allowed.\n * If you set this property to a value higher than that currently playing, the switching engine will switch up to\n * satisfy this requirement. If you set it to a value that is lower than the lowest bitrate, it will still play\n * that lowest bitrate.\n *\n * You can set or remove this bitrate limit at anytime before or during playback. To clear this setting you must use the API\n * and set the value param to NaN.\n *\n * This feature is used to force higher quality playback.\n *\n * @param {string} type - 'video' or 'audio' are the type options.\n * @param {number} value - Value in kbps representing the minimum bitrate allowed.\n * @memberof module:MediaPlayer\n * @instance\n */\n function setMinAllowedBitrateFor(type, value) {\n abrController.setMinAllowedBitrateFor(type, value);\n }\n\n /**\n * @param {string} type - 'video' or 'audio' are the type options.\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#setMaxAllowedBitrateFor setMaxAllowedBitrateFor()}\n * @instance\n */\n function getMaxAllowedBitrateFor(type) {\n return abrController.getMaxAllowedBitrateFor(type);\n }\n\n /**\n * @param {string} type - 'video' or 'audio' are the type options.\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#setMinAllowedBitrateFor setMinAllowedBitrateFor()}\n * @instance\n */\n function getMinAllowedBitrateFor(type) {\n return abrController.getMinAllowedBitrateFor(type);\n }\n\n /**\n * When switching multi-bitrate content (auto or manual mode) this property specifies the maximum representation allowed,\n * as a proportion of the size of the representation set.\n *\n * You can set or remove this cap at anytime before or during playback. To clear this setting you must use the API\n * and set the value param to NaN.\n *\n * If both this and maxAllowedBitrate are defined, maxAllowedBitrate is evaluated first, then maxAllowedRepresentation,\n * i.e. the lowest value from executing these rules is used.\n *\n * This feature is typically used to reserve higher representations for playback only when connected over a fast connection.\n *\n * @param {string} type - 'video' or 'audio' are the type options.\n * @param {number} value - number between 0 and 1, where 1 is allow all representations, and 0 is allow only the lowest.\n * @memberof module:MediaPlayer\n * @instance\n */\n function setMaxAllowedRepresentationRatioFor(type, value) {\n abrController.setMaxAllowedRepresentationRatioFor(type, value);\n }\n\n /**\n * @param {string} type - 'video' or 'audio' are the type options.\n * @returns {number} The current representation ratio cap.\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#setMaxAllowedRepresentationRatioFor setMaxAllowedRepresentationRatioFor()}\n * @instance\n */\n function getMaxAllowedRepresentationRatioFor(type) {\n return abrController.getMaxAllowedRepresentationRatioFor(type);\n }\n\n /**\n * Gets the current download quality for media type. The ABR rules update this value before every new download\n * unless setAutoSwitchQualityFor(type, false) is called.\n *\n * @param {string} type - 'video' or 'audio'\n * @returns {number} the quality index, 0 corresponding to the lowest bitrate\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#setAutoSwitchQualityFor setAutoSwitchQualityFor()}\n * @see {@link module:MediaPlayer#setQualityFor setQualityFor()}\n * @instance\n */\n function getQualityFor(type) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return abrController.getQualityFor(type, streamController.getActiveStreamInfo());\n }\n\n /**\n * Sets the current quality for media type instead of letting the ABR Heuristics automatically selecting it.\n * This value will be overwritten by the ABR rules unless setAutoSwitchQualityFor(type, false) is called.\n *\n * @param {string} type - 'video' or 'audio'\n * @param {number} value - the quality index, 0 corresponding to the lowest bitrate\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#setAutoSwitchQualityFor setAutoSwitchQualityFor()}\n * @see {@link module:MediaPlayer#getQualityFor getQualityFor()}\n * @instance\n */\n function setQualityFor(type, value) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n abrController.setPlaybackQuality(type, streamController.getActiveStreamInfo(), value);\n }\n\n /**\n * Update the video element size variables\n * Should be called on window resize (or any other time player is resized). Fullscreen does trigger a window resize event.\n *\n * Once windowResizeEventCalled = true, abrController.checkPortalSize() will use element size variables rather than querying clientWidth every time.\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function updatePortalSize() {\n abrController.setElementSize();\n abrController.setWindowResizeEventCalled(true);\n }\n\n /**\n * @memberof module:MediaPlayer\n * @instance\n */\n function getLimitBitrateByPortal() {\n return abrController.getLimitBitrateByPortal();\n }\n\n /**\n * Sets whether to limit the representation used based on the size of the playback area\n *\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setLimitBitrateByPortal(value) {\n abrController.setLimitBitrateByPortal(value);\n }\n\n /**\n * @memberof module:MediaPlayer\n * @instance\n */\n function getUsePixelRatioInLimitBitrateByPortal() {\n return abrController.getUsePixelRatioInLimitBitrateByPortal();\n }\n\n /**\n * Sets whether to take into account the device's pixel ratio when defining the portal dimensions.\n * Useful on, for example, retina displays.\n *\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n * @default {boolean} false\n */\n function setUsePixelRatioInLimitBitrateByPortal(value) {\n abrController.setUsePixelRatioInLimitBitrateByPortal(value);\n }\n\n /**\n * Use this method to explicitly set the starting bitrate for audio | video\n *\n * @param {string} type\n * @param {number} value - A value of the initial bitrate, kbps\n * @memberof module:MediaPlayer\n * @instance\n */\n function setInitialBitrateFor(type, value) {\n abrController.setInitialBitrateFor(type, value);\n }\n\n /**\n * @param {string} type\n * @returns {number} A value of the initial bitrate, kbps\n * @memberof module:MediaPlayer\n * @instance\n */\n function getInitialBitrateFor(type) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR; //abrController.getInitialBitrateFor is overloaded with ratioDict logic that needs manifest force it to not be callable pre play.\n }\n return abrController.getInitialBitrateFor(type);\n }\n\n /**\n * @param {string} type\n * @param {number} value - A value of the initial Representation Ratio\n * @memberof module:MediaPlayer\n * @instance\n */\n function setInitialRepresentationRatioFor(type, value) {\n abrController.setInitialRepresentationRatioFor(type, value);\n }\n\n /**\n * @param {string} type\n * @returns {number} A value of the initial Representation Ratio\n * @memberof module:MediaPlayer\n * @instance\n */\n function getInitialRepresentationRatioFor(type) {\n return abrController.getInitialRepresentationRatioFor(type);\n }\n\n /**\n * @param {string} type - 'audio' | 'video'\n * @returns {boolean} Current state of adaptive bitrate switching\n * @memberof module:MediaPlayer\n * @instance\n */\n function getAutoSwitchQualityFor(type) {\n return abrController.getAutoSwitchBitrateFor(type);\n }\n\n /**\n * Set to false to switch off adaptive bitrate switching.\n *\n * @param {string} type - 'audio' | 'video'\n * @param {boolean} value\n * @default true\n * @memberof module:MediaPlayer\n * @instance\n */\n function setAutoSwitchQualityFor(type, value) {\n abrController.setAutoSwitchBitrateFor(type, value);\n }\n\n /**\n * Get the value of useDeadTimeLatency in AbrController. @see setUseDeadTimeLatencyForAbr\n *\n * @returns {boolean}\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function getUseDeadTimeLatencyForAbr() {\n return abrController.getUseDeadTimeLatency();\n }\n\n /**\n * Set the value of useDeadTimeLatency in AbrController. If true, only the download\n * portion will be considered part of the download bitrate and latency will be\n * regarded as static. If false, the reciprocal of the whole transfer time will be used.\n * Defaults to true.\n *\n * @param {boolean=} useDeadTimeLatency - True or false flag.\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function setUseDeadTimeLatencyForAbr(useDeadTimeLatency) {\n abrController.setUseDeadTimeLatency(useDeadTimeLatency);\n }\n\n /*\n ---------------------------------------------------------------------------\n\n MEDIA PLAYER CONFIGURATION\n\n ---------------------------------------------------------------------------\n */\n /**\n *

Set to false to prevent stream from auto-playing when the view is attached.

\n *\n * @param {boolean} value\n * @default true\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#attachView attachView()}\n * @instance\n *\n */\n function setAutoPlay(value) {\n autoPlay = value;\n }\n\n /**\n * @returns {boolean} The current autoPlay state.\n * @memberof module:MediaPlayer\n * @instance\n */\n function getAutoPlay() {\n return autoPlay;\n }\n\n /**\n *

Changing this value will lower or increase live stream latency. The detected segment duration will be multiplied by this value\n * to define a time in seconds to delay a live stream from the live edge.

\n *

Lowering this value will lower latency but may decrease the player's ability to build a stable buffer.

\n *\n * @param {number} value - Represents how many segment durations to delay the live stream.\n * @default 4\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#useSuggestedPresentationDelay useSuggestedPresentationDelay()}\n * @instance\n */\n function setLiveDelayFragmentCount(value) {\n mediaPlayerModel.setLiveDelayFragmentCount(value);\n }\n\n /**\n *

Equivalent in seconds of setLiveDelayFragmentCount

\n *

Lowering this value will lower latency but may decrease the player's ability to build a stable buffer.

\n *

This value should be less than the manifest duration by a couple of segment durations to avoid playback issues

\n *

If set, this parameter will take precedence over setLiveDelayFragmentCount and manifest info

\n *\n * @param {number} value - Represents how many seconds to delay the live stream.\n * @default undefined\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#useSuggestedPresentationDelay useSuggestedPresentationDelay()}\n * @instance\n */\n function setLiveDelay(value) {\n mediaPlayerModel.setLiveDelay(value);\n }\n\n /**\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#setLiveDelay setLiveDelay()}\n * @instance\n * @returns {number|undefined} Current live stream delay in seconds when previously set, or `undefined`\n */\n function getLiveDelay() {\n return mediaPlayerModel.getLiveDelay();\n }\n\n /**\n *

Set to true if you would like to override the default live delay and honor the SuggestedPresentationDelay attribute in by the manifest.

\n * @param {boolean} value\n * @default false\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#setLiveDelayFragmentCount setLiveDelayFragmentCount()}\n * @instance\n */\n function useSuggestedPresentationDelay(value) {\n mediaPlayerModel.setUseSuggestedPresentationDelay(value);\n }\n\n /**\n * Set to false if you would like to disable the last known bit rate from being stored during playback and used\n * to set the initial bit rate for subsequent playback within the expiration window.\n *\n * The default expiration is one hour, defined in milliseconds. If expired, the default initial bit rate (closest to 1000 kbps) will be used\n * for that session and a new bit rate will be stored during that session.\n *\n * @param {boolean} enable - Will toggle if feature is enabled. True to enable, False to disable.\n * @param {number=} ttl - (Optional) A value defined in milliseconds representing how long to cache the bit rate for. Time to live.\n * @default enable = True, ttl = 360000 (1 hour)\n * @memberof module:MediaPlayer\n * @instance\n *\n */\n function enableLastBitrateCaching(enable, ttl) {\n mediaPlayerModel.setLastBitrateCachingInfo(enable, ttl);\n }\n\n /**\n * Set to false if you would like to disable the last known lang for audio (or camera angle for video) from being stored during playback and used\n * to set the initial settings for subsequent playback within the expiration window.\n *\n * The default expiration is one hour, defined in milliseconds. If expired, the default settings will be used\n * for that session and a new settings will be stored during that session.\n *\n * @param {boolean} enable - Will toggle if feature is enabled. True to enable, False to disable.\n * @param {number=} [ttl] - (Optional) A value defined in milliseconds representing how long to cache the settings for. Time to live.\n * @default enable = True, ttl = 360000 (1 hour)\n * @memberof module:MediaPlayer\n * @instance\n *\n */\n function enableLastMediaSettingsCaching(enable, ttl) {\n mediaPlayerModel.setLastMediaSettingsCachingInfo(enable, ttl);\n }\n\n /**\n * Set to true if you would like dash.js to keep downloading fragments in the background\n * when the video element is paused.\n *\n * @default true\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setScheduleWhilePaused(value) {\n mediaPlayerModel.setScheduleWhilePaused(value);\n }\n\n /**\n * Returns a boolean of the current state of ScheduleWhilePaused.\n * @returns {boolean}\n * @see {@link module:MediaPlayer#setScheduleWhilePaused setScheduleWhilePaused()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getScheduleWhilePaused() {\n return mediaPlayerModel.getScheduleWhilePaused();\n }\n\n /**\n * When enabled, after an ABR up-switch in quality, instead of requesting and appending the next fragment\n * at the end of the current buffer range it is requested and appended closer to the current time\n * When enabled, The maximum time to render a higher quality is current time + (1.5 * fragment duration).\n *\n * Note, When ABR down-switch is detected, we appended the lower quality at the end of the buffer range to preserve the\n * higher quality media for as long as possible.\n *\n * If enabled, it should be noted there are a few cases when the client will not replace inside buffer range but rather\n * just append at the end. 1. When the buffer level is less than one fragment duration 2. The client\n * is in an Abandonment State due to recent fragment abandonment event.\n *\n * Known issues:\n * 1. In IE11 with auto switching off, if a user switches to a quality they can not download in time the\n * fragment may be appended in the same range as the playhead or even in the past, in IE11 it may cause a stutter\n * or stall in playback.\n *\n *\n * @param {boolean} value\n * @default {boolean} false\n * @memberof module:MediaPlayer\n * @instance\n */\n function setFastSwitchEnabled(value) { //TODO we need to look at track switches for adaptation sets. If always replace it works much like this but clears buffer. Maybe too many ways to do same thing.\n mediaPlayerModel.setFastSwitchEnabled(value);\n }\n\n /**\n * Enabled by default. Will return the current state of Fast Switch.\n * @return {boolean} Returns true if FastSwitch ABR is enabled.\n * @see {@link module:MediaPlayer#setFastSwitchEnabled setFastSwitchEnabled()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getFastSwitchEnabled() {\n return mediaPlayerModel.getFastSwitchEnabled();\n }\n\n /**\n * Obsolete since version 2.6.0.\n * Buffer-occupancy ABR is now switched on and off dynamically.\n * @see {@link module:MediaPlayer#setABRStrategy setABRStrategy()}\n *\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function enableBufferOccupancyABR(value) {\n throw new Error('Calling obsolete function - enabledBufferOccupancyABR(' + value + ') has no effect.');\n }\n\n /**\n * Sets the ABR strategy. Valid strategies are \"abrDynamic\", \"abrBola\" and \"abrThroughput\".\n * The ABR strategy can also be changed during a streaming session.\n * The call has no effect if an invalid method is passed.\n *\n * The BOLA strategy chooses bitrate based on current buffer level, with higher bitrates for higher buffer levels.\n * The Throughput strategy chooses bitrate based on the recent throughput history.\n * The Dynamic strategy switches smoothly between BOLA and Throughput in real time, playing to the strengths of both.\n *\n * @param {string} value\n * @default \"abrDynamic\"\n * @memberof module:MediaPlayer\n * @instance\n */\n function setABRStrategy(value) {\n if (value === Constants.ABR_STRATEGY_DYNAMIC || value === Constants.ABR_STRATEGY_BOLA || value === Constants.ABR_STRATEGY_THROUGHPUT) {\n mediaPlayerModel.setABRStrategy(value);\n } else {\n log('Warning: Ignoring setABRStrategy(' + value + ') - unknown value.');\n }\n }\n\n /**\n * Returns the current ABR strategy being used.\n * @return {string} \"abrDynamic\", \"abrBola\" or \"abrThroughput\"\n * @see {@link module:MediaPlayer#setABRStrategy setABRStrategy()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getABRStrategy() {\n return mediaPlayerModel.getABRStrategy();\n }\n\n /**\n * Enable/disable builtin dashjs ABR rules\n * @param {boolean} value\n * @default true\n * @memberof module:MediaPlayer\n * @instance\n */\n function useDefaultABRRules(value) {\n mediaPlayerModel.setUseDefaultABRRules(value);\n }\n\n /**\n * Add a custom ABR Rule\n * Rule will be apply on next stream if a stream is being played\n *\n * @param {string} type - rule type (one of ['qualitySwitchRules','abandonFragmentRules'])\n * @param {string} rulename - name of rule (used to identify custom rule). If one rule of same name has been added, then existing rule will be updated\n * @param {object} rule - the rule object instance\n * @memberof module:MediaPlayer\n * @instance\n */\n function addABRCustomRule(type, rulename, rule) {\n mediaPlayerModel.addABRCustomRule(type, rulename, rule);\n }\n\n /**\n * Remove a custom ABR Rule\n *\n * @param {string} rulename - name of the rule to be removed\n * @memberof module:MediaPlayer\n * @instance\n */\n function removeABRCustomRule(rulename) {\n mediaPlayerModel.removeABRCustomRule(rulename);\n }\n\n /**\n * Remove all custom rules\n * @memberof module:MediaPlayer\n * @instance\n */\n function removeAllABRCustomRule() {\n mediaPlayerModel.removeAllABRCustomRule();\n }\n\n /**\n * Sets the moving average method used for smoothing throughput estimates. Valid methods are\n * \"slidingWindow\" and \"ewma\". The call has no effect if an invalid method is passed.\n *\n * The sliding window moving average method computes the average throughput using the last four segments downloaded.\n * If the stream is live (as opposed to VOD), then only the last three segments are used.\n * If wide variations in throughput are detected, the number of segments can be dynamically increased to avoid oscillations.\n *\n * The exponentially weighted moving average (EWMA) method computes the average using exponential smoothing.\n * Two separate estimates are maintained, a fast one with a three-second half life and a slow one with an eight-second half life.\n * The throughput estimate at any time is the minimum of the fast and slow estimates.\n * This allows a fast reaction to a bandwidth drop and prevents oscillations on bandwidth spikes.\n *\n * @param {string} value\n * @default {string} 'slidingWindow'\n * @memberof module:MediaPlayer\n * @instance\n */\n function setMovingAverageMethod(value) {\n if (value === Constants.MOVING_AVERAGE_SLIDING_WINDOW || value === Constants.MOVING_AVERAGE_EWMA) {\n mediaPlayerModel.setMovingAverageMethod(value);\n } else {\n log('Warning: Ignoring setMovingAverageMethod(' + value + ') - unknown value.');\n }\n }\n\n /**\n * Return the current moving average method used for smoothing throughput estimates.\n * @return {string} Returns \"slidingWindow\" or \"ewma\".\n * @see {@link module:MediaPlayer#setMovingAverageMethod setMovingAverageMethod()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getMovingAverageMethod() {\n return mediaPlayerModel.getMovingAverageMethod();\n }\n\n /**\n *

Allows you to set a scheme and server source for UTC live edge detection for dynamic streams.\n * If UTCTiming is defined in the manifest, it will take precedence over any time source manually added.

\n *

If you have exposed the Date header, use the method {@link module:MediaPlayer#clearDefaultUTCTimingSources clearDefaultUTCTimingSources()}.\n * This will allow the date header on the manifest to be used instead of a time server

\n * @param {string} schemeIdUri -
    \n *
  • urn:mpeg:dash:utc:http-head:2014
  • \n *
  • urn:mpeg:dash:utc:http-xsdate:2014
  • \n *
  • urn:mpeg:dash:utc:http-iso:2014
  • \n *
  • urn:mpeg:dash:utc:direct:2014
  • \n *
\n *

Some specs referencing early ISO23009-1 drafts incorrectly use\n * 2012 in the URI, rather than 2014. support these for now.

\n *
    \n *
  • urn:mpeg:dash:utc:http-head:2012
  • \n *
  • urn:mpeg:dash:utc:http-xsdate:2012
  • \n *
  • urn:mpeg:dash:utc:http-iso:2012
  • \n *
  • urn:mpeg:dash:utc:direct:2012
  • \n *
\n * @param {string} value - Path to a time source.\n * @default\n *
    \n *
  • schemeIdUri:urn:mpeg:dash:utc:http-xsdate:2014
  • \n *
  • value:http://time.akamai.com
  • \n *
\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#removeUTCTimingSource removeUTCTimingSource()}\n * @instance\n */\n function addUTCTimingSource(schemeIdUri, value) {\n removeUTCTimingSource(schemeIdUri, value); //check if it already exists and remove if so.\n let vo = new UTCTiming();\n vo.schemeIdUri = schemeIdUri;\n vo.value = value;\n mediaPlayerModel.getUTCTimingSources().push(vo);\n }\n\n /**\n *

Allows you to remove a UTC time source. Both schemeIdUri and value need to match the Dash.vo.UTCTiming properties in order for the\n * entry to be removed from the array

\n * @param {string} schemeIdUri - see {@link module:MediaPlayer#addUTCTimingSource addUTCTimingSource()}\n * @param {string} value - see {@link module:MediaPlayer#addUTCTimingSource addUTCTimingSource()}\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#clearDefaultUTCTimingSources clearDefaultUTCTimingSources()}\n * @instance\n */\n function removeUTCTimingSource(schemeIdUri, value) {\n let UTCTimingSources = mediaPlayerModel.getUTCTimingSources();\n UTCTimingSources.forEach(function (obj, idx) {\n if (obj.schemeIdUri === schemeIdUri && obj.value === value) {\n UTCTimingSources.splice(idx, 1);\n }\n });\n }\n\n /**\n *

Allows you to clear the stored array of time sources.

\n *

Example use: If you have exposed the Date header, calling this method\n * will allow the date header on the manifest to be used instead of the time server.

\n *

Example use: Calling this method, assuming there is not an exposed date header on the manifest, will default back\n * to using a binary search to discover the live edge

\n *\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#restoreDefaultUTCTimingSources restoreDefaultUTCTimingSources()}\n * @instance\n */\n function clearDefaultUTCTimingSources() {\n mediaPlayerModel.setUTCTimingSources([]);\n }\n\n /**\n *

Allows you to restore the default time sources after calling {@link module:MediaPlayer#clearDefaultUTCTimingSources clearDefaultUTCTimingSources()}

\n *\n * @default\n *
    \n *
  • schemeIdUri:urn:mpeg:dash:utc:http-xsdate:2014
  • \n *
  • value:http://time.akamai.com
  • \n *
\n *\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#addUTCTimingSource addUTCTimingSource()}\n * @instance\n */\n function restoreDefaultUTCTimingSources() {\n addUTCTimingSource(MediaPlayerModel.DEFAULT_UTC_TIMING_SOURCE.scheme, MediaPlayerModel.DEFAULT_UTC_TIMING_SOURCE.value);\n }\n\n\n /**\n *

Allows you to enable the use of the Date Header, if exposed with CORS, as a timing source for live edge detection. The\n * use of the date header will happen only after the other timing source that take precedence fail or are omitted as described.\n * {@link module:MediaPlayer#clearDefaultUTCTimingSources clearDefaultUTCTimingSources()}

\n *\n * @param {boolean} value - true to enable\n * @default {boolean} True\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#addUTCTimingSource addUTCTimingSource()}\n * @instance\n */\n function enableManifestDateHeaderTimeSource(value) {\n mediaPlayerModel.setUseManifestDateHeaderTimeSource(value);\n }\n\n /**\n * This value influences the buffer pruning logic.\n * Allows you to modify the buffer that is kept in source buffer in seconds.\n * 0|-----------bufferToPrune-----------|-----bufferToKeep-----|currentTime|\n *\n * @default 30 seconds\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setBufferToKeep(value) {\n mediaPlayerModel.setBufferToKeep(value);\n }\n\n /**\n * This value influences the buffer pruning logic.\n * Allows you to modify the interval of pruning buffer in seconds.\n *\n * @default 30 seconds\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setBufferPruningInterval(value) {\n mediaPlayerModel.setBufferPruningInterval(value);\n }\n\n /**\n * The time that the internal buffer target will be set to post startup/seeks (NOT top quality).\n *\n * When the time is set higher than the default you will have to wait longer\n * to see automatic bitrate switches but will have a larger buffer which\n * will increase stability.\n *\n * @default 12 seconds.\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setStableBufferTime(value) {\n mediaPlayerModel.setStableBufferTime(value);\n }\n\n /**\n * The time that the internal buffer target will be set to post startup/seeks (NOT top quality).\n *\n * When the time is set higher than the default you will have to wait longer\n * to see automatic bitrate switches but will have a larger buffer which\n * will increase stability.\n *\n * @default 12 seconds.\n * @memberof module:MediaPlayer\n * @instance\n */\n function getStableBufferTime() {\n return mediaPlayerModel.getStableBufferTime();\n }\n\n /**\n * The time that the internal buffer target will be set to once playing the top quality.\n * If there are multiple bitrates in your adaptation, and the media is playing at the highest\n * bitrate, then we try to build a larger buffer at the top quality to increase stability\n * and to maintain media quality.\n *\n * @default 30 seconds.\n * @param {int} value\n /**\n * The time that the internal buffer target will be set to once playing the top quality.\n * If there are multiple bitrates in your adaptation, and the media is playing at the highest\n * bitrate, then we try to build a larger buffer at the top quality to increase stability\n * and to maintain media quality.\n *\n * @default 30 seconds.\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setBufferTimeAtTopQuality(value) {\n mediaPlayerModel.setBufferTimeAtTopQuality(value);\n }\n\n /**\n * The time that the internal buffer target will be set to once playing the top quality.\n * If there are multiple bitrates in your adaptation, and the media is playing at the highest\n * bitrate, then we try to build a larger buffer at the top quality to increase stability\n * and to maintain media quality.\n *\n * @default 30 seconds.\n * @memberof module:MediaPlayer\n * @instance\n */\n function getBufferTimeAtTopQuality() {\n return mediaPlayerModel.getBufferTimeAtTopQuality();\n }\n\n /**\n * The time that the internal buffer target will be set to once playing the top quality for long form content.\n *\n * @default 60 seconds.\n * @see {@link module:MediaPlayer#setLongFormContentDurationThreshold setLongFormContentDurationThreshold()}\n * @see {@link module:MediaPlayer#setBufferTimeAtTopQuality setBufferTimeAtTopQuality()}\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setBufferTimeAtTopQualityLongForm(value) {\n mediaPlayerModel.setBufferTimeAtTopQualityLongForm(value);\n }\n\n /**\n * The time that the internal buffer target will be set to once playing the top quality for long form content.\n *\n * @default 60 seconds.\n * @see {@link module:MediaPlayer#setLongFormContentDurationThreshold setLongFormContentDurationThreshold()}\n * @see {@link module:MediaPlayer#setBufferTimeAtTopQuality setBufferTimeAtTopQuality()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getBufferTimeAtTopQualityLongForm() {\n return mediaPlayerModel.getBufferTimeAtTopQualityLongForm();\n }\n\n /**\n * The threshold which defines if the media is considered long form content.\n * This will directly affect the buffer targets when playing back at the top quality.\n *\n * @see {@link module:MediaPlayer#setBufferTimeAtTopQualityLongForm setBufferTimeAtTopQualityLongForm()}\n * @default 600 seconds (10 minutes).\n * @param {number} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setLongFormContentDurationThreshold(value) {\n mediaPlayerModel.setLongFormContentDurationThreshold(value);\n }\n\n /**\n * Obsolete since version 2.6.0.\n * ABR rules now switch from Throughput to Buffer Occupancy mode when there is sufficient buffer.\n * This renders the rich buffer mechanism redundant.\n *\n * @param {number} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setRichBufferThreshold(value) {\n throw new Error('Calling obsolete function - setRichBufferThreshold(' + value + ') has no effect.');\n }\n\n /**\n * A percentage between 0.0 and 1 to reduce the measured throughput calculations.\n * The default is 0.9. The lower the value the more conservative and restricted the\n * measured throughput calculations will be. please use carefully. This will directly\n * affect the ABR logic in dash.js\n *\n * @param {number} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setBandwidthSafetyFactor(value) {\n mediaPlayerModel.setBandwidthSafetyFactor(value);\n }\n\n /**\n * Returns the number of the current BandwidthSafetyFactor\n *\n * @return {number} value\n * @see {@link module:MediaPlayer#setBandwidthSafetyFactor setBandwidthSafetyFactor()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getBandwidthSafetyFactor() {\n return mediaPlayerModel.getBandwidthSafetyFactor();\n }\n\n /**\n * Returns the average throughput computed in the ABR logic\n *\n * @param {string} type\n * @return {number} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function getAverageThroughput(type) {\n const throughputHistory = abrController.getThroughputHistory();\n return throughputHistory ? throughputHistory.getAverageThroughput(type) : 0;\n }\n\n /**\n * A timeout value in seconds, which during the ABRController will block switch-up events.\n * This will only take effect after an abandoned fragment event occurs.\n *\n * @default 10 seconds\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setAbandonLoadTimeout(value) {\n mediaPlayerModel.setAbandonLoadTimeout(value);\n }\n\n /**\n * Total number of retry attempts that will occur on a fragment load before it fails.\n * Increase this value to a maximum in order to achieve an automatic playback resume\n * in case of completely lost internet connection.\n *\n * @default 3\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setFragmentLoaderRetryAttempts(value) {\n mediaPlayerModel.setFragmentRetryAttempts(value);\n }\n\n /**\n * Time in milliseconds of which to reload a failed fragment load attempt.\n *\n * @default 1000 milliseconds\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setFragmentLoaderRetryInterval(value) {\n mediaPlayerModel.setFragmentRetryInterval(value);\n }\n\n /**\n * Total number of retry attempts that will occur on a manifest load before it fails.\n *\n * @default 4\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setManifestLoaderRetryAttempts(value) {\n mediaPlayerModel.setManifestRetryAttempts(value);\n }\n\n /**\n * Time in milliseconds of which to reload a failed manifest load attempt.\n *\n * @default 1000 milliseconds\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setManifestLoaderRetryInterval(value) {\n mediaPlayerModel.setManifestRetryInterval(value);\n }\n\n /**\n * Sets whether withCredentials on XHR requests for a particular request\n * type is true or false\n *\n * @default false\n * @param {string} type - one of HTTPRequest.*_TYPE\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setXHRWithCredentialsForType(type, value) {\n mediaPlayerModel.setXHRWithCredentialsForType(type, value);\n }\n\n /**\n * Gets whether withCredentials on XHR requests for a particular request\n * type is true or false\n *\n * @param {string} type - one of HTTPRequest.*_TYPE\n * @return {boolean}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getXHRWithCredentialsForType(type) {\n return mediaPlayerModel.getXHRWithCredentialsForType(type);\n }\n\n /*\n ---------------------------------------------------------------------------\n\n METRICS\n\n ---------------------------------------------------------------------------\n */\n /**\n * Returns the DashMetrics.js Module. You use this Module to get access to all the public metrics\n * stored in dash.js\n *\n * @see {@link module:DashMetrics}\n * @returns {Object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getDashMetrics() {\n return dashMetrics;\n }\n\n /**\n *\n * @param {string} type\n * @returns {Object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getMetricsFor(type) {\n return metricsModel.getReadOnlyMetricsFor(type);\n }\n /*\n ---------------------------------------------------------------------------\n\n TEXT MANAGEMENT\n\n ---------------------------------------------------------------------------\n */\n /**\n * Use this method to change the current text track for both external time text files and fragmented text tracks. There is no need to\n * set the track mode on the video object to switch a track when using this method.\n *\n * @param {number} idx - Index of track based on the order of the order the tracks are added Use -1 to disable all tracks. (turn captions off). Use module:MediaPlayer#dashjs.MediaPlayer.events.TEXT_TRACK_ADDED.\n * @see {@link module:MediaPlayer#dashjs.MediaPlayer.events.TEXT_TRACK_ADDED}\n * @memberof module:MediaPlayer\n * @instance\n */\n function setTextTrack(idx) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n\n if (textController === undefined) {\n textController = TextController(context).getInstance();\n }\n\n textController.setTextTrack(idx);\n }\n\n function getCurrentTextTrackIndex() {\n let idx = NaN;\n if (textController) {\n idx = textController.getCurrentTrackIdx();\n }\n return idx;\n }\n\n /**\n * This method serves to control captions z-index value. If 'true' is passed, the captions will have the highest z-index and be\n * displayed on top of other html elements. Default value is 'false' (z-index is not set).\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function displayCaptionsOnTop(value) {\n let textTracks = TextTracks(context).getInstance();\n textTracks.setConfig({\n videoModel: videoModel\n });\n textTracks.initialize();\n textTracks.displayCConTop(value);\n }\n\n /*\n ---------------------------------------------------------------------------\n\n VIDEO ELEMENT MANAGEMENT\n\n ---------------------------------------------------------------------------\n */\n\n /**\n * Returns instance of Video Element that was attached by calling attachView()\n * @returns {Object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getVideoElement() {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n return videoModel.getElement();\n }\n\n /**\n * Returns instance of Video Container that was attached by calling attachVideoContainer()\n * @returns {Object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getVideoContainer() {\n return videoModel ? videoModel.getVideoContainer() : null;\n }\n\n /**\n * Use this method to attach an HTML5 element that wraps the video element.\n *\n * @param {HTMLElement} container - The HTML5 element containing the video element.\n * @memberof module:MediaPlayer\n * @instance\n */\n function attachVideoContainer(container) {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n videoModel.setVideoContainer(container);\n }\n\n /**\n * Use this method to attach an HTML5 VideoElement for dash.js to operate upon.\n *\n * @param {Object} element - An HTMLMediaElement that has already been defined in the DOM (or equivalent stub).\n * @memberof module:MediaPlayer\n * @instance\n */\n function attachView(element) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n videoModel = null;\n if (element) {\n videoModel = VideoModel(context).getInstance();\n videoModel.initialize();\n videoModel.setElement(element);\n detectProtection();\n detectMetricsReporting();\n detectMss();\n }\n resetAndInitializePlayback();\n }\n\n /**\n * Returns instance of Div that was attached by calling attachTTMLRenderingDiv()\n * @returns {Object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getTTMLRenderingDiv() {\n return videoModel ? videoModel.getTTMLRenderingDiv() : null;\n }\n\n /**\n * Use this method to attach an HTML5 div for dash.js to render rich TTML subtitles.\n *\n * @param {HTMLDivElement} div - An unstyled div placed after the video element. It will be styled to match the video size and overlay z-order.\n * @memberof module:MediaPlayer\n * @instance\n */\n function attachTTMLRenderingDiv(div) {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n videoModel.setTTMLRenderingDiv(div);\n }\n\n /*\n ---------------------------------------------------------------------------\n\n STREAM AND TRACK MANAGEMENT\n\n ---------------------------------------------------------------------------\n */\n /**\n * @param {string} type\n * @returns {Array}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getBitrateInfoListFor(type) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n let stream = getActiveStream();\n return stream ? stream.getBitrateListFor(type) : [];\n }\n\n /**\n * This method returns the list of all available streams from a given manifest\n * @param {Object} manifest\n * @returns {Array} list of {@link StreamInfo}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getStreamsFromManifest(manifest) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return adapter.getStreamsInfo(manifest);\n }\n\n /**\n * This method returns the list of all available tracks for a given media type\n * @param {string} type\n * @returns {Array} list of {@link MediaInfo}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getTracksFor(type) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n let streamInfo = streamController.getActiveStreamInfo();\n if (!streamInfo) return [];\n return mediaController.getTracksFor(type, streamInfo);\n }\n\n /**\n * This method returns the list of all available tracks for a given media type and streamInfo from a given manifest\n * @param {string} type\n * @param {Object} manifest\n * @param {Object} streamInfo\n * @returns {Array} list of {@link MediaInfo}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getTracksForTypeFromManifest(type, manifest, streamInfo) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n\n streamInfo = streamInfo || adapter.getStreamsInfo(manifest)[0];\n\n return streamInfo ? adapter.getAllMediaInfoForType(streamInfo, type, manifest) : [];\n }\n\n /**\n * @param {string} type\n * @returns {Object|null} {@link MediaInfo}\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function getCurrentTrackFor(type) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n let streamInfo = streamController.getActiveStreamInfo();\n\n if (!streamInfo) return null;\n\n return mediaController.getCurrentTrackFor(type, streamInfo);\n }\n\n /**\n * This method allows to set media settings that will be used to pick the initial track. Format of the settings\n * is following:\n * {lang: langValue,\n * viewpoint: viewpointValue,\n * audioChannelConfiguration: audioChannelConfigurationValue,\n * accessibility: accessibilityValue,\n * role: roleValue}\n *\n *\n * @param {string} type\n * @param {Object} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setInitialMediaSettingsFor(type, value) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n mediaController.setInitialSettings(type, value);\n }\n\n /**\n * This method returns media settings that is used to pick the initial track. Format of the settings\n * is following:\n * {lang: langValue,\n * viewpoint: viewpointValue,\n * audioChannelConfiguration: audioChannelConfigurationValue,\n * accessibility: accessibilityValue,\n * role: roleValue}\n * @param {string} type\n * @returns {Object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getInitialMediaSettingsFor(type) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n return mediaController.getInitialSettings(type);\n }\n\n /**\n * @param {MediaInfo} track - instance of {@link MediaInfo}\n * @memberof module:MediaPlayer\n * @instance\n */\n function setCurrentTrack(track) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n mediaController.setTrack(track);\n }\n\n /**\n * This method returns the current track switch mode.\n *\n * @param {string} type\n * @returns {string} mode\n * @memberof module:MediaPlayer\n * @instance\n */\n function getTrackSwitchModeFor(type) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n return mediaController.getSwitchMode(type);\n }\n\n /**\n * This method sets the current track switch mode. Available options are:\n *\n * MediaController.TRACK_SWITCH_MODE_NEVER_REPLACE\n * (used to forbid clearing the buffered data (prior to current playback position) after track switch. Default for video)\n *\n * MediaController.TRACK_SWITCH_MODE_ALWAYS_REPLACE\n * (used to clear the buffered data (prior to current playback position) after track switch. Default for audio)\n *\n * @param {string} type\n * @param {string} mode\n * @memberof module:MediaPlayer\n * @instance\n */\n function setTrackSwitchModeFor(type, mode) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n mediaController.setSwitchMode(type, mode);\n }\n\n /**\n * This method sets the selection mode for the initial track. This mode defines how the initial track will be selected\n * if no initial media settings are set. If initial media settings are set this parameter will be ignored. Available options are:\n *\n * MediaController.TRACK_SELECTION_MODE_HIGHEST_BITRATE\n * this mode makes the player select the track with a highest bitrate. This mode is a default mode.\n *\n * MediaController.TRACK_SELECTION_MODE_WIDEST_RANGE\n * this mode makes the player select the track with a widest range of bitrates\n *\n * @param {string} mode\n * @memberof module:MediaPlayer\n * @instance\n */\n function setSelectionModeForInitialTrack(mode) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n mediaController.setSelectionModeForInitialTrack(mode);\n }\n\n /**\n * This method returns the track selection mode.\n *\n * @returns {string} mode\n * @memberof module:MediaPlayer\n * @instance\n */\n function getSelectionModeForInitialTrack() {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n return mediaController.getSelectionModeForInitialTrack();\n }\n\n /*\n ---------------------------------------------------------------------------\n\n PROTECTION MANAGEMENT\n\n ---------------------------------------------------------------------------\n /**\n * Detects if Protection is included and returns an instance of ProtectionController.js\n * @memberof module:MediaPlayer\n * @instance\n */\n function getProtectionController() {\n return detectProtection();\n }\n\n /**\n * Will override dash.js protection controller.\n * @param {ProtectionController} value - valid protection controller instance.\n * @memberof module:MediaPlayer\n * @instance\n */\n function attachProtectionController(value) {\n protectionController = value;\n }\n\n /**\n * @param {ProtectionData} value - object containing\n * property names corresponding to key system name strings and associated\n * values being instances of.\n * @memberof module:MediaPlayer\n * @instance\n */\n function setProtectionData(value) {\n protectionData = value;\n }\n\n /*\n ---------------------------------------------------------------------------\n\n TOOLS AND OTHERS FUNCTIONS\n\n ---------------------------------------------------------------------------\n */\n /**\n * Allows application to retrieve a manifest. Manifest loading is asynchro\n * nous and\n * requires the app-provided callback function\n *\n * @param {string} url - url the manifest url\n * @param {function} callback - A Callback function provided when retrieving manifests\n * @memberof module:MediaPlayer\n * @instance\n */\n function retrieveManifest(url, callback) {\n let manifestLoader = createManifestLoader();\n let self = this;\n\n const handler = function (e) {\n if (!e.error) {\n callback(e.manifest);\n } else {\n callback(null, e.error);\n }\n eventBus.off(Events.INTERNAL_MANIFEST_LOADED, handler, self);\n manifestLoader.reset();\n };\n\n eventBus.on(Events.INTERNAL_MANIFEST_LOADED, handler, self);\n\n let uriQueryFragModel = URIQueryAndFragmentModel(context).getInstance();\n uriQueryFragModel.initialize();\n manifestLoader.load(uriQueryFragModel.parseURI(url));\n }\n\n /**\n * Returns the source string or manifest that was attached by calling attachSource()\n * @returns {string | manifest}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getSource() {\n if (!source) {\n throw SOURCE_NOT_ATTACHED_ERROR;\n }\n return source;\n }\n\n /**\n * Use this method to set a source URL to a valid MPD manifest file OR\n * a previously downloaded and parsed manifest object. Optionally, can\n * also provide protection information\n *\n * @param {string|Object} urlOrManifest - A URL to a valid MPD manifest file, or a\n * parsed manifest object.\n *\n *\n * @throws \"MediaPlayer not initialized!\"\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function attachSource(urlOrManifest) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n\n if (typeof urlOrManifest === 'string') {\n let uriQueryFragModel = URIQueryAndFragmentModel(context).getInstance();\n uriQueryFragModel.initialize();\n source = uriQueryFragModel.parseURI(urlOrManifest);\n } else {\n source = urlOrManifest;\n }\n\n resetAndInitializePlayback();\n }\n\n /**\n * A utility methods which converts UTC timestamp value into a valid time and date string.\n *\n * @param {number} time - UTC timestamp to be converted into date and time.\n * @param {string} locales - a region identifier (i.e. en_US).\n * @param {boolean} hour12 - 12 vs 24 hour. Set to true for 12 hour time formatting.\n * @param {boolean} withDate - default is false. Set to true to append current date to UTC time format.\n * @returns {string} A formatted time and date string.\n * @memberof module:MediaPlayer\n * @instance\n */\n function formatUTC(time, locales, hour12, withDate = false) {\n const dt = new Date(time * 1000);\n const d = dt.toLocaleDateString(locales);\n const t = dt.toLocaleTimeString(locales, {\n hour12: hour12\n });\n return withDate ? t + ' ' + d : t;\n }\n\n /**\n * A utility method which converts seconds into TimeCode (i.e. 300 --> 05:00).\n *\n * @param {number} value - A number in seconds to be converted into a formatted time code.\n * @returns {string} A formatted time code string.\n * @memberof module:MediaPlayer\n * @instance\n */\n function convertToTimeCode(value) {\n value = Math.max(value, 0);\n\n let h = Math.floor(value / 3600);\n let m = Math.floor((value % 3600) / 60);\n let s = Math.floor((value % 3600) % 60);\n return (h === 0 ? '' : (h < 10 ? '0' + h.toString() + ':' : h.toString() + ':')) + (m < 10 ? '0' + m.toString() : m.toString()) + ':' + (s < 10 ? '0' + s.toString() : s.toString());\n }\n\n /**\n * This method should be used to extend or replace internal dash.js objects.\n * There are two ways to extend dash.js (determined by the override argument):\n *
    \n *
  1. If you set override to true any public method or property in your custom object will\n * override the dash.js parent object's property(ies) and will be used instead but the\n * dash.js parent module will still be created.
  2. \n *\n *
  3. If you set override to false your object will completely replace the dash.js object.\n * (Note: This is how it was in 1.x of Dash.js with Dijon).
  4. \n *
\n * When you extend you get access to this.context, this.factory and this.parent to operate with in your custom object.\n *
    \n *
  • this.context - can be used to pass context for singleton access.
  • \n *
  • this.factory - can be used to call factory.getSingletonInstance().
  • \n *
  • this.parent - is the reference of the parent object to call other public methods. (this.parent is excluded if you extend with override set to false or option 2)
  • \n *
\n * You must call extend before you call initialize\n * @see {@link module:MediaPlayer#initialize initialize()}\n * @param {string} parentNameString - name of parent module\n * @param {Object} childInstance - overriding object\n * @param {boolean} override - replace only some methods (true) or the whole object (false)\n * @memberof module:MediaPlayer\n * @instance\n */\n function extend(parentNameString, childInstance, override) {\n FactoryMaker.extend(parentNameString, childInstance, override, context);\n }\n\n /*\n ---------------------------------------------------------------------------\n\n DEPRECATED FUNCTIONS\n\n ---------------------------------------------------------------------------\n */\n /**\n * @deprecated Since version 2.1.0. Instead use:\n *
    \n *
  • {@link module:MediaPlayer#getVideoElement getVideoElement()}
  • \n *
  • {@link module:MediaPlayer#getSource getSource()}
  • \n *
  • {@link module:MediaPlayer#getVideoContainer getVideoContainer()}
  • \n *
  • {@link module:MediaPlayer#getTTMLRenderingDiv getTTMLRenderingDiv()}
  • \n *
\n *\n * @returns {VideoModel}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getVideoModel() {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n return videoModel;\n }\n\n /**\n * @deprecated since version 2.0 Instead use {@link module:MediaPlayer#getAutoSwitchQualityFor getAutoSwitchQualityFor()}.\n * @returns {boolean} Current state of adaptive bitrate switching\n * @memberof module:MediaPlayer\n * @instance\n */\n function getAutoSwitchQuality() {\n return abrController.getAutoSwitchBitrateFor(Constants.VIDEO) || abrController.getAutoSwitchBitrateFor(Constants.AUDIO);\n }\n\n /**\n * Set to false to switch off adaptive bitrate switching.\n *\n * @deprecated since version 2.0 Instead use {@link module:MediaPlayer#setAutoSwitchQualityFor setAutoSwitchQualityFor()}.\n * @param {boolean} value\n * @default true\n * @memberof module:MediaPlayer\n * @instance\n */\n function setAutoSwitchQuality(value) {\n abrController.setAutoSwitchBitrateFor(Constants.VIDEO, value);\n abrController.setAutoSwitchBitrateFor(Constants.AUDIO, value);\n }\n\n /**\n * Sets whether withCredentials on all XHR requests is true or false\n * @default false\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n * @deprecated since version 2.4 - use setXHRWithCredentialsForType\n */\n function setXHRWithCredentials(value) {\n setXHRWithCredentialsForType(undefined, value);\n }\n\n //***********************************\n // PRIVATE METHODS\n //***********************************\n\n function resetAndInitializePlayback() {\n if (playbackInitialized) {\n playbackInitialized = false;\n adapter.reset();\n streamController.reset();\n playbackController.reset();\n abrController.reset();\n mediaController.reset();\n textController.reset();\n if (protectionController) {\n protectionController.reset();\n protectionController = null;\n detectProtection();\n }\n if (isReady()) {\n initializePlayback();\n }\n } else if (isReady()) {\n initializePlayback();\n }\n }\n\n function createPlaybackControllers() {\n\n // creates or get objects instances\n let manifestLoader = createManifestLoader();\n\n let sourceBufferController = SourceBufferController(context).getInstance({\n textController: textController\n });\n\n if (!streamController) {\n streamController = StreamController(context).getInstance();\n }\n\n // configure controllers\n mediaController.setConfig({\n errHandler: errHandler,\n domStorage: domStorage\n });\n\n streamController.setConfig({\n capabilities: capabilities,\n manifestLoader: manifestLoader,\n manifestModel: manifestModel,\n dashManifestModel: dashManifestModel,\n mediaPlayerModel: mediaPlayerModel,\n protectionController: protectionController,\n adapter: adapter,\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n errHandler: errHandler,\n timelineConverter: timelineConverter,\n videoModel: videoModel,\n playbackController: playbackController,\n domStorage: domStorage,\n abrController: abrController,\n mediaController: mediaController,\n textController: textController,\n sourceBufferController: sourceBufferController\n });\n\n playbackController.setConfig({\n streamController: streamController,\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n manifestModel: manifestModel,\n mediaPlayerModel: mediaPlayerModel,\n dashManifestModel: dashManifestModel,\n adapter: adapter,\n videoModel: videoModel\n });\n\n abrController.setConfig({\n streamController: streamController,\n domStorage: domStorage,\n mediaPlayerModel: mediaPlayerModel,\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n dashManifestModel: dashManifestModel,\n manifestModel: manifestModel,\n videoModel: videoModel,\n adapter: adapter\n });\n abrController.createAbrRulesCollection();\n\n textController.setConfig({\n errHandler: errHandler,\n manifestModel: manifestModel,\n dashManifestModel: dashManifestModel,\n mediaController: mediaController,\n streamController: streamController,\n videoModel: videoModel\n });\n // initialises controller\n streamController.initialize(autoPlay, protectionData);\n }\n\n function createManifestLoader() {\n return ManifestLoader(context).create({\n errHandler: errHandler,\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n requestModifier: RequestModifier(context).getInstance(),\n mssHandler: mssHandler\n });\n }\n\n function detectProtection() {\n if (protectionController) {\n return protectionController;\n }\n // do not require Protection as dependencies as this is optional and intended to be loaded separately\n let Protection = dashjs.Protection; /* jshint ignore:line */\n if (typeof Protection === 'function') { //TODO need a better way to register/detect plugin components\n let protection = Protection(context).create();\n Events.extend(Protection.events);\n MediaPlayerEvents.extend(Protection.events, {\n publicOnly: true\n });\n protectionController = protection.createProtectionSystem({\n log: log,\n errHandler: errHandler,\n videoModel: videoModel,\n capabilities: capabilities,\n eventBus: eventBus,\n adapter: adapter,\n events: Events,\n BASE64: BASE64,\n constants: Constants\n });\n return protectionController;\n }\n\n return null;\n }\n\n function detectMetricsReporting() {\n if (metricsReportingController) {\n return;\n }\n // do not require MetricsReporting as dependencies as this is optional and intended to be loaded separately\n let MetricsReporting = dashjs.MetricsReporting; /* jshint ignore:line */\n if (typeof MetricsReporting === 'function') { //TODO need a better way to register/detect plugin components\n let metricsReporting = MetricsReporting(context).create();\n\n metricsReportingController = metricsReporting.createMetricsReporting({\n log: log,\n eventBus: eventBus,\n mediaElement: getVideoElement(),\n dashManifestModel: dashManifestModel,\n metricsModel: metricsModel,\n events: Events,\n constants: Constants,\n metricsConstants: MetricsConstants\n });\n }\n }\n\n function detectMss() {\n if (mssHandler) {\n return;\n }\n // do not require MssHandler as dependencies as this is optional and intended to be loaded separately\n let MssHandler = dashjs.MssHandler; /* jshint ignore:line */\n if (typeof MssHandler === 'function') { //TODO need a better way to register/detect plugin components\n mssHandler = MssHandler(context).create({\n eventBus: eventBus,\n mediaPlayerModel: mediaPlayerModel,\n metricsModel: metricsModel,\n playbackController: playbackController,\n protectionController: protectionController,\n errHandler: errHandler,\n events: Events,\n constants: Constants,\n log: log,\n initSegmentType: HTTPRequest.INIT_SEGMENT_TYPE,\n BASE64: BASE64,\n ISOBoxer: ISOBoxer\n });\n }\n }\n\n function getDVRInfoMetric() {\n let metric = metricsModel.getReadOnlyMetricsFor(Constants.VIDEO) || metricsModel.getReadOnlyMetricsFor(Constants.AUDIO);\n return dashMetrics.getCurrentDVRInfo(metric);\n }\n\n function getAsUTC(valToConvert) {\n let metric = getDVRInfoMetric();\n let availableFrom,\n utcValue;\n\n if (!metric) {\n return 0;\n }\n availableFrom = metric.manifestInfo.availableFrom.getTime() / 1000;\n utcValue = valToConvert + (availableFrom + metric.range.start);\n return utcValue;\n }\n\n function getActiveStream() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n let streamInfo = streamController.getActiveStreamInfo();\n return streamInfo ? streamController.getStreamById(streamInfo.id) : null;\n }\n\n function initializePlayback() {\n if (!playbackInitialized) {\n createPlaybackControllers();\n\n playbackInitialized = true;\n log('Playback Initialized');\n\n if (typeof source === 'string') {\n streamController.load(source);\n } else {\n streamController.loadWithManifest(source);\n }\n }\n }\n\n instance = {\n initialize: initialize,\n setConfig: setConfig,\n on: on,\n off: off,\n extend: extend,\n attachView: attachView,\n attachSource: attachSource,\n isReady: isReady,\n play: play,\n isPaused: isPaused,\n pause: pause,\n isSeeking: isSeeking,\n isDynamic: isDynamic,\n seek: seek,\n setPlaybackRate: setPlaybackRate,\n getPlaybackRate: getPlaybackRate,\n setMute: setMute,\n isMuted: isMuted,\n setVolume: setVolume,\n getVolume: getVolume,\n time: time,\n duration: duration,\n timeAsUTC: timeAsUTC,\n durationAsUTC: durationAsUTC,\n getActiveStream: getActiveStream,\n getDVRWindowSize: getDVRWindowSize,\n getDVRSeekOffset: getDVRSeekOffset,\n convertToTimeCode: convertToTimeCode,\n formatUTC: formatUTC,\n getVersion: getVersion,\n getDebug: getDebug,\n getBufferLength: getBufferLength,\n getVideoModel: getVideoModel,\n getVideoContainer: getVideoContainer,\n getTTMLRenderingDiv: getTTMLRenderingDiv,\n getVideoElement: getVideoElement,\n getSource: getSource,\n setLiveDelayFragmentCount: setLiveDelayFragmentCount,\n setLiveDelay: setLiveDelay,\n getLiveDelay: getLiveDelay,\n useSuggestedPresentationDelay: useSuggestedPresentationDelay,\n enableLastBitrateCaching: enableLastBitrateCaching,\n enableLastMediaSettingsCaching: enableLastMediaSettingsCaching,\n setMaxAllowedBitrateFor: setMaxAllowedBitrateFor,\n getMaxAllowedBitrateFor: getMaxAllowedBitrateFor,\n setMinAllowedBitrateFor: setMinAllowedBitrateFor,\n getMinAllowedBitrateFor: getMinAllowedBitrateFor,\n setMaxAllowedRepresentationRatioFor: setMaxAllowedRepresentationRatioFor,\n getMaxAllowedRepresentationRatioFor: getMaxAllowedRepresentationRatioFor,\n setAutoPlay: setAutoPlay,\n getAutoPlay: getAutoPlay,\n setScheduleWhilePaused: setScheduleWhilePaused,\n getScheduleWhilePaused: getScheduleWhilePaused,\n getDashMetrics: getDashMetrics,\n getMetricsFor: getMetricsFor,\n getQualityFor: getQualityFor,\n setQualityFor: setQualityFor,\n updatePortalSize: updatePortalSize,\n getLimitBitrateByPortal: getLimitBitrateByPortal,\n setLimitBitrateByPortal: setLimitBitrateByPortal,\n getUsePixelRatioInLimitBitrateByPortal: getUsePixelRatioInLimitBitrateByPortal,\n setUsePixelRatioInLimitBitrateByPortal: setUsePixelRatioInLimitBitrateByPortal,\n setTextTrack: setTextTrack,\n getBitrateInfoListFor: getBitrateInfoListFor,\n setInitialBitrateFor: setInitialBitrateFor,\n getInitialBitrateFor: getInitialBitrateFor,\n setInitialRepresentationRatioFor: setInitialRepresentationRatioFor,\n getInitialRepresentationRatioFor: getInitialRepresentationRatioFor,\n getStreamsFromManifest: getStreamsFromManifest,\n getTracksFor: getTracksFor,\n getTracksForTypeFromManifest: getTracksForTypeFromManifest,\n getCurrentTrackFor: getCurrentTrackFor,\n setInitialMediaSettingsFor: setInitialMediaSettingsFor,\n getInitialMediaSettingsFor: getInitialMediaSettingsFor,\n setCurrentTrack: setCurrentTrack,\n getTrackSwitchModeFor: getTrackSwitchModeFor,\n setTrackSwitchModeFor: setTrackSwitchModeFor,\n setSelectionModeForInitialTrack: setSelectionModeForInitialTrack,\n getSelectionModeForInitialTrack: getSelectionModeForInitialTrack,\n getAutoSwitchQuality: getAutoSwitchQuality,\n setAutoSwitchQuality: setAutoSwitchQuality,\n setFastSwitchEnabled: setFastSwitchEnabled,\n getFastSwitchEnabled: getFastSwitchEnabled,\n setMovingAverageMethod: setMovingAverageMethod,\n getMovingAverageMethod: getMovingAverageMethod,\n getAutoSwitchQualityFor: getAutoSwitchQualityFor,\n setAutoSwitchQualityFor: setAutoSwitchQualityFor,\n enableBufferOccupancyABR: enableBufferOccupancyABR,\n setABRStrategy: setABRStrategy,\n getABRStrategy: getABRStrategy,\n useDefaultABRRules: useDefaultABRRules,\n addABRCustomRule: addABRCustomRule,\n removeABRCustomRule: removeABRCustomRule,\n removeAllABRCustomRule: removeAllABRCustomRule,\n setBandwidthSafetyFactor: setBandwidthSafetyFactor,\n getBandwidthSafetyFactor: getBandwidthSafetyFactor,\n getAverageThroughput: getAverageThroughput,\n setAbandonLoadTimeout: setAbandonLoadTimeout,\n retrieveManifest: retrieveManifest,\n addUTCTimingSource: addUTCTimingSource,\n removeUTCTimingSource: removeUTCTimingSource,\n clearDefaultUTCTimingSources: clearDefaultUTCTimingSources,\n restoreDefaultUTCTimingSources: restoreDefaultUTCTimingSources,\n setBufferToKeep: setBufferToKeep,\n setBufferPruningInterval: setBufferPruningInterval,\n setStableBufferTime: setStableBufferTime,\n getStableBufferTime: getStableBufferTime,\n setBufferTimeAtTopQuality: setBufferTimeAtTopQuality,\n getBufferTimeAtTopQuality: getBufferTimeAtTopQuality,\n setBufferTimeAtTopQualityLongForm: setBufferTimeAtTopQualityLongForm,\n getBufferTimeAtTopQualityLongForm: getBufferTimeAtTopQualityLongForm,\n setFragmentLoaderRetryAttempts: setFragmentLoaderRetryAttempts,\n setFragmentLoaderRetryInterval: setFragmentLoaderRetryInterval,\n setManifestLoaderRetryAttempts: setManifestLoaderRetryAttempts,\n setManifestLoaderRetryInterval: setManifestLoaderRetryInterval,\n setXHRWithCredentials: setXHRWithCredentials,\n setXHRWithCredentialsForType: setXHRWithCredentialsForType,\n getXHRWithCredentialsForType: getXHRWithCredentialsForType,\n setLongFormContentDurationThreshold: setLongFormContentDurationThreshold,\n setRichBufferThreshold: setRichBufferThreshold,\n getProtectionController: getProtectionController,\n attachProtectionController: attachProtectionController,\n setProtectionData: setProtectionData,\n enableManifestDateHeaderTimeSource: enableManifestDateHeaderTimeSource,\n displayCaptionsOnTop: displayCaptionsOnTop,\n attachVideoContainer: attachVideoContainer,\n attachTTMLRenderingDiv: attachTTMLRenderingDiv,\n getCurrentTextTrackIndex: getCurrentTextTrackIndex,\n getUseDeadTimeLatencyForAbr: getUseDeadTimeLatencyForAbr,\n setUseDeadTimeLatencyForAbr: setUseDeadTimeLatencyForAbr,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nMediaPlayer.__dashjs_factory_name = 'MediaPlayer';\nlet factory = FactoryMaker.getClassFactory(MediaPlayer);\nfactory.events = MediaPlayerEvents;\nFactoryMaker.updateClassFactory(MediaPlayer.__dashjs_factory_name, factory);\n\nexport default factory;\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventsBase from '../core/events/EventsBase';\n/**\n * @class\n *\n */\nclass MediaPlayerEvents extends EventsBase {\n\n /**\n * @description Public facing external events to be used when developing a player that implements dash.js.\n */\n constructor() {\n super();\n /**\n * Triggered when playback will not start yet\n * as the MPD's availabilityStartTime is in the future.\n * Check delay property in payload to determine time before playback will start.\n */\n this.AST_IN_FUTURE = 'astInFuture';\n /**\n * Triggered when the video element's buffer state changes to stalled.\n * Check mediaType in payload to determine type (Video, Audio, FragmentedText).\n * @event MediaPlayerEvents#BUFFER_EMPTY\n */\n this.BUFFER_EMPTY = 'bufferStalled';\n /**\n * Triggered when the video element's buffer state changes to loaded.\n * Check mediaType in payload to determine type (Video, Audio, FragmentedText).\n * @event MediaPlayerEvents#BUFFER_LOADED\n */\n this.BUFFER_LOADED = 'bufferLoaded';\n\n /**\n * Triggered when the video element's buffer state changes, either stalled or loaded. Check payload for state.\n * @event MediaPlayerEvents#BUFFER_LEVEL_STATE_CHANGED\n */\n this.BUFFER_LEVEL_STATE_CHANGED = 'bufferStateChanged';\n\n /**\n * Triggered when there is an error from the element or MSE source buffer.\n * @event MediaPlayerEvents#ERROR\n */\n this.ERROR = 'error';\n\n /**\n * Triggered when a fragment download has completed.\n * @event MediaPlayerEvents#FRAGMENT_LOADING_COMPLETED\n */\n this.FRAGMENT_LOADING_COMPLETED = 'fragmentLoadingCompleted';\n /**\n * Triggered when a fragment download has started.\n * @event MediaPlayerEvents#FRAGMENT_LOADING_STARTED\n */\n this.FRAGMENT_LOADING_STARTED = 'fragmentLoadingStarted';\n /**\n * Triggered when a fragment download is abandoned due to detection of slow download base on the ABR abandon rule..\n * @event MediaPlayerEvents#FRAGMENT_LOADING_ABANDONED\n */\n this.FRAGMENT_LOADING_ABANDONED = 'fragmentLoadingAbandoned';\n /**\n * Triggered when {@link module:Debug} log method is called.\n * @event MediaPlayerEvents#LOG\n */\n this.LOG = 'log';\n //TODO refactor with internal event\n /**\n * Triggered when the manifest load is complete\n * @event MediaPlayerEvents#MANIFEST_LOADED\n */\n this.MANIFEST_LOADED = 'manifestLoaded';\n /**\n * Triggered anytime there is a change to the overall metrics.\n * @event MediaPlayerEvents#METRICS_CHANGED\n */\n this.METRICS_CHANGED = 'metricsChanged';\n /**\n * Triggered when an individual metric is added, updated or cleared.\n * @event MediaPlayerEvents#METRIC_CHANGED\n */\n this.METRIC_CHANGED = 'metricChanged';\n /**\n * Triggered every time a new metric is added.\n * @event MediaPlayerEvents#METRIC_ADDED\n */\n this.METRIC_ADDED = 'metricAdded';\n /**\n * Triggered every time a metric is updated.\n * @event MediaPlayerEvents#METRIC_UPDATED\n */\n this.METRIC_UPDATED = 'metricUpdated';\n /**\n * Triggered at the stream end of a period.\n * @event MediaPlayerEvents#PERIOD_SWITCH_COMPLETED\n */\n this.PERIOD_SWITCH_COMPLETED = 'periodSwitchCompleted';\n /**\n * Triggered when a new period starts.\n * @event MediaPlayerEvents#PERIOD_SWITCH_STARTED\n */\n this.PERIOD_SWITCH_STARTED = 'periodSwitchStarted';\n\n /**\n * Triggered when an ABR up /down switch is initialed; either by user in manual mode or auto mode via ABR rules.\n * @event MediaPlayerEvents#QUALITY_CHANGE_REQUESTED\n */\n this.QUALITY_CHANGE_REQUESTED = 'qualityChangeRequested';\n\n /**\n * Triggered when the new ABR quality is being rendered on-screen.\n * @event MediaPlayerEvents#QUALITY_CHANGE_RENDERED\n */\n this.QUALITY_CHANGE_RENDERED = 'qualityChangeRendered';\n\n /**\n * Triggered when the stream is setup and ready.\n * @event MediaPlayerEvents#STREAM_INITIALIZED\n */\n this.STREAM_INITIALIZED = 'streamInitialized';\n\n /**\n * Triggered when the player has been reset.\n * @event MediaPlayerEvents#STREAM_TEARDOWN_COMPLETE\n */\n this.STREAM_TEARDOWN_COMPLETE = 'streamTeardownComplete';\n\n /**\n * Triggered once all text tracks detected in the MPD are added to the video element.\n * @event MediaPlayerEvents#TEXT_TRACKS_ADDED\n */\n this.TEXT_TRACKS_ADDED = 'allTextTracksAdded';\n /**\n * Triggered when a text track is added to the video element's TextTrackList\n * @event MediaPlayerEvents#TEXT_TRACK_ADDED\n */\n this.TEXT_TRACK_ADDED = 'textTrackAdded';\n\n /**\n * Sent when enough data is available that the media can be played,\n * at least for a couple of frames. This corresponds to the\n * HAVE_ENOUGH_DATA readyState.\n * @event MediaPlayerEvents#CAN_PLAY\n */\n this.CAN_PLAY = 'canPlay';\n\n /**\n * Sent when playback completes.\n * @event MediaPlayerEvents#PLAYBACK_ENDED\n */\n this.PLAYBACK_ENDED = 'playbackEnded';\n\n /**\n * Sent when an error occurs. The element's error\n * attribute contains more information.\n * @event MediaPlayerEvents#PLAYBACK_ERROR\n */\n this.PLAYBACK_ERROR = 'playbackError';\n /**\n * Sent when playback is not allowed (for example if user gesture is needed).\n * @event MediaPlayerEvents#PLAYBACK_NOT_ALLOWED\n */\n this.PLAYBACK_NOT_ALLOWED = 'playbackNotAllowed';\n /**\n * The media's metadata has finished loading; all attributes now\n * contain as much useful information as they're going to.\n * @event MediaPlayerEvents#PLAYBACK_METADATA_LOADED\n */\n this.PLAYBACK_METADATA_LOADED = 'playbackMetaDataLoaded';\n /**\n * Sent when playback is paused.\n * @event MediaPlayerEvents#PLAYBACK_PAUSED\n */\n this.PLAYBACK_PAUSED = 'playbackPaused';\n /**\n * Sent when the media begins to play (either for the first time, after having been paused,\n * or after ending and then restarting).\n *\n * @event MediaPlayerEvents#PLAYBACK_PLAYING\n */\n this.PLAYBACK_PLAYING = 'playbackPlaying';\n /**\n * Sent periodically to inform interested parties of progress downloading\n * the media. Information about the current amount of the media that has\n * been downloaded is available in the media element's buffered attribute.\n * @event MediaPlayerEvents#PLAYBACK_PROGRESS\n */\n this.PLAYBACK_PROGRESS = 'playbackProgress';\n /**\n * Sent when the playback speed changes.\n * @event MediaPlayerEvents#PLAYBACK_RATE_CHANGED\n */\n this.PLAYBACK_RATE_CHANGED = 'playbackRateChanged';\n /**\n * Sent when a seek operation completes.\n * @event MediaPlayerEvents#PLAYBACK_SEEKED\n */\n this.PLAYBACK_SEEKED = 'playbackSeeked';\n /**\n * Sent when a seek operation begins.\n * @event MediaPlayerEvents#PLAYBACK_SEEKING\n */\n this.PLAYBACK_SEEKING = 'playbackSeeking';\n\n /**\n * Sent when a seek operation has been asked.\n * @event MediaPlayerEvents#PLAYBACK_SEEK_ASKED\n */\n this.PLAYBACK_SEEK_ASKED = 'playbackSeekAsked';\n\n /**\n * Sent when playback of the media starts after having been paused;\n * that is, when playback is resumed after a prior pause event.\n *\n * @event MediaPlayerEvents#PLAYBACK_STARTED\n */\n this.PLAYBACK_STARTED = 'playbackStarted';\n /**\n * The time indicated by the element's currentTime attribute has changed.\n * @event MediaPlayerEvents#PLAYBACK_TIME_UPDATED\n */\n this.PLAYBACK_TIME_UPDATED = 'playbackTimeUpdated';\n }\n}\n\nlet mediaPlayerEvents = new MediaPlayerEvents();\nexport default mediaPlayerEvents;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from './constants/Constants';\nimport MetricsConstants from './constants/MetricsConstants';\nimport UTCTiming from '../dash/vo/UTCTiming';\nimport PlaybackController from './controllers/PlaybackController';\nimport StreamController from './controllers/StreamController';\nimport MediaController from './controllers/MediaController';\nimport ManifestLoader from './ManifestLoader';\nimport ErrorHandler from './utils/ErrorHandler';\nimport Capabilities from './utils/Capabilities';\nimport TextTracks from './text/TextTracks';\nimport RequestModifier from './utils/RequestModifier';\nimport TextController from './text/TextController';\nimport URIQueryAndFragmentModel from './models/URIQueryAndFragmentModel';\nimport ManifestModel from './models/ManifestModel';\nimport MediaPlayerModel from './models/MediaPlayerModel';\nimport MetricsModel from './models/MetricsModel';\nimport AbrController from './controllers/AbrController';\nimport SourceBufferController from './controllers/SourceBufferController';\nimport VideoModel from './models/VideoModel';\nimport DOMStorage from './utils/DOMStorage';\nimport Debug from './../core/Debug';\nimport EventBus from './../core/EventBus';\nimport Events from './../core/events/Events';\nimport MediaPlayerEvents from './MediaPlayerEvents';\nimport FactoryMaker from '../core/FactoryMaker';\nimport {\n getVersionString\n}\nfrom './../core/Version';\n\n//Dash\nimport DashAdapter from '../dash/DashAdapter';\nimport DashManifestModel from '../dash/models/DashManifestModel';\nimport DashMetrics from '../dash/DashMetrics';\nimport TimelineConverter from '../dash/utils/TimelineConverter';\nimport {\n HTTPRequest\n} from './vo/metrics/HTTPRequest';\nimport BASE64 from '../../externals/base64';\nimport ISOBoxer from 'codem-isoboxer';\n\n/**\n * @module MediaPlayer\n * @description The MediaPlayer is the primary dash.js Module and a Facade to build your player around.\n * It will allow you access to all the important dash.js properties/methods via the public API and all the\n * events to build a robust DASH media player.\n */\nfunction MediaPlayer() {\n\n const PLAYBACK_NOT_INITIALIZED_ERROR = 'You must first call initialize() to init playback before calling this method';\n const ELEMENT_NOT_ATTACHED_ERROR = 'You must first call attachView() to set the video element before calling this method';\n const SOURCE_NOT_ATTACHED_ERROR = 'You must first call attachSource() with a valid source before calling this method';\n const MEDIA_PLAYER_NOT_INITIALIZED_ERROR = 'MediaPlayer not initialized!';\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n let debug = Debug(context).getInstance();\n let log = debug.log;\n\n let instance,\n source,\n protectionData,\n mediaPlayerInitialized,\n playbackInitialized,\n autoPlay,\n abrController,\n timelineConverter,\n mediaController,\n protectionController,\n metricsReportingController,\n mssHandler,\n adapter,\n metricsModel,\n mediaPlayerModel,\n errHandler,\n capabilities,\n streamController,\n playbackController,\n dashMetrics,\n dashManifestModel,\n manifestModel,\n videoModel,\n textController,\n domStorage;\n\n /*\n ---------------------------------------------------------------------------\n\n INIT FUNCTIONS\n\n ---------------------------------------------------------------------------\n */\n function setup() {\n mediaPlayerInitialized = false;\n playbackInitialized = false;\n autoPlay = true;\n protectionController = null;\n protectionData = null;\n adapter = null;\n Events.extend(MediaPlayerEvents);\n mediaPlayerModel = MediaPlayerModel(context).getInstance();\n }\n\n /**\n * Configure media player with customs controllers. Helpful for tests\n *\n * @param {object=} config controllers configuration\n * @memberof module:MediaPlayer\n * @instance\n */\n function setConfig(config) {\n if (!config) {\n return;\n }\n if (config.capabilities) {\n capabilities = config.capabilities;\n }\n if (config.streamController) {\n streamController = config.streamController;\n }\n if (config.playbackController) {\n playbackController = config.playbackController;\n }\n if (config.mediaPlayerModel) {\n mediaPlayerModel = config.mediaPlayerModel;\n }\n if (config.abrController) {\n abrController = config.abrController;\n }\n if (config.mediaController) {\n mediaController = config.mediaController;\n }\n }\n\n /**\n * Upon creating the MediaPlayer you must call initialize before you call anything else.\n * There is one exception to this rule. It is crucial to call {@link module:MediaPlayer#extend extend()}\n * with all your extensions prior to calling initialize.\n *\n * ALL arguments are optional and there are individual methods to set each argument later on.\n * The args in this method are just for convenience and should only be used for a simple player setup.\n *\n * @param {HTML5MediaElement=} view - Optional arg to set the video element. {@link module:MediaPlayer#attachView attachView()}\n * @param {string=} source - Optional arg to set the media source. {@link module:MediaPlayer#attachSource attachSource()}\n * @param {boolean=} AutoPlay - Optional arg to set auto play. {@link module:MediaPlayer#setAutoPlay setAutoPlay()}\n * @see {@link module:MediaPlayer#attachView attachView()}\n * @see {@link module:MediaPlayer#attachSource attachSource()}\n * @see {@link module:MediaPlayer#setAutoPlay setAutoPlay()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function initialize(view, source, AutoPlay) {\n\n if (!capabilities) {\n capabilities = Capabilities(context).getInstance();\n }\n errHandler = ErrorHandler(context).getInstance();\n\n if (!capabilities.supportsMediaSource()) {\n errHandler.capabilityError('mediasource');\n return;\n }\n\n if (mediaPlayerInitialized) return;\n mediaPlayerInitialized = true;\n\n // init some controllers and models\n timelineConverter = TimelineConverter(context).getInstance();\n if (!abrController) {\n abrController = AbrController(context).getInstance();\n }\n\n if (!playbackController) {\n playbackController = PlaybackController(context).getInstance();\n }\n\n if (!mediaController) {\n mediaController = MediaController(context).getInstance();\n }\n\n adapter = DashAdapter(context).getInstance();\n dashManifestModel = DashManifestModel(context).getInstance({\n mediaController: mediaController,\n timelineConverter: timelineConverter,\n adapter: adapter\n });\n manifestModel = ManifestModel(context).getInstance();\n dashMetrics = DashMetrics(context).getInstance({\n manifestModel: manifestModel,\n dashManifestModel: dashManifestModel\n });\n metricsModel = MetricsModel(context).getInstance();\n\n textController = TextController(context).getInstance();\n domStorage = DOMStorage(context).getInstance({\n mediaPlayerModel: mediaPlayerModel\n });\n\n adapter.setConfig({\n dashManifestModel: dashManifestModel\n });\n metricsModel.setConfig({\n adapter: adapter\n });\n\n restoreDefaultUTCTimingSources();\n setAutoPlay(AutoPlay !== undefined ? AutoPlay : true);\n\n if (view) {\n attachView(view);\n }\n\n if (source) {\n attachSource(source);\n }\n\n log('[dash.js ' + getVersion() + '] ' + 'MediaPlayer has been initialized');\n }\n\n /**\n * Sets the MPD source and the video element to null. You can also reset the MediaPlayer by\n * calling attachSource with a new source file.\n *\n * Calling this method is all that is necessary to destroy a MediaPlayer instance.\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function reset() {\n attachSource(null);\n attachView(null);\n protectionData = null;\n if (protectionController) {\n protectionController.reset();\n protectionController = null;\n }\n if (metricsReportingController) {\n metricsReportingController.reset();\n metricsReportingController = null;\n }\n }\n\n /**\n * The ready state of the MediaPlayer based on both the video element and MPD source being defined.\n *\n * @returns {boolean} The current ready state of the MediaPlayer\n * @see {@link module:MediaPlayer#attachView attachView()}\n * @see {@link module:MediaPlayer#attachSource attachSource()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function isReady() {\n return (!!videoModel && !!source);\n }\n\n /**\n * Use the on method to listen for public events found in MediaPlayer.events. {@link MediaPlayerEvents}\n *\n * @param {string} type - {@link MediaPlayerEvents}\n * @param {Function} listener - callback method when the event fires.\n * @param {Object} scope - context of the listener so it can be removed properly.\n * @memberof module:MediaPlayer\n * @instance\n */\n function on(type, listener, scope) {\n eventBus.on(type, listener, scope);\n }\n\n /**\n * Use the off method to remove listeners for public events found in MediaPlayer.events. {@link MediaPlayerEvents}\n *\n * @param {string} type - {@link MediaPlayerEvents}\n * @param {Function} listener - callback method when the event fires.\n * @param {Object} scope - context of the listener so it can be removed properly.\n * @memberof module:MediaPlayer\n * @instance\n */\n function off(type, listener, scope) {\n eventBus.off(type, listener, scope);\n }\n\n /**\n * Current version of Dash.js\n * @returns {string} the current dash.js version string.\n * @memberof module:MediaPlayer\n * @instance\n */\n function getVersion() {\n return getVersionString();\n }\n\n /**\n * Use this method to access the dash.js logging class.\n *\n * @returns {Debug}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getDebug() {\n return debug;\n }\n\n\n /*\n ---------------------------------------------------------------------------\n\n PLAYBACK FUNCTIONS\n\n ---------------------------------------------------------------------------\n */\n /**\n * The play method initiates playback of the media defined by the {@link module:MediaPlayer#attachSource attachSource()} method.\n * This method will call play on the native Video Element.\n *\n * @see {@link module:MediaPlayer#attachSource attachSource()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function play() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n if (!autoPlay || (isPaused() && playbackInitialized)) {\n playbackController.play();\n }\n }\n\n\n /**\n * This method will call pause on the native Video Element.\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function pause() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n playbackController.pause();\n }\n\n /**\n * Returns a Boolean that indicates whether the Video Element is paused.\n * @return {boolean}\n * @memberof module:MediaPlayer\n * @instance\n */\n function isPaused() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return playbackController.isPaused();\n }\n\n /**\n * Sets the currentTime property of the attached video element. If it is a live stream with a\n * timeShiftBufferLength, then the DVR window offset will be automatically calculated.\n *\n * @param {number} value - A relative time, in seconds, based on the return value of the {@link module:MediaPlayer#duration duration()} method is expected\n * @see {@link module:MediaPlayer#getDVRSeekOffset getDVRSeekOffset()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function seek(value) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n let s = playbackController.getIsDynamic() ? getDVRSeekOffset(value) : value;\n playbackController.seek(s);\n }\n\n /**\n * Returns a Boolean that indicates whether the media is in the process of seeking to a new position.\n * @return {boolean}\n * @memberof module:MediaPlayer\n * @instance\n */\n function isSeeking() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return playbackController.isSeeking();\n }\n\n /**\n * Returns a Boolean that indicates whether the media is in the process of dynamic.\n * @return {boolean}\n * @memberof module:MediaPlayer\n * @instance\n */\n function isDynamic() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return playbackController.getIsDynamic();\n }\n\n /**\n * Use this method to set the native Video Element's playback rate.\n * @param {number} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setPlaybackRate(value) {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n getVideoElement().playbackRate = value;\n }\n\n /**\n * Returns the current playback rate.\n * @returns {number}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getPlaybackRate() {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n return getVideoElement().playbackRate;\n }\n\n /**\n * Use this method to set the native Video Element's muted state. Takes a Boolean that determines whether audio is muted. true if the audio is muted and false otherwise.\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setMute(value) {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n getVideoElement().muted = value;\n }\n\n /**\n * A Boolean that determines whether audio is muted.\n * @returns {boolean}\n * @memberof module:MediaPlayer\n * @instance\n */\n function isMuted() {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n return getVideoElement().muted;\n }\n\n /**\n * A double indicating the audio volume, from 0.0 (silent) to 1.0 (loudest).\n * @param {number} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setVolume(value) {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n getVideoElement().volume = value;\n }\n\n /**\n * Returns the current audio volume, from 0.0 (silent) to 1.0 (loudest).\n * @returns {number}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getVolume() {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n return getVideoElement().volume;\n }\n\n /**\n * The length of the buffer for a given media type, in seconds. Valid media\n * types are \"video\", \"audio\" and \"fragmentedText\". If no type is passed\n * in, then the minimum of video, audio and fragmentedText buffer length is\n * returned. NaN is returned if an invalid type is requested, the\n * presentation does not contain that type, or if no arguments are passed\n * and the presentation does not include any adaption sets of valid media\n * type.\n *\n * @param {string} type - the media type of the buffer\n * @returns {number} The length of the buffer for the given media type, in\n * seconds, or NaN\n * @memberof module:MediaPlayer\n * @instance\n */\n function getBufferLength(type) {\n const types = [Constants.VIDEO, Constants.AUDIO, Constants.FRAGMENTED_TEXT];\n if (!type) {\n const buffer = types.map(\n t => getTracksFor(t).length > 0 ? getDashMetrics().getCurrentBufferLevel(getMetricsFor(t)) : Number.MAX_VALUE\n ).reduce(\n (p, c) => Math.min(p, c)\n );\n return buffer === Number.MAX_VALUE ? NaN : buffer;\n } else {\n if (types.indexOf(type) !== -1) {\n const buffer = getDashMetrics().getCurrentBufferLevel(getMetricsFor(type));\n return buffer ? buffer : NaN;\n } else {\n log('Warning - getBufferLength requested for invalid type');\n return NaN;\n }\n }\n }\n\n /**\n * The timeShiftBufferLength (DVR Window), in seconds.\n *\n * @returns {number} The window of allowable play time behind the live point of a live stream.\n * @memberof module:MediaPlayer\n * @instance\n */\n function getDVRWindowSize() {\n let metric = getDVRInfoMetric();\n if (!metric) {\n return 0;\n }\n return metric.manifestInfo.DVRWindowSize;\n }\n\n /**\n * This method should only be used with a live stream that has a valid timeShiftBufferLength (DVR Window).\n * NOTE - If you do not need the raw offset value (i.e. media analytics, tracking, etc) consider using the {@link module:MediaPlayer#seek seek()} method\n * which will calculate this value for you and set the video element's currentTime property all in one simple call.\n *\n * @param {number} value - A relative time, in seconds, based on the return value of the {@link module:MediaPlayer#duration duration()} method is expected.\n * @returns {number} A value that is relative the available range within the timeShiftBufferLength (DVR Window).\n * @see {@link module:MediaPlayer#seek seek()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getDVRSeekOffset(value) {\n let metric = getDVRInfoMetric();\n let liveDelay = playbackController.getLiveDelay();\n if (!metric) {\n return 0;\n }\n\n let val = metric.range.start + value;\n\n if (val > (metric.range.end - liveDelay)) {\n val = metric.range.end - liveDelay;\n }\n\n return val;\n }\n\n /**\n * Current time of the playhead, in seconds.\n *\n * If called with no arguments then the returned time value is time elapsed since the start point of the first stream, or if it is a live stream, then the time will be based on the return value of the {@link module:MediaPlayer#duration duration()} method.\n * However if a stream ID is supplied then time is relative to the start of that stream, or is null if there is no such stream id in the manifest.\n *\n * @param {string} streamId - The ID of a stream that the returned playhead time must be relative to the start of. If undefined, then playhead time is relative to the first stream.\n * @returns {number} The current playhead time of the media, or null.\n * @memberof module:MediaPlayer\n * @instance\n */\n function time(streamId) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n let t = getVideoElement().currentTime;\n\n if (streamId !== undefined) {\n t = streamController.getTimeRelativeToStreamId(t, streamId);\n\n } else if (playbackController.getIsDynamic()) {\n let metric = getDVRInfoMetric();\n t = (metric === null) ? 0 : duration() - (metric.range.end - metric.time);\n }\n\n return t;\n }\n\n /**\n * Duration of the media's playback, in seconds.\n *\n * @returns {number} The current duration of the media.\n * @memberof module:MediaPlayer\n * @instance\n */\n function duration() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n let d = getVideoElement().duration;\n\n if (playbackController.getIsDynamic()) {\n\n let metric = getDVRInfoMetric();\n let range;\n\n if (!metric) {\n return 0;\n }\n\n range = metric.range.end - metric.range.start;\n d = range < metric.manifestInfo.DVRWindowSize ? range : metric.manifestInfo.DVRWindowSize;\n }\n return d;\n }\n\n /**\n * Use this method to get the current playhead time as an absolute value, the time in seconds since midnight UTC, Jan 1 1970.\n * Note - this property only has meaning for live streams. If called before play() has begun, it will return a value of NaN.\n *\n * @returns {number} The current playhead time as UTC timestamp.\n * @memberof module:MediaPlayer\n * @instance\n */\n function timeAsUTC() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n if (time() < 0) {\n return NaN;\n }\n return getAsUTC(time());\n }\n\n /**\n * Use this method to get the current duration as an absolute value, the time in seconds since midnight UTC, Jan 1 1970.\n * Note - this property only has meaning for live streams.\n *\n * @returns {number} The current duration as UTC timestamp.\n * @memberof module:MediaPlayer\n * @instance\n */\n function durationAsUTC() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return getAsUTC(duration());\n }\n\n /*\n ---------------------------------------------------------------------------\n\n AUTO BITRATE\n\n ---------------------------------------------------------------------------\n */\n /**\n * When switching multi-bitrate content (auto or manual mode) this property specifies the maximum bitrate allowed.\n * If you set this property to a value lower than that currently playing, the switching engine will switch down to\n * satisfy this requirement. If you set it to a value that is lower than the lowest bitrate, it will still play\n * that lowest bitrate.\n *\n * You can set or remove this bitrate cap at anytime before or during playback. To clear this setting you must use the API\n * and set the value param to NaN.\n *\n * This feature is typically used to reserve higher bitrates for playback only when the player is in large or full-screen format.\n *\n * @param {string} type - 'video' or 'audio' are the type options.\n * @param {number} value - Value in kbps representing the maximum bitrate allowed.\n * @memberof module:MediaPlayer\n * @instance\n */\n function setMaxAllowedBitrateFor(type, value) {\n abrController.setMaxAllowedBitrateFor(type, value);\n }\n\n /**\n * When switching multi-bitrate content (auto or manual mode) this property specifies the minimum bitrate allowed.\n * If you set this property to a value higher than that currently playing, the switching engine will switch up to\n * satisfy this requirement. If you set it to a value that is lower than the lowest bitrate, it will still play\n * that lowest bitrate.\n *\n * You can set or remove this bitrate limit at anytime before or during playback. To clear this setting you must use the API\n * and set the value param to NaN.\n *\n * This feature is used to force higher quality playback.\n *\n * @param {string} type - 'video' or 'audio' are the type options.\n * @param {number} value - Value in kbps representing the minimum bitrate allowed.\n * @memberof module:MediaPlayer\n * @instance\n */\n function setMinAllowedBitrateFor(type, value) {\n abrController.setMinAllowedBitrateFor(type, value);\n }\n\n /**\n * @param {string} type - 'video' or 'audio' are the type options.\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#setMaxAllowedBitrateFor setMaxAllowedBitrateFor()}\n * @instance\n */\n function getMaxAllowedBitrateFor(type) {\n return abrController.getMaxAllowedBitrateFor(type);\n }\n\n /**\n * @param {string} type - 'video' or 'audio' are the type options.\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#setMinAllowedBitrateFor setMinAllowedBitrateFor()}\n * @instance\n */\n function getMinAllowedBitrateFor(type) {\n return abrController.getMinAllowedBitrateFor(type);\n }\n\n /**\n * When switching multi-bitrate content (auto or manual mode) this property specifies the maximum representation allowed,\n * as a proportion of the size of the representation set.\n *\n * You can set or remove this cap at anytime before or during playback. To clear this setting you must use the API\n * and set the value param to NaN.\n *\n * If both this and maxAllowedBitrate are defined, maxAllowedBitrate is evaluated first, then maxAllowedRepresentation,\n * i.e. the lowest value from executing these rules is used.\n *\n * This feature is typically used to reserve higher representations for playback only when connected over a fast connection.\n *\n * @param {string} type - 'video' or 'audio' are the type options.\n * @param {number} value - number between 0 and 1, where 1 is allow all representations, and 0 is allow only the lowest.\n * @memberof module:MediaPlayer\n * @instance\n */\n function setMaxAllowedRepresentationRatioFor(type, value) {\n abrController.setMaxAllowedRepresentationRatioFor(type, value);\n }\n\n /**\n * @param {string} type - 'video' or 'audio' are the type options.\n * @returns {number} The current representation ratio cap.\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#setMaxAllowedRepresentationRatioFor setMaxAllowedRepresentationRatioFor()}\n * @instance\n */\n function getMaxAllowedRepresentationRatioFor(type) {\n return abrController.getMaxAllowedRepresentationRatioFor(type);\n }\n\n /**\n * Gets the current download quality for media type. The ABR rules update this value before every new download\n * unless setAutoSwitchQualityFor(type, false) is called.\n *\n * @param {string} type - 'video' or 'audio'\n * @returns {number} the quality index, 0 corresponding to the lowest bitrate\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#setAutoSwitchQualityFor setAutoSwitchQualityFor()}\n * @see {@link module:MediaPlayer#setQualityFor setQualityFor()}\n * @instance\n */\n function getQualityFor(type) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return abrController.getQualityFor(type, streamController.getActiveStreamInfo());\n }\n\n /**\n * Sets the current quality for media type instead of letting the ABR Heuristics automatically selecting it.\n * This value will be overwritten by the ABR rules unless setAutoSwitchQualityFor(type, false) is called.\n *\n * @param {string} type - 'video' or 'audio'\n * @param {number} value - the quality index, 0 corresponding to the lowest bitrate\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#setAutoSwitchQualityFor setAutoSwitchQualityFor()}\n * @see {@link module:MediaPlayer#getQualityFor getQualityFor()}\n * @instance\n */\n function setQualityFor(type, value) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n abrController.setPlaybackQuality(type, streamController.getActiveStreamInfo(), value);\n }\n\n /**\n * Update the video element size variables\n * Should be called on window resize (or any other time player is resized). Fullscreen does trigger a window resize event.\n *\n * Once windowResizeEventCalled = true, abrController.checkPortalSize() will use element size variables rather than querying clientWidth every time.\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function updatePortalSize() {\n abrController.setElementSize();\n abrController.setWindowResizeEventCalled(true);\n }\n\n /**\n * @memberof module:MediaPlayer\n * @instance\n */\n function getLimitBitrateByPortal() {\n return abrController.getLimitBitrateByPortal();\n }\n\n /**\n * Sets whether to limit the representation used based on the size of the playback area\n *\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setLimitBitrateByPortal(value) {\n abrController.setLimitBitrateByPortal(value);\n }\n\n /**\n * @memberof module:MediaPlayer\n * @instance\n */\n function getUsePixelRatioInLimitBitrateByPortal() {\n return abrController.getUsePixelRatioInLimitBitrateByPortal();\n }\n\n /**\n * Sets whether to take into account the device's pixel ratio when defining the portal dimensions.\n * Useful on, for example, retina displays.\n *\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n * @default {boolean} false\n */\n function setUsePixelRatioInLimitBitrateByPortal(value) {\n abrController.setUsePixelRatioInLimitBitrateByPortal(value);\n }\n\n /**\n * Use this method to explicitly set the starting bitrate for audio | video\n *\n * @param {string} type\n * @param {number} value - A value of the initial bitrate, kbps\n * @memberof module:MediaPlayer\n * @instance\n */\n function setInitialBitrateFor(type, value) {\n abrController.setInitialBitrateFor(type, value);\n }\n\n /**\n * @param {string} type\n * @returns {number} A value of the initial bitrate, kbps\n * @memberof module:MediaPlayer\n * @instance\n */\n function getInitialBitrateFor(type) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR; //abrController.getInitialBitrateFor is overloaded with ratioDict logic that needs manifest force it to not be callable pre play.\n }\n return abrController.getInitialBitrateFor(type);\n }\n\n /**\n * @param {string} type\n * @param {number} value - A value of the initial Representation Ratio\n * @memberof module:MediaPlayer\n * @instance\n */\n function setInitialRepresentationRatioFor(type, value) {\n abrController.setInitialRepresentationRatioFor(type, value);\n }\n\n /**\n * @param {string} type\n * @returns {number} A value of the initial Representation Ratio\n * @memberof module:MediaPlayer\n * @instance\n */\n function getInitialRepresentationRatioFor(type) {\n return abrController.getInitialRepresentationRatioFor(type);\n }\n\n /**\n * @param {string} type - 'audio' | 'video'\n * @returns {boolean} Current state of adaptive bitrate switching\n * @memberof module:MediaPlayer\n * @instance\n */\n function getAutoSwitchQualityFor(type) {\n return abrController.getAutoSwitchBitrateFor(type);\n }\n\n /**\n * Set to false to switch off adaptive bitrate switching.\n *\n * @param {string} type - 'audio' | 'video'\n * @param {boolean} value\n * @default true\n * @memberof module:MediaPlayer\n * @instance\n */\n function setAutoSwitchQualityFor(type, value) {\n abrController.setAutoSwitchBitrateFor(type, value);\n }\n\n /**\n * Get the value of useDeadTimeLatency in AbrController. @see setUseDeadTimeLatencyForAbr\n *\n * @returns {boolean}\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function getUseDeadTimeLatencyForAbr() {\n return abrController.getUseDeadTimeLatency();\n }\n\n /**\n * Set the value of useDeadTimeLatency in AbrController. If true, only the download\n * portion will be considered part of the download bitrate and latency will be\n * regarded as static. If false, the reciprocal of the whole transfer time will be used.\n * Defaults to true.\n *\n * @param {boolean=} useDeadTimeLatency - True or false flag.\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function setUseDeadTimeLatencyForAbr(useDeadTimeLatency) {\n abrController.setUseDeadTimeLatency(useDeadTimeLatency);\n }\n\n /*\n ---------------------------------------------------------------------------\n\n MEDIA PLAYER CONFIGURATION\n\n ---------------------------------------------------------------------------\n */\n /**\n *

Set to false to prevent stream from auto-playing when the view is attached.

\n *\n * @param {boolean} value\n * @default true\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#attachView attachView()}\n * @instance\n *\n */\n function setAutoPlay(value) {\n autoPlay = value;\n }\n\n /**\n * @returns {boolean} The current autoPlay state.\n * @memberof module:MediaPlayer\n * @instance\n */\n function getAutoPlay() {\n return autoPlay;\n }\n\n /**\n *

Changing this value will lower or increase live stream latency. The detected segment duration will be multiplied by this value\n * to define a time in seconds to delay a live stream from the live edge.

\n *

Lowering this value will lower latency but may decrease the player's ability to build a stable buffer.

\n *\n * @param {number} value - Represents how many segment durations to delay the live stream.\n * @default 4\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#useSuggestedPresentationDelay useSuggestedPresentationDelay()}\n * @instance\n */\n function setLiveDelayFragmentCount(value) {\n mediaPlayerModel.setLiveDelayFragmentCount(value);\n }\n\n /**\n *

Equivalent in seconds of setLiveDelayFragmentCount

\n *

Lowering this value will lower latency but may decrease the player's ability to build a stable buffer.

\n *

This value should be less than the manifest duration by a couple of segment durations to avoid playback issues

\n *

If set, this parameter will take precedence over setLiveDelayFragmentCount and manifest info

\n *\n * @param {number} value - Represents how many seconds to delay the live stream.\n * @default undefined\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#useSuggestedPresentationDelay useSuggestedPresentationDelay()}\n * @instance\n */\n function setLiveDelay(value) {\n mediaPlayerModel.setLiveDelay(value);\n }\n\n /**\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#setLiveDelay setLiveDelay()}\n * @instance\n * @returns {number|undefined} Current live stream delay in seconds when previously set, or `undefined`\n */\n function getLiveDelay() {\n return mediaPlayerModel.getLiveDelay();\n }\n\n /**\n *

Set to true if you would like to override the default live delay and honor the SuggestedPresentationDelay attribute in by the manifest.

\n * @param {boolean} value\n * @default false\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#setLiveDelayFragmentCount setLiveDelayFragmentCount()}\n * @instance\n */\n function useSuggestedPresentationDelay(value) {\n mediaPlayerModel.setUseSuggestedPresentationDelay(value);\n }\n\n /**\n * Set to false if you would like to disable the last known bit rate from being stored during playback and used\n * to set the initial bit rate for subsequent playback within the expiration window.\n *\n * The default expiration is one hour, defined in milliseconds. If expired, the default initial bit rate (closest to 1000 kbps) will be used\n * for that session and a new bit rate will be stored during that session.\n *\n * @param {boolean} enable - Will toggle if feature is enabled. True to enable, False to disable.\n * @param {number=} ttl - (Optional) A value defined in milliseconds representing how long to cache the bit rate for. Time to live.\n * @default enable = True, ttl = 360000 (1 hour)\n * @memberof module:MediaPlayer\n * @instance\n *\n */\n function enableLastBitrateCaching(enable, ttl) {\n mediaPlayerModel.setLastBitrateCachingInfo(enable, ttl);\n }\n\n /**\n * Set to false if you would like to disable the last known lang for audio (or camera angle for video) from being stored during playback and used\n * to set the initial settings for subsequent playback within the expiration window.\n *\n * The default expiration is one hour, defined in milliseconds. If expired, the default settings will be used\n * for that session and a new settings will be stored during that session.\n *\n * @param {boolean} enable - Will toggle if feature is enabled. True to enable, False to disable.\n * @param {number=} [ttl] - (Optional) A value defined in milliseconds representing how long to cache the settings for. Time to live.\n * @default enable = True, ttl = 360000 (1 hour)\n * @memberof module:MediaPlayer\n * @instance\n *\n */\n function enableLastMediaSettingsCaching(enable, ttl) {\n mediaPlayerModel.setLastMediaSettingsCachingInfo(enable, ttl);\n }\n\n /**\n * Set to true if you would like dash.js to keep downloading fragments in the background\n * when the video element is paused.\n *\n * @default true\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setScheduleWhilePaused(value) {\n mediaPlayerModel.setScheduleWhilePaused(value);\n }\n\n /**\n * Returns a boolean of the current state of ScheduleWhilePaused.\n * @returns {boolean}\n * @see {@link module:MediaPlayer#setScheduleWhilePaused setScheduleWhilePaused()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getScheduleWhilePaused() {\n return mediaPlayerModel.getScheduleWhilePaused();\n }\n\n /**\n * When enabled, after an ABR up-switch in quality, instead of requesting and appending the next fragment\n * at the end of the current buffer range it is requested and appended closer to the current time\n * When enabled, The maximum time to render a higher quality is current time + (1.5 * fragment duration).\n *\n * Note, When ABR down-switch is detected, we appended the lower quality at the end of the buffer range to preserve the\n * higher quality media for as long as possible.\n *\n * If enabled, it should be noted there are a few cases when the client will not replace inside buffer range but rather\n * just append at the end. 1. When the buffer level is less than one fragment duration 2. The client\n * is in an Abandonment State due to recent fragment abandonment event.\n *\n * Known issues:\n * 1. In IE11 with auto switching off, if a user switches to a quality they can not download in time the\n * fragment may be appended in the same range as the playhead or even in the past, in IE11 it may cause a stutter\n * or stall in playback.\n *\n *\n * @param {boolean} value\n * @default {boolean} false\n * @memberof module:MediaPlayer\n * @instance\n */\n function setFastSwitchEnabled(value) { //TODO we need to look at track switches for adaptation sets. If always replace it works much like this but clears buffer. Maybe too many ways to do same thing.\n mediaPlayerModel.setFastSwitchEnabled(value);\n }\n\n /**\n * Enabled by default. Will return the current state of Fast Switch.\n * @return {boolean} Returns true if FastSwitch ABR is enabled.\n * @see {@link module:MediaPlayer#setFastSwitchEnabled setFastSwitchEnabled()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getFastSwitchEnabled() {\n return mediaPlayerModel.getFastSwitchEnabled();\n }\n\n /**\n * Obsolete since version 2.6.0.\n * Buffer-occupancy ABR is now switched on and off dynamically.\n * @see {@link module:MediaPlayer#setABRStrategy setABRStrategy()}\n *\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function enableBufferOccupancyABR(value) {\n throw new Error('Calling obsolete function - enabledBufferOccupancyABR(' + value + ') has no effect.');\n }\n\n /**\n * Sets the ABR strategy. Valid strategies are \"abrDynamic\", \"abrBola\" and \"abrThroughput\".\n * The ABR strategy can also be changed during a streaming session.\n * The call has no effect if an invalid method is passed.\n *\n * The BOLA strategy chooses bitrate based on current buffer level, with higher bitrates for higher buffer levels.\n * The Throughput strategy chooses bitrate based on the recent throughput history.\n * The Dynamic strategy switches smoothly between BOLA and Throughput in real time, playing to the strengths of both.\n *\n * @param {string} value\n * @default \"abrDynamic\"\n * @memberof module:MediaPlayer\n * @instance\n */\n function setABRStrategy(value) {\n if (value === Constants.ABR_STRATEGY_DYNAMIC || value === Constants.ABR_STRATEGY_BOLA || value === Constants.ABR_STRATEGY_THROUGHPUT) {\n mediaPlayerModel.setABRStrategy(value);\n } else {\n log('Warning: Ignoring setABRStrategy(' + value + ') - unknown value.');\n }\n }\n\n /**\n * Returns the current ABR strategy being used.\n * @return {string} \"abrDynamic\", \"abrBola\" or \"abrThroughput\"\n * @see {@link module:MediaPlayer#setABRStrategy setABRStrategy()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getABRStrategy() {\n return mediaPlayerModel.getABRStrategy();\n }\n\n /**\n * Enable/disable builtin dashjs ABR rules\n * @param {boolean} value\n * @default true\n * @memberof module:MediaPlayer\n * @instance\n */\n function useDefaultABRRules(value) {\n mediaPlayerModel.setUseDefaultABRRules(value);\n }\n\n /**\n * Add a custom ABR Rule\n * Rule will be apply on next stream if a stream is being played\n *\n * @param {string} type - rule type (one of ['qualitySwitchRules','abandonFragmentRules'])\n * @param {string} rulename - name of rule (used to identify custom rule). If one rule of same name has been added, then existing rule will be updated\n * @param {object} rule - the rule object instance\n * @memberof module:MediaPlayer\n * @instance\n */\n function addABRCustomRule(type, rulename, rule) {\n mediaPlayerModel.addABRCustomRule(type, rulename, rule);\n }\n\n /**\n * Remove a custom ABR Rule\n *\n * @param {string} rulename - name of the rule to be removed\n * @memberof module:MediaPlayer\n * @instance\n */\n function removeABRCustomRule(rulename) {\n mediaPlayerModel.removeABRCustomRule(rulename);\n }\n\n /**\n * Remove all custom rules\n * @memberof module:MediaPlayer\n * @instance\n */\n function removeAllABRCustomRule() {\n mediaPlayerModel.removeAllABRCustomRule();\n }\n\n /**\n * Sets the moving average method used for smoothing throughput estimates. Valid methods are\n * \"slidingWindow\" and \"ewma\". The call has no effect if an invalid method is passed.\n *\n * The sliding window moving average method computes the average throughput using the last four segments downloaded.\n * If the stream is live (as opposed to VOD), then only the last three segments are used.\n * If wide variations in throughput are detected, the number of segments can be dynamically increased to avoid oscillations.\n *\n * The exponentially weighted moving average (EWMA) method computes the average using exponential smoothing.\n * Two separate estimates are maintained, a fast one with a three-second half life and a slow one with an eight-second half life.\n * The throughput estimate at any time is the minimum of the fast and slow estimates.\n * This allows a fast reaction to a bandwidth drop and prevents oscillations on bandwidth spikes.\n *\n * @param {string} value\n * @default {string} 'slidingWindow'\n * @memberof module:MediaPlayer\n * @instance\n */\n function setMovingAverageMethod(value) {\n if (value === Constants.MOVING_AVERAGE_SLIDING_WINDOW || value === Constants.MOVING_AVERAGE_EWMA) {\n mediaPlayerModel.setMovingAverageMethod(value);\n } else {\n log('Warning: Ignoring setMovingAverageMethod(' + value + ') - unknown value.');\n }\n }\n\n /**\n * Return the current moving average method used for smoothing throughput estimates.\n * @return {string} Returns \"slidingWindow\" or \"ewma\".\n * @see {@link module:MediaPlayer#setMovingAverageMethod setMovingAverageMethod()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getMovingAverageMethod() {\n return mediaPlayerModel.getMovingAverageMethod();\n }\n\n /**\n *

Allows you to set a scheme and server source for UTC live edge detection for dynamic streams.\n * If UTCTiming is defined in the manifest, it will take precedence over any time source manually added.

\n *

If you have exposed the Date header, use the method {@link module:MediaPlayer#clearDefaultUTCTimingSources clearDefaultUTCTimingSources()}.\n * This will allow the date header on the manifest to be used instead of a time server

\n * @param {string} schemeIdUri -
    \n *
  • urn:mpeg:dash:utc:http-head:2014
  • \n *
  • urn:mpeg:dash:utc:http-xsdate:2014
  • \n *
  • urn:mpeg:dash:utc:http-iso:2014
  • \n *
  • urn:mpeg:dash:utc:direct:2014
  • \n *
\n *

Some specs referencing early ISO23009-1 drafts incorrectly use\n * 2012 in the URI, rather than 2014. support these for now.

\n *
    \n *
  • urn:mpeg:dash:utc:http-head:2012
  • \n *
  • urn:mpeg:dash:utc:http-xsdate:2012
  • \n *
  • urn:mpeg:dash:utc:http-iso:2012
  • \n *
  • urn:mpeg:dash:utc:direct:2012
  • \n *
\n * @param {string} value - Path to a time source.\n * @default\n *
    \n *
  • schemeIdUri:urn:mpeg:dash:utc:http-xsdate:2014
  • \n *
  • value:http://time.akamai.com
  • \n *
\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#removeUTCTimingSource removeUTCTimingSource()}\n * @instance\n */\n function addUTCTimingSource(schemeIdUri, value) {\n removeUTCTimingSource(schemeIdUri, value); //check if it already exists and remove if so.\n let vo = new UTCTiming();\n vo.schemeIdUri = schemeIdUri;\n vo.value = value;\n mediaPlayerModel.getUTCTimingSources().push(vo);\n }\n\n /**\n *

Allows you to remove a UTC time source. Both schemeIdUri and value need to match the Dash.vo.UTCTiming properties in order for the\n * entry to be removed from the array

\n * @param {string} schemeIdUri - see {@link module:MediaPlayer#addUTCTimingSource addUTCTimingSource()}\n * @param {string} value - see {@link module:MediaPlayer#addUTCTimingSource addUTCTimingSource()}\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#clearDefaultUTCTimingSources clearDefaultUTCTimingSources()}\n * @instance\n */\n function removeUTCTimingSource(schemeIdUri, value) {\n let UTCTimingSources = mediaPlayerModel.getUTCTimingSources();\n UTCTimingSources.forEach(function (obj, idx) {\n if (obj.schemeIdUri === schemeIdUri && obj.value === value) {\n UTCTimingSources.splice(idx, 1);\n }\n });\n }\n\n /**\n *

Allows you to clear the stored array of time sources.

\n *

Example use: If you have exposed the Date header, calling this method\n * will allow the date header on the manifest to be used instead of the time server.

\n *

Example use: Calling this method, assuming there is not an exposed date header on the manifest, will default back\n * to using a binary search to discover the live edge

\n *\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#restoreDefaultUTCTimingSources restoreDefaultUTCTimingSources()}\n * @instance\n */\n function clearDefaultUTCTimingSources() {\n mediaPlayerModel.setUTCTimingSources([]);\n }\n\n /**\n *

Allows you to restore the default time sources after calling {@link module:MediaPlayer#clearDefaultUTCTimingSources clearDefaultUTCTimingSources()}

\n *\n * @default\n *
    \n *
  • schemeIdUri:urn:mpeg:dash:utc:http-xsdate:2014
  • \n *
  • value:http://time.akamai.com
  • \n *
\n *\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#addUTCTimingSource addUTCTimingSource()}\n * @instance\n */\n function restoreDefaultUTCTimingSources() {\n addUTCTimingSource(MediaPlayerModel.DEFAULT_UTC_TIMING_SOURCE.scheme, MediaPlayerModel.DEFAULT_UTC_TIMING_SOURCE.value);\n }\n\n\n /**\n *

Allows you to enable the use of the Date Header, if exposed with CORS, as a timing source for live edge detection. The\n * use of the date header will happen only after the other timing source that take precedence fail or are omitted as described.\n * {@link module:MediaPlayer#clearDefaultUTCTimingSources clearDefaultUTCTimingSources()}

\n *\n * @param {boolean} value - true to enable\n * @default {boolean} True\n * @memberof module:MediaPlayer\n * @see {@link module:MediaPlayer#addUTCTimingSource addUTCTimingSource()}\n * @instance\n */\n function enableManifestDateHeaderTimeSource(value) {\n mediaPlayerModel.setUseManifestDateHeaderTimeSource(value);\n }\n\n /**\n * This value influences the buffer pruning logic.\n * Allows you to modify the buffer that is kept in source buffer in seconds.\n * 0|-----------bufferToPrune-----------|-----bufferToKeep-----|currentTime|\n *\n * @default 30 seconds\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setBufferToKeep(value) {\n mediaPlayerModel.setBufferToKeep(value);\n }\n\n /**\n * This value influences the buffer pruning logic.\n * Allows you to modify the interval of pruning buffer in seconds.\n *\n * @default 30 seconds\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setBufferPruningInterval(value) {\n mediaPlayerModel.setBufferPruningInterval(value);\n }\n\n /**\n * The time that the internal buffer target will be set to post startup/seeks (NOT top quality).\n *\n * When the time is set higher than the default you will have to wait longer\n * to see automatic bitrate switches but will have a larger buffer which\n * will increase stability.\n *\n * @default 12 seconds.\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setStableBufferTime(value) {\n mediaPlayerModel.setStableBufferTime(value);\n }\n\n /**\n * The time that the internal buffer target will be set to post startup/seeks (NOT top quality).\n *\n * When the time is set higher than the default you will have to wait longer\n * to see automatic bitrate switches but will have a larger buffer which\n * will increase stability.\n *\n * @default 12 seconds.\n * @memberof module:MediaPlayer\n * @instance\n */\n function getStableBufferTime() {\n return mediaPlayerModel.getStableBufferTime();\n }\n\n /**\n * The time that the internal buffer target will be set to once playing the top quality.\n * If there are multiple bitrates in your adaptation, and the media is playing at the highest\n * bitrate, then we try to build a larger buffer at the top quality to increase stability\n * and to maintain media quality.\n *\n * @default 30 seconds.\n * @param {int} value\n /**\n * The time that the internal buffer target will be set to once playing the top quality.\n * If there are multiple bitrates in your adaptation, and the media is playing at the highest\n * bitrate, then we try to build a larger buffer at the top quality to increase stability\n * and to maintain media quality.\n *\n * @default 30 seconds.\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setBufferTimeAtTopQuality(value) {\n mediaPlayerModel.setBufferTimeAtTopQuality(value);\n }\n\n /**\n * The time that the internal buffer target will be set to once playing the top quality.\n * If there are multiple bitrates in your adaptation, and the media is playing at the highest\n * bitrate, then we try to build a larger buffer at the top quality to increase stability\n * and to maintain media quality.\n *\n * @default 30 seconds.\n * @memberof module:MediaPlayer\n * @instance\n */\n function getBufferTimeAtTopQuality() {\n return mediaPlayerModel.getBufferTimeAtTopQuality();\n }\n\n /**\n * The time that the internal buffer target will be set to once playing the top quality for long form content.\n *\n * @default 60 seconds.\n * @see {@link module:MediaPlayer#setLongFormContentDurationThreshold setLongFormContentDurationThreshold()}\n * @see {@link module:MediaPlayer#setBufferTimeAtTopQuality setBufferTimeAtTopQuality()}\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setBufferTimeAtTopQualityLongForm(value) {\n mediaPlayerModel.setBufferTimeAtTopQualityLongForm(value);\n }\n\n /**\n * The time that the internal buffer target will be set to once playing the top quality for long form content.\n *\n * @default 60 seconds.\n * @see {@link module:MediaPlayer#setLongFormContentDurationThreshold setLongFormContentDurationThreshold()}\n * @see {@link module:MediaPlayer#setBufferTimeAtTopQuality setBufferTimeAtTopQuality()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getBufferTimeAtTopQualityLongForm() {\n return mediaPlayerModel.getBufferTimeAtTopQualityLongForm();\n }\n\n /**\n * The threshold which defines if the media is considered long form content.\n * This will directly affect the buffer targets when playing back at the top quality.\n *\n * @see {@link module:MediaPlayer#setBufferTimeAtTopQualityLongForm setBufferTimeAtTopQualityLongForm()}\n * @default 600 seconds (10 minutes).\n * @param {number} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setLongFormContentDurationThreshold(value) {\n mediaPlayerModel.setLongFormContentDurationThreshold(value);\n }\n\n /**\n * Obsolete since version 2.6.0.\n * ABR rules now switch from Throughput to Buffer Occupancy mode when there is sufficient buffer.\n * This renders the rich buffer mechanism redundant.\n *\n * @param {number} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setRichBufferThreshold(value) {\n throw new Error('Calling obsolete function - setRichBufferThreshold(' + value + ') has no effect.');\n }\n\n /**\n * A percentage between 0.0 and 1 to reduce the measured throughput calculations.\n * The default is 0.9. The lower the value the more conservative and restricted the\n * measured throughput calculations will be. please use carefully. This will directly\n * affect the ABR logic in dash.js\n *\n * @param {number} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setBandwidthSafetyFactor(value) {\n mediaPlayerModel.setBandwidthSafetyFactor(value);\n }\n\n /**\n * Returns the number of the current BandwidthSafetyFactor\n *\n * @return {number} value\n * @see {@link module:MediaPlayer#setBandwidthSafetyFactor setBandwidthSafetyFactor()}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getBandwidthSafetyFactor() {\n return mediaPlayerModel.getBandwidthSafetyFactor();\n }\n\n /**\n * Returns the average throughput computed in the ABR logic\n *\n * @param {string} type\n * @return {number} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function getAverageThroughput(type) {\n const throughputHistory = abrController.getThroughputHistory();\n return throughputHistory ? throughputHistory.getAverageThroughput(type) : 0;\n }\n\n /**\n * A timeout value in seconds, which during the ABRController will block switch-up events.\n * This will only take effect after an abandoned fragment event occurs.\n *\n * @default 10 seconds\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setAbandonLoadTimeout(value) {\n mediaPlayerModel.setAbandonLoadTimeout(value);\n }\n\n /**\n * Total number of retry attempts that will occur on a fragment load before it fails.\n * Increase this value to a maximum in order to achieve an automatic playback resume\n * in case of completely lost internet connection.\n *\n * @default 3\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setFragmentLoaderRetryAttempts(value) {\n mediaPlayerModel.setFragmentRetryAttempts(value);\n }\n\n /**\n * Time in milliseconds of which to reload a failed fragment load attempt.\n *\n * @default 1000 milliseconds\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setFragmentLoaderRetryInterval(value) {\n mediaPlayerModel.setFragmentRetryInterval(value);\n }\n\n /**\n * Total number of retry attempts that will occur on a manifest load before it fails.\n *\n * @default 4\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setManifestLoaderRetryAttempts(value) {\n mediaPlayerModel.setManifestRetryAttempts(value);\n }\n\n /**\n * Time in milliseconds of which to reload a failed manifest load attempt.\n *\n * @default 1000 milliseconds\n * @param {int} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setManifestLoaderRetryInterval(value) {\n mediaPlayerModel.setManifestRetryInterval(value);\n }\n\n /**\n * Sets whether withCredentials on XHR requests for a particular request\n * type is true or false\n *\n * @default false\n * @param {string} type - one of HTTPRequest.*_TYPE\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setXHRWithCredentialsForType(type, value) {\n mediaPlayerModel.setXHRWithCredentialsForType(type, value);\n }\n\n /**\n * Gets whether withCredentials on XHR requests for a particular request\n * type is true or false\n *\n * @param {string} type - one of HTTPRequest.*_TYPE\n * @return {boolean}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getXHRWithCredentialsForType(type) {\n return mediaPlayerModel.getXHRWithCredentialsForType(type);\n }\n\n /*\n ---------------------------------------------------------------------------\n\n METRICS\n\n ---------------------------------------------------------------------------\n */\n /**\n * Returns the DashMetrics.js Module. You use this Module to get access to all the public metrics\n * stored in dash.js\n *\n * @see {@link module:DashMetrics}\n * @returns {Object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getDashMetrics() {\n return dashMetrics;\n }\n\n /**\n *\n * @param {string} type\n * @returns {Object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getMetricsFor(type) {\n return metricsModel.getReadOnlyMetricsFor(type);\n }\n /*\n ---------------------------------------------------------------------------\n\n TEXT MANAGEMENT\n\n ---------------------------------------------------------------------------\n */\n /**\n * Set default language for text. If default language is not one of text tracks, dash will choose the first one.\n *\n * @param {string} lang - default language\n * @memberof module:MediaPlayer\n * @instance\n */\n function setTextDefaultLanguage(lang) {\n if (textController === undefined) {\n textController = TextController(context).getInstance();\n }\n\n textController.setTextDefaultLanguage(lang);\n }\n\n /**\n * Get default language for text.\n *\n * @return {string} the default language if it has been set using setTextDefaultLanguage\n * @memberof module:MediaPlayer\n * @instance\n */\n function getTextDefaultLanguage() {\n if (textController === undefined) {\n textController = TextController(context).getInstance();\n }\n\n return textController.getTextDefaultLanguage();\n }\n\n /**\n * Set enabled default state.\n * This is used to enable/disable text when a file is loaded.\n * During playback, use enableText to enable text for the file\n *\n * @param {boolean} enable - true to enable text, false otherwise\n * @memberof module:MediaPlayer\n * @instance\n */\n function setTextDefaultEnabled(enable) {\n if (textController === undefined) {\n textController = TextController(context).getInstance();\n }\n\n textController.setTextDefaultEnabled(enable);\n }\n\n /**\n * Get enabled default state.\n *\n * @return {boolean} default enable state\n * @memberof module:MediaPlayer\n * @instance\n */\n function getTextDefaultEnabled() {\n if (textController === undefined) {\n textController = TextController(context).getInstance();\n }\n\n return textController.getTextDefaultEnabled();\n }\n\n /**\n * Enable/disable text\n * When enabling text, dash will choose the previous selected text track\n *\n * @param {boolean} enable - true to enable text, false otherwise (same as setTextTrack(-1))\n * @memberof module:MediaPlayer\n * @instance\n */\n function enableText(enable) {\n if (textController === undefined) {\n textController = TextController(context).getInstance();\n }\n\n textController.enableText(enable);\n }\n\n /**\n * Return if text is enabled\n *\n * @return {boolean} return true if text is enabled, false otherwise\n * @memberof module:MediaPlayer\n * @instance\n */\n function isTextEnabled() {\n if (textController === undefined) {\n textController = TextController(context).getInstance();\n }\n\n return textController.isTextEnabled();\n }\n\n /**\n * Use this method to change the current text track for both external time text files and fragmented text tracks. There is no need to\n * set the track mode on the video object to switch a track when using this method.\n *\n * @param {number} idx - Index of track based on the order of the order the tracks are added Use -1 to disable all tracks. (turn captions off). Use module:MediaPlayer#dashjs.MediaPlayer.events.TEXT_TRACK_ADDED.\n * @see {@link module:MediaPlayer#dashjs.MediaPlayer.events.TEXT_TRACK_ADDED}\n * @memberof module:MediaPlayer\n * @instance\n */\n function setTextTrack(idx) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n\n if (textController === undefined) {\n textController = TextController(context).getInstance();\n }\n\n textController.setTextTrack(idx);\n }\n\n function getCurrentTextTrackIndex() {\n let idx = NaN;\n if (textController) {\n idx = textController.getCurrentTrackIdx();\n }\n return idx;\n }\n\n /**\n * This method serves to control captions z-index value. If 'true' is passed, the captions will have the highest z-index and be\n * displayed on top of other html elements. Default value is 'false' (z-index is not set).\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function displayCaptionsOnTop(value) {\n let textTracks = TextTracks(context).getInstance();\n textTracks.setConfig({\n videoModel: videoModel\n });\n textTracks.initialize();\n textTracks.displayCConTop(value);\n }\n\n /*\n ---------------------------------------------------------------------------\n\n VIDEO ELEMENT MANAGEMENT\n\n ---------------------------------------------------------------------------\n */\n\n /**\n * Returns instance of Video Element that was attached by calling attachView()\n * @returns {Object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getVideoElement() {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n return videoModel.getElement();\n }\n\n /**\n * Returns instance of Video Container that was attached by calling attachVideoContainer()\n * @returns {Object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getVideoContainer() {\n return videoModel ? videoModel.getVideoContainer() : null;\n }\n\n /**\n * Use this method to attach an HTML5 element that wraps the video element.\n *\n * @param {HTMLElement} container - The HTML5 element containing the video element.\n * @memberof module:MediaPlayer\n * @instance\n */\n function attachVideoContainer(container) {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n videoModel.setVideoContainer(container);\n }\n\n /**\n * Use this method to attach an HTML5 VideoElement for dash.js to operate upon.\n *\n * @param {Object} element - An HTMLMediaElement that has already been defined in the DOM (or equivalent stub).\n * @memberof module:MediaPlayer\n * @instance\n */\n function attachView(element) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n if (videoModel) {\n videoModel.reset();\n }\n videoModel = null;\n if (element) {\n videoModel = VideoModel(context).getInstance();\n videoModel.initialize();\n videoModel.setElement(element);\n detectProtection();\n detectMetricsReporting();\n detectMss();\n }\n resetAndInitializePlayback();\n }\n\n /**\n * Returns instance of Div that was attached by calling attachTTMLRenderingDiv()\n * @returns {Object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getTTMLRenderingDiv() {\n return videoModel ? videoModel.getTTMLRenderingDiv() : null;\n }\n\n /**\n * Use this method to attach an HTML5 div for dash.js to render rich TTML subtitles.\n *\n * @param {HTMLDivElement} div - An unstyled div placed after the video element. It will be styled to match the video size and overlay z-order.\n * @memberof module:MediaPlayer\n * @instance\n */\n function attachTTMLRenderingDiv(div) {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n videoModel.setTTMLRenderingDiv(div);\n }\n\n /*\n ---------------------------------------------------------------------------\n\n STREAM AND TRACK MANAGEMENT\n\n ---------------------------------------------------------------------------\n */\n /**\n * @param {string} type\n * @returns {Array}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getBitrateInfoListFor(type) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n let stream = getActiveStream();\n return stream ? stream.getBitrateListFor(type) : [];\n }\n\n /**\n * This method returns the list of all available streams from a given manifest\n * @param {Object} manifest\n * @returns {Array} list of {@link StreamInfo}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getStreamsFromManifest(manifest) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n return adapter.getStreamsInfo(manifest);\n }\n\n /**\n * This method returns the list of all available tracks for a given media type\n * @param {string} type\n * @returns {Array} list of {@link MediaInfo}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getTracksFor(type) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n let streamInfo = streamController.getActiveStreamInfo();\n if (!streamInfo) return [];\n return mediaController.getTracksFor(type, streamInfo);\n }\n\n /**\n * This method returns the list of all available tracks for a given media type and streamInfo from a given manifest\n * @param {string} type\n * @param {Object} manifest\n * @param {Object} streamInfo\n * @returns {Array} list of {@link MediaInfo}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getTracksForTypeFromManifest(type, manifest, streamInfo) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n\n streamInfo = streamInfo || adapter.getStreamsInfo(manifest)[0];\n\n return streamInfo ? adapter.getAllMediaInfoForType(streamInfo, type, manifest) : [];\n }\n\n /**\n * @param {string} type\n * @returns {Object|null} {@link MediaInfo}\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function getCurrentTrackFor(type) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n let streamInfo = streamController.getActiveStreamInfo();\n\n if (!streamInfo) return null;\n\n return mediaController.getCurrentTrackFor(type, streamInfo);\n }\n\n /**\n * This method allows to set media settings that will be used to pick the initial track. Format of the settings\n * is following:\n * {lang: langValue,\n * viewpoint: viewpointValue,\n * audioChannelConfiguration: audioChannelConfigurationValue,\n * accessibility: accessibilityValue,\n * role: roleValue}\n *\n *\n * @param {string} type\n * @param {Object} value\n * @memberof module:MediaPlayer\n * @instance\n */\n function setInitialMediaSettingsFor(type, value) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n mediaController.setInitialSettings(type, value);\n }\n\n /**\n * This method returns media settings that is used to pick the initial track. Format of the settings\n * is following:\n * {lang: langValue,\n * viewpoint: viewpointValue,\n * audioChannelConfiguration: audioChannelConfigurationValue,\n * accessibility: accessibilityValue,\n * role: roleValue}\n * @param {string} type\n * @returns {Object}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getInitialMediaSettingsFor(type) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n return mediaController.getInitialSettings(type);\n }\n\n /**\n * @param {MediaInfo} track - instance of {@link MediaInfo}\n * @memberof module:MediaPlayer\n * @instance\n */\n function setCurrentTrack(track) {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n mediaController.setTrack(track);\n }\n\n /**\n * This method returns the current track switch mode.\n *\n * @param {string} type\n * @returns {string} mode\n * @memberof module:MediaPlayer\n * @instance\n */\n function getTrackSwitchModeFor(type) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n return mediaController.getSwitchMode(type);\n }\n\n /**\n * This method sets the current track switch mode. Available options are:\n *\n * MediaController.TRACK_SWITCH_MODE_NEVER_REPLACE\n * (used to forbid clearing the buffered data (prior to current playback position) after track switch. Default for video)\n *\n * MediaController.TRACK_SWITCH_MODE_ALWAYS_REPLACE\n * (used to clear the buffered data (prior to current playback position) after track switch. Default for audio)\n *\n * @param {string} type\n * @param {string} mode\n * @memberof module:MediaPlayer\n * @instance\n */\n function setTrackSwitchModeFor(type, mode) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n mediaController.setSwitchMode(type, mode);\n }\n\n /**\n * This method sets the selection mode for the initial track. This mode defines how the initial track will be selected\n * if no initial media settings are set. If initial media settings are set this parameter will be ignored. Available options are:\n *\n * MediaController.TRACK_SELECTION_MODE_HIGHEST_BITRATE\n * this mode makes the player select the track with a highest bitrate. This mode is a default mode.\n *\n * MediaController.TRACK_SELECTION_MODE_WIDEST_RANGE\n * this mode makes the player select the track with a widest range of bitrates\n *\n * @param {string} mode\n * @memberof module:MediaPlayer\n * @instance\n */\n function setSelectionModeForInitialTrack(mode) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n mediaController.setSelectionModeForInitialTrack(mode);\n }\n\n /**\n * This method returns the track selection mode.\n *\n * @returns {string} mode\n * @memberof module:MediaPlayer\n * @instance\n */\n function getSelectionModeForInitialTrack() {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n return mediaController.getSelectionModeForInitialTrack();\n }\n\n /*\n ---------------------------------------------------------------------------\n\n PROTECTION MANAGEMENT\n\n ---------------------------------------------------------------------------\n /**\n * Detects if Protection is included and returns an instance of ProtectionController.js\n * @memberof module:MediaPlayer\n * @instance\n */\n function getProtectionController() {\n return detectProtection();\n }\n\n /**\n * Will override dash.js protection controller.\n * @param {ProtectionController} value - valid protection controller instance.\n * @memberof module:MediaPlayer\n * @instance\n */\n function attachProtectionController(value) {\n protectionController = value;\n }\n\n /**\n * @param {ProtectionData} value - object containing\n * property names corresponding to key system name strings and associated\n * values being instances of.\n * @memberof module:MediaPlayer\n * @instance\n */\n function setProtectionData(value) {\n protectionData = value;\n }\n\n /*\n ---------------------------------------------------------------------------\n\n TOOLS AND OTHERS FUNCTIONS\n\n ---------------------------------------------------------------------------\n */\n /**\n * Allows application to retrieve a manifest. Manifest loading is asynchro\n * nous and\n * requires the app-provided callback function\n *\n * @param {string} url - url the manifest url\n * @param {function} callback - A Callback function provided when retrieving manifests\n * @memberof module:MediaPlayer\n * @instance\n */\n function retrieveManifest(url, callback) {\n let manifestLoader = createManifestLoader();\n let self = this;\n\n const handler = function (e) {\n if (!e.error) {\n callback(e.manifest);\n } else {\n callback(null, e.error);\n }\n eventBus.off(Events.INTERNAL_MANIFEST_LOADED, handler, self);\n manifestLoader.reset();\n };\n\n eventBus.on(Events.INTERNAL_MANIFEST_LOADED, handler, self);\n\n let uriQueryFragModel = URIQueryAndFragmentModel(context).getInstance();\n uriQueryFragModel.initialize();\n manifestLoader.load(uriQueryFragModel.parseURI(url));\n }\n\n /**\n * Returns the source string or manifest that was attached by calling attachSource()\n * @returns {string | manifest}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getSource() {\n if (!source) {\n throw SOURCE_NOT_ATTACHED_ERROR;\n }\n return source;\n }\n\n /**\n * Use this method to set a source URL to a valid MPD manifest file OR\n * a previously downloaded and parsed manifest object. Optionally, can\n * also provide protection information\n *\n * @param {string|Object} urlOrManifest - A URL to a valid MPD manifest file, or a\n * parsed manifest object.\n *\n *\n * @throws \"MediaPlayer not initialized!\"\n *\n * @memberof module:MediaPlayer\n * @instance\n */\n function attachSource(urlOrManifest) {\n if (!mediaPlayerInitialized) {\n throw MEDIA_PLAYER_NOT_INITIALIZED_ERROR;\n }\n\n if (typeof urlOrManifest === 'string') {\n let uriQueryFragModel = URIQueryAndFragmentModel(context).getInstance();\n uriQueryFragModel.initialize();\n source = uriQueryFragModel.parseURI(urlOrManifest);\n } else {\n source = urlOrManifest;\n }\n\n resetAndInitializePlayback();\n }\n\n /**\n * A utility methods which converts UTC timestamp value into a valid time and date string.\n *\n * @param {number} time - UTC timestamp to be converted into date and time.\n * @param {string} locales - a region identifier (i.e. en_US).\n * @param {boolean} hour12 - 12 vs 24 hour. Set to true for 12 hour time formatting.\n * @param {boolean} withDate - default is false. Set to true to append current date to UTC time format.\n * @returns {string} A formatted time and date string.\n * @memberof module:MediaPlayer\n * @instance\n */\n function formatUTC(time, locales, hour12, withDate = false) {\n const dt = new Date(time * 1000);\n const d = dt.toLocaleDateString(locales);\n const t = dt.toLocaleTimeString(locales, {\n hour12: hour12\n });\n return withDate ? t + ' ' + d : t;\n }\n\n /**\n * A utility method which converts seconds into TimeCode (i.e. 300 --> 05:00).\n *\n * @param {number} value - A number in seconds to be converted into a formatted time code.\n * @returns {string} A formatted time code string.\n * @memberof module:MediaPlayer\n * @instance\n */\n function convertToTimeCode(value) {\n value = Math.max(value, 0);\n\n let h = Math.floor(value / 3600);\n let m = Math.floor((value % 3600) / 60);\n let s = Math.floor((value % 3600) % 60);\n return (h === 0 ? '' : (h < 10 ? '0' + h.toString() + ':' : h.toString() + ':')) + (m < 10 ? '0' + m.toString() : m.toString()) + ':' + (s < 10 ? '0' + s.toString() : s.toString());\n }\n\n /**\n * This method should be used to extend or replace internal dash.js objects.\n * There are two ways to extend dash.js (determined by the override argument):\n *
    \n *
  1. If you set override to true any public method or property in your custom object will\n * override the dash.js parent object's property(ies) and will be used instead but the\n * dash.js parent module will still be created.
  2. \n *\n *
  3. If you set override to false your object will completely replace the dash.js object.\n * (Note: This is how it was in 1.x of Dash.js with Dijon).
  4. \n *
\n * When you extend you get access to this.context, this.factory and this.parent to operate with in your custom object.\n *
    \n *
  • this.context - can be used to pass context for singleton access.
  • \n *
  • this.factory - can be used to call factory.getSingletonInstance().
  • \n *
  • this.parent - is the reference of the parent object to call other public methods. (this.parent is excluded if you extend with override set to false or option 2)
  • \n *
\n * You must call extend before you call initialize\n * @see {@link module:MediaPlayer#initialize initialize()}\n * @param {string} parentNameString - name of parent module\n * @param {Object} childInstance - overriding object\n * @param {boolean} override - replace only some methods (true) or the whole object (false)\n * @memberof module:MediaPlayer\n * @instance\n */\n function extend(parentNameString, childInstance, override) {\n FactoryMaker.extend(parentNameString, childInstance, override, context);\n }\n\n /*\n ---------------------------------------------------------------------------\n\n DEPRECATED FUNCTIONS\n\n ---------------------------------------------------------------------------\n */\n /**\n * @deprecated Since version 2.1.0. Instead use:\n *
    \n *
  • {@link module:MediaPlayer#getVideoElement getVideoElement()}
  • \n *
  • {@link module:MediaPlayer#getSource getSource()}
  • \n *
  • {@link module:MediaPlayer#getVideoContainer getVideoContainer()}
  • \n *
  • {@link module:MediaPlayer#getTTMLRenderingDiv getTTMLRenderingDiv()}
  • \n *
\n *\n * @returns {VideoModel}\n * @memberof module:MediaPlayer\n * @instance\n */\n function getVideoModel() {\n if (!videoModel) {\n throw ELEMENT_NOT_ATTACHED_ERROR;\n }\n return videoModel;\n }\n\n /**\n * @deprecated since version 2.0 Instead use {@link module:MediaPlayer#getAutoSwitchQualityFor getAutoSwitchQualityFor()}.\n * @returns {boolean} Current state of adaptive bitrate switching\n * @memberof module:MediaPlayer\n * @instance\n */\n function getAutoSwitchQuality() {\n return abrController.getAutoSwitchBitrateFor(Constants.VIDEO) || abrController.getAutoSwitchBitrateFor(Constants.AUDIO);\n }\n\n /**\n * Set to false to switch off adaptive bitrate switching.\n *\n * @deprecated since version 2.0 Instead use {@link module:MediaPlayer#setAutoSwitchQualityFor setAutoSwitchQualityFor()}.\n * @param {boolean} value\n * @default true\n * @memberof module:MediaPlayer\n * @instance\n */\n function setAutoSwitchQuality(value) {\n abrController.setAutoSwitchBitrateFor(Constants.VIDEO, value);\n abrController.setAutoSwitchBitrateFor(Constants.AUDIO, value);\n }\n\n /**\n * Sets whether withCredentials on all XHR requests is true or false\n * @default false\n * @param {boolean} value\n * @memberof module:MediaPlayer\n * @instance\n * @deprecated since version 2.4 - use setXHRWithCredentialsForType\n */\n function setXHRWithCredentials(value) {\n setXHRWithCredentialsForType(undefined, value);\n }\n\n //***********************************\n // PRIVATE METHODS\n //***********************************\n\n function resetAndInitializePlayback() {\n if (playbackInitialized) {\n playbackInitialized = false;\n adapter.reset();\n streamController.reset();\n playbackController.reset();\n abrController.reset();\n mediaController.reset();\n textController.reset();\n if (protectionController) {\n protectionController.reset();\n protectionController = null;\n detectProtection();\n }\n if (isReady()) {\n initializePlayback();\n }\n } else if (isReady()) {\n initializePlayback();\n }\n }\n\n function createPlaybackControllers() {\n\n // creates or get objects instances\n let manifestLoader = createManifestLoader();\n\n let sourceBufferController = SourceBufferController(context).getInstance({\n textController: textController\n });\n\n if (!streamController) {\n streamController = StreamController(context).getInstance();\n }\n\n // configure controllers\n mediaController.setConfig({\n errHandler: errHandler,\n domStorage: domStorage\n });\n\n streamController.setConfig({\n capabilities: capabilities,\n manifestLoader: manifestLoader,\n manifestModel: manifestModel,\n dashManifestModel: dashManifestModel,\n mediaPlayerModel: mediaPlayerModel,\n protectionController: protectionController,\n adapter: adapter,\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n errHandler: errHandler,\n timelineConverter: timelineConverter,\n videoModel: videoModel,\n playbackController: playbackController,\n domStorage: domStorage,\n abrController: abrController,\n mediaController: mediaController,\n textController: textController,\n sourceBufferController: sourceBufferController\n });\n\n playbackController.setConfig({\n streamController: streamController,\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n manifestModel: manifestModel,\n mediaPlayerModel: mediaPlayerModel,\n dashManifestModel: dashManifestModel,\n adapter: adapter,\n videoModel: videoModel\n });\n\n abrController.setConfig({\n streamController: streamController,\n domStorage: domStorage,\n mediaPlayerModel: mediaPlayerModel,\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n dashManifestModel: dashManifestModel,\n manifestModel: manifestModel,\n videoModel: videoModel,\n adapter: adapter\n });\n abrController.createAbrRulesCollection();\n\n textController.setConfig({\n errHandler: errHandler,\n manifestModel: manifestModel,\n dashManifestModel: dashManifestModel,\n mediaController: mediaController,\n streamController: streamController,\n videoModel: videoModel\n });\n // initialises controller\n streamController.initialize(autoPlay, protectionData);\n }\n\n function createManifestLoader() {\n return ManifestLoader(context).create({\n errHandler: errHandler,\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n requestModifier: RequestModifier(context).getInstance(),\n mssHandler: mssHandler\n });\n }\n\n function detectProtection() {\n if (protectionController) {\n return protectionController;\n }\n // do not require Protection as dependencies as this is optional and intended to be loaded separately\n let Protection = dashjs.Protection; /* jshint ignore:line */\n if (typeof Protection === 'function') { //TODO need a better way to register/detect plugin components\n let protection = Protection(context).create();\n Events.extend(Protection.events);\n MediaPlayerEvents.extend(Protection.events, {\n publicOnly: true\n });\n protectionController = protection.createProtectionSystem({\n log: log,\n errHandler: errHandler,\n videoModel: videoModel,\n capabilities: capabilities,\n eventBus: eventBus,\n adapter: adapter,\n events: Events,\n BASE64: BASE64,\n constants: Constants\n });\n return protectionController;\n }\n\n return null;\n }\n\n function detectMetricsReporting() {\n if (metricsReportingController) {\n return;\n }\n // do not require MetricsReporting as dependencies as this is optional and intended to be loaded separately\n let MetricsReporting = dashjs.MetricsReporting; /* jshint ignore:line */\n if (typeof MetricsReporting === 'function') { //TODO need a better way to register/detect plugin components\n let metricsReporting = MetricsReporting(context).create();\n\n metricsReportingController = metricsReporting.createMetricsReporting({\n log: log,\n eventBus: eventBus,\n mediaElement: getVideoElement(),\n dashManifestModel: dashManifestModel,\n metricsModel: metricsModel,\n events: Events,\n constants: Constants,\n metricsConstants: MetricsConstants\n });\n }\n }\n\n function detectMss() {\n if (mssHandler) {\n return;\n }\n // do not require MssHandler as dependencies as this is optional and intended to be loaded separately\n let MssHandler = dashjs.MssHandler; /* jshint ignore:line */\n if (typeof MssHandler === 'function') { //TODO need a better way to register/detect plugin components\n mssHandler = MssHandler(context).create({\n eventBus: eventBus,\n mediaPlayerModel: mediaPlayerModel,\n metricsModel: metricsModel,\n playbackController: playbackController,\n protectionController: protectionController,\n errHandler: errHandler,\n events: Events,\n constants: Constants,\n log: log,\n initSegmentType: HTTPRequest.INIT_SEGMENT_TYPE,\n BASE64: BASE64,\n ISOBoxer: ISOBoxer\n });\n }\n }\n\n function getDVRInfoMetric() {\n let metric = metricsModel.getReadOnlyMetricsFor(Constants.VIDEO) || metricsModel.getReadOnlyMetricsFor(Constants.AUDIO);\n return dashMetrics.getCurrentDVRInfo(metric);\n }\n\n function getAsUTC(valToConvert) {\n let metric = getDVRInfoMetric();\n let availableFrom,\n utcValue;\n\n if (!metric) {\n return 0;\n }\n availableFrom = metric.manifestInfo.availableFrom.getTime() / 1000;\n utcValue = valToConvert + (availableFrom + metric.range.start);\n return utcValue;\n }\n\n function getActiveStream() {\n if (!playbackInitialized) {\n throw PLAYBACK_NOT_INITIALIZED_ERROR;\n }\n let streamInfo = streamController.getActiveStreamInfo();\n return streamInfo ? streamController.getStreamById(streamInfo.id) : null;\n }\n\n function initializePlayback() {\n if (!playbackInitialized) {\n createPlaybackControllers();\n\n playbackInitialized = true;\n log('Playback Initialized');\n\n if (typeof source === 'string') {\n streamController.load(source);\n } else {\n streamController.loadWithManifest(source);\n }\n }\n }\n\n instance = {\n initialize: initialize,\n setConfig: setConfig,\n on: on,\n off: off,\n extend: extend,\n attachView: attachView,\n attachSource: attachSource,\n isReady: isReady,\n play: play,\n isPaused: isPaused,\n pause: pause,\n isSeeking: isSeeking,\n isDynamic: isDynamic,\n seek: seek,\n setPlaybackRate: setPlaybackRate,\n getPlaybackRate: getPlaybackRate,\n setMute: setMute,\n isMuted: isMuted,\n setVolume: setVolume,\n getVolume: getVolume,\n time: time,\n duration: duration,\n timeAsUTC: timeAsUTC,\n durationAsUTC: durationAsUTC,\n getActiveStream: getActiveStream,\n getDVRWindowSize: getDVRWindowSize,\n getDVRSeekOffset: getDVRSeekOffset,\n convertToTimeCode: convertToTimeCode,\n formatUTC: formatUTC,\n getVersion: getVersion,\n getDebug: getDebug,\n getBufferLength: getBufferLength,\n getVideoModel: getVideoModel,\n getVideoContainer: getVideoContainer,\n getTTMLRenderingDiv: getTTMLRenderingDiv,\n getVideoElement: getVideoElement,\n getSource: getSource,\n setLiveDelayFragmentCount: setLiveDelayFragmentCount,\n setLiveDelay: setLiveDelay,\n getLiveDelay: getLiveDelay,\n useSuggestedPresentationDelay: useSuggestedPresentationDelay,\n enableLastBitrateCaching: enableLastBitrateCaching,\n enableLastMediaSettingsCaching: enableLastMediaSettingsCaching,\n setMaxAllowedBitrateFor: setMaxAllowedBitrateFor,\n getMaxAllowedBitrateFor: getMaxAllowedBitrateFor,\n setMinAllowedBitrateFor: setMinAllowedBitrateFor,\n getMinAllowedBitrateFor: getMinAllowedBitrateFor,\n setMaxAllowedRepresentationRatioFor: setMaxAllowedRepresentationRatioFor,\n getMaxAllowedRepresentationRatioFor: getMaxAllowedRepresentationRatioFor,\n setAutoPlay: setAutoPlay,\n getAutoPlay: getAutoPlay,\n setScheduleWhilePaused: setScheduleWhilePaused,\n getScheduleWhilePaused: getScheduleWhilePaused,\n getDashMetrics: getDashMetrics,\n getMetricsFor: getMetricsFor,\n getQualityFor: getQualityFor,\n setQualityFor: setQualityFor,\n updatePortalSize: updatePortalSize,\n getLimitBitrateByPortal: getLimitBitrateByPortal,\n setLimitBitrateByPortal: setLimitBitrateByPortal,\n getUsePixelRatioInLimitBitrateByPortal: getUsePixelRatioInLimitBitrateByPortal,\n setUsePixelRatioInLimitBitrateByPortal: setUsePixelRatioInLimitBitrateByPortal,\n setTextDefaultLanguage: setTextDefaultLanguage,\n getTextDefaultLanguage: getTextDefaultLanguage,\n setTextDefaultEnabled: setTextDefaultEnabled,\n getTextDefaultEnabled: getTextDefaultEnabled,\n enableText: enableText,\n isTextEnabled: isTextEnabled,\n setTextTrack: setTextTrack,\n getBitrateInfoListFor: getBitrateInfoListFor,\n setInitialBitrateFor: setInitialBitrateFor,\n getInitialBitrateFor: getInitialBitrateFor,\n setInitialRepresentationRatioFor: setInitialRepresentationRatioFor,\n getInitialRepresentationRatioFor: getInitialRepresentationRatioFor,\n getStreamsFromManifest: getStreamsFromManifest,\n getTracksFor: getTracksFor,\n getTracksForTypeFromManifest: getTracksForTypeFromManifest,\n getCurrentTrackFor: getCurrentTrackFor,\n setInitialMediaSettingsFor: setInitialMediaSettingsFor,\n getInitialMediaSettingsFor: getInitialMediaSettingsFor,\n setCurrentTrack: setCurrentTrack,\n getTrackSwitchModeFor: getTrackSwitchModeFor,\n setTrackSwitchModeFor: setTrackSwitchModeFor,\n setSelectionModeForInitialTrack: setSelectionModeForInitialTrack,\n getSelectionModeForInitialTrack: getSelectionModeForInitialTrack,\n getAutoSwitchQuality: getAutoSwitchQuality,\n setAutoSwitchQuality: setAutoSwitchQuality,\n setFastSwitchEnabled: setFastSwitchEnabled,\n getFastSwitchEnabled: getFastSwitchEnabled,\n setMovingAverageMethod: setMovingAverageMethod,\n getMovingAverageMethod: getMovingAverageMethod,\n getAutoSwitchQualityFor: getAutoSwitchQualityFor,\n setAutoSwitchQualityFor: setAutoSwitchQualityFor,\n enableBufferOccupancyABR: enableBufferOccupancyABR,\n setABRStrategy: setABRStrategy,\n getABRStrategy: getABRStrategy,\n useDefaultABRRules: useDefaultABRRules,\n addABRCustomRule: addABRCustomRule,\n removeABRCustomRule: removeABRCustomRule,\n removeAllABRCustomRule: removeAllABRCustomRule,\n setBandwidthSafetyFactor: setBandwidthSafetyFactor,\n getBandwidthSafetyFactor: getBandwidthSafetyFactor,\n getAverageThroughput: getAverageThroughput,\n setAbandonLoadTimeout: setAbandonLoadTimeout,\n retrieveManifest: retrieveManifest,\n addUTCTimingSource: addUTCTimingSource,\n removeUTCTimingSource: removeUTCTimingSource,\n clearDefaultUTCTimingSources: clearDefaultUTCTimingSources,\n restoreDefaultUTCTimingSources: restoreDefaultUTCTimingSources,\n setBufferToKeep: setBufferToKeep,\n setBufferPruningInterval: setBufferPruningInterval,\n setStableBufferTime: setStableBufferTime,\n getStableBufferTime: getStableBufferTime,\n setBufferTimeAtTopQuality: setBufferTimeAtTopQuality,\n getBufferTimeAtTopQuality: getBufferTimeAtTopQuality,\n setBufferTimeAtTopQualityLongForm: setBufferTimeAtTopQualityLongForm,\n getBufferTimeAtTopQualityLongForm: getBufferTimeAtTopQualityLongForm,\n setFragmentLoaderRetryAttempts: setFragmentLoaderRetryAttempts,\n setFragmentLoaderRetryInterval: setFragmentLoaderRetryInterval,\n setManifestLoaderRetryAttempts: setManifestLoaderRetryAttempts,\n setManifestLoaderRetryInterval: setManifestLoaderRetryInterval,\n setXHRWithCredentials: setXHRWithCredentials,\n setXHRWithCredentialsForType: setXHRWithCredentialsForType,\n getXHRWithCredentialsForType: getXHRWithCredentialsForType,\n setLongFormContentDurationThreshold: setLongFormContentDurationThreshold,\n setRichBufferThreshold: setRichBufferThreshold,\n getProtectionController: getProtectionController,\n attachProtectionController: attachProtectionController,\n setProtectionData: setProtectionData,\n enableManifestDateHeaderTimeSource: enableManifestDateHeaderTimeSource,\n displayCaptionsOnTop: displayCaptionsOnTop,\n attachVideoContainer: attachVideoContainer,\n attachTTMLRenderingDiv: attachTTMLRenderingDiv,\n getCurrentTextTrackIndex: getCurrentTextTrackIndex,\n getUseDeadTimeLatencyForAbr: getUseDeadTimeLatencyForAbr,\n setUseDeadTimeLatencyForAbr: setUseDeadTimeLatencyForAbr,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nMediaPlayer.__dashjs_factory_name = 'MediaPlayer';\nlet factory = FactoryMaker.getClassFactory(MediaPlayer);\nfactory.events = MediaPlayerEvents;\nFactoryMaker.updateClassFactory(MediaPlayer.__dashjs_factory_name, factory);\n\nexport default factory;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventsBase from '../core/events/EventsBase';\n/**\n * @class\n *\n */\nclass MediaPlayerEvents extends EventsBase {\n\n /**\n * @description Public facing external events to be used when developing a player that implements dash.js.\n */\n constructor() {\n super();\n /**\n * Triggered when playback will not start yet\n * as the MPD's availabilityStartTime is in the future.\n * Check delay property in payload to determine time before playback will start.\n */\n this.AST_IN_FUTURE = 'astInFuture';\n /**\n * Triggered when the video element's buffer state changes to stalled.\n * Check mediaType in payload to determine type (Video, Audio, FragmentedText).\n * @event MediaPlayerEvents#BUFFER_EMPTY\n */\n this.BUFFER_EMPTY = 'bufferStalled';\n /**\n * Triggered when the video element's buffer state changes to loaded.\n * Check mediaType in payload to determine type (Video, Audio, FragmentedText).\n * @event MediaPlayerEvents#BUFFER_LOADED\n */\n this.BUFFER_LOADED = 'bufferLoaded';\n\n /**\n * Triggered when the video element's buffer state changes, either stalled or loaded. Check payload for state.\n * @event MediaPlayerEvents#BUFFER_LEVEL_STATE_CHANGED\n */\n this.BUFFER_LEVEL_STATE_CHANGED = 'bufferStateChanged';\n\n /**\n * Triggered when there is an error from the element or MSE source buffer.\n * @event MediaPlayerEvents#ERROR\n */\n this.ERROR = 'error';\n\n /**\n * Triggered when a fragment download has completed.\n * @event MediaPlayerEvents#FRAGMENT_LOADING_COMPLETED\n */\n this.FRAGMENT_LOADING_COMPLETED = 'fragmentLoadingCompleted';\n /**\n * Triggered when a fragment download has started.\n * @event MediaPlayerEvents#FRAGMENT_LOADING_STARTED\n */\n this.FRAGMENT_LOADING_STARTED = 'fragmentLoadingStarted';\n /**\n * Triggered when a fragment download is abandoned due to detection of slow download base on the ABR abandon rule..\n * @event MediaPlayerEvents#FRAGMENT_LOADING_ABANDONED\n */\n this.FRAGMENT_LOADING_ABANDONED = 'fragmentLoadingAbandoned';\n /**\n * Triggered when {@link module:Debug} log method is called.\n * @event MediaPlayerEvents#LOG\n */\n this.LOG = 'log';\n //TODO refactor with internal event\n /**\n * Triggered when the manifest load is complete\n * @event MediaPlayerEvents#MANIFEST_LOADED\n */\n this.MANIFEST_LOADED = 'manifestLoaded';\n /**\n * Triggered anytime there is a change to the overall metrics.\n * @event MediaPlayerEvents#METRICS_CHANGED\n */\n this.METRICS_CHANGED = 'metricsChanged';\n /**\n * Triggered when an individual metric is added, updated or cleared.\n * @event MediaPlayerEvents#METRIC_CHANGED\n */\n this.METRIC_CHANGED = 'metricChanged';\n /**\n * Triggered every time a new metric is added.\n * @event MediaPlayerEvents#METRIC_ADDED\n */\n this.METRIC_ADDED = 'metricAdded';\n /**\n * Triggered every time a metric is updated.\n * @event MediaPlayerEvents#METRIC_UPDATED\n */\n this.METRIC_UPDATED = 'metricUpdated';\n /**\n * Triggered at the stream end of a period.\n * @event MediaPlayerEvents#PERIOD_SWITCH_COMPLETED\n */\n this.PERIOD_SWITCH_COMPLETED = 'periodSwitchCompleted';\n /**\n * Triggered when a new period starts.\n * @event MediaPlayerEvents#PERIOD_SWITCH_STARTED\n */\n this.PERIOD_SWITCH_STARTED = 'periodSwitchStarted';\n\n /**\n * Triggered when an ABR up /down switch is initialed; either by user in manual mode or auto mode via ABR rules.\n * @event MediaPlayerEvents#QUALITY_CHANGE_REQUESTED\n */\n this.QUALITY_CHANGE_REQUESTED = 'qualityChangeRequested';\n\n /**\n * Triggered when the new ABR quality is being rendered on-screen.\n * @event MediaPlayerEvents#QUALITY_CHANGE_RENDERED\n */\n this.QUALITY_CHANGE_RENDERED = 'qualityChangeRendered';\n\n /**\n * Triggered when the source is setup and ready.\n * @event MediaPlayerEvents#SOURCE_INITIALIZED\n */\n this.SOURCE_INITIALIZED = 'sourceInitialized';\n\n /**\n * Triggered when a stream (period) is loaded\n * @event MediaPlayerEvents#STREAM_INITIALIZED\n */\n this.STREAM_INITIALIZED = 'streamInitialized';\n\n /**\n * Triggered when the player has been reset.\n * @event MediaPlayerEvents#STREAM_TEARDOWN_COMPLETE\n */\n this.STREAM_TEARDOWN_COMPLETE = 'streamTeardownComplete';\n\n /**\n * Triggered once all text tracks detected in the MPD are added to the video element.\n * @event MediaPlayerEvents#TEXT_TRACKS_ADDED\n */\n this.TEXT_TRACKS_ADDED = 'allTextTracksAdded';\n /**\n * Triggered when a text track is added to the video element's TextTrackList\n * @event MediaPlayerEvents#TEXT_TRACK_ADDED\n */\n this.TEXT_TRACK_ADDED = 'textTrackAdded';\n\n /**\n * Sent when enough data is available that the media can be played,\n * at least for a couple of frames. This corresponds to the\n * HAVE_ENOUGH_DATA readyState.\n * @event MediaPlayerEvents#CAN_PLAY\n */\n this.CAN_PLAY = 'canPlay';\n\n /**\n * Sent when playback completes.\n * @event MediaPlayerEvents#PLAYBACK_ENDED\n */\n this.PLAYBACK_ENDED = 'playbackEnded';\n\n /**\n * Sent when an error occurs. The element's error\n * attribute contains more information.\n * @event MediaPlayerEvents#PLAYBACK_ERROR\n */\n this.PLAYBACK_ERROR = 'playbackError';\n /**\n * Sent when playback is not allowed (for example if user gesture is needed).\n * @event MediaPlayerEvents#PLAYBACK_NOT_ALLOWED\n */\n this.PLAYBACK_NOT_ALLOWED = 'playbackNotAllowed';\n /**\n * The media's metadata has finished loading; all attributes now\n * contain as much useful information as they're going to.\n * @event MediaPlayerEvents#PLAYBACK_METADATA_LOADED\n */\n this.PLAYBACK_METADATA_LOADED = 'playbackMetaDataLoaded';\n /**\n * Sent when playback is paused.\n * @event MediaPlayerEvents#PLAYBACK_PAUSED\n */\n this.PLAYBACK_PAUSED = 'playbackPaused';\n /**\n * Sent when the media begins to play (either for the first time, after having been paused,\n * or after ending and then restarting).\n *\n * @event MediaPlayerEvents#PLAYBACK_PLAYING\n */\n this.PLAYBACK_PLAYING = 'playbackPlaying';\n /**\n * Sent periodically to inform interested parties of progress downloading\n * the media. Information about the current amount of the media that has\n * been downloaded is available in the media element's buffered attribute.\n * @event MediaPlayerEvents#PLAYBACK_PROGRESS\n */\n this.PLAYBACK_PROGRESS = 'playbackProgress';\n /**\n * Sent when the playback speed changes.\n * @event MediaPlayerEvents#PLAYBACK_RATE_CHANGED\n */\n this.PLAYBACK_RATE_CHANGED = 'playbackRateChanged';\n /**\n * Sent when a seek operation completes.\n * @event MediaPlayerEvents#PLAYBACK_SEEKED\n */\n this.PLAYBACK_SEEKED = 'playbackSeeked';\n /**\n * Sent when a seek operation begins.\n * @event MediaPlayerEvents#PLAYBACK_SEEKING\n */\n this.PLAYBACK_SEEKING = 'playbackSeeking';\n\n /**\n * Sent when a seek operation has been asked.\n * @event MediaPlayerEvents#PLAYBACK_SEEK_ASKED\n */\n this.PLAYBACK_SEEK_ASKED = 'playbackSeekAsked';\n\n /**\n * Sent when playback of the media starts after having been paused;\n * that is, when playback is resumed after a prior pause event.\n *\n * @event MediaPlayerEvents#PLAYBACK_STARTED\n */\n this.PLAYBACK_STARTED = 'playbackStarted';\n /**\n * The time indicated by the element's currentTime attribute has changed.\n * @event MediaPlayerEvents#PLAYBACK_TIME_UPDATED\n */\n this.PLAYBACK_TIME_UPDATED = 'playbackTimeUpdated';\n }\n}\n\nlet mediaPlayerEvents = new MediaPlayerEvents();\nexport default mediaPlayerEvents;\n", "import MediaPlayer from './MediaPlayer';\n\nfunction MediaPlayerFactory() {\n\n /**\n * mime-type identifier for any source content to be accepted as a dash manifest by the create() method.\n * @type {string}\n */\n const SUPPORTED_MIME_TYPE = 'application/dash+xml';\n\n /**\n * A new MediaPlayer is instantiated for the supplied videoElement and optional source and context. If no context is provided,\n * a default DashContext is used. If no source is provided, the videoElement is interrogated to extract the first source whose\n * type is application/dash+xml.\n * The autoplay property of the videoElement is preserved. Any preload attribute is ignored. This method should be called after the page onLoad event is dispatched.\n * @param {HTMLMediaElement} video\n * @param {HTMLSourceElement} source\n * @param {Object} context\n * @returns {MediaPlayer|null}\n */\n function create(video, source, context) {\n if (!video || video.nodeName !== 'VIDEO') return null;\n\n if (video._dashjs_player) return video._dashjs_player;\n\n let player;\n let videoID = (video.id || video.name || 'video element');\n\n source = source || [].slice.call(video.querySelectorAll('source')).filter(function (s) {\n return s.type == SUPPORTED_MIME_TYPE;\n })[0];\n if (!source && video.src) {\n source = document.createElement('source');\n source.src = video.src;\n } else if (!source && !video.src) {\n return null;\n }\n\n context = context || {};\n player = MediaPlayer(context).create();\n player.initialize(video, source.src, video.autoplay);\n player.getDebug().log('Converted ' + videoID + ' to dash.js player and added content: ' + source.src);\n\n // Store a reference to the player on the video element so it can be gotten at for debugging and so we know its\n // already been setup.\n video._dashjs_player = player;\n\n return player;\n }\n\n /**\n * Searches the provided scope for all instances of the indicated selector. If no scope is provided, document is used. If no selector is\n * specified, [data-dashjs-player] is used. The declarative setup also looks for source elements with the type attribute set to 'application/dash+xml'.\n * It then looks for those video elements which have a source element defined with a type matching 'application/dash+xml'.\n * A new MediaPlayer is instantiated for each matching video element and the appropriate source is assigned.\n * The autoplay property of the video element is preserved. Any preload attribute is ignored. This method should be called after the page onLoad event is dispatched.\n * Returns an array holding all the MediaPlayer instances that were added by this method.\n * @param {string} selector - CSS selector\n * @param {Object} scope\n * @returns {Array} an array of MediaPlayer objects\n */\n function createAll(selector, scope) {\n let aPlayers = [];\n selector = selector || '[data-dashjs-player]';\n scope = scope || document;\n let videos = scope.querySelectorAll(selector);\n for (let i = 0; i < videos.length; i++) {\n let player = create(videos[i], null);\n aPlayers.push(player);\n }\n\n let sources = scope.querySelectorAll('source[type=\"' + SUPPORTED_MIME_TYPE + '\"]');\n for (let i = 0; i < sources.length; i++) {\n let video = findVideo(sources[i]);\n let player = create(video, null);\n aPlayers.push(player);\n }\n\n return aPlayers;\n }\n\n function findVideo(el) {\n if (el.nodeName.toLowerCase() === 'video') {\n return el;\n } else {\n return findVideo(el.parentNode);\n }\n }\n\n return {\n create: create,\n createAll: createAll\n };\n}\n\nlet instance = MediaPlayerFactory();\nlet loadInterval;\n\nfunction loadHandler() {\n window.removeEventListener('load', loadHandler);\n instance.createAll();\n}\n\nfunction loadIntervalHandler() {\n if (window.dashjs) {\n window.clearInterval(loadInterval);\n instance.createAll();\n }\n}\n\nlet avoidAutoCreate = typeof window !== 'undefined' && window && window.dashjs && window.dashjs.skipAutoCreate;\n\nif (!avoidAutoCreate && typeof window !== 'undefined' && window && window.addEventListener) {\n if (window.document.readyState === 'complete') {\n if (window.dashjs) {\n instance.createAll();\n } else {\n // If loaded asynchronously, window.readyState may be 'complete' even if dashjs hasn't loaded yet\n loadInterval = window.setInterval(loadIntervalHandler, 500);\n }\n } else {\n window.addEventListener('load', loadHandler);\n }\n}\n\nexport default instance;\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from './constants/Constants';\nimport StreamProcessor from './StreamProcessor';\nimport EventController from './controllers/EventController';\nimport FragmentController from './controllers/FragmentController';\nimport EventBus from '../core/EventBus';\nimport Events from '../core/events/Events';\nimport Debug from '../core/Debug';\nimport FactoryMaker from '../core/FactoryMaker';\n\nfunction Stream(config) {\n\n const DATA_UPDATE_FAILED_ERROR_CODE = 1;\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let manifestModel = config.manifestModel;\n let dashManifestModel = config.dashManifestModel;\n let mediaPlayerModel = config.mediaPlayerModel;\n let manifestUpdater = config.manifestUpdater;\n let adapter = config.adapter;\n let capabilities = config.capabilities;\n let errHandler = config.errHandler;\n let timelineConverter = config.timelineConverter;\n let metricsModel = config.metricsModel;\n let abrController = config.abrController;\n let playbackController = config.playbackController;\n let mediaController = config.mediaController;\n let textController = config.textController;\n\n let instance,\n streamProcessors,\n isStreamActivated,\n isMediaInitialized,\n streamInfo,\n updateError,\n isUpdating,\n protectionController,\n fragmentController,\n eventController,\n trackChangedEvent;\n\n function setup() {\n resetInitialSettings();\n\n fragmentController = FragmentController(context).create({\n mediaPlayerModel: mediaPlayerModel,\n metricsModel: metricsModel,\n errHandler: errHandler\n });\n\n eventBus.on(Events.BUFFERING_COMPLETED, onBufferingCompleted, instance);\n eventBus.on(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, instance);\n }\n\n function initialize(StreamInfo, ProtectionController) {\n streamInfo = StreamInfo;\n protectionController = ProtectionController;\n if (protectionController) {\n eventBus.on(Events.KEY_ERROR, onProtectionError, instance);\n eventBus.on(Events.SERVER_CERTIFICATE_UPDATED, onProtectionError, instance);\n eventBus.on(Events.LICENSE_REQUEST_COMPLETE, onProtectionError, instance);\n eventBus.on(Events.KEY_SYSTEM_SELECTED, onProtectionError, instance);\n eventBus.on(Events.KEY_SESSION_CREATED, onProtectionError, instance);\n }\n }\n\n /**\n * Activates Stream by re-initializing some of its components\n * @param {MediaSource} mediaSource\n * @memberof Stream#\n */\n function activate(mediaSource) {\n if (!isStreamActivated) {\n eventBus.on(Events.CURRENT_TRACK_CHANGED, onCurrentTrackChanged, instance);\n initializeMedia(mediaSource);\n isStreamActivated = true;\n }\n //else { // TODO Check track change mode but why is this here. commented it out for now to check.\n // createBuffers();\n //}\n }\n\n /**\n * Partially resets some of the Stream elements\n * @memberof Stream#\n */\n function deactivate() {\n let ln = streamProcessors ? streamProcessors.length : 0;\n for (let i = 0; i < ln; i++) {\n let fragmentModel = streamProcessors[i].getFragmentModel();\n fragmentModel.removeExecutedRequestsBeforeTime(getStartTime() + getDuration());\n streamProcessors[i].reset();\n }\n streamProcessors = [];\n isStreamActivated = false;\n isMediaInitialized = false;\n clearEventController();\n eventBus.off(Events.CURRENT_TRACK_CHANGED, onCurrentTrackChanged, instance);\n }\n\n function resetInitialSettings() {\n deactivate();\n streamInfo = null;\n updateError = {};\n isUpdating = false;\n }\n\n function reset() {\n\n if (playbackController) {\n playbackController.pause();\n }\n\n if (fragmentController) {\n fragmentController.reset();\n fragmentController = null;\n }\n\n resetInitialSettings();\n\n log = null;\n\n eventBus.off(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, instance);\n eventBus.off(Events.BUFFERING_COMPLETED, onBufferingCompleted, instance);\n eventBus.off(Events.KEY_ERROR, onProtectionError, instance);\n eventBus.off(Events.SERVER_CERTIFICATE_UPDATED, onProtectionError, instance);\n eventBus.off(Events.LICENSE_REQUEST_COMPLETE, onProtectionError, instance);\n eventBus.off(Events.KEY_SYSTEM_SELECTED, onProtectionError, instance);\n eventBus.off(Events.KEY_SESSION_CREATED, onProtectionError, instance);\n }\n\n function getDuration() {\n return streamInfo ? streamInfo.duration : NaN;\n }\n\n function getStartTime() {\n return streamInfo ? streamInfo.start : NaN;\n }\n\n function getId() {\n return streamInfo ? streamInfo.id : NaN;\n }\n\n function getStreamInfo() {\n return streamInfo;\n }\n\n function getEventController() {\n return eventController;\n }\n\n function getFragmentController() {\n return fragmentController;\n }\n\n function checkConfig() {\n if (!abrController || !abrController.hasOwnProperty('getBitrateList') || !adapter || !adapter.hasOwnProperty('getAllMediaInfoForType') || !adapter.hasOwnProperty('getEventsFor')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n /**\n * @param {string} type\n * @returns {Array}\n * @memberof Stream#\n */\n function getBitrateListFor(type) {\n checkConfig();\n let mediaInfo = getMediaInfo(type);\n return abrController.getBitrateList(mediaInfo);\n }\n\n function startEventController() {\n if (eventController) {\n eventController.start();\n }\n }\n\n function clearEventController() {\n if (eventController) {\n eventController.clear();\n }\n }\n\n function onProtectionError(event) {\n if (event.error) {\n errHandler.mediaKeySessionError(event.error);\n log(event.error);\n reset();\n }\n }\n\n function getMimeTypeOrType(mediaInfo) {\n return mediaInfo.type === Constants.TEXT ? mediaInfo.mimeType : mediaInfo.type;\n }\n\n function isMediaSupported(mediaInfo) {\n const type = mediaInfo.type;\n let codec,\n msg;\n\n if (type === Constants.MUXED && mediaInfo) {\n msg = 'Multiplexed representations are intentionally not supported, as they are not compliant with the DASH-AVC/264 guidelines';\n log(msg);\n errHandler.manifestError(msg, 'multiplexedrep', manifestModel.getValue());\n return false;\n }\n\n if ((type === Constants.TEXT) || (type === Constants.FRAGMENTED_TEXT) || (type === Constants.EMBEDDED_TEXT)) {\n return true;\n }\n codec = mediaInfo.codec;\n log(type + ' codec: ' + codec);\n\n if (!!mediaInfo.contentProtection && !capabilities.supportsEncryptedMedia()) {\n errHandler.capabilityError('encryptedmedia');\n } else if (!capabilities.supportsCodec(codec)) {\n msg = type + 'Codec (' + codec + ') is not supported.';\n errHandler.manifestError(msg, 'codec', manifestModel.getValue());\n log(msg);\n return false;\n }\n\n return true;\n }\n\n function onCurrentTrackChanged(e) {\n if (e.newMediaInfo.streamInfo.id !== streamInfo.id) return;\n\n let processor = getProcessorForMediaInfo(e.oldMediaInfo);\n if (!processor) return;\n\n let currentTime = playbackController.getTime();\n log('Stream - Process track changed at current time ' + currentTime);\n let mediaInfo = e.newMediaInfo;\n let manifest = manifestModel.getValue();\n\n log('Stream - Update stream controller');\n if (manifest.refreshManifestOnSwitchTrack) {\n log('Stream - Refreshing manifest for switch track');\n trackChangedEvent = e;\n manifestUpdater.refreshManifest();\n } else {\n processor.updateMediaInfo(mediaInfo);\n if (mediaInfo.type !== Constants.FRAGMENTED_TEXT) {\n abrController.updateTopQualityIndex(mediaInfo);\n processor.switchTrackAsked();\n }\n }\n }\n\n function createStreamProcessor(mediaInfo, mediaSource, optionalSettings) {\n let streamProcessor = StreamProcessor(context).create({\n type: getMimeTypeOrType(mediaInfo),\n mimeType: mediaInfo.mimeType,\n timelineConverter: timelineConverter,\n adapter: adapter,\n manifestModel: manifestModel,\n dashManifestModel: dashManifestModel,\n mediaPlayerModel: mediaPlayerModel,\n metricsModel: metricsModel,\n dashMetrics: config.dashMetrics,\n baseURLController: config.baseURLController,\n stream: instance,\n abrController: abrController,\n domStorage: config.domStorage,\n playbackController: playbackController,\n mediaController: mediaController,\n streamController: config.streamController,\n textController: textController,\n sourceBufferController: config.sourceBufferController,\n errHandler: errHandler\n });\n\n let allMediaForType = adapter.getAllMediaInfoForType(streamInfo, mediaInfo.type);\n streamProcessor.initialize(mediaSource);\n abrController.updateTopQualityIndex(mediaInfo);\n\n if (optionalSettings) {\n streamProcessor.setBuffer(optionalSettings.buffer);\n streamProcessor.getIndexHandler().setCurrentTime(optionalSettings.currentTime);\n streamProcessors[optionalSettings.replaceIdx] = streamProcessor;\n } else {\n streamProcessors.push(streamProcessor);\n }\n\n if (optionalSettings && optionalSettings.ignoreMediaInfo) {\n return;\n }\n\n if ((mediaInfo.type === Constants.TEXT || mediaInfo.type === Constants.FRAGMENTED_TEXT)) {\n let idx;\n for (let i = 0; i < allMediaForType.length; i++) {\n if (allMediaForType[i].index === mediaInfo.index) {\n idx = i;\n }\n streamProcessor.updateMediaInfo(allMediaForType[i]); //creates text tracks for all adaptations in one stream processor\n }\n if (mediaInfo.type === Constants.FRAGMENTED_TEXT) {\n streamProcessor.updateMediaInfo(allMediaForType[idx]); //sets the initial media info\n }\n } else {\n streamProcessor.updateMediaInfo(mediaInfo);\n }\n }\n\n function initializeMediaForType(type, mediaSource) {\n const allMediaForType = adapter.getAllMediaInfoForType(streamInfo, type);\n\n let mediaInfo = null;\n let initialMediaInfo;\n\n if (!allMediaForType || allMediaForType.length === 0) {\n log('No ' + type + ' data.');\n return;\n }\n\n for (let i = 0, ln = allMediaForType.length; i < ln; i++) {\n mediaInfo = allMediaForType[i];\n\n if (type === Constants.EMBEDDED_TEXT) {\n textController.addEmbeddedTrack(mediaInfo);\n } else {\n if (!isMediaSupported(mediaInfo)) {\n continue;\n }\n if (mediaController.isMultiTrackSupportedByType(mediaInfo.type)) {\n mediaController.addTrack(mediaInfo, streamInfo);\n }\n }\n }\n\n if (type === Constants.EMBEDDED_TEXT || mediaController.getTracksFor(type, streamInfo).length === 0) {\n return;\n }\n\n mediaController.checkInitialMediaSettingsForType(type, streamInfo);\n initialMediaInfo = mediaController.getCurrentTrackFor(type, streamInfo);\n\n // TODO : How to tell index handler live/duration?\n // TODO : Pass to controller and then pass to each method on handler?\n\n createStreamProcessor(initialMediaInfo, mediaSource);\n }\n\n function initializeMedia(mediaSource) {\n checkConfig();\n let events;\n\n eventController = EventController(context).create();\n\n eventController.setConfig({\n manifestModel: manifestModel,\n manifestUpdater: manifestUpdater,\n playbackController: playbackController\n });\n events = adapter.getEventsFor(streamInfo);\n eventController.addInlineEvents(events);\n\n isUpdating = true;\n\n filterCodecs(Constants.VIDEO);\n filterCodecs(Constants.AUDIO);\n\n initializeMediaForType(Constants.VIDEO, mediaSource);\n initializeMediaForType(Constants.AUDIO, mediaSource);\n initializeMediaForType(Constants.TEXT, mediaSource);\n initializeMediaForType(Constants.FRAGMENTED_TEXT, mediaSource);\n initializeMediaForType(Constants.EMBEDDED_TEXT, mediaSource);\n initializeMediaForType(Constants.MUXED, mediaSource);\n\n createBuffers();\n\n //TODO. Consider initialization of TextSourceBuffer here if embeddedText, but no sideloadedText.\n\n isMediaInitialized = true;\n isUpdating = false;\n\n if (streamProcessors.length === 0) {\n let msg = 'No streams to play.';\n errHandler.manifestError(msg, 'nostreams', manifestModel.getValue());\n log(msg);\n } else {\n //log(\"Playback initialized!\");\n checkIfInitializationCompleted();\n }\n }\n\n function filterCodecs(type) {\n const realAdaptation = dashManifestModel.getAdaptationForType(manifestModel.getValue(), streamInfo.index, type, streamInfo);\n\n if (!realAdaptation || !Array.isArray(realAdaptation.Representation_asArray)) return null;\n\n // Filter codecs that are not supported\n realAdaptation.Representation_asArray.filter((_, i) => {\n // keep at least codec from lowest representation\n if (i === 0) return true;\n\n const codec = dashManifestModel.getCodec(realAdaptation, i);\n if (!capabilities.supportsCodec(codec)) {\n log('[Stream] codec not supported: ' + codec);\n return false;\n }\n return true;\n });\n }\n\n function checkIfInitializationCompleted() {\n const ln = streamProcessors.length;\n const hasError = !!updateError.audio || !!updateError.video;\n let error = hasError ? new Error(DATA_UPDATE_FAILED_ERROR_CODE, 'Data update failed', null) : null;\n\n for (let i = 0; i < ln; i++) {\n if (streamProcessors[i].isUpdating() || isUpdating) {\n return;\n }\n }\n\n if (!isMediaInitialized) {\n return;\n }\n if (protectionController) {\n protectionController.initialize(manifestModel.getValue(), getMediaInfo(Constants.AUDIO), getMediaInfo(Constants.VIDEO));\n }\n eventBus.trigger(Events.STREAM_INITIALIZED, {\n streamInfo: streamInfo,\n error: error\n });\n }\n\n function getMediaInfo(type) {\n const ln = streamProcessors.length;\n let mediaCtrl = null;\n\n for (let i = 0; i < ln; i++) {\n mediaCtrl = streamProcessors[i];\n\n if (mediaCtrl.getType() === type) {\n return mediaCtrl.getMediaInfo();\n }\n }\n\n return null;\n }\n\n function createBuffers() {\n for (let i = 0, ln = streamProcessors.length; i < ln; i++) {\n streamProcessors[i].createBuffer();\n }\n }\n\n function onBufferingCompleted(e) {\n if (e.streamInfo !== streamInfo) {\n return;\n }\n\n let processors = getProcessors();\n const ln = processors.length;\n\n // if there is at least one buffer controller that has not completed buffering yet do nothing\n for (let i = 0; i < ln; i++) {\n if (!processors[i].isBufferingCompleted()) {\n return;\n }\n }\n\n eventBus.trigger(Events.STREAM_BUFFERING_COMPLETED, {\n streamInfo: streamInfo\n });\n }\n\n function onDataUpdateCompleted(e) {\n let sp = e.sender.getStreamProcessor();\n\n if (sp.getStreamInfo() !== streamInfo) {\n return;\n }\n\n updateError[sp.getType()] = e.error;\n checkIfInitializationCompleted();\n }\n\n function getProcessorForMediaInfo(mediaInfo) {\n if (!mediaInfo) {\n return false;\n }\n\n let processors = getProcessors();\n\n return processors.filter(function (processor) {\n return (processor.getType() === mediaInfo.type);\n })[0];\n }\n\n function getProcessors() {\n const ln = streamProcessors.length;\n let arr = [];\n\n let type,\n controller;\n\n for (let i = 0; i < ln; i++) {\n controller = streamProcessors[i];\n type = controller.getType();\n\n if (type === Constants.AUDIO || type === Constants.VIDEO || type === Constants.FRAGMENTED_TEXT) {\n arr.push(controller);\n }\n }\n\n return arr;\n }\n\n function updateData(updatedStreamInfo) {\n\n log('Manifest updated... updating data system wide.');\n\n isStreamActivated = false;\n isUpdating = true;\n streamInfo = updatedStreamInfo;\n\n if (eventController) {\n let events = adapter.getEventsFor(streamInfo);\n eventController.addInlineEvents(events);\n }\n\n filterCodecs(Constants.VIDEO);\n filterCodecs(Constants.AUDIO);\n\n for (let i = 0, ln = streamProcessors.length; i < ln; i++) {\n let streamProcessor = streamProcessors[i];\n let mediaInfo = adapter.getMediaInfoForType(streamInfo, streamProcessor.getType());\n abrController.updateTopQualityIndex(mediaInfo);\n streamProcessor.updateMediaInfo(mediaInfo);\n }\n\n if (trackChangedEvent) {\n let mediaInfo = trackChangedEvent.newMediaInfo;\n if (mediaInfo.type !== 'fragmentedText') {\n let processor = getProcessorForMediaInfo(trackChangedEvent.oldMediaInfo);\n if (!processor) return;\n processor.switchTrackAsked();\n trackChangedEvent = undefined;\n }\n }\n\n isUpdating = false;\n checkIfInitializationCompleted();\n }\n\n instance = {\n initialize: initialize,\n activate: activate,\n deactivate: deactivate,\n getDuration: getDuration,\n getStartTime: getStartTime,\n getId: getId,\n getStreamInfo: getStreamInfo,\n getFragmentController: getFragmentController,\n getEventController: getEventController,\n getBitrateListFor: getBitrateListFor,\n startEventController: startEventController,\n updateData: updateData,\n reset: reset,\n getProcessors: getProcessors\n };\n\n setup();\n return instance;\n}\n\nStream.__dashjs_factory_name = 'Stream';\nexport default FactoryMaker.getClassFactory(Stream);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from './constants/Constants';\nimport LiveEdgeFinder from './utils/LiveEdgeFinder';\nimport BufferController from './controllers/BufferController';\nimport TextBufferController from './text/TextBufferController';\nimport ScheduleController from './controllers/ScheduleController';\nimport RepresentationController from '../dash/controllers/RepresentationController';\nimport FactoryMaker from '../core/FactoryMaker';\n\nimport DashHandler from '../dash/DashHandler';\n\nfunction StreamProcessor(config) {\n\n let context = this.context;\n\n let indexHandler;\n let type = config.type;\n let errHandler = config.errHandler;\n let mimeType = config.mimeType;\n let timelineConverter = config.timelineConverter;\n let adapter = config.adapter;\n let manifestModel = config.manifestModel;\n let mediaPlayerModel = config.mediaPlayerModel;\n let stream = config.stream;\n let abrController = config.abrController;\n let playbackController = config.playbackController;\n let streamController = config.streamController;\n let mediaController = config.mediaController;\n let textController = config.textController;\n let sourceBufferController = config.sourceBufferController;\n let domStorage = config.domStorage;\n let metricsModel = config.metricsModel;\n let dashMetrics = config.dashMetrics;\n let dashManifestModel = config.dashManifestModel;\n\n let instance,\n mediaInfo,\n mediaInfoArr,\n bufferController,\n scheduleController,\n liveEdgeFinder,\n representationController,\n fragmentModel,\n spExternalControllers;\n\n function setup() {\n liveEdgeFinder = LiveEdgeFinder(context).create({\n timelineConverter: timelineConverter,\n streamProcessor: instance\n });\n resetInitialSettings();\n }\n\n function initialize(mediaSource) {\n\n indexHandler = DashHandler(context).create({\n mimeType: mimeType,\n timelineConverter: timelineConverter,\n dashMetrics: dashMetrics,\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n baseURLController: config.baseURLController,\n errHandler: errHandler\n });\n\n // initialize controllers\n indexHandler.initialize(this);\n abrController.registerStreamType(type, this);\n\n fragmentModel = stream.getFragmentController().getModel(type);\n fragmentModel.setStreamProcessor(instance);\n\n bufferController = createBufferControllerForType(type);\n scheduleController = ScheduleController(context).create({\n type: type,\n metricsModel: metricsModel,\n adapter: adapter,\n dashMetrics: dashMetrics,\n dashManifestModel: dashManifestModel,\n timelineConverter: timelineConverter,\n mediaPlayerModel: mediaPlayerModel,\n abrController: abrController,\n playbackController: playbackController,\n streamController: streamController,\n textController: textController,\n sourceBufferController: sourceBufferController,\n streamProcessor: this\n });\n\n representationController = RepresentationController(context).create();\n\n representationController.setConfig({\n abrController: abrController,\n domStorage: domStorage,\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n dashManifestModel: dashManifestModel,\n manifestModel: manifestModel,\n playbackController: playbackController,\n timelineConverter: timelineConverter,\n streamProcessor: this\n });\n bufferController.initialize(mediaSource);\n scheduleController.initialize();\n representationController.initialize();\n }\n\n function registerExternalController(controller) {\n spExternalControllers.push(controller);\n }\n\n function unregisterExternalController(controller) {\n var index = spExternalControllers.indexOf(controller);\n\n if (index !== -1) {\n spExternalControllers.splice(index, 1);\n }\n }\n\n function getExternalControllers() {\n return spExternalControllers;\n }\n\n function unregisterAllExternalController() {\n spExternalControllers = [];\n }\n\n function resetInitialSettings() {\n mediaInfoArr = [];\n mediaInfo = null;\n unregisterAllExternalController();\n }\n\n function reset(errored) {\n\n indexHandler.reset();\n\n if (bufferController) {\n bufferController.reset(errored);\n bufferController = null;\n }\n\n if (scheduleController) {\n scheduleController.reset();\n scheduleController = null;\n }\n\n if (representationController) {\n representationController.reset();\n representationController = null;\n }\n\n if (abrController) {\n abrController.unRegisterStreamType(type);\n }\n spExternalControllers.forEach(function (controller) {\n controller.reset();\n });\n\n resetInitialSettings();\n type = null;\n stream = null;\n liveEdgeFinder.reset();\n }\n\n function isUpdating() {\n return representationController ? representationController.isUpdating() : false;\n }\n\n function getType() {\n return type;\n }\n\n function getRepresentationController() {\n return representationController;\n }\n\n function getIndexHandler() {\n return indexHandler;\n }\n\n function getFragmentController() {\n return stream ? stream.getFragmentController() : null;\n }\n\n function getBuffer() {\n return bufferController.getBuffer();\n }\n\n function setBuffer(buffer) {\n bufferController.setBuffer(buffer);\n }\n\n function getBufferController() {\n return bufferController;\n }\n\n function getFragmentModel() {\n return fragmentModel;\n }\n\n function getLiveEdgeFinder() {\n return liveEdgeFinder;\n }\n\n function getStreamInfo() {\n return stream ? stream.getStreamInfo() : null;\n }\n\n function getEventController() {\n return stream ? stream.getEventController() : null;\n }\n\n function updateMediaInfo(newMediaInfo) {\n if (newMediaInfo !== mediaInfo && (!newMediaInfo || !mediaInfo || (newMediaInfo.type === mediaInfo.type))) {\n mediaInfo = newMediaInfo;\n }\n if (mediaInfoArr.indexOf(newMediaInfo) === -1) {\n mediaInfoArr.push(newMediaInfo);\n }\n adapter.updateData(this);\n }\n\n function getMediaInfoArr() {\n return mediaInfoArr;\n }\n\n function getMediaInfo() {\n return mediaInfo;\n }\n\n function getMediaSource() {\n return bufferController.getMediaSource();\n }\n\n function getScheduleController() {\n return scheduleController;\n }\n\n function getCurrentRepresentationInfo() {\n return adapter.getCurrentRepresentationInfo(representationController);\n }\n\n function getRepresentationInfoForQuality(quality) {\n return adapter.getRepresentationInfoForQuality(representationController, quality);\n }\n\n function isBufferingCompleted() {\n if (bufferController) {\n return bufferController.getIsBufferingCompleted();\n }\n\n return false;\n }\n\n function getBufferLevel() {\n return bufferController.getBufferLevel();\n }\n\n function switchInitData(representationId) {\n if (bufferController) {\n bufferController.switchInitData(getStreamInfo().id, representationId);\n }\n }\n\n function createBuffer() {\n return (bufferController.getBuffer() || bufferController.createBuffer(mediaInfo));\n }\n\n function switchTrackAsked() {\n scheduleController.switchTrackAsked();\n }\n\n function createBufferControllerForType(type) {\n let controller = null;\n\n if (type === Constants.VIDEO || type === Constants.AUDIO) {\n controller = BufferController(context).create({\n type: type,\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n manifestModel: manifestModel,\n sourceBufferController: sourceBufferController,\n errHandler: errHandler,\n streamController: streamController,\n mediaController: mediaController,\n adapter: adapter,\n textController: textController,\n abrController: abrController,\n playbackController: playbackController,\n streamProcessor: instance\n });\n } else {\n controller = TextBufferController(context).create({\n type: type,\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n manifestModel: manifestModel,\n sourceBufferController: sourceBufferController,\n errHandler: errHandler,\n streamController: streamController,\n mediaController: mediaController,\n adapter: adapter,\n textController: textController,\n abrController: abrController,\n playbackController: playbackController,\n streamProcessor: instance\n });\n }\n\n return controller;\n }\n\n instance = {\n initialize: initialize,\n isUpdating: isUpdating,\n getType: getType,\n getBufferController: getBufferController,\n getFragmentModel: getFragmentModel,\n getScheduleController: getScheduleController,\n getLiveEdgeFinder: getLiveEdgeFinder,\n getEventController: getEventController,\n getFragmentController: getFragmentController,\n getRepresentationController: getRepresentationController,\n getIndexHandler: getIndexHandler,\n getCurrentRepresentationInfo: getCurrentRepresentationInfo,\n getRepresentationInfoForQuality: getRepresentationInfoForQuality,\n getBufferLevel: getBufferLevel,\n switchInitData: switchInitData,\n isBufferingCompleted: isBufferingCompleted,\n createBuffer: createBuffer,\n getStreamInfo: getStreamInfo,\n updateMediaInfo: updateMediaInfo,\n switchTrackAsked: switchTrackAsked,\n getMediaInfoArr: getMediaInfoArr,\n getMediaInfo: getMediaInfo,\n getMediaSource: getMediaSource,\n getBuffer: getBuffer,\n setBuffer: setBuffer,\n registerExternalController: registerExternalController,\n unregisterExternalController: unregisterExternalController,\n getExternalControllers: getExternalControllers,\n unregisterAllExternalController: unregisterAllExternalController,\n reset: reset\n };\n\n setup();\n return instance;\n}\nStreamProcessor.__dashjs_factory_name = 'StreamProcessor';\nexport default FactoryMaker.getClassFactory(StreamProcessor);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport {HTTPRequest} from './vo/metrics/HTTPRequest';\nimport FactoryMaker from '../core/FactoryMaker';\nimport ErrorHandler from './utils/ErrorHandler.js';\n\n/**\n * @module XHRLoader\n * @description Manages download of resources via HTTP.\n * @param {Object} cfg - dependancies from parent\n */\nfunction XHRLoader(cfg) {\n //const context = this.context;\n //const log = Debug(context).getInstance().log;\n const errHandler = cfg.errHandler;\n const metricsModel = cfg.metricsModel;\n const mediaPlayerModel = cfg.mediaPlayerModel;\n const requestModifier = cfg.requestModifier;\n\n let instance;\n let xhrs;\n let delayedXhrs;\n let retryTimers;\n let downloadErrorToRequestTypeMap;\n\n function setup() {\n xhrs = [];\n delayedXhrs = [];\n retryTimers = [];\n\n downloadErrorToRequestTypeMap = {\n [HTTPRequest.MPD_TYPE]: ErrorHandler.DOWNLOAD_ERROR_ID_MANIFEST,\n [HTTPRequest.XLINK_EXPANSION_TYPE]: ErrorHandler.DOWNLOAD_ERROR_ID_XLINK,\n [HTTPRequest.INIT_SEGMENT_TYPE]: ErrorHandler.DOWNLOAD_ERROR_ID_INITIALIZATION,\n [HTTPRequest.MEDIA_SEGMENT_TYPE]: ErrorHandler.DOWNLOAD_ERROR_ID_CONTENT,\n [HTTPRequest.INDEX_SEGMENT_TYPE]: ErrorHandler.DOWNLOAD_ERROR_ID_CONTENT,\n [HTTPRequest.BITSTREAM_SWITCHING_SEGMENT_TYPE]: ErrorHandler.DOWNLOAD_ERROR_ID_CONTENT,\n [HTTPRequest.OTHER_TYPE]: ErrorHandler.DOWNLOAD_ERROR_ID_CONTENT\n };\n }\n\n function internalLoad(config, remainingAttempts) {\n\n let request = config.request;\n let xhr = new XMLHttpRequest();\n let traces = [];\n let firstProgress = true;\n let needFailureReport = true;\n let requestStartTime = new Date();\n let lastTraceTime = requestStartTime;\n let lastTraceReceivedCount = 0;\n\n const handleLoaded = function (success) {\n needFailureReport = false;\n\n request.requestStartDate = requestStartTime;\n request.requestEndDate = new Date();\n request.firstByteDate = request.firstByteDate || requestStartTime;\n\n if (!request.checkExistenceOnly) {\n metricsModel.addHttpRequest(\n request.mediaType,\n null,\n request.type,\n request.url,\n xhr.responseURL || null,\n request.serviceLocation || null,\n request.range || null,\n request.requestStartDate,\n request.firstByteDate,\n request.requestEndDate,\n xhr.status,\n request.duration,\n xhr.getAllResponseHeaders(),\n success ? traces : null\n );\n }\n };\n\n const onloadend = function () {\n if (xhrs.indexOf(xhr) === -1) {\n return;\n } else {\n xhrs.splice(xhrs.indexOf(xhr), 1);\n }\n\n if (needFailureReport) {\n handleLoaded(false);\n\n if (remainingAttempts > 0) {\n remainingAttempts--;\n retryTimers.push(\n setTimeout(function () {\n internalLoad(config, remainingAttempts);\n }, mediaPlayerModel.getRetryIntervalForType(request.type))\n );\n } else {\n errHandler.downloadError(\n downloadErrorToRequestTypeMap[request.type],\n request.url,\n request\n );\n\n if (config.error) {\n config.error(request, 'error', xhr.statusText);\n }\n\n if (config.complete) {\n config.complete(request, xhr.statusText);\n }\n }\n }\n };\n\n const progress = function (event) {\n let currentTime = new Date();\n\n if (firstProgress) {\n firstProgress = false;\n if (!event.lengthComputable ||\n (event.lengthComputable && event.total !== event.loaded)) {\n request.firstByteDate = currentTime;\n }\n }\n\n if (event.lengthComputable) {\n request.bytesLoaded = event.loaded;\n request.bytesTotal = event.total;\n }\n\n traces.push({\n s: lastTraceTime,\n d: currentTime.getTime() - lastTraceTime.getTime(),\n b: [event.loaded ? event.loaded - lastTraceReceivedCount : 0]\n });\n\n lastTraceTime = currentTime;\n lastTraceReceivedCount = event.loaded;\n\n if (config.progress) {\n config.progress();\n }\n };\n\n const onload = function () {\n if (xhr.status >= 200 && xhr.status <= 299) {\n handleLoaded(true);\n\n if (config.success) {\n config.success(xhr.response, xhr.statusText, xhr);\n }\n\n if (config.complete) {\n config.complete(request, xhr.statusText);\n }\n }\n };\n\n const onabort = function () {\n if (config.abort) {\n config.abort(request, xhr.status);\n }\n };\n\n if (!requestModifier || !metricsModel || !errHandler) {\n throw new Error('config object is not correct or missing');\n }\n\n try {\n const modifiedUrl = requestModifier.modifyRequestURL(request.url);\n const verb = request.checkExistenceOnly ? HTTPRequest.HEAD : HTTPRequest.GET;\n\n xhr.open(verb, modifiedUrl, true);\n\n if (request.responseType) {\n xhr.responseType = request.responseType;\n }\n\n if (request.range) {\n xhr.setRequestHeader('Range', 'bytes=' + request.range);\n }\n\n if (!request.requestStartDate) {\n request.requestStartDate = requestStartTime;\n }\n\n xhr = requestModifier.modifyRequestHeader(xhr);\n\n xhr.withCredentials = mediaPlayerModel.getXHRWithCredentialsForType(request.type);\n\n xhr.onload = onload;\n xhr.onloadend = onloadend;\n xhr.onerror = onloadend;\n xhr.onprogress = progress;\n xhr.onabort = onabort;\n\n // Adds the ability to delay single fragment loading time to control buffer.\n let now = new Date().getTime();\n if (isNaN(request.delayLoadingTime) || now >= request.delayLoadingTime) {\n // no delay - just send xhr\n\n xhrs.push(xhr);\n xhr.send();\n } else {\n // delay\n let delayedXhr = {xhr: xhr};\n delayedXhrs.push(delayedXhr);\n delayedXhr.delayTimeout = setTimeout(function () {\n if (delayedXhrs.indexOf(delayedXhr) === -1) {\n return;\n } else {\n delayedXhrs.splice(delayedXhrs.indexOf(delayedXhr), 1);\n }\n try {\n requestStartTime = new Date();\n lastTraceTime = requestStartTime;\n xhrs.push(delayedXhr.xhr);\n delayedXhr.xhr.send();\n } catch (e) {\n delayedXhr.xhr.onerror();\n }\n }, (request.delayLoadingTime - now));\n }\n\n } catch (e) {\n xhr.onerror();\n }\n }\n\n /**\n * Initiates a download of the resource described by config.request\n * @param {Object} config - contains request (FragmentRequest or derived type), and callbacks\n * @memberof module:XHRLoader\n * @instance\n */\n function load(config) {\n if (config.request) {\n internalLoad(\n config,\n mediaPlayerModel.getRetryAttemptsForType(\n config.request.type\n )\n );\n }\n }\n\n /**\n * Aborts any inflight downloads\n * @memberof module:XHRLoader\n * @instance\n */\n function abort() {\n retryTimers.forEach(t => clearTimeout(t));\n retryTimers = [];\n\n delayedXhrs.forEach(x => clearTimeout(x.delayTimeout));\n delayedXhrs = [];\n\n xhrs.forEach(x => {\n // abort will trigger onloadend which we don't want\n // when deliberately aborting inflight requests -\n // set them to undefined so they are not called\n x.onloadend = x.onerror = x.onprogress = undefined;\n x.abort();\n });\n xhrs = [];\n }\n\n instance = {\n load: load,\n abort: abort\n };\n\n setup();\n\n return instance;\n}\n\nXHRLoader.__dashjs_factory_name = 'XHRLoader';\n\nconst factory = FactoryMaker.getClassFactory(XHRLoader);\nexport default factory;\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport DashJSError from './vo/DashJSError';\nimport XHRLoader from './XHRLoader';\nimport {HTTPRequest} from './vo/metrics/HTTPRequest';\nimport TextRequest from './vo/TextRequest';\nimport EventBus from '../core/EventBus';\nimport Events from '../core/events/Events';\nimport FactoryMaker from '../core/FactoryMaker';\n\nconst XLINK_LOADER_ERROR_LOADING_FAILURE = 1;\n\nfunction XlinkLoader(config) {\n\n const RESOLVE_TO_ZERO = 'urn:mpeg:dash:resolve-to-zero:2013';\n\n const context = this.context;\n const eventBus = EventBus(context).getInstance();\n\n let xhrLoader = XHRLoader(context).create({\n errHandler: config.errHandler,\n metricsModel: config.metricsModel,\n mediaPlayerModel: config.mediaPlayerModel,\n requestModifier: config.requestModifier\n });\n\n let instance;\n\n function load(url, element, resolveObject) {\n const report = function (content, resolveToZero) {\n element.resolved = true;\n element.resolvedContent = content ? content : null;\n\n eventBus.trigger(Events.XLINK_ELEMENT_LOADED, {\n element: element,\n resolveObject: resolveObject,\n error: content || resolveToZero ?\n null :\n new DashJSError(\n XLINK_LOADER_ERROR_LOADING_FAILURE,\n 'Failed loading Xlink element: ' + url\n )\n });\n };\n\n if (url === RESOLVE_TO_ZERO) {\n report(null, true);\n } else {\n const request = new TextRequest(url, HTTPRequest.XLINK_TYPE);\n\n xhrLoader.load({\n request: request,\n success: function (data) {\n report(data);\n },\n error: function () {\n report(null);\n }\n });\n }\n }\n\n function reset() {\n if (xhrLoader) {\n xhrLoader.abort();\n xhrLoader = null;\n }\n }\n\n instance = {\n load: load,\n reset: reset\n };\n\n return instance;\n}\n\nXlinkLoader.__dashjs_factory_name = 'XlinkLoader';\n\nconst factory = FactoryMaker.getClassFactory(XlinkLoader);\nfactory.XLINK_LOADER_ERROR_LOADING_FAILURE = XLINK_LOADER_ERROR_LOADING_FAILURE;\nFactoryMaker.updateClassFactory(XlinkLoader.__dashjs_factory_name, factory);\nexport default factory;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from './constants/Constants';\nimport StreamProcessor from './StreamProcessor';\nimport EventController from './controllers/EventController';\nimport FragmentController from './controllers/FragmentController';\nimport EventBus from '../core/EventBus';\nimport Events from '../core/events/Events';\nimport Debug from '../core/Debug';\nimport FactoryMaker from '../core/FactoryMaker';\n\nfunction Stream(config) {\n\n const DATA_UPDATE_FAILED_ERROR_CODE = 1;\n config = config || {};\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let manifestModel = config.manifestModel;\n let dashManifestModel = config.dashManifestModel;\n let mediaPlayerModel = config.mediaPlayerModel;\n let manifestUpdater = config.manifestUpdater;\n let adapter = config.adapter;\n let capabilities = config.capabilities;\n let errHandler = config.errHandler;\n let timelineConverter = config.timelineConverter;\n let metricsModel = config.metricsModel;\n let abrController = config.abrController;\n let playbackController = config.playbackController;\n let mediaController = config.mediaController;\n let textController = config.textController;\n\n let instance,\n streamProcessors,\n isStreamActivated,\n isMediaInitialized,\n streamInfo,\n updateError,\n isUpdating,\n protectionController,\n fragmentController,\n eventController,\n trackChangedEvent;\n\n function setup() {\n resetInitialSettings();\n\n fragmentController = FragmentController(context).create({\n mediaPlayerModel: mediaPlayerModel,\n metricsModel: metricsModel,\n errHandler: errHandler\n });\n\n eventBus.on(Events.BUFFERING_COMPLETED, onBufferingCompleted, instance);\n eventBus.on(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, instance);\n }\n\n function initialize(StreamInfo, ProtectionController) {\n streamInfo = StreamInfo;\n protectionController = ProtectionController;\n if (protectionController) {\n eventBus.on(Events.KEY_ERROR, onProtectionError, instance);\n eventBus.on(Events.SERVER_CERTIFICATE_UPDATED, onProtectionError, instance);\n eventBus.on(Events.LICENSE_REQUEST_COMPLETE, onProtectionError, instance);\n eventBus.on(Events.KEY_SYSTEM_SELECTED, onProtectionError, instance);\n eventBus.on(Events.KEY_SESSION_CREATED, onProtectionError, instance);\n }\n }\n\n /**\n * Activates Stream by re-initializing some of its components\n * @param {MediaSource} mediaSource\n * @memberof Stream#\n */\n function activate(mediaSource) {\n if (!isStreamActivated) {\n eventBus.on(Events.CURRENT_TRACK_CHANGED, onCurrentTrackChanged, instance);\n initializeMedia(mediaSource);\n isStreamActivated = true;\n }\n //else { // TODO Check track change mode but why is this here. commented it out for now to check.\n // createBuffers();\n //}\n }\n\n /**\n * Partially resets some of the Stream elements\n * @memberof Stream#\n */\n function deactivate() {\n let ln = streamProcessors ? streamProcessors.length : 0;\n for (let i = 0; i < ln; i++) {\n let fragmentModel = streamProcessors[i].getFragmentModel();\n fragmentModel.removeExecutedRequestsBeforeTime(getStartTime() + getDuration());\n streamProcessors[i].reset();\n }\n streamProcessors = [];\n isStreamActivated = false;\n isMediaInitialized = false;\n eventBus.off(Events.CURRENT_TRACK_CHANGED, onCurrentTrackChanged, instance);\n }\n\n function resetInitialSettings() {\n deactivate();\n streamInfo = null;\n updateError = {};\n isUpdating = false;\n }\n\n function reset() {\n\n if (playbackController) {\n playbackController.pause();\n }\n\n if (fragmentController) {\n fragmentController.reset();\n fragmentController = null;\n }\n\n resetInitialSettings();\n\n log = null;\n\n eventBus.off(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, instance);\n eventBus.off(Events.BUFFERING_COMPLETED, onBufferingCompleted, instance);\n eventBus.off(Events.KEY_ERROR, onProtectionError, instance);\n eventBus.off(Events.SERVER_CERTIFICATE_UPDATED, onProtectionError, instance);\n eventBus.off(Events.LICENSE_REQUEST_COMPLETE, onProtectionError, instance);\n eventBus.off(Events.KEY_SYSTEM_SELECTED, onProtectionError, instance);\n eventBus.off(Events.KEY_SESSION_CREATED, onProtectionError, instance);\n }\n\n function getDuration() {\n return streamInfo ? streamInfo.duration : NaN;\n }\n\n function getStartTime() {\n return streamInfo ? streamInfo.start : NaN;\n }\n\n function getId() {\n return streamInfo ? streamInfo.id : NaN;\n }\n\n function getStreamInfo() {\n return streamInfo;\n }\n\n function getEventController() {\n return eventController;\n }\n\n function getFragmentController() {\n return fragmentController;\n }\n\n function checkConfig() {\n if (!abrController || !abrController.hasOwnProperty('getBitrateList') || !adapter || !adapter.hasOwnProperty('getAllMediaInfoForType') || !adapter.hasOwnProperty('getEventsFor')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n /**\n * @param {string} type\n * @returns {Array}\n * @memberof Stream#\n */\n function getBitrateListFor(type) {\n checkConfig();\n let mediaInfo = getMediaInfo(type);\n return abrController.getBitrateList(mediaInfo);\n }\n\n function startEventController() {\n if (eventController) {\n eventController.start();\n }\n }\n\n function stopEventController() {\n if (eventController) {\n eventController.stop();\n }\n }\n\n function onProtectionError(event) {\n if (event.error) {\n errHandler.mediaKeySessionError(event.error);\n log(event.error);\n reset();\n }\n }\n\n function getMimeTypeOrType(mediaInfo) {\n return mediaInfo.type === Constants.TEXT ? mediaInfo.mimeType : mediaInfo.type;\n }\n\n function isMediaSupported(mediaInfo) {\n const type = mediaInfo.type;\n let codec,\n msg;\n\n if (type === Constants.MUXED && mediaInfo) {\n msg = 'Multiplexed representations are intentionally not supported, as they are not compliant with the DASH-AVC/264 guidelines';\n log(msg);\n errHandler.manifestError(msg, 'multiplexedrep', manifestModel.getValue());\n return false;\n }\n\n if ((type === Constants.TEXT) || (type === Constants.FRAGMENTED_TEXT) || (type === Constants.EMBEDDED_TEXT)) {\n return true;\n }\n codec = mediaInfo.codec;\n log(type + ' codec: ' + codec);\n\n if (!!mediaInfo.contentProtection && !capabilities.supportsEncryptedMedia()) {\n errHandler.capabilityError('encryptedmedia');\n } else if (!capabilities.supportsCodec(codec)) {\n msg = type + 'Codec (' + codec + ') is not supported.';\n errHandler.manifestError(msg, 'codec', manifestModel.getValue());\n log(msg);\n return false;\n }\n\n return true;\n }\n\n function onCurrentTrackChanged(e) {\n if (e.newMediaInfo.streamInfo.id !== streamInfo.id) return;\n\n let processor = getProcessorForMediaInfo(e.oldMediaInfo);\n if (!processor) return;\n\n let currentTime = playbackController.getTime();\n log('Stream - Process track changed at current time ' + currentTime);\n let mediaInfo = e.newMediaInfo;\n let manifest = manifestModel.getValue();\n\n log('Stream - Update stream controller');\n if (manifest.refreshManifestOnSwitchTrack) {\n log('Stream - Refreshing manifest for switch track');\n trackChangedEvent = e;\n manifestUpdater.refreshManifest();\n } else {\n processor.updateMediaInfo(mediaInfo);\n if (mediaInfo.type !== Constants.FRAGMENTED_TEXT) {\n abrController.updateTopQualityIndex(mediaInfo);\n processor.switchTrackAsked();\n }\n }\n }\n\n function createStreamProcessor(mediaInfo, allMediaForType, mediaSource, optionalSettings) {\n let streamProcessor = StreamProcessor(context).create({\n type: getMimeTypeOrType(mediaInfo),\n mimeType: mediaInfo.mimeType,\n timelineConverter: timelineConverter,\n adapter: adapter,\n manifestModel: manifestModel,\n dashManifestModel: dashManifestModel,\n mediaPlayerModel: mediaPlayerModel,\n metricsModel: metricsModel,\n dashMetrics: config.dashMetrics,\n baseURLController: config.baseURLController,\n stream: instance,\n abrController: abrController,\n domStorage: config.domStorage,\n playbackController: playbackController,\n mediaController: mediaController,\n streamController: config.streamController,\n textController: textController,\n sourceBufferController: config.sourceBufferController,\n errHandler: errHandler\n });\n\n streamProcessor.initialize(mediaSource);\n abrController.updateTopQualityIndex(mediaInfo);\n\n if (optionalSettings) {\n streamProcessor.setBuffer(optionalSettings.buffer);\n streamProcessor.getIndexHandler().setCurrentTime(optionalSettings.currentTime);\n streamProcessors[optionalSettings.replaceIdx] = streamProcessor;\n } else {\n streamProcessors.push(streamProcessor);\n }\n\n if (optionalSettings && optionalSettings.ignoreMediaInfo) {\n return;\n }\n\n if ((mediaInfo.type === Constants.TEXT || mediaInfo.type === Constants.FRAGMENTED_TEXT)) {\n let idx;\n for (let i = 0; i < allMediaForType.length; i++) {\n if (allMediaForType[i].index === mediaInfo.index) {\n idx = i;\n }\n streamProcessor.updateMediaInfo(allMediaForType[i]); //creates text tracks for all adaptations in one stream processor\n }\n if (mediaInfo.type === Constants.FRAGMENTED_TEXT) {\n streamProcessor.updateMediaInfo(allMediaForType[idx]); //sets the initial media info\n }\n } else {\n streamProcessor.updateMediaInfo(mediaInfo);\n }\n }\n\n function initializeMediaForType(type, mediaSource) {\n const allMediaForType = adapter.getAllMediaInfoForType(streamInfo, type);\n\n let mediaInfo = null;\n let initialMediaInfo;\n\n if (!allMediaForType || allMediaForType.length === 0) {\n log('No ' + type + ' data.');\n return;\n }\n\n for (let i = 0, ln = allMediaForType.length; i < ln; i++) {\n mediaInfo = allMediaForType[i];\n\n if (type === Constants.EMBEDDED_TEXT) {\n textController.addEmbeddedTrack(mediaInfo);\n } else {\n if (!isMediaSupported(mediaInfo)) {\n continue;\n }\n if (mediaController.isMultiTrackSupportedByType(mediaInfo.type)) {\n mediaController.addTrack(mediaInfo, streamInfo);\n }\n }\n }\n\n if (type === Constants.EMBEDDED_TEXT || mediaController.getTracksFor(type, streamInfo).length === 0) {\n return;\n }\n\n mediaController.checkInitialMediaSettingsForType(type, streamInfo);\n initialMediaInfo = mediaController.getCurrentTrackFor(type, streamInfo);\n\n // TODO : How to tell index handler live/duration?\n // TODO : Pass to controller and then pass to each method on handler?\n\n createStreamProcessor(initialMediaInfo, allMediaForType, mediaSource);\n }\n\n function initializeMedia(mediaSource) {\n checkConfig();\n let events;\n\n //if initializeMedia is called from a switch period, eventController could have been already created.\n if (!eventController) {\n eventController = EventController(context).create();\n\n eventController.setConfig({\n manifestModel: manifestModel,\n manifestUpdater: manifestUpdater,\n playbackController: playbackController\n });\n events = adapter.getEventsFor(streamInfo);\n eventController.addInlineEvents(events);\n }\n\n isUpdating = true;\n\n filterCodecs(Constants.VIDEO);\n filterCodecs(Constants.AUDIO);\n\n initializeMediaForType(Constants.VIDEO, mediaSource);\n initializeMediaForType(Constants.AUDIO, mediaSource);\n initializeMediaForType(Constants.TEXT, mediaSource);\n initializeMediaForType(Constants.FRAGMENTED_TEXT, mediaSource);\n initializeMediaForType(Constants.EMBEDDED_TEXT, mediaSource);\n initializeMediaForType(Constants.MUXED, mediaSource);\n\n createBuffers();\n\n //TODO. Consider initialization of TextSourceBuffer here if embeddedText, but no sideloadedText.\n\n isMediaInitialized = true;\n isUpdating = false;\n\n if (streamProcessors.length === 0) {\n let msg = 'No streams to play.';\n errHandler.manifestError(msg, 'nostreams', manifestModel.getValue());\n log(msg);\n } else {\n //log(\"Playback initialized!\");\n checkIfInitializationCompleted();\n }\n }\n\n function filterCodecs(type) {\n const realAdaptation = dashManifestModel.getAdaptationForType(manifestModel.getValue(), streamInfo.index, type, streamInfo);\n\n if (!realAdaptation || !Array.isArray(realAdaptation.Representation_asArray)) return null;\n\n // Filter codecs that are not supported\n realAdaptation.Representation_asArray.filter((_, i) => {\n // keep at least codec from lowest representation\n if (i === 0) return true;\n\n const codec = dashManifestModel.getCodec(realAdaptation, i);\n if (!capabilities.supportsCodec(codec)) {\n log('[Stream] codec not supported: ' + codec);\n return false;\n }\n return true;\n });\n }\n\n function checkIfInitializationCompleted() {\n const ln = streamProcessors.length;\n const hasError = !!updateError.audio || !!updateError.video;\n let error = hasError ? new Error(DATA_UPDATE_FAILED_ERROR_CODE, 'Data update failed', null) : null;\n\n for (let i = 0; i < ln; i++) {\n if (streamProcessors[i].isUpdating() || isUpdating) {\n return;\n }\n }\n\n if (!isMediaInitialized) {\n return;\n }\n if (protectionController) {\n protectionController.initialize(manifestModel.getValue(), getMediaInfo(Constants.AUDIO), getMediaInfo(Constants.VIDEO));\n }\n eventBus.trigger(Events.STREAM_INITIALIZED, {\n streamInfo: streamInfo,\n error: error\n });\n }\n\n function getMediaInfo(type) {\n const ln = streamProcessors.length;\n let mediaCtrl = null;\n\n for (let i = 0; i < ln; i++) {\n mediaCtrl = streamProcessors[i];\n\n if (mediaCtrl.getType() === type) {\n return mediaCtrl.getMediaInfo();\n }\n }\n\n return null;\n }\n\n function createBuffers() {\n for (let i = 0, ln = streamProcessors.length; i < ln; i++) {\n streamProcessors[i].createBuffer();\n }\n }\n\n function onBufferingCompleted(e) {\n if (e.streamInfo !== streamInfo) {\n return;\n }\n\n let processors = getProcessors();\n const ln = processors.length;\n\n // if there is at least one buffer controller that has not completed buffering yet do nothing\n for (let i = 0; i < ln; i++) {\n if (!processors[i].isBufferingCompleted()) {\n return;\n }\n }\n\n eventBus.trigger(Events.STREAM_BUFFERING_COMPLETED, {\n streamInfo: streamInfo\n });\n }\n\n function onDataUpdateCompleted(e) {\n let sp = e.sender.getStreamProcessor();\n\n if (sp.getStreamInfo() !== streamInfo) {\n return;\n }\n\n updateError[sp.getType()] = e.error;\n checkIfInitializationCompleted();\n }\n\n function getProcessorForMediaInfo(mediaInfo) {\n if (!mediaInfo) {\n return false;\n }\n\n let processors = getProcessors();\n\n return processors.filter(function (processor) {\n return (processor.getType() === mediaInfo.type);\n })[0];\n }\n\n function getProcessors() {\n const ln = streamProcessors.length;\n let arr = [];\n\n let type,\n controller;\n\n for (let i = 0; i < ln; i++) {\n controller = streamProcessors[i];\n type = controller.getType();\n\n if (type === Constants.AUDIO || type === Constants.VIDEO || type === Constants.FRAGMENTED_TEXT) {\n arr.push(controller);\n }\n }\n\n return arr;\n }\n\n function updateData(updatedStreamInfo) {\n\n log('Manifest updated... updating data system wide.');\n\n isStreamActivated = false;\n isUpdating = true;\n streamInfo = updatedStreamInfo;\n\n if (eventController) {\n let events = adapter.getEventsFor(streamInfo);\n eventController.addInlineEvents(events);\n }\n\n filterCodecs(Constants.VIDEO);\n filterCodecs(Constants.AUDIO);\n\n for (let i = 0, ln = streamProcessors.length; i < ln; i++) {\n let streamProcessor = streamProcessors[i];\n let mediaInfo = adapter.getMediaInfoForType(streamInfo, streamProcessor.getType());\n abrController.updateTopQualityIndex(mediaInfo);\n streamProcessor.updateMediaInfo(mediaInfo);\n }\n\n if (trackChangedEvent) {\n let mediaInfo = trackChangedEvent.newMediaInfo;\n if (mediaInfo.type !== 'fragmentedText') {\n let processor = getProcessorForMediaInfo(trackChangedEvent.oldMediaInfo);\n if (!processor) return;\n processor.switchTrackAsked();\n trackChangedEvent = undefined;\n }\n }\n\n isUpdating = false;\n checkIfInitializationCompleted();\n }\n\n instance = {\n initialize: initialize,\n activate: activate,\n deactivate: deactivate,\n getDuration: getDuration,\n getStartTime: getStartTime,\n getId: getId,\n getStreamInfo: getStreamInfo,\n getFragmentController: getFragmentController,\n getEventController: getEventController,\n getBitrateListFor: getBitrateListFor,\n startEventController: startEventController,\n stopEventController: stopEventController,\n updateData: updateData,\n reset: reset,\n getProcessors: getProcessors\n };\n\n setup();\n return instance;\n}\n\nStream.__dashjs_factory_name = 'Stream';\nexport default FactoryMaker.getClassFactory(Stream);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from './constants/Constants';\nimport LiveEdgeFinder from './utils/LiveEdgeFinder';\nimport BufferController from './controllers/BufferController';\nimport TextBufferController from './text/TextBufferController';\nimport ScheduleController from './controllers/ScheduleController';\nimport RepresentationController from '../dash/controllers/RepresentationController';\nimport FactoryMaker from '../core/FactoryMaker';\n\nimport DashHandler from '../dash/DashHandler';\n\nfunction StreamProcessor(config) {\n\n config = config || {};\n let context = this.context;\n\n let indexHandler;\n let type = config.type;\n let errHandler = config.errHandler;\n let mimeType = config.mimeType;\n let timelineConverter = config.timelineConverter;\n let adapter = config.adapter;\n let manifestModel = config.manifestModel;\n let mediaPlayerModel = config.mediaPlayerModel;\n let stream = config.stream;\n let abrController = config.abrController;\n let playbackController = config.playbackController;\n let streamController = config.streamController;\n let mediaController = config.mediaController;\n let textController = config.textController;\n let sourceBufferController = config.sourceBufferController;\n let domStorage = config.domStorage;\n let metricsModel = config.metricsModel;\n let dashMetrics = config.dashMetrics;\n let dashManifestModel = config.dashManifestModel;\n\n let instance,\n mediaInfo,\n mediaInfoArr,\n bufferController,\n scheduleController,\n liveEdgeFinder,\n representationController,\n fragmentModel,\n spExternalControllers;\n\n function setup() {\n if (playbackController && playbackController.getIsDynamic()) {\n liveEdgeFinder = LiveEdgeFinder(context).create({\n timelineConverter: timelineConverter,\n streamProcessor: instance\n });\n }\n resetInitialSettings();\n }\n\n function initialize(mediaSource) {\n\n indexHandler = DashHandler(context).create({\n mimeType: mimeType,\n timelineConverter: timelineConverter,\n dashMetrics: dashMetrics,\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n baseURLController: config.baseURLController,\n errHandler: errHandler\n });\n\n // initialize controllers\n indexHandler.initialize(this);\n abrController.registerStreamType(type, this);\n\n fragmentModel = stream.getFragmentController().getModel(type);\n fragmentModel.setStreamProcessor(instance);\n\n bufferController = createBufferControllerForType(type);\n scheduleController = ScheduleController(context).create({\n type: type,\n metricsModel: metricsModel,\n adapter: adapter,\n dashMetrics: dashMetrics,\n dashManifestModel: dashManifestModel,\n timelineConverter: timelineConverter,\n mediaPlayerModel: mediaPlayerModel,\n abrController: abrController,\n playbackController: playbackController,\n streamController: streamController,\n textController: textController,\n sourceBufferController: sourceBufferController,\n streamProcessor: this\n });\n\n representationController = RepresentationController(context).create();\n\n representationController.setConfig({\n abrController: abrController,\n domStorage: domStorage,\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n dashManifestModel: dashManifestModel,\n manifestModel: manifestModel,\n playbackController: playbackController,\n timelineConverter: timelineConverter,\n streamProcessor: this\n });\n bufferController.initialize(mediaSource);\n scheduleController.initialize();\n representationController.initialize();\n }\n\n function registerExternalController(controller) {\n spExternalControllers.push(controller);\n }\n\n function unregisterExternalController(controller) {\n var index = spExternalControllers.indexOf(controller);\n\n if (index !== -1) {\n spExternalControllers.splice(index, 1);\n }\n }\n\n function getExternalControllers() {\n return spExternalControllers;\n }\n\n function unregisterAllExternalController() {\n spExternalControllers = [];\n }\n\n function resetInitialSettings() {\n mediaInfoArr = [];\n mediaInfo = null;\n unregisterAllExternalController();\n }\n\n function reset(errored) {\n\n indexHandler.reset();\n\n if (bufferController) {\n bufferController.reset(errored);\n bufferController = null;\n }\n\n if (scheduleController) {\n scheduleController.reset();\n scheduleController = null;\n }\n\n if (representationController) {\n representationController.reset();\n representationController = null;\n }\n\n if (abrController) {\n abrController.unRegisterStreamType(type);\n }\n spExternalControllers.forEach(function (controller) {\n controller.reset();\n });\n\n resetInitialSettings();\n type = null;\n stream = null;\n if (liveEdgeFinder) {\n liveEdgeFinder.reset();\n liveEdgeFinder = null;\n }\n }\n\n function isUpdating() {\n return representationController ? representationController.isUpdating() : false;\n }\n\n function getType() {\n return type;\n }\n\n function getRepresentationController() {\n return representationController;\n }\n\n function getIndexHandler() {\n return indexHandler;\n }\n\n function getFragmentController() {\n return stream ? stream.getFragmentController() : null;\n }\n\n function getBuffer() {\n return bufferController.getBuffer();\n }\n\n function setBuffer(buffer) {\n bufferController.setBuffer(buffer);\n }\n\n function getBufferController() {\n return bufferController;\n }\n\n function getFragmentModel() {\n return fragmentModel;\n }\n\n function getLiveEdgeFinder() {\n return liveEdgeFinder;\n }\n\n function getStreamInfo() {\n return stream ? stream.getStreamInfo() : null;\n }\n\n function getEventController() {\n return stream ? stream.getEventController() : null;\n }\n\n function updateMediaInfo(newMediaInfo) {\n if (newMediaInfo !== mediaInfo && (!newMediaInfo || !mediaInfo || (newMediaInfo.type === mediaInfo.type))) {\n mediaInfo = newMediaInfo;\n }\n if (mediaInfoArr.indexOf(newMediaInfo) === -1) {\n mediaInfoArr.push(newMediaInfo);\n }\n adapter.updateData(this);\n }\n\n function getMediaInfoArr() {\n return mediaInfoArr;\n }\n\n function getMediaInfo() {\n return mediaInfo;\n }\n\n function getMediaSource() {\n return bufferController.getMediaSource();\n }\n\n function getScheduleController() {\n return scheduleController;\n }\n\n function getCurrentRepresentationInfo() {\n return adapter.getCurrentRepresentationInfo(representationController);\n }\n\n function getRepresentationInfoForQuality(quality) {\n return adapter.getRepresentationInfoForQuality(representationController, quality);\n }\n\n function isBufferingCompleted() {\n if (bufferController) {\n return bufferController.getIsBufferingCompleted();\n }\n\n return false;\n }\n\n function getBufferLevel() {\n return bufferController.getBufferLevel();\n }\n\n function switchInitData(representationId) {\n if (bufferController) {\n bufferController.switchInitData(getStreamInfo().id, representationId);\n }\n }\n\n function createBuffer() {\n return (bufferController.getBuffer() || bufferController.createBuffer(mediaInfo));\n }\n\n function switchTrackAsked() {\n scheduleController.switchTrackAsked();\n }\n\n function createBufferControllerForType(type) {\n let controller = null;\n\n if (type === Constants.VIDEO || type === Constants.AUDIO) {\n controller = BufferController(context).create({\n type: type,\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n manifestModel: manifestModel,\n sourceBufferController: sourceBufferController,\n errHandler: errHandler,\n streamController: streamController,\n mediaController: mediaController,\n adapter: adapter,\n textController: textController,\n abrController: abrController,\n playbackController: playbackController,\n streamProcessor: instance\n });\n } else {\n controller = TextBufferController(context).create({\n type: type,\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n manifestModel: manifestModel,\n sourceBufferController: sourceBufferController,\n errHandler: errHandler,\n streamController: streamController,\n mediaController: mediaController,\n adapter: adapter,\n textController: textController,\n abrController: abrController,\n playbackController: playbackController,\n streamProcessor: instance\n });\n }\n\n return controller;\n }\n\n instance = {\n initialize: initialize,\n isUpdating: isUpdating,\n getType: getType,\n getBufferController: getBufferController,\n getFragmentModel: getFragmentModel,\n getScheduleController: getScheduleController,\n getLiveEdgeFinder: getLiveEdgeFinder,\n getEventController: getEventController,\n getFragmentController: getFragmentController,\n getRepresentationController: getRepresentationController,\n getIndexHandler: getIndexHandler,\n getCurrentRepresentationInfo: getCurrentRepresentationInfo,\n getRepresentationInfoForQuality: getRepresentationInfoForQuality,\n getBufferLevel: getBufferLevel,\n switchInitData: switchInitData,\n isBufferingCompleted: isBufferingCompleted,\n createBuffer: createBuffer,\n getStreamInfo: getStreamInfo,\n updateMediaInfo: updateMediaInfo,\n switchTrackAsked: switchTrackAsked,\n getMediaInfoArr: getMediaInfoArr,\n getMediaInfo: getMediaInfo,\n getMediaSource: getMediaSource,\n getBuffer: getBuffer,\n setBuffer: setBuffer,\n registerExternalController: registerExternalController,\n unregisterExternalController: unregisterExternalController,\n getExternalControllers: getExternalControllers,\n unregisterAllExternalController: unregisterAllExternalController,\n reset: reset\n };\n\n setup();\n return instance;\n}\nStreamProcessor.__dashjs_factory_name = 'StreamProcessor';\nexport default FactoryMaker.getClassFactory(StreamProcessor);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport {HTTPRequest} from './vo/metrics/HTTPRequest';\nimport FactoryMaker from '../core/FactoryMaker';\nimport ErrorHandler from './utils/ErrorHandler.js';\n\n/**\n * @module XHRLoader\n * @description Manages download of resources via HTTP.\n * @param {Object} cfg - dependancies from parent\n */\nfunction XHRLoader(cfg) {\n\n cfg = cfg || {};\n const errHandler = cfg.errHandler;\n const metricsModel = cfg.metricsModel;\n const mediaPlayerModel = cfg.mediaPlayerModel;\n const requestModifier = cfg.requestModifier;\n\n let instance;\n let xhrs;\n let delayedXhrs;\n let retryTimers;\n let downloadErrorToRequestTypeMap;\n\n function setup() {\n xhrs = [];\n delayedXhrs = [];\n retryTimers = [];\n\n downloadErrorToRequestTypeMap = {\n [HTTPRequest.MPD_TYPE]: ErrorHandler.DOWNLOAD_ERROR_ID_MANIFEST,\n [HTTPRequest.XLINK_EXPANSION_TYPE]: ErrorHandler.DOWNLOAD_ERROR_ID_XLINK,\n [HTTPRequest.INIT_SEGMENT_TYPE]: ErrorHandler.DOWNLOAD_ERROR_ID_INITIALIZATION,\n [HTTPRequest.MEDIA_SEGMENT_TYPE]: ErrorHandler.DOWNLOAD_ERROR_ID_CONTENT,\n [HTTPRequest.INDEX_SEGMENT_TYPE]: ErrorHandler.DOWNLOAD_ERROR_ID_CONTENT,\n [HTTPRequest.BITSTREAM_SWITCHING_SEGMENT_TYPE]: ErrorHandler.DOWNLOAD_ERROR_ID_CONTENT,\n [HTTPRequest.OTHER_TYPE]: ErrorHandler.DOWNLOAD_ERROR_ID_CONTENT\n };\n }\n\n function internalLoad(config, remainingAttempts) {\n\n let request = config.request;\n let xhr = new XMLHttpRequest();\n let traces = [];\n let firstProgress = true;\n let needFailureReport = true;\n let requestStartTime = new Date();\n let lastTraceTime = requestStartTime;\n let lastTraceReceivedCount = 0;\n\n const handleLoaded = function (success) {\n needFailureReport = false;\n\n request.requestStartDate = requestStartTime;\n request.requestEndDate = new Date();\n request.firstByteDate = request.firstByteDate || requestStartTime;\n\n if (!request.checkExistenceOnly) {\n metricsModel.addHttpRequest(\n request.mediaType,\n null,\n request.type,\n request.url,\n xhr.responseURL || null,\n request.serviceLocation || null,\n request.range || null,\n request.requestStartDate,\n request.firstByteDate,\n request.requestEndDate,\n xhr.status,\n request.duration,\n xhr.getAllResponseHeaders(),\n success ? traces : null\n );\n }\n };\n\n const onloadend = function () {\n if (xhrs.indexOf(xhr) === -1) {\n return;\n } else {\n xhrs.splice(xhrs.indexOf(xhr), 1);\n }\n\n if (needFailureReport) {\n handleLoaded(false);\n\n if (remainingAttempts > 0) {\n remainingAttempts--;\n retryTimers.push(\n setTimeout(function () {\n internalLoad(config, remainingAttempts);\n }, mediaPlayerModel.getRetryIntervalForType(request.type))\n );\n } else {\n errHandler.downloadError(\n downloadErrorToRequestTypeMap[request.type],\n request.url,\n request\n );\n\n if (config.error) {\n config.error(request, 'error', xhr.statusText);\n }\n\n if (config.complete) {\n config.complete(request, xhr.statusText);\n }\n }\n }\n };\n\n const progress = function (event) {\n let currentTime = new Date();\n\n if (firstProgress) {\n firstProgress = false;\n if (!event.lengthComputable ||\n (event.lengthComputable && event.total !== event.loaded)) {\n request.firstByteDate = currentTime;\n }\n }\n\n if (event.lengthComputable) {\n request.bytesLoaded = event.loaded;\n request.bytesTotal = event.total;\n }\n\n traces.push({\n s: lastTraceTime,\n d: currentTime.getTime() - lastTraceTime.getTime(),\n b: [event.loaded ? event.loaded - lastTraceReceivedCount : 0]\n });\n\n lastTraceTime = currentTime;\n lastTraceReceivedCount = event.loaded;\n\n if (config.progress) {\n config.progress();\n }\n };\n\n const onload = function () {\n if (xhr.status >= 200 && xhr.status <= 299) {\n handleLoaded(true);\n\n if (config.success) {\n config.success(xhr.response, xhr.statusText, xhr);\n }\n\n if (config.complete) {\n config.complete(request, xhr.statusText);\n }\n }\n };\n\n const onabort = function () {\n if (config.abort) {\n config.abort(request, xhr.status);\n }\n };\n\n if (!requestModifier || !metricsModel || !errHandler) {\n throw new Error('config object is not correct or missing');\n }\n\n try {\n const modifiedUrl = requestModifier.modifyRequestURL(request.url);\n const verb = request.checkExistenceOnly ? HTTPRequest.HEAD : HTTPRequest.GET;\n\n xhr.open(verb, modifiedUrl, true);\n\n if (request.responseType) {\n xhr.responseType = request.responseType;\n }\n\n if (request.range) {\n xhr.setRequestHeader('Range', 'bytes=' + request.range);\n }\n\n if (!request.requestStartDate) {\n request.requestStartDate = requestStartTime;\n }\n\n xhr = requestModifier.modifyRequestHeader(xhr);\n\n xhr.withCredentials = mediaPlayerModel.getXHRWithCredentialsForType(request.type);\n\n xhr.onload = onload;\n xhr.onloadend = onloadend;\n xhr.onerror = onloadend;\n xhr.onprogress = progress;\n xhr.onabort = onabort;\n\n // Adds the ability to delay single fragment loading time to control buffer.\n let now = new Date().getTime();\n if (isNaN(request.delayLoadingTime) || now >= request.delayLoadingTime) {\n // no delay - just send xhr\n\n xhrs.push(xhr);\n xhr.send();\n } else {\n // delay\n let delayedXhr = {xhr: xhr};\n delayedXhrs.push(delayedXhr);\n delayedXhr.delayTimeout = setTimeout(function () {\n if (delayedXhrs.indexOf(delayedXhr) === -1) {\n return;\n } else {\n delayedXhrs.splice(delayedXhrs.indexOf(delayedXhr), 1);\n }\n try {\n requestStartTime = new Date();\n lastTraceTime = requestStartTime;\n xhrs.push(delayedXhr.xhr);\n delayedXhr.xhr.send();\n } catch (e) {\n delayedXhr.xhr.onerror();\n }\n }, (request.delayLoadingTime - now));\n }\n\n } catch (e) {\n xhr.onerror();\n }\n }\n\n /**\n * Initiates a download of the resource described by config.request\n * @param {Object} config - contains request (FragmentRequest or derived type), and callbacks\n * @memberof module:XHRLoader\n * @instance\n */\n function load(config) {\n if (config.request) {\n internalLoad(\n config,\n mediaPlayerModel.getRetryAttemptsForType(\n config.request.type\n )\n );\n }\n }\n\n /**\n * Aborts any inflight downloads\n * @memberof module:XHRLoader\n * @instance\n */\n function abort() {\n retryTimers.forEach(t => clearTimeout(t));\n retryTimers = [];\n\n delayedXhrs.forEach(x => clearTimeout(x.delayTimeout));\n delayedXhrs = [];\n\n xhrs.forEach(x => {\n // abort will trigger onloadend which we don't want\n // when deliberately aborting inflight requests -\n // set them to undefined so they are not called\n x.onloadend = x.onerror = x.onprogress = undefined;\n x.abort();\n });\n xhrs = [];\n }\n\n instance = {\n load: load,\n abort: abort\n };\n\n setup();\n\n return instance;\n}\n\nXHRLoader.__dashjs_factory_name = 'XHRLoader';\n\nconst factory = FactoryMaker.getClassFactory(XHRLoader);\nexport default factory;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport DashJSError from './vo/DashJSError';\nimport XHRLoader from './XHRLoader';\nimport {HTTPRequest} from './vo/metrics/HTTPRequest';\nimport TextRequest from './vo/TextRequest';\nimport EventBus from '../core/EventBus';\nimport Events from '../core/events/Events';\nimport FactoryMaker from '../core/FactoryMaker';\n\nconst XLINK_LOADER_ERROR_LOADING_FAILURE = 1;\n\nfunction XlinkLoader(config) {\n\n config = config || {};\n const RESOLVE_TO_ZERO = 'urn:mpeg:dash:resolve-to-zero:2013';\n\n const context = this.context;\n const eventBus = EventBus(context).getInstance();\n\n let xhrLoader = XHRLoader(context).create({\n errHandler: config.errHandler,\n metricsModel: config.metricsModel,\n mediaPlayerModel: config.mediaPlayerModel,\n requestModifier: config.requestModifier\n });\n\n let instance;\n\n function load(url, element, resolveObject) {\n const report = function (content, resolveToZero) {\n element.resolved = true;\n element.resolvedContent = content ? content : null;\n\n eventBus.trigger(Events.XLINK_ELEMENT_LOADED, {\n element: element,\n resolveObject: resolveObject,\n error: content || resolveToZero ?\n null :\n new DashJSError(\n XLINK_LOADER_ERROR_LOADING_FAILURE,\n 'Failed loading Xlink element: ' + url\n )\n });\n };\n\n if (url === RESOLVE_TO_ZERO) {\n report(null, true);\n } else {\n const request = new TextRequest(url, HTTPRequest.XLINK_TYPE);\n\n xhrLoader.load({\n request: request,\n success: function (data) {\n report(data);\n },\n error: function () {\n report(null);\n }\n });\n }\n }\n\n function reset() {\n if (xhrLoader) {\n xhrLoader.abort();\n xhrLoader = null;\n }\n }\n\n instance = {\n load: load,\n reset: reset\n };\n\n return instance;\n}\n\nXlinkLoader.__dashjs_factory_name = 'XlinkLoader';\n\nconst factory = FactoryMaker.getClassFactory(XlinkLoader);\nfactory.XLINK_LOADER_ERROR_LOADING_FAILURE = XLINK_LOADER_ERROR_LOADING_FAILURE;\nFactoryMaker.updateClassFactory(XlinkLoader.__dashjs_factory_name, factory);\nexport default factory;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Constants declaration\n * @class\n * @ignore\n */\nclass Constants {\n\n init () {\n this.STREAM = 'stream';\n this.VIDEO = 'video';\n this.AUDIO = 'audio';\n this.TEXT = 'text';\n this.FRAGMENTED_TEXT = 'fragmentedText';\n this.EMBEDDED_TEXT = 'embeddedText';\n this.MUXED = 'muxed';\n this.LOCATION = 'Location';\n this.INITIALIZE = 'initialize';\n this.TEXT_SHOWING = 'showing';\n this.TEXT_HIDDEN = 'hidden';\n this.CC1 = 'CC1';\n this.CC3 = 'CC3';\n this.STPP = 'stpp';\n this.TTML = 'ttml';\n this.VTT = 'vtt';\n this.WVTT = 'wvtt';\n this.UTF8 = 'utf-8';\n this.SUGGESTED_PRESENTATION_DELAY = 'suggestedPresentationDelay';\n this.SCHEME_ID_URI = 'schemeIdUri';\n this.START_TIME = 'starttime';\n this.ABR_STRATEGY_DYNAMIC = 'abrDynamic';\n this.ABR_STRATEGY_BOLA = 'abrBola';\n this.ABR_STRATEGY_THROUGHPUT = 'abrThroughput';\n this.MOVING_AVERAGE_SLIDING_WINDOW = 'slidingWindow';\n this.MOVING_AVERAGE_EWMA = 'ewma';\n }\n\n constructor () {\n this.init();\n }\n}\n\nlet constants = new Constants();\nexport default constants;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Metrics Constants declaration\n * @class\n * @ignore\n */\nclass MetricsConstants {\n\n init () {\n this.TCP_CONNECTION = 'TcpList';\n this.HTTP_REQUEST = 'HttpList';\n this.TRACK_SWITCH = 'RepSwitchList';\n this.BUFFER_LEVEL = 'BufferLevel';\n this.BUFFER_STATE = 'BufferState';\n this.DVR_INFO = 'DVRInfo';\n this.DROPPED_FRAMES = 'DroppedFrames';\n this.SCHEDULING_INFO = 'SchedulingInfo';\n this.REQUESTS_QUEUE = 'RequestsQueue';\n this.MANIFEST_UPDATE = 'ManifestUpdate';\n this.MANIFEST_UPDATE_STREAM_INFO = 'ManifestUpdatePeriodInfo';\n this.MANIFEST_UPDATE_TRACK_INFO = 'ManifestUpdateRepresentationInfo';\n this.PLAY_LIST = 'PlayList';\n this.DVB_ERRORS = 'DVBErrors';\n }\n\n constructor() {\n this.init();\n }\n}\n\nlet constants = new MetricsConstants();\nexport default constants;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Protection Constants declaration\n * @class\n * @ignore\n */\nclass ProtectionConstants {\n\n init () {\n this.CLEARKEY_KEYSTEM_STRING = 'org.w3.clearkey';\n this.WIDEVINE_KEYSTEM_STRING = 'com.widevine.alpha';\n this.PLAYREADY_KEYSTEM_STRING = 'com.microsoft.playready';\n }\n\n constructor () {\n this.init();\n }\n}\n\nlet constants = new ProtectionConstants();\nexport default constants;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ABRRulesCollection from '../rules/abr/ABRRulesCollection';\nimport Constants from '../constants/Constants';\nimport MetricsConstants from '../constants/MetricsConstants';\nimport BitrateInfo from '../vo/BitrateInfo';\nimport FragmentModel from '../models/FragmentModel';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport RulesContext from '../rules/RulesContext.js';\nimport SwitchRequest from '../rules/SwitchRequest.js';\nimport SwitchRequestHistory from '../rules/SwitchRequestHistory.js';\nimport DroppedFramesHistory from '../rules/DroppedFramesHistory.js';\nimport ThroughputHistory from '../rules/ThroughputHistory.js';\nimport {HTTPRequest} from '../vo/metrics/HTTPRequest';\nimport Debug from '../../core/Debug';\n\nconst ABANDON_LOAD = 'abandonload';\nconst ALLOW_LOAD = 'allowload';\nconst DEFAULT_VIDEO_BITRATE = 1000;\nconst DEFAULT_AUDIO_BITRATE = 100;\nconst QUALITY_DEFAULT = 0;\n\nfunction AbrController() {\n\n const context = this.context;\n const debug = Debug(context).getInstance();\n const eventBus = EventBus(context).getInstance();\n\n let instance,\n log,\n abrRulesCollection,\n streamController,\n autoSwitchBitrate,\n topQualities,\n qualityDict,\n bitrateDict,\n ratioDict,\n streamProcessorDict,\n abandonmentStateDict,\n abandonmentTimeout,\n limitBitrateByPortal,\n usePixelRatioInLimitBitrateByPortal,\n windowResizeEventCalled,\n elementWidth,\n elementHeight,\n manifestModel,\n dashManifestModel,\n adapter,\n videoModel,\n mediaPlayerModel,\n domStorage,\n playbackIndex,\n switchHistoryDict,\n droppedFramesHistory,\n throughputHistory,\n isUsingBufferOccupancyABRDict,\n metricsModel,\n dashMetrics,\n useDeadTimeLatency;\n\n function setup() {\n log = debug.log.bind(instance);\n\n resetInitialSettings();\n }\n\n function registerStreamType(type, streamProcessor) {\n switchHistoryDict[type] = SwitchRequestHistory(context).create();\n streamProcessorDict[type] = streamProcessor;\n abandonmentStateDict[type] = abandonmentStateDict[type] || {};\n abandonmentStateDict[type].state = ALLOW_LOAD;\n isUsingBufferOccupancyABRDict[type] = false;\n eventBus.on(Events.LOADING_PROGRESS, onFragmentLoadProgress, this);\n if (type == Constants.VIDEO) {\n eventBus.on(Events.QUALITY_CHANGE_RENDERED, onQualityChangeRendered, this);\n droppedFramesHistory = DroppedFramesHistory(context).create();\n setElementSize();\n }\n eventBus.on(Events.METRIC_ADDED, onMetricAdded, this);\n throughputHistory = ThroughputHistory(context).create({\n mediaPlayerModel: mediaPlayerModel\n });\n }\n\n function unRegisterStreamType(type) {\n delete streamProcessorDict[type];\n }\n\n function createAbrRulesCollection() {\n abrRulesCollection = ABRRulesCollection(context).create({\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n mediaPlayerModel: mediaPlayerModel,\n adapter: adapter\n });\n\n abrRulesCollection.initialize();\n }\n\n function resetInitialSettings() {\n autoSwitchBitrate = {video: true, audio: true};\n topQualities = {};\n qualityDict = {};\n bitrateDict = {};\n ratioDict = {};\n abandonmentStateDict = {};\n streamProcessorDict = {};\n switchHistoryDict = {};\n isUsingBufferOccupancyABRDict = {};\n limitBitrateByPortal = false;\n useDeadTimeLatency = true;\n usePixelRatioInLimitBitrateByPortal = false;\n if (windowResizeEventCalled === undefined) {\n windowResizeEventCalled = false;\n }\n playbackIndex = undefined;\n droppedFramesHistory = undefined;\n throughputHistory = undefined;\n clearTimeout(abandonmentTimeout);\n abandonmentTimeout = null;\n }\n\n function reset() {\n\n resetInitialSettings();\n\n eventBus.off(Events.LOADING_PROGRESS, onFragmentLoadProgress, this);\n eventBus.off(Events.QUALITY_CHANGE_RENDERED, onQualityChangeRendered, this);\n eventBus.off(Events.METRIC_ADDED, onMetricAdded, this);\n\n if (abrRulesCollection) {\n abrRulesCollection.reset();\n }\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.streamController) {\n streamController = config.streamController;\n }\n if (config.domStorage) {\n domStorage = config.domStorage;\n }\n if (config.mediaPlayerModel) {\n mediaPlayerModel = config.mediaPlayerModel;\n }\n if (config.metricsModel) {\n metricsModel = config.metricsModel;\n }\n if (config.dashMetrics) {\n dashMetrics = config.dashMetrics;\n }\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n if (config.adapter) {\n adapter = config.adapter;\n }\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n if (config.videoModel) {\n videoModel = config.videoModel;\n }\n }\n\n function onQualityChangeRendered(e) {\n if (e.mediaType === Constants.VIDEO) {\n playbackIndex = e.oldQuality;\n droppedFramesHistory.push(playbackIndex, videoModel.getPlaybackQuality());\n }\n }\n\n function onMetricAdded(e) {\n if (e.metric === MetricsConstants.HTTP_REQUEST && e.value && e.value.type === HTTPRequest.MEDIA_SEGMENT_TYPE && (e.mediaType === Constants.AUDIO || e.mediaType === Constants.VIDEO)) {\n throughputHistory.push(e.mediaType, e.value, useDeadTimeLatency);\n }\n\n if (e.metric === MetricsConstants.BUFFER_LEVEL && (e.mediaType === Constants.AUDIO || e.mediaType === Constants.VIDEO)) {\n updateIsUsingBufferOccupancyABR(e.mediaType, 0.001 * e.value.level);\n }\n }\n\n function getTopQualityIndexFor(type, id) {\n let idx;\n topQualities[id] = topQualities[id] || {};\n\n if (!topQualities[id].hasOwnProperty(type)) {\n topQualities[id][type] = 0;\n }\n\n idx = checkMaxBitrate(topQualities[id][type], type);\n idx = checkMaxRepresentationRatio(idx, type, topQualities[id][type]);\n idx = checkPortalSize(idx, type);\n return idx;\n }\n\n /**\n * @param {string} type\n * @returns {number} A value of the initial bitrate, kbps\n * @memberof AbrController#\n */\n function getInitialBitrateFor(type) {\n const savedBitrate = domStorage.getSavedBitrateSettings(type);\n\n if (!bitrateDict.hasOwnProperty(type)) {\n if (ratioDict.hasOwnProperty(type)) {\n const manifest = manifestModel.getValue();\n const representation = dashManifestModel.getAdaptationForType(manifest, 0, type).Representation;\n\n if (Array.isArray(representation)) {\n const repIdx = Math.max(Math.round(representation.length * ratioDict[type]) - 1, 0);\n bitrateDict[type] = representation[repIdx].bandwidth;\n } else {\n bitrateDict[type] = 0;\n }\n } else if (!isNaN(savedBitrate)) {\n bitrateDict[type] = savedBitrate;\n } else {\n bitrateDict[type] = (type === Constants.VIDEO) ? DEFAULT_VIDEO_BITRATE : DEFAULT_AUDIO_BITRATE;\n }\n }\n\n return bitrateDict[type];\n }\n\n /**\n * @param {string} type\n * @param {number} value A value of the initial bitrate, kbps\n * @memberof AbrController#\n */\n function setInitialBitrateFor(type, value) {\n bitrateDict[type] = value;\n }\n\n function getInitialRepresentationRatioFor(type) {\n if (!ratioDict.hasOwnProperty(type)) {\n return null;\n }\n\n return ratioDict[type];\n }\n\n function setInitialRepresentationRatioFor(type, value) {\n ratioDict[type] = value;\n }\n\n function getMaxAllowedBitrateFor(type) {\n if (bitrateDict.hasOwnProperty('max') && bitrateDict.max.hasOwnProperty(type)) {\n return bitrateDict.max[type];\n }\n return NaN;\n }\n\n function getMinAllowedBitrateFor(type) {\n if (bitrateDict.hasOwnProperty('min') && bitrateDict.min.hasOwnProperty(type)) {\n return bitrateDict.min[type];\n }\n return NaN;\n }\n\n //TODO change bitrateDict structure to hold one object for video and audio with initial and max values internal.\n // This means you need to update all the logic around initial bitrate DOMStorage, RebController etc...\n function setMaxAllowedBitrateFor(type, value) {\n bitrateDict.max = bitrateDict.max || {};\n bitrateDict.max[type] = value;\n }\n\n function setMinAllowedBitrateFor(type, value) {\n bitrateDict.min = bitrateDict.min || {};\n bitrateDict.min[type] = value;\n }\n\n function getMaxAllowedIndexFor(type) {\n const maxBitrate = getMaxAllowedBitrateFor(type);\n if (maxBitrate) {\n return getQualityForBitrate(streamProcessorDict[type].getMediaInfo(), maxBitrate);\n } else {\n return undefined;\n }\n }\n\n function getMinAllowedIndexFor(type) {\n const minBitrate = getMinAllowedBitrateFor(type);\n if (minBitrate) {\n const bitrateList = getBitrateList(streamProcessorDict[type].getMediaInfo());\n // This returns the quality index <= for the given bitrate\n let minIdx = getQualityForBitrate(streamProcessorDict[type].getMediaInfo(), minBitrate);\n if (bitrateList[minIdx] && minIdx < bitrateList.length - 1 && bitrateList[minIdx].bitrate < minBitrate * 1000) {\n minIdx++; // Go to the next bitrate\n }\n return minIdx;\n } else {\n return undefined;\n }\n }\n\n function getMaxAllowedRepresentationRatioFor(type) {\n if (ratioDict.hasOwnProperty('max') && ratioDict.max.hasOwnProperty(type)) {\n return ratioDict.max[type];\n }\n return 1;\n }\n\n function setMaxAllowedRepresentationRatioFor(type, value) {\n ratioDict.max = ratioDict.max || {};\n ratioDict.max[type] = value;\n }\n\n function getAutoSwitchBitrateFor(type) {\n return autoSwitchBitrate[type];\n }\n\n function setAutoSwitchBitrateFor(type, value) {\n autoSwitchBitrate[type] = value;\n }\n\n function getLimitBitrateByPortal() {\n return limitBitrateByPortal;\n }\n\n function setLimitBitrateByPortal(value) {\n limitBitrateByPortal = value;\n }\n\n function getUsePixelRatioInLimitBitrateByPortal() {\n return usePixelRatioInLimitBitrateByPortal;\n }\n\n function setUsePixelRatioInLimitBitrateByPortal(value) {\n usePixelRatioInLimitBitrateByPortal = value;\n }\n\n function getUseDeadTimeLatency() {\n return useDeadTimeLatency;\n }\n\n function setUseDeadTimeLatency(value) {\n useDeadTimeLatency = value;\n }\n\n function checkPlaybackQuality(type) {\n if (type && streamProcessorDict && streamProcessorDict[type]) {\n const streamInfo = streamProcessorDict[type].getStreamInfo();\n const streamId = streamInfo ? streamInfo.id : null;\n const oldQuality = getQualityFor(type);\n const rulesContext = RulesContext(context).create({\n abrController: instance,\n streamProcessor: streamProcessorDict[type],\n currentValue: oldQuality,\n switchHistory: switchHistoryDict[type],\n droppedFramesHistory: droppedFramesHistory,\n useBufferOccupancyABR: useBufferOccupancyABR(type)\n });\n\n if (droppedFramesHistory) {\n droppedFramesHistory.push(playbackIndex, videoModel.getPlaybackQuality());\n }\n\n if (getAutoSwitchBitrateFor(type)) {\n const minIdx = getMinAllowedIndexFor(type);\n const topQualityIdx = getTopQualityIndexFor(type, streamId);\n const switchRequest = abrRulesCollection.getMaxQuality(rulesContext);\n let newQuality = switchRequest.quality;\n if (minIdx !== undefined && newQuality < minIdx) {\n newQuality = minIdx;\n }\n if (newQuality > topQualityIdx) {\n newQuality = topQualityIdx;\n }\n\n switchHistoryDict[type].push({oldValue: oldQuality, newValue: newQuality});\n\n if (newQuality > SwitchRequest.NO_CHANGE && newQuality != oldQuality) {\n if (abandonmentStateDict[type].state === ALLOW_LOAD || newQuality > oldQuality) {\n changeQuality(type, oldQuality, newQuality, topQualityIdx, switchRequest.reason);\n }\n } else if (debug.getLogToBrowserConsole()) {\n const bufferLevel = dashMetrics.getCurrentBufferLevel(metricsModel.getReadOnlyMetricsFor(type));\n log('AbrController (' + type + ') stay on ' + oldQuality + '/' + topQualityIdx + ' (buffer: ' + bufferLevel + ')');\n }\n }\n }\n }\n\n function setPlaybackQuality(type, streamInfo, newQuality, reason) {\n const id = streamInfo.id;\n const oldQuality = getQualityFor(type);\n const isInt = newQuality !== null && !isNaN(newQuality) && (newQuality % 1 === 0);\n\n if (!isInt) throw new Error('argument is not an integer');\n\n const topQualityIdx = getTopQualityIndexFor(type, id);\n if (newQuality !== oldQuality && newQuality >= 0 && newQuality <= topQualityIdx) {\n changeQuality(type, oldQuality, newQuality, topQualityIdx, reason);\n }\n }\n\n function changeQuality(type, oldQuality, newQuality, topQualityIdx, reason) {\n if (type && streamProcessorDict[type]) {\n const streamInfo = streamProcessorDict[type].getStreamInfo();\n const id = streamInfo ? streamInfo.id : null;\n if (debug.getLogToBrowserConsole()) {\n const bufferLevel = dashMetrics.getCurrentBufferLevel(metricsModel.getReadOnlyMetricsFor(type));\n log('AbrController (' + type + ') switch from ' + oldQuality + ' to ' + newQuality + '/' + topQualityIdx + ' (buffer: ' + bufferLevel + ') ' + (reason ? JSON.stringify(reason) : '.'));\n }\n setQualityFor(type, id, newQuality);\n eventBus.trigger(Events.QUALITY_CHANGE_REQUESTED, {mediaType: type, streamInfo: streamInfo, oldQuality: oldQuality, newQuality: newQuality, reason: reason});\n }\n }\n\n function setAbandonmentStateFor(type, state) {\n abandonmentStateDict[type].state = state;\n }\n\n function getAbandonmentStateFor(type) {\n return abandonmentStateDict[type] ? abandonmentStateDict[type].state : null;\n }\n\n /**\n * @param {MediaInfo} mediaInfo\n * @param {number} bitrate A bitrate value, kbps\n * @param {number} latency Expected latency of connection, ms\n * @returns {number} A quality index <= for the given bitrate\n * @memberof AbrController#\n */\n function getQualityForBitrate(mediaInfo, bitrate, latency) {\n if (useDeadTimeLatency && latency && streamProcessorDict[mediaInfo.type].getCurrentRepresentationInfo() && streamProcessorDict[mediaInfo.type].getCurrentRepresentationInfo().fragmentDuration) {\n latency = latency / 1000;\n const fragmentDuration = streamProcessorDict[mediaInfo.type].getCurrentRepresentationInfo().fragmentDuration;\n if (latency > fragmentDuration) {\n return 0;\n } else {\n const deadTimeRatio = latency / fragmentDuration;\n bitrate = bitrate * (1 - deadTimeRatio);\n }\n }\n\n const bitrateList = getBitrateList(mediaInfo);\n if (!bitrateList || bitrateList.length === 0) {\n return QUALITY_DEFAULT;\n }\n\n for (let i = bitrateList.length - 1; i >= 0; i--) {\n const bitrateInfo = bitrateList[i];\n if (bitrate * 1000 >= bitrateInfo.bitrate) {\n return i;\n }\n }\n return 0;\n }\n\n /**\n * @param {MediaInfo} mediaInfo\n * @returns {Array|null} A list of {@link BitrateInfo} objects\n * @memberof AbrController#\n */\n function getBitrateList(mediaInfo) {\n if (!mediaInfo || !mediaInfo.bitrateList) return null;\n\n const bitrateList = mediaInfo.bitrateList;\n const type = mediaInfo.type;\n\n const infoList = [];\n let bitrateInfo;\n\n for (let i = 0, ln = bitrateList.length; i < ln; i++) {\n bitrateInfo = new BitrateInfo();\n bitrateInfo.mediaType = type;\n bitrateInfo.qualityIndex = i;\n bitrateInfo.bitrate = bitrateList[i].bandwidth;\n bitrateInfo.width = bitrateList[i].width;\n bitrateInfo.height = bitrateList[i].height;\n bitrateInfo.scanType = bitrateList[i].scanType;\n infoList.push(bitrateInfo);\n }\n\n return infoList;\n }\n\n function updateIsUsingBufferOccupancyABR(mediaType, bufferLevel) {\n const strategy = mediaPlayerModel.getABRStrategy();\n\n if (strategy === Constants.ABR_STRATEGY_BOLA) {\n isUsingBufferOccupancyABRDict[mediaType] = true;\n return;\n } else if (strategy === Constants.ABR_STRATEGY_THROUGHPUT) {\n isUsingBufferOccupancyABRDict[mediaType] = false;\n return;\n }\n // else ABR_STRATEGY_DYNAMIC\n\n const stableBufferTime = mediaPlayerModel.getStableBufferTime();\n const switchOnThreshold = stableBufferTime;\n const switchOffThreshold = 0.5 * stableBufferTime;\n\n const useBufferABR = isUsingBufferOccupancyABRDict[mediaType];\n const newUseBufferABR = bufferLevel > (useBufferABR ? switchOffThreshold : switchOnThreshold); // use hysteresis to avoid oscillating rules\n isUsingBufferOccupancyABRDict[mediaType] = newUseBufferABR;\n\n if (newUseBufferABR !== useBufferABR) {\n if (newUseBufferABR) {\n log('AbrController (' + mediaType + ') switching from throughput to buffer occupancy ABR rule (buffer: ' + bufferLevel.toFixed(3) + ').');\n } else {\n log('AbrController (' + mediaType + ') switching from buffer occupancy to throughput ABR rule (buffer: ' + bufferLevel.toFixed(3) + ').');\n }\n }\n }\n\n function useBufferOccupancyABR(mediaType) {\n return isUsingBufferOccupancyABRDict[mediaType];\n }\n\n function getThroughputHistory() {\n return throughputHistory;\n }\n\n function updateTopQualityIndex(mediaInfo) {\n const type = mediaInfo.type;\n const streamId = mediaInfo.streamInfo.id;\n const max = mediaInfo.representationCount - 1;\n\n setTopQualityIndex(type, streamId, max);\n\n return max;\n }\n\n function isPlayingAtTopQuality(streamInfo) {\n const streamId = streamInfo.id;\n const audioQuality = getQualityFor(Constants.AUDIO);\n const videoQuality = getQualityFor(Constants.VIDEO);\n\n const isAtTop = (audioQuality === getTopQualityIndexFor(Constants.AUDIO, streamId)) &&\n (videoQuality === getTopQualityIndexFor(Constants.VIDEO, streamId));\n\n return isAtTop;\n }\n\n function getQualityFor(type) {\n if (type && streamProcessorDict[type]) {\n const streamInfo = streamProcessorDict[type].getStreamInfo();\n const id = streamInfo ? streamInfo.id : null;\n let quality;\n\n if (id) {\n qualityDict[id] = qualityDict[id] || {};\n\n if (!qualityDict[id].hasOwnProperty(type)) {\n qualityDict[id][type] = QUALITY_DEFAULT;\n }\n\n quality = qualityDict[id][type];\n return quality;\n }\n }\n return QUALITY_DEFAULT;\n }\n\n function setQualityFor(type, id, value) {\n qualityDict[id] = qualityDict[id] || {};\n qualityDict[id][type] = value;\n }\n\n function setTopQualityIndex(type, id, value) {\n topQualities[id] = topQualities[id] || {};\n topQualities[id][type] = value;\n }\n\n function checkMaxBitrate(idx, type) {\n let newIdx = idx;\n\n if (!streamProcessorDict[type]) {\n return newIdx;\n }\n\n const minIdx = getMinAllowedIndexFor(type);\n if (minIdx !== undefined) {\n newIdx = Math.max (idx , minIdx);\n }\n\n const maxIdx = getMaxAllowedIndexFor(type);\n if (maxIdx !== undefined) {\n newIdx = Math.min (newIdx , maxIdx);\n }\n\n return newIdx;\n }\n\n function checkMaxRepresentationRatio(idx, type, maxIdx) {\n const maxRepresentationRatio = getMaxAllowedRepresentationRatioFor(type);\n if (isNaN(maxRepresentationRatio) || maxRepresentationRatio >= 1 || maxRepresentationRatio < 0) {\n return idx;\n }\n return Math.min( idx , Math.round(maxIdx * maxRepresentationRatio) );\n }\n\n function setWindowResizeEventCalled(value) {\n windowResizeEventCalled = value;\n }\n\n function setElementSize() {\n const hasPixelRatio = usePixelRatioInLimitBitrateByPortal && window.hasOwnProperty('devicePixelRatio');\n const pixelRatio = hasPixelRatio ? window.devicePixelRatio : 1;\n elementWidth = videoModel.getClientWidth() * pixelRatio;\n elementHeight = videoModel.getClientHeight() * pixelRatio;\n }\n\n function checkPortalSize(idx, type) {\n if (type !== Constants.VIDEO || !limitBitrateByPortal || !streamProcessorDict[type]) {\n return idx;\n }\n\n if (!windowResizeEventCalled) {\n setElementSize();\n }\n\n const manifest = manifestModel.getValue();\n const representation = dashManifestModel.getAdaptationForType(manifest, 0, type).Representation;\n let newIdx = idx;\n\n if (elementWidth > 0 && elementHeight > 0) {\n while (\n newIdx > 0 &&\n representation[newIdx] &&\n elementWidth < representation[newIdx].width &&\n elementWidth - representation[newIdx - 1].width < representation[newIdx].width - elementWidth\n ) {\n newIdx = newIdx - 1;\n }\n\n if (representation.length - 2 >= newIdx && representation[newIdx].width === representation[newIdx + 1].width) {\n newIdx = Math.min(idx, newIdx + 1);\n }\n }\n\n return newIdx;\n }\n\n function onFragmentLoadProgress(e) {\n const type = e.request.mediaType;\n if (getAutoSwitchBitrateFor(type)) {\n const streamProcessor = streamProcessorDict[type];\n if (!streamProcessor) return;// There may be a fragment load in progress when we switch periods and recreated some controllers.\n\n const rulesContext = RulesContext(context).create({\n abrController: instance,\n streamProcessor: streamProcessor,\n currentRequest: e.request,\n useBufferOccupancyABR: useBufferOccupancyABR(type)\n });\n const switchRequest = abrRulesCollection.shouldAbandonFragment(rulesContext);\n\n if (switchRequest.quality > SwitchRequest.NO_CHANGE) {\n const fragmentModel = streamProcessor.getFragmentModel();\n const request = fragmentModel.getRequests({state: FragmentModel.FRAGMENT_MODEL_LOADING, index: e.request.index})[0];\n if (request) {\n //TODO Check if we should abort or if better to finish download. check bytesLoaded/Total\n fragmentModel.abortRequests();\n setAbandonmentStateFor(type, ABANDON_LOAD);\n switchHistoryDict[type].reset();\n switchHistoryDict[type].push({oldValue: getQualityFor(type, streamController.getActiveStreamInfo()), newValue: switchRequest.quality, confidence: 1, reason: switchRequest.reason});\n setPlaybackQuality(type, streamController.getActiveStreamInfo(), switchRequest.quality, switchRequest.reason);\n\n clearTimeout(abandonmentTimeout);\n abandonmentTimeout = setTimeout(\n () => {setAbandonmentStateFor(type, ALLOW_LOAD); abandonmentTimeout = null;},\n mediaPlayerModel.getAbandonLoadTimeout()\n );\n }\n }\n }\n }\n\n instance = {\n isPlayingAtTopQuality: isPlayingAtTopQuality,\n updateTopQualityIndex: updateTopQualityIndex,\n getThroughputHistory: getThroughputHistory,\n getBitrateList: getBitrateList,\n getQualityForBitrate: getQualityForBitrate,\n getMaxAllowedBitrateFor: getMaxAllowedBitrateFor,\n getMinAllowedBitrateFor: getMinAllowedBitrateFor,\n setMaxAllowedBitrateFor: setMaxAllowedBitrateFor,\n setMinAllowedBitrateFor: setMinAllowedBitrateFor,\n getMaxAllowedIndexFor: getMaxAllowedIndexFor,\n getMinAllowedIndexFor: getMinAllowedIndexFor,\n getMaxAllowedRepresentationRatioFor: getMaxAllowedRepresentationRatioFor,\n setMaxAllowedRepresentationRatioFor: setMaxAllowedRepresentationRatioFor,\n getInitialBitrateFor: getInitialBitrateFor,\n setInitialBitrateFor: setInitialBitrateFor,\n getInitialRepresentationRatioFor: getInitialRepresentationRatioFor,\n setInitialRepresentationRatioFor: setInitialRepresentationRatioFor,\n setAutoSwitchBitrateFor: setAutoSwitchBitrateFor,\n getAutoSwitchBitrateFor: getAutoSwitchBitrateFor,\n getUseDeadTimeLatency: getUseDeadTimeLatency,\n setUseDeadTimeLatency: setUseDeadTimeLatency,\n setLimitBitrateByPortal: setLimitBitrateByPortal,\n getLimitBitrateByPortal: getLimitBitrateByPortal,\n getUsePixelRatioInLimitBitrateByPortal: getUsePixelRatioInLimitBitrateByPortal,\n setUsePixelRatioInLimitBitrateByPortal: setUsePixelRatioInLimitBitrateByPortal,\n getQualityFor: getQualityFor,\n getAbandonmentStateFor: getAbandonmentStateFor,\n setPlaybackQuality: setPlaybackQuality,\n checkPlaybackQuality: checkPlaybackQuality,\n getTopQualityIndexFor: getTopQualityIndexFor,\n setElementSize: setElementSize,\n setWindowResizeEventCalled: setWindowResizeEventCalled,\n createAbrRulesCollection: createAbrRulesCollection,\n registerStreamType: registerStreamType,\n unRegisterStreamType: unRegisterStreamType,\n setConfig: setConfig,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nAbrController.__dashjs_factory_name = 'AbrController';\nconst factory = FactoryMaker.getSingletonFactory(AbrController);\nfactory.ABANDON_LOAD = ABANDON_LOAD;\nfactory.QUALITY_DEFAULT = QUALITY_DEFAULT;\nFactoryMaker.updateSingletonFactory(AbrController.__dashjs_factory_name, factory);\nexport default factory;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport BaseURLTreeModel from '../models/BaseURLTreeModel';\nimport BaseURLSelector from '../utils/BaseURLSelector';\nimport URLUtils from '../utils/URLUtils';\nimport BaseURL from '../../dash/vo/BaseURL';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\n\nfunction BaseURLController() {\n\n let instance;\n let dashManifestModel;\n\n const context = this.context;\n const eventBus = EventBus(context).getInstance();\n const urlUtils = URLUtils(context).getInstance();\n\n let baseURLTreeModel,\n baseURLSelector;\n\n function onBlackListChanged(e) {\n baseURLTreeModel.invalidateSelectedIndexes(e.entry);\n }\n\n function setup() {\n baseURLTreeModel = BaseURLTreeModel(context).create();\n baseURLSelector = BaseURLSelector(context).create();\n\n eventBus.on(Events.SERVICE_LOCATION_BLACKLIST_CHANGED, onBlackListChanged, instance);\n }\n\n function setConfig(config) {\n if (config.baseURLTreeModel) {\n baseURLTreeModel = config.baseURLTreeModel;\n }\n\n if (config.baseURLSelector) {\n baseURLSelector = config.baseURLSelector;\n }\n\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n }\n\n function update(manifest) {\n baseURLTreeModel.update(manifest);\n baseURLSelector.chooseSelectorFromManifest(manifest);\n }\n\n function resolve(path) {\n const baseUrls = baseURLTreeModel.getForPath(path);\n\n const baseUrl = baseUrls.reduce((p, c) => {\n const b = baseURLSelector.select(c);\n\n if (b) {\n if (!urlUtils.isRelative(b.url)) {\n p.url = b.url;\n p.serviceLocation = b.serviceLocation;\n } else {\n p.url = urlUtils.resolve(b.url, p.url);\n }\n } else {\n return new BaseURL();\n }\n\n return p;\n }, new BaseURL());\n\n if (!urlUtils.isRelative(baseUrl.url)) {\n return baseUrl;\n }\n }\n\n function reset() {\n baseURLTreeModel.reset();\n baseURLSelector.reset();\n }\n\n function initialize(data) {\n\n // report config to baseURLTreeModel and baseURLSelector\n baseURLTreeModel.setConfig({\n dashManifestModel: dashManifestModel\n });\n baseURLSelector.setConfig({\n dashManifestModel: dashManifestModel\n });\n\n update(data);\n }\n\n instance = {\n reset: reset,\n initialize: initialize,\n resolve: resolve,\n setConfig: setConfig\n };\n\n setup();\n\n return instance;\n}\n\nBaseURLController.__dashjs_factory_name = 'BaseURLController';\nexport default FactoryMaker.getSingletonFactory(BaseURLController);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\nimport EventBus from '../../core/EventBus';\n\nfunction BlackListController(config) {\n\n let blacklist = [];\n\n const eventBus = EventBus(this.context).getInstance();\n const updateEventName = config.updateEventName;\n const addBlacklistEventName = config.addBlacklistEventName;\n\n function contains(query) {\n if (!blacklist.length || !query || !query.length) {\n return false;\n }\n\n return (blacklist.indexOf(query) !== -1);\n }\n\n function add(entry) {\n if (blacklist.indexOf(entry) !== -1) {\n return;\n }\n\n blacklist.push(entry);\n\n eventBus.trigger(\n updateEventName,\n {\n entry: entry\n }\n );\n }\n\n function onAddBlackList(e) {\n add(e.entry);\n }\n\n function setup() {\n if (addBlacklistEventName) {\n eventBus.on(addBlacklistEventName, onAddBlackList, this);\n }\n }\n\n function reset() {\n blacklist = [];\n }\n\n setup();\n\n return {\n add: add,\n contains: contains,\n reset: reset\n };\n}\n\nBlackListController.__dashjs_factory_name = 'BlackListController';\nexport default FactoryMaker.getClassFactory(BlackListController);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport FragmentModel from '../models/FragmentModel';\nimport SourceBufferController from './SourceBufferController';\nimport AbrController from './AbrController';\nimport MediaController from './MediaController';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport BoxParser from '../utils/BoxParser';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\nimport InitCache from '../utils/InitCache';\n\nconst BUFFER_LOADED = 'bufferLoaded';\nconst BUFFER_EMPTY = 'bufferStalled';\nconst STALL_THRESHOLD = 0.5;\n\nconst BUFFER_CONTROLLER_TYPE = 'BufferController';\n\nfunction BufferController(config) {\n\n const context = this.context;\n const eventBus = EventBus(context).getInstance();\n const metricsModel = config.metricsModel;\n const mediaPlayerModel = config.mediaPlayerModel;\n const sourceBufferController = config.sourceBufferController;\n const errHandler = config.errHandler;\n const streamController = config.streamController;\n const mediaController = config.mediaController;\n const adapter = config.adapter;\n const textController = config.textController;\n const abrController = config.abrController;\n const playbackController = config.playbackController;\n const type = config.type;\n const streamProcessor = config.streamProcessor;\n\n let instance,\n log,\n requiredQuality,\n isBufferingCompleted,\n bufferLevel,\n criticalBufferLevel,\n mediaSource,\n maxAppendedIndex,\n lastIndex,\n buffer,\n bufferState,\n appendedBytesInfo,\n wallclockTicked,\n appendingMediaChunk,\n isAppendingInProgress,\n isPruningInProgress,\n initCache,\n seekStartTime,\n seekClearedBufferingCompleted,\n isSafariOnMac;\n\n function setup() {\n log = Debug(context).getInstance().log.bind(instance);\n initCache = InitCache(context).getInstance();\n\n resetInitialSettings();\n }\n\n function getBufferControllerType() {\n return BUFFER_CONTROLLER_TYPE;\n }\n\n function initialize(Source) {\n setMediaSource(Source);\n\n requiredQuality = abrController.getQualityFor(type, streamProcessor.getStreamInfo());\n const ua = navigator.userAgent.toLowerCase();\n //This whole test is just for safari on a mac.\n isSafariOnMac = /safari/.test(ua) && /mac/.test(ua) && !/chrome/.test(ua) && !/windows phone/.test(ua);\n\n eventBus.on(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.on(Events.INIT_FRAGMENT_LOADED, onInitFragmentLoaded, this);\n eventBus.on(Events.MEDIA_FRAGMENT_LOADED, onMediaFragmentLoaded, this);\n eventBus.on(Events.QUALITY_CHANGE_REQUESTED, onQualityChanged, this);\n eventBus.on(Events.STREAM_COMPLETED, onStreamCompleted, this);\n eventBus.on(Events.PLAYBACK_PROGRESS, onPlaybackProgression, this);\n eventBus.on(Events.PLAYBACK_TIME_UPDATED, onPlaybackProgression, this);\n eventBus.on(Events.PLAYBACK_RATE_CHANGED, onPlaybackRateChanged, this);\n eventBus.on(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.on(Events.WALLCLOCK_TIME_UPDATED, onWallclockTimeUpdated, this);\n eventBus.on(Events.CURRENT_TRACK_CHANGED, onCurrentTrackChanged, this, EventBus.EVENT_PRIORITY_HIGH);\n eventBus.on(Events.SOURCEBUFFER_APPEND_COMPLETED, onAppended, this);\n eventBus.on(Events.SOURCEBUFFER_REMOVE_COMPLETED, onRemoved, this);\n\n if (isSafariOnMac) {\n eventBus.on(Events.PLAYBACK_SEEKED, onSeeked, this);\n }\n }\n\n function createBuffer(mediaInfo) {\n if (!mediaInfo || !mediaSource || !streamProcessor) return null;\n\n let sourceBuffer = null;\n\n try {\n sourceBuffer = sourceBufferController.createSourceBuffer(mediaSource, mediaInfo);\n\n if (sourceBuffer && sourceBuffer.hasOwnProperty(Constants.INITIALIZE)) {\n sourceBuffer.initialize(type, streamProcessor);\n }\n } catch (e) {\n errHandler.mediaSourceError('Error creating ' + type + ' source buffer.');\n }\n setBuffer(sourceBuffer);\n updateBufferTimestampOffset(streamProcessor.getRepresentationInfoForQuality(requiredQuality).MSETimeOffset);\n return sourceBuffer;\n }\n\n function isActive() {\n return streamProcessor && streamController ? streamProcessor.getStreamInfo().id === streamController.getActiveStreamInfo().id : false;\n }\n\n function onInitFragmentLoaded(e) {\n if (e.fragmentModel !== streamProcessor.getFragmentModel()) return;\n log('Init fragment finished loading saving to', type + '\\'s init cache');\n initCache.save(e.chunk);\n appendToBuffer(e.chunk);\n }\n\n function switchInitData(streamId, representationId) {\n const chunk = initCache.extract(streamId, representationId);\n if (chunk) {\n appendToBuffer(chunk);\n } else {\n eventBus.trigger(Events.INIT_REQUESTED, {sender: instance});\n }\n }\n\n function onMediaFragmentLoaded(e) {\n if (e.fragmentModel !== streamProcessor.getFragmentModel()) return;\n\n const chunk = e.chunk;\n const bytes = chunk.bytes;\n const quality = chunk.quality;\n const currentRepresentation = streamProcessor.getRepresentationInfoForQuality(quality);\n const eventStreamMedia = adapter.getEventsFor(currentRepresentation.mediaInfo, streamProcessor);\n const eventStreamTrack = adapter.getEventsFor(currentRepresentation, streamProcessor);\n\n if (eventStreamMedia && eventStreamMedia.length > 0 || eventStreamTrack && eventStreamTrack.length > 0) {\n const request = streamProcessor.getFragmentModel().getRequests({\n state: FragmentModel.FRAGMENT_MODEL_EXECUTED,\n quality: quality,\n index: chunk.index\n })[0];\n\n const events = handleInbandEvents(bytes, request, eventStreamMedia, eventStreamTrack);\n streamProcessor.getEventController().addInbandEvents(events);\n }\n\n appendToBuffer(chunk);\n }\n\n\n function appendToBuffer(chunk) {\n isAppendingInProgress = true;\n appendedBytesInfo = chunk;\n sourceBufferController.append(buffer, chunk);\n\n if (chunk.mediaInfo.type === Constants.VIDEO) {\n eventBus.trigger(Events.VIDEO_CHUNK_RECEIVED, {chunk: chunk});\n }\n }\n\n function onAppended(e) {\n if (buffer === e.buffer) {\n if (e.error) {\n if (e.error.code === SourceBufferController.QUOTA_EXCEEDED_ERROR_CODE) {\n criticalBufferLevel = sourceBufferController.getTotalBufferedTime(buffer) * 0.8;\n }\n if (e.error.code === SourceBufferController.QUOTA_EXCEEDED_ERROR_CODE || !hasEnoughSpaceToAppend()) {\n eventBus.trigger(Events.QUOTA_EXCEEDED, {sender: instance, criticalBufferLevel: criticalBufferLevel}); //Tells ScheduleController to stop scheduling.\n clearBuffer(getClearRange()); // Then we clear the buffer and onCleared event will tell ScheduleController to start scheduling again.\n }\n return;\n }\n\n if (appendedBytesInfo && !isNaN(appendedBytesInfo.index)) {\n maxAppendedIndex = Math.max(appendedBytesInfo.index, maxAppendedIndex);\n checkIfBufferingCompleted();\n }\n\n const ranges = sourceBufferController.getAllRanges(buffer);\n if (ranges && ranges.length > 0) {\n for (let i = 0, len = ranges.length; i < len; i++) {\n log('Buffered Range for type:', type, ':', ranges.start(i), ' - ', ranges.end(i));\n }\n }\n\n onPlaybackProgression();\n isAppendingInProgress = false;\n if (appendedBytesInfo) {\n eventBus.trigger(Events.BYTES_APPENDED, {\n sender: instance,\n quality: appendedBytesInfo.quality,\n startTime: appendedBytesInfo.start,\n index: appendedBytesInfo.index,\n bufferedRanges: ranges\n });\n }\n }\n }\n\n function onQualityChanged(e) {\n if (requiredQuality === e.newQuality || type !== e.mediaType || streamProcessor.getStreamInfo().id !== e.streamInfo.id) return;\n\n updateBufferTimestampOffset(streamProcessor.getRepresentationInfoForQuality(e.newQuality).MSETimeOffset);\n requiredQuality = e.newQuality;\n }\n\n //**********************************************************************\n // START Buffer Level, State & Sufficiency Handling.\n //**********************************************************************\n function onPlaybackSeeking() {\n if (isBufferingCompleted) {\n seekClearedBufferingCompleted = true;\n isBufferingCompleted = false;\n maxAppendedIndex = 0;\n }\n seekStartTime = undefined;\n onPlaybackProgression();\n }\n\n function getWorkingTime() {\n // This function returns current working time for buffer (either start time or current time if playback has started)\n let ret = playbackController.getTime();\n\n if (seekStartTime) {\n // if there is a seek start time, the first buffer data will be available on maximum value between first buffer range value and seek start time.\n const ranges = sourceBufferController.getAllRanges(buffer);\n if (ranges && ranges.length) {\n ret = Math.max(ranges.start(0), seekStartTime);\n }\n }\n return ret;\n }\n\n function onPlaybackProgression() {\n updateBufferLevel();\n addBufferMetrics();\n }\n\n function updateBufferLevel() {\n if (playbackController) {\n bufferLevel = sourceBufferController.getBufferLength(buffer, getWorkingTime());\n eventBus.trigger(Events.BUFFER_LEVEL_UPDATED, {sender: instance, bufferLevel: bufferLevel});\n checkIfSufficientBuffer();\n }\n }\n\n function addBufferMetrics() {\n if (!isActive()) return;\n metricsModel.addBufferState(type, bufferState, streamProcessor.getScheduleController().getBufferTarget());\n metricsModel.addBufferLevel(type, new Date(), bufferLevel * 1000);\n }\n\n function checkIfBufferingCompleted() {\n const isLastIdxAppended = maxAppendedIndex >= lastIndex - 1; // Handles 0 and non 0 based request index\n if (isLastIdxAppended && !isBufferingCompleted) {\n isBufferingCompleted = true;\n eventBus.trigger(Events.BUFFERING_COMPLETED, {sender: instance, streamInfo: streamProcessor.getStreamInfo()});\n }\n }\n\n function checkIfSufficientBuffer() {\n // No need to check buffer if type is not audio or video (for example if several errors occur during text parsing, so that the buffer cannot be filled, no error must occur on video playback)\n if (type !== 'audio' && type !== 'video') return;\n\n if (seekClearedBufferingCompleted && !isBufferingCompleted && playbackController && playbackController.getTimeToStreamEnd() - bufferLevel < STALL_THRESHOLD) {\n seekClearedBufferingCompleted = false;\n isBufferingCompleted = true;\n eventBus.trigger(Events.BUFFERING_COMPLETED, {sender: instance, streamInfo: streamProcessor.getStreamInfo()});\n }\n\n if (bufferLevel < STALL_THRESHOLD && !isBufferingCompleted) {\n notifyBufferStateChanged(BUFFER_EMPTY);\n } else {\n notifyBufferStateChanged(BUFFER_LOADED);\n }\n }\n\n function notifyBufferStateChanged(state) {\n if (bufferState === state || (type === Constants.FRAGMENTED_TEXT && textController.getAllTracksAreDisabled())) return;\n bufferState = state;\n addBufferMetrics();\n eventBus.trigger(Events.BUFFER_LEVEL_STATE_CHANGED, {sender: instance, state: state, mediaType: type, streamInfo: streamProcessor.getStreamInfo()});\n eventBus.trigger(state === BUFFER_LOADED ? Events.BUFFER_LOADED : Events.BUFFER_EMPTY, {mediaType: type});\n log(state === BUFFER_LOADED ? 'Got enough buffer to start.' : 'Waiting for more buffer before starting playback.');\n }\n\n\n function handleInbandEvents(data, request, mediaInbandEvents, trackInbandEvents) {\n const fragmentStartTime = Math.max(isNaN(request.startTime) ? 0 : request.startTime, 0);\n const eventStreams = [];\n const events = [];\n\n /* Extract the possible schemeIdUri : If a DASH client detects an event message box with a scheme that is not defined in MPD, the client is expected to ignore it */\n const inbandEvents = mediaInbandEvents.concat(trackInbandEvents);\n for (let i = 0, ln = inbandEvents.length; i < ln; i++) {\n eventStreams[inbandEvents[i].schemeIdUri] = inbandEvents[i];\n }\n\n const isoFile = BoxParser(context).getInstance().parse(data);\n const eventBoxes = isoFile.getBoxes('emsg');\n\n for (let i = 0, ln = eventBoxes.length; i < ln; i++) {\n const event = adapter.getEvent(eventBoxes[i], eventStreams, fragmentStartTime);\n\n if (event) {\n events.push(event);\n }\n }\n\n return events;\n }\n\n function hasEnoughSpaceToAppend() {\n const totalBufferedTime = sourceBufferController.getTotalBufferedTime(buffer);\n return (totalBufferedTime < criticalBufferLevel);\n }\n\n /* prune buffer on our own in background to avoid browsers pruning buffer silently */\n function pruneBuffer() {\n if (!buffer) return;\n if (type === Constants.FRAGMENTED_TEXT) return;\n const start = buffer.buffered.length ? buffer.buffered.start(0) : 0;\n const bufferToPrune = playbackController.getTime() - start - mediaPlayerModel.getBufferToKeep();\n if (bufferToPrune > 0) {\n log('pruning buffer: ' + bufferToPrune + ' seconds.');\n isPruningInProgress = true;\n sourceBufferController.remove(buffer, 0, Math.round(start + bufferToPrune), mediaSource);\n }\n }\n\n function getClearRange(threshold) {\n if (!buffer) return null;\n\n // we need to remove data that is more than one fragment before the video currentTime\n const currentTime = playbackController.getTime();\n const req = streamProcessor.getFragmentModel().getRequests({state: FragmentModel.FRAGMENT_MODEL_EXECUTED, time: currentTime, threshold: threshold})[0];\n const range = sourceBufferController.getBufferRange(buffer, currentTime);\n\n let removeEnd = (req && !isNaN(req.startTime)) ? req.startTime : Math.floor(currentTime);\n if ((range === null) && (buffer.buffered.length > 0)) {\n removeEnd = buffer.buffered.end(buffer.buffered.length - 1);\n }\n\n return {\n start: buffer.buffered.start(0),\n end: removeEnd\n };\n }\n\n function clearBuffer(range) {\n if (!range || !buffer) return;\n sourceBufferController.remove(buffer, range.start, range.end, mediaSource);\n }\n\n function onRemoved(e) {\n if (buffer !== e.buffer) return;\n\n if (isPruningInProgress) {\n isPruningInProgress = false;\n }\n\n updateBufferLevel();\n eventBus.trigger(Events.BUFFER_CLEARED, {sender: instance, from: e.from, to: e.to, hasEnoughSpaceToAppend: hasEnoughSpaceToAppend()});\n //TODO - REMEMBER removed a timerout hack calling clearBuffer after manifestInfo.minBufferTime * 1000 if !hasEnoughSpaceToAppend() Aug 04 2016\n }\n\n function updateBufferTimestampOffset(MSETimeOffset) {\n // Each track can have its own @presentationTimeOffset, so we should set the offset\n // if it has changed after switching the quality or updating an mpd\n if (buffer && buffer.timestampOffset !== MSETimeOffset && !isNaN(MSETimeOffset)) {\n buffer.timestampOffset = MSETimeOffset;\n }\n }\n\n function onDataUpdateCompleted(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor || e.error) return;\n updateBufferTimestampOffset(e.currentRepresentation.MSETimeOffset);\n }\n\n function onStreamCompleted(e) {\n if (e.fragmentModel !== streamProcessor.getFragmentModel()) return;\n lastIndex = e.request.index;\n checkIfBufferingCompleted();\n }\n\n function onCurrentTrackChanged(e) {\n if (!buffer || (e.newMediaInfo.type !== type) || (e.newMediaInfo.streamInfo.id !== streamProcessor.getStreamInfo().id)) return;\n if (mediaController.getSwitchMode(type) === MediaController.TRACK_SWITCH_MODE_ALWAYS_REPLACE) {\n clearBuffer(getClearRange(0));\n }\n }\n\n function onWallclockTimeUpdated() {\n wallclockTicked++;\n const secondsElapsed = (wallclockTicked * (mediaPlayerModel.getWallclockTimeUpdateInterval() / 1000));\n if ((secondsElapsed >= mediaPlayerModel.getBufferPruningInterval()) && !isAppendingInProgress) {\n wallclockTicked = 0;\n pruneBuffer();\n }\n }\n\n /*\n * Listener set only for MacOS Safari.\n * MacOS Safari doesn't like buffer being appended to the start of a buffered range.\n * It removes a little bit of buffer just after the segment we append.\n * Therefore, let's remove all buffer ahead of us after a seek.\n */\n function onSeeked() {\n removeBufferAhead(playbackController.getTime());\n }\n\n //Removes buffered ranges ahead. It will not remove anything part of the current buffer timeRange.\n function removeBufferAhead(time) {\n const ranges = sourceBufferController.getAllRanges(buffer);\n for (let i = 0; i < ranges.length; i++) {\n if (ranges.start(i) > time) {\n log('Removing buffer from: ' + ranges.start(i) + '-' + ranges.end(i));\n sourceBufferController.remove(buffer, ranges.start(i), ranges.end(i), mediaSource);\n }\n }\n }\n\n function onPlaybackRateChanged() {\n checkIfSufficientBuffer();\n }\n\n function getType() {\n return type;\n }\n\n function getStreamProcessor() {\n return streamProcessor;\n }\n\n function setSeekStartTime(value) {\n seekStartTime = value;\n }\n\n function getBuffer() {\n return buffer;\n }\n\n function setBuffer(value) {\n buffer = value;\n }\n\n function getBufferLevel() {\n return bufferLevel;\n }\n\n function setMediaSource(value) {\n mediaSource = value;\n }\n\n function getMediaSource() {\n return mediaSource;\n }\n\n function getIsBufferingCompleted() {\n return isBufferingCompleted;\n }\n\n function resetInitialSettings() {\n criticalBufferLevel = Number.POSITIVE_INFINITY;\n bufferState = BUFFER_EMPTY;\n requiredQuality = AbrController.QUALITY_DEFAULT;\n lastIndex = Number.POSITIVE_INFINITY;\n maxAppendedIndex = 0;\n appendedBytesInfo = null;\n appendingMediaChunk = false;\n isBufferingCompleted = false;\n isAppendingInProgress = false;\n isPruningInProgress = false;\n seekClearedBufferingCompleted = false;\n bufferLevel = 0;\n wallclockTicked = 0;\n }\n\n function reset(errored) {\n eventBus.off(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.off(Events.QUALITY_CHANGE_REQUESTED, onQualityChanged, this);\n eventBus.off(Events.INIT_FRAGMENT_LOADED, onInitFragmentLoaded, this);\n eventBus.off(Events.MEDIA_FRAGMENT_LOADED, onMediaFragmentLoaded, this);\n eventBus.off(Events.STREAM_COMPLETED, onStreamCompleted, this);\n eventBus.off(Events.CURRENT_TRACK_CHANGED, onCurrentTrackChanged, this);\n eventBus.off(Events.PLAYBACK_PROGRESS, onPlaybackProgression, this);\n eventBus.off(Events.PLAYBACK_TIME_UPDATED, onPlaybackProgression, this);\n eventBus.off(Events.PLAYBACK_RATE_CHANGED, onPlaybackRateChanged, this);\n eventBus.off(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.off(Events.WALLCLOCK_TIME_UPDATED, onWallclockTimeUpdated, this);\n eventBus.off(Events.SOURCEBUFFER_APPEND_COMPLETED, onAppended, this);\n eventBus.off(Events.SOURCEBUFFER_REMOVE_COMPLETED, onRemoved, this);\n\n if (isSafariOnMac) {\n eventBus.off(Events.PLAYBACK_SEEKED, onSeeked, this);\n }\n\n resetInitialSettings();\n\n if (!errored) {\n sourceBufferController.abort(mediaSource, buffer);\n sourceBufferController.removeSourceBuffer(mediaSource, buffer);\n }\n\n buffer = null;\n }\n\n instance = {\n getBufferControllerType: getBufferControllerType,\n initialize: initialize,\n createBuffer: createBuffer,\n getType: getType,\n getStreamProcessor: getStreamProcessor,\n setSeekStartTime: setSeekStartTime,\n getBuffer: getBuffer,\n setBuffer: setBuffer,\n getBufferLevel: getBufferLevel,\n setMediaSource: setMediaSource,\n getMediaSource: getMediaSource,\n getIsBufferingCompleted: getIsBufferingCompleted,\n switchInitData: switchInitData,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nBufferController.__dashjs_factory_name = BUFFER_CONTROLLER_TYPE;\nconst factory = FactoryMaker.getClassFactory(BufferController);\nfactory.BUFFER_LOADED = BUFFER_LOADED;\nfactory.BUFFER_EMPTY = BUFFER_EMPTY;\nFactoryMaker.updateClassFactory(BufferController.__dashjs_factory_name, factory);\nexport default factory;\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\nimport EventBus from '../../core/EventBus';\n\nfunction EventController() {\n\n const MPD_RELOAD_SCHEME = 'urn:mpeg:dash:event:2012';\n const MPD_RELOAD_VALUE = 1;\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n inlineEvents, // Holds all Inline Events not triggered yet\n inbandEvents, // Holds all Inband Events not triggered yet\n activeEvents, // Holds all Events currently running\n eventInterval, // variable holding the setInterval\n refreshDelay, // refreshTime for the setInterval\n presentationTimeThreshold,\n manifestModel,\n manifestUpdater,\n playbackController,\n isStarted;\n\n function setup() {\n resetInitialSettings();\n }\n\n function resetInitialSettings() {\n isStarted = false;\n inlineEvents = {};\n inbandEvents = {};\n activeEvents = {};\n eventInterval = null;\n refreshDelay = 100;\n presentationTimeThreshold = refreshDelay / 1000;\n }\n\n function checkSetConfigCall() {\n if (!manifestModel || !manifestUpdater || !playbackController) {\n throw new Error('setConfig function has to be called previously');\n }\n }\n\n function clear() {\n if (eventInterval !== null && isStarted) {\n clearInterval(eventInterval);\n eventInterval = null;\n isStarted = false;\n }\n }\n\n function start() {\n checkSetConfigCall();\n log('Start Event Controller');\n if (!isStarted && !isNaN(refreshDelay)) {\n isStarted = true;\n eventInterval = setInterval(onEventTimer, refreshDelay);\n }\n }\n\n /**\n * Add events to the eventList. Events that are not in the mpd anymore but not triggered yet will still be deleted\n * @param {Array.} values\n */\n function addInlineEvents(values) {\n checkSetConfigCall();\n\n inlineEvents = {};\n\n if (values) {\n for (var i = 0; i < values.length; i++) {\n var event = values[i];\n inlineEvents[event.id] = event;\n log('Add inline event with id ' + event.id);\n }\n }\n log('Added ' + values.length + ' inline events');\n }\n\n /**\n * i.e. processing of any one event message box with the same id is sufficient\n * @param {Array.} values\n */\n function addInbandEvents(values) {\n checkSetConfigCall();\n\n for (var i = 0; i < values.length; i++) {\n var event = values[i];\n if (!(event.id in inbandEvents)) {\n inbandEvents[event.id] = event;\n log('Add inband event with id ' + event.id);\n } else {\n log('Repeated event with id ' + event.id);\n }\n }\n }\n\n /**\n * Remove events which are over from the list\n */\n function removeEvents() {\n if (activeEvents) {\n var currentVideoTime = playbackController.getTime();\n var eventIds = Object.keys(activeEvents);\n\n for (var i = 0; i < eventIds.length; i++) {\n var eventId = eventIds[i];\n var curr = activeEvents[eventId];\n if (curr !== null && (curr.duration + curr.presentationTime) / curr.eventStream.timescale < currentVideoTime) {\n log('Remove Event ' + eventId + ' at time ' + currentVideoTime);\n curr = null;\n delete activeEvents[eventId];\n }\n }\n }\n }\n\n /**\n * Iterate through the eventList and trigger/remove the events\n */\n function onEventTimer() {\n triggerEvents(inbandEvents);\n triggerEvents(inlineEvents);\n removeEvents();\n }\n\n function refreshManifest() {\n checkSetConfigCall();\n manifestUpdater.refreshManifest();\n }\n\n function triggerEvents(events) {\n var currentVideoTime = playbackController.getTime();\n var presentationTime;\n\n /* == Trigger events that are ready == */\n if (events) {\n var eventIds = Object.keys(events);\n for (var i = 0; i < eventIds.length; i++) {\n var eventId = eventIds[i];\n var curr = events[eventId];\n\n if (curr !== undefined) {\n presentationTime = curr.presentationTime / curr.eventStream.timescale;\n if (presentationTime === 0 || (presentationTime <= currentVideoTime && presentationTime + presentationTimeThreshold > currentVideoTime)) {\n log('Start Event ' + eventId + ' at ' + currentVideoTime);\n if (curr.duration > 0) {\n activeEvents[eventId] = curr;\n }\n if (curr.eventStream.schemeIdUri == MPD_RELOAD_SCHEME && curr.eventStream.value == MPD_RELOAD_VALUE) {\n refreshManifest();\n } else {\n eventBus.trigger(curr.eventStream.schemeIdUri, {event: curr});\n }\n delete events[eventId];\n }\n }\n }\n }\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n\n if (config.manifestUpdater) {\n manifestUpdater = config.manifestUpdater;\n }\n\n if (config.playbackController) {\n playbackController = config.playbackController;\n }\n }\n\n function reset() {\n clear();\n resetInitialSettings();\n }\n\n instance = {\n addInlineEvents: addInlineEvents,\n addInbandEvents: addInbandEvents,\n clear: clear,\n start: start,\n setConfig: setConfig,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nEventController.__dashjs_factory_name = 'EventController';\nexport default FactoryMaker.getClassFactory(EventController);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport {HTTPRequest} from '../vo/metrics/HTTPRequest';\nimport DataChunk from '../vo/DataChunk';\nimport FragmentModel from '../models/FragmentModel';\nimport FragmentLoader from '../FragmentLoader';\nimport RequestModifier from '../utils/RequestModifier';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\n\nfunction FragmentController( config ) {\n\n const context = this.context;\n const log = Debug(context).getInstance().log;\n const eventBus = EventBus(context).getInstance();\n\n const errHandler = config.errHandler;\n const mediaPlayerModel = config.mediaPlayerModel;\n const metricsModel = config.metricsModel;\n\n let instance,\n fragmentModels;\n\n function setup() {\n resetInitialSettings();\n eventBus.on(Events.FRAGMENT_LOADING_COMPLETED, onFragmentLoadingCompleted, instance);\n }\n\n function getModel(type) {\n let model = fragmentModels[type];\n if (!model) {\n model = FragmentModel(context).create({\n metricsModel: metricsModel,\n fragmentLoader: FragmentLoader(context).create({\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n errHandler: errHandler,\n requestModifier: RequestModifier(context).getInstance()\n })\n });\n\n fragmentModels[type] = model;\n }\n\n return model;\n }\n\n function isInitializationRequest(request) {\n return (request && request.type && request.type === HTTPRequest.INIT_SEGMENT_TYPE);\n }\n\n function resetInitialSettings() {\n for (let model in fragmentModels) {\n fragmentModels[model].reset();\n }\n fragmentModels = {};\n }\n\n function reset() {\n eventBus.off(Events.FRAGMENT_LOADING_COMPLETED, onFragmentLoadingCompleted, this);\n resetInitialSettings();\n }\n\n function createDataChunk(bytes, request, streamId) {\n const chunk = new DataChunk();\n\n chunk.streamId = streamId;\n chunk.mediaInfo = request.mediaInfo;\n chunk.segmentType = request.type;\n chunk.start = request.startTime;\n chunk.duration = request.duration;\n chunk.end = chunk.start + chunk.duration;\n chunk.bytes = bytes;\n chunk.index = request.index;\n chunk.quality = request.quality;\n chunk.representationId = request.representationId;\n\n return chunk;\n }\n\n function onFragmentLoadingCompleted(e) {\n if (fragmentModels[e.request.mediaType] !== e.sender) {\n return;\n }\n\n const request = e.request;\n const bytes = e.response;\n const isInit = isInitializationRequest(request);\n const streamInfo = request.mediaInfo.streamInfo;\n\n if (e.error ) {\n if (e.request.mediaType === Constants.AUDIO || e.request.mediaType === Constants.VIDEO) {\n // add service location to blacklist controller - only for audio or video. text should not set errors\n eventBus.trigger(Events.SERVICE_LOCATION_BLACKLIST_ADD, {entry: e.request.serviceLocation});\n }\n }\n\n if (!bytes || !streamInfo) {\n log('No ' + request.mediaType + ' bytes to push or stream is inactive.');\n return;\n }\n\n const chunk = createDataChunk(bytes, request, streamInfo.id);\n eventBus.trigger(isInit ? Events.INIT_FRAGMENT_LOADED : Events.MEDIA_FRAGMENT_LOADED, {\n chunk: chunk,\n fragmentModel: e.sender\n });\n }\n\n instance = {\n getModel: getModel,\n isInitializationRequest: isInitializationRequest,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nFragmentController.__dashjs_factory_name = 'FragmentController';\nexport default FactoryMaker.getClassFactory(FragmentController);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport Events from '../../core/events/Events';\nimport EventBus from '../../core/EventBus';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\n\nconst TRACK_SWITCH_MODE_NEVER_REPLACE = 'neverReplace';\nconst TRACK_SWITCH_MODE_ALWAYS_REPLACE = 'alwaysReplace';\nconst TRACK_SELECTION_MODE_HIGHEST_BITRATE = 'highestBitrate';\nconst TRACK_SELECTION_MODE_WIDEST_RANGE = 'widestRange';\nconst DEFAULT_INIT_TRACK_SELECTION_MODE = TRACK_SELECTION_MODE_HIGHEST_BITRATE;\n\nfunction MediaController() {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n tracks,\n initialSettings,\n selectionMode,\n switchMode,\n errHandler,\n domStorage;\n\n const validTrackSwitchModes = [\n TRACK_SWITCH_MODE_ALWAYS_REPLACE,\n TRACK_SWITCH_MODE_NEVER_REPLACE\n ];\n\n const validTrackSelectionModes = [\n TRACK_SELECTION_MODE_HIGHEST_BITRATE,\n TRACK_SELECTION_MODE_WIDEST_RANGE\n ];\n\n function setup() {\n reset();\n }\n\n /**\n * @param {string} type\n * @param {StreamInfo} streamInfo\n * @memberof MediaController#\n */\n function checkInitialMediaSettingsForType(type, streamInfo) {\n let settings = getInitialSettings(type);\n let tracksForType = getTracksFor(type, streamInfo);\n let tracks = [];\n\n if (type === Constants.FRAGMENTED_TEXT) {\n // Choose the first track\n setTrack(tracksForType[0]);\n return;\n }\n\n if (!settings) {\n settings = domStorage.getSavedMediaSettings(type);\n setInitialSettings(type, settings);\n }\n\n if (!tracksForType || (tracksForType.length === 0)) return;\n\n if (settings) {\n tracksForType.forEach(function (track) {\n if (matchSettings(settings, track)) {\n tracks.push(track);\n }\n });\n }\n\n if (tracks.length === 0) {\n setTrack(selectInitialTrack(tracksForType));\n } else {\n if (tracks.length > 1) {\n setTrack(selectInitialTrack(tracks));\n } else {\n setTrack(tracks[0]);\n }\n }\n }\n\n /**\n * @param {MediaInfo} track\n * @memberof MediaController#\n */\n function addTrack(track) {\n let mediaType = track ? track.type : null;\n let streamId = track ? track.streamInfo.id : null;\n let initSettings = getInitialSettings(mediaType);\n\n if (!track || (!isMultiTrackSupportedByType(mediaType))) return;\n\n tracks[streamId] = tracks[streamId] || createTrackInfo();\n\n if (tracks[streamId][mediaType].list.indexOf(track) >= 0) return;\n\n tracks[streamId][mediaType].list.push(track);\n\n if (initSettings && (matchSettings(initSettings, track)) && !getCurrentTrackFor(mediaType, track.streamInfo)) {\n setTrack(track);\n }\n }\n\n /**\n * @param {string} type\n * @param {StreamInfo} streamInfo\n * @returns {Array}\n * @memberof MediaController#\n */\n function getTracksFor(type, streamInfo) {\n if (!type || !streamInfo) return [];\n\n let id = streamInfo.id;\n\n if (!tracks[id] || !tracks[id][type]) return [];\n\n return tracks[id][type].list;\n }\n\n /**\n * @param {string} type\n * @param {StreamInfo} streamInfo\n * @returns {Object|null}\n * @memberof MediaController#\n */\n function getCurrentTrackFor(type, streamInfo) {\n if (!type || !streamInfo || (streamInfo && !tracks[streamInfo.id])) return null;\n return tracks[streamInfo.id][type].current;\n }\n\n /**\n * @param {MediaInfo} track\n * @returns {boolean}\n * @memberof MediaController#\n */\n function isCurrentTrack(track) {\n let type = track.type;\n let id = track.streamInfo.id;\n\n return (tracks[id] && tracks[id][type] && isTracksEqual(tracks[id][type].current, track));\n }\n\n /**\n * @param {MediaInfo} track\n * @memberof MediaController#\n */\n function setTrack(track) {\n if (!track) return;\n\n let type = track.type;\n let streamInfo = track.streamInfo;\n let id = streamInfo.id;\n let current = getCurrentTrackFor(type, streamInfo);\n\n if (!tracks[id] || !tracks[id][type] || (current && isTracksEqual(track, current))) return;\n\n tracks[id][type].current = track;\n\n if (current) {\n eventBus.trigger(Events.CURRENT_TRACK_CHANGED, {oldMediaInfo: current, newMediaInfo: track, switchMode: switchMode[type]});\n }\n\n let settings = extractSettings(track);\n\n if (!settings || !tracks[id][type].storeLastSettings) return;\n\n if (settings.roles) {\n settings.role = settings.roles[0];\n delete settings.roles;\n }\n\n if (settings.accessibility) {\n settings.accessibility = settings.accessibility[0];\n }\n\n if (settings.audioChannelConfiguration) {\n settings.audioChannelConfiguration = settings.audioChannelConfiguration[0];\n }\n\n domStorage.setSavedMediaSettings(type, settings);\n }\n\n /**\n * @param {string} type\n * @param {Object} value\n * @memberof MediaController#\n */\n function setInitialSettings(type, value) {\n if (!type || !value) return;\n\n initialSettings[type] = value;\n }\n\n /**\n * @param {string} type\n * @returns {Object|null}\n * @memberof MediaController#\n */\n function getInitialSettings(type) {\n if (!type) return null;\n\n return initialSettings[type];\n }\n\n /**\n * @param {string} type\n * @param {string} mode\n * @memberof MediaController#\n */\n function setSwitchMode(type, mode) {\n const isModeSupported = (validTrackSwitchModes.indexOf(mode) !== -1);\n\n if (!isModeSupported) {\n log('track switch mode is not supported: ' + mode);\n return;\n }\n\n switchMode[type] = mode;\n }\n\n /**\n * @param {string} type\n * @returns {string} mode\n * @memberof MediaController#\n */\n function getSwitchMode(type) {\n return switchMode[type];\n }\n\n /**\n * @param {string} mode\n * @memberof MediaController#\n */\n function setSelectionModeForInitialTrack(mode) {\n const isModeSupported = (validTrackSelectionModes.indexOf(mode) !== -1);\n\n if (!isModeSupported) {\n log('track selection mode is not supported: ' + mode);\n return;\n }\n selectionMode = mode;\n }\n\n /**\n * @returns {string} mode\n * @memberof MediaController#\n */\n function getSelectionModeForInitialTrack() {\n return selectionMode || DEFAULT_INIT_TRACK_SELECTION_MODE;\n }\n\n /**\n * @param {string} type\n * @returns {boolean}\n * @memberof MediaController#\n */\n function isMultiTrackSupportedByType(type) {\n return (type === Constants.AUDIO || type === Constants.VIDEO || type === Constants.TEXT || type === Constants.FRAGMENTED_TEXT);\n }\n\n /**\n * @param {MediaInfo} t1 - first track to compare\n * @param {MediaInfo} t2 - second track to compare\n * @returns {boolean}\n * @memberof MediaController#\n */\n function isTracksEqual(t1, t2) {\n let sameId = t1.id === t2.id;\n let sameViewpoint = t1.viewpoint === t2.viewpoint;\n let sameLang = t1.lang === t2.lang;\n let sameRoles = t1.roles.toString() === t2.roles.toString();\n let sameAccessibility = t1.accessibility.toString() === t2.accessibility.toString();\n let sameAudioChannelConfiguration = t1.audioChannelConfiguration.toString() === t2.audioChannelConfiguration.toString();\n\n return (sameId && sameViewpoint && sameLang && sameRoles && sameAccessibility && sameAudioChannelConfiguration);\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.errHandler) {\n errHandler = config.errHandler;\n }\n\n if (config.domStorage) {\n domStorage = config.domStorage;\n }\n }\n\n /**\n * @memberof MediaController#\n */\n function reset() {\n tracks = {};\n resetInitialSettings();\n resetSwitchMode();\n }\n\n function extractSettings(mediaInfo) {\n let settings = {\n lang: mediaInfo.lang,\n viewpoint: mediaInfo.viewpoint,\n roles: mediaInfo.roles,\n accessibility: mediaInfo.accessibility,\n audioChannelConfiguration: mediaInfo.audioChannelConfiguration\n };\n let notEmpty = settings.lang || settings.viewpoint || (settings.role && settings.role.length > 0) ||\n (settings.accessibility && settings.accessibility.length > 0) || (settings.audioChannelConfiguration && settings.audioChannelConfiguration.length > 0);\n\n return notEmpty ? settings : null;\n }\n\n function matchSettings(settings, track) {\n let matchLang = !settings.lang || (settings.lang === track.lang);\n let matchViewPoint = !settings.viewpoint || (settings.viewpoint === track.viewpoint);\n let matchRole = !settings.role || !!track.roles.filter(function (item) {\n return item === settings.role;\n })[0];\n let matchAccessibility = !settings.accessibility || !!track.accessibility.filter(function (item) {\n return item === settings.accessibility;\n })[0];\n let matchAudioChannelConfiguration = !settings.audioChannelConfiguration || !!track.audioChannelConfiguration.filter(function (item) {\n return item === settings.audioChannelConfiguration;\n })[0];\n\n return (matchLang && matchViewPoint && matchRole && matchAccessibility && matchAudioChannelConfiguration);\n }\n\n function resetSwitchMode() {\n switchMode = {\n audio: TRACK_SWITCH_MODE_ALWAYS_REPLACE,\n video: TRACK_SWITCH_MODE_NEVER_REPLACE\n };\n }\n\n function resetInitialSettings() {\n initialSettings = {\n audio: null,\n video: null\n };\n }\n\n function selectInitialTrack(tracks) {\n let mode = getSelectionModeForInitialTrack();\n let tmpArr = [];\n const getTracksWithHighestBitrate = function (trackArr) {\n let max = 0;\n let result = [];\n let tmp;\n\n trackArr.forEach(function (track) {\n tmp = Math.max.apply(Math, track.bitrateList.map(function (obj) { return obj.bandwidth; }));\n\n if (tmp > max) {\n max = tmp;\n result = [track];\n } else if (tmp === max) {\n result.push(track);\n }\n });\n\n return result;\n };\n const getTracksWithWidestRange = function (trackArr) {\n let max = 0;\n let result = [];\n let tmp;\n\n trackArr.forEach(function (track) {\n tmp = track.representationCount;\n\n if (tmp > max) {\n max = tmp;\n result = [track];\n } else if (tmp === max) {\n result.push(track);\n }\n });\n\n return result;\n };\n\n switch (mode) {\n case TRACK_SELECTION_MODE_HIGHEST_BITRATE:\n tmpArr = getTracksWithHighestBitrate(tracks);\n\n if (tmpArr.length > 1) {\n tmpArr = getTracksWithWidestRange(tmpArr);\n }\n break;\n case TRACK_SELECTION_MODE_WIDEST_RANGE:\n tmpArr = getTracksWithWidestRange(tracks);\n\n if (tmpArr.length > 1) {\n tmpArr = getTracksWithHighestBitrate(tracks);\n }\n break;\n default:\n log('track selection mode is not supported: ' + mode);\n break;\n }\n\n return tmpArr[0];\n }\n\n function createTrackInfo() {\n return {\n audio: {\n list: [],\n storeLastSettings: true,\n current: null\n },\n video: {\n list: [],\n storeLastSettings: true,\n current: null\n },\n text: {\n list: [],\n storeLastSettings: true,\n current: null\n },\n fragmentedText: {\n list: [],\n storeLastSettings: true,\n current: null\n }\n };\n }\n\n instance = {\n checkInitialMediaSettingsForType: checkInitialMediaSettingsForType,\n addTrack: addTrack,\n getTracksFor: getTracksFor,\n getCurrentTrackFor: getCurrentTrackFor,\n isCurrentTrack: isCurrentTrack,\n setTrack: setTrack,\n setInitialSettings: setInitialSettings,\n getInitialSettings: getInitialSettings,\n setSwitchMode: setSwitchMode,\n getSwitchMode: getSwitchMode,\n setSelectionModeForInitialTrack: setSelectionModeForInitialTrack,\n getSelectionModeForInitialTrack: getSelectionModeForInitialTrack,\n isMultiTrackSupportedByType: isMultiTrackSupportedByType,\n isTracksEqual: isTracksEqual,\n setConfig: setConfig,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nMediaController.__dashjs_factory_name = 'MediaController';\nlet factory = FactoryMaker.getSingletonFactory(MediaController);\nfactory.TRACK_SWITCH_MODE_NEVER_REPLACE = TRACK_SWITCH_MODE_NEVER_REPLACE;\nfactory.TRACK_SWITCH_MODE_ALWAYS_REPLACE = TRACK_SWITCH_MODE_ALWAYS_REPLACE;\nfactory.TRACK_SELECTION_MODE_HIGHEST_BITRATE = TRACK_SELECTION_MODE_HIGHEST_BITRATE;\nfactory.TRACK_SELECTION_MODE_WIDEST_RANGE = TRACK_SELECTION_MODE_WIDEST_RANGE;\nfactory.DEFAULT_INIT_TRACK_SELECTION_MODE = DEFAULT_INIT_TRACK_SELECTION_MODE;\nFactoryMaker.updateSingletonFactory(MediaController.__dashjs_factory_name, factory);\nexport default factory;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\nimport EventBus from '../../core/EventBus';\n\nfunction BlackListController(config) {\n\n config = config || {};\n let blacklist = [];\n\n const eventBus = EventBus(this.context).getInstance();\n const updateEventName = config.updateEventName;\n const addBlacklistEventName = config.addBlacklistEventName;\n\n function contains(query) {\n if (!blacklist.length || !query || !query.length) {\n return false;\n }\n\n return (blacklist.indexOf(query) !== -1);\n }\n\n function add(entry) {\n if (blacklist.indexOf(entry) !== -1) {\n return;\n }\n\n blacklist.push(entry);\n\n eventBus.trigger(\n updateEventName,\n {\n entry: entry\n }\n );\n }\n\n function onAddBlackList(e) {\n add(e.entry);\n }\n\n function setup() {\n if (addBlacklistEventName) {\n eventBus.on(addBlacklistEventName, onAddBlackList, this);\n }\n }\n\n function reset() {\n blacklist = [];\n }\n\n setup();\n\n return {\n add: add,\n contains: contains,\n reset: reset\n };\n}\n\nBlackListController.__dashjs_factory_name = 'BlackListController';\nexport default FactoryMaker.getClassFactory(BlackListController);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport FragmentModel from '../models/FragmentModel';\nimport SourceBufferController from './SourceBufferController';\nimport AbrController from './AbrController';\nimport MediaController from './MediaController';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport BoxParser from '../utils/BoxParser';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\nimport InitCache from '../utils/InitCache';\n\nconst BUFFER_LOADED = 'bufferLoaded';\nconst BUFFER_EMPTY = 'bufferStalled';\nconst STALL_THRESHOLD = 0.5;\n\nconst BUFFER_CONTROLLER_TYPE = 'BufferController';\n\nfunction BufferController(config) {\n\n config = config || {};\n const context = this.context;\n const eventBus = EventBus(context).getInstance();\n const metricsModel = config.metricsModel;\n const mediaPlayerModel = config.mediaPlayerModel;\n const sourceBufferController = config.sourceBufferController;\n const errHandler = config.errHandler;\n const streamController = config.streamController;\n const mediaController = config.mediaController;\n const adapter = config.adapter;\n const textController = config.textController;\n const abrController = config.abrController;\n const playbackController = config.playbackController;\n const type = config.type;\n const streamProcessor = config.streamProcessor;\n\n let instance,\n log,\n requiredQuality,\n isBufferingCompleted,\n bufferLevel,\n criticalBufferLevel,\n mediaSource,\n maxAppendedIndex,\n lastIndex,\n buffer,\n bufferState,\n appendedBytesInfo,\n wallclockTicked,\n appendingMediaChunk,\n isAppendingInProgress,\n isPruningInProgress,\n initCache,\n seekStartTime,\n seekClearedBufferingCompleted,\n isSafariOnMac;\n\n function setup() {\n log = Debug(context).getInstance().log.bind(instance);\n initCache = InitCache(context).getInstance();\n\n resetInitialSettings();\n }\n\n function getBufferControllerType() {\n return BUFFER_CONTROLLER_TYPE;\n }\n\n function initialize(Source) {\n setMediaSource(Source);\n\n requiredQuality = abrController.getQualityFor(type, streamProcessor.getStreamInfo());\n const ua = navigator.userAgent.toLowerCase();\n //This whole test is just for safari on a mac.\n isSafariOnMac = /safari/.test(ua) && /mac/.test(ua) && !/chrome/.test(ua) && !/windows phone/.test(ua);\n\n eventBus.on(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.on(Events.INIT_FRAGMENT_LOADED, onInitFragmentLoaded, this);\n eventBus.on(Events.MEDIA_FRAGMENT_LOADED, onMediaFragmentLoaded, this);\n eventBus.on(Events.QUALITY_CHANGE_REQUESTED, onQualityChanged, this);\n eventBus.on(Events.STREAM_COMPLETED, onStreamCompleted, this);\n eventBus.on(Events.PLAYBACK_PROGRESS, onPlaybackProgression, this);\n eventBus.on(Events.PLAYBACK_TIME_UPDATED, onPlaybackProgression, this);\n eventBus.on(Events.PLAYBACK_RATE_CHANGED, onPlaybackRateChanged, this);\n eventBus.on(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.on(Events.WALLCLOCK_TIME_UPDATED, onWallclockTimeUpdated, this);\n eventBus.on(Events.CURRENT_TRACK_CHANGED, onCurrentTrackChanged, this, EventBus.EVENT_PRIORITY_HIGH);\n eventBus.on(Events.SOURCEBUFFER_APPEND_COMPLETED, onAppended, this);\n eventBus.on(Events.SOURCEBUFFER_REMOVE_COMPLETED, onRemoved, this);\n\n if (isSafariOnMac) {\n eventBus.on(Events.PLAYBACK_SEEKED, onSeeked, this);\n }\n }\n\n function createBuffer(mediaInfo) {\n if (!mediaInfo || !mediaSource || !streamProcessor) return null;\n\n let sourceBuffer = null;\n\n try {\n sourceBuffer = sourceBufferController.createSourceBuffer(mediaSource, mediaInfo);\n\n if (sourceBuffer && sourceBuffer.hasOwnProperty(Constants.INITIALIZE)) {\n sourceBuffer.initialize(type, streamProcessor);\n }\n } catch (e) {\n errHandler.mediaSourceError('Error creating ' + type + ' source buffer.');\n }\n setBuffer(sourceBuffer);\n updateBufferTimestampOffset(streamProcessor.getRepresentationInfoForQuality(requiredQuality).MSETimeOffset);\n return sourceBuffer;\n }\n\n function isActive() {\n return streamProcessor && streamController ? streamProcessor.getStreamInfo().id === streamController.getActiveStreamInfo().id : false;\n }\n\n function onInitFragmentLoaded(e) {\n if (e.fragmentModel !== streamProcessor.getFragmentModel()) return;\n log('Init fragment finished loading saving to', type + '\\'s init cache');\n initCache.save(e.chunk);\n appendToBuffer(e.chunk);\n }\n\n function switchInitData(streamId, representationId) {\n const chunk = initCache.extract(streamId, representationId);\n if (chunk) {\n appendToBuffer(chunk);\n } else {\n eventBus.trigger(Events.INIT_REQUESTED, {sender: instance});\n }\n }\n\n function onMediaFragmentLoaded(e) {\n if (e.fragmentModel !== streamProcessor.getFragmentModel()) return;\n\n const chunk = e.chunk;\n const bytes = chunk.bytes;\n const quality = chunk.quality;\n const currentRepresentation = streamProcessor.getRepresentationInfoForQuality(quality);\n const eventStreamMedia = adapter.getEventsFor(currentRepresentation.mediaInfo, streamProcessor);\n const eventStreamTrack = adapter.getEventsFor(currentRepresentation, streamProcessor);\n\n if (eventStreamMedia && eventStreamMedia.length > 0 || eventStreamTrack && eventStreamTrack.length > 0) {\n const request = streamProcessor.getFragmentModel().getRequests({\n state: FragmentModel.FRAGMENT_MODEL_EXECUTED,\n quality: quality,\n index: chunk.index\n })[0];\n\n const events = handleInbandEvents(bytes, request, eventStreamMedia, eventStreamTrack);\n streamProcessor.getEventController().addInbandEvents(events);\n }\n\n appendToBuffer(chunk);\n }\n\n\n function appendToBuffer(chunk) {\n isAppendingInProgress = true;\n appendedBytesInfo = chunk;\n sourceBufferController.append(buffer, chunk);\n\n if (chunk.mediaInfo.type === Constants.VIDEO) {\n eventBus.trigger(Events.VIDEO_CHUNK_RECEIVED, {chunk: chunk});\n }\n }\n\n function onAppended(e) {\n if (buffer === e.buffer) {\n if (e.error) {\n if (e.error.code === SourceBufferController.QUOTA_EXCEEDED_ERROR_CODE) {\n criticalBufferLevel = sourceBufferController.getTotalBufferedTime(buffer) * 0.8;\n }\n if (e.error.code === SourceBufferController.QUOTA_EXCEEDED_ERROR_CODE || !hasEnoughSpaceToAppend()) {\n eventBus.trigger(Events.QUOTA_EXCEEDED, {sender: instance, criticalBufferLevel: criticalBufferLevel}); //Tells ScheduleController to stop scheduling.\n clearBuffer(getClearRange()); // Then we clear the buffer and onCleared event will tell ScheduleController to start scheduling again.\n }\n return;\n }\n\n if (appendedBytesInfo && !isNaN(appendedBytesInfo.index)) {\n maxAppendedIndex = Math.max(appendedBytesInfo.index, maxAppendedIndex);\n checkIfBufferingCompleted();\n }\n\n const ranges = sourceBufferController.getAllRanges(buffer);\n if (ranges && ranges.length > 0) {\n for (let i = 0, len = ranges.length; i < len; i++) {\n log('Buffered Range for type:', type, ':', ranges.start(i), ' - ', ranges.end(i));\n }\n }\n\n onPlaybackProgression();\n isAppendingInProgress = false;\n if (appendedBytesInfo) {\n eventBus.trigger(Events.BYTES_APPENDED, {\n sender: instance,\n quality: appendedBytesInfo.quality,\n startTime: appendedBytesInfo.start,\n index: appendedBytesInfo.index,\n bufferedRanges: ranges\n });\n }\n }\n }\n\n function onQualityChanged(e) {\n if (requiredQuality === e.newQuality || type !== e.mediaType || streamProcessor.getStreamInfo().id !== e.streamInfo.id) return;\n\n updateBufferTimestampOffset(streamProcessor.getRepresentationInfoForQuality(e.newQuality).MSETimeOffset);\n requiredQuality = e.newQuality;\n }\n\n //**********************************************************************\n // START Buffer Level, State & Sufficiency Handling.\n //**********************************************************************\n function onPlaybackSeeking() {\n if (isBufferingCompleted) {\n seekClearedBufferingCompleted = true;\n isBufferingCompleted = false;\n maxAppendedIndex = 0;\n }\n seekStartTime = undefined;\n onPlaybackProgression();\n }\n\n function getWorkingTime() {\n // This function returns current working time for buffer (either start time or current time if playback has started)\n let ret = playbackController.getTime();\n\n if (seekStartTime) {\n // if there is a seek start time, the first buffer data will be available on maximum value between first buffer range value and seek start time.\n const ranges = sourceBufferController.getAllRanges(buffer);\n if (ranges && ranges.length) {\n ret = Math.max(ranges.start(0), seekStartTime);\n }\n }\n return ret;\n }\n\n function onPlaybackProgression() {\n updateBufferLevel();\n addBufferMetrics();\n }\n\n function updateBufferLevel() {\n if (playbackController) {\n bufferLevel = sourceBufferController.getBufferLength(buffer, getWorkingTime());\n eventBus.trigger(Events.BUFFER_LEVEL_UPDATED, {sender: instance, bufferLevel: bufferLevel});\n checkIfSufficientBuffer();\n }\n }\n\n function addBufferMetrics() {\n if (!isActive()) return;\n metricsModel.addBufferState(type, bufferState, streamProcessor.getScheduleController().getBufferTarget());\n metricsModel.addBufferLevel(type, new Date(), bufferLevel * 1000);\n }\n\n function checkIfBufferingCompleted() {\n const isLastIdxAppended = maxAppendedIndex >= lastIndex - 1; // Handles 0 and non 0 based request index\n if (isLastIdxAppended && !isBufferingCompleted) {\n isBufferingCompleted = true;\n eventBus.trigger(Events.BUFFERING_COMPLETED, {sender: instance, streamInfo: streamProcessor.getStreamInfo()});\n }\n }\n\n function checkIfSufficientBuffer() {\n // No need to check buffer if type is not audio or video (for example if several errors occur during text parsing, so that the buffer cannot be filled, no error must occur on video playback)\n if (type !== 'audio' && type !== 'video') return;\n\n if (seekClearedBufferingCompleted && !isBufferingCompleted && playbackController && playbackController.getTimeToStreamEnd() - bufferLevel < STALL_THRESHOLD) {\n seekClearedBufferingCompleted = false;\n isBufferingCompleted = true;\n eventBus.trigger(Events.BUFFERING_COMPLETED, {sender: instance, streamInfo: streamProcessor.getStreamInfo()});\n }\n\n if (bufferLevel < STALL_THRESHOLD && !isBufferingCompleted) {\n notifyBufferStateChanged(BUFFER_EMPTY);\n } else {\n notifyBufferStateChanged(BUFFER_LOADED);\n }\n }\n\n function notifyBufferStateChanged(state) {\n if (bufferState === state || (type === Constants.FRAGMENTED_TEXT && textController.getAllTracksAreDisabled())) return;\n bufferState = state;\n addBufferMetrics();\n eventBus.trigger(Events.BUFFER_LEVEL_STATE_CHANGED, {sender: instance, state: state, mediaType: type, streamInfo: streamProcessor.getStreamInfo()});\n eventBus.trigger(state === BUFFER_LOADED ? Events.BUFFER_LOADED : Events.BUFFER_EMPTY, {mediaType: type});\n log(state === BUFFER_LOADED ? 'Got enough buffer to start.' : 'Waiting for more buffer before starting playback.');\n }\n\n\n function handleInbandEvents(data, request, mediaInbandEvents, trackInbandEvents) {\n const fragmentStartTime = Math.max(isNaN(request.startTime) ? 0 : request.startTime, 0);\n const eventStreams = [];\n const events = [];\n\n /* Extract the possible schemeIdUri : If a DASH client detects an event message box with a scheme that is not defined in MPD, the client is expected to ignore it */\n const inbandEvents = mediaInbandEvents.concat(trackInbandEvents);\n for (let i = 0, ln = inbandEvents.length; i < ln; i++) {\n eventStreams[inbandEvents[i].schemeIdUri] = inbandEvents[i];\n }\n\n const isoFile = BoxParser(context).getInstance().parse(data);\n const eventBoxes = isoFile.getBoxes('emsg');\n\n for (let i = 0, ln = eventBoxes.length; i < ln; i++) {\n const event = adapter.getEvent(eventBoxes[i], eventStreams, fragmentStartTime);\n\n if (event) {\n events.push(event);\n }\n }\n\n return events;\n }\n\n function hasEnoughSpaceToAppend() {\n const totalBufferedTime = sourceBufferController.getTotalBufferedTime(buffer);\n return (totalBufferedTime < criticalBufferLevel);\n }\n\n /* prune buffer on our own in background to avoid browsers pruning buffer silently */\n function pruneBuffer() {\n if (!buffer) return;\n if (type === Constants.FRAGMENTED_TEXT) return;\n const start = buffer.buffered.length ? buffer.buffered.start(0) : 0;\n const bufferToPrune = playbackController.getTime() - start - mediaPlayerModel.getBufferToKeep();\n if (bufferToPrune > 0) {\n log('pruning buffer: ' + bufferToPrune + ' seconds.');\n isPruningInProgress = true;\n sourceBufferController.remove(buffer, 0, Math.round(start + bufferToPrune), mediaSource);\n }\n }\n\n function getClearRange(threshold) {\n if (!buffer) return null;\n\n // we need to remove data that is more than one fragment before the video currentTime\n const currentTime = playbackController.getTime();\n const req = streamProcessor.getFragmentModel().getRequests({state: FragmentModel.FRAGMENT_MODEL_EXECUTED, time: currentTime, threshold: threshold})[0];\n const range = sourceBufferController.getBufferRange(buffer, currentTime);\n\n let removeEnd = (req && !isNaN(req.startTime)) ? req.startTime : Math.floor(currentTime);\n if ((range === null) && (buffer.buffered.length > 0)) {\n removeEnd = buffer.buffered.end(buffer.buffered.length - 1);\n }\n\n return {\n start: buffer.buffered.start(0),\n end: removeEnd\n };\n }\n\n function clearBuffer(range) {\n if (!range || !buffer) return;\n sourceBufferController.remove(buffer, range.start, range.end, mediaSource);\n }\n\n function onRemoved(e) {\n if (buffer !== e.buffer) return;\n\n if (isPruningInProgress) {\n isPruningInProgress = false;\n }\n\n updateBufferLevel();\n eventBus.trigger(Events.BUFFER_CLEARED, {sender: instance, from: e.from, to: e.to, hasEnoughSpaceToAppend: hasEnoughSpaceToAppend()});\n //TODO - REMEMBER removed a timerout hack calling clearBuffer after manifestInfo.minBufferTime * 1000 if !hasEnoughSpaceToAppend() Aug 04 2016\n }\n\n function updateBufferTimestampOffset(MSETimeOffset) {\n // Each track can have its own @presentationTimeOffset, so we should set the offset\n // if it has changed after switching the quality or updating an mpd\n if (buffer && buffer.timestampOffset !== MSETimeOffset && !isNaN(MSETimeOffset)) {\n buffer.timestampOffset = MSETimeOffset;\n }\n }\n\n function onDataUpdateCompleted(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor || e.error) return;\n updateBufferTimestampOffset(e.currentRepresentation.MSETimeOffset);\n }\n\n function onStreamCompleted(e) {\n if (e.fragmentModel !== streamProcessor.getFragmentModel()) return;\n lastIndex = e.request.index;\n checkIfBufferingCompleted();\n }\n\n function onCurrentTrackChanged(e) {\n if (!buffer || (e.newMediaInfo.type !== type) || (e.newMediaInfo.streamInfo.id !== streamProcessor.getStreamInfo().id)) return;\n if (mediaController.getSwitchMode(type) === MediaController.TRACK_SWITCH_MODE_ALWAYS_REPLACE) {\n clearBuffer(getClearRange(0));\n }\n }\n\n function onWallclockTimeUpdated() {\n wallclockTicked++;\n const secondsElapsed = (wallclockTicked * (mediaPlayerModel.getWallclockTimeUpdateInterval() / 1000));\n if ((secondsElapsed >= mediaPlayerModel.getBufferPruningInterval()) && !isAppendingInProgress) {\n wallclockTicked = 0;\n pruneBuffer();\n }\n }\n\n /*\n * Listener set only for MacOS Safari.\n * MacOS Safari doesn't like buffer being appended to the start of a buffered range.\n * It removes a little bit of buffer just after the segment we append.\n * Therefore, let's remove all buffer ahead of us after a seek.\n */\n function onSeeked() {\n removeBufferAhead(playbackController.getTime());\n }\n\n //Removes buffered ranges ahead. It will not remove anything part of the current buffer timeRange.\n function removeBufferAhead(time) {\n const ranges = sourceBufferController.getAllRanges(buffer);\n for (let i = 0; i < ranges.length; i++) {\n if (ranges.start(i) > time) {\n log('Removing buffer from: ' + ranges.start(i) + '-' + ranges.end(i));\n sourceBufferController.remove(buffer, ranges.start(i), ranges.end(i), mediaSource);\n }\n }\n }\n\n function onPlaybackRateChanged() {\n checkIfSufficientBuffer();\n }\n\n function getType() {\n return type;\n }\n\n function getStreamProcessor() {\n return streamProcessor;\n }\n\n function setSeekStartTime(value) {\n seekStartTime = value;\n }\n\n function getBuffer() {\n return buffer;\n }\n\n function setBuffer(value) {\n buffer = value;\n }\n\n function getBufferLevel() {\n return bufferLevel;\n }\n\n function setMediaSource(value) {\n mediaSource = value;\n }\n\n function getMediaSource() {\n return mediaSource;\n }\n\n function getIsBufferingCompleted() {\n return isBufferingCompleted;\n }\n\n function resetInitialSettings() {\n criticalBufferLevel = Number.POSITIVE_INFINITY;\n bufferState = BUFFER_EMPTY;\n requiredQuality = AbrController.QUALITY_DEFAULT;\n lastIndex = Number.POSITIVE_INFINITY;\n maxAppendedIndex = 0;\n appendedBytesInfo = null;\n appendingMediaChunk = false;\n isBufferingCompleted = false;\n isAppendingInProgress = false;\n isPruningInProgress = false;\n seekClearedBufferingCompleted = false;\n bufferLevel = 0;\n wallclockTicked = 0;\n }\n\n function reset(errored) {\n eventBus.off(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.off(Events.QUALITY_CHANGE_REQUESTED, onQualityChanged, this);\n eventBus.off(Events.INIT_FRAGMENT_LOADED, onInitFragmentLoaded, this);\n eventBus.off(Events.MEDIA_FRAGMENT_LOADED, onMediaFragmentLoaded, this);\n eventBus.off(Events.STREAM_COMPLETED, onStreamCompleted, this);\n eventBus.off(Events.CURRENT_TRACK_CHANGED, onCurrentTrackChanged, this);\n eventBus.off(Events.PLAYBACK_PROGRESS, onPlaybackProgression, this);\n eventBus.off(Events.PLAYBACK_TIME_UPDATED, onPlaybackProgression, this);\n eventBus.off(Events.PLAYBACK_RATE_CHANGED, onPlaybackRateChanged, this);\n eventBus.off(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.off(Events.WALLCLOCK_TIME_UPDATED, onWallclockTimeUpdated, this);\n eventBus.off(Events.SOURCEBUFFER_APPEND_COMPLETED, onAppended, this);\n eventBus.off(Events.SOURCEBUFFER_REMOVE_COMPLETED, onRemoved, this);\n\n if (isSafariOnMac) {\n eventBus.off(Events.PLAYBACK_SEEKED, onSeeked, this);\n }\n\n resetInitialSettings();\n\n if (!errored) {\n sourceBufferController.abort(mediaSource, buffer);\n sourceBufferController.removeSourceBuffer(mediaSource, buffer);\n }\n\n buffer = null;\n }\n\n instance = {\n getBufferControllerType: getBufferControllerType,\n initialize: initialize,\n createBuffer: createBuffer,\n getType: getType,\n getStreamProcessor: getStreamProcessor,\n setSeekStartTime: setSeekStartTime,\n getBuffer: getBuffer,\n setBuffer: setBuffer,\n getBufferLevel: getBufferLevel,\n setMediaSource: setMediaSource,\n getMediaSource: getMediaSource,\n getIsBufferingCompleted: getIsBufferingCompleted,\n switchInitData: switchInitData,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nBufferController.__dashjs_factory_name = BUFFER_CONTROLLER_TYPE;\nconst factory = FactoryMaker.getClassFactory(BufferController);\nfactory.BUFFER_LOADED = BUFFER_LOADED;\nfactory.BUFFER_EMPTY = BUFFER_EMPTY;\nFactoryMaker.updateClassFactory(BufferController.__dashjs_factory_name, factory);\nexport default factory;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\nimport EventBus from '../../core/EventBus';\n\nfunction EventController() {\n\n const MPD_RELOAD_SCHEME = 'urn:mpeg:dash:event:2012';\n const MPD_RELOAD_VALUE = 1;\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n inlineEvents, // Holds all Inline Events not triggered yet\n inbandEvents, // Holds all Inband Events not triggered yet\n activeEvents, // Holds all Events currently running\n eventInterval, // variable holding the setInterval\n refreshDelay, // refreshTime for the setInterval\n presentationTimeThreshold,\n manifestModel,\n manifestUpdater,\n playbackController,\n isStarted;\n\n function setup() {\n resetInitialSettings();\n }\n\n function resetInitialSettings() {\n isStarted = false;\n inlineEvents = {};\n inbandEvents = {};\n activeEvents = {};\n eventInterval = null;\n refreshDelay = 100;\n presentationTimeThreshold = refreshDelay / 1000;\n }\n\n function checkSetConfigCall() {\n if (!manifestModel || !manifestUpdater || !playbackController) {\n throw new Error('setConfig function has to be called previously');\n }\n }\n\n function stop() {\n if (eventInterval !== null && isStarted) {\n clearInterval(eventInterval);\n eventInterval = null;\n isStarted = false;\n }\n }\n\n function start() {\n checkSetConfigCall();\n log('Start Event Controller');\n if (!isStarted && !isNaN(refreshDelay)) {\n isStarted = true;\n eventInterval = setInterval(onEventTimer, refreshDelay);\n }\n }\n\n /**\n * Add events to the eventList. Events that are not in the mpd anymore but not triggered yet will still be deleted\n * @param {Array.} values\n */\n function addInlineEvents(values) {\n checkSetConfigCall();\n\n inlineEvents = {};\n\n if (values) {\n for (var i = 0; i < values.length; i++) {\n var event = values[i];\n inlineEvents[event.id] = event;\n log('Add inline event with id ' + event.id);\n }\n }\n log('Added ' + values.length + ' inline events');\n }\n\n /**\n * i.e. processing of any one event message box with the same id is sufficient\n * @param {Array.} values\n */\n function addInbandEvents(values) {\n checkSetConfigCall();\n\n for (var i = 0; i < values.length; i++) {\n var event = values[i];\n if (!(event.id in inbandEvents)) {\n inbandEvents[event.id] = event;\n log('Add inband event with id ' + event.id);\n } else {\n log('Repeated event with id ' + event.id);\n }\n }\n }\n\n /**\n * Remove events which are over from the list\n */\n function removeEvents() {\n if (activeEvents) {\n var currentVideoTime = playbackController.getTime();\n var eventIds = Object.keys(activeEvents);\n\n for (var i = 0; i < eventIds.length; i++) {\n var eventId = eventIds[i];\n var curr = activeEvents[eventId];\n if (curr !== null && (curr.duration + curr.presentationTime) / curr.eventStream.timescale < currentVideoTime) {\n log('Remove Event ' + eventId + ' at time ' + currentVideoTime);\n curr = null;\n delete activeEvents[eventId];\n }\n }\n }\n }\n\n /**\n * Iterate through the eventList and trigger/remove the events\n */\n function onEventTimer() {\n triggerEvents(inbandEvents);\n triggerEvents(inlineEvents);\n removeEvents();\n }\n\n function refreshManifest() {\n checkSetConfigCall();\n manifestUpdater.refreshManifest();\n }\n\n function triggerEvents(events) {\n var currentVideoTime = playbackController.getTime();\n var presentationTime;\n\n /* == Trigger events that are ready == */\n if (events) {\n var eventIds = Object.keys(events);\n for (var i = 0; i < eventIds.length; i++) {\n var eventId = eventIds[i];\n var curr = events[eventId];\n\n if (curr !== undefined) {\n presentationTime = curr.presentationTime / curr.eventStream.timescale;\n if (presentationTime === 0 || (presentationTime <= currentVideoTime && presentationTime + presentationTimeThreshold > currentVideoTime)) {\n log('Start Event ' + eventId + ' at ' + currentVideoTime);\n if (curr.duration > 0) {\n activeEvents[eventId] = curr;\n }\n if (curr.eventStream.schemeIdUri == MPD_RELOAD_SCHEME && curr.eventStream.value == MPD_RELOAD_VALUE) {\n refreshManifest();\n } else {\n eventBus.trigger(curr.eventStream.schemeIdUri, {event: curr});\n }\n delete events[eventId];\n }\n }\n }\n }\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n\n if (config.manifestUpdater) {\n manifestUpdater = config.manifestUpdater;\n }\n\n if (config.playbackController) {\n playbackController = config.playbackController;\n }\n }\n\n function reset() {\n stop();\n resetInitialSettings();\n }\n\n instance = {\n addInlineEvents: addInlineEvents,\n addInbandEvents: addInbandEvents,\n stop: stop,\n start: start,\n setConfig: setConfig,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nEventController.__dashjs_factory_name = 'EventController';\nexport default FactoryMaker.getClassFactory(EventController);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport {HTTPRequest} from '../vo/metrics/HTTPRequest';\nimport DataChunk from '../vo/DataChunk';\nimport FragmentModel from '../models/FragmentModel';\nimport FragmentLoader from '../FragmentLoader';\nimport RequestModifier from '../utils/RequestModifier';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\n\nfunction FragmentController( config ) {\n\n config = config || {};\n const context = this.context;\n const log = Debug(context).getInstance().log;\n const eventBus = EventBus(context).getInstance();\n\n const errHandler = config.errHandler;\n const mediaPlayerModel = config.mediaPlayerModel;\n const metricsModel = config.metricsModel;\n\n let instance,\n fragmentModels;\n\n function setup() {\n resetInitialSettings();\n eventBus.on(Events.FRAGMENT_LOADING_COMPLETED, onFragmentLoadingCompleted, instance);\n }\n\n function getModel(type) {\n let model = fragmentModels[type];\n if (!model) {\n model = FragmentModel(context).create({\n metricsModel: metricsModel,\n fragmentLoader: FragmentLoader(context).create({\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n errHandler: errHandler,\n requestModifier: RequestModifier(context).getInstance()\n })\n });\n\n fragmentModels[type] = model;\n }\n\n return model;\n }\n\n function isInitializationRequest(request) {\n return (request && request.type && request.type === HTTPRequest.INIT_SEGMENT_TYPE);\n }\n\n function resetInitialSettings() {\n for (let model in fragmentModels) {\n fragmentModels[model].reset();\n }\n fragmentModels = {};\n }\n\n function reset() {\n eventBus.off(Events.FRAGMENT_LOADING_COMPLETED, onFragmentLoadingCompleted, this);\n resetInitialSettings();\n }\n\n function createDataChunk(bytes, request, streamId) {\n const chunk = new DataChunk();\n\n chunk.streamId = streamId;\n chunk.mediaInfo = request.mediaInfo;\n chunk.segmentType = request.type;\n chunk.start = request.startTime;\n chunk.duration = request.duration;\n chunk.end = chunk.start + chunk.duration;\n chunk.bytes = bytes;\n chunk.index = request.index;\n chunk.quality = request.quality;\n chunk.representationId = request.representationId;\n\n return chunk;\n }\n\n function onFragmentLoadingCompleted(e) {\n if (fragmentModels[e.request.mediaType] !== e.sender) {\n return;\n }\n\n const request = e.request;\n const bytes = e.response;\n const isInit = isInitializationRequest(request);\n const streamInfo = request.mediaInfo.streamInfo;\n\n if (e.error ) {\n if (e.request.mediaType === Constants.AUDIO || e.request.mediaType === Constants.VIDEO) {\n // add service location to blacklist controller - only for audio or video. text should not set errors\n eventBus.trigger(Events.SERVICE_LOCATION_BLACKLIST_ADD, {entry: e.request.serviceLocation});\n }\n }\n\n if (!bytes || !streamInfo) {\n log('No ' + request.mediaType + ' bytes to push or stream is inactive.');\n return;\n }\n\n const chunk = createDataChunk(bytes, request, streamInfo.id);\n eventBus.trigger(isInit ? Events.INIT_FRAGMENT_LOADED : Events.MEDIA_FRAGMENT_LOADED, {\n chunk: chunk,\n fragmentModel: e.sender\n });\n }\n\n instance = {\n getModel: getModel,\n isInitializationRequest: isInitializationRequest,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nFragmentController.__dashjs_factory_name = 'FragmentController';\nexport default FactoryMaker.getClassFactory(FragmentController);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport Events from '../../core/events/Events';\nimport EventBus from '../../core/EventBus';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\n\nconst TRACK_SWITCH_MODE_NEVER_REPLACE = 'neverReplace';\nconst TRACK_SWITCH_MODE_ALWAYS_REPLACE = 'alwaysReplace';\nconst TRACK_SELECTION_MODE_HIGHEST_BITRATE = 'highestBitrate';\nconst TRACK_SELECTION_MODE_WIDEST_RANGE = 'widestRange';\nconst DEFAULT_INIT_TRACK_SELECTION_MODE = TRACK_SELECTION_MODE_HIGHEST_BITRATE;\n\nfunction MediaController() {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n tracks,\n initialSettings,\n selectionMode,\n switchMode,\n errHandler,\n domStorage;\n\n const validTrackSwitchModes = [\n TRACK_SWITCH_MODE_ALWAYS_REPLACE,\n TRACK_SWITCH_MODE_NEVER_REPLACE\n ];\n\n const validTrackSelectionModes = [\n TRACK_SELECTION_MODE_HIGHEST_BITRATE,\n TRACK_SELECTION_MODE_WIDEST_RANGE\n ];\n\n function setup() {\n reset();\n }\n\n /**\n * @param {string} type\n * @param {StreamInfo} streamInfo\n * @memberof MediaController#\n */\n function checkInitialMediaSettingsForType(type, streamInfo) {\n let settings = getInitialSettings(type);\n let tracksForType = getTracksFor(type, streamInfo);\n let tracks = [];\n\n if (type === Constants.FRAGMENTED_TEXT) {\n // Choose the first track\n setTrack(tracksForType[0]);\n return;\n }\n\n if (!settings) {\n settings = domStorage.getSavedMediaSettings(type);\n setInitialSettings(type, settings);\n }\n\n if (!tracksForType || (tracksForType.length === 0)) return;\n\n if (settings) {\n tracksForType.forEach(function (track) {\n if (matchSettings(settings, track)) {\n tracks.push(track);\n }\n });\n }\n\n if (tracks.length === 0) {\n setTrack(selectInitialTrack(tracksForType));\n } else {\n if (tracks.length > 1) {\n setTrack(selectInitialTrack(tracks));\n } else {\n setTrack(tracks[0]);\n }\n }\n }\n\n /**\n * @param {MediaInfo} track\n * @memberof MediaController#\n */\n function addTrack(track) {\n let mediaType = track ? track.type : null;\n let streamId = track ? track.streamInfo.id : null;\n let initSettings = getInitialSettings(mediaType);\n\n if (!track || (!isMultiTrackSupportedByType(mediaType))) return;\n\n tracks[streamId] = tracks[streamId] || createTrackInfo();\n\n const len = tracks[streamId][mediaType].list.length;\n\n for (let i = 0; i < len; i++) {\n //track is already set.\n if (isTracksEqual(tracks[streamId][mediaType].list[i], track)) {\n return;\n }\n }\n\n tracks[streamId][mediaType].list.push(track);\n\n if (initSettings && (matchSettings(initSettings, track)) && !getCurrentTrackFor(mediaType, track.streamInfo)) {\n setTrack(track);\n }\n }\n\n /**\n * @param {string} type\n * @param {StreamInfo} streamInfo\n * @returns {Array}\n * @memberof MediaController#\n */\n function getTracksFor(type, streamInfo) {\n if (!type || !streamInfo) return [];\n\n let id = streamInfo.id;\n\n if (!tracks[id] || !tracks[id][type]) return [];\n\n return tracks[id][type].list;\n }\n\n /**\n * @param {string} type\n * @param {StreamInfo} streamInfo\n * @returns {Object|null}\n * @memberof MediaController#\n */\n function getCurrentTrackFor(type, streamInfo) {\n if (!type || !streamInfo || (streamInfo && !tracks[streamInfo.id])) return null;\n return tracks[streamInfo.id][type].current;\n }\n\n /**\n * @param {MediaInfo} track\n * @returns {boolean}\n * @memberof MediaController#\n */\n function isCurrentTrack(track) {\n let type = track.type;\n let id = track.streamInfo.id;\n\n return (tracks[id] && tracks[id][type] && isTracksEqual(tracks[id][type].current, track));\n }\n\n /**\n * @param {MediaInfo} track\n * @memberof MediaController#\n */\n function setTrack(track) {\n if (!track) return;\n\n let type = track.type;\n let streamInfo = track.streamInfo;\n let id = streamInfo.id;\n let current = getCurrentTrackFor(type, streamInfo);\n\n if (!tracks[id] || !tracks[id][type] || (current && isTracksEqual(track, current))) return;\n\n tracks[id][type].current = track;\n\n if (current) {\n eventBus.trigger(Events.CURRENT_TRACK_CHANGED, {oldMediaInfo: current, newMediaInfo: track, switchMode: switchMode[type]});\n }\n\n let settings = extractSettings(track);\n\n if (!settings || !tracks[id][type].storeLastSettings) return;\n\n if (settings.roles) {\n settings.role = settings.roles[0];\n delete settings.roles;\n }\n\n if (settings.accessibility) {\n settings.accessibility = settings.accessibility[0];\n }\n\n if (settings.audioChannelConfiguration) {\n settings.audioChannelConfiguration = settings.audioChannelConfiguration[0];\n }\n\n domStorage.setSavedMediaSettings(type, settings);\n }\n\n /**\n * @param {string} type\n * @param {Object} value\n * @memberof MediaController#\n */\n function setInitialSettings(type, value) {\n if (!type || !value) return;\n\n initialSettings[type] = value;\n }\n\n /**\n * @param {string} type\n * @returns {Object|null}\n * @memberof MediaController#\n */\n function getInitialSettings(type) {\n if (!type) return null;\n\n return initialSettings[type];\n }\n\n /**\n * @param {string} type\n * @param {string} mode\n * @memberof MediaController#\n */\n function setSwitchMode(type, mode) {\n const isModeSupported = (validTrackSwitchModes.indexOf(mode) !== -1);\n\n if (!isModeSupported) {\n log('track switch mode is not supported: ' + mode);\n return;\n }\n\n switchMode[type] = mode;\n }\n\n /**\n * @param {string} type\n * @returns {string} mode\n * @memberof MediaController#\n */\n function getSwitchMode(type) {\n return switchMode[type];\n }\n\n /**\n * @param {string} mode\n * @memberof MediaController#\n */\n function setSelectionModeForInitialTrack(mode) {\n const isModeSupported = (validTrackSelectionModes.indexOf(mode) !== -1);\n\n if (!isModeSupported) {\n log('track selection mode is not supported: ' + mode);\n return;\n }\n selectionMode = mode;\n }\n\n /**\n * @returns {string} mode\n * @memberof MediaController#\n */\n function getSelectionModeForInitialTrack() {\n return selectionMode || DEFAULT_INIT_TRACK_SELECTION_MODE;\n }\n\n /**\n * @param {string} type\n * @returns {boolean}\n * @memberof MediaController#\n */\n function isMultiTrackSupportedByType(type) {\n return (type === Constants.AUDIO || type === Constants.VIDEO || type === Constants.TEXT || type === Constants.FRAGMENTED_TEXT);\n }\n\n /**\n * @param {MediaInfo} t1 - first track to compare\n * @param {MediaInfo} t2 - second track to compare\n * @returns {boolean}\n * @memberof MediaController#\n */\n function isTracksEqual(t1, t2) {\n let sameId = t1.id === t2.id;\n let sameViewpoint = t1.viewpoint === t2.viewpoint;\n let sameLang = t1.lang === t2.lang;\n let sameRoles = t1.roles.toString() === t2.roles.toString();\n let sameAccessibility = t1.accessibility.toString() === t2.accessibility.toString();\n let sameAudioChannelConfiguration = t1.audioChannelConfiguration.toString() === t2.audioChannelConfiguration.toString();\n\n return (sameId && sameViewpoint && sameLang && sameRoles && sameAccessibility && sameAudioChannelConfiguration);\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.errHandler) {\n errHandler = config.errHandler;\n }\n\n if (config.domStorage) {\n domStorage = config.domStorage;\n }\n }\n\n /**\n * @memberof MediaController#\n */\n function reset() {\n tracks = {};\n resetInitialSettings();\n resetSwitchMode();\n }\n\n function extractSettings(mediaInfo) {\n let settings = {\n lang: mediaInfo.lang,\n viewpoint: mediaInfo.viewpoint,\n roles: mediaInfo.roles,\n accessibility: mediaInfo.accessibility,\n audioChannelConfiguration: mediaInfo.audioChannelConfiguration\n };\n let notEmpty = settings.lang || settings.viewpoint || (settings.role && settings.role.length > 0) ||\n (settings.accessibility && settings.accessibility.length > 0) || (settings.audioChannelConfiguration && settings.audioChannelConfiguration.length > 0);\n\n return notEmpty ? settings : null;\n }\n\n function matchSettings(settings, track) {\n let matchLang = !settings.lang || (settings.lang === track.lang);\n let matchViewPoint = !settings.viewpoint || (settings.viewpoint === track.viewpoint);\n let matchRole = !settings.role || !!track.roles.filter(function (item) {\n return item === settings.role;\n })[0];\n let matchAccessibility = !settings.accessibility || !!track.accessibility.filter(function (item) {\n return item === settings.accessibility;\n })[0];\n let matchAudioChannelConfiguration = !settings.audioChannelConfiguration || !!track.audioChannelConfiguration.filter(function (item) {\n return item === settings.audioChannelConfiguration;\n })[0];\n\n return (matchLang && matchViewPoint && matchRole && matchAccessibility && matchAudioChannelConfiguration);\n }\n\n function resetSwitchMode() {\n switchMode = {\n audio: TRACK_SWITCH_MODE_ALWAYS_REPLACE,\n video: TRACK_SWITCH_MODE_NEVER_REPLACE\n };\n }\n\n function resetInitialSettings() {\n initialSettings = {\n audio: null,\n video: null\n };\n }\n\n function selectInitialTrack(tracks) {\n let mode = getSelectionModeForInitialTrack();\n let tmpArr = [];\n const getTracksWithHighestBitrate = function (trackArr) {\n let max = 0;\n let result = [];\n let tmp;\n\n trackArr.forEach(function (track) {\n tmp = Math.max.apply(Math, track.bitrateList.map(function (obj) { return obj.bandwidth; }));\n\n if (tmp > max) {\n max = tmp;\n result = [track];\n } else if (tmp === max) {\n result.push(track);\n }\n });\n\n return result;\n };\n const getTracksWithWidestRange = function (trackArr) {\n let max = 0;\n let result = [];\n let tmp;\n\n trackArr.forEach(function (track) {\n tmp = track.representationCount;\n\n if (tmp > max) {\n max = tmp;\n result = [track];\n } else if (tmp === max) {\n result.push(track);\n }\n });\n\n return result;\n };\n\n switch (mode) {\n case TRACK_SELECTION_MODE_HIGHEST_BITRATE:\n tmpArr = getTracksWithHighestBitrate(tracks);\n\n if (tmpArr.length > 1) {\n tmpArr = getTracksWithWidestRange(tmpArr);\n }\n break;\n case TRACK_SELECTION_MODE_WIDEST_RANGE:\n tmpArr = getTracksWithWidestRange(tracks);\n\n if (tmpArr.length > 1) {\n tmpArr = getTracksWithHighestBitrate(tracks);\n }\n break;\n default:\n log('track selection mode is not supported: ' + mode);\n break;\n }\n\n return tmpArr[0];\n }\n\n function createTrackInfo() {\n return {\n audio: {\n list: [],\n storeLastSettings: true,\n current: null\n },\n video: {\n list: [],\n storeLastSettings: true,\n current: null\n },\n text: {\n list: [],\n storeLastSettings: true,\n current: null\n },\n fragmentedText: {\n list: [],\n storeLastSettings: true,\n current: null\n }\n };\n }\n\n instance = {\n checkInitialMediaSettingsForType: checkInitialMediaSettingsForType,\n addTrack: addTrack,\n getTracksFor: getTracksFor,\n getCurrentTrackFor: getCurrentTrackFor,\n isCurrentTrack: isCurrentTrack,\n setTrack: setTrack,\n setInitialSettings: setInitialSettings,\n getInitialSettings: getInitialSettings,\n setSwitchMode: setSwitchMode,\n getSwitchMode: getSwitchMode,\n setSelectionModeForInitialTrack: setSelectionModeForInitialTrack,\n getSelectionModeForInitialTrack: getSelectionModeForInitialTrack,\n isMultiTrackSupportedByType: isMultiTrackSupportedByType,\n isTracksEqual: isTracksEqual,\n setConfig: setConfig,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nMediaController.__dashjs_factory_name = 'MediaController';\nlet factory = FactoryMaker.getSingletonFactory(MediaController);\nfactory.TRACK_SWITCH_MODE_NEVER_REPLACE = TRACK_SWITCH_MODE_NEVER_REPLACE;\nfactory.TRACK_SWITCH_MODE_ALWAYS_REPLACE = TRACK_SWITCH_MODE_ALWAYS_REPLACE;\nfactory.TRACK_SELECTION_MODE_HIGHEST_BITRATE = TRACK_SELECTION_MODE_HIGHEST_BITRATE;\nfactory.TRACK_SELECTION_MODE_WIDEST_RANGE = TRACK_SELECTION_MODE_WIDEST_RANGE;\nfactory.DEFAULT_INIT_TRACK_SELECTION_MODE = DEFAULT_INIT_TRACK_SELECTION_MODE;\nFactoryMaker.updateSingletonFactory(MediaController.__dashjs_factory_name, factory);\nexport default factory;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker';\n\nfunction MediaSourceController() {\n\n let instance;\n\n function createMediaSource() {\n\n let hasWebKit = ('WebKitMediaSource' in window);\n let hasMediaSource = ('MediaSource' in window);\n\n if (hasMediaSource) {\n return new MediaSource();\n } else if (hasWebKit) {\n return new WebKitMediaSource();\n }\n\n return null;\n }\n\n function attachMediaSource(source, videoModel) {\n\n let objectURL = window.URL.createObjectURL(source);\n\n videoModel.setSource(objectURL);\n\n return objectURL;\n }\n\n function detachMediaSource(videoModel) {\n videoModel.setSource(null);\n }\n\n function setDuration(source, value) {\n\n if (source.duration != value)\n source.duration = value;\n\n return source.duration;\n }\n\n function setSeekable(source, start, end) {\n if (typeof source.setLiveSeekableRange === 'function' && typeof source.clearLiveSeekableRange === 'function' &&\n source.readyState === 'open' && start >= 0 && start < end) {\n source.clearLiveSeekableRange();\n source.setLiveSeekableRange(start, end);\n }\n }\n\n function signalEndOfStream(source) {\n\n let buffers = source.sourceBuffers;\n const ln = buffers.length;\n\n if (source.readyState !== 'open') return;\n\n for (let i = 0; i < ln; i++) {\n if (buffers[i].updating) return;\n if (buffers[i].buffered.length === 0) return;\n }\n\n source.endOfStream();\n }\n\n instance = {\n createMediaSource: createMediaSource,\n attachMediaSource: attachMediaSource,\n detachMediaSource: detachMediaSource,\n setDuration: setDuration,\n setSeekable: setSeekable,\n signalEndOfStream: signalEndOfStream\n };\n\n return instance;\n}\n\nMediaSourceController.__dashjs_factory_name = 'MediaSourceController';\nexport default FactoryMaker.getSingletonFactory(MediaSourceController);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport BufferController from './BufferController';\nimport URIQueryAndFragmentModel from '../models/URIQueryAndFragmentModel';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\n\nfunction PlaybackController() {\n\n const context = this.context;\n const log = Debug(context).getInstance().log;\n const eventBus = EventBus(context).getInstance();\n\n let instance,\n streamController,\n metricsModel,\n dashMetrics,\n manifestModel,\n dashManifestModel,\n adapter,\n videoModel,\n currentTime,\n liveStartTime,\n wallclockTimeIntervalId,\n commonEarliestTime,\n bufferedRange,\n streamInfo,\n isDynamic,\n mediaPlayerModel,\n playOnceInitialized;\n\n function setup() {\n reset();\n }\n\n function initialize(StreamInfo) {\n streamInfo = StreamInfo;\n addAllListeners();\n isDynamic = streamInfo.manifestInfo.isDynamic;\n liveStartTime = streamInfo.start;\n eventBus.on(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.on(Events.BYTES_APPENDED, onBytesAppended, this);\n eventBus.on(Events.BUFFER_LEVEL_STATE_CHANGED, onBufferLevelStateChanged, this);\n eventBus.on(Events.PERIOD_SWITCH_STARTED, onPeriodSwitchStarted, this);\n\n if (playOnceInitialized) {\n playOnceInitialized = false;\n play();\n }\n }\n\n function onPeriodSwitchStarted(e) {\n if (!isDynamic && e.fromStreamInfo && commonEarliestTime[e.fromStreamInfo.id] !== undefined) {\n delete bufferedRange[e.fromStreamInfo.id];\n delete commonEarliestTime[e.fromStreamInfo.id];\n }\n }\n\n function getTimeToStreamEnd() {\n const startTime = getStreamStartTime(true);\n const offset = isDynamic ? startTime - streamInfo.start : 0;\n return startTime + (streamInfo.duration - offset) - getTime();\n }\n\n function play() {\n if (videoModel && videoModel.getElement()) {\n videoModel.play();\n } else {\n playOnceInitialized = true;\n }\n }\n\n function isPaused() {\n return videoModel ? videoModel.isPaused() : null;\n }\n\n function pause() {\n if (videoModel) {\n videoModel.pause();\n }\n }\n\n function isSeeking() {\n return videoModel ? videoModel.isSeeking() : null;\n }\n\n function seek(time) {\n if (videoModel) {\n eventBus.trigger(Events.PLAYBACK_SEEK_ASKED);\n log('Requesting seek to time: ' + time);\n videoModel.setCurrentTime(time);\n }\n }\n\n function getTime() {\n return videoModel ? videoModel.getTime() : null;\n }\n\n function getPlaybackRate() {\n return videoModel ? videoModel.getPlaybackRate() : null;\n }\n\n function getPlayedRanges() {\n return videoModel ? videoModel.getPlayedRanges() : null;\n }\n\n function getEnded() {\n return videoModel ? videoModel.getEnded() : null;\n }\n\n function getIsDynamic() {\n return isDynamic;\n }\n\n function getStreamController() {\n return streamController;\n }\n\n function setLiveStartTime(value) {\n liveStartTime = value;\n }\n\n function getLiveStartTime() {\n return liveStartTime;\n }\n\n /**\n * Computes the desirable delay for the live edge to avoid a risk of getting 404 when playing at the bleeding edge\n * @param {number} fragmentDuration - seconds?\n * @param {number} dvrWindowSize - seconds?\n * @returns {number} object\n * @memberof PlaybackController#\n */\n function computeLiveDelay(fragmentDuration, dvrWindowSize) {\n const mpd = dashManifestModel.getMpd(manifestModel.getValue());\n\n let delay;\n const END_OF_PLAYLIST_PADDING = 10;\n\n if (mediaPlayerModel.getUseSuggestedPresentationDelay() && mpd.hasOwnProperty(Constants.SUGGESTED_PRESENTATION_DELAY)) {\n delay = mpd.suggestedPresentationDelay;\n } else if (mediaPlayerModel.getLiveDelay()) {\n delay = mediaPlayerModel.getLiveDelay(); // If set by user, this value takes precedence\n } else if (!isNaN(fragmentDuration)) {\n delay = fragmentDuration * mediaPlayerModel.getLiveDelayFragmentCount();\n } else {\n delay = streamInfo.manifestInfo.minBufferTime * 2;\n }\n\n if (dvrWindowSize > 0) {\n // cap target latency to:\n // - dvrWindowSize / 2 for short playlists\n // - dvrWindowSize - END_OF_PLAYLIST_PADDING for longer playlists\n const targetDelayCapping = Math.max(dvrWindowSize - END_OF_PLAYLIST_PADDING, dvrWindowSize / 2);\n return Math.min(delay, targetDelayCapping);\n } else {\n return delay;\n }\n }\n\n function reset() {\n currentTime = 0;\n liveStartTime = NaN;\n wallclockTimeIntervalId = null;\n playOnceInitialized = false;\n commonEarliestTime = {};\n bufferedRange = {};\n if (videoModel) {\n eventBus.off(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.off(Events.BUFFER_LEVEL_STATE_CHANGED, onBufferLevelStateChanged, this);\n eventBus.off(Events.BYTES_APPENDED, onBytesAppended, this);\n stopUpdatingWallclockTime();\n removeAllListeners();\n }\n videoModel = null;\n streamInfo = null;\n isDynamic = null;\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.streamController) {\n streamController = config.streamController;\n }\n if (config.metricsModel) {\n metricsModel = config.metricsModel;\n }\n if (config.dashMetrics) {\n dashMetrics = config.dashMetrics;\n }\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n if (config.mediaPlayerModel) {\n mediaPlayerModel = config.mediaPlayerModel;\n }\n if (config.adapter) {\n adapter = config.adapter;\n }\n if (config.videoModel) {\n videoModel = config.videoModel;\n }\n }\n\n /**\n * @param {boolean} ignoreStartOffset - ignore URL fragment start offset if true\n * @param {number} liveEdge - liveEdge value\n * @returns {number} object\n * @memberof PlaybackController#\n */\n function getStreamStartTime(ignoreStartOffset, liveEdge) {\n let presentationStartTime;\n const fragData = URIQueryAndFragmentModel(context).getInstance().getURIFragmentData();\n let startTimeOffset = NaN;\n\n if (fragData) {\n const fragS = parseInt(fragData.s, 10);\n const fragT = parseInt(fragData.t, 10);\n if (!ignoreStartOffset) {\n startTimeOffset = !isNaN(fragS) ? fragS : fragT;\n }\n } else {\n // handle case where no media fragments are parsed from the manifest URL\n startTimeOffset = 0;\n }\n\n if (isDynamic) {\n if (!isNaN(startTimeOffset)) {\n presentationStartTime = startTimeOffset - (streamInfo.manifestInfo.availableFrom.getTime() / 1000);\n\n if (presentationStartTime > liveStartTime ||\n presentationStartTime < (!isNaN(liveEdge) ? (liveEdge - streamInfo.manifestInfo.DVRWindowSize) : NaN)) {\n presentationStartTime = null;\n }\n }\n presentationStartTime = presentationStartTime || liveStartTime;\n\n } else {\n if (!isNaN(startTimeOffset) && startTimeOffset < Math.max(streamInfo.manifestInfo.duration, streamInfo.duration) && startTimeOffset >= 0) {\n presentationStartTime = startTimeOffset;\n } else {\n let earliestTime = commonEarliestTime[streamInfo.id]; //set by ready bufferStart after first onBytesAppended\n if (earliestTime === undefined) {\n earliestTime = streamController.getActiveStreamCommonEarliestTime(); //deal with calculated PST that is none 0 when streamInfo.start is 0\n }\n presentationStartTime = Math.max(earliestTime, streamInfo.start);\n }\n }\n\n return presentationStartTime;\n }\n\n function getActualPresentationTime(currentTime) {\n const metrics = metricsModel.getReadOnlyMetricsFor(Constants.VIDEO) || metricsModel.getReadOnlyMetricsFor(Constants.AUDIO);\n const DVRMetrics = dashMetrics.getCurrentDVRInfo(metrics);\n const DVRWindow = DVRMetrics ? DVRMetrics.range : null;\n let actualTime;\n\n if (!DVRWindow) return NaN;\n if (currentTime > DVRWindow.end) {\n actualTime = Math.max(DVRWindow.end - streamInfo.manifestInfo.minBufferTime * 2, DVRWindow.start);\n } else if (currentTime < DVRWindow.start) {\n actualTime = DVRWindow.start;\n } else {\n return currentTime;\n }\n\n return actualTime;\n }\n\n function startUpdatingWallclockTime() {\n if (wallclockTimeIntervalId !== null) return;\n\n const tick = function () {\n onWallclockTime();\n };\n\n wallclockTimeIntervalId = setInterval(tick, mediaPlayerModel.getWallclockTimeUpdateInterval());\n }\n\n function stopUpdatingWallclockTime() {\n clearInterval(wallclockTimeIntervalId);\n wallclockTimeIntervalId = null;\n }\n\n function updateCurrentTime() {\n if (isPaused() || !isDynamic || videoModel.getReadyState() === 0) return;\n const currentTime = getTime();\n const actualTime = getActualPresentationTime(currentTime);\n const timeChanged = (!isNaN(actualTime) && actualTime !== currentTime);\n if (timeChanged) {\n seek(actualTime);\n }\n }\n\n function onDataUpdateCompleted(e) {\n if (e.error) return;\n\n const representationInfo = adapter.convertDataToRepresentationInfo(e.currentRepresentation);\n const info = representationInfo.mediaInfo.streamInfo;\n\n if (streamInfo.id !== info.id) return;\n streamInfo = info;\n\n updateCurrentTime();\n }\n\n function onCanPlay() {\n eventBus.trigger(Events.CAN_PLAY);\n }\n\n function onPlaybackStart() {\n log('Native video element event: play');\n updateCurrentTime();\n startUpdatingWallclockTime();\n eventBus.trigger(Events.PLAYBACK_STARTED, {\n startTime: getTime()\n });\n }\n\n function onPlaybackPlaying() {\n log('Native video element event: playing');\n eventBus.trigger(Events.PLAYBACK_PLAYING, {\n playingTime: getTime()\n });\n }\n\n function onPlaybackPaused() {\n log('Native video element event: pause');\n eventBus.trigger(Events.PLAYBACK_PAUSED, {\n ended: getEnded()\n });\n }\n\n function onPlaybackSeeking() {\n const seekTime = getTime();\n log('Seeking to: ' + seekTime);\n startUpdatingWallclockTime();\n eventBus.trigger(Events.PLAYBACK_SEEKING, {\n seekTime: seekTime\n });\n }\n\n function onPlaybackSeeked() {\n log('Native video element event: seeked');\n eventBus.trigger(Events.PLAYBACK_SEEKED);\n }\n\n function onPlaybackTimeUpdated() {\n const time = getTime();\n if (time === currentTime) return;\n currentTime = time;\n eventBus.trigger(Events.PLAYBACK_TIME_UPDATED, {\n timeToEnd: getTimeToStreamEnd(),\n time: time\n });\n }\n\n function onPlaybackProgress() {\n eventBus.trigger(Events.PLAYBACK_PROGRESS);\n }\n\n function onPlaybackRateChanged() {\n const rate = getPlaybackRate();\n log('Native video element event: ratechange: ', rate);\n eventBus.trigger(Events.PLAYBACK_RATE_CHANGED, {\n playbackRate: rate\n });\n }\n\n function onPlaybackMetaDataLoaded() {\n log('Native video element event: loadedmetadata');\n eventBus.trigger(Events.PLAYBACK_METADATA_LOADED);\n startUpdatingWallclockTime();\n }\n\n function onPlaybackEnded() {\n log('Native video element event: ended');\n pause();\n stopUpdatingWallclockTime();\n eventBus.trigger(Events.PLAYBACK_ENDED);\n }\n\n function onPlaybackError(event) {\n const target = event.target || event.srcElement;\n eventBus.trigger(Events.PLAYBACK_ERROR, {\n error: target.error\n });\n }\n\n function onWallclockTime() {\n eventBus.trigger(Events.WALLCLOCK_TIME_UPDATED, {\n isDynamic: isDynamic,\n time: new Date()\n });\n }\n\n function checkTimeInRanges(time, ranges) {\n if (ranges && ranges.length > 0) {\n for (let i = 0, len = ranges.length; i < len; i++) {\n if (time >= ranges.start(i) && time < ranges.end(i)) {\n return true;\n }\n }\n }\n return false;\n }\n\n function onBytesAppended(e) {\n let earliestTime,\n initialStartTime;\n let ranges = e.bufferedRanges;\n if (!ranges || !ranges.length) return;\n if (commonEarliestTime[streamInfo.id] === false) {\n //stream has already been started.\n return;\n }\n\n const type = e.sender.getType();\n\n if (bufferedRange[streamInfo.id] === undefined) {\n bufferedRange[streamInfo.id] = [];\n }\n\n bufferedRange[streamInfo.id][type] = ranges;\n\n if (commonEarliestTime[streamInfo.id] === undefined) {\n commonEarliestTime[streamInfo.id] = [];\n }\n\n if (commonEarliestTime[streamInfo.id][type] === undefined) {\n commonEarliestTime[streamInfo.id][type] = Math.max(ranges.start(0), streamInfo.start);\n }\n\n const hasVideoTrack = streamController.isVideoTrackPresent();\n const hasAudioTrack = streamController.isAudioTrackPresent();\n\n initialStartTime = getStreamStartTime(false);\n\n if (hasAudioTrack && hasVideoTrack) {\n //current stream has audio and video contents\n if (!isNaN(commonEarliestTime[streamInfo.id].audio) && !isNaN(commonEarliestTime[streamInfo.id].video)) {\n\n if (commonEarliestTime[streamInfo.id].audio < commonEarliestTime[streamInfo.id].video) {\n // common earliest is video time\n // check buffered audio range has video time, if ok, we seek, otherwise, we wait some other data\n earliestTime = commonEarliestTime[streamInfo.id].video > initialStartTime ? commonEarliestTime[streamInfo.id].video : initialStartTime;\n ranges = bufferedRange[streamInfo.id].audio;\n } else {\n // common earliest is audio time\n // check buffered video range has audio time, if ok, we seek, otherwise, we wait some other data\n earliestTime = commonEarliestTime[streamInfo.id].audio > initialStartTime ? commonEarliestTime[streamInfo.id].audio : initialStartTime;\n ranges = bufferedRange[streamInfo.id].video;\n }\n if (checkTimeInRanges(earliestTime, ranges)) {\n seek(earliestTime);\n commonEarliestTime[streamInfo.id] = false;\n }\n }\n } else {\n //current stream has only audio or only video content\n if (commonEarliestTime[streamInfo.id][type]) {\n earliestTime = commonEarliestTime[streamInfo.id][type] > initialStartTime ? commonEarliestTime[streamInfo.id][type] : initialStartTime;\n seek(earliestTime);\n commonEarliestTime[streamInfo.id] = false;\n }\n }\n }\n\n function onBufferLevelStateChanged(e) {\n // do not stall playback when get an event from Stream that is not active\n if (e.streamInfo.id !== streamInfo.id) return;\n videoModel.setStallState(e.mediaType, e.state === BufferController.BUFFER_EMPTY);\n }\n\n function addAllListeners() {\n videoModel.addEventListener('canplay', onCanPlay);\n videoModel.addEventListener('play', onPlaybackStart);\n videoModel.addEventListener('playing', onPlaybackPlaying);\n videoModel.addEventListener('pause', onPlaybackPaused);\n videoModel.addEventListener('error', onPlaybackError);\n videoModel.addEventListener('seeking', onPlaybackSeeking);\n videoModel.addEventListener('seeked', onPlaybackSeeked);\n videoModel.addEventListener('timeupdate', onPlaybackTimeUpdated);\n videoModel.addEventListener('progress', onPlaybackProgress);\n videoModel.addEventListener('ratechange', onPlaybackRateChanged);\n videoModel.addEventListener('loadedmetadata', onPlaybackMetaDataLoaded);\n videoModel.addEventListener('ended', onPlaybackEnded);\n }\n\n function removeAllListeners() {\n videoModel.removeEventListener('canplay', onCanPlay);\n videoModel.removeEventListener('play', onPlaybackStart);\n videoModel.removeEventListener('playing', onPlaybackPlaying);\n videoModel.removeEventListener('pause', onPlaybackPaused);\n videoModel.removeEventListener('error', onPlaybackError);\n videoModel.removeEventListener('seeking', onPlaybackSeeking);\n videoModel.removeEventListener('seeked', onPlaybackSeeked);\n videoModel.removeEventListener('timeupdate', onPlaybackTimeUpdated);\n videoModel.removeEventListener('progress', onPlaybackProgress);\n videoModel.removeEventListener('ratechange', onPlaybackRateChanged);\n videoModel.removeEventListener('loadedmetadata', onPlaybackMetaDataLoaded);\n videoModel.removeEventListener('ended', onPlaybackEnded);\n }\n\n instance = {\n initialize: initialize,\n setConfig: setConfig,\n getStreamStartTime: getStreamStartTime,\n getTimeToStreamEnd: getTimeToStreamEnd,\n getTime: getTime,\n getPlaybackRate: getPlaybackRate,\n getPlayedRanges: getPlayedRanges,\n getEnded: getEnded,\n getIsDynamic: getIsDynamic,\n getStreamController: getStreamController,\n setLiveStartTime: setLiveStartTime,\n getLiveStartTime: getLiveStartTime,\n computeLiveDelay: computeLiveDelay,\n play: play,\n isPaused: isPaused,\n pause: pause,\n isSeeking: isSeeking,\n seek: seek,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nPlaybackController.__dashjs_factory_name = 'PlaybackController';\nexport default FactoryMaker.getSingletonFactory(PlaybackController);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport {PlayListTrace} from '../vo/metrics/PlayList';\nimport AbrController from './AbrController';\nimport BufferController from './BufferController';\nimport BufferLevelRule from '../rules/scheduling/BufferLevelRule';\nimport NextFragmentRequestRule from '../rules/scheduling/NextFragmentRequestRule';\nimport FragmentModel from '../models/FragmentModel';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\n\nfunction ScheduleController(config) {\n\n const context = this.context;\n const eventBus = EventBus(context).getInstance();\n const metricsModel = config.metricsModel;\n const adapter = config.adapter;\n const dashMetrics = config.dashMetrics;\n const dashManifestModel = config.dashManifestModel;\n const timelineConverter = config.timelineConverter;\n const mediaPlayerModel = config.mediaPlayerModel;\n const abrController = config.abrController;\n const playbackController = config.playbackController;\n const streamController = config.streamController;\n const textController = config.textController;\n const sourceBufferController = config.sourceBufferController;\n const type = config.type;\n const streamProcessor = config.streamProcessor;\n\n let instance,\n log,\n fragmentModel,\n currentRepresentationInfo,\n initialRequest,\n isStopped,\n playListMetrics,\n playListTraceMetrics,\n playListTraceMetricsClosed,\n isFragmentProcessingInProgress,\n timeToLoadDelay,\n scheduleTimeout,\n seekTarget,\n bufferLevelRule,\n nextFragmentRequestRule,\n scheduleWhilePaused,\n lastFragmentRequest,\n topQualityIndex,\n lastInitQuality,\n replaceRequestArray,\n switchTrack;\n\n function setup() {\n log = Debug(context).getInstance().log.bind(instance);\n\n resetInitialSettings();\n }\n\n function initialize() {\n fragmentModel = streamProcessor.getFragmentModel();\n scheduleWhilePaused = mediaPlayerModel.getScheduleWhilePaused();\n\n bufferLevelRule = BufferLevelRule(context).create({\n abrController: abrController,\n dashMetrics: dashMetrics,\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n textController: textController\n });\n\n nextFragmentRequestRule = NextFragmentRequestRule(context).create({\n adapter: adapter,\n sourceBufferController: sourceBufferController,\n textController: textController\n });\n\n if (dashManifestModel.getIsTextTrack(type)) {\n eventBus.on(Events.TIMED_TEXT_REQUESTED, onTimedTextRequested, this);\n }\n\n //eventBus.on(Events.LIVE_EDGE_SEARCH_COMPLETED, onLiveEdgeSearchCompleted, this);\n eventBus.on(Events.QUALITY_CHANGE_REQUESTED, onQualityChanged, this);\n eventBus.on(Events.DATA_UPDATE_STARTED, onDataUpdateStarted, this);\n eventBus.on(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.on(Events.FRAGMENT_LOADING_COMPLETED, onFragmentLoadingCompleted, this);\n eventBus.on(Events.STREAM_COMPLETED, onStreamCompleted, this);\n eventBus.on(Events.STREAM_INITIALIZED, onStreamInitialized, this);\n eventBus.on(Events.BUFFER_LEVEL_STATE_CHANGED, onBufferLevelStateChanged, this);\n eventBus.on(Events.BUFFER_CLEARED, onBufferCleared, this);\n eventBus.on(Events.BYTES_APPENDED, onBytesAppended, this);\n eventBus.on(Events.INIT_REQUESTED, onInitRequested, this);\n eventBus.on(Events.QUOTA_EXCEEDED, onQuotaExceeded, this);\n eventBus.on(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.on(Events.PLAYBACK_STARTED, onPlaybackStarted, this);\n eventBus.on(Events.PLAYBACK_RATE_CHANGED, onPlaybackRateChanged, this);\n eventBus.on(Events.PLAYBACK_TIME_UPDATED, onPlaybackTimeUpdated, this);\n eventBus.on(Events.URL_RESOLUTION_FAILED, onURLResolutionFailed, this);\n eventBus.on(Events.FRAGMENT_LOADING_ABANDONED, onFragmentLoadingAbandoned, this);\n }\n\n function isStarted() {\n return (isStopped === false);\n }\n\n function start() {\n if (!currentRepresentationInfo || streamProcessor.isBufferingCompleted()) {\n return;\n }\n\n addPlaylistTraceMetrics();\n isStopped = false;\n\n if (initialRequest) {\n initialRequest = false;\n }\n\n startScheduleTimer(0);\n\n log('Schedule controller starting for ' + type);\n }\n\n function stop() {\n if (isStopped) {\n return;\n }\n\n isStopped = true;\n clearTimeout(scheduleTimeout);\n log('Schedule controller stopping for ' + type);\n }\n\n function hasTopQualityChanged(type, id) {\n topQualityIndex[id] = topQualityIndex[id] || {};\n const newTopQualityIndex = abrController.getTopQualityIndexFor(type, id);\n\n if (topQualityIndex[id][type] != newTopQualityIndex) {\n log('Top quality ' + type + ' index has changed from ' + topQualityIndex[id][type] + ' to ' + newTopQualityIndex);\n topQualityIndex[id][type] = newTopQualityIndex;\n return true;\n }\n return false;\n\n }\n\n function schedule() {\n if (isStopped || isFragmentProcessingInProgress || !streamProcessor.getBufferController() || playbackController.isPaused() && !scheduleWhilePaused) {\n return;\n }\n\n validateExecutedFragmentRequest();\n\n const isReplacement = replaceRequestArray.length > 0;\n if (switchTrack || isReplacement ||\n hasTopQualityChanged(currentRepresentationInfo.mediaInfo.type, streamProcessor.getStreamInfo().id) ||\n bufferLevelRule.execute(streamProcessor, type, streamController.isVideoTrackPresent())) {\n\n const getNextFragment = function () {\n log('ScheduleController ' + type + '- getNextFragment');\n const fragmentController = streamProcessor.getFragmentController();\n if (switchTrack) {\n log('ScheduleController ' + type + '- switch track has been asked, get init request for ' + type + ' with representationid = ' + currentRepresentationInfo.id);\n streamProcessor.switchInitData(currentRepresentationInfo.id);\n lastInitQuality = currentRepresentationInfo.quality;\n switchTrack = false;\n } else if (currentRepresentationInfo.quality !== lastInitQuality) {\n log('ScheduleController ' + type + '- quality has changed, get init request');\n lastInitQuality = currentRepresentationInfo.quality;\n\n streamProcessor.switchInitData(currentRepresentationInfo.id);\n } else {\n const replacement = replaceRequestArray.shift();\n\n if (fragmentController.isInitializationRequest(replacement)) {\n //to be sure the specific init segment had not already been loaded.\n streamProcessor.switchInitData(replacement.representationId);\n } else {\n const request = nextFragmentRequestRule.execute(streamProcessor, replacement);\n if (request) {\n log('ScheduleController ' + type + '- getNextFragment - request is ' + request.url);\n fragmentModel.executeRequest(request);\n } else { //Use case - Playing at the bleeding live edge and frag is not available yet. Cycle back around.\n log('getNextFragment ' + type + '- Playing at the bleeding live edge and frag is not available yet');\n isFragmentProcessingInProgress = false;\n startScheduleTimer(500);\n }\n }\n }\n };\n\n isFragmentProcessingInProgress = true;\n if (isReplacement || switchTrack) {\n getNextFragment();\n } else {\n abrController.checkPlaybackQuality(type);\n getNextFragment();\n }\n\n } else {\n startScheduleTimer(500);\n }\n }\n\n function validateExecutedFragmentRequest() {\n //Validate that the fragment request executed and appended into the source buffer is as\n // good of quality as the current quality and is the correct media track.\n const safeBufferLevel = currentRepresentationInfo.fragmentDuration * 1.5;\n const request = fragmentModel.getRequests({\n state: FragmentModel.FRAGMENT_MODEL_EXECUTED,\n time: playbackController.getTime() + safeBufferLevel,\n threshold: 0\n })[0];\n\n if (request && replaceRequestArray.indexOf(request) === -1 && !dashManifestModel.getIsTextTrack(type)) {\n const fastSwitchModeEnabled = mediaPlayerModel.getFastSwitchEnabled();\n const bufferLevel = streamProcessor.getBufferLevel();\n const abandonmentState = abrController.getAbandonmentStateFor(type);\n\n if (fastSwitchModeEnabled && request.quality < currentRepresentationInfo.quality && bufferLevel >= safeBufferLevel && abandonmentState !== AbrController.ABANDON_LOAD) {\n replaceRequest(request);\n log('Reloading outdated fragment at index: ', request.index);\n } else if (request.quality > currentRepresentationInfo.quality) {\n //The buffer has better quality it in then what we would request so set append point to end of buffer!!\n setSeekTarget(playbackController.getTime() + streamProcessor.getBufferLevel());\n }\n }\n }\n\n function startScheduleTimer(value) {\n clearTimeout(scheduleTimeout);\n scheduleTimeout = setTimeout(schedule, value);\n }\n\n function onInitRequested(e) {\n if (!e.sender || e.sender.getStreamProcessor() !== streamProcessor) {\n return;\n }\n\n getInitRequest(currentRepresentationInfo.quality);\n }\n\n function getInitRequest(quality) {\n const request = adapter.getInitRequest(streamProcessor, quality);\n if (request) {\n isFragmentProcessingInProgress = true;\n fragmentModel.executeRequest(request);\n }\n }\n\n function switchTrackAsked() {\n switchTrack = true;\n }\n\n function replaceRequest(request) {\n replaceRequestArray.push(request);\n }\n\n function onQualityChanged(e) {\n if (type !== e.mediaType || streamProcessor.getStreamInfo().id !== e.streamInfo.id) {\n return;\n }\n\n currentRepresentationInfo = streamProcessor.getRepresentationInfoForQuality(e.newQuality);\n\n if (currentRepresentationInfo === null || currentRepresentationInfo === undefined) {\n throw new Error('Unexpected error! - currentRepresentationInfo is null or undefined');\n }\n\n clearPlayListTraceMetrics(new Date(), PlayListTrace.REPRESENTATION_SWITCH_STOP_REASON);\n addPlaylistTraceMetrics();\n }\n\n function completeQualityChange(trigger) {\n if (playbackController && fragmentModel) {\n const item = fragmentModel.getRequests({\n state: FragmentModel.FRAGMENT_MODEL_EXECUTED,\n time: playbackController.getTime(),\n threshold: 0\n })[0];\n if (item && playbackController.getTime() >= item.startTime) {\n if ((item.quality !== lastFragmentRequest.quality || item.adaptationIndex !== lastFragmentRequest.adaptationIndex) && trigger) {\n eventBus.trigger(Events.QUALITY_CHANGE_RENDERED, {\n mediaType: type,\n oldQuality: lastFragmentRequest.quality,\n newQuality: item.quality\n });\n }\n lastFragmentRequest = {\n quality: item.quality,\n adaptationIndex: item.adaptationIndex\n };\n }\n }\n }\n\n function onDataUpdateCompleted(e) {\n if (e.error || e.sender.getStreamProcessor() !== streamProcessor) {\n return;\n }\n\n currentRepresentationInfo = adapter.convertDataToRepresentationInfo(e.currentRepresentation);\n }\n\n function onStreamInitialized(e) {\n if (e.error || streamProcessor.getStreamInfo().id !== e.streamInfo.id) {\n return;\n }\n\n currentRepresentationInfo = streamProcessor.getCurrentRepresentationInfo();\n\n if (initialRequest) {\n if (playbackController.getIsDynamic()) {\n timelineConverter.setTimeSyncCompleted(true);\n setLiveEdgeSeekTarget();\n } else {\n seekTarget = playbackController.getStreamStartTime(false);\n streamProcessor.getBufferController().setSeekStartTime(seekTarget);\n }\n }\n\n if (isStopped) {\n start();\n }\n }\n\n function setLiveEdgeSeekTarget() {\n const liveEdgeFinder = streamProcessor.getLiveEdgeFinder();\n if (liveEdgeFinder) {\n const liveEdge = liveEdgeFinder.getLiveEdge();\n const dvrWindowSize = currentRepresentationInfo.mediaInfo.streamInfo.manifestInfo.DVRWindowSize / 2;\n const startTime = liveEdge - playbackController.computeLiveDelay(currentRepresentationInfo.fragmentDuration, dvrWindowSize);\n const request = adapter.getFragmentRequestForTime(streamProcessor, currentRepresentationInfo, startTime, {\n ignoreIsFinished: true\n });\n\n playbackController.setLiveStartTime(request.startTime);\n seekTarget = playbackController.getStreamStartTime(false, liveEdge);\n\n //special use case for multi period stream. If the startTime is out of the current period, send a seek command.\n //in onPlaybackSeeking callback (StreamController), the detection of switch stream is done.\n if (seekTarget > (currentRepresentationInfo.mediaInfo.streamInfo.start + currentRepresentationInfo.mediaInfo.streamInfo.duration)) {\n playbackController.seek(seekTarget);\n }\n\n const manifestUpdateInfo = dashMetrics.getCurrentManifestUpdate(metricsModel.getMetricsFor(Constants.STREAM));\n metricsModel.updateManifestUpdateInfo(manifestUpdateInfo, {\n currentTime: seekTarget,\n presentationStartTime: liveEdge,\n latency: liveEdge - seekTarget,\n clientTimeOffset: timelineConverter.getClientTimeOffset()\n });\n }\n }\n\n function onStreamCompleted(e) {\n if (e.fragmentModel !== fragmentModel) {\n return;\n }\n\n stop();\n isFragmentProcessingInProgress = false;\n log('Stream is complete');\n }\n\n function onFragmentLoadingCompleted(e) {\n if (e.sender !== fragmentModel) {\n return;\n }\n\n if (dashManifestModel.getIsTextTrack(type)) {\n isFragmentProcessingInProgress = false;\n }\n\n if (e.error && e.request.serviceLocation && !isStopped) {\n replaceRequest(e.request);\n isFragmentProcessingInProgress = false;\n startScheduleTimer(0);\n }\n }\n\n function onPlaybackTimeUpdated() {\n completeQualityChange(true);\n }\n\n function onBytesAppended(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) {\n return;\n }\n\n isFragmentProcessingInProgress = false;\n startScheduleTimer(0);\n }\n\n function onFragmentLoadingAbandoned(e) {\n if (e.streamProcessor !== streamProcessor) {\n return;\n }\n log('[ScheduleController][' + type + '] Request ' + e.request.url + ' has been aborted');\n replaceRequest(e.request);\n isFragmentProcessingInProgress = false;\n startScheduleTimer(0);\n }\n\n function onDataUpdateStarted(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) {\n return;\n }\n\n stop();\n }\n\n function onBufferCleared(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) {\n return;\n }\n\n // after the data has been removed from the buffer we should remove the requests from the list of\n // the executed requests for which playback time is inside the time interval that has been removed from the buffer\n fragmentModel.removeExecutedRequestsBeforeTime(e.to);\n\n if (e.hasEnoughSpaceToAppend && isStopped) {\n start();\n }\n }\n\n function onBufferLevelStateChanged(e) {\n if ((e.sender.getStreamProcessor() === streamProcessor) && e.state === BufferController.BUFFER_EMPTY && !playbackController.isSeeking()) {\n log('Buffer is empty! Stalling!');\n clearPlayListTraceMetrics(new Date(), PlayListTrace.REBUFFERING_REASON);\n }\n }\n\n function onQuotaExceeded(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) {\n return;\n }\n\n stop();\n isFragmentProcessingInProgress = false;\n }\n\n function onURLResolutionFailed() {\n fragmentModel.abortRequests();\n stop();\n }\n\n function onTimedTextRequested(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) {\n return;\n }\n\n getInitRequest(e.index);\n }\n\n function onPlaybackStarted() {\n if (isStopped || !scheduleWhilePaused) {\n start();\n }\n }\n\n function onPlaybackSeeking(e) {\n seekTarget = e.seekTime;\n setTimeToLoadDelay(0);\n\n if (isStopped) {\n start();\n }\n\n const manifestUpdateInfo = dashMetrics.getCurrentManifestUpdate(metricsModel.getMetricsFor(Constants.STREAM));\n const latency = currentRepresentationInfo.DVRWindow && playbackController ? currentRepresentationInfo.DVRWindow.end - playbackController.getTime() : NaN;\n metricsModel.updateManifestUpdateInfo(manifestUpdateInfo, {\n latency: latency\n });\n\n //if, during the seek command, the scheduleController is waiting : stop waiting, request chunk as soon as possible\n if (!isFragmentProcessingInProgress) {\n startScheduleTimer(0);\n }\n }\n\n function onPlaybackRateChanged(e) {\n if (playListTraceMetrics) {\n playListTraceMetrics.playbackspeed = e.playbackRate.toString();\n }\n }\n\n function getSeekTarget() {\n return seekTarget;\n }\n\n function setSeekTarget(value) {\n seekTarget = value;\n }\n\n function setTimeToLoadDelay(value) {\n timeToLoadDelay = value;\n }\n\n function getTimeToLoadDelay() {\n return timeToLoadDelay;\n }\n\n function getBufferTarget() {\n return bufferLevelRule.getBufferTarget(streamProcessor, type, streamController.isVideoTrackPresent());\n }\n\n function getType() {\n return type;\n }\n\n function setPlayList(playList) {\n playListMetrics = playList;\n }\n\n function finalisePlayList(time, reason) {\n clearPlayListTraceMetrics(time, reason);\n playListMetrics = null;\n }\n\n function clearPlayListTraceMetrics(endTime, stopreason) {\n if (playListMetrics && playListTraceMetricsClosed === false) {\n const startTime = playListTraceMetrics.start;\n const duration = endTime.getTime() - startTime.getTime();\n playListTraceMetrics.duration = duration;\n playListTraceMetrics.stopreason = stopreason;\n playListMetrics.trace.push(playListTraceMetrics);\n playListTraceMetricsClosed = true;\n }\n }\n\n function addPlaylistTraceMetrics() {\n if (playListMetrics && playListTraceMetricsClosed === true && currentRepresentationInfo) {\n playListTraceMetricsClosed = false;\n playListTraceMetrics = new PlayListTrace();\n playListTraceMetrics.representationid = currentRepresentationInfo.id;\n playListTraceMetrics.start = new Date();\n playListTraceMetrics.mstart = playbackController.getTime() * 1000;\n playListTraceMetrics.playbackspeed = playbackController.getPlaybackRate().toString();\n }\n }\n\n function resetInitialSettings() {\n isFragmentProcessingInProgress = false;\n timeToLoadDelay = 0;\n seekTarget = NaN;\n playListMetrics = null;\n playListTraceMetrics = null;\n playListTraceMetricsClosed = true;\n initialRequest = true;\n lastInitQuality = NaN;\n lastFragmentRequest = {\n quality: NaN,\n adaptationIndex: NaN\n };\n topQualityIndex = {};\n replaceRequestArray = [];\n isStopped = true;\n switchTrack = true;\n }\n\n function reset() {\n //eventBus.off(Events.LIVE_EDGE_SEARCH_COMPLETED, onLiveEdgeSearchCompleted, this);\n eventBus.off(Events.DATA_UPDATE_STARTED, onDataUpdateStarted, this);\n eventBus.off(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.off(Events.BUFFER_LEVEL_STATE_CHANGED, onBufferLevelStateChanged, this);\n eventBus.off(Events.QUALITY_CHANGE_REQUESTED, onQualityChanged, this);\n eventBus.off(Events.FRAGMENT_LOADING_COMPLETED, onFragmentLoadingCompleted, this);\n eventBus.off(Events.STREAM_COMPLETED, onStreamCompleted, this);\n eventBus.off(Events.STREAM_INITIALIZED, onStreamInitialized, this);\n eventBus.off(Events.QUOTA_EXCEEDED, onQuotaExceeded, this);\n eventBus.off(Events.BYTES_APPENDED, onBytesAppended, this);\n eventBus.off(Events.BUFFER_CLEARED, onBufferCleared, this);\n eventBus.off(Events.INIT_REQUESTED, onInitRequested, this);\n eventBus.off(Events.PLAYBACK_RATE_CHANGED, onPlaybackRateChanged, this);\n eventBus.off(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.off(Events.PLAYBACK_STARTED, onPlaybackStarted, this);\n eventBus.off(Events.PLAYBACK_TIME_UPDATED, onPlaybackTimeUpdated, this);\n eventBus.off(Events.URL_RESOLUTION_FAILED, onURLResolutionFailed, this);\n eventBus.off(Events.FRAGMENT_LOADING_ABANDONED, onFragmentLoadingAbandoned, this);\n if (dashManifestModel.getIsTextTrack(type)) {\n eventBus.off(Events.TIMED_TEXT_REQUESTED, onTimedTextRequested, this);\n }\n\n stop();\n completeQualityChange(false);\n resetInitialSettings();\n }\n\n instance = {\n initialize: initialize,\n getType: getType,\n getSeekTarget: getSeekTarget,\n setSeekTarget: setSeekTarget,\n setTimeToLoadDelay: setTimeToLoadDelay,\n getTimeToLoadDelay: getTimeToLoadDelay,\n replaceRequest: replaceRequest,\n switchTrackAsked: switchTrackAsked,\n isStarted: isStarted,\n start: start,\n stop: stop,\n reset: reset,\n setPlayList: setPlayList,\n getBufferTarget: getBufferTarget,\n finalisePlayList: finalisePlayList\n };\n\n setup();\n\n return instance;\n}\n\nScheduleController.__dashjs_factory_name = 'ScheduleController';\nexport default FactoryMaker.getClassFactory(ScheduleController);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport BufferController from './BufferController';\nimport URIQueryAndFragmentModel from '../models/URIQueryAndFragmentModel';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\n\nconst LIVE_UPDATE_PLAYBACK_TIME_INTERVAL_MS = 500;\n\nfunction PlaybackController() {\n\n const context = this.context;\n const log = Debug(context).getInstance().log;\n const eventBus = EventBus(context).getInstance();\n\n let instance,\n streamController,\n metricsModel,\n dashMetrics,\n manifestModel,\n dashManifestModel,\n adapter,\n videoModel,\n currentTime,\n liveStartTime,\n wallclockTimeIntervalId,\n commonEarliestTime,\n liveDelay,\n bufferedRange,\n streamInfo,\n isDynamic,\n mediaPlayerModel,\n playOnceInitialized,\n lastLivePlaybackTime;\n\n function setup() {\n reset();\n }\n\n function initialize(StreamInfo) {\n streamInfo = StreamInfo;\n addAllListeners();\n isDynamic = streamInfo.manifestInfo.isDynamic;\n liveStartTime = streamInfo.start;\n eventBus.on(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.on(Events.BYTES_APPENDED, onBytesAppended, this);\n eventBus.on(Events.BUFFER_LEVEL_STATE_CHANGED, onBufferLevelStateChanged, this);\n eventBus.on(Events.PERIOD_SWITCH_STARTED, onPeriodSwitchStarted, this);\n\n if (playOnceInitialized) {\n playOnceInitialized = false;\n play();\n }\n }\n\n function onPeriodSwitchStarted(e) {\n if (!isDynamic && e.fromStreamInfo && commonEarliestTime[e.fromStreamInfo.id] !== undefined) {\n delete bufferedRange[e.fromStreamInfo.id];\n delete commonEarliestTime[e.fromStreamInfo.id];\n }\n }\n\n function getTimeToStreamEnd() {\n const startTime = getStreamStartTime(true);\n const offset = isDynamic ? startTime - streamInfo.start : 0;\n return startTime + (streamInfo.duration - offset) - getTime();\n }\n\n function play() {\n if (videoModel && videoModel.getElement()) {\n videoModel.play();\n } else {\n playOnceInitialized = true;\n }\n }\n\n function isPaused() {\n return videoModel ? videoModel.isPaused() : null;\n }\n\n function pause() {\n if (videoModel) {\n videoModel.pause();\n }\n }\n\n function isSeeking() {\n return videoModel ? videoModel.isSeeking() : null;\n }\n\n function seek(time) {\n if (videoModel) {\n eventBus.trigger(Events.PLAYBACK_SEEK_ASKED);\n log('Requesting seek to time: ' + time);\n videoModel.setCurrentTime(time);\n }\n }\n\n function getTime() {\n return videoModel ? videoModel.getTime() : null;\n }\n\n function getPlaybackRate() {\n return videoModel ? videoModel.getPlaybackRate() : null;\n }\n\n function getPlayedRanges() {\n return videoModel ? videoModel.getPlayedRanges() : null;\n }\n\n function getEnded() {\n return videoModel ? videoModel.getEnded() : null;\n }\n\n function getIsDynamic() {\n return isDynamic;\n }\n\n function getStreamController() {\n return streamController;\n }\n\n function setLiveStartTime(value) {\n liveStartTime = value;\n }\n\n function getLiveStartTime() {\n return liveStartTime;\n }\n\n /**\n * Computes the desirable delay for the live edge to avoid a risk of getting 404 when playing at the bleeding edge\n * @param {number} fragmentDuration - seconds?\n * @param {number} dvrWindowSize - seconds?\n * @returns {number} object\n * @memberof PlaybackController#\n */\n function computeLiveDelay(fragmentDuration, dvrWindowSize) {\n const mpd = dashManifestModel.getMpd(manifestModel.getValue());\n\n let delay;\n let ret;\n const END_OF_PLAYLIST_PADDING = 10;\n\n if (mediaPlayerModel.getUseSuggestedPresentationDelay() && mpd.hasOwnProperty(Constants.SUGGESTED_PRESENTATION_DELAY)) {\n delay = mpd.suggestedPresentationDelay;\n } else if (mediaPlayerModel.getLiveDelay()) {\n delay = mediaPlayerModel.getLiveDelay(); // If set by user, this value takes precedence\n } else if (!isNaN(fragmentDuration)) {\n delay = fragmentDuration * mediaPlayerModel.getLiveDelayFragmentCount();\n } else {\n delay = streamInfo.manifestInfo.minBufferTime * 2;\n }\n\n if (dvrWindowSize > 0) {\n // cap target latency to:\n // - dvrWindowSize / 2 for short playlists\n // - dvrWindowSize - END_OF_PLAYLIST_PADDING for longer playlists\n const targetDelayCapping = Math.max(dvrWindowSize - END_OF_PLAYLIST_PADDING, dvrWindowSize / 2);\n ret = Math.min(delay, targetDelayCapping);\n } else {\n ret = delay;\n }\n liveDelay = ret;\n return ret;\n }\n\n function getLiveDelay() {\n return liveDelay;\n }\n\n function reset() {\n currentTime = 0;\n liveStartTime = NaN;\n wallclockTimeIntervalId = null;\n playOnceInitialized = false;\n commonEarliestTime = {};\n liveDelay = 0;\n bufferedRange = {};\n if (videoModel) {\n eventBus.off(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.off(Events.BUFFER_LEVEL_STATE_CHANGED, onBufferLevelStateChanged, this);\n eventBus.off(Events.BYTES_APPENDED, onBytesAppended, this);\n stopUpdatingWallclockTime();\n removeAllListeners();\n }\n videoModel = null;\n streamInfo = null;\n isDynamic = null;\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.streamController) {\n streamController = config.streamController;\n }\n if (config.metricsModel) {\n metricsModel = config.metricsModel;\n }\n if (config.dashMetrics) {\n dashMetrics = config.dashMetrics;\n }\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n if (config.mediaPlayerModel) {\n mediaPlayerModel = config.mediaPlayerModel;\n }\n if (config.adapter) {\n adapter = config.adapter;\n }\n if (config.videoModel) {\n videoModel = config.videoModel;\n }\n }\n\n /**\n * @param {boolean} ignoreStartOffset - ignore URL fragment start offset if true\n * @param {number} liveEdge - liveEdge value\n * @returns {number} object\n * @memberof PlaybackController#\n */\n function getStreamStartTime(ignoreStartOffset, liveEdge) {\n let presentationStartTime;\n const fragData = URIQueryAndFragmentModel(context).getInstance().getURIFragmentData();\n let startTimeOffset = NaN;\n\n if (fragData) {\n const fragS = parseInt(fragData.s, 10);\n const fragT = parseInt(fragData.t, 10);\n if (!ignoreStartOffset) {\n startTimeOffset = !isNaN(fragS) ? fragS : fragT;\n }\n } else {\n // handle case where no media fragments are parsed from the manifest URL\n startTimeOffset = 0;\n }\n\n if (isDynamic) {\n if (!isNaN(startTimeOffset)) {\n presentationStartTime = startTimeOffset - (streamInfo.manifestInfo.availableFrom.getTime() / 1000);\n\n if (presentationStartTime > liveStartTime ||\n presentationStartTime < (!isNaN(liveEdge) ? (liveEdge - streamInfo.manifestInfo.DVRWindowSize) : NaN)) {\n presentationStartTime = null;\n }\n }\n presentationStartTime = presentationStartTime || liveStartTime;\n\n } else {\n if (!isNaN(startTimeOffset) && startTimeOffset < Math.max(streamInfo.manifestInfo.duration, streamInfo.duration) && startTimeOffset >= 0) {\n presentationStartTime = startTimeOffset;\n } else {\n let earliestTime = commonEarliestTime[streamInfo.id]; //set by ready bufferStart after first onBytesAppended\n if (earliestTime === undefined) {\n earliestTime = streamController.getActiveStreamCommonEarliestTime(); //deal with calculated PST that is none 0 when streamInfo.start is 0\n }\n presentationStartTime = Math.max(earliestTime, streamInfo.start);\n }\n }\n\n return presentationStartTime;\n }\n\n function getActualPresentationTime(currentTime) {\n const metrics = metricsModel.getReadOnlyMetricsFor(Constants.VIDEO) || metricsModel.getReadOnlyMetricsFor(Constants.AUDIO);\n const DVRMetrics = dashMetrics.getCurrentDVRInfo(metrics);\n const DVRWindow = DVRMetrics ? DVRMetrics.range : null;\n let actualTime;\n\n if (!DVRWindow) return NaN;\n if (currentTime > DVRWindow.end) {\n actualTime = Math.max(DVRWindow.end - streamInfo.manifestInfo.minBufferTime * 2, DVRWindow.start);\n } else if (currentTime < DVRWindow.start) {\n actualTime = DVRWindow.start;\n } else {\n return currentTime;\n }\n\n return actualTime;\n }\n\n function startUpdatingWallclockTime() {\n if (wallclockTimeIntervalId !== null) return;\n\n const tick = function () {\n onWallclockTime();\n };\n\n wallclockTimeIntervalId = setInterval(tick, mediaPlayerModel.getWallclockTimeUpdateInterval());\n }\n\n function stopUpdatingWallclockTime() {\n clearInterval(wallclockTimeIntervalId);\n wallclockTimeIntervalId = null;\n }\n\n function updateCurrentTime() {\n if (isPaused() || !isDynamic || videoModel.getReadyState() === 0) return;\n const currentTime = getTime();\n const actualTime = getActualPresentationTime(currentTime);\n const timeChanged = (!isNaN(actualTime) && actualTime !== currentTime);\n if (timeChanged) {\n seek(actualTime);\n }\n }\n\n function onDataUpdateCompleted(e) {\n if (e.error) return;\n\n const representationInfo = adapter.convertDataToRepresentationInfo(e.currentRepresentation);\n const info = representationInfo.mediaInfo.streamInfo;\n\n if (streamInfo.id !== info.id) return;\n streamInfo = info;\n\n updateCurrentTime();\n }\n\n function onCanPlay() {\n eventBus.trigger(Events.CAN_PLAY);\n }\n\n function onPlaybackStart() {\n log('Native video element event: play');\n updateCurrentTime();\n startUpdatingWallclockTime();\n eventBus.trigger(Events.PLAYBACK_STARTED, {\n startTime: getTime()\n });\n }\n\n function onPlaybackPlaying() {\n log('Native video element event: playing');\n eventBus.trigger(Events.PLAYBACK_PLAYING, {\n playingTime: getTime()\n });\n }\n\n function onPlaybackPaused() {\n log('Native video element event: pause');\n eventBus.trigger(Events.PLAYBACK_PAUSED, {\n ended: getEnded()\n });\n }\n\n function onPlaybackSeeking() {\n const seekTime = getTime();\n log('Seeking to: ' + seekTime);\n startUpdatingWallclockTime();\n eventBus.trigger(Events.PLAYBACK_SEEKING, {\n seekTime: seekTime\n });\n }\n\n function onPlaybackSeeked() {\n log('Native video element event: seeked');\n eventBus.trigger(Events.PLAYBACK_SEEKED);\n }\n\n function onPlaybackTimeUpdated() {\n const time = getTime();\n currentTime = time;\n eventBus.trigger(Events.PLAYBACK_TIME_UPDATED, {\n timeToEnd: getTimeToStreamEnd(),\n time: time\n });\n }\n\n function updateLivePlaybackTime() {\n const now = Date.now();\n if (!lastLivePlaybackTime || now > lastLivePlaybackTime + LIVE_UPDATE_PLAYBACK_TIME_INTERVAL_MS) {\n lastLivePlaybackTime = now;\n onPlaybackTimeUpdated();\n }\n }\n\n function onPlaybackProgress() {\n eventBus.trigger(Events.PLAYBACK_PROGRESS);\n }\n\n function onPlaybackRateChanged() {\n const rate = getPlaybackRate();\n log('Native video element event: ratechange: ', rate);\n eventBus.trigger(Events.PLAYBACK_RATE_CHANGED, {\n playbackRate: rate\n });\n }\n\n function onPlaybackMetaDataLoaded() {\n log('Native video element event: loadedmetadata');\n eventBus.trigger(Events.PLAYBACK_METADATA_LOADED);\n startUpdatingWallclockTime();\n }\n\n function onPlaybackEnded() {\n log('Native video element event: ended');\n pause();\n stopUpdatingWallclockTime();\n eventBus.trigger(Events.PLAYBACK_ENDED);\n }\n\n function onPlaybackError(event) {\n const target = event.target || event.srcElement;\n eventBus.trigger(Events.PLAYBACK_ERROR, {\n error: target.error\n });\n }\n\n function onWallclockTime() {\n eventBus.trigger(Events.WALLCLOCK_TIME_UPDATED, {\n isDynamic: isDynamic,\n time: new Date()\n });\n\n // Updates playback time for paused dynamic streams\n // (video element doesn't call timeupdate when the playback is paused)\n if (getIsDynamic() && isPaused()) {\n updateLivePlaybackTime();\n }\n }\n\n function checkTimeInRanges(time, ranges) {\n if (ranges && ranges.length > 0) {\n for (let i = 0, len = ranges.length; i < len; i++) {\n if (time >= ranges.start(i) && time < ranges.end(i)) {\n return true;\n }\n }\n }\n return false;\n }\n\n function onBytesAppended(e) {\n let earliestTime,\n initialStartTime;\n let ranges = e.bufferedRanges;\n if (!ranges || !ranges.length) return;\n if (commonEarliestTime[streamInfo.id] === false) {\n //stream has already been started.\n return;\n }\n\n const type = e.sender.getType();\n\n if (bufferedRange[streamInfo.id] === undefined) {\n bufferedRange[streamInfo.id] = [];\n }\n\n bufferedRange[streamInfo.id][type] = ranges;\n\n if (commonEarliestTime[streamInfo.id] === undefined) {\n commonEarliestTime[streamInfo.id] = [];\n }\n\n if (commonEarliestTime[streamInfo.id][type] === undefined) {\n commonEarliestTime[streamInfo.id][type] = Math.max(ranges.start(0), streamInfo.start);\n }\n\n const hasVideoTrack = streamController.isVideoTrackPresent();\n const hasAudioTrack = streamController.isAudioTrackPresent();\n\n initialStartTime = getStreamStartTime(false);\n\n if (hasAudioTrack && hasVideoTrack) {\n //current stream has audio and video contents\n if (!isNaN(commonEarliestTime[streamInfo.id].audio) && !isNaN(commonEarliestTime[streamInfo.id].video)) {\n\n if (commonEarliestTime[streamInfo.id].audio < commonEarliestTime[streamInfo.id].video) {\n // common earliest is video time\n // check buffered audio range has video time, if ok, we seek, otherwise, we wait some other data\n earliestTime = commonEarliestTime[streamInfo.id].video > initialStartTime ? commonEarliestTime[streamInfo.id].video : initialStartTime;\n ranges = bufferedRange[streamInfo.id].audio;\n } else {\n // common earliest is audio time\n // check buffered video range has audio time, if ok, we seek, otherwise, we wait some other data\n earliestTime = commonEarliestTime[streamInfo.id].audio > initialStartTime ? commonEarliestTime[streamInfo.id].audio : initialStartTime;\n ranges = bufferedRange[streamInfo.id].video;\n }\n if (checkTimeInRanges(earliestTime, ranges)) {\n seek(earliestTime);\n commonEarliestTime[streamInfo.id] = false;\n }\n }\n } else {\n //current stream has only audio or only video content\n if (commonEarliestTime[streamInfo.id][type]) {\n earliestTime = commonEarliestTime[streamInfo.id][type] > initialStartTime ? commonEarliestTime[streamInfo.id][type] : initialStartTime;\n seek(earliestTime);\n commonEarliestTime[streamInfo.id] = false;\n }\n }\n }\n\n function onBufferLevelStateChanged(e) {\n // do not stall playback when get an event from Stream that is not active\n if (e.streamInfo.id !== streamInfo.id) return;\n videoModel.setStallState(e.mediaType, e.state === BufferController.BUFFER_EMPTY);\n }\n\n function addAllListeners() {\n videoModel.addEventListener('canplay', onCanPlay);\n videoModel.addEventListener('play', onPlaybackStart);\n videoModel.addEventListener('playing', onPlaybackPlaying);\n videoModel.addEventListener('pause', onPlaybackPaused);\n videoModel.addEventListener('error', onPlaybackError);\n videoModel.addEventListener('seeking', onPlaybackSeeking);\n videoModel.addEventListener('seeked', onPlaybackSeeked);\n videoModel.addEventListener('timeupdate', onPlaybackTimeUpdated);\n videoModel.addEventListener('progress', onPlaybackProgress);\n videoModel.addEventListener('ratechange', onPlaybackRateChanged);\n videoModel.addEventListener('loadedmetadata', onPlaybackMetaDataLoaded);\n videoModel.addEventListener('ended', onPlaybackEnded);\n }\n\n function removeAllListeners() {\n videoModel.removeEventListener('canplay', onCanPlay);\n videoModel.removeEventListener('play', onPlaybackStart);\n videoModel.removeEventListener('playing', onPlaybackPlaying);\n videoModel.removeEventListener('pause', onPlaybackPaused);\n videoModel.removeEventListener('error', onPlaybackError);\n videoModel.removeEventListener('seeking', onPlaybackSeeking);\n videoModel.removeEventListener('seeked', onPlaybackSeeked);\n videoModel.removeEventListener('timeupdate', onPlaybackTimeUpdated);\n videoModel.removeEventListener('progress', onPlaybackProgress);\n videoModel.removeEventListener('ratechange', onPlaybackRateChanged);\n videoModel.removeEventListener('loadedmetadata', onPlaybackMetaDataLoaded);\n videoModel.removeEventListener('ended', onPlaybackEnded);\n }\n\n instance = {\n initialize: initialize,\n setConfig: setConfig,\n getStreamStartTime: getStreamStartTime,\n getTimeToStreamEnd: getTimeToStreamEnd,\n getTime: getTime,\n getPlaybackRate: getPlaybackRate,\n getPlayedRanges: getPlayedRanges,\n getEnded: getEnded,\n getIsDynamic: getIsDynamic,\n getStreamController: getStreamController,\n setLiveStartTime: setLiveStartTime,\n getLiveStartTime: getLiveStartTime,\n computeLiveDelay: computeLiveDelay,\n getLiveDelay: getLiveDelay,\n play: play,\n isPaused: isPaused,\n pause: pause,\n isSeeking: isSeeking,\n seek: seek,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nPlaybackController.__dashjs_factory_name = 'PlaybackController';\nexport default FactoryMaker.getSingletonFactory(PlaybackController);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport {PlayListTrace} from '../vo/metrics/PlayList';\nimport AbrController from './AbrController';\nimport BufferController from './BufferController';\nimport BufferLevelRule from '../rules/scheduling/BufferLevelRule';\nimport NextFragmentRequestRule from '../rules/scheduling/NextFragmentRequestRule';\nimport FragmentModel from '../models/FragmentModel';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\n\nfunction ScheduleController(config) {\n\n config = config || {};\n const context = this.context;\n const eventBus = EventBus(context).getInstance();\n const metricsModel = config.metricsModel;\n const adapter = config.adapter;\n const dashMetrics = config.dashMetrics;\n const dashManifestModel = config.dashManifestModel;\n const timelineConverter = config.timelineConverter;\n const mediaPlayerModel = config.mediaPlayerModel;\n const abrController = config.abrController;\n const playbackController = config.playbackController;\n const streamController = config.streamController;\n const textController = config.textController;\n const sourceBufferController = config.sourceBufferController;\n const type = config.type;\n const streamProcessor = config.streamProcessor;\n\n let instance,\n log,\n fragmentModel,\n currentRepresentationInfo,\n initialRequest,\n isStopped,\n playListMetrics,\n playListTraceMetrics,\n playListTraceMetricsClosed,\n isFragmentProcessingInProgress,\n timeToLoadDelay,\n scheduleTimeout,\n seekTarget,\n bufferLevelRule,\n nextFragmentRequestRule,\n scheduleWhilePaused,\n lastFragmentRequest,\n topQualityIndex,\n lastInitQuality,\n replaceRequestArray,\n switchTrack;\n\n function setup() {\n log = Debug(context).getInstance().log.bind(instance);\n\n resetInitialSettings();\n }\n\n function initialize() {\n fragmentModel = streamProcessor.getFragmentModel();\n scheduleWhilePaused = mediaPlayerModel.getScheduleWhilePaused();\n\n bufferLevelRule = BufferLevelRule(context).create({\n abrController: abrController,\n dashMetrics: dashMetrics,\n metricsModel: metricsModel,\n mediaPlayerModel: mediaPlayerModel,\n textController: textController\n });\n\n nextFragmentRequestRule = NextFragmentRequestRule(context).create({\n adapter: adapter,\n sourceBufferController: sourceBufferController,\n textController: textController\n });\n\n if (dashManifestModel.getIsTextTrack(type)) {\n eventBus.on(Events.TIMED_TEXT_REQUESTED, onTimedTextRequested, this);\n }\n\n //eventBus.on(Events.LIVE_EDGE_SEARCH_COMPLETED, onLiveEdgeSearchCompleted, this);\n eventBus.on(Events.QUALITY_CHANGE_REQUESTED, onQualityChanged, this);\n eventBus.on(Events.DATA_UPDATE_STARTED, onDataUpdateStarted, this);\n eventBus.on(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.on(Events.FRAGMENT_LOADING_COMPLETED, onFragmentLoadingCompleted, this);\n eventBus.on(Events.STREAM_COMPLETED, onStreamCompleted, this);\n eventBus.on(Events.STREAM_INITIALIZED, onStreamInitialized, this);\n eventBus.on(Events.BUFFER_LEVEL_STATE_CHANGED, onBufferLevelStateChanged, this);\n eventBus.on(Events.BUFFER_CLEARED, onBufferCleared, this);\n eventBus.on(Events.BYTES_APPENDED, onBytesAppended, this);\n eventBus.on(Events.INIT_REQUESTED, onInitRequested, this);\n eventBus.on(Events.QUOTA_EXCEEDED, onQuotaExceeded, this);\n eventBus.on(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.on(Events.PLAYBACK_STARTED, onPlaybackStarted, this);\n eventBus.on(Events.PLAYBACK_RATE_CHANGED, onPlaybackRateChanged, this);\n eventBus.on(Events.PLAYBACK_TIME_UPDATED, onPlaybackTimeUpdated, this);\n eventBus.on(Events.URL_RESOLUTION_FAILED, onURLResolutionFailed, this);\n eventBus.on(Events.FRAGMENT_LOADING_ABANDONED, onFragmentLoadingAbandoned, this);\n }\n\n function isStarted() {\n return (isStopped === false);\n }\n\n function start() {\n if (!currentRepresentationInfo || streamProcessor.isBufferingCompleted()) {\n return;\n }\n\n addPlaylistTraceMetrics();\n isStopped = false;\n\n if (initialRequest) {\n initialRequest = false;\n }\n\n startScheduleTimer(0);\n\n log('Schedule controller starting for ' + type);\n }\n\n function stop() {\n if (isStopped) {\n return;\n }\n\n isStopped = true;\n clearTimeout(scheduleTimeout);\n log('Schedule controller stopping for ' + type);\n }\n\n function hasTopQualityChanged(type, id) {\n topQualityIndex[id] = topQualityIndex[id] || {};\n const newTopQualityIndex = abrController.getTopQualityIndexFor(type, id);\n\n if (topQualityIndex[id][type] != newTopQualityIndex) {\n log('Top quality ' + type + ' index has changed from ' + topQualityIndex[id][type] + ' to ' + newTopQualityIndex);\n topQualityIndex[id][type] = newTopQualityIndex;\n return true;\n }\n return false;\n\n }\n\n function schedule() {\n if (isStopped || isFragmentProcessingInProgress || !streamProcessor.getBufferController() || playbackController.isPaused() && !scheduleWhilePaused) {\n log('ScheduleController ' + type + '- schedule stop!');\n return;\n }\n\n validateExecutedFragmentRequest();\n\n const isReplacement = replaceRequestArray.length > 0;\n if (switchTrack || isReplacement ||\n hasTopQualityChanged(currentRepresentationInfo.mediaInfo.type, streamProcessor.getStreamInfo().id) ||\n bufferLevelRule.execute(streamProcessor, type, streamController.isVideoTrackPresent())) {\n\n const getNextFragment = function () {\n log('ScheduleController ' + type + '- getNextFragment');\n const fragmentController = streamProcessor.getFragmentController();\n if (switchTrack) {\n log('ScheduleController ' + type + '- switch track has been asked, get init request for ' + type + ' with representationid = ' + currentRepresentationInfo.id);\n streamProcessor.switchInitData(currentRepresentationInfo.id);\n lastInitQuality = currentRepresentationInfo.quality;\n switchTrack = false;\n } else if (currentRepresentationInfo.quality !== lastInitQuality) {\n log('ScheduleController ' + type + '- quality has changed, get init request');\n lastInitQuality = currentRepresentationInfo.quality;\n\n streamProcessor.switchInitData(currentRepresentationInfo.id);\n } else {\n const replacement = replaceRequestArray.shift();\n\n if (fragmentController.isInitializationRequest(replacement)) {\n //to be sure the specific init segment had not already been loaded.\n streamProcessor.switchInitData(replacement.representationId);\n } else {\n const request = nextFragmentRequestRule.execute(streamProcessor, replacement);\n if (request) {\n log('ScheduleController ' + type + '- getNextFragment - request is ' + request.url);\n fragmentModel.executeRequest(request);\n } else { //Use case - Playing at the bleeding live edge and frag is not available yet. Cycle back around.\n log('getNextFragment ' + type + '- Playing at the bleeding live edge and frag is not available yet');\n isFragmentProcessingInProgress = false;\n startScheduleTimer(500);\n }\n }\n }\n };\n\n isFragmentProcessingInProgress = true;\n if (isReplacement || switchTrack) {\n getNextFragment();\n } else {\n abrController.checkPlaybackQuality(type);\n getNextFragment();\n }\n\n } else {\n startScheduleTimer(500);\n }\n }\n\n function validateExecutedFragmentRequest() {\n //Validate that the fragment request executed and appended into the source buffer is as\n // good of quality as the current quality and is the correct media track.\n const safeBufferLevel = currentRepresentationInfo.fragmentDuration * 1.5;\n const request = fragmentModel.getRequests({\n state: FragmentModel.FRAGMENT_MODEL_EXECUTED,\n time: playbackController.getTime() + safeBufferLevel,\n threshold: 0\n })[0];\n\n if (request && replaceRequestArray.indexOf(request) === -1 && !dashManifestModel.getIsTextTrack(type)) {\n const fastSwitchModeEnabled = mediaPlayerModel.getFastSwitchEnabled();\n const bufferLevel = streamProcessor.getBufferLevel();\n const abandonmentState = abrController.getAbandonmentStateFor(type);\n\n if (fastSwitchModeEnabled && request.quality < currentRepresentationInfo.quality && bufferLevel >= safeBufferLevel && abandonmentState !== AbrController.ABANDON_LOAD) {\n replaceRequest(request);\n log('Reloading outdated fragment at index: ', request.index);\n } else if (request.quality > currentRepresentationInfo.quality) {\n //The buffer has better quality it in then what we would request so set append point to end of buffer!!\n setSeekTarget(playbackController.getTime() + streamProcessor.getBufferLevel());\n }\n }\n }\n\n function startScheduleTimer(value) {\n clearTimeout(scheduleTimeout);\n scheduleTimeout = setTimeout(schedule, value);\n }\n\n function onInitRequested(e) {\n if (!e.sender || e.sender.getStreamProcessor() !== streamProcessor) {\n return;\n }\n\n getInitRequest(currentRepresentationInfo.quality);\n }\n\n function getInitRequest(quality) {\n const request = adapter.getInitRequest(streamProcessor, quality);\n if (request) {\n isFragmentProcessingInProgress = true;\n fragmentModel.executeRequest(request);\n }\n }\n\n function switchTrackAsked() {\n switchTrack = true;\n }\n\n function replaceRequest(request) {\n replaceRequestArray.push(request);\n }\n\n function onQualityChanged(e) {\n if (type !== e.mediaType || streamProcessor.getStreamInfo().id !== e.streamInfo.id) {\n return;\n }\n\n currentRepresentationInfo = streamProcessor.getRepresentationInfoForQuality(e.newQuality);\n\n if (currentRepresentationInfo === null || currentRepresentationInfo === undefined) {\n throw new Error('Unexpected error! - currentRepresentationInfo is null or undefined');\n }\n\n clearPlayListTraceMetrics(new Date(), PlayListTrace.REPRESENTATION_SWITCH_STOP_REASON);\n addPlaylistTraceMetrics();\n }\n\n function completeQualityChange(trigger) {\n if (playbackController && fragmentModel) {\n const item = fragmentModel.getRequests({\n state: FragmentModel.FRAGMENT_MODEL_EXECUTED,\n time: playbackController.getTime(),\n threshold: 0\n })[0];\n if (item && playbackController.getTime() >= item.startTime) {\n if ((item.quality !== lastFragmentRequest.quality || item.adaptationIndex !== lastFragmentRequest.adaptationIndex) && trigger) {\n eventBus.trigger(Events.QUALITY_CHANGE_RENDERED, {\n mediaType: type,\n oldQuality: lastFragmentRequest.quality,\n newQuality: item.quality\n });\n }\n lastFragmentRequest = {\n quality: item.quality,\n adaptationIndex: item.adaptationIndex\n };\n }\n }\n }\n\n function onDataUpdateCompleted(e) {\n if (e.error || e.sender.getStreamProcessor() !== streamProcessor) {\n return;\n }\n\n currentRepresentationInfo = adapter.convertDataToRepresentationInfo(e.currentRepresentation);\n }\n\n function onStreamInitialized(e) {\n if (e.error || streamProcessor.getStreamInfo().id !== e.streamInfo.id) {\n return;\n }\n\n currentRepresentationInfo = streamProcessor.getCurrentRepresentationInfo();\n\n if (initialRequest) {\n if (playbackController.getIsDynamic()) {\n timelineConverter.setTimeSyncCompleted(true);\n setLiveEdgeSeekTarget();\n } else {\n seekTarget = playbackController.getStreamStartTime(false);\n streamProcessor.getBufferController().setSeekStartTime(seekTarget);\n }\n }\n\n if (isStopped) {\n start();\n }\n }\n\n function setLiveEdgeSeekTarget() {\n const liveEdgeFinder = streamProcessor.getLiveEdgeFinder();\n if (liveEdgeFinder) {\n const liveEdge = liveEdgeFinder.getLiveEdge();\n const dvrWindowSize = currentRepresentationInfo.mediaInfo.streamInfo.manifestInfo.DVRWindowSize / 2;\n const startTime = liveEdge - playbackController.computeLiveDelay(currentRepresentationInfo.fragmentDuration, dvrWindowSize);\n const request = adapter.getFragmentRequestForTime(streamProcessor, currentRepresentationInfo, startTime, {\n ignoreIsFinished: true\n });\n\n playbackController.setLiveStartTime(request.startTime);\n seekTarget = playbackController.getStreamStartTime(false, liveEdge);\n\n //special use case for multi period stream. If the startTime is out of the current period, send a seek command.\n //in onPlaybackSeeking callback (StreamController), the detection of switch stream is done.\n if (seekTarget > (currentRepresentationInfo.mediaInfo.streamInfo.start + currentRepresentationInfo.mediaInfo.streamInfo.duration)) {\n playbackController.seek(seekTarget);\n }\n\n const manifestUpdateInfo = dashMetrics.getCurrentManifestUpdate(metricsModel.getMetricsFor(Constants.STREAM));\n metricsModel.updateManifestUpdateInfo(manifestUpdateInfo, {\n currentTime: seekTarget,\n presentationStartTime: liveEdge,\n latency: liveEdge - seekTarget,\n clientTimeOffset: timelineConverter.getClientTimeOffset()\n });\n }\n }\n\n function onStreamCompleted(e) {\n if (e.fragmentModel !== fragmentModel) {\n return;\n }\n\n stop();\n isFragmentProcessingInProgress = false;\n log('Stream is complete');\n }\n\n function onFragmentLoadingCompleted(e) {\n if (e.sender !== fragmentModel) {\n return;\n }\n\n if (dashManifestModel.getIsTextTrack(type)) {\n isFragmentProcessingInProgress = false;\n }\n\n if (e.error && e.request.serviceLocation && !isStopped) {\n replaceRequest(e.request);\n isFragmentProcessingInProgress = false;\n startScheduleTimer(0);\n }\n }\n\n function onPlaybackTimeUpdated() {\n completeQualityChange(true);\n }\n\n function onBytesAppended(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) {\n return;\n }\n\n isFragmentProcessingInProgress = false;\n startScheduleTimer(0);\n }\n\n function onFragmentLoadingAbandoned(e) {\n if (e.streamProcessor !== streamProcessor) {\n return;\n }\n log('[ScheduleController][' + type + '] Request ' + e.request.url + ' has been aborted');\n replaceRequest(e.request);\n isFragmentProcessingInProgress = false;\n startScheduleTimer(0);\n }\n\n function onDataUpdateStarted(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) {\n return;\n }\n\n stop();\n }\n\n function onBufferCleared(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) {\n return;\n }\n\n // after the data has been removed from the buffer we should remove the requests from the list of\n // the executed requests for which playback time is inside the time interval that has been removed from the buffer\n fragmentModel.removeExecutedRequestsBeforeTime(e.to);\n\n if (e.hasEnoughSpaceToAppend && isStopped) {\n start();\n }\n }\n\n function onBufferLevelStateChanged(e) {\n if ((e.sender.getStreamProcessor() === streamProcessor) && e.state === BufferController.BUFFER_EMPTY && !playbackController.isSeeking()) {\n log('Buffer is empty! Stalling!');\n clearPlayListTraceMetrics(new Date(), PlayListTrace.REBUFFERING_REASON);\n }\n }\n\n function onQuotaExceeded(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) {\n return;\n }\n\n stop();\n isFragmentProcessingInProgress = false;\n }\n\n function onURLResolutionFailed() {\n fragmentModel.abortRequests();\n stop();\n }\n\n function onTimedTextRequested(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) {\n return;\n }\n\n getInitRequest(e.index);\n }\n\n function onPlaybackStarted() {\n if (isStopped || !scheduleWhilePaused) {\n start();\n }\n }\n\n function onPlaybackSeeking(e) {\n seekTarget = e.seekTime;\n setTimeToLoadDelay(0);\n\n if (isStopped) {\n start();\n }\n\n const manifestUpdateInfo = dashMetrics.getCurrentManifestUpdate(metricsModel.getMetricsFor(Constants.STREAM));\n const latency = currentRepresentationInfo.DVRWindow && playbackController ? currentRepresentationInfo.DVRWindow.end - playbackController.getTime() : NaN;\n metricsModel.updateManifestUpdateInfo(manifestUpdateInfo, {\n latency: latency\n });\n\n //if, during the seek command, the scheduleController is waiting : stop waiting, request chunk as soon as possible\n if (!isFragmentProcessingInProgress) {\n startScheduleTimer(0);\n }\n }\n\n function onPlaybackRateChanged(e) {\n if (playListTraceMetrics) {\n playListTraceMetrics.playbackspeed = e.playbackRate.toString();\n }\n }\n\n function getSeekTarget() {\n return seekTarget;\n }\n\n function setSeekTarget(value) {\n seekTarget = value;\n }\n\n function setTimeToLoadDelay(value) {\n timeToLoadDelay = value;\n }\n\n function getTimeToLoadDelay() {\n return timeToLoadDelay;\n }\n\n function getBufferTarget() {\n return bufferLevelRule.getBufferTarget(streamProcessor, type, streamController.isVideoTrackPresent());\n }\n\n function getType() {\n return type;\n }\n\n function setPlayList(playList) {\n playListMetrics = playList;\n }\n\n function finalisePlayList(time, reason) {\n clearPlayListTraceMetrics(time, reason);\n playListMetrics = null;\n }\n\n function clearPlayListTraceMetrics(endTime, stopreason) {\n if (playListMetrics && playListTraceMetricsClosed === false) {\n const startTime = playListTraceMetrics.start;\n const duration = endTime.getTime() - startTime.getTime();\n playListTraceMetrics.duration = duration;\n playListTraceMetrics.stopreason = stopreason;\n playListMetrics.trace.push(playListTraceMetrics);\n playListTraceMetricsClosed = true;\n }\n }\n\n function addPlaylistTraceMetrics() {\n if (playListMetrics && playListTraceMetricsClosed === true && currentRepresentationInfo) {\n playListTraceMetricsClosed = false;\n playListTraceMetrics = new PlayListTrace();\n playListTraceMetrics.representationid = currentRepresentationInfo.id;\n playListTraceMetrics.start = new Date();\n playListTraceMetrics.mstart = playbackController.getTime() * 1000;\n playListTraceMetrics.playbackspeed = playbackController.getPlaybackRate().toString();\n }\n }\n\n function resetInitialSettings() {\n isFragmentProcessingInProgress = false;\n timeToLoadDelay = 0;\n seekTarget = NaN;\n playListMetrics = null;\n playListTraceMetrics = null;\n playListTraceMetricsClosed = true;\n initialRequest = true;\n lastInitQuality = NaN;\n lastFragmentRequest = {\n quality: NaN,\n adaptationIndex: NaN\n };\n topQualityIndex = {};\n replaceRequestArray = [];\n isStopped = true;\n switchTrack = true;\n }\n\n function reset() {\n //eventBus.off(Events.LIVE_EDGE_SEARCH_COMPLETED, onLiveEdgeSearchCompleted, this);\n eventBus.off(Events.DATA_UPDATE_STARTED, onDataUpdateStarted, this);\n eventBus.off(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.off(Events.BUFFER_LEVEL_STATE_CHANGED, onBufferLevelStateChanged, this);\n eventBus.off(Events.QUALITY_CHANGE_REQUESTED, onQualityChanged, this);\n eventBus.off(Events.FRAGMENT_LOADING_COMPLETED, onFragmentLoadingCompleted, this);\n eventBus.off(Events.STREAM_COMPLETED, onStreamCompleted, this);\n eventBus.off(Events.STREAM_INITIALIZED, onStreamInitialized, this);\n eventBus.off(Events.QUOTA_EXCEEDED, onQuotaExceeded, this);\n eventBus.off(Events.BYTES_APPENDED, onBytesAppended, this);\n eventBus.off(Events.BUFFER_CLEARED, onBufferCleared, this);\n eventBus.off(Events.INIT_REQUESTED, onInitRequested, this);\n eventBus.off(Events.PLAYBACK_RATE_CHANGED, onPlaybackRateChanged, this);\n eventBus.off(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.off(Events.PLAYBACK_STARTED, onPlaybackStarted, this);\n eventBus.off(Events.PLAYBACK_TIME_UPDATED, onPlaybackTimeUpdated, this);\n eventBus.off(Events.URL_RESOLUTION_FAILED, onURLResolutionFailed, this);\n eventBus.off(Events.FRAGMENT_LOADING_ABANDONED, onFragmentLoadingAbandoned, this);\n if (dashManifestModel.getIsTextTrack(type)) {\n eventBus.off(Events.TIMED_TEXT_REQUESTED, onTimedTextRequested, this);\n }\n\n stop();\n completeQualityChange(false);\n resetInitialSettings();\n }\n\n instance = {\n initialize: initialize,\n getType: getType,\n getSeekTarget: getSeekTarget,\n setSeekTarget: setSeekTarget,\n setTimeToLoadDelay: setTimeToLoadDelay,\n getTimeToLoadDelay: getTimeToLoadDelay,\n replaceRequest: replaceRequest,\n switchTrackAsked: switchTrackAsked,\n isStarted: isStarted,\n start: start,\n stop: stop,\n reset: reset,\n setPlayList: setPlayList,\n getBufferTarget: getBufferTarget,\n finalisePlayList: finalisePlayList\n };\n\n setup();\n\n return instance;\n}\n\nScheduleController.__dashjs_factory_name = 'ScheduleController';\nexport default FactoryMaker.getClassFactory(ScheduleController);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport DashJSError from '../vo/DashJSError';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\n\nconst QUOTA_EXCEEDED_ERROR_CODE = 22;\nconst APPEND_ERROR_CODE = 1;\nconst REMOVE_ERROR_CODE = 2;\nconst APPEND_ERROR_MESSAGE = 'buffer or chunk is not defined';\nconst REMOVE_ERROR_MESSAGE = 'buffer is not defined';\n\nfunction SourceBufferController(config) {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n let textController = config.textController;\n\n let instance;\n\n function createSourceBuffer(mediaSource, mediaInfo) {\n\n let codec = mediaInfo.codec;\n let buffer = null;\n\n try {\n // Safari claims to support anything starting 'application/mp4'.\n // it definitely doesn't understand 'application/mp4;codecs=\"stpp\"'\n // - currently no browser does, so check for it and use our own\n // implementation. The same is true for codecs=\"wvtt\".\n if (codec.match(/application\\/mp4;\\s*codecs=\"(stpp|wvtt).*\"/i)) {\n throw new Error('not really supported');\n }\n\n buffer = mediaSource.addSourceBuffer(codec);\n\n } catch (ex) {\n // Note that in the following, the quotes are open to allow for extra text after stpp and wvtt\n if ((mediaInfo.isText) || (codec.indexOf('codecs=\"stpp') !== -1) || (codec.indexOf('codecs=\"wvtt') !== -1)) {\n buffer = textController.getTextSourceBuffer();\n } else {\n throw ex;\n }\n }\n\n return buffer;\n }\n\n function removeSourceBuffer(mediaSource, buffer) {\n try {\n mediaSource.removeSourceBuffer(buffer);\n } catch (ex) {}\n }\n\n function getBufferRange(buffer, time, tolerance) {\n let ranges = null;\n let start = 0;\n let end = 0;\n let firstStart = null;\n let lastEnd = null;\n let gap = 0;\n\n let len,\n i;\n\n let toler = (tolerance || 0.15);\n\n try {\n ranges = buffer.buffered;\n } catch (ex) {\n return null;\n }\n\n if (ranges !== null && ranges !== undefined) {\n for (i = 0, len = ranges.length; i < len; i++) {\n start = ranges.start(i);\n end = ranges.end(i);\n if (firstStart === null) {\n gap = Math.abs(start - time);\n if (time >= start && time < end) {\n // start the range\n firstStart = start;\n lastEnd = end;\n } else if (gap <= toler) {\n // start the range even though the buffer does not contain time 0\n firstStart = start;\n lastEnd = end;\n }\n } else {\n gap = start - lastEnd;\n if (gap <= toler) {\n // the discontinuity is smaller than the tolerance, combine the ranges\n lastEnd = end;\n } else {\n break;\n }\n }\n }\n\n if (firstStart !== null) {\n return {\n start: firstStart,\n end: lastEnd\n };\n }\n }\n\n return null;\n }\n\n function getAllRanges(buffer) {\n let ranges = null;\n\n try {\n ranges = buffer.buffered;\n return ranges;\n } catch (ex) {\n return null;\n }\n }\n\n function getTotalBufferedTime(buffer) {\n let ranges = getAllRanges(buffer);\n let totalBufferedTime = 0;\n let ln,\n i;\n\n if (!ranges) return totalBufferedTime;\n\n for (i = 0, ln = ranges.length; i < ln; i++) {\n totalBufferedTime += ranges.end(i) - ranges.start(i);\n }\n\n return totalBufferedTime;\n }\n\n function getBufferLength(buffer, time, tolerance) {\n\n let range,\n length;\n\n range = getBufferRange(buffer, time, tolerance);\n\n if (range === null) {\n length = 0;\n } else {\n length = range.end - time;\n }\n\n return length;\n }\n\n function getRangeDifference(currentRanges, buffer) {\n if (!buffer) return null;\n\n //TODO we may need to look for a more elegant and robust method\n // The logic below checks that is the difference between currentRanges and actual SourceBuffer ranges\n\n let newRanges = getAllRanges(buffer);\n let newStart,\n newEnd,\n equalStart,\n equalEnd,\n currentRange,\n nextCurrentRange,\n nextNewRange,\n hasRange,\n diff;\n\n if (!newRanges) return null;\n\n for (let i = 0, ln = newRanges.length; i < ln; i++) {\n hasRange = currentRanges.length > i;\n currentRange = hasRange ? {\n start: currentRanges.start(i),\n end: currentRanges.end(i)\n } : null;\n newStart = newRanges.start(i);\n newEnd = newRanges.end(i);\n\n // if there is no range with the same index it means that a new range has been added. This range is\n // the difference we are looking for\n // Example\n // current ranges\n // 0|---range1---|4 8|--range2--|12\n // new ranges\n // 0|---range1---|4| 8|--range2--|12 16|--range3--|20\n\n if (!currentRange) {\n diff = {\n start: newStart,\n end: newEnd\n };\n return diff;\n }\n\n equalStart = currentRange.start === newStart;\n equalEnd = currentRange.end === newEnd;\n\n // if ranges are equal do nothing here and go the next ranges\n if (equalStart && equalEnd) continue;\n\n // start or/and end of the range has been changed\n if (equalStart) {\n diff = {\n start: currentRange.end,\n end: newEnd\n };\n } else if (equalEnd) {\n diff = {\n start: newStart,\n end: currentRange.start\n };\n } else {\n // new range has been added before the current one\n diff = {\n start: newStart,\n end: newEnd\n };\n return diff;\n }\n\n // if there is next current range but no next new range (it it is not equal the next current range) it means\n // that the ranges have been merged\n // Example 1\n // current ranges\n // 0|---range1---|4 8|--range2--|12 16|---range3---|\n // new ranges\n // 0|-----------range1-----------|12 16|---range3--|\n nextCurrentRange = currentRanges.length > (i + 1) ? {\n start: currentRanges.start(i + 1),\n end: currentRanges.end(i + 1)\n } : null;\n nextNewRange = (i + 1) < ln ? {\n start: newRanges.start(i + 1),\n end: newRanges.end(i + 1)\n } : null;\n\n if (nextCurrentRange && (!nextNewRange || (nextNewRange.start !== nextCurrentRange.start || nextNewRange.end !== nextCurrentRange.end))) {\n diff.end = nextCurrentRange.start;\n }\n\n return diff;\n }\n\n return null;\n }\n\n function append(buffer, chunk) {\n if (!buffer || !chunk) {\n eventBus.trigger(Events.SOURCEBUFFER_APPEND_COMPLETED, {\n buffer: null,\n bytes: null,\n error: new DashJSError(APPEND_ERROR_CODE, APPEND_ERROR_MESSAGE, null)\n });\n return;\n }\n let bytes = chunk.bytes;\n\n let appendMethod = ('append' in buffer) ? 'append' : (('appendBuffer' in buffer) ? 'appendBuffer' : null);\n // our user-defined sourcebuffer-like object has Object as its\n // prototype whereas built-in SourceBuffers will have something\n // more sensible. do not pass chunk to built-in append.\n let acceptsChunk = Object.prototype.toString.call(buffer).slice(8, -1) === 'Object';\n\n if (!appendMethod) return;\n\n waitForUpdateEnd(buffer, function () {\n try {\n if (acceptsChunk) {\n // chunk.start is used in calculations by TextSourceBuffer\n buffer[appendMethod](bytes, chunk);\n } else {\n buffer[appendMethod](bytes);\n }\n // updating is in progress, we should wait for it to complete before signaling that this operation is done\n waitForUpdateEnd(buffer, function () {\n eventBus.trigger(Events.SOURCEBUFFER_APPEND_COMPLETED, {\n buffer: buffer,\n bytes: bytes\n });\n });\n } catch (err) {\n eventBus.trigger(Events.SOURCEBUFFER_APPEND_COMPLETED, {\n buffer: buffer,\n bytes: bytes,\n error: new DashJSError(err.code, err.message, null)\n });\n }\n });\n }\n\n function remove(buffer, start, end, mediaSource) {\n if (!buffer) {\n eventBus.trigger(Events.SOURCEBUFFER_REMOVE_COMPLETED, {\n buffer: buffer,\n from: start,\n to: end,\n error: new DashJSError(REMOVE_ERROR_CODE, REMOVE_ERROR_MESSAGE, null)\n });\n return;\n }\n // make sure that the given time range is correct. Otherwise we will get InvalidAccessError\n waitForUpdateEnd(buffer, function () {\n try {\n if ((start >= 0) && (end > start) && (mediaSource.readyState !== 'ended')) {\n buffer.remove(start, end);\n }\n // updating is in progress, we should wait for it to complete before signaling that this operation is done\n waitForUpdateEnd(buffer, function () {\n eventBus.trigger(Events.SOURCEBUFFER_REMOVE_COMPLETED, {\n buffer: buffer,\n from: start,\n to: end\n });\n });\n } catch (err) {\n eventBus.trigger(Events.SOURCEBUFFER_REMOVE_COMPLETED, {\n buffer: buffer,\n from: start,\n to: end,\n error: new DashJSError(err.code, err.message, null)\n });\n }\n });\n }\n\n function abort(mediaSource, buffer) {\n try {\n if (mediaSource.readyState === 'open') {\n buffer.abort();\n } else if (buffer.resetEmbedded && mediaSource.readyState === 'ended') {\n buffer.abort(); //The cues need to be removed from the TextSourceBuffer via a call to abort()\n }\n } catch (ex) {}\n }\n\n function waitForUpdateEnd(buffer, callback) {\n let intervalId;\n const CHECK_INTERVAL = 50;\n\n const checkIsUpdateEnded = function () {\n // if updating is still in progress do nothing and wait for the next check again.\n if (buffer.updating) return;\n // updating is completed, now we can stop checking and resolve the promise\n clearInterval(intervalId);\n callback();\n };\n\n const updateEndHandler = function () {\n if (buffer.updating) return;\n\n buffer.removeEventListener('updateend', updateEndHandler, false);\n callback();\n };\n\n if (!buffer.updating) {\n callback();\n return;\n }\n\n // use updateend event if possible\n if (typeof buffer.addEventListener === 'function') {\n try {\n buffer.addEventListener('updateend', updateEndHandler, false);\n } catch (err) {\n // use setInterval to periodically check if updating has been completed\n intervalId = setInterval(checkIsUpdateEnded, CHECK_INTERVAL);\n }\n } else {\n // use setInterval to periodically check if updating has been completed\n intervalId = setInterval(checkIsUpdateEnded, CHECK_INTERVAL);\n }\n }\n\n instance = {\n append: append,\n remove: remove,\n abort: abort,\n createSourceBuffer: createSourceBuffer,\n removeSourceBuffer: removeSourceBuffer,\n getBufferRange: getBufferRange,\n getAllRanges: getAllRanges,\n getTotalBufferedTime: getTotalBufferedTime,\n getBufferLength: getBufferLength,\n getRangeDifference: getRangeDifference\n };\n\n return instance;\n}\n\nSourceBufferController.__dashjs_factory_name = 'SourceBufferController';\nlet factory = FactoryMaker.getSingletonFactory(SourceBufferController);\nfactory.QUOTA_EXCEEDED_ERROR_CODE = QUOTA_EXCEEDED_ERROR_CODE;\nFactoryMaker.updateSingletonFactory(SourceBufferController.__dashjs_factory_name, factory);\nexport default factory;\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport MetricsConstants from '../constants/MetricsConstants';\nimport Stream from '../Stream';\nimport ManifestUpdater from '../ManifestUpdater';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport MediaPlayerModel from '../models/MediaPlayerModel';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport {\n PlayList,\n PlayListTrace\n} from '../vo/metrics/PlayList';\nimport Debug from '../../core/Debug';\nimport InitCache from '../utils/InitCache';\nimport URLUtils from '../utils/URLUtils';\nimport MediaPlayerEvents from '../MediaPlayerEvents';\nimport TimeSyncController from './TimeSyncController';\nimport BaseURLController from './BaseURLController';\nimport MediaSourceController from './MediaSourceController';\n\nfunction StreamController() {\n\n const STREAM_END_THRESHOLD = 0.5;\n const STREAM_END_TIMEOUT_DELAY = 0.1;\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n capabilities,\n manifestUpdater,\n manifestLoader,\n manifestModel,\n dashManifestModel,\n adapter,\n metricsModel,\n dashMetrics,\n mediaSourceController,\n timeSyncController,\n baseURLController,\n domStorage,\n abrController,\n mediaController,\n textController,\n sourceBufferController,\n initCache,\n urlUtils,\n errHandler,\n timelineConverter,\n streams,\n activeStream,\n protectionController,\n protectionData,\n autoPlay,\n isStreamSwitchingInProgress,\n hasMediaError,\n hasInitialisationError,\n mediaSource,\n videoModel,\n playbackController,\n mediaPlayerModel,\n isPaused,\n initialPlayback,\n playListMetrics,\n videoTrackDetected,\n audioTrackDetected,\n endedTimeout;\n\n function setup() {\n timeSyncController = TimeSyncController(context).getInstance();\n baseURLController = BaseURLController(context).getInstance();\n mediaSourceController = MediaSourceController(context).getInstance();\n initCache = InitCache(context).getInstance();\n urlUtils = URLUtils(context).getInstance();\n\n resetInitialSettings();\n }\n\n function initialize(autoPl, protData) {\n checkSetConfigCall();\n\n autoPlay = autoPl;\n protectionData = protData;\n timelineConverter.initialize();\n\n manifestUpdater = ManifestUpdater(context).create();\n manifestUpdater.setConfig({\n manifestModel: manifestModel,\n dashManifestModel: dashManifestModel,\n mediaPlayerModel: mediaPlayerModel,\n manifestLoader: manifestLoader\n });\n manifestUpdater.initialize();\n\n baseURLController.setConfig({\n dashManifestModel: dashManifestModel\n });\n\n eventBus.on(Events.TIME_SYNCHRONIZATION_COMPLETED, onTimeSyncCompleted, this);\n eventBus.on(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.on(Events.PLAYBACK_TIME_UPDATED, onPlaybackTimeUpdated, this);\n eventBus.on(Events.PLAYBACK_ENDED, onEnded, this);\n eventBus.on(Events.PLAYBACK_ERROR, onPlaybackError, this);\n eventBus.on(Events.PLAYBACK_STARTED, onPlaybackStarted, this);\n eventBus.on(Events.PLAYBACK_PAUSED, onPlaybackPaused, this);\n eventBus.on(Events.MANIFEST_UPDATED, onManifestUpdated, this);\n eventBus.on(Events.STREAM_BUFFERING_COMPLETED, onStreamBufferingCompleted, this);\n eventBus.on(MediaPlayerEvents.METRIC_ADDED, onMetricAdded, this);\n }\n\n /*\n * Called when current playback position is changed.\n * Used to determine the time current stream is finished and we should switch to the next stream.\n */\n function onPlaybackTimeUpdated(e) {\n\n if (isVideoTrackPresent()) {\n const playbackQuality = videoModel.getPlaybackQuality();\n if (playbackQuality) {\n metricsModel.addDroppedFrames(Constants.VIDEO, playbackQuality);\n }\n }\n\n // Sometimes after seeking timeUpdateHandler is called before seekingHandler and a new stream starts\n // from beginning instead of from a chosen position. So we do nothing if the player is in the seeking state\n if (playbackController.isSeeking()) return;\n\n if (e.timeToEnd <= STREAM_END_THRESHOLD) {\n // In some cases the ended event is not triggered at the end of the stream, do it artificially here.\n // This should only be a fallback, put an extra STREAM_END_TIMEOUT_DELAY to give the real ended event time to trigger.\n\n if (endedTimeout) {\n clearTimeout(endedTimeout);\n endedTimeout = undefined;\n }\n endedTimeout = setTimeout(function () {\n endedTimeout = undefined;\n eventBus.trigger(Events.PLAYBACK_ENDED);\n }, 1000 * (e.timeToEnd + STREAM_END_TIMEOUT_DELAY));\n }\n }\n\n function onPlaybackSeeking(e) {\n const seekingStream = getStreamForTime(e.seekTime);\n\n if (seekingStream && seekingStream !== activeStream) {\n flushPlaylistMetrics(PlayListTrace.END_OF_PERIOD_STOP_REASON);\n switchStream(activeStream, seekingStream, e.seekTime);\n } else {\n flushPlaylistMetrics(PlayListTrace.USER_REQUEST_STOP_REASON);\n }\n\n addPlaylistMetrics(PlayList.SEEK_START_REASON);\n }\n\n function onPlaybackStarted( /*e*/ ) {\n if (initialPlayback) {\n initialPlayback = false;\n addPlaylistMetrics(PlayList.INITIAL_PLAYOUT_START_REASON);\n } else {\n if (isPaused) {\n isPaused = false;\n addPlaylistMetrics(PlayList.RESUME_FROM_PAUSE_START_REASON);\n }\n }\n }\n\n function onPlaybackPaused(e) {\n if (!e.ended) {\n isPaused = true;\n flushPlaylistMetrics(PlayListTrace.USER_REQUEST_STOP_REASON);\n }\n }\n\n function onStreamBufferingCompleted() {\n const isLast = getActiveStreamInfo().isLast;\n if (mediaSource && isLast) {\n mediaSourceController.signalEndOfStream(mediaSource);\n }\n }\n\n function getStreamForTime(time) {\n let duration = 0;\n let stream = null;\n\n const ln = streams.length;\n\n if (ln > 0) {\n duration += streams[0].getStartTime();\n }\n\n for (let i = 0; i < ln; i++) {\n stream = streams[i];\n duration += stream.getDuration();\n\n if (time < duration) {\n return stream;\n }\n }\n\n return null;\n }\n\n /**\n * Returns a playhead time, in seconds, converted to be relative\n * to the start of an identified stream/period or null if no such stream\n * @param {number} time\n * @param {string} id\n * @returns {number|null}\n */\n function getTimeRelativeToStreamId(time, id) {\n let stream = null;\n let baseStart = 0;\n let streamStart = 0;\n let streamDur = null;\n\n const ln = streams.length;\n\n for (let i = 0; i < ln; i++) {\n stream = streams[i];\n streamStart = stream.getStartTime();\n streamDur = stream.getDuration();\n\n // use start time, if not undefined or NaN or similar\n if (Number.isFinite(streamStart)) {\n baseStart = streamStart;\n }\n\n if (stream.getId() === id) {\n return time - baseStart;\n } else {\n // use duration if not undefined or NaN or similar\n if (Number.isFinite(streamDur)) {\n baseStart += streamDur;\n }\n }\n }\n\n return null;\n }\n\n function getActiveStreamProcessors() {\n return activeStream ? activeStream.getProcessors() : [];\n }\n\n function getActiveStreamCommonEarliestTime() {\n let commonEarliestTime = [];\n if (activeStream) {\n activeStream.getProcessors().forEach(p => {\n commonEarliestTime.push(p.getIndexHandler().getEarliestTime());\n });\n }\n return Math.min.apply(Math, commonEarliestTime);\n }\n\n function onEnded() {\n if (endedTimeout) {\n clearTimeout(endedTimeout);\n endedTimeout = undefined;\n }\n\n const nextStream = getNextStream();\n if (nextStream) {\n switchStream(activeStream, nextStream, NaN);\n }\n flushPlaylistMetrics(nextStream ? PlayListTrace.END_OF_PERIOD_STOP_REASON : PlayListTrace.END_OF_CONTENT_STOP_REASON);\n }\n\n function getNextStream() {\n if (activeStream) {\n const start = activeStream.getStreamInfo().start;\n const duration = activeStream.getStreamInfo().duration;\n\n return streams.filter(function (stream) {\n return (stream.getStreamInfo().start === (start + duration));\n })[0];\n }\n }\n\n function switchStream(oldStream, newStream, seekTime) {\n\n if (isStreamSwitchingInProgress || !newStream || oldStream === newStream) return;\n isStreamSwitchingInProgress = true;\n\n eventBus.trigger(Events.PERIOD_SWITCH_STARTED, {\n fromStreamInfo: oldStream ? oldStream.getStreamInfo() : null,\n toStreamInfo: newStream.getStreamInfo()\n });\n\n if (oldStream) oldStream.deactivate();\n activeStream = newStream;\n playbackController.initialize(activeStream.getStreamInfo());\n\n //TODO detect if we should close and repose or jump to activateStream.\n openMediaSource(seekTime);\n }\n\n function openMediaSource(seekTime) {\n\n let sourceUrl;\n\n function onMediaSourceOpen() {\n log('MediaSource is open!');\n window.URL.revokeObjectURL(sourceUrl);\n mediaSource.removeEventListener('sourceopen', onMediaSourceOpen);\n mediaSource.removeEventListener('webkitsourceopen', onMediaSourceOpen);\n setMediaDuration();\n activateStream(seekTime);\n }\n\n if (!mediaSource) {\n mediaSource = mediaSourceController.createMediaSource();\n } else {\n mediaSourceController.detachMediaSource(videoModel);\n }\n\n mediaSource.addEventListener('sourceopen', onMediaSourceOpen, false);\n mediaSource.addEventListener('webkitsourceopen', onMediaSourceOpen, false);\n sourceUrl = mediaSourceController.attachMediaSource(mediaSource, videoModel);\n log('MediaSource attached to element. Waiting on open...');\n }\n\n function activateStream(seekTime) {\n\n activeStream.activate(mediaSource);\n\n if (!initialPlayback) {\n if (!isNaN(seekTime)) {\n playbackController.seek(seekTime); //we only need to call seek here, IndexHandlerTime was set from seeking event\n } else {\n let startTime = playbackController.getStreamStartTime(true);\n activeStream.getProcessors().forEach(p => {\n adapter.setIndexHandlerTime(p, startTime);\n });\n playbackController.seek(startTime); //seek to period start time\n }\n } else {\n videoTrackDetected = checkTrackPresence(Constants.VIDEO);\n }\n\n activeStream.startEventController();\n if (autoPlay || !initialPlayback) {\n playbackController.play();\n }\n\n isStreamSwitchingInProgress = false;\n eventBus.trigger(Events.PERIOD_SWITCH_COMPLETED, {\n toStreamInfo: activeStream.getStreamInfo()\n });\n }\n\n function setMediaDuration() {\n const manifestDuration = activeStream.getStreamInfo().manifestInfo.duration;\n const mediaDuration = mediaSourceController.setDuration(mediaSource, manifestDuration);\n log('Duration successfully set to: ' + mediaDuration);\n }\n\n function getComposedStream(streamInfo) {\n for (let i = 0, ln = streams.length; i < ln; i++) {\n if (streams[i].getId() === streamInfo.id) {\n return streams[i];\n }\n }\n return null;\n }\n\n function composeStreams() {\n\n try {\n const streamsInfo = adapter.getStreamsInfo();\n if (streamsInfo.length === 0) {\n throw new Error('There are no streams');\n }\n\n const manifestUpdateInfo = dashMetrics.getCurrentManifestUpdate(metricsModel.getMetricsFor(Constants.STREAM));\n metricsModel.updateManifestUpdateInfo(manifestUpdateInfo, {\n currentTime: playbackController.getTime(),\n buffered: videoModel.getBufferRange(),\n presentationStartTime: streamsInfo[0].start,\n clientTimeOffset: timelineConverter.getClientTimeOffset()\n });\n\n for (let i = 0, ln = streamsInfo.length; i < ln; i++) {\n\n // If the Stream object does not exist we probably loaded the manifest the first time or it was\n // introduced in the updated manifest, so we need to create a new Stream and perform all the initialization operations\n const streamInfo = streamsInfo[i];\n let stream = getComposedStream(streamInfo);\n\n if (!stream) {\n\n stream = Stream(context).create({\n manifestModel: manifestModel,\n dashManifestModel: dashManifestModel,\n mediaPlayerModel: mediaPlayerModel,\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n manifestUpdater: manifestUpdater,\n adapter: adapter,\n timelineConverter: timelineConverter,\n capabilities: capabilities,\n errHandler: errHandler,\n baseURLController: baseURLController,\n domStorage: domStorage,\n abrController: abrController,\n playbackController: playbackController,\n mediaController: mediaController,\n textController: textController,\n sourceBufferController: sourceBufferController,\n videoModel: videoModel,\n streamController: instance\n });\n streams.push(stream);\n stream.initialize(streamInfo, protectionController);\n\n } else {\n stream.updateData(streamInfo);\n }\n\n metricsModel.addManifestUpdateStreamInfo(manifestUpdateInfo, streamInfo.id, streamInfo.index, streamInfo.start, streamInfo.duration);\n }\n\n if (!activeStream) {\n //const initStream = streamsInfo[0].manifestInfo.isDynamic ? streams[streams.length -1] : streams[0];\n //TODO we need to figure out what the correct starting period is here and not just go to first or last in array.\n switchStream(null, streams[0], NaN);\n }\n\n eventBus.trigger(Events.STREAMS_COMPOSED);\n\n } catch (e) {\n errHandler.manifestError(e.message, 'nostreamscomposed', manifestModel.getValue());\n hasInitialisationError = true;\n reset();\n }\n }\n\n function onTimeSyncCompleted( /*e*/ ) {\n const manifest = manifestModel.getValue();\n //TODO check if we can move this to initialize??\n if (protectionController) {\n eventBus.trigger(Events.PROTECTION_CREATED, {\n controller: protectionController,\n manifest: manifest\n });\n protectionController.setMediaElement(videoModel.getElement());\n if (protectionData) {\n protectionController.setProtectionData(protectionData);\n }\n }\n\n composeStreams();\n }\n\n function onManifestUpdated(e) {\n if (!e.error) {\n //Since streams are not composed yet , need to manually look up useCalculatedLiveEdgeTime to detect if stream\n //is SegmentTimeline to avoid using time source\n let manifest = e.manifest;\n adapter.updatePeriods(manifest);\n let streamInfo = adapter.getStreamsInfo(manifest)[0];\n let mediaInfo = (\n adapter.getMediaInfoForType(streamInfo, Constants.VIDEO) ||\n adapter.getMediaInfoForType(streamInfo, Constants.AUDIO)\n );\n\n let voAdaptation,\n useCalculatedLiveEdgeTime;\n\n if (mediaInfo) {\n voAdaptation = adapter.getDataForMedia(mediaInfo);\n useCalculatedLiveEdgeTime = dashManifestModel.getRepresentationsForAdaptation(voAdaptation)[0].useCalculatedLiveEdgeTime;\n\n if (useCalculatedLiveEdgeTime) {\n log('SegmentTimeline detected using calculated Live Edge Time');\n mediaPlayerModel.setUseManifestDateHeaderTimeSource(false);\n }\n }\n\n let manifestUTCTimingSources = dashManifestModel.getUTCTimingSources(e.manifest);\n let allUTCTimingSources = (!dashManifestModel.getIsDynamic(manifest) || useCalculatedLiveEdgeTime) ? manifestUTCTimingSources : manifestUTCTimingSources.concat(mediaPlayerModel.getUTCTimingSources());\n const isHTTPS = urlUtils.isHTTPS(e.manifest.url);\n\n //If https is detected on manifest then lets apply that protocol to only the default time source(s). In the future we may find the need to apply this to more then just default so left code at this level instead of in MediaPlayer.\n allUTCTimingSources.forEach(function (item) {\n if (item.value.replace(/.*?:\\/\\//g, '') === MediaPlayerModel.DEFAULT_UTC_TIMING_SOURCE.value.replace(/.*?:\\/\\//g, '')) {\n item.value = item.value.replace(isHTTPS ? new RegExp(/^(http:)?\\/\\//i) : new RegExp(/^(https:)?\\/\\//i), isHTTPS ? 'https://' : 'http://');\n log('Matching default timing source protocol to manifest protocol: ', item.value);\n }\n });\n\n baseURLController.initialize(manifest);\n\n timeSyncController.setConfig({\n metricsModel: metricsModel,\n dashMetrics: dashMetrics\n });\n timeSyncController.initialize(allUTCTimingSources, mediaPlayerModel.getUseManifestDateHeaderTimeSource());\n } else {\n hasInitialisationError = true;\n reset();\n }\n }\n\n function isAudioTrackPresent() {\n if (audioTrackDetected === undefined) {\n audioTrackDetected = checkTrackPresence(Constants.AUDIO);\n }\n return audioTrackDetected;\n }\n\n function isVideoTrackPresent() {\n if (videoTrackDetected === undefined) {\n videoTrackDetected = checkTrackPresence(Constants.VIDEO);\n }\n return videoTrackDetected;\n }\n\n function checkTrackPresence(type) {\n let isDetected = false;\n if (activeStream) {\n activeStream.getProcessors().forEach(p => {\n if (p.getMediaInfo().type === type) {\n isDetected = true;\n }\n });\n }\n return isDetected;\n }\n\n function flushPlaylistMetrics(reason, time) {\n time = time || new Date();\n\n if (playListMetrics) {\n if (activeStream) {\n activeStream.getProcessors().forEach(p => {\n let ctrlr = p.getScheduleController();\n if (ctrlr) {\n ctrlr.finalisePlayList(time, reason);\n }\n });\n }\n metricsModel.addPlayList(playListMetrics);\n playListMetrics = null;\n }\n }\n\n function addPlaylistMetrics(startReason) {\n playListMetrics = new PlayList();\n playListMetrics.start = new Date();\n playListMetrics.mstart = playbackController.getTime() * 1000;\n playListMetrics.starttype = startReason;\n\n if (activeStream) {\n activeStream.getProcessors().forEach(p => {\n let ctrlr = p.getScheduleController();\n if (ctrlr) {\n ctrlr.setPlayList(playListMetrics);\n }\n });\n }\n }\n\n\n function onPlaybackError(e) {\n\n if (!e.error) return;\n\n let msg = '';\n\n switch (e.error.code) {\n case 1:\n msg = 'MEDIA_ERR_ABORTED';\n break;\n case 2:\n msg = 'MEDIA_ERR_NETWORK';\n break;\n case 3:\n msg = 'MEDIA_ERR_DECODE';\n break;\n case 4:\n msg = 'MEDIA_ERR_SRC_NOT_SUPPORTED';\n break;\n case 5:\n msg = 'MEDIA_ERR_ENCRYPTED';\n break;\n default:\n msg = 'UNKNOWN';\n break;\n }\n\n hasMediaError = true;\n\n if (e.error.message) {\n msg += ' (' + e.error.message + ')';\n }\n\n if (e.error.msExtendedCode) {\n msg += ' (0x' + (e.error.msExtendedCode >>> 0).toString(16).toUpperCase() + ')';\n }\n\n log('Video Element Error: ' + msg);\n if (e.error) {\n log(e.error);\n }\n errHandler.mediaSourceError(msg);\n reset();\n }\n\n function getActiveStreamInfo() {\n return activeStream ? activeStream.getStreamInfo() : null;\n }\n\n function getStreamById(id) {\n return streams.filter(function (item) {\n return item.getId() === id;\n })[0];\n }\n\n function checkSetConfigCall() {\n if (!manifestLoader || !manifestLoader.hasOwnProperty('load') || !timelineConverter || !timelineConverter.hasOwnProperty('initialize') ||\n !timelineConverter.hasOwnProperty('reset') || !timelineConverter.hasOwnProperty('getClientTimeOffset')) {\n throw new Error('setConfig function has to be called previously');\n }\n }\n\n function checkInitializeCall() {\n if (!manifestUpdater || !manifestUpdater.hasOwnProperty('setManifest')) {\n throw new Error('initialize function has to be called previously');\n }\n }\n\n function load(url) {\n checkSetConfigCall();\n manifestLoader.load(url);\n }\n\n function loadWithManifest(manifest) {\n checkInitializeCall();\n manifestUpdater.setManifest(manifest);\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.capabilities) {\n capabilities = config.capabilities;\n }\n if (config.manifestLoader) {\n manifestLoader = config.manifestLoader;\n }\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n if (config.mediaPlayerModel) {\n mediaPlayerModel = config.mediaPlayerModel;\n }\n if (config.protectionController) {\n protectionController = config.protectionController;\n }\n if (config.adapter) {\n adapter = config.adapter;\n }\n if (config.metricsModel) {\n metricsModel = config.metricsModel;\n }\n if (config.dashMetrics) {\n dashMetrics = config.dashMetrics;\n }\n if (config.errHandler) {\n errHandler = config.errHandler;\n }\n if (config.timelineConverter) {\n timelineConverter = config.timelineConverter;\n }\n if (config.videoModel) {\n videoModel = config.videoModel;\n }\n if (config.playbackController) {\n playbackController = config.playbackController;\n }\n if (config.domStorage) {\n domStorage = config.domStorage;\n }\n if (config.abrController) {\n abrController = config.abrController;\n }\n if (config.mediaController) {\n mediaController = config.mediaController;\n }\n if (config.textController) {\n textController = config.textController;\n }\n if (config.sourceBufferController) {\n sourceBufferController = config.sourceBufferController;\n }\n }\n\n function resetInitialSettings() {\n streams = [];\n protectionController = null;\n isStreamSwitchingInProgress = false;\n activeStream = null;\n hasMediaError = false;\n hasInitialisationError = false;\n videoTrackDetected = undefined;\n initialPlayback = true;\n isPaused = false;\n autoPlay = true;\n playListMetrics = null;\n }\n\n function reset() {\n checkSetConfigCall();\n\n timeSyncController.reset();\n\n flushPlaylistMetrics(\n hasMediaError || hasInitialisationError ?\n PlayListTrace.FAILURE_STOP_REASON :\n PlayListTrace.USER_REQUEST_STOP_REASON\n );\n\n for (let i = 0, ln = streams ? streams.length : 0; i < ln; i++) {\n let stream = streams[i];\n stream.reset(hasMediaError);\n }\n\n eventBus.off(Events.PLAYBACK_TIME_UPDATED, onPlaybackTimeUpdated, this);\n eventBus.off(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.off(Events.PLAYBACK_ERROR, onPlaybackError, this);\n eventBus.off(Events.PLAYBACK_STARTED, onPlaybackStarted, this);\n eventBus.off(Events.PLAYBACK_PAUSED, onPlaybackPaused, this);\n eventBus.off(Events.PLAYBACK_ENDED, onEnded, this);\n eventBus.off(Events.MANIFEST_UPDATED, onManifestUpdated, this);\n eventBus.off(Events.STREAM_BUFFERING_COMPLETED, onStreamBufferingCompleted, this);\n eventBus.off(MediaPlayerEvents.METRIC_ADDED, onMetricAdded, this);\n\n baseURLController.reset();\n manifestUpdater.reset();\n metricsModel.clearAllCurrentMetrics();\n manifestModel.setValue(null);\n manifestLoader.reset();\n timelineConverter.reset();\n initCache.reset();\n\n if (mediaSource) {\n mediaSourceController.detachMediaSource(videoModel);\n mediaSource = null;\n }\n videoModel = null;\n if (protectionController) {\n protectionController.setMediaElement(null);\n protectionController = null;\n protectionData = null;\n if (manifestModel.getValue()) {\n eventBus.trigger(Events.PROTECTION_DESTROYED, {\n data: manifestModel.getValue().url\n });\n }\n }\n\n if (endedTimeout) {\n clearTimeout(endedTimeout);\n endedTimeout = undefined;\n }\n\n eventBus.trigger(Events.STREAM_TEARDOWN_COMPLETE);\n resetInitialSettings();\n }\n\n function onMetricAdded(e) {\n if (e.metric === MetricsConstants.DVR_INFO) {\n //Match media type? How can DVR window be different for media types?\n //Should we normalize and union the two?\n if (e.mediaType === Constants.AUDIO) {\n mediaSourceController.setSeekable(mediaSource, e.value.range.start, e.value.range.end);\n }\n }\n }\n\n instance = {\n initialize: initialize,\n getActiveStreamInfo: getActiveStreamInfo,\n isVideoTrackPresent: isVideoTrackPresent,\n isAudioTrackPresent: isAudioTrackPresent,\n getStreamById: getStreamById,\n getTimeRelativeToStreamId: getTimeRelativeToStreamId,\n load: load,\n loadWithManifest: loadWithManifest,\n getActiveStreamProcessors: getActiveStreamProcessors,\n getActiveStreamCommonEarliestTime: getActiveStreamCommonEarliestTime,\n setConfig: setConfig,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nStreamController.__dashjs_factory_name = 'StreamController';\n\nexport default FactoryMaker.getSingletonFactory(StreamController);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport MetricsConstants from '../constants/MetricsConstants';\nimport Stream from '../Stream';\nimport ManifestUpdater from '../ManifestUpdater';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport MediaPlayerModel from '../models/MediaPlayerModel';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport {\n PlayList,\n PlayListTrace\n} from '../vo/metrics/PlayList';\nimport Debug from '../../core/Debug';\nimport InitCache from '../utils/InitCache';\nimport URLUtils from '../utils/URLUtils';\nimport MediaPlayerEvents from '../MediaPlayerEvents';\nimport TimeSyncController from './TimeSyncController';\nimport BaseURLController from './BaseURLController';\nimport MediaSourceController from './MediaSourceController';\n\nfunction StreamController() {\n\n const STREAM_END_THRESHOLD = 0.5;\n const STREAM_END_TIMEOUT_DELAY = 0.1;\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n capabilities,\n manifestUpdater,\n manifestLoader,\n manifestModel,\n dashManifestModel,\n adapter,\n metricsModel,\n dashMetrics,\n mediaSourceController,\n timeSyncController,\n baseURLController,\n domStorage,\n abrController,\n mediaController,\n textController,\n sourceBufferController,\n initCache,\n urlUtils,\n errHandler,\n timelineConverter,\n streams,\n activeStream,\n protectionController,\n protectionData,\n autoPlay,\n isStreamSwitchingInProgress,\n hasMediaError,\n hasInitialisationError,\n mediaSource,\n videoModel,\n playbackController,\n mediaPlayerModel,\n isPaused,\n initialPlayback,\n playListMetrics,\n videoTrackDetected,\n audioTrackDetected,\n endedTimeout;\n\n function setup() {\n timeSyncController = TimeSyncController(context).getInstance();\n baseURLController = BaseURLController(context).getInstance();\n mediaSourceController = MediaSourceController(context).getInstance();\n initCache = InitCache(context).getInstance();\n urlUtils = URLUtils(context).getInstance();\n\n resetInitialSettings();\n }\n\n function initialize(autoPl, protData) {\n checkSetConfigCall();\n\n autoPlay = autoPl;\n protectionData = protData;\n timelineConverter.initialize();\n\n manifestUpdater = ManifestUpdater(context).create();\n manifestUpdater.setConfig({\n manifestModel: manifestModel,\n dashManifestModel: dashManifestModel,\n mediaPlayerModel: mediaPlayerModel,\n manifestLoader: manifestLoader\n });\n manifestUpdater.initialize();\n\n baseURLController.setConfig({\n dashManifestModel: dashManifestModel\n });\n\n eventBus.on(Events.TIME_SYNCHRONIZATION_COMPLETED, onTimeSyncCompleted, this);\n eventBus.on(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.on(Events.PLAYBACK_TIME_UPDATED, onPlaybackTimeUpdated, this);\n eventBus.on(Events.PLAYBACK_ENDED, onEnded, this);\n eventBus.on(Events.PLAYBACK_ERROR, onPlaybackError, this);\n eventBus.on(Events.PLAYBACK_STARTED, onPlaybackStarted, this);\n eventBus.on(Events.PLAYBACK_PAUSED, onPlaybackPaused, this);\n eventBus.on(Events.MANIFEST_UPDATED, onManifestUpdated, this);\n eventBus.on(Events.STREAM_BUFFERING_COMPLETED, onStreamBufferingCompleted, this);\n eventBus.on(MediaPlayerEvents.METRIC_ADDED, onMetricAdded, this);\n }\n\n /*\n * Called when current playback position is changed.\n * Used to determine the time current stream is finished and we should switch to the next stream.\n */\n function onPlaybackTimeUpdated(e) {\n\n if (isVideoTrackPresent()) {\n const playbackQuality = videoModel.getPlaybackQuality();\n if (playbackQuality) {\n metricsModel.addDroppedFrames(Constants.VIDEO, playbackQuality);\n }\n }\n\n // Sometimes after seeking timeUpdateHandler is called before seekingHandler and a new stream starts\n // from beginning instead of from a chosen position. So we do nothing if the player is in the seeking state\n if (playbackController.isSeeking()) return;\n\n if (e.timeToEnd <= STREAM_END_THRESHOLD) {\n // In some cases the ended event is not triggered at the end of the stream, do it artificially here.\n // This should only be a fallback, put an extra STREAM_END_TIMEOUT_DELAY to give the real ended event time to trigger.\n log('[StreamController][onPlaybackTimeUpdated] timeToEnd = ' + e.timeToEnd + ' PLAYBACK_ENDED need to be triggered');\n if (endedTimeout) {\n clearTimeout(endedTimeout);\n endedTimeout = undefined;\n }\n endedTimeout = setTimeout(function () {\n endedTimeout = undefined;\n eventBus.trigger(Events.PLAYBACK_ENDED);\n }, 1000 * (e.timeToEnd + STREAM_END_TIMEOUT_DELAY));\n }\n }\n\n function onPlaybackSeeking(e) {\n const seekingStream = getStreamForTime(e.seekTime);\n\n if (seekingStream && seekingStream !== activeStream) {\n flushPlaylistMetrics(PlayListTrace.END_OF_PERIOD_STOP_REASON);\n switchStream(activeStream, seekingStream, e.seekTime);\n } else {\n flushPlaylistMetrics(PlayListTrace.USER_REQUEST_STOP_REASON);\n }\n\n addPlaylistMetrics(PlayList.SEEK_START_REASON);\n }\n\n function onPlaybackStarted( /*e*/ ) {\n if (initialPlayback) {\n initialPlayback = false;\n addPlaylistMetrics(PlayList.INITIAL_PLAYOUT_START_REASON);\n } else {\n if (isPaused) {\n isPaused = false;\n addPlaylistMetrics(PlayList.RESUME_FROM_PAUSE_START_REASON);\n }\n }\n }\n\n function onPlaybackPaused(e) {\n if (!e.ended) {\n isPaused = true;\n flushPlaylistMetrics(PlayListTrace.USER_REQUEST_STOP_REASON);\n }\n }\n\n function onStreamBufferingCompleted() {\n const isLast = getActiveStreamInfo().isLast;\n if (mediaSource && isLast) {\n mediaSourceController.signalEndOfStream(mediaSource);\n }\n }\n\n function getStreamForTime(time) {\n let duration = 0;\n let stream = null;\n\n const ln = streams.length;\n\n if (ln > 0) {\n duration += streams[0].getStartTime();\n }\n\n for (let i = 0; i < ln; i++) {\n stream = streams[i];\n duration = parseFloat((duration + stream.getDuration()).toFixed(5));\n\n if (time < duration) {\n return stream;\n }\n }\n\n return null;\n }\n\n /**\n * Returns a playhead time, in seconds, converted to be relative\n * to the start of an identified stream/period or null if no such stream\n * @param {number} time\n * @param {string} id\n * @returns {number|null}\n */\n function getTimeRelativeToStreamId(time, id) {\n let stream = null;\n let baseStart = 0;\n let streamStart = 0;\n let streamDur = null;\n\n const ln = streams.length;\n\n for (let i = 0; i < ln; i++) {\n stream = streams[i];\n streamStart = stream.getStartTime();\n streamDur = stream.getDuration();\n\n // use start time, if not undefined or NaN or similar\n if (Number.isFinite(streamStart)) {\n baseStart = streamStart;\n }\n\n if (stream.getId() === id) {\n return time - baseStart;\n } else {\n // use duration if not undefined or NaN or similar\n if (Number.isFinite(streamDur)) {\n baseStart += streamDur;\n }\n }\n }\n\n return null;\n }\n\n function getActiveStreamProcessors() {\n return activeStream ? activeStream.getProcessors() : [];\n }\n\n function getActiveStreamCommonEarliestTime() {\n let commonEarliestTime = [];\n if (activeStream) {\n activeStream.getProcessors().forEach(p => {\n commonEarliestTime.push(p.getIndexHandler().getEarliestTime());\n });\n }\n return Math.min.apply(Math, commonEarliestTime);\n }\n\n function onEnded() {\n if (endedTimeout) {\n clearTimeout(endedTimeout);\n endedTimeout = undefined;\n }\n\n const nextStream = getNextStream();\n if (nextStream) {\n switchStream(activeStream, nextStream, NaN);\n }\n flushPlaylistMetrics(nextStream ? PlayListTrace.END_OF_PERIOD_STOP_REASON : PlayListTrace.END_OF_CONTENT_STOP_REASON);\n }\n\n function getNextStream() {\n if (activeStream) {\n const start = activeStream.getStreamInfo().start;\n const duration = activeStream.getStreamInfo().duration;\n\n return streams.filter(function (stream) {\n return (stream.getStreamInfo().start === parseFloat((start + duration).toFixed(5)));\n })[0];\n }\n }\n\n function switchStream(oldStream, newStream, seekTime) {\n\n if (isStreamSwitchingInProgress || !newStream || oldStream === newStream) return;\n isStreamSwitchingInProgress = true;\n\n eventBus.trigger(Events.PERIOD_SWITCH_STARTED, {\n fromStreamInfo: oldStream ? oldStream.getStreamInfo() : null,\n toStreamInfo: newStream.getStreamInfo()\n });\n\n if (oldStream) {\n oldStream.stopEventController();\n oldStream.deactivate();\n }\n activeStream = newStream;\n playbackController.initialize(activeStream.getStreamInfo());\n\n //TODO detect if we should close and repose or jump to activateStream.\n openMediaSource(seekTime, oldStream);\n }\n\n function openMediaSource(seekTime, oldStream) {\n\n let sourceUrl;\n\n function onMediaSourceOpen() {\n log('MediaSource is open!');\n window.URL.revokeObjectURL(sourceUrl);\n mediaSource.removeEventListener('sourceopen', onMediaSourceOpen);\n mediaSource.removeEventListener('webkitsourceopen', onMediaSourceOpen);\n setMediaDuration();\n activateStream(seekTime);\n\n if (!oldStream) {\n eventBus.trigger(Events.SOURCE_INITIALIZED);\n }\n }\n\n if (!mediaSource) {\n mediaSource = mediaSourceController.createMediaSource();\n } else {\n mediaSourceController.detachMediaSource(videoModel);\n }\n\n mediaSource.addEventListener('sourceopen', onMediaSourceOpen, false);\n mediaSource.addEventListener('webkitsourceopen', onMediaSourceOpen, false);\n sourceUrl = mediaSourceController.attachMediaSource(mediaSource, videoModel);\n log('MediaSource attached to element. Waiting on open...');\n }\n\n function activateStream(seekTime) {\n\n activeStream.activate(mediaSource);\n\n if (!initialPlayback) {\n if (!isNaN(seekTime)) {\n playbackController.seek(seekTime); //we only need to call seek here, IndexHandlerTime was set from seeking event\n } else {\n let startTime = playbackController.getStreamStartTime(true);\n activeStream.getProcessors().forEach(p => {\n adapter.setIndexHandlerTime(p, startTime);\n });\n playbackController.seek(startTime); //seek to period start time\n }\n } else {\n videoTrackDetected = checkTrackPresence(Constants.VIDEO);\n }\n\n activeStream.startEventController();\n if (autoPlay || !initialPlayback) {\n playbackController.play();\n }\n\n isStreamSwitchingInProgress = false;\n eventBus.trigger(Events.PERIOD_SWITCH_COMPLETED, {\n toStreamInfo: activeStream.getStreamInfo()\n });\n }\n\n function setMediaDuration() {\n const manifestDuration = activeStream.getStreamInfo().manifestInfo.duration;\n const mediaDuration = mediaSourceController.setDuration(mediaSource, manifestDuration);\n log('Duration successfully set to: ' + mediaDuration);\n }\n\n function getComposedStream(streamInfo) {\n for (let i = 0, ln = streams.length; i < ln; i++) {\n if (streams[i].getId() === streamInfo.id) {\n return streams[i];\n }\n }\n return null;\n }\n\n function composeStreams() {\n\n try {\n const streamsInfo = adapter.getStreamsInfo();\n if (streamsInfo.length === 0) {\n throw new Error('There are no streams');\n }\n\n const manifestUpdateInfo = dashMetrics.getCurrentManifestUpdate(metricsModel.getMetricsFor(Constants.STREAM));\n metricsModel.updateManifestUpdateInfo(manifestUpdateInfo, {\n currentTime: playbackController.getTime(),\n buffered: videoModel.getBufferRange(),\n presentationStartTime: streamsInfo[0].start,\n clientTimeOffset: timelineConverter.getClientTimeOffset()\n });\n\n for (let i = 0, ln = streamsInfo.length; i < ln; i++) {\n\n // If the Stream object does not exist we probably loaded the manifest the first time or it was\n // introduced in the updated manifest, so we need to create a new Stream and perform all the initialization operations\n const streamInfo = streamsInfo[i];\n let stream = getComposedStream(streamInfo);\n\n if (!stream) {\n\n stream = Stream(context).create({\n manifestModel: manifestModel,\n dashManifestModel: dashManifestModel,\n mediaPlayerModel: mediaPlayerModel,\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n manifestUpdater: manifestUpdater,\n adapter: adapter,\n timelineConverter: timelineConverter,\n capabilities: capabilities,\n errHandler: errHandler,\n baseURLController: baseURLController,\n domStorage: domStorage,\n abrController: abrController,\n playbackController: playbackController,\n mediaController: mediaController,\n textController: textController,\n sourceBufferController: sourceBufferController,\n videoModel: videoModel,\n streamController: instance\n });\n streams.push(stream);\n stream.initialize(streamInfo, protectionController);\n\n } else {\n stream.updateData(streamInfo);\n }\n\n metricsModel.addManifestUpdateStreamInfo(manifestUpdateInfo, streamInfo.id, streamInfo.index, streamInfo.start, streamInfo.duration);\n }\n\n if (!activeStream) {\n //const initStream = streamsInfo[0].manifestInfo.isDynamic ? streams[streams.length -1] : streams[0];\n //TODO we need to figure out what the correct starting period is here and not just go to first or last in array.\n switchStream(null, streams[0], NaN);\n }\n\n eventBus.trigger(Events.STREAMS_COMPOSED);\n\n } catch (e) {\n errHandler.manifestError(e.message, 'nostreamscomposed', manifestModel.getValue());\n hasInitialisationError = true;\n reset();\n }\n }\n\n function onTimeSyncCompleted( /*e*/ ) {\n const manifest = manifestModel.getValue();\n //TODO check if we can move this to initialize??\n if (protectionController) {\n eventBus.trigger(Events.PROTECTION_CREATED, {\n controller: protectionController,\n manifest: manifest\n });\n protectionController.setMediaElement(videoModel.getElement());\n if (protectionData) {\n protectionController.setProtectionData(protectionData);\n }\n }\n\n composeStreams();\n }\n\n function onManifestUpdated(e) {\n if (!e.error) {\n //Since streams are not composed yet , need to manually look up useCalculatedLiveEdgeTime to detect if stream\n //is SegmentTimeline to avoid using time source\n let manifest = e.manifest;\n adapter.updatePeriods(manifest);\n let streamInfo = adapter.getStreamsInfo(manifest)[0];\n let mediaInfo = (\n adapter.getMediaInfoForType(streamInfo, Constants.VIDEO) ||\n adapter.getMediaInfoForType(streamInfo, Constants.AUDIO)\n );\n\n let voAdaptation,\n useCalculatedLiveEdgeTime;\n\n if (mediaInfo) {\n voAdaptation = adapter.getDataForMedia(mediaInfo);\n useCalculatedLiveEdgeTime = dashManifestModel.getRepresentationsForAdaptation(voAdaptation)[0].useCalculatedLiveEdgeTime;\n\n if (useCalculatedLiveEdgeTime) {\n log('SegmentTimeline detected using calculated Live Edge Time');\n mediaPlayerModel.setUseManifestDateHeaderTimeSource(false);\n }\n }\n\n let manifestUTCTimingSources = dashManifestModel.getUTCTimingSources(e.manifest);\n let allUTCTimingSources = (!dashManifestModel.getIsDynamic(manifest) || useCalculatedLiveEdgeTime) ? manifestUTCTimingSources : manifestUTCTimingSources.concat(mediaPlayerModel.getUTCTimingSources());\n const isHTTPS = urlUtils.isHTTPS(e.manifest.url);\n\n //If https is detected on manifest then lets apply that protocol to only the default time source(s). In the future we may find the need to apply this to more then just default so left code at this level instead of in MediaPlayer.\n allUTCTimingSources.forEach(function (item) {\n if (item.value.replace(/.*?:\\/\\//g, '') === MediaPlayerModel.DEFAULT_UTC_TIMING_SOURCE.value.replace(/.*?:\\/\\//g, '')) {\n item.value = item.value.replace(isHTTPS ? new RegExp(/^(http:)?\\/\\//i) : new RegExp(/^(https:)?\\/\\//i), isHTTPS ? 'https://' : 'http://');\n log('Matching default timing source protocol to manifest protocol: ', item.value);\n }\n });\n\n baseURLController.initialize(manifest);\n\n timeSyncController.setConfig({\n metricsModel: metricsModel,\n dashMetrics: dashMetrics\n });\n timeSyncController.initialize(allUTCTimingSources, mediaPlayerModel.getUseManifestDateHeaderTimeSource());\n } else {\n hasInitialisationError = true;\n reset();\n }\n }\n\n function isAudioTrackPresent() {\n if (audioTrackDetected === undefined) {\n audioTrackDetected = checkTrackPresence(Constants.AUDIO);\n }\n return audioTrackDetected;\n }\n\n function isVideoTrackPresent() {\n if (videoTrackDetected === undefined) {\n videoTrackDetected = checkTrackPresence(Constants.VIDEO);\n }\n return videoTrackDetected;\n }\n\n function checkTrackPresence(type) {\n let isDetected = false;\n if (activeStream) {\n activeStream.getProcessors().forEach(p => {\n if (p.getMediaInfo().type === type) {\n isDetected = true;\n }\n });\n }\n return isDetected;\n }\n\n function flushPlaylistMetrics(reason, time) {\n time = time || new Date();\n\n if (playListMetrics) {\n if (activeStream) {\n activeStream.getProcessors().forEach(p => {\n let ctrlr = p.getScheduleController();\n if (ctrlr) {\n ctrlr.finalisePlayList(time, reason);\n }\n });\n }\n metricsModel.addPlayList(playListMetrics);\n playListMetrics = null;\n }\n }\n\n function addPlaylistMetrics(startReason) {\n playListMetrics = new PlayList();\n playListMetrics.start = new Date();\n playListMetrics.mstart = playbackController.getTime() * 1000;\n playListMetrics.starttype = startReason;\n\n if (activeStream) {\n activeStream.getProcessors().forEach(p => {\n let ctrlr = p.getScheduleController();\n if (ctrlr) {\n ctrlr.setPlayList(playListMetrics);\n }\n });\n }\n }\n\n\n function onPlaybackError(e) {\n\n if (!e.error) return;\n\n let msg = '';\n\n switch (e.error.code) {\n case 1:\n msg = 'MEDIA_ERR_ABORTED';\n break;\n case 2:\n msg = 'MEDIA_ERR_NETWORK';\n break;\n case 3:\n msg = 'MEDIA_ERR_DECODE';\n break;\n case 4:\n msg = 'MEDIA_ERR_SRC_NOT_SUPPORTED';\n break;\n case 5:\n msg = 'MEDIA_ERR_ENCRYPTED';\n break;\n default:\n msg = 'UNKNOWN';\n break;\n }\n\n hasMediaError = true;\n\n if (e.error.message) {\n msg += ' (' + e.error.message + ')';\n }\n\n if (e.error.msExtendedCode) {\n msg += ' (0x' + (e.error.msExtendedCode >>> 0).toString(16).toUpperCase() + ')';\n }\n\n log('Video Element Error: ' + msg);\n if (e.error) {\n log(e.error);\n }\n errHandler.mediaSourceError(msg);\n reset();\n }\n\n function getActiveStreamInfo() {\n return activeStream ? activeStream.getStreamInfo() : null;\n }\n\n function getStreamById(id) {\n return streams.filter(function (item) {\n return item.getId() === id;\n })[0];\n }\n\n function checkSetConfigCall() {\n if (!manifestLoader || !manifestLoader.hasOwnProperty('load') || !timelineConverter || !timelineConverter.hasOwnProperty('initialize') ||\n !timelineConverter.hasOwnProperty('reset') || !timelineConverter.hasOwnProperty('getClientTimeOffset')) {\n throw new Error('setConfig function has to be called previously');\n }\n }\n\n function checkInitializeCall() {\n if (!manifestUpdater || !manifestUpdater.hasOwnProperty('setManifest')) {\n throw new Error('initialize function has to be called previously');\n }\n }\n\n function load(url) {\n checkSetConfigCall();\n manifestLoader.load(url);\n }\n\n function loadWithManifest(manifest) {\n checkInitializeCall();\n manifestUpdater.setManifest(manifest);\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.capabilities) {\n capabilities = config.capabilities;\n }\n if (config.manifestLoader) {\n manifestLoader = config.manifestLoader;\n }\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n if (config.mediaPlayerModel) {\n mediaPlayerModel = config.mediaPlayerModel;\n }\n if (config.protectionController) {\n protectionController = config.protectionController;\n }\n if (config.adapter) {\n adapter = config.adapter;\n }\n if (config.metricsModel) {\n metricsModel = config.metricsModel;\n }\n if (config.dashMetrics) {\n dashMetrics = config.dashMetrics;\n }\n if (config.errHandler) {\n errHandler = config.errHandler;\n }\n if (config.timelineConverter) {\n timelineConverter = config.timelineConverter;\n }\n if (config.videoModel) {\n videoModel = config.videoModel;\n }\n if (config.playbackController) {\n playbackController = config.playbackController;\n }\n if (config.domStorage) {\n domStorage = config.domStorage;\n }\n if (config.abrController) {\n abrController = config.abrController;\n }\n if (config.mediaController) {\n mediaController = config.mediaController;\n }\n if (config.textController) {\n textController = config.textController;\n }\n if (config.sourceBufferController) {\n sourceBufferController = config.sourceBufferController;\n }\n }\n\n function resetInitialSettings() {\n streams = [];\n protectionController = null;\n isStreamSwitchingInProgress = false;\n activeStream = null;\n hasMediaError = false;\n hasInitialisationError = false;\n videoTrackDetected = undefined;\n initialPlayback = true;\n isPaused = false;\n autoPlay = true;\n playListMetrics = null;\n }\n\n function reset() {\n checkSetConfigCall();\n\n timeSyncController.reset();\n\n flushPlaylistMetrics(\n hasMediaError || hasInitialisationError ?\n PlayListTrace.FAILURE_STOP_REASON :\n PlayListTrace.USER_REQUEST_STOP_REASON\n );\n\n for (let i = 0, ln = streams ? streams.length : 0; i < ln; i++) {\n let stream = streams[i];\n stream.reset(hasMediaError);\n }\n\n eventBus.off(Events.PLAYBACK_TIME_UPDATED, onPlaybackTimeUpdated, this);\n eventBus.off(Events.PLAYBACK_SEEKING, onPlaybackSeeking, this);\n eventBus.off(Events.PLAYBACK_ERROR, onPlaybackError, this);\n eventBus.off(Events.PLAYBACK_STARTED, onPlaybackStarted, this);\n eventBus.off(Events.PLAYBACK_PAUSED, onPlaybackPaused, this);\n eventBus.off(Events.PLAYBACK_ENDED, onEnded, this);\n eventBus.off(Events.MANIFEST_UPDATED, onManifestUpdated, this);\n eventBus.off(Events.STREAM_BUFFERING_COMPLETED, onStreamBufferingCompleted, this);\n eventBus.off(MediaPlayerEvents.METRIC_ADDED, onMetricAdded, this);\n\n baseURLController.reset();\n manifestUpdater.reset();\n metricsModel.clearAllCurrentMetrics();\n manifestModel.setValue(null);\n manifestLoader.reset();\n timelineConverter.reset();\n initCache.reset();\n\n if (mediaSource) {\n mediaSourceController.detachMediaSource(videoModel);\n mediaSource = null;\n }\n videoModel = null;\n if (protectionController) {\n protectionController.setMediaElement(null);\n protectionController = null;\n protectionData = null;\n if (manifestModel.getValue()) {\n eventBus.trigger(Events.PROTECTION_DESTROYED, {\n data: manifestModel.getValue().url\n });\n }\n }\n\n if (endedTimeout) {\n clearTimeout(endedTimeout);\n endedTimeout = undefined;\n }\n\n eventBus.trigger(Events.STREAM_TEARDOWN_COMPLETE);\n resetInitialSettings();\n }\n\n function onMetricAdded(e) {\n if (e.metric === MetricsConstants.DVR_INFO) {\n //Match media type? How can DVR window be different for media types?\n //Should we normalize and union the two?\n if (e.mediaType === Constants.AUDIO) {\n mediaSourceController.setSeekable(mediaSource, e.value.range.start, e.value.range.end);\n }\n }\n }\n\n instance = {\n initialize: initialize,\n getActiveStreamInfo: getActiveStreamInfo,\n isVideoTrackPresent: isVideoTrackPresent,\n isAudioTrackPresent: isAudioTrackPresent,\n getStreamById: getStreamById,\n getTimeRelativeToStreamId: getTimeRelativeToStreamId,\n load: load,\n loadWithManifest: loadWithManifest,\n getActiveStreamProcessors: getActiveStreamProcessors,\n getActiveStreamCommonEarliestTime: getActiveStreamCommonEarliestTime,\n setConfig: setConfig,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nStreamController.__dashjs_factory_name = 'StreamController';\n\nexport default FactoryMaker.getSingletonFactory(StreamController);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport DashJSError from './../vo/DashJSError';\nimport {HTTPRequest} from './../vo/metrics/HTTPRequest';\nimport EventBus from './../../core/EventBus';\nimport Events from './../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\n\nconst TIME_SYNC_FAILED_ERROR_CODE = 1;\nconst HTTP_TIMEOUT_MS = 5000;\n\nfunction TimeSyncController() {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n offsetToDeviceTimeMs,\n isSynchronizing,\n isInitialised,\n useManifestDateHeaderTimeSource,\n handlers,\n metricsModel,\n dashMetrics;\n\n function initialize(timingSources, useManifestDateHeader) {\n useManifestDateHeaderTimeSource = useManifestDateHeader;\n offsetToDeviceTimeMs = 0;\n isSynchronizing = false;\n isInitialised = false;\n\n // a list of known schemeIdUris and a method to call with @value\n handlers = {\n 'urn:mpeg:dash:utc:http-head:2014': httpHeadHandler,\n 'urn:mpeg:dash:utc:http-xsdate:2014': httpHandler.bind(null, xsdatetimeDecoder),\n 'urn:mpeg:dash:utc:http-iso:2014': httpHandler.bind(null, iso8601Decoder),\n 'urn:mpeg:dash:utc:direct:2014': directHandler,\n\n // some specs referencing early ISO23009-1 drafts incorrectly use\n // 2012 in the URI, rather than 2014. support these for now.\n 'urn:mpeg:dash:utc:http-head:2012': httpHeadHandler,\n 'urn:mpeg:dash:utc:http-xsdate:2012': httpHandler.bind(null, xsdatetimeDecoder),\n 'urn:mpeg:dash:utc:http-iso:2012': httpHandler.bind(null, iso8601Decoder),\n 'urn:mpeg:dash:utc:direct:2012': directHandler,\n\n // it isn't clear how the data returned would be formatted, and\n // no public examples available so http-ntp not supported for now.\n // presumably you would do an arraybuffer type xhr and decode the\n // binary data returned but I would want to see a sample first.\n 'urn:mpeg:dash:utc:http-ntp:2014': notSupportedHandler,\n\n // not clear how this would be supported in javascript (in browser)\n 'urn:mpeg:dash:utc:ntp:2014': notSupportedHandler,\n 'urn:mpeg:dash:utc:sntp:2014': notSupportedHandler\n };\n\n if (!getIsSynchronizing()) {\n attemptSync(timingSources);\n setIsInitialised(true);\n }\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.metricsModel) {\n metricsModel = config.metricsModel;\n }\n\n if (config.dashMetrics) {\n dashMetrics = config.dashMetrics;\n }\n }\n\n function getOffsetToDeviceTimeMs() {\n return getOffsetMs();\n }\n\n function setIsSynchronizing(value) {\n isSynchronizing = value;\n }\n\n function getIsSynchronizing() {\n return isSynchronizing;\n }\n\n function setIsInitialised(value) {\n isInitialised = value;\n }\n\n function setOffsetMs(value) {\n offsetToDeviceTimeMs = value;\n }\n\n function getOffsetMs() {\n return offsetToDeviceTimeMs;\n }\n\n // takes xsdatetime and returns milliseconds since UNIX epoch\n // may not be necessary as xsdatetime is very similar to ISO 8601\n // which is natively understood by javascript Date parser\n function alternateXsdatetimeDecoder(xsdatetimeStr) {\n // taken from DashParser - should probably refactor both uses\n const SECONDS_IN_MIN = 60;\n const MINUTES_IN_HOUR = 60;\n const MILLISECONDS_IN_SECONDS = 1000;\n let datetimeRegex = /^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2})(?::([0-9]*)(\\.[0-9]*)?)?(?:([+\\-])([0-9]{2})([0-9]{2}))?/;\n\n let utcDate,\n timezoneOffset;\n\n let match = datetimeRegex.exec(xsdatetimeStr);\n\n // If the string does not contain a timezone offset different browsers can interpret it either\n // as UTC or as a local time so we have to parse the string manually to normalize the given date value for\n // all browsers\n utcDate = Date.UTC(\n parseInt(match[1], 10),\n parseInt(match[2], 10) - 1, // months start from zero\n parseInt(match[3], 10),\n parseInt(match[4], 10),\n parseInt(match[5], 10),\n (match[6] && (parseInt(match[6], 10) || 0)),\n (match[7] && parseFloat(match[7]) * MILLISECONDS_IN_SECONDS) || 0\n );\n // If the date has timezone offset take it into account as well\n if (match[9] && match[10]) {\n timezoneOffset = parseInt(match[9], 10) * MINUTES_IN_HOUR + parseInt(match[10], 10);\n utcDate += (match[8] === '+' ? -1 : +1) * timezoneOffset * SECONDS_IN_MIN * MILLISECONDS_IN_SECONDS;\n }\n\n return new Date(utcDate).getTime();\n }\n\n // try to use the built in parser, since xsdate is a constrained ISO8601\n // which is supported natively by Date.parse. if that fails, try a\n // regex-based version used elsewhere in this application.\n function xsdatetimeDecoder(xsdatetimeStr) {\n let parsedDate = Date.parse(xsdatetimeStr);\n\n if (isNaN(parsedDate)) {\n parsedDate = alternateXsdatetimeDecoder(xsdatetimeStr);\n }\n\n return parsedDate;\n }\n\n // takes ISO 8601 timestamp and returns milliseconds since UNIX epoch\n function iso8601Decoder(isoStr) {\n return Date.parse(isoStr);\n }\n\n // takes RFC 1123 timestamp (which is same as ISO8601) and returns\n // milliseconds since UNIX epoch\n function rfc1123Decoder(dateStr) {\n return Date.parse(dateStr);\n }\n\n function notSupportedHandler(url, onSuccessCB, onFailureCB) {\n onFailureCB();\n }\n\n function directHandler(xsdatetimeStr, onSuccessCB, onFailureCB) {\n let time = xsdatetimeDecoder(xsdatetimeStr);\n\n if (!isNaN(time)) {\n onSuccessCB(time);\n return;\n }\n\n onFailureCB();\n }\n\n function httpHandler(decoder, url, onSuccessCB, onFailureCB, isHeadRequest) {\n let oncomplete,\n onload;\n let complete = false;\n let req = new XMLHttpRequest();\n\n let verb = isHeadRequest ? HTTPRequest.HEAD : HTTPRequest.GET;\n let urls = url.match(/\\S+/g);\n\n // according to ISO 23009-1, url could be a white-space\n // separated list of URLs. just handle one at a time.\n url = urls.shift();\n\n oncomplete = function () {\n if (complete) {\n return;\n }\n\n // we only want to pass through here once per xhr,\n // regardless of whether the load was successful.\n complete = true;\n\n // if there are more urls to try, call self.\n if (urls.length) {\n httpHandler(decoder, urls.join(' '), onSuccessCB, onFailureCB, isHeadRequest);\n } else {\n onFailureCB();\n }\n };\n\n onload = function () {\n let time,\n result;\n\n if (req.status === 200) {\n time = isHeadRequest ?\n req.getResponseHeader('Date') :\n req.response;\n\n result = decoder(time);\n\n // decoder returns NaN if non-standard input\n if (!isNaN(result)) {\n onSuccessCB(result);\n complete = true;\n }\n }\n };\n\n req.open(verb, url);\n req.timeout = HTTP_TIMEOUT_MS || 0;\n req.onload = onload;\n req.onloadend = oncomplete;\n req.send();\n }\n\n function httpHeadHandler(url, onSuccessCB, onFailureCB) {\n httpHandler(rfc1123Decoder, url, onSuccessCB, onFailureCB, true);\n }\n\n function checkForDateHeader() {\n let metrics = metricsModel.getReadOnlyMetricsFor(Constants.STREAM);\n let dateHeaderValue = dashMetrics.getLatestMPDRequestHeaderValueByID(metrics, 'Date');\n let dateHeaderTime = dateHeaderValue !== null ? new Date(dateHeaderValue).getTime() : Number.NaN;\n\n if (!isNaN(dateHeaderTime)) {\n setOffsetMs(dateHeaderTime - new Date().getTime());\n completeTimeSyncSequence(false, dateHeaderTime / 1000, offsetToDeviceTimeMs);\n }else {\n completeTimeSyncSequence(true);\n }\n }\n\n function completeTimeSyncSequence(failed, time, offset) {\n setIsSynchronizing(false);\n eventBus.trigger(Events.TIME_SYNCHRONIZATION_COMPLETED, { time: time, offset: offset, error: failed ? new DashJSError(TIME_SYNC_FAILED_ERROR_CODE) : null });\n }\n\n function attemptSync(sources, sourceIndex) {\n\n // if called with no sourceIndex, use zero (highest priority)\n let index = sourceIndex || 0;\n\n // the sources should be ordered in priority from the manifest.\n // try each in turn, from the top, until either something\n // sensible happens, or we run out of sources to try.\n let source = sources[index];\n\n // callback to emit event to listeners\n const onComplete = function (time, offset) {\n let failed = !time || !offset;\n if (failed && useManifestDateHeaderTimeSource) {\n //Before falling back to binary search , check if date header exists on MPD. if so, use for a time source.\n checkForDateHeader();\n } else {\n completeTimeSyncSequence(failed, time, offset);\n }\n };\n\n setIsSynchronizing(true);\n\n if (source) {\n // check if there is a handler for this @schemeIdUri\n if (handlers.hasOwnProperty(source.schemeIdUri)) {\n // if so, call it with its @value\n handlers[source.schemeIdUri](\n source.value,\n function (serverTime) {\n // the timing source returned something useful\n let deviceTime = new Date().getTime();\n let offset = serverTime - deviceTime;\n\n setOffsetMs(offset);\n\n log('Local time: ' + new Date(deviceTime));\n log('Server time: ' + new Date(serverTime));\n log('Difference (ms): ' + offset);\n\n onComplete(serverTime, offset);\n },\n function () {\n // the timing source was probably uncontactable\n // or returned something we can't use - try again\n // with the remaining sources\n attemptSync(sources, index + 1);\n }\n );\n } else {\n // an unknown schemeIdUri must have been found\n // try again with the remaining sources\n attemptSync(sources, index + 1);\n }\n } else {\n // no valid time source could be found, just use device time\n setOffsetMs(0);\n onComplete();\n }\n }\n\n function reset() {\n setIsInitialised(false);\n setIsSynchronizing(false);\n }\n\n instance = {\n initialize: initialize,\n getOffsetToDeviceTimeMs: getOffsetToDeviceTimeMs,\n setConfig: setConfig,\n reset: reset\n };\n\n return instance;\n}\n\nTimeSyncController.__dashjs_factory_name = 'TimeSyncController';\nlet factory = FactoryMaker.getSingletonFactory(TimeSyncController);\nfactory.TIME_SYNC_FAILED_ERROR_CODE = TIME_SYNC_FAILED_ERROR_CODE;\nfactory.HTTP_TIMEOUT_MS = HTTP_TIMEOUT_MS;\nFactoryMaker.updateSingletonFactory(TimeSyncController.__dashjs_factory_name, factory);\nexport default factory;\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport XlinkLoader from '../XlinkLoader';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport X2JS from '../../../externals/xml2json';\nimport URLUtils from '../utils/URLUtils';\n\nconst RESOLVE_TYPE_ONLOAD = 'onLoad';\nconst RESOLVE_TYPE_ONACTUATE = 'onActuate';\nconst ELEMENT_TYPE_PERIOD = 'Period';\nconst ELEMENT_TYPE_ADAPTATIONSET = 'AdaptationSet';\nconst ELEMENT_TYPE_EVENTSTREAM = 'EventStream';\nconst RESOLVE_TO_ZERO = 'urn:mpeg:dash:resolve-to-zero:2013';\n\nfunction XlinkController(config) {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n const urlUtils = URLUtils(context).getInstance();\n\n let instance,\n matchers,\n iron,\n manifest,\n converter,\n xlinkLoader;\n\n function setup() {\n eventBus.on(Events.XLINK_ELEMENT_LOADED, onXlinkElementLoaded, instance);\n\n xlinkLoader = XlinkLoader(context).create({\n errHandler: config.errHandler,\n metricsModel: config.metricsModel,\n mediaPlayerModel: config.mediaPlayerModel,\n requestModifier: config.requestModifier\n });\n }\n\n function setMatchers(value) {\n if (value) {\n matchers = value;\n }\n }\n\n function setIron(value) {\n if (value) {\n iron = value;\n }\n }\n\n /**\n *

Triggers the resolution of the xlink.onLoad attributes in the manifest file

\n * @param {Object} mpd - the manifest\n */\n function resolveManifestOnLoad(mpd) {\n let elements;\n // First resolve all periods, so unnecessary requests inside onLoad Periods with Default content are avoided\n converter = new X2JS({\n escapeMode: false,\n attributePrefix: '',\n arrayAccessForm: 'property',\n emptyNodeForm: 'object',\n stripWhitespaces: false,\n enableToStringFunc: false,\n ignoreRoot: true,\n matchers: matchers\n });\n\n manifest = mpd;\n elements = getElementsToResolve(manifest.Period_asArray, manifest, ELEMENT_TYPE_PERIOD, RESOLVE_TYPE_ONLOAD);\n resolve(elements, ELEMENT_TYPE_PERIOD, RESOLVE_TYPE_ONLOAD);\n }\n\n function reset() {\n eventBus.off(Events.XLINK_ELEMENT_LOADED, onXlinkElementLoaded, instance);\n\n if (xlinkLoader) {\n xlinkLoader.reset();\n xlinkLoader = null;\n }\n }\n\n function resolve(elements, type, resolveType) {\n let resolveObject = {};\n let element,\n url;\n\n resolveObject.elements = elements;\n resolveObject.type = type;\n resolveObject.resolveType = resolveType;\n // If nothing to resolve, directly call allElementsLoaded\n if (resolveObject.elements.length === 0) {\n onXlinkAllElementsLoaded(resolveObject);\n }\n for (let i = 0; i < resolveObject.elements.length; i++) {\n element = resolveObject.elements[i];\n if (urlUtils.isHTTPURL(element.url)) {\n url = element.url;\n } else {\n url = element.originalContent.BaseURL + element.url;\n }\n xlinkLoader.load(url, element, resolveObject);\n }\n }\n\n function onXlinkElementLoaded(event) {\n let element,\n resolveObject;\n\n const openingTag = '';\n const closingTag = '';\n let mergedContent = '';\n\n element = event.element;\n resolveObject = event.resolveObject;\n // if the element resolved into content parse the content\n if (element.resolvedContent) {\n let index = 0;\n // we add a parent elements so the converter is able to parse multiple elements of the same type which are not wrapped inside a container\n if (element.resolvedContent.indexOf('') + 2; //find the closing position of the xml declaration, if it exists.\n }\n mergedContent = element.resolvedContent.substr(0,index) + openingTag + element.resolvedContent.substr(index) + closingTag;\n element.resolvedContent = converter.xml_str2json(mergedContent);\n }\n if (isResolvingFinished(resolveObject)) {\n onXlinkAllElementsLoaded(resolveObject);\n }\n }\n\n // We got to wait till all elements of the current queue are resolved before merging back\n function onXlinkAllElementsLoaded (resolveObject) {\n let elements = [];\n let i,\n obj;\n\n mergeElementsBack(resolveObject);\n if (resolveObject.resolveType === RESOLVE_TYPE_ONACTUATE) {\n eventBus.trigger(Events.XLINK_READY, {manifest: manifest});\n }\n if (resolveObject.resolveType === RESOLVE_TYPE_ONLOAD) {\n switch (resolveObject.type) {\n // Start resolving the other elements. We can do Adaptation Set and EventStream in parallel\n case ELEMENT_TYPE_PERIOD:\n for (i = 0; i < manifest[ELEMENT_TYPE_PERIOD + '_asArray'].length; i++) {\n obj = manifest[ELEMENT_TYPE_PERIOD + '_asArray'][i];\n if (obj.hasOwnProperty(ELEMENT_TYPE_ADAPTATIONSET + '_asArray')) {\n elements = elements.concat(getElementsToResolve(obj[ELEMENT_TYPE_ADAPTATIONSET + '_asArray'], obj, ELEMENT_TYPE_ADAPTATIONSET, RESOLVE_TYPE_ONLOAD));\n }\n if (obj.hasOwnProperty(ELEMENT_TYPE_EVENTSTREAM + '_asArray')) {\n elements = elements.concat(getElementsToResolve(obj[ELEMENT_TYPE_EVENTSTREAM + '_asArray'], obj, ELEMENT_TYPE_EVENTSTREAM, RESOLVE_TYPE_ONLOAD));\n }\n }\n resolve(elements, ELEMENT_TYPE_ADAPTATIONSET, RESOLVE_TYPE_ONLOAD);\n break;\n case ELEMENT_TYPE_ADAPTATIONSET:\n // TODO: Resolve SegmentList here\n eventBus.trigger(Events.XLINK_READY, {manifest: manifest});\n break;\n }\n }\n }\n\n // Returns the elements with the specific resolve Type\n function getElementsToResolve(elements, parentElement, type, resolveType) {\n let toResolve = [];\n let element,\n i,\n xlinkObject;\n // first remove all the resolve-to-zero elements\n for (i = elements.length - 1; i >= 0; i--) {\n element = elements[i];\n if (element.hasOwnProperty('xlink:href') && element['xlink:href'] === RESOLVE_TO_ZERO) {\n elements.splice(i, 1);\n }\n }\n // now get the elements with the right resolve type\n for (i = 0; i < elements.length; i++) {\n element = elements[i];\n if (element.hasOwnProperty('xlink:href') && element.hasOwnProperty('xlink:actuate') && element['xlink:actuate'] === resolveType) {\n xlinkObject = createXlinkObject(element['xlink:href'], parentElement, type, i, resolveType, element);\n toResolve.push(xlinkObject);\n }\n }\n return toResolve;\n }\n\n function mergeElementsBack(resolveObject) {\n let resolvedElements = [];\n let element,\n type,\n obj,\n i,\n j,\n k;\n // Start merging back from the end because of index shifting. Note that the elements with the same parent have to be ordered by index ascending\n for (i = resolveObject.elements.length - 1; i >= 0; i --) {\n element = resolveObject.elements[i];\n type = element.type + '_asArray';\n\n // Element couldn't be resolved or is TODO Inappropriate target: Remove all Xlink attributes\n if (!element.resolvedContent || isInappropriateTarget()) {\n delete element.originalContent['xlink:actuate'];\n delete element.originalContent['xlink:href'];\n resolvedElements.push(element.originalContent);\n }\n // Element was successfully resolved\n else if (element.resolvedContent) {\n for (j = 0; j < element.resolvedContent[type].length; j++) {\n //TODO Contains another Xlink attribute with xlink:actuate set to onload. Remove all xLink attributes\n obj = element.resolvedContent[type][j];\n resolvedElements.push(obj);\n }\n }\n // Replace the old elements in the parent with the resolved ones\n element.parentElement[type].splice(element.index, 1);\n for (k = 0; k < resolvedElements.length; k++) {\n element.parentElement[type].splice(element.index + k, 0, resolvedElements[k]);\n }\n resolvedElements = [];\n }\n if (resolveObject.elements.length > 0) {\n iron.run(manifest);\n }\n }\n\n function createXlinkObject(url, parentElement, type, index, resolveType, originalContent) {\n return {\n url: url,\n parentElement: parentElement,\n type: type,\n index: index,\n resolveType: resolveType,\n originalContent: originalContent,\n resolvedContent: null,\n resolved: false\n };\n }\n\n // Check if all pending requests are finished\n function isResolvingFinished(elementsToResolve) {\n let i,\n obj;\n for (i = 0; i < elementsToResolve.elements.length; i++) {\n obj = elementsToResolve.elements[i];\n if (obj.resolved === false) {\n return false;\n }\n }\n return true;\n }\n\n // TODO : Do some syntax check here if the target is valid or not\n function isInappropriateTarget() {\n return false;\n }\n\n instance = {\n resolveManifestOnLoad: resolveManifestOnLoad,\n setMatchers: setMatchers,\n setIron: setIron,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nXlinkController.__dashjs_factory_name = 'XlinkController';\nexport default FactoryMaker.getClassFactory(XlinkController);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport XlinkLoader from '../XlinkLoader';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport X2JS from '../../../externals/xml2json';\nimport URLUtils from '../utils/URLUtils';\n\nconst RESOLVE_TYPE_ONLOAD = 'onLoad';\nconst RESOLVE_TYPE_ONACTUATE = 'onActuate';\nconst ELEMENT_TYPE_PERIOD = 'Period';\nconst ELEMENT_TYPE_ADAPTATIONSET = 'AdaptationSet';\nconst ELEMENT_TYPE_EVENTSTREAM = 'EventStream';\nconst RESOLVE_TO_ZERO = 'urn:mpeg:dash:resolve-to-zero:2013';\n\nfunction XlinkController(config) {\n\n config = config || {};\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n const urlUtils = URLUtils(context).getInstance();\n\n let instance,\n matchers,\n iron,\n manifest,\n converter,\n xlinkLoader;\n\n function setup() {\n eventBus.on(Events.XLINK_ELEMENT_LOADED, onXlinkElementLoaded, instance);\n\n xlinkLoader = XlinkLoader(context).create({\n errHandler: config.errHandler,\n metricsModel: config.metricsModel,\n mediaPlayerModel: config.mediaPlayerModel,\n requestModifier: config.requestModifier\n });\n }\n\n function setMatchers(value) {\n if (value) {\n matchers = value;\n }\n }\n\n function setIron(value) {\n if (value) {\n iron = value;\n }\n }\n\n /**\n *

Triggers the resolution of the xlink.onLoad attributes in the manifest file

\n * @param {Object} mpd - the manifest\n */\n function resolveManifestOnLoad(mpd) {\n let elements;\n // First resolve all periods, so unnecessary requests inside onLoad Periods with Default content are avoided\n converter = new X2JS({\n escapeMode: false,\n attributePrefix: '',\n arrayAccessForm: 'property',\n emptyNodeForm: 'object',\n stripWhitespaces: false,\n enableToStringFunc: false,\n ignoreRoot: true,\n matchers: matchers\n });\n\n manifest = mpd;\n elements = getElementsToResolve(manifest.Period_asArray, manifest, ELEMENT_TYPE_PERIOD, RESOLVE_TYPE_ONLOAD);\n resolve(elements, ELEMENT_TYPE_PERIOD, RESOLVE_TYPE_ONLOAD);\n }\n\n function reset() {\n eventBus.off(Events.XLINK_ELEMENT_LOADED, onXlinkElementLoaded, instance);\n\n if (xlinkLoader) {\n xlinkLoader.reset();\n xlinkLoader = null;\n }\n }\n\n function resolve(elements, type, resolveType) {\n let resolveObject = {};\n let element,\n url;\n\n resolveObject.elements = elements;\n resolveObject.type = type;\n resolveObject.resolveType = resolveType;\n // If nothing to resolve, directly call allElementsLoaded\n if (resolveObject.elements.length === 0) {\n onXlinkAllElementsLoaded(resolveObject);\n }\n for (let i = 0; i < resolveObject.elements.length; i++) {\n element = resolveObject.elements[i];\n if (urlUtils.isHTTPURL(element.url)) {\n url = element.url;\n } else {\n url = element.originalContent.BaseURL + element.url;\n }\n xlinkLoader.load(url, element, resolveObject);\n }\n }\n\n function onXlinkElementLoaded(event) {\n let element,\n resolveObject;\n\n const openingTag = '';\n const closingTag = '';\n let mergedContent = '';\n\n element = event.element;\n resolveObject = event.resolveObject;\n // if the element resolved into content parse the content\n if (element.resolvedContent) {\n let index = 0;\n // we add a parent elements so the converter is able to parse multiple elements of the same type which are not wrapped inside a container\n if (element.resolvedContent.indexOf('') + 2; //find the closing position of the xml declaration, if it exists.\n }\n mergedContent = element.resolvedContent.substr(0,index) + openingTag + element.resolvedContent.substr(index) + closingTag;\n element.resolvedContent = converter.xml_str2json(mergedContent);\n }\n if (isResolvingFinished(resolveObject)) {\n onXlinkAllElementsLoaded(resolveObject);\n }\n }\n\n // We got to wait till all elements of the current queue are resolved before merging back\n function onXlinkAllElementsLoaded (resolveObject) {\n let elements = [];\n let i,\n obj;\n\n mergeElementsBack(resolveObject);\n if (resolveObject.resolveType === RESOLVE_TYPE_ONACTUATE) {\n eventBus.trigger(Events.XLINK_READY, {manifest: manifest});\n }\n if (resolveObject.resolveType === RESOLVE_TYPE_ONLOAD) {\n switch (resolveObject.type) {\n // Start resolving the other elements. We can do Adaptation Set and EventStream in parallel\n case ELEMENT_TYPE_PERIOD:\n for (i = 0; i < manifest[ELEMENT_TYPE_PERIOD + '_asArray'].length; i++) {\n obj = manifest[ELEMENT_TYPE_PERIOD + '_asArray'][i];\n if (obj.hasOwnProperty(ELEMENT_TYPE_ADAPTATIONSET + '_asArray')) {\n elements = elements.concat(getElementsToResolve(obj[ELEMENT_TYPE_ADAPTATIONSET + '_asArray'], obj, ELEMENT_TYPE_ADAPTATIONSET, RESOLVE_TYPE_ONLOAD));\n }\n if (obj.hasOwnProperty(ELEMENT_TYPE_EVENTSTREAM + '_asArray')) {\n elements = elements.concat(getElementsToResolve(obj[ELEMENT_TYPE_EVENTSTREAM + '_asArray'], obj, ELEMENT_TYPE_EVENTSTREAM, RESOLVE_TYPE_ONLOAD));\n }\n }\n resolve(elements, ELEMENT_TYPE_ADAPTATIONSET, RESOLVE_TYPE_ONLOAD);\n break;\n case ELEMENT_TYPE_ADAPTATIONSET:\n // TODO: Resolve SegmentList here\n eventBus.trigger(Events.XLINK_READY, {manifest: manifest});\n break;\n }\n }\n }\n\n // Returns the elements with the specific resolve Type\n function getElementsToResolve(elements, parentElement, type, resolveType) {\n let toResolve = [];\n let element,\n i,\n xlinkObject;\n // first remove all the resolve-to-zero elements\n for (i = elements.length - 1; i >= 0; i--) {\n element = elements[i];\n if (element.hasOwnProperty('xlink:href') && element['xlink:href'] === RESOLVE_TO_ZERO) {\n elements.splice(i, 1);\n }\n }\n // now get the elements with the right resolve type\n for (i = 0; i < elements.length; i++) {\n element = elements[i];\n if (element.hasOwnProperty('xlink:href') && element.hasOwnProperty('xlink:actuate') && element['xlink:actuate'] === resolveType) {\n xlinkObject = createXlinkObject(element['xlink:href'], parentElement, type, i, resolveType, element);\n toResolve.push(xlinkObject);\n }\n }\n return toResolve;\n }\n\n function mergeElementsBack(resolveObject) {\n let resolvedElements = [];\n let element,\n type,\n obj,\n i,\n j,\n k;\n // Start merging back from the end because of index shifting. Note that the elements with the same parent have to be ordered by index ascending\n for (i = resolveObject.elements.length - 1; i >= 0; i --) {\n element = resolveObject.elements[i];\n type = element.type + '_asArray';\n\n // Element couldn't be resolved or is TODO Inappropriate target: Remove all Xlink attributes\n if (!element.resolvedContent || isInappropriateTarget()) {\n delete element.originalContent['xlink:actuate'];\n delete element.originalContent['xlink:href'];\n resolvedElements.push(element.originalContent);\n }\n // Element was successfully resolved\n else if (element.resolvedContent) {\n for (j = 0; j < element.resolvedContent[type].length; j++) {\n //TODO Contains another Xlink attribute with xlink:actuate set to onload. Remove all xLink attributes\n obj = element.resolvedContent[type][j];\n resolvedElements.push(obj);\n }\n }\n // Replace the old elements in the parent with the resolved ones\n element.parentElement[type].splice(element.index, 1);\n for (k = 0; k < resolvedElements.length; k++) {\n element.parentElement[type].splice(element.index + k, 0, resolvedElements[k]);\n }\n resolvedElements = [];\n }\n if (resolveObject.elements.length > 0) {\n iron.run(manifest);\n }\n }\n\n function createXlinkObject(url, parentElement, type, index, resolveType, originalContent) {\n return {\n url: url,\n parentElement: parentElement,\n type: type,\n index: index,\n resolveType: resolveType,\n originalContent: originalContent,\n resolvedContent: null,\n resolved: false\n };\n }\n\n // Check if all pending requests are finished\n function isResolvingFinished(elementsToResolve) {\n let i,\n obj;\n for (i = 0; i < elementsToResolve.elements.length; i++) {\n obj = elementsToResolve.elements[i];\n if (obj.resolved === false) {\n return false;\n }\n }\n return true;\n }\n\n // TODO : Do some syntax check here if the target is valid or not\n function isInappropriateTarget() {\n return false;\n }\n\n instance = {\n resolveManifestOnLoad: resolveManifestOnLoad,\n setMatchers: setMatchers,\n setIron: setIron,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nXlinkController.__dashjs_factory_name = 'XlinkController';\nexport default FactoryMaker.getClassFactory(XlinkController);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport DVBErrorsTranslator from './utils/DVBErrorsTranslator';\nimport MetricsReportingEvents from './MetricsReportingEvents';\nimport MetricsCollectionController from './controllers/MetricsCollectionController';\nimport MetricsHandlerFactory from './metrics/MetricsHandlerFactory';\nimport ReportingFactory from './reporting/ReportingFactory';\n\nfunction MetricsReporting() {\n\n let context = this.context;\n let instance;\n\n let dvbErrorsTranslator;\n\n /**\n * Create a MetricsCollectionController, and a DVBErrorsTranslator\n * @param {Object} config - dependancies from owner\n * @return {MetricsCollectionController} Metrics Collection Controller\n */\n function createMetricsReporting(config) {\n dvbErrorsTranslator = DVBErrorsTranslator(context).getInstance({\n eventBus: config.eventBus,\n metricsModel: config.metricsModel,\n metricsConstants: config.metricsConstants,\n events: config.events\n });\n\n return MetricsCollectionController(context).create(config);\n }\n\n /**\n * Get the ReportingFactory to allow new reporters to be registered\n * @return {ReportingFactory} Reporting Factory\n */\n function getReportingFactory() {\n return ReportingFactory(context).getInstance();\n }\n\n /**\n * Get the MetricsHandlerFactory to allow new handlers to be registered\n * @return {MetricsHandlerFactory} Metrics Handler Factory\n */\n function getMetricsHandlerFactory() {\n return MetricsHandlerFactory(context).getInstance();\n }\n\n instance = {\n createMetricsReporting: createMetricsReporting,\n getReportingFactory: getReportingFactory,\n getMetricsHandlerFactory: getMetricsHandlerFactory\n };\n\n return instance;\n}\n\nMetricsReporting.__dashjs_factory_name = 'MetricsReporting';\nlet factory = dashjs.FactoryMaker.getClassFactory(MetricsReporting); /* jshint ignore:line */\nfactory.events = MetricsReportingEvents;\ndashjs.FactoryMaker.updateClassFactory(MetricsReporting.__dashjs_factory_name, factory); /* jshint ignore:line */\nexport default factory;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventsBase from '../../core/events/EventsBase';\n\nclass MetricsReportingEvents extends EventsBase {\n constructor () {\n super();\n\n this.METRICS_INITIALISATION_COMPLETE = 'internal_metricsReportingInitialized';\n this.BECAME_REPORTING_PLAYER = 'internal_becameReportingPlayer';\n }\n}\n\nlet metricsReportingEvents = new MetricsReportingEvents();\nexport default metricsReportingEvents;\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MetricsController from './MetricsController';\nimport ManifestParsing from '../utils/ManifestParsing';\nimport MetricsReportingEvents from '../MetricsReportingEvents';\n\nfunction MetricsCollectionController(config) {\n\n let metricsControllers = {};\n\n let context = this.context;\n let eventBus = config.eventBus;\n const events = config.events;\n\n function update(e) {\n if (e.error) {\n return;\n }\n\n // start by assuming all existing controllers need removing\n let controllersToRemove = Object.keys(metricsControllers);\n\n const metrics = ManifestParsing(context).getInstance({\n dashManifestModel: config.dashManifestModel,\n constants: config.constants\n }).getMetrics(e.manifest);\n\n metrics.forEach(m => {\n const key = JSON.stringify(m);\n\n if (!metricsControllers.hasOwnProperty(key)) {\n try {\n let controller = MetricsController(context).create(config);\n controller.initialize(m);\n metricsControllers[key] = controller;\n } catch (e) {\n // fail quietly\n }\n } else {\n // we still need this controller - delete from removal list\n controllersToRemove.splice(key, 1);\n }\n });\n\n // now remove the unwanted controllers\n controllersToRemove.forEach(c => {\n metricsControllers[c].reset();\n delete metricsControllers[c];\n });\n\n eventBus.trigger(\n MetricsReportingEvents.METRICS_INITIALISATION_COMPLETE\n );\n }\n\n function resetMetricsControllers() {\n Object.keys(metricsControllers).forEach(key => {\n metricsControllers[key].reset();\n });\n\n metricsControllers = {};\n }\n\n function setup() {\n eventBus.on(events.MANIFEST_UPDATED, update);\n eventBus.on(events.STREAM_TEARDOWN_COMPLETE, resetMetricsControllers);\n }\n\n function reset() {\n eventBus.off(events.MANIFEST_UPDATED, update);\n eventBus.off(events.STREAM_TEARDOWN_COMPLETE, resetMetricsControllers);\n }\n\n setup();\n\n return {\n reset: reset\n };\n}\n\nMetricsCollectionController.__dashjs_factory_name = 'MetricsCollectionController';\nexport default dashjs.FactoryMaker.getClassFactory(MetricsCollectionController); /* jshint ignore:line */\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport RangeController from './RangeController';\nimport ReportingController from './ReportingController';\nimport MetricsHandlersController from './MetricsHandlersController';\n\nfunction MetricsController(config) {\n\n let metricsHandlersController,\n reportingController,\n rangeController,\n instance;\n\n let context = this.context;\n\n function initialize(metricsEntry) {\n try {\n rangeController = RangeController(context).create({\n mediaElement: config.mediaElement\n });\n\n rangeController.initialize(metricsEntry.Range);\n\n reportingController = ReportingController(context).create({\n log: config.log,\n metricsConstants: config.metricsConstants\n });\n\n reportingController.initialize(metricsEntry.Reporting, rangeController);\n\n metricsHandlersController = MetricsHandlersController(context).create({\n log: config.log,\n eventBus: config.eventBus,\n metricsConstants: config.metricsConstants,\n events: config.events\n });\n\n metricsHandlersController.initialize(metricsEntry.metrics, reportingController);\n } catch (e) {\n reset();\n throw e;\n }\n }\n\n function reset() {\n if (metricsHandlersController) {\n metricsHandlersController.reset();\n }\n\n if (reportingController) {\n reportingController.reset();\n }\n\n if (rangeController) {\n rangeController.reset();\n }\n }\n\n instance = {\n initialize: initialize,\n reset: reset\n };\n\n return instance;\n}\n\nMetricsController.__dashjs_factory_name = 'MetricsController';\nexport default dashjs.FactoryMaker.getClassFactory(MetricsController); /* jshint ignore:line */\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MetricsHandlerFactory from '../metrics/MetricsHandlerFactory';\n\nfunction MetricsHandlersController(config) {\n let handlers = [];\n\n let instance;\n let context = this.context;\n let eventBus = config.eventBus;\n const Events = config.events;\n\n let metricsHandlerFactory = MetricsHandlerFactory(context).getInstance({\n log: config.log,\n eventBus: config.eventBus,\n metricsConstants: config.metricsConstants\n });\n\n function handle(e) {\n handlers.forEach(handler => {\n handler.handleNewMetric(e.metric, e.value, e.mediaType);\n });\n }\n\n function initialize(metrics, reportingController) {\n metrics.split(',').forEach(\n (m, midx, ms) => {\n let handler;\n\n // there is a bug in ISO23009-1 where the metrics attribute\n // is a comma-separated list but HttpList key can contain a\n // comma enclosed by ().\n if ((m.indexOf('(') !== -1) && m.indexOf(')') === -1) {\n let nextm = ms[midx + 1];\n\n if (nextm &&\n (nextm.indexOf('(') === -1) &&\n (nextm.indexOf(')') !== -1)) {\n m += ',' + nextm;\n\n // delete the next metric so forEach does not visit.\n delete ms[midx + 1];\n }\n }\n\n handler = metricsHandlerFactory.create(\n m,\n reportingController\n );\n\n if (handler) {\n handlers.push(handler);\n }\n }\n );\n\n eventBus.on(\n Events.METRIC_ADDED,\n handle,\n instance\n );\n\n eventBus.on(\n Events.METRIC_UPDATED,\n handle,\n instance\n );\n }\n\n function reset() {\n eventBus.off(\n Events.METRIC_ADDED,\n handle,\n instance\n );\n\n eventBus.off(\n Events.METRIC_UPDATED,\n handle,\n instance\n );\n\n handlers.forEach(handler => handler.reset());\n\n handlers = [];\n }\n\n instance = {\n initialize: initialize,\n reset: reset\n };\n\n return instance;\n}\n\nMetricsHandlersController.__dashjs_factory_name = 'MetricsHandlersController';\nexport default dashjs.FactoryMaker.getClassFactory(MetricsHandlersController); /* jshint ignore:line */\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CustomTimeRanges from '../../utils/CustomTimeRanges';\n\nfunction RangeController(config) {\n\n let useWallClockTime = false;\n let context = this.context;\n let instance,\n ranges;\n\n let mediaElement = config.mediaElement;\n\n function initialize(rs) {\n if (rs && rs.length) {\n rs.forEach(r => {\n let start = r.starttime;\n let end = start + r.duration;\n\n ranges.add(start, end);\n });\n\n useWallClockTime = !!rs[0]._useWallClockTime;\n }\n }\n\n function reset() {\n ranges.clear();\n }\n\n function setup() {\n ranges = CustomTimeRanges(context).create();\n }\n\n function isEnabled() {\n let numRanges = ranges.length;\n let time;\n\n if (!numRanges) {\n return true;\n }\n\n // When not present, DASH Metrics reporting is requested\n // for the whole duration of the content.\n time = useWallClockTime ?\n (new Date().getTime() / 1000) :\n mediaElement.currentTime;\n\n for (let i = 0; i < numRanges; i += 1) {\n let start = ranges.start(i);\n let end = ranges.end(i);\n\n if ((start <= time) && (time < end)) {\n return true;\n }\n }\n\n return false;\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n isEnabled: isEnabled\n };\n\n setup();\n\n return instance;\n}\n\nRangeController.__dashjs_factory_name = 'RangeController';\nexport default dashjs.FactoryMaker.getClassFactory(RangeController); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MetricsController from './MetricsController';\nimport ManifestParsing from '../utils/ManifestParsing';\nimport MetricsReportingEvents from '../MetricsReportingEvents';\n\nfunction MetricsCollectionController(config) {\n\n config = config || {};\n let metricsControllers = {};\n\n let context = this.context;\n let eventBus = config.eventBus;\n const events = config.events;\n\n function update(e) {\n if (e.error) {\n return;\n }\n\n // start by assuming all existing controllers need removing\n let controllersToRemove = Object.keys(metricsControllers);\n\n const metrics = ManifestParsing(context).getInstance({\n dashManifestModel: config.dashManifestModel,\n constants: config.constants\n }).getMetrics(e.manifest);\n\n metrics.forEach(m => {\n const key = JSON.stringify(m);\n\n if (!metricsControllers.hasOwnProperty(key)) {\n try {\n let controller = MetricsController(context).create(config);\n controller.initialize(m);\n metricsControllers[key] = controller;\n } catch (e) {\n // fail quietly\n }\n } else {\n // we still need this controller - delete from removal list\n controllersToRemove.splice(key, 1);\n }\n });\n\n // now remove the unwanted controllers\n controllersToRemove.forEach(c => {\n metricsControllers[c].reset();\n delete metricsControllers[c];\n });\n\n eventBus.trigger(\n MetricsReportingEvents.METRICS_INITIALISATION_COMPLETE\n );\n }\n\n function resetMetricsControllers() {\n Object.keys(metricsControllers).forEach(key => {\n metricsControllers[key].reset();\n });\n\n metricsControllers = {};\n }\n\n function setup() {\n eventBus.on(events.MANIFEST_UPDATED, update);\n eventBus.on(events.STREAM_TEARDOWN_COMPLETE, resetMetricsControllers);\n }\n\n function reset() {\n eventBus.off(events.MANIFEST_UPDATED, update);\n eventBus.off(events.STREAM_TEARDOWN_COMPLETE, resetMetricsControllers);\n }\n\n setup();\n\n return {\n reset: reset\n };\n}\n\nMetricsCollectionController.__dashjs_factory_name = 'MetricsCollectionController';\nexport default dashjs.FactoryMaker.getClassFactory(MetricsCollectionController); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport RangeController from './RangeController';\nimport ReportingController from './ReportingController';\nimport MetricsHandlersController from './MetricsHandlersController';\n\nfunction MetricsController(config) {\n\n config = config || {};\n let metricsHandlersController,\n reportingController,\n rangeController,\n instance;\n\n let context = this.context;\n\n function initialize(metricsEntry) {\n try {\n rangeController = RangeController(context).create({\n mediaElement: config.mediaElement\n });\n\n rangeController.initialize(metricsEntry.Range);\n\n reportingController = ReportingController(context).create({\n log: config.log,\n metricsConstants: config.metricsConstants\n });\n\n reportingController.initialize(metricsEntry.Reporting, rangeController);\n\n metricsHandlersController = MetricsHandlersController(context).create({\n log: config.log,\n eventBus: config.eventBus,\n metricsConstants: config.metricsConstants,\n events: config.events\n });\n\n metricsHandlersController.initialize(metricsEntry.metrics, reportingController);\n } catch (e) {\n reset();\n throw e;\n }\n }\n\n function reset() {\n if (metricsHandlersController) {\n metricsHandlersController.reset();\n }\n\n if (reportingController) {\n reportingController.reset();\n }\n\n if (rangeController) {\n rangeController.reset();\n }\n }\n\n instance = {\n initialize: initialize,\n reset: reset\n };\n\n return instance;\n}\n\nMetricsController.__dashjs_factory_name = 'MetricsController';\nexport default dashjs.FactoryMaker.getClassFactory(MetricsController); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MetricsHandlerFactory from '../metrics/MetricsHandlerFactory';\n\nfunction MetricsHandlersController(config) {\n\n config = config || {};\n let handlers = [];\n\n let instance;\n let context = this.context;\n let eventBus = config.eventBus;\n const Events = config.events;\n\n let metricsHandlerFactory = MetricsHandlerFactory(context).getInstance({\n log: config.log,\n eventBus: config.eventBus,\n metricsConstants: config.metricsConstants\n });\n\n function handle(e) {\n handlers.forEach(handler => {\n handler.handleNewMetric(e.metric, e.value, e.mediaType);\n });\n }\n\n function initialize(metrics, reportingController) {\n metrics.split(',').forEach(\n (m, midx, ms) => {\n let handler;\n\n // there is a bug in ISO23009-1 where the metrics attribute\n // is a comma-separated list but HttpList key can contain a\n // comma enclosed by ().\n if ((m.indexOf('(') !== -1) && m.indexOf(')') === -1) {\n let nextm = ms[midx + 1];\n\n if (nextm &&\n (nextm.indexOf('(') === -1) &&\n (nextm.indexOf(')') !== -1)) {\n m += ',' + nextm;\n\n // delete the next metric so forEach does not visit.\n delete ms[midx + 1];\n }\n }\n\n handler = metricsHandlerFactory.create(\n m,\n reportingController\n );\n\n if (handler) {\n handlers.push(handler);\n }\n }\n );\n\n eventBus.on(\n Events.METRIC_ADDED,\n handle,\n instance\n );\n\n eventBus.on(\n Events.METRIC_UPDATED,\n handle,\n instance\n );\n }\n\n function reset() {\n eventBus.off(\n Events.METRIC_ADDED,\n handle,\n instance\n );\n\n eventBus.off(\n Events.METRIC_UPDATED,\n handle,\n instance\n );\n\n handlers.forEach(handler => handler.reset());\n\n handlers = [];\n }\n\n instance = {\n initialize: initialize,\n reset: reset\n };\n\n return instance;\n}\n\nMetricsHandlersController.__dashjs_factory_name = 'MetricsHandlersController';\nexport default dashjs.FactoryMaker.getClassFactory(MetricsHandlersController); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CustomTimeRanges from '../../utils/CustomTimeRanges';\n\nfunction RangeController(config) {\n\n config = config || {};\n let useWallClockTime = false;\n let context = this.context;\n let instance,\n ranges;\n\n let mediaElement = config.mediaElement;\n\n function initialize(rs) {\n if (rs && rs.length) {\n rs.forEach(r => {\n let start = r.starttime;\n let end = start + r.duration;\n\n ranges.add(start, end);\n });\n\n useWallClockTime = !!rs[0]._useWallClockTime;\n }\n }\n\n function reset() {\n ranges.clear();\n }\n\n function setup() {\n ranges = CustomTimeRanges(context).create();\n }\n\n function isEnabled() {\n let numRanges = ranges.length;\n let time;\n\n if (!numRanges) {\n return true;\n }\n\n // When not present, DASH Metrics reporting is requested\n // for the whole duration of the content.\n time = useWallClockTime ?\n (new Date().getTime() / 1000) :\n mediaElement.currentTime;\n\n for (let i = 0; i < numRanges; i += 1) {\n let start = ranges.start(i);\n let end = ranges.end(i);\n\n if ((start <= time) && (time < end)) {\n return true;\n }\n }\n\n return false;\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n isEnabled: isEnabled\n };\n\n setup();\n\n return instance;\n}\n\nRangeController.__dashjs_factory_name = 'RangeController';\nexport default dashjs.FactoryMaker.getClassFactory(RangeController); /* jshint ignore:line */\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ReportingFactory from '../reporting/ReportingFactory';\n\nfunction ReportingController(config) {\n\n let reporters = [];\n let instance;\n\n const reportingFactory = ReportingFactory(this.context).getInstance(config);\n\n function initialize(reporting, rangeController) {\n // \"if multiple Reporting elements are present, it is expected that\n // the client processes one of the recognized reporting schemes.\"\n // to ignore this, and support multiple Reporting per Metric,\n // simply change the 'some' below to 'forEach'\n reporting.some(r => {\n let reporter = reportingFactory.create(r, rangeController);\n\n if (reporter) {\n reporters.push(reporter);\n return true;\n }\n });\n }\n\n function reset() {\n reporters.forEach(r => r.reset());\n reporters = [];\n }\n\n function report(type, vos) {\n reporters.forEach(r => r.report(type, vos));\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n report: report\n };\n\n return instance;\n}\n\nReportingController.__dashjs_factory_name = 'ReportingController';\nexport default dashjs.FactoryMaker.getClassFactory(ReportingController); /* jshint ignore:line */\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport BufferLevel from './handlers/BufferLevelHandler';\nimport DVBErrors from './handlers/DVBErrorsHandler';\nimport HttpList from './handlers/HttpListHandler';\nimport GenericMetricHandler from './handlers/GenericMetricHandler';\n\nfunction MetricsHandlerFactory(config) {\n\n let instance;\n let log = config.log;\n\n // group 1: key, [group 3: n [, group 5: type]]\n let keyRegex = /([a-zA-Z]*)(\\(([0-9]*)(\\,\\s*([a-zA-Z]*))?\\))?/;\n\n let context = this.context;\n let knownFactoryProducts = {\n BufferLevel: BufferLevel,\n DVBErrors: DVBErrors,\n HttpList: HttpList,\n PlayList: GenericMetricHandler,\n RepSwitchList: GenericMetricHandler,\n TcpList: GenericMetricHandler\n };\n\n function create(listType, reportingController) {\n var matches = listType.match(keyRegex);\n var handler;\n\n if (!matches) {\n return;\n }\n\n try {\n handler = knownFactoryProducts[matches[1]](context).create({\n eventBus: config.eventBus,\n metricsConstants: config.metricsConstants\n });\n\n handler.initialize(\n matches[1],\n reportingController,\n matches[3],\n matches[5]\n );\n } catch (e) {\n handler = null;\n\n log(`MetricsHandlerFactory: Could not create handler for type ${matches[1]} with args ${matches[3]}, ${matches[5]} (${e.message})`);\n }\n\n return handler;\n }\n\n function register(key, handler) {\n knownFactoryProducts[key] = handler;\n }\n\n function unregister(key) {\n delete knownFactoryProducts[key];\n }\n\n instance = {\n create: create,\n register: register,\n unregister: unregister\n };\n\n return instance;\n}\n\nMetricsHandlerFactory.__dashjs_factory_name = 'MetricsHandlerFactory';\nexport default dashjs.FactoryMaker.getSingletonFactory(MetricsHandlerFactory); /* jshint ignore:line */\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport HandlerHelpers from '../../utils/HandlerHelpers';\n\nfunction BufferLevelHandler(config) {\n\n let instance,\n reportingController,\n n,\n name,\n interval,\n lastReportedTime;\n\n let context = this.context;\n let handlerHelpers = HandlerHelpers(context).getInstance();\n\n let storedVOs = [];\n\n const metricsConstants = config.metricsConstants;\n\n function getLowestBufferLevelVO() {\n try {\n return Object.keys(storedVOs).map(\n key => storedVOs[key]\n ).reduce(\n (a, b) => {\n return (a.level < b.level) ? a : b;\n }\n );\n } catch (e) {\n return;\n }\n }\n\n function intervalCallback() {\n let vo = getLowestBufferLevelVO();\n\n if (vo) {\n if (lastReportedTime !== vo.t) {\n lastReportedTime = vo.t;\n reportingController.report(name, vo);\n }\n }\n }\n\n function initialize(basename, rc, n_ms) {\n if (rc) {\n // this will throw if n is invalid, to be\n // caught by the initialize caller.\n n = handlerHelpers.validateN(n_ms);\n reportingController = rc;\n name = handlerHelpers.reconstructFullMetricName(basename, n_ms);\n interval = setInterval(intervalCallback, n);\n }\n }\n\n function reset() {\n clearInterval(interval);\n interval = null;\n n = 0;\n reportingController = null;\n lastReportedTime = null;\n }\n\n function handleNewMetric(metric, vo, type) {\n if (metric === metricsConstants.BUFFER_LEVEL) {\n storedVOs[type] = vo;\n }\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n handleNewMetric: handleNewMetric\n };\n\n return instance;\n}\n\nBufferLevelHandler.__dashjs_factory_name = 'BufferLevelHandler';\nexport default dashjs.FactoryMaker.getClassFactory(BufferLevelHandler); /* jshint ignore:line */\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MetricsReportingEvents from '../../MetricsReportingEvents';\n\nfunction DVBErrorsHandler(config) {\n\n let instance,\n reportingController;\n\n let eventBus = config.eventBus;\n const metricsConstants = config.metricsConstants;\n\n function onInitialisationComplete() {\n // we only want to report this once per call to initialize\n eventBus.off(\n MetricsReportingEvents.METRICS_INITIALISATION_COMPLETE,\n onInitialisationComplete,\n this\n );\n\n // Note: A Player becoming a reporting Player is itself\n // something which is recorded by the DVBErrors metric.\n eventBus.trigger(\n MetricsReportingEvents.BECAME_REPORTING_PLAYER\n );\n }\n\n function initialize(unused, rc) {\n if (rc) {\n reportingController = rc;\n\n eventBus.on(\n MetricsReportingEvents.METRICS_INITIALISATION_COMPLETE,\n onInitialisationComplete,\n this\n );\n }\n }\n\n function reset() {\n reportingController = null;\n }\n\n function handleNewMetric(metric, vo) {\n // simply pass metric straight through\n if (metric === metricsConstants.DVB_ERRORS) {\n if (reportingController) {\n reportingController.report(metric, vo);\n }\n }\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n handleNewMetric: handleNewMetric\n };\n\n return instance;\n}\n\nexport default dashjs.FactoryMaker.getClassFactory(DVBErrorsHandler); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport BufferLevel from './handlers/BufferLevelHandler';\nimport DVBErrors from './handlers/DVBErrorsHandler';\nimport HttpList from './handlers/HttpListHandler';\nimport GenericMetricHandler from './handlers/GenericMetricHandler';\n\nfunction MetricsHandlerFactory(config) {\n\n config = config || {};\n let instance;\n let log = config.log;\n\n // group 1: key, [group 3: n [, group 5: type]]\n let keyRegex = /([a-zA-Z]*)(\\(([0-9]*)(\\,\\s*([a-zA-Z]*))?\\))?/;\n\n let context = this.context;\n let knownFactoryProducts = {\n BufferLevel: BufferLevel,\n DVBErrors: DVBErrors,\n HttpList: HttpList,\n PlayList: GenericMetricHandler,\n RepSwitchList: GenericMetricHandler,\n TcpList: GenericMetricHandler\n };\n\n function create(listType, reportingController) {\n var matches = listType.match(keyRegex);\n var handler;\n\n if (!matches) {\n return;\n }\n\n try {\n handler = knownFactoryProducts[matches[1]](context).create({\n eventBus: config.eventBus,\n metricsConstants: config.metricsConstants\n });\n\n handler.initialize(\n matches[1],\n reportingController,\n matches[3],\n matches[5]\n );\n } catch (e) {\n handler = null;\n\n log(`MetricsHandlerFactory: Could not create handler for type ${matches[1]} with args ${matches[3]}, ${matches[5]} (${e.message})`);\n }\n\n return handler;\n }\n\n function register(key, handler) {\n knownFactoryProducts[key] = handler;\n }\n\n function unregister(key) {\n delete knownFactoryProducts[key];\n }\n\n instance = {\n create: create,\n register: register,\n unregister: unregister\n };\n\n return instance;\n}\n\nMetricsHandlerFactory.__dashjs_factory_name = 'MetricsHandlerFactory';\nexport default dashjs.FactoryMaker.getSingletonFactory(MetricsHandlerFactory); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport HandlerHelpers from '../../utils/HandlerHelpers';\n\nfunction BufferLevelHandler(config) {\n\n config = config || {};\n let instance,\n reportingController,\n n,\n name,\n interval,\n lastReportedTime;\n\n let context = this.context;\n let handlerHelpers = HandlerHelpers(context).getInstance();\n\n let storedVOs = [];\n\n const metricsConstants = config.metricsConstants;\n\n function getLowestBufferLevelVO() {\n try {\n return Object.keys(storedVOs).map(\n key => storedVOs[key]\n ).reduce(\n (a, b) => {\n return (a.level < b.level) ? a : b;\n }\n );\n } catch (e) {\n return;\n }\n }\n\n function intervalCallback() {\n let vo = getLowestBufferLevelVO();\n\n if (vo) {\n if (lastReportedTime !== vo.t) {\n lastReportedTime = vo.t;\n reportingController.report(name, vo);\n }\n }\n }\n\n function initialize(basename, rc, n_ms) {\n if (rc) {\n // this will throw if n is invalid, to be\n // caught by the initialize caller.\n n = handlerHelpers.validateN(n_ms);\n reportingController = rc;\n name = handlerHelpers.reconstructFullMetricName(basename, n_ms);\n interval = setInterval(intervalCallback, n);\n }\n }\n\n function reset() {\n clearInterval(interval);\n interval = null;\n n = 0;\n reportingController = null;\n lastReportedTime = null;\n }\n\n function handleNewMetric(metric, vo, type) {\n if (metric === metricsConstants.BUFFER_LEVEL) {\n storedVOs[type] = vo;\n }\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n handleNewMetric: handleNewMetric\n };\n\n return instance;\n}\n\nBufferLevelHandler.__dashjs_factory_name = 'BufferLevelHandler';\nexport default dashjs.FactoryMaker.getClassFactory(BufferLevelHandler); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MetricsReportingEvents from '../../MetricsReportingEvents';\n\nfunction DVBErrorsHandler(config) {\n\n config = config || {};\n let instance,\n reportingController;\n\n let eventBus = config.eventBus;\n const metricsConstants = config.metricsConstants;\n\n function onInitialisationComplete() {\n // we only want to report this once per call to initialize\n eventBus.off(\n MetricsReportingEvents.METRICS_INITIALISATION_COMPLETE,\n onInitialisationComplete,\n this\n );\n\n // Note: A Player becoming a reporting Player is itself\n // something which is recorded by the DVBErrors metric.\n eventBus.trigger(\n MetricsReportingEvents.BECAME_REPORTING_PLAYER\n );\n }\n\n function initialize(unused, rc) {\n if (rc) {\n reportingController = rc;\n\n eventBus.on(\n MetricsReportingEvents.METRICS_INITIALISATION_COMPLETE,\n onInitialisationComplete,\n this\n );\n }\n }\n\n function reset() {\n reportingController = null;\n }\n\n function handleNewMetric(metric, vo) {\n // simply pass metric straight through\n if (metric === metricsConstants.DVB_ERRORS) {\n if (reportingController) {\n reportingController.report(metric, vo);\n }\n }\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n handleNewMetric: handleNewMetric\n };\n\n return instance;\n}\n\nexport default dashjs.FactoryMaker.getClassFactory(DVBErrorsHandler); /* jshint ignore:line */\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nfunction GenericMetricHandler() {\n\n let instance,\n metricName,\n reportingController;\n\n function initialize(name, rc) {\n metricName = name;\n reportingController = rc;\n }\n\n function reset() {\n reportingController = null;\n metricName = undefined;\n }\n\n function handleNewMetric(metric, vo) {\n // simply pass metric straight through\n if (metric === metricName) {\n if (reportingController) {\n reportingController.report(metricName, vo);\n }\n }\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n handleNewMetric: handleNewMetric\n };\n\n return instance;\n}\n\nGenericMetricHandler.__dashjs_factory_name = 'GenericMetricHandler';\nexport default dashjs.FactoryMaker.getClassFactory(GenericMetricHandler); /* jshint ignore:line */\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport HandlerHelpers from '../../utils/HandlerHelpers';\n\nfunction HttpListHandler(config) {\n\n let instance,\n reportingController,\n n,\n type,\n name,\n interval;\n\n let storedVos = [];\n\n let handlerHelpers = HandlerHelpers(this.context).getInstance();\n\n const metricsConstants = config.metricsConstants;\n\n function intervalCallback() {\n var vos = storedVos;\n\n if (vos.length) {\n if (reportingController) {\n reportingController.report(name, vos);\n }\n }\n\n storedVos = [];\n }\n\n function initialize(basename, rc, n_ms, requestType) {\n if (rc) {\n\n // this will throw if n is invalid, to be\n // caught by the initialize caller.\n n = handlerHelpers.validateN(n_ms);\n\n reportingController = rc;\n\n if (requestType && requestType.length) {\n type = requestType;\n }\n\n name = handlerHelpers.reconstructFullMetricName(\n basename,\n n_ms,\n requestType\n );\n\n interval = setInterval(intervalCallback, n);\n }\n }\n\n function reset() {\n clearInterval(interval);\n interval = null;\n n = null;\n type = null;\n storedVos = [];\n reportingController = null;\n }\n\n function handleNewMetric(metric, vo) {\n if (metric === metricsConstants.HTTP_REQUEST) {\n if (!type || (type === vo.type)) {\n storedVos.push(vo);\n }\n }\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n handleNewMetric: handleNewMetric\n };\n\n return instance;\n}\n\nHttpListHandler.__dashjs_factory_name = 'HttpListHandler';\nexport default dashjs.FactoryMaker.getClassFactory(HttpListHandler); /* jshint ignore:line */\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport DVBReporting from './reporters/DVBReporting';\n\nfunction ReportingFactory(config) {\n\n const knownReportingSchemeIdUris = {\n 'urn:dvb:dash:reporting:2014': DVBReporting\n };\n\n const context = this.context;\n const log = config.log;\n const metricsConstants = config.metricsConstants;\n\n let instance;\n\n function create(entry, rangeController) {\n let reporting;\n\n try {\n reporting = knownReportingSchemeIdUris[entry.schemeIdUri](context).create({\n metricsConstants: metricsConstants\n });\n\n reporting.initialize(entry, rangeController);\n } catch (e) {\n reporting = null;\n\n log(`ReportingFactory: could not create Reporting with schemeIdUri ${entry.schemeIdUri} (${e.message})`);\n }\n\n return reporting;\n }\n\n function register(schemeIdUri, moduleName) {\n knownReportingSchemeIdUris[schemeIdUri] = moduleName;\n }\n\n function unregister(schemeIdUri) {\n delete knownReportingSchemeIdUris[schemeIdUri];\n }\n\n instance = {\n create: create,\n register: register,\n unregister: unregister\n };\n\n return instance;\n}\n\nReportingFactory.__dashjs_factory_name = 'ReportingFactory';\nexport default dashjs.FactoryMaker.getSingletonFactory(ReportingFactory); /* jshint ignore:line */\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MetricSerialiser from '../../utils/MetricSerialiser';\nimport RNG from '../../utils/RNG';\n\nfunction DVBReporting(config) {\n let instance;\n\n let context = this.context;\n let metricSerialiser = MetricSerialiser(context).getInstance();\n let randomNumberGenerator = RNG(context).getInstance();\n\n let USE_DRAFT_DVB_SPEC = true;\n let isReportingPlayer = false;\n let reportingPlayerStatusDecided = false;\n let reportingUrl = null;\n let rangeController = null;\n let allowPendingRequestsToCompleteOnReset = true;\n let pendingRequests = [];\n\n const metricsConstants = config.metricsConstants;\n\n function doGetRequest(url, successCB, failureCB) {\n let req = new XMLHttpRequest();\n const oncomplete = function () {\n let reqIndex = pendingRequests.indexOf(req);\n\n if (reqIndex === -1) {\n return;\n } else {\n pendingRequests.splice(reqIndex, 1);\n }\n\n if ((req.status >= 200) && (req.status < 300)) {\n if (successCB) {\n successCB();\n }\n } else {\n if (failureCB) {\n failureCB();\n }\n }\n };\n\n pendingRequests.push(req);\n\n try {\n req.open('GET', url);\n req.onloadend = oncomplete;\n req.onerror = oncomplete;\n req.send();\n } catch (e) {\n req.onerror();\n }\n }\n\n function report(type, vos) {\n if (!Array.isArray(vos)) {\n vos = [vos];\n }\n\n // If the Player is not a reporting Player, then the Player shall\n // not report any errors.\n // ... In addition to any time restrictions specified by a Range\n // element within the Metrics element.\n if (isReportingPlayer && rangeController.isEnabled()) {\n\n // This reporting mechanism operates by creating one HTTP GET\n // request for every entry in the top level list of the metric.\n vos.forEach(function (vo) {\n let url = metricSerialiser.serialise(vo);\n\n // this has been proposed for errata\n if (USE_DRAFT_DVB_SPEC && (type !== metricsConstants.DVB_ERRORS)) {\n url = `metricname=${type}&${url}`;\n }\n\n // Take the value of the @reportingUrl attribute, append a\n // question mark ('?') character and then append the string\n // created in the previous step.\n url = `${reportingUrl}?${url}`;\n\n // Make an HTTP GET request to the URL contained within the\n // string created in the previous step.\n doGetRequest(url, null, function () {\n // If the Player is unable to make the report, for\n // example because the @reportingUrl is invalid, the\n // host cannot be reached, or an HTTP status code other\n // than one in the 200 series is received, the Player\n // shall cease being a reporting Player for the\n // duration of the MPD.\n isReportingPlayer = false;\n });\n });\n }\n }\n\n function initialize(entry, rc) {\n let probability;\n\n rangeController = rc;\n\n reportingUrl = entry['dvb:reportingUrl'];\n\n // If a required attribute is missing, the Reporting descriptor may\n // be ignored by the Player\n if (!reportingUrl) {\n throw new Error(\n 'required parameter missing (dvb:reportingUrl)'\n );\n }\n\n // A Player's status, as a reporting Player or not, shall remain\n // static for the duration of the MPD, regardless of MPD updates.\n // (i.e. only calling reset (or failure) changes this state)\n if (!reportingPlayerStatusDecided) {\n // NOTE: DVB spec has a typo where it incorrectly references the\n // priority attribute, which should be probability\n probability = entry['dvb:probability'] || entry['dvb:priority'] || 0;\n // If the @priority attribute is set to 1000, it shall be a reporting Player.\n // If the @priority attribute is missing, the Player shall not be a reporting Player.\n // For any other value of the @probability attribute, it shall decide at random whether to be a\n // reporting Player, such that the probability of being one is @probability/1000.\n if (probability && (probability === 1000 || ((probability / 1000) >= randomNumberGenerator.random()))) {\n isReportingPlayer = true;\n }\n\n reportingPlayerStatusDecided = true;\n }\n }\n\n function reset() {\n if (!allowPendingRequestsToCompleteOnReset) {\n pendingRequests.forEach(req => req.abort());\n pendingRequests = [];\n }\n\n reportingPlayerStatusDecided = false;\n isReportingPlayer = false;\n reportingUrl = null;\n rangeController = null;\n }\n\n instance = {\n report: report,\n initialize: initialize,\n reset: reset\n };\n\n return instance;\n}\n\nDVBReporting.__dashjs_factory_name = 'DVBReporting';\nexport default dashjs.FactoryMaker.getClassFactory(DVBReporting); /* jshint ignore:line */\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport DVBErrors from '../vo/DVBErrors';\nimport MetricsReportingEvents from '../MetricsReportingEvents';\n\nfunction DVBErrorsTranslator(config) {\n\n let instance;\n let eventBus = config.eventBus;\n let metricModel = config.metricsModel;\n let mpd;\n\n const metricsConstants = config.metricsConstants;\n //MediaPlayerEvents have been added to Events in MediaPlayer class\n const Events = config.events;\n\n function report(vo) {\n let o = new DVBErrors();\n\n if (!mpd) {\n return;\n }\n\n for (const key in vo) {\n if (vo.hasOwnProperty(key)) {\n o[key] = vo[key];\n }\n }\n\n if (!o.mpdurl) {\n o.mpdurl = mpd.originalUrl || mpd.url;\n }\n\n if (!o.terror) {\n o.terror = new Date();\n }\n\n metricModel.addDVBErrors(o);\n }\n\n function onManifestUpdate(e) {\n if (e.error) {\n return;\n }\n\n mpd = e.manifest;\n }\n\n function onServiceLocationChanged(e) {\n report({\n errorcode: DVBErrors.BASE_URL_CHANGED,\n servicelocation: e.entry\n });\n }\n\n function onBecameReporter() {\n report({\n errorcode: DVBErrors.BECAME_REPORTER\n });\n }\n\n function handleHttpMetric(vo) {\n if ((vo.responsecode === 0) || // connection failure - unknown\n (vo.responsecode >= 400) || // HTTP error status code\n (vo.responsecode < 100) || // unknown status codes\n (vo.responsecode >= 600)) { // unknown status codes\n report({\n errorcode: vo.responsecode || DVBErrors.CONNECTION_ERROR,\n url: vo.url,\n terror: vo.tresponse,\n servicelocation: vo._serviceLocation\n });\n }\n }\n\n function onMetricEvent(e) {\n switch (e.metric) {\n case metricsConstants.HTTP_REQUEST:\n handleHttpMetric(e.value);\n break;\n default:\n break;\n }\n }\n\n function onPlaybackError(e) {\n let reason = e.error ? e.error.code : 0;\n let errorcode;\n\n switch (reason) {\n case MediaError.MEDIA_ERR_NETWORK:\n errorcode = DVBErrors.CONNECTION_ERROR;\n break;\n case MediaError.MEDIA_ERR_DECODE:\n errorcode = DVBErrors.CORRUPT_MEDIA_OTHER;\n break;\n default:\n return;\n }\n\n report({\n errorcode: errorcode\n });\n }\n\n function initialise() {\n eventBus.on(Events.MANIFEST_UPDATED, onManifestUpdate, instance);\n eventBus.on(\n Events.SERVICE_LOCATION_BLACKLIST_CHANGED,\n onServiceLocationChanged,\n instance\n );\n eventBus.on(Events.METRIC_ADDED, onMetricEvent, instance);\n eventBus.on(Events.METRIC_UPDATED, onMetricEvent, instance);\n eventBus.on(Events.PLAYBACK_ERROR, onPlaybackError, instance);\n eventBus.on(\n MetricsReportingEvents.BECAME_REPORTING_PLAYER,\n onBecameReporter,\n instance\n );\n }\n\n function reset() {\n eventBus.off(Events.MANIFEST_UPDATED, onManifestUpdate, instance);\n eventBus.off(\n Events.SERVICE_LOCATION_BLACKLIST_CHANGED,\n onServiceLocationChanged,\n instance\n );\n eventBus.off(Events.METRIC_ADDED, onMetricEvent, instance);\n eventBus.off(Events.METRIC_UPDATED, onMetricEvent, instance);\n eventBus.off(Events.PLAYBACK_ERROR, onPlaybackError, instance);\n eventBus.off(\n MetricsReportingEvents.BECAME_REPORTING_PLAYER,\n onBecameReporter,\n instance\n );\n }\n\n instance = {\n initialise: initialise,\n reset: reset\n };\n\n initialise();\n\n return instance;\n}\n\nDVBErrorsTranslator.__dashjs_factory_name = 'DVBErrorsTranslator';\nexport default dashjs.FactoryMaker.getSingletonFactory(DVBErrorsTranslator); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport HandlerHelpers from '../../utils/HandlerHelpers';\n\nfunction HttpListHandler(config) {\n\n config = config || {};\n let instance,\n reportingController,\n n,\n type,\n name,\n interval;\n\n let storedVos = [];\n\n let handlerHelpers = HandlerHelpers(this.context).getInstance();\n\n const metricsConstants = config.metricsConstants;\n\n function intervalCallback() {\n var vos = storedVos;\n\n if (vos.length) {\n if (reportingController) {\n reportingController.report(name, vos);\n }\n }\n\n storedVos = [];\n }\n\n function initialize(basename, rc, n_ms, requestType) {\n if (rc) {\n\n // this will throw if n is invalid, to be\n // caught by the initialize caller.\n n = handlerHelpers.validateN(n_ms);\n\n reportingController = rc;\n\n if (requestType && requestType.length) {\n type = requestType;\n }\n\n name = handlerHelpers.reconstructFullMetricName(\n basename,\n n_ms,\n requestType\n );\n\n interval = setInterval(intervalCallback, n);\n }\n }\n\n function reset() {\n clearInterval(interval);\n interval = null;\n n = null;\n type = null;\n storedVos = [];\n reportingController = null;\n }\n\n function handleNewMetric(metric, vo) {\n if (metric === metricsConstants.HTTP_REQUEST) {\n if (!type || (type === vo.type)) {\n storedVos.push(vo);\n }\n }\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n handleNewMetric: handleNewMetric\n };\n\n return instance;\n}\n\nHttpListHandler.__dashjs_factory_name = 'HttpListHandler';\nexport default dashjs.FactoryMaker.getClassFactory(HttpListHandler); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport DVBReporting from './reporters/DVBReporting';\n\nfunction ReportingFactory(config) {\n config = config || {};\n\n const knownReportingSchemeIdUris = {\n 'urn:dvb:dash:reporting:2014': DVBReporting\n };\n\n const context = this.context;\n const log = config.log;\n const metricsConstants = config.metricsConstants;\n\n let instance;\n\n function create(entry, rangeController) {\n let reporting;\n\n try {\n reporting = knownReportingSchemeIdUris[entry.schemeIdUri](context).create({\n metricsConstants: metricsConstants\n });\n\n reporting.initialize(entry, rangeController);\n } catch (e) {\n reporting = null;\n\n log(`ReportingFactory: could not create Reporting with schemeIdUri ${entry.schemeIdUri} (${e.message})`);\n }\n\n return reporting;\n }\n\n function register(schemeIdUri, moduleName) {\n knownReportingSchemeIdUris[schemeIdUri] = moduleName;\n }\n\n function unregister(schemeIdUri) {\n delete knownReportingSchemeIdUris[schemeIdUri];\n }\n\n instance = {\n create: create,\n register: register,\n unregister: unregister\n };\n\n return instance;\n}\n\nReportingFactory.__dashjs_factory_name = 'ReportingFactory';\nexport default dashjs.FactoryMaker.getSingletonFactory(ReportingFactory); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MetricSerialiser from '../../utils/MetricSerialiser';\nimport RNG from '../../utils/RNG';\n\nfunction DVBReporting(config) {\n config = config || {};\n let instance;\n\n let context = this.context;\n let metricSerialiser = MetricSerialiser(context).getInstance();\n let randomNumberGenerator = RNG(context).getInstance();\n\n let USE_DRAFT_DVB_SPEC = true;\n let isReportingPlayer = false;\n let reportingPlayerStatusDecided = false;\n let reportingUrl = null;\n let rangeController = null;\n let allowPendingRequestsToCompleteOnReset = true;\n let pendingRequests = [];\n\n const metricsConstants = config.metricsConstants;\n\n function doGetRequest(url, successCB, failureCB) {\n let req = new XMLHttpRequest();\n const oncomplete = function () {\n let reqIndex = pendingRequests.indexOf(req);\n\n if (reqIndex === -1) {\n return;\n } else {\n pendingRequests.splice(reqIndex, 1);\n }\n\n if ((req.status >= 200) && (req.status < 300)) {\n if (successCB) {\n successCB();\n }\n } else {\n if (failureCB) {\n failureCB();\n }\n }\n };\n\n pendingRequests.push(req);\n\n try {\n req.open('GET', url);\n req.onloadend = oncomplete;\n req.onerror = oncomplete;\n req.send();\n } catch (e) {\n req.onerror();\n }\n }\n\n function report(type, vos) {\n if (!Array.isArray(vos)) {\n vos = [vos];\n }\n\n // If the Player is not a reporting Player, then the Player shall\n // not report any errors.\n // ... In addition to any time restrictions specified by a Range\n // element within the Metrics element.\n if (isReportingPlayer && rangeController.isEnabled()) {\n\n // This reporting mechanism operates by creating one HTTP GET\n // request for every entry in the top level list of the metric.\n vos.forEach(function (vo) {\n let url = metricSerialiser.serialise(vo);\n\n // this has been proposed for errata\n if (USE_DRAFT_DVB_SPEC && (type !== metricsConstants.DVB_ERRORS)) {\n url = `metricname=${type}&${url}`;\n }\n\n // Take the value of the @reportingUrl attribute, append a\n // question mark ('?') character and then append the string\n // created in the previous step.\n url = `${reportingUrl}?${url}`;\n\n // Make an HTTP GET request to the URL contained within the\n // string created in the previous step.\n doGetRequest(url, null, function () {\n // If the Player is unable to make the report, for\n // example because the @reportingUrl is invalid, the\n // host cannot be reached, or an HTTP status code other\n // than one in the 200 series is received, the Player\n // shall cease being a reporting Player for the\n // duration of the MPD.\n isReportingPlayer = false;\n });\n });\n }\n }\n\n function initialize(entry, rc) {\n let probability;\n\n rangeController = rc;\n\n reportingUrl = entry['dvb:reportingUrl'];\n\n // If a required attribute is missing, the Reporting descriptor may\n // be ignored by the Player\n if (!reportingUrl) {\n throw new Error(\n 'required parameter missing (dvb:reportingUrl)'\n );\n }\n\n // A Player's status, as a reporting Player or not, shall remain\n // static for the duration of the MPD, regardless of MPD updates.\n // (i.e. only calling reset (or failure) changes this state)\n if (!reportingPlayerStatusDecided) {\n // NOTE: DVB spec has a typo where it incorrectly references the\n // priority attribute, which should be probability\n probability = entry['dvb:probability'] || entry['dvb:priority'] || 0;\n // If the @priority attribute is set to 1000, it shall be a reporting Player.\n // If the @priority attribute is missing, the Player shall not be a reporting Player.\n // For any other value of the @probability attribute, it shall decide at random whether to be a\n // reporting Player, such that the probability of being one is @probability/1000.\n if (probability && (probability === 1000 || ((probability / 1000) >= randomNumberGenerator.random()))) {\n isReportingPlayer = true;\n }\n\n reportingPlayerStatusDecided = true;\n }\n }\n\n function reset() {\n if (!allowPendingRequestsToCompleteOnReset) {\n pendingRequests.forEach(req => req.abort());\n pendingRequests = [];\n }\n\n reportingPlayerStatusDecided = false;\n isReportingPlayer = false;\n reportingUrl = null;\n rangeController = null;\n }\n\n instance = {\n report: report,\n initialize: initialize,\n reset: reset\n };\n\n return instance;\n}\n\nDVBReporting.__dashjs_factory_name = 'DVBReporting';\nexport default dashjs.FactoryMaker.getClassFactory(DVBReporting); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport DVBErrors from '../vo/DVBErrors';\nimport MetricsReportingEvents from '../MetricsReportingEvents';\n\nfunction DVBErrorsTranslator(config) {\n\n config = config || {};\n let instance;\n let eventBus = config.eventBus;\n let metricModel = config.metricsModel;\n let mpd;\n\n const metricsConstants = config.metricsConstants;\n //MediaPlayerEvents have been added to Events in MediaPlayer class\n const Events = config.events;\n\n function report(vo) {\n let o = new DVBErrors();\n\n if (!mpd) {\n return;\n }\n\n for (const key in vo) {\n if (vo.hasOwnProperty(key)) {\n o[key] = vo[key];\n }\n }\n\n if (!o.mpdurl) {\n o.mpdurl = mpd.originalUrl || mpd.url;\n }\n\n if (!o.terror) {\n o.terror = new Date();\n }\n\n metricModel.addDVBErrors(o);\n }\n\n function onManifestUpdate(e) {\n if (e.error) {\n return;\n }\n\n mpd = e.manifest;\n }\n\n function onServiceLocationChanged(e) {\n report({\n errorcode: DVBErrors.BASE_URL_CHANGED,\n servicelocation: e.entry\n });\n }\n\n function onBecameReporter() {\n report({\n errorcode: DVBErrors.BECAME_REPORTER\n });\n }\n\n function handleHttpMetric(vo) {\n if ((vo.responsecode === 0) || // connection failure - unknown\n (vo.responsecode >= 400) || // HTTP error status code\n (vo.responsecode < 100) || // unknown status codes\n (vo.responsecode >= 600)) { // unknown status codes\n report({\n errorcode: vo.responsecode || DVBErrors.CONNECTION_ERROR,\n url: vo.url,\n terror: vo.tresponse,\n servicelocation: vo._serviceLocation\n });\n }\n }\n\n function onMetricEvent(e) {\n switch (e.metric) {\n case metricsConstants.HTTP_REQUEST:\n handleHttpMetric(e.value);\n break;\n default:\n break;\n }\n }\n\n function onPlaybackError(e) {\n let reason = e.error ? e.error.code : 0;\n let errorcode;\n\n switch (reason) {\n case MediaError.MEDIA_ERR_NETWORK:\n errorcode = DVBErrors.CONNECTION_ERROR;\n break;\n case MediaError.MEDIA_ERR_DECODE:\n errorcode = DVBErrors.CORRUPT_MEDIA_OTHER;\n break;\n default:\n return;\n }\n\n report({\n errorcode: errorcode\n });\n }\n\n function initialise() {\n eventBus.on(Events.MANIFEST_UPDATED, onManifestUpdate, instance);\n eventBus.on(\n Events.SERVICE_LOCATION_BLACKLIST_CHANGED,\n onServiceLocationChanged,\n instance\n );\n eventBus.on(Events.METRIC_ADDED, onMetricEvent, instance);\n eventBus.on(Events.METRIC_UPDATED, onMetricEvent, instance);\n eventBus.on(Events.PLAYBACK_ERROR, onPlaybackError, instance);\n eventBus.on(\n MetricsReportingEvents.BECAME_REPORTING_PLAYER,\n onBecameReporter,\n instance\n );\n }\n\n function reset() {\n eventBus.off(Events.MANIFEST_UPDATED, onManifestUpdate, instance);\n eventBus.off(\n Events.SERVICE_LOCATION_BLACKLIST_CHANGED,\n onServiceLocationChanged,\n instance\n );\n eventBus.off(Events.METRIC_ADDED, onMetricEvent, instance);\n eventBus.off(Events.METRIC_UPDATED, onMetricEvent, instance);\n eventBus.off(Events.PLAYBACK_ERROR, onPlaybackError, instance);\n eventBus.off(\n MetricsReportingEvents.BECAME_REPORTING_PLAYER,\n onBecameReporter,\n instance\n );\n }\n\n instance = {\n initialise: initialise,\n reset: reset\n };\n\n initialise();\n\n return instance;\n}\n\nDVBErrorsTranslator.__dashjs_factory_name = 'DVBErrorsTranslator';\nexport default dashjs.FactoryMaker.getSingletonFactory(DVBErrorsTranslator); /* jshint ignore:line */\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nfunction HandlerHelpers() {\n return {\n reconstructFullMetricName: function (key, n, type) {\n let mn = key;\n\n if (n) {\n mn += '(' + n;\n\n if (type && type.length) {\n mn += ',' + type;\n }\n\n mn += ')';\n }\n\n return mn;\n },\n\n validateN: function (n_ms) {\n if (!n_ms) {\n throw new Error('missing n');\n }\n\n if (isNaN(n_ms)) {\n throw new Error('n is NaN');\n }\n\n // n is a positive integer is defined to refer to the metric\n // in which the buffer level is recorded every n ms.\n if (n_ms < 0) {\n throw new Error('n must be positive');\n }\n\n return n_ms;\n }\n };\n}\n\nHandlerHelpers.__dashjs_factory_name = 'HandlerHelpers';\nexport default dashjs.FactoryMaker.getSingletonFactory(HandlerHelpers); /* jshint ignore:line */\n", - "import Metrics from '../vo/Metrics';\nimport Range from '../vo/Range';\nimport Reporting from '../vo/Reporting';\n\nfunction ManifestParsing (config) {\n let instance;\n let dashManifestModel = config.dashManifestModel;\n const constants = config.constants;\n\n function getMetricsRangeStartTime(manifest, dynamic, range) {\n var mpd = dashManifestModel.getMpd(manifest);\n var voPeriods;\n var presentationStartTime = 0;\n var reportingStartTime;\n\n if (dynamic) {\n // For services with MPD@type='dynamic', the start time is\n // indicated in wall clock time by adding the value of this\n // attribute to the value of the MPD@availabilityStartTime\n // attribute.\n presentationStartTime = mpd.availabilityStartTime.getTime() / 1000;\n } else {\n // For services with MPD@type='static', the start time is indicated\n // in Media Presentation time and is relative to the PeriodStart\n // time of the first Period in this MPD.\n voPeriods = this.getRegularPeriods(mpd);\n\n if (voPeriods.length) {\n presentationStartTime = voPeriods[0].start;\n }\n }\n\n // When not present, DASH Metrics collection is\n // requested from the beginning of content\n // consumption.\n reportingStartTime = presentationStartTime;\n\n if (range && range.hasOwnProperty(constants.START_TIME)) {\n reportingStartTime += range.starttime;\n }\n\n return reportingStartTime;\n }\n\n function getMetrics(manifest) {\n var metrics = [];\n\n if (manifest.Metrics_asArray) {\n manifest.Metrics_asArray.forEach(metric => {\n var metricEntry = new Metrics();\n var isDynamic = dashManifestModel.getIsDynamic(manifest);\n\n if (metric.hasOwnProperty('metrics')) {\n metricEntry.metrics = metric.metrics;\n } else {\n //console.log(\"Invalid Metrics. metrics must be set. Ignoring.\");\n return;\n }\n\n if (metric.Range_asArray) {\n metric.Range_asArray.forEach(range => {\n var rangeEntry = new Range();\n\n rangeEntry.starttime =\n getMetricsRangeStartTime(manifest, isDynamic, range);\n\n if (range.hasOwnProperty('duration')) {\n rangeEntry.duration = range.duration;\n } else {\n // if not present, the value is identical to the\n // Media Presentation duration.\n rangeEntry.duration = dashManifestModel.getDuration(manifest);\n }\n\n rangeEntry._useWallClockTime = isDynamic;\n\n metricEntry.Range.push(rangeEntry);\n });\n }\n\n if (metric.Reporting_asArray) {\n metric.Reporting_asArray.forEach(reporting => {\n var reportingEntry = new Reporting();\n\n if (reporting.hasOwnProperty(constants.SCHEME_ID_URI)) {\n reportingEntry.schemeIdUri = reporting.schemeIdUri;\n } else {\n // Invalid Reporting. schemeIdUri must be set. Ignore.\n return;\n }\n\n for (const prop in reporting) {\n if (reporting.hasOwnProperty(prop)) {\n reportingEntry[prop] = reporting[prop];\n }\n }\n\n metricEntry.Reporting.push(reportingEntry);\n });\n } else {\n // Invalid Metrics. At least one reporting must be present. Ignore\n return;\n }\n\n metrics.push(metricEntry);\n });\n }\n\n return metrics;\n }\n\n instance = {\n getMetrics: getMetrics\n };\n\n return instance;\n}\n\nManifestParsing.__dashjs_factory_name = 'ManifestParsing';\nexport default dashjs.FactoryMaker.getSingletonFactory(ManifestParsing); /* jshint ignore:line */", + "import Metrics from '../vo/Metrics';\nimport Range from '../vo/Range';\nimport Reporting from '../vo/Reporting';\n\nfunction ManifestParsing (config) {\n config = config || {};\n let instance;\n let dashManifestModel = config.dashManifestModel;\n const constants = config.constants;\n\n function getMetricsRangeStartTime(manifest, dynamic, range) {\n var mpd = dashManifestModel.getMpd(manifest);\n var voPeriods;\n var presentationStartTime = 0;\n var reportingStartTime;\n\n if (dynamic) {\n // For services with MPD@type='dynamic', the start time is\n // indicated in wall clock time by adding the value of this\n // attribute to the value of the MPD@availabilityStartTime\n // attribute.\n presentationStartTime = mpd.availabilityStartTime.getTime() / 1000;\n } else {\n // For services with MPD@type='static', the start time is indicated\n // in Media Presentation time and is relative to the PeriodStart\n // time of the first Period in this MPD.\n voPeriods = this.getRegularPeriods(mpd);\n\n if (voPeriods.length) {\n presentationStartTime = voPeriods[0].start;\n }\n }\n\n // When not present, DASH Metrics collection is\n // requested from the beginning of content\n // consumption.\n reportingStartTime = presentationStartTime;\n\n if (range && range.hasOwnProperty(constants.START_TIME)) {\n reportingStartTime += range.starttime;\n }\n\n return reportingStartTime;\n }\n\n function getMetrics(manifest) {\n var metrics = [];\n\n if (manifest.Metrics_asArray) {\n manifest.Metrics_asArray.forEach(metric => {\n var metricEntry = new Metrics();\n var isDynamic = dashManifestModel.getIsDynamic(manifest);\n\n if (metric.hasOwnProperty('metrics')) {\n metricEntry.metrics = metric.metrics;\n } else {\n //console.log(\"Invalid Metrics. metrics must be set. Ignoring.\");\n return;\n }\n\n if (metric.Range_asArray) {\n metric.Range_asArray.forEach(range => {\n var rangeEntry = new Range();\n\n rangeEntry.starttime =\n getMetricsRangeStartTime(manifest, isDynamic, range);\n\n if (range.hasOwnProperty('duration')) {\n rangeEntry.duration = range.duration;\n } else {\n // if not present, the value is identical to the\n // Media Presentation duration.\n rangeEntry.duration = dashManifestModel.getDuration(manifest);\n }\n\n rangeEntry._useWallClockTime = isDynamic;\n\n metricEntry.Range.push(rangeEntry);\n });\n }\n\n if (metric.Reporting_asArray) {\n metric.Reporting_asArray.forEach(reporting => {\n var reportingEntry = new Reporting();\n\n if (reporting.hasOwnProperty(constants.SCHEME_ID_URI)) {\n reportingEntry.schemeIdUri = reporting.schemeIdUri;\n } else {\n // Invalid Reporting. schemeIdUri must be set. Ignore.\n return;\n }\n\n for (const prop in reporting) {\n if (reporting.hasOwnProperty(prop)) {\n reportingEntry[prop] = reporting[prop];\n }\n }\n\n metricEntry.Reporting.push(reportingEntry);\n });\n } else {\n // Invalid Metrics. At least one reporting must be present. Ignore\n return;\n }\n\n metrics.push(metricEntry);\n });\n }\n\n return metrics;\n }\n\n instance = {\n getMetrics: getMetrics\n };\n\n return instance;\n}\n\nManifestParsing.__dashjs_factory_name = 'ManifestParsing';\nexport default dashjs.FactoryMaker.getSingletonFactory(ManifestParsing); /* jshint ignore:line */", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nfunction MetricSerialiser() {\n\n // For each entry in the top level list within the metric (in the case\n // of the DVBErrors metric each entry corresponds to an \"error event\"\n // described in clause 10.8.4) the Player shall:\n function serialise(metric) {\n let pairs = [];\n let obj = [];\n let key,\n value;\n\n // Take each (key, value) pair from the metric entry and create a\n // string consisting of the name of the key, followed by an equals\n // ('=') character, followed by the string representation of the\n // value. The string representation of the value is created based\n // on the type of the value following the instructions in Table 22.\n for (key in metric) {\n if (metric.hasOwnProperty(key) && (key.indexOf('_') !== 0)) {\n value = metric[key];\n\n // we want to ensure that keys still end up in the report\n // even if there is no value\n if ((value === undefined) || (value === null)) {\n value = '';\n }\n\n // DVB A168 10.12.4 Table 22\n if (Array.isArray(value)) {\n // if trace or similar is null, do not include in output\n if (!value.length) {\n continue;\n }\n\n obj = [];\n\n value.forEach(function (v) {\n let isBuiltIn = Object.prototype.toString.call(v).slice(8, -1) !== 'Object';\n\n obj.push(isBuiltIn ? v : serialise(v));\n });\n\n value = obj.map(encodeURIComponent).join(',');\n } else if (typeof value === 'string') {\n value = encodeURIComponent(value);\n } else if (value instanceof Date) {\n value = value.toISOString();\n } else if (typeof value === 'number') {\n value = Math.round(value);\n }\n\n pairs.push(key + '=' + value);\n }\n }\n\n // Concatenate the strings created in the previous step with an\n // ampersand ('&') character between each one.\n return pairs.join('&');\n }\n\n return {\n serialise: serialise\n };\n}\n\nMetricSerialiser.__dashjs_factory_name = 'MetricSerialiser';\nexport default dashjs.FactoryMaker.getSingletonFactory(MetricSerialiser); /* jshint ignore:line */\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nfunction RNG() {\n\n // check whether secure random numbers are available. if not, revert to\n // using Math.random\n let crypto = window.crypto || window.msCrypto;\n\n // could just as easily use any other array type by changing line below\n let ArrayType = Uint32Array;\n let MAX_VALUE = Math.pow(2, ArrayType.BYTES_PER_ELEMENT * 8) - 1;\n\n // currently there is only one client for this code, and that only uses\n // a single random number per initialisation. may want to increase this\n // number if more consumers in the future\n let NUM_RANDOM_NUMBERS = 10;\n\n let randomNumbers,\n index,\n instance;\n\n function initialise() {\n if (crypto) {\n if (!randomNumbers) {\n randomNumbers = new ArrayType(NUM_RANDOM_NUMBERS);\n }\n crypto.getRandomValues(randomNumbers);\n index = 0;\n }\n }\n\n function rand(min, max) {\n let r;\n\n if (!min) {\n min = 0;\n }\n\n if (!max) {\n max = 1;\n }\n\n if (crypto) {\n if (index === randomNumbers.length) {\n initialise();\n }\n\n r = randomNumbers[index] / MAX_VALUE;\n index += 1;\n } else {\n r = Math.random();\n }\n\n return (r * (max - min)) + min;\n }\n\n instance = {\n random: rand\n };\n\n initialise();\n\n return instance;\n}\n\nRNG.__dashjs_factory_name = 'RNG';\nexport default dashjs.FactoryMaker.getSingletonFactory(RNG); /* jshint ignore:line */\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass DVBErrors {\n constructor() {\n this.mpdurl = null;\n // String - Absolute URL from which the MPD was originally\n // retrieved (MPD updates will not change this value).\n\n this.errorcode = null;\n // String - The value of errorcode depends upon the type\n // of error being reported. For an error listed in the\n // ErrorType column below the value is as described in the\n // Value column.\n //\n // ErrorType Value\n // --------- -----\n // HTTP error status code HTTP status code\n // Unknown HTTP status code HTTP status code\n // SSL connection failed \"SSL\" followed by SSL alert value\n // DNS resolution failed \"C00\"\n // Host unreachable \"C01\"\n // Connection refused \"C02\"\n // Connection error – Not otherwise specified \"C03\"\n // Corrupt media – ISO BMFF container cannot be parsed \"M00\"\n // Corrupt media – Not otherwise specified \"M01\"\n // Changing Base URL in use due to errors \"F00\"\n // Becoming an error reporting Player \"S00\"\n\n this.terror = null;\n // Real-Time - Date and time at which error occurred in UTC,\n // formatted as a combined date and time according to ISO 8601.\n\n this.url = null;\n // String - Absolute URL from which data was being requested\n // when this error occurred. If the error report is in relation\n // to corrupt media or changing BaseURL, this may be a null\n // string if the URL from which the media was obtained or\n // which led to the change of BaseURL is no longer known.\n\n this.ipaddress = null;\n // String - IP Address which the host name in \"url\" resolved to.\n // If the error report is in relation to corrupt media or\n // changing BaseURL, this may be a null string if the URL\n // from which the media was obtained or which led to the\n // change of BaseURL is no longer known.\n\n this.servicelocation = null;\n // String - The value of the serviceLocation field in the\n // BaseURL being used. In the event of this report indicating\n // a change of BaseURL this is the value from the BaseURL\n // being moved from.\n }\n}\n\nDVBErrors.SSL_CONNECTION_FAILED_PREFIX = 'SSL';\nDVBErrors.DNS_RESOLUTION_FAILED = 'C00';\nDVBErrors.HOST_UNREACHABLE = 'C01';\nDVBErrors.CONNECTION_REFUSED = 'C02';\nDVBErrors.CONNECTION_ERROR = 'C03';\nDVBErrors.CORRUPT_MEDIA_ISOBMFF = 'M00';\nDVBErrors.CORRUPT_MEDIA_OTHER = 'M01';\nDVBErrors.BASE_URL_CHANGED = 'F00';\nDVBErrors.BECAME_REPORTER = 'S00';\n\nexport default DVBErrors;\n", @@ -378,25 +381,26 @@ "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass Range {\n constructor() {\n\n // as defined in ISO23009-1\n this.starttime = 0;\n this.duration = Infinity;\n\n // for internal use\n this._useWallClockTime = false;\n }\n}\n\nexport default Range;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass Reporting {\n constructor() {\n // Reporting is a DescriptorType and doesn't have any additional fields\n this.schemeIdUri = '';\n this.value = '';\n }\n}\n\nexport default Reporting;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport ObjectUtils from '../utils/ObjectUtils';\nimport FactoryMaker from '../../core/FactoryMaker';\n\nconst DEFAULT_INDEX = NaN;\n\nclass Node {\n constructor(_baseUrls, _selectedIdx) {\n this.data = {\n baseUrls: _baseUrls || null,\n selectedIdx: _selectedIdx || DEFAULT_INDEX\n };\n this.children = [];\n }\n}\n\nfunction BaseURLTreeModel() {\n\n let instance;\n let root;\n let dashManifestModel;\n\n const context = this.context;\n const objectUtils = ObjectUtils(context).getInstance();\n\n function setup() {\n reset();\n }\n\n function setConfig(config) {\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n }\n\n function updateChildData(node, index, element) {\n let baseUrls = dashManifestModel.getBaseURLsFromElement(element);\n\n if (!node[index]) {\n node[index] = new Node(baseUrls);\n } else {\n if (!objectUtils.areEqual(baseUrls, node[index].data.baseUrls)) {\n node[index].data.baseUrls = baseUrls;\n node[index].data.selectedIdx = DEFAULT_INDEX;\n }\n }\n }\n\n function getBaseURLCollectionsFromManifest(manifest) {\n let baseUrls = dashManifestModel.getBaseURLsFromElement(manifest);\n\n if (!objectUtils.areEqual(baseUrls, root.data.baseUrls)) {\n root.data.baseUrls = baseUrls;\n root.data.selectedIdx = DEFAULT_INDEX;\n }\n\n if (manifest.Period_asArray) {\n manifest.Period_asArray.forEach((p, pi) => {\n updateChildData(root.children, pi, p);\n\n if (p.AdaptationSet_asArray) {\n p.AdaptationSet_asArray.forEach((a, ai) => {\n updateChildData(root.children[pi].children, ai, a);\n\n if (a.Representation_asArray) {\n a.Representation_asArray.sort(\n dashManifestModel.getRepresentationSortFunction()\n ).forEach((r, ri) => {\n updateChildData(\n root.children[pi].children[ai].children,\n ri,\n r\n );\n });\n }\n });\n }\n });\n }\n }\n\n function walk(callback, node) {\n let target = node || root;\n\n callback(target.data);\n\n if (target.children) {\n target.children.forEach(child => walk(callback, child));\n }\n }\n\n function invalidateSelectedIndexes(serviceLocation) {\n walk((data) => {\n if (!isNaN(data.selectedIdx)) {\n if (serviceLocation === data.baseUrls[data.selectedIdx].serviceLocation) {\n data.selectedIdx = DEFAULT_INDEX;\n }\n }\n });\n }\n\n function update(manifest) {\n getBaseURLCollectionsFromManifest(manifest);\n }\n\n function reset() {\n root = new Node();\n }\n\n function getForPath(path) {\n let target = root;\n let nodes = [target.data];\n\n path.forEach(p => {\n target = target.children[p];\n\n if (target) {\n nodes.push(target.data);\n }\n });\n\n return nodes.filter(n => n.baseUrls.length);\n }\n\n instance = {\n reset: reset,\n update: update,\n getForPath: getForPath,\n invalidateSelectedIndexes: invalidateSelectedIndexes,\n setConfig: setConfig\n };\n\n setup();\n\n return instance;\n}\n\nBaseURLTreeModel.__dashjs_factory_name = 'BaseURLTreeModel';\nexport default FactoryMaker.getClassFactory(BaseURLTreeModel);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport FragmentRequest from '../vo/FragmentRequest';\nimport Debug from '../../core/Debug';\n\nconst FRAGMENT_MODEL_LOADING = 'loading';\nconst FRAGMENT_MODEL_EXECUTED = 'executed';\nconst FRAGMENT_MODEL_CANCELED = 'canceled';\nconst FRAGMENT_MODEL_FAILED = 'failed';\n\nfunction FragmentModel(config) {\n\n const context = this.context;\n const log = Debug(context).getInstance().log;\n const eventBus = EventBus(context).getInstance();\n const metricsModel = config.metricsModel;\n const fragmentLoader = config.fragmentLoader;\n\n let instance,\n streamProcessor,\n executedRequests,\n loadingRequests;\n\n function setup() {\n resetInitialSettings();\n eventBus.on(Events.LOADING_COMPLETED, onLoadingCompleted, instance);\n eventBus.on(Events.LOADING_ABANDONED, onLoadingAborted, instance);\n }\n\n function setStreamProcessor(value) {\n streamProcessor = value;\n }\n\n function getStreamProcessor() {\n return streamProcessor;\n }\n\n function isFragmentLoaded(request) {\n const isEqualComplete = function (req1, req2) {\n return ((req1.action === FragmentRequest.ACTION_COMPLETE) && (req1.action === req2.action));\n };\n\n const isEqualMedia = function (req1, req2) {\n return !isNaN(req1.index) && (req1.startTime === req2.startTime) && (req1.adaptationIndex === req2.adaptationIndex);\n };\n\n const isEqualInit = function (req1, req2) {\n return isNaN(req1.index) && isNaN(req2.index) && (req1.quality === req2.quality);\n };\n\n const check = function (requests) {\n let isLoaded = false;\n requests.some(req => {\n if (isEqualMedia(request, req) || isEqualInit(request, req) || isEqualComplete(request, req)) {\n isLoaded = true;\n return isLoaded;\n }\n });\n return isLoaded;\n };\n\n if (!request) {\n return false;\n }\n\n return check(executedRequests);\n }\n\n function isFragmentLoadedOrPending(request) {\n let isLoaded = false;\n let i = 0;\n let req;\n\n // First, check if the fragment has already been loaded\n isLoaded = isFragmentLoaded(request);\n\n // Then, check if the fragment is about to be loeaded\n if (!isLoaded) {\n for (i = 0; i < loadingRequests.length; i++) {\n req = loadingRequests[i];\n if ((request.url === req.url) && (request.startTime === req.startTime)) {\n isLoaded = true;\n }\n }\n }\n\n return isLoaded;\n }\n\n /**\n *\n * Gets an array of {@link FragmentRequest} objects\n *\n * @param {Object} filter The object with properties by which the method filters the requests to be returned.\n * the only mandatory property is state, which must be a value from\n * other properties should match the properties of {@link FragmentRequest}. E.g.:\n * getRequests({state: FragmentModel.FRAGMENT_MODEL_EXECUTED, quality: 0}) - returns\n * all the requests from executedRequests array where requests.quality = filter.quality\n *\n * @returns {Array}\n * @memberof FragmentModel#\n */\n function getRequests(filter) {\n\n const states = filter ? filter.state instanceof Array ? filter.state : [filter.state] : [];\n\n let filteredRequests = [];\n states.forEach(state => {\n const requests = getRequestsForState(state);\n filteredRequests = filteredRequests.concat(filterRequests(requests, filter));\n });\n\n return filteredRequests;\n }\n\n function removeExecutedRequestsBeforeTime(time) {\n executedRequests = executedRequests.filter(req => isNaN(req.startTime) || req.startTime >= time);\n }\n\n function abortRequests() {\n fragmentLoader.abort();\n loadingRequests = [];\n }\n\n function executeRequest(request) {\n\n switch (request.action) {\n case FragmentRequest.ACTION_COMPLETE:\n executedRequests.push(request);\n addSchedulingInfoMetrics(request, FRAGMENT_MODEL_EXECUTED);\n eventBus.trigger(Events.STREAM_COMPLETED, {\n request: request,\n fragmentModel: this\n });\n break;\n case FragmentRequest.ACTION_DOWNLOAD:\n addSchedulingInfoMetrics(request, FRAGMENT_MODEL_LOADING);\n loadingRequests.push(request);\n loadCurrentFragment(request);\n break;\n default:\n log('Unknown request action.');\n }\n }\n\n function loadCurrentFragment(request) {\n eventBus.trigger(Events.FRAGMENT_LOADING_STARTED, {\n sender: instance,\n request: request\n });\n fragmentLoader.load(request);\n }\n\n function getRequestForTime(arr, time, threshold) {\n // loop through the executed requests and pick the one for which the playback interval matches the given time\n const lastIdx = arr.length - 1;\n for (let i = lastIdx; i >= 0; i--) {\n const req = arr[i];\n const start = req.startTime;\n const end = start + req.duration;\n threshold = threshold !== undefined ? threshold : (req.duration / 2);\n if ((!isNaN(start) && !isNaN(end) && ((time + threshold) >= start) && ((time - threshold) < end)) || (isNaN(start) && isNaN(time))) {\n return req;\n }\n }\n return null;\n }\n\n function filterRequests(arr, filter) {\n // for time use a specific filtration function\n if (filter.hasOwnProperty('time')) {\n return [getRequestForTime(arr, filter.time, filter.threshold)];\n }\n\n return arr.filter(request => {\n for (const prop in filter) {\n if (prop === 'state') continue;\n if (filter.hasOwnProperty(prop) && request[prop] != filter[prop]) return false;\n }\n\n return true;\n });\n }\n\n function getRequestsForState(state) {\n\n let requests;\n switch (state) {\n case FRAGMENT_MODEL_LOADING:\n requests = loadingRequests;\n break;\n case FRAGMENT_MODEL_EXECUTED:\n requests = executedRequests;\n break;\n default:\n requests = [];\n }\n return requests;\n }\n\n function addSchedulingInfoMetrics(request, state) {\n\n metricsModel.addSchedulingInfo(\n request.mediaType,\n new Date(),\n request.type,\n request.startTime,\n request.availabilityStartTime,\n request.duration,\n request.quality,\n request.range,\n state);\n\n metricsModel.addRequestsQueue(request.mediaType, loadingRequests, executedRequests);\n }\n\n function onLoadingCompleted(e) {\n if (e.sender !== fragmentLoader) return;\n\n loadingRequests.splice(loadingRequests.indexOf(e.request), 1);\n\n if (e.response && !e.error) {\n executedRequests.push(e.request);\n }\n\n addSchedulingInfoMetrics(e.request, e.error ? FRAGMENT_MODEL_FAILED : FRAGMENT_MODEL_EXECUTED);\n\n eventBus.trigger(Events.FRAGMENT_LOADING_COMPLETED, {\n request: e.request,\n response: e.response,\n error: e.error,\n sender: this\n });\n }\n\n function onLoadingAborted(e) {\n if (e.sender !== fragmentLoader) return;\n\n eventBus.trigger(Events.FRAGMENT_LOADING_ABANDONED, {streamProcessor: this.getStreamProcessor(), request: e.request, mediaType: e.mediaType});\n }\n\n function resetInitialSettings() {\n executedRequests = [];\n loadingRequests = [];\n }\n\n function reset() {\n eventBus.off(Events.LOADING_COMPLETED, onLoadingCompleted, this);\n eventBus.off(Events.LOADING_ABANDONED, onLoadingAborted, this);\n\n if (fragmentLoader) {\n fragmentLoader.reset();\n }\n resetInitialSettings();\n }\n\n instance = {\n setStreamProcessor: setStreamProcessor,\n getStreamProcessor: getStreamProcessor,\n getRequests: getRequests,\n isFragmentLoaded: isFragmentLoaded,\n isFragmentLoadedOrPending: isFragmentLoadedOrPending,\n removeExecutedRequestsBeforeTime: removeExecutedRequestsBeforeTime,\n abortRequests: abortRequests,\n executeRequest: executeRequest,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nFragmentModel.__dashjs_factory_name = 'FragmentModel';\nconst factory = FactoryMaker.getClassFactory(FragmentModel);\nfactory.FRAGMENT_MODEL_LOADING = FRAGMENT_MODEL_LOADING;\nfactory.FRAGMENT_MODEL_EXECUTED = FRAGMENT_MODEL_EXECUTED;\nfactory.FRAGMENT_MODEL_CANCELED = FRAGMENT_MODEL_CANCELED;\nfactory.FRAGMENT_MODEL_FAILED = FRAGMENT_MODEL_FAILED;\nFactoryMaker.updateClassFactory(FragmentModel.__dashjs_factory_name, factory);\nexport default factory;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport FragmentRequest from '../vo/FragmentRequest';\nimport Debug from '../../core/Debug';\n\nconst FRAGMENT_MODEL_LOADING = 'loading';\nconst FRAGMENT_MODEL_EXECUTED = 'executed';\nconst FRAGMENT_MODEL_CANCELED = 'canceled';\nconst FRAGMENT_MODEL_FAILED = 'failed';\n\nfunction FragmentModel(config) {\n\n config = config || {};\n const context = this.context;\n const log = Debug(context).getInstance().log;\n const eventBus = EventBus(context).getInstance();\n const metricsModel = config.metricsModel;\n const fragmentLoader = config.fragmentLoader;\n\n let instance,\n streamProcessor,\n executedRequests,\n loadingRequests;\n\n function setup() {\n resetInitialSettings();\n eventBus.on(Events.LOADING_COMPLETED, onLoadingCompleted, instance);\n eventBus.on(Events.LOADING_ABANDONED, onLoadingAborted, instance);\n }\n\n function setStreamProcessor(value) {\n streamProcessor = value;\n }\n\n function getStreamProcessor() {\n return streamProcessor;\n }\n\n function isFragmentLoaded(request) {\n\n const isEqualUrl = function (req1, req2) {\n return (req1.url === req2.url);\n };\n\n const isEqualComplete = function (req1, req2) {\n return ((req1.action === FragmentRequest.ACTION_COMPLETE) && (req1.action === req2.action));\n };\n\n const isEqualMedia = function (req1, req2) {\n return !isNaN(req1.index) && (req1.startTime === req2.startTime) && (req1.adaptationIndex === req2.adaptationIndex);\n };\n\n const isEqualInit = function (req1, req2) {\n return isNaN(req1.index) && isNaN(req2.index) && (req1.quality === req2.quality);\n };\n\n const check = function (requests) {\n let isLoaded = false;\n requests.some(req => {\n if ( isEqualUrl(request,req) && (isEqualMedia(request, req) || isEqualInit(request, req) || isEqualComplete(request, req))) {\n isLoaded = true;\n return isLoaded;\n }\n });\n return isLoaded;\n };\n\n if (!request) {\n return false;\n }\n\n return check(executedRequests);\n }\n\n function isFragmentLoadedOrPending(request) {\n let isLoaded = false;\n let i = 0;\n let req;\n\n // First, check if the fragment has already been loaded\n isLoaded = isFragmentLoaded(request);\n\n // Then, check if the fragment is about to be loeaded\n if (!isLoaded) {\n for (i = 0; i < loadingRequests.length; i++) {\n req = loadingRequests[i];\n if ((request.url === req.url) && (request.startTime === req.startTime)) {\n isLoaded = true;\n }\n }\n }\n\n return isLoaded;\n }\n\n /**\n *\n * Gets an array of {@link FragmentRequest} objects\n *\n * @param {Object} filter The object with properties by which the method filters the requests to be returned.\n * the only mandatory property is state, which must be a value from\n * other properties should match the properties of {@link FragmentRequest}. E.g.:\n * getRequests({state: FragmentModel.FRAGMENT_MODEL_EXECUTED, quality: 0}) - returns\n * all the requests from executedRequests array where requests.quality = filter.quality\n *\n * @returns {Array}\n * @memberof FragmentModel#\n */\n function getRequests(filter) {\n\n const states = filter ? filter.state instanceof Array ? filter.state : [filter.state] : [];\n\n let filteredRequests = [];\n states.forEach(state => {\n const requests = getRequestsForState(state);\n filteredRequests = filteredRequests.concat(filterRequests(requests, filter));\n });\n\n return filteredRequests;\n }\n\n function removeExecutedRequestsBeforeTime(time) {\n executedRequests = executedRequests.filter(req => isNaN(req.startTime) || time !== undefined ? req.startTime >= time : false);\n }\n\n function abortRequests() {\n fragmentLoader.abort();\n loadingRequests = [];\n }\n\n function executeRequest(request) {\n\n switch (request.action) {\n case FragmentRequest.ACTION_COMPLETE:\n executedRequests.push(request);\n addSchedulingInfoMetrics(request, FRAGMENT_MODEL_EXECUTED);\n eventBus.trigger(Events.STREAM_COMPLETED, {\n request: request,\n fragmentModel: this\n });\n break;\n case FragmentRequest.ACTION_DOWNLOAD:\n addSchedulingInfoMetrics(request, FRAGMENT_MODEL_LOADING);\n loadingRequests.push(request);\n loadCurrentFragment(request);\n break;\n default:\n log('Unknown request action.');\n }\n }\n\n function loadCurrentFragment(request) {\n eventBus.trigger(Events.FRAGMENT_LOADING_STARTED, {\n sender: instance,\n request: request\n });\n fragmentLoader.load(request);\n }\n\n function getRequestForTime(arr, time, threshold) {\n // loop through the executed requests and pick the one for which the playback interval matches the given time\n const lastIdx = arr.length - 1;\n for (let i = lastIdx; i >= 0; i--) {\n const req = arr[i];\n const start = req.startTime;\n const end = start + req.duration;\n threshold = threshold !== undefined ? threshold : (req.duration / 2);\n if ((!isNaN(start) && !isNaN(end) && ((time + threshold) >= start) && ((time - threshold) < end)) || (isNaN(start) && isNaN(time))) {\n return req;\n }\n }\n return null;\n }\n\n function filterRequests(arr, filter) {\n // for time use a specific filtration function\n if (filter.hasOwnProperty('time')) {\n return [getRequestForTime(arr, filter.time, filter.threshold)];\n }\n\n return arr.filter(request => {\n for (const prop in filter) {\n if (prop === 'state') continue;\n if (filter.hasOwnProperty(prop) && request[prop] != filter[prop]) return false;\n }\n\n return true;\n });\n }\n\n function getRequestsForState(state) {\n\n let requests;\n switch (state) {\n case FRAGMENT_MODEL_LOADING:\n requests = loadingRequests;\n break;\n case FRAGMENT_MODEL_EXECUTED:\n requests = executedRequests;\n break;\n default:\n requests = [];\n }\n return requests;\n }\n\n function addSchedulingInfoMetrics(request, state) {\n\n metricsModel.addSchedulingInfo(\n request.mediaType,\n new Date(),\n request.type,\n request.startTime,\n request.availabilityStartTime,\n request.duration,\n request.quality,\n request.range,\n state);\n\n metricsModel.addRequestsQueue(request.mediaType, loadingRequests, executedRequests);\n }\n\n function onLoadingCompleted(e) {\n if (e.sender !== fragmentLoader) return;\n\n loadingRequests.splice(loadingRequests.indexOf(e.request), 1);\n\n if (e.response && !e.error) {\n executedRequests.push(e.request);\n }\n\n addSchedulingInfoMetrics(e.request, e.error ? FRAGMENT_MODEL_FAILED : FRAGMENT_MODEL_EXECUTED);\n\n eventBus.trigger(Events.FRAGMENT_LOADING_COMPLETED, {\n request: e.request,\n response: e.response,\n error: e.error,\n sender: this\n });\n }\n\n function onLoadingAborted(e) {\n if (e.sender !== fragmentLoader) return;\n\n eventBus.trigger(Events.FRAGMENT_LOADING_ABANDONED, {streamProcessor: this.getStreamProcessor(), request: e.request, mediaType: e.mediaType});\n }\n\n function resetInitialSettings() {\n executedRequests = [];\n loadingRequests = [];\n }\n\n function reset() {\n eventBus.off(Events.LOADING_COMPLETED, onLoadingCompleted, this);\n eventBus.off(Events.LOADING_ABANDONED, onLoadingAborted, this);\n\n if (fragmentLoader) {\n fragmentLoader.reset();\n }\n resetInitialSettings();\n }\n\n instance = {\n setStreamProcessor: setStreamProcessor,\n getStreamProcessor: getStreamProcessor,\n getRequests: getRequests,\n isFragmentLoaded: isFragmentLoaded,\n isFragmentLoadedOrPending: isFragmentLoadedOrPending,\n removeExecutedRequestsBeforeTime: removeExecutedRequestsBeforeTime,\n abortRequests: abortRequests,\n executeRequest: executeRequest,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nFragmentModel.__dashjs_factory_name = 'FragmentModel';\nconst factory = FactoryMaker.getClassFactory(FragmentModel);\nfactory.FRAGMENT_MODEL_LOADING = FRAGMENT_MODEL_LOADING;\nfactory.FRAGMENT_MODEL_EXECUTED = FRAGMENT_MODEL_EXECUTED;\nfactory.FRAGMENT_MODEL_CANCELED = FRAGMENT_MODEL_CANCELED;\nfactory.FRAGMENT_MODEL_FAILED = FRAGMENT_MODEL_FAILED;\nFactoryMaker.updateClassFactory(FragmentModel.__dashjs_factory_name, factory);\nexport default factory;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\n\nfunction ManifestModel() {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n manifest;\n\n function getValue() {\n return manifest;\n }\n\n function setValue(value) {\n manifest = value;\n if (value) {\n eventBus.trigger(Events.MANIFEST_LOADED, {data: value});\n }\n }\n\n instance = {\n getValue: getValue,\n setValue: setValue\n };\n\n return instance;\n}\n\nManifestModel.__dashjs_factory_name = 'ManifestModel';\nexport default FactoryMaker.getSingletonFactory(ManifestModel);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker';\nimport {\n HTTPRequest\n}\nfrom '../vo/metrics/HTTPRequest';\nimport Constants from '../constants/Constants';\n\nconst DEFAULT_UTC_TIMING_SOURCE = {\n scheme: 'urn:mpeg:dash:utc:http-xsdate:2014',\n value: 'http://time.akamai.com/?iso'\n};\nconst LIVE_DELAY_FRAGMENT_COUNT = 4;\n\nconst DEFAULT_LOCAL_STORAGE_BITRATE_EXPIRATION = 360000;\nconst DEFAULT_LOCAL_STORAGE_MEDIA_SETTINGS_EXPIRATION = 360000;\n\nconst BANDWIDTH_SAFETY_FACTOR = 0.9;\nconst ABANDON_LOAD_TIMEOUT = 10000;\n\nconst BUFFER_TO_KEEP = 30;\nconst BUFFER_PRUNING_INTERVAL = 30;\nconst DEFAULT_MIN_BUFFER_TIME = 12;\nconst DEFAULT_MIN_BUFFER_TIME_FAST_SWITCH = 20;\nconst BUFFER_TIME_AT_TOP_QUALITY = 30;\nconst BUFFER_TIME_AT_TOP_QUALITY_LONG_FORM = 60;\nconst LONG_FORM_CONTENT_DURATION_THRESHOLD = 600;\n\nconst FRAGMENT_RETRY_ATTEMPTS = 3;\nconst FRAGMENT_RETRY_INTERVAL = 1000;\n\nconst MANIFEST_RETRY_ATTEMPTS = 3;\nconst MANIFEST_RETRY_INTERVAL = 500;\n\nconst XLINK_RETRY_ATTEMPTS = 1;\nconst XLINK_RETRY_INTERVAL = 500;\n\n//This value influences the startup time for live (in ms).\nconst WALLCLOCK_TIME_UPDATE_INTERVAL = 50;\n\nconst DEFAULT_XHR_WITH_CREDENTIALS = false;\n\nfunction MediaPlayerModel() {\n\n let instance,\n useManifestDateHeaderTimeSource,\n useSuggestedPresentationDelay,\n UTCTimingSources,\n liveDelayFragmentCount,\n liveDelay,\n scheduleWhilePaused,\n bufferToKeep,\n bufferPruningInterval,\n lastBitrateCachingInfo,\n lastMediaSettingsCachingInfo,\n stableBufferTime,\n bufferTimeAtTopQuality,\n bufferTimeAtTopQualityLongForm,\n longFormContentDurationThreshold,\n bandwidthSafetyFactor,\n abandonLoadTimeout,\n retryAttempts,\n retryIntervals,\n wallclockTimeUpdateInterval,\n ABRStrategy,\n useDefaultABRRules,\n xhrWithCredentials,\n fastSwitchEnabled,\n customABRRule,\n movingAverageMethod;\n\n function setup() {\n UTCTimingSources = [];\n useSuggestedPresentationDelay = false;\n useManifestDateHeaderTimeSource = true;\n scheduleWhilePaused = true;\n ABRStrategy = Constants.ABR_STRATEGY_DYNAMIC;\n useDefaultABRRules = true;\n fastSwitchEnabled = false;\n lastBitrateCachingInfo = {\n enabled: true,\n ttl: DEFAULT_LOCAL_STORAGE_BITRATE_EXPIRATION\n };\n lastMediaSettingsCachingInfo = {\n enabled: true,\n ttl: DEFAULT_LOCAL_STORAGE_MEDIA_SETTINGS_EXPIRATION\n };\n liveDelayFragmentCount = LIVE_DELAY_FRAGMENT_COUNT;\n liveDelay = undefined; // Explicitly state that default is undefined\n bufferToKeep = BUFFER_TO_KEEP;\n bufferPruningInterval = BUFFER_PRUNING_INTERVAL;\n stableBufferTime = NaN;\n bufferTimeAtTopQuality = BUFFER_TIME_AT_TOP_QUALITY;\n bufferTimeAtTopQualityLongForm = BUFFER_TIME_AT_TOP_QUALITY_LONG_FORM;\n longFormContentDurationThreshold = LONG_FORM_CONTENT_DURATION_THRESHOLD;\n bandwidthSafetyFactor = BANDWIDTH_SAFETY_FACTOR;\n abandonLoadTimeout = ABANDON_LOAD_TIMEOUT;\n wallclockTimeUpdateInterval = WALLCLOCK_TIME_UPDATE_INTERVAL;\n xhrWithCredentials = {\n default: DEFAULT_XHR_WITH_CREDENTIALS\n };\n customABRRule = [];\n movingAverageMethod = Constants.MOVING_AVERAGE_SLIDING_WINDOW;\n\n retryAttempts = {\n [HTTPRequest.MPD_TYPE]: MANIFEST_RETRY_ATTEMPTS,\n [HTTPRequest.XLINK_EXPANSION_TYPE]: XLINK_RETRY_ATTEMPTS,\n [HTTPRequest.MEDIA_SEGMENT_TYPE]: FRAGMENT_RETRY_ATTEMPTS,\n [HTTPRequest.INIT_SEGMENT_TYPE]: FRAGMENT_RETRY_ATTEMPTS,\n [HTTPRequest.BITSTREAM_SWITCHING_SEGMENT_TYPE]: FRAGMENT_RETRY_ATTEMPTS,\n [HTTPRequest.INDEX_SEGMENT_TYPE]: FRAGMENT_RETRY_ATTEMPTS,\n [HTTPRequest.OTHER_TYPE]: FRAGMENT_RETRY_ATTEMPTS\n };\n\n retryIntervals = {\n [HTTPRequest.MPD_TYPE]: MANIFEST_RETRY_INTERVAL,\n [HTTPRequest.XLINK_EXPANSION_TYPE]: XLINK_RETRY_INTERVAL,\n [HTTPRequest.MEDIA_SEGMENT_TYPE]: FRAGMENT_RETRY_INTERVAL,\n [HTTPRequest.INIT_SEGMENT_TYPE]: FRAGMENT_RETRY_INTERVAL,\n [HTTPRequest.BITSTREAM_SWITCHING_SEGMENT_TYPE]: FRAGMENT_RETRY_INTERVAL,\n [HTTPRequest.INDEX_SEGMENT_TYPE]: FRAGMENT_RETRY_INTERVAL,\n [HTTPRequest.OTHER_TYPE]: FRAGMENT_RETRY_INTERVAL\n };\n }\n\n //TODO Should we use Object.define to have setters/getters? makes more readable code on other side.\n\n function setABRStrategy(value) {\n ABRStrategy = value;\n }\n\n function getABRStrategy() {\n return ABRStrategy;\n }\n\n function setUseDefaultABRRules(value) {\n useDefaultABRRules = value;\n }\n\n function getUseDefaultABRRules() {\n return useDefaultABRRules;\n }\n\n function findABRCustomRule(rulename) {\n let i;\n for (i = 0; i < customABRRule.length; i++) {\n if (customABRRule[i].rulename === rulename) {\n return i;\n }\n }\n return -1;\n }\n\n function getABRCustomRules() {\n return customABRRule;\n }\n\n function addABRCustomRule(type, rulename, rule) {\n\n let index = findABRCustomRule(rulename);\n if (index === -1) {\n // add rule\n customABRRule.push({\n type: type,\n rulename: rulename,\n rule: rule\n });\n } else {\n // update rule\n customABRRule[index].type = type;\n customABRRule[index].rule = rule;\n }\n }\n\n function removeABRCustomRule(rulename) {\n let index = findABRCustomRule(rulename);\n if (index !== -1) {\n // remove rule\n customABRRule.splice(index, 1);\n }\n }\n\n function removeAllABRCustomRule() {\n customABRRule = [];\n }\n\n function setBandwidthSafetyFactor(value) {\n bandwidthSafetyFactor = value;\n }\n\n function getBandwidthSafetyFactor() {\n return bandwidthSafetyFactor;\n }\n\n function setAbandonLoadTimeout(value) {\n abandonLoadTimeout = value;\n }\n\n function getAbandonLoadTimeout() {\n return abandonLoadTimeout;\n }\n\n function setStableBufferTime(value) {\n stableBufferTime = value;\n }\n\n function getStableBufferTime() {\n return !isNaN(stableBufferTime) ? stableBufferTime : fastSwitchEnabled ? DEFAULT_MIN_BUFFER_TIME_FAST_SWITCH : DEFAULT_MIN_BUFFER_TIME;\n }\n\n function setBufferTimeAtTopQuality(value) {\n bufferTimeAtTopQuality = value;\n }\n\n function getBufferTimeAtTopQuality() {\n return bufferTimeAtTopQuality;\n }\n\n function setBufferTimeAtTopQualityLongForm(value) {\n bufferTimeAtTopQualityLongForm = value;\n }\n\n function getBufferTimeAtTopQualityLongForm() {\n return bufferTimeAtTopQualityLongForm;\n }\n\n function setLongFormContentDurationThreshold(value) {\n longFormContentDurationThreshold = value;\n }\n\n function getLongFormContentDurationThreshold() {\n return longFormContentDurationThreshold;\n }\n\n function setBufferToKeep(value) {\n bufferToKeep = value;\n }\n\n function getBufferToKeep() {\n return bufferToKeep;\n }\n\n function setLastBitrateCachingInfo(enable, ttl) {\n lastBitrateCachingInfo.enabled = enable;\n if (ttl !== undefined && !isNaN(ttl) && typeof (ttl) === 'number') {\n lastBitrateCachingInfo.ttl = ttl;\n }\n }\n\n function getLastBitrateCachingInfo() {\n return lastBitrateCachingInfo;\n }\n\n function setLastMediaSettingsCachingInfo(enable, ttl) {\n lastMediaSettingsCachingInfo.enabled = enable;\n if (ttl !== undefined && !isNaN(ttl) && typeof (ttl) === 'number') {\n lastMediaSettingsCachingInfo.ttl = ttl;\n }\n }\n\n function getLastMediaSettingsCachingInfo() {\n return lastMediaSettingsCachingInfo;\n }\n\n function setBufferPruningInterval(value) {\n bufferPruningInterval = value;\n }\n\n function getBufferPruningInterval() {\n return bufferPruningInterval;\n }\n\n function setFragmentRetryAttempts(value) {\n retryAttempts[HTTPRequest.MEDIA_SEGMENT_TYPE] = value;\n }\n\n function setManifestRetryAttempts(value) {\n retryAttempts[HTTPRequest.MPD_TYPE] = value;\n }\n\n function setRetryAttemptsForType(type, value) {\n retryAttempts[type] = value;\n }\n\n function getFragmentRetryAttempts() {\n return retryAttempts[HTTPRequest.MEDIA_SEGMENT_TYPE];\n }\n\n function getManifestRetryAttempts() {\n return retryAttempts[HTTPRequest.MPD_TYPE];\n }\n\n function getRetryAttemptsForType(type) {\n return retryAttempts[type];\n }\n\n function setFragmentRetryInterval(value) {\n retryIntervals[HTTPRequest.MEDIA_SEGMENT_TYPE] = value;\n }\n\n function setManifestRetryInterval(value) {\n retryIntervals[HTTPRequest.MPD_TYPE] = value;\n }\n\n function setRetryIntervalForType(type, value) {\n retryIntervals[type] = value;\n }\n\n function getFragmentRetryInterval() {\n return retryIntervals[HTTPRequest.MEDIA_SEGMENT_TYPE];\n }\n\n function getManifestRetryInterval() {\n return retryIntervals[HTTPRequest.MPD_TYPE];\n }\n\n function getRetryIntervalForType(type) {\n return retryIntervals[type];\n }\n\n function setWallclockTimeUpdateInterval(value) {\n wallclockTimeUpdateInterval = value;\n }\n\n function getWallclockTimeUpdateInterval() {\n return wallclockTimeUpdateInterval;\n }\n\n function setScheduleWhilePaused(value) {\n scheduleWhilePaused = value;\n }\n\n function getScheduleWhilePaused() {\n return scheduleWhilePaused;\n }\n\n function setLiveDelayFragmentCount(value) {\n liveDelayFragmentCount = value;\n }\n\n function setLiveDelay(value) {\n liveDelay = value;\n }\n\n function getLiveDelayFragmentCount() {\n return liveDelayFragmentCount;\n }\n\n function getLiveDelay() {\n return liveDelay;\n }\n\n function setUseManifestDateHeaderTimeSource(value) {\n useManifestDateHeaderTimeSource = value;\n }\n\n function getUseManifestDateHeaderTimeSource() {\n return useManifestDateHeaderTimeSource;\n }\n\n function setUseSuggestedPresentationDelay(value) {\n useSuggestedPresentationDelay = value;\n }\n\n function getUseSuggestedPresentationDelay() {\n return useSuggestedPresentationDelay;\n }\n\n function setUTCTimingSources(value) {\n UTCTimingSources = value;\n }\n\n function getUTCTimingSources() {\n return UTCTimingSources;\n }\n\n function setXHRWithCredentialsForType(type, value) {\n if (!type) {\n Object.keys(xhrWithCredentials).forEach(key => {\n setXHRWithCredentialsForType(key, value);\n });\n } else {\n xhrWithCredentials[type] = !!value;\n }\n }\n\n function getXHRWithCredentialsForType(type) {\n const useCreds = xhrWithCredentials[type];\n\n if (useCreds === undefined) {\n return xhrWithCredentials.default;\n }\n\n return useCreds;\n }\n\n\n function getFastSwitchEnabled() {\n return fastSwitchEnabled;\n }\n\n function setFastSwitchEnabled(value) {\n fastSwitchEnabled = value;\n }\n\n function setMovingAverageMethod(value) {\n movingAverageMethod = value;\n }\n\n function getMovingAverageMethod() {\n return movingAverageMethod;\n }\n\n function reset() {\n //TODO need to figure out what props to persist across sessions and which to reset if any.\n //setup();\n }\n\n instance = {\n setABRStrategy: setABRStrategy,\n getABRStrategy: getABRStrategy,\n setUseDefaultABRRules: setUseDefaultABRRules,\n getUseDefaultABRRules: getUseDefaultABRRules,\n getABRCustomRules: getABRCustomRules,\n addABRCustomRule: addABRCustomRule,\n removeABRCustomRule: removeABRCustomRule,\n removeAllABRCustomRule: removeAllABRCustomRule,\n setBandwidthSafetyFactor: setBandwidthSafetyFactor,\n getBandwidthSafetyFactor: getBandwidthSafetyFactor,\n setAbandonLoadTimeout: setAbandonLoadTimeout,\n getAbandonLoadTimeout: getAbandonLoadTimeout,\n setLastBitrateCachingInfo: setLastBitrateCachingInfo,\n getLastBitrateCachingInfo: getLastBitrateCachingInfo,\n setLastMediaSettingsCachingInfo: setLastMediaSettingsCachingInfo,\n getLastMediaSettingsCachingInfo: getLastMediaSettingsCachingInfo,\n setStableBufferTime: setStableBufferTime,\n getStableBufferTime: getStableBufferTime,\n setBufferTimeAtTopQuality: setBufferTimeAtTopQuality,\n getBufferTimeAtTopQuality: getBufferTimeAtTopQuality,\n setBufferTimeAtTopQualityLongForm: setBufferTimeAtTopQualityLongForm,\n getBufferTimeAtTopQualityLongForm: getBufferTimeAtTopQualityLongForm,\n setLongFormContentDurationThreshold: setLongFormContentDurationThreshold,\n getLongFormContentDurationThreshold: getLongFormContentDurationThreshold,\n setBufferToKeep: setBufferToKeep,\n getBufferToKeep: getBufferToKeep,\n setBufferPruningInterval: setBufferPruningInterval,\n getBufferPruningInterval: getBufferPruningInterval,\n setFragmentRetryAttempts: setFragmentRetryAttempts,\n getFragmentRetryAttempts: getFragmentRetryAttempts,\n setManifestRetryAttempts: setManifestRetryAttempts,\n getManifestRetryAttempts: getManifestRetryAttempts,\n setRetryAttemptsForType: setRetryAttemptsForType,\n getRetryAttemptsForType: getRetryAttemptsForType,\n setFragmentRetryInterval: setFragmentRetryInterval,\n getFragmentRetryInterval: getFragmentRetryInterval,\n setManifestRetryInterval: setManifestRetryInterval,\n getManifestRetryInterval: getManifestRetryInterval,\n setRetryIntervalForType: setRetryIntervalForType,\n getRetryIntervalForType: getRetryIntervalForType,\n setWallclockTimeUpdateInterval: setWallclockTimeUpdateInterval,\n getWallclockTimeUpdateInterval: getWallclockTimeUpdateInterval,\n setScheduleWhilePaused: setScheduleWhilePaused,\n getScheduleWhilePaused: getScheduleWhilePaused,\n getUseSuggestedPresentationDelay: getUseSuggestedPresentationDelay,\n setUseSuggestedPresentationDelay: setUseSuggestedPresentationDelay,\n setLiveDelayFragmentCount: setLiveDelayFragmentCount,\n getLiveDelayFragmentCount: getLiveDelayFragmentCount,\n getLiveDelay: getLiveDelay,\n setLiveDelay: setLiveDelay,\n setUseManifestDateHeaderTimeSource: setUseManifestDateHeaderTimeSource,\n getUseManifestDateHeaderTimeSource: getUseManifestDateHeaderTimeSource,\n setUTCTimingSources: setUTCTimingSources,\n getUTCTimingSources: getUTCTimingSources,\n setXHRWithCredentialsForType: setXHRWithCredentialsForType,\n getXHRWithCredentialsForType: getXHRWithCredentialsForType,\n setFastSwitchEnabled: setFastSwitchEnabled,\n getFastSwitchEnabled: getFastSwitchEnabled,\n setMovingAverageMethod: setMovingAverageMethod,\n getMovingAverageMethod: getMovingAverageMethod,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\n//TODO see if you can move this and not export and just getter to get default value.\nMediaPlayerModel.__dashjs_factory_name = 'MediaPlayerModel';\nlet factory = FactoryMaker.getSingletonFactory(MediaPlayerModel);\nfactory.DEFAULT_UTC_TIMING_SOURCE = DEFAULT_UTC_TIMING_SOURCE;\nFactoryMaker.updateSingletonFactory(MediaPlayerModel.__dashjs_factory_name, factory);\nexport default factory;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport MetricsConstants from '../constants/MetricsConstants';\nimport MetricsList from '../vo/MetricsList';\nimport TCPConnection from '../vo/metrics/TCPConnection';\nimport {HTTPRequest, HTTPRequestTrace} from '../vo/metrics/HTTPRequest';\nimport TrackSwitch from '../vo/metrics/RepresentationSwitch';\nimport BufferLevel from '../vo/metrics/BufferLevel';\nimport BufferState from '../vo/metrics/BufferState';\nimport DVRInfo from '../vo/metrics/DVRInfo';\nimport DroppedFrames from '../vo/metrics/DroppedFrames';\nimport {ManifestUpdate, ManifestUpdateStreamInfo, ManifestUpdateRepresentationInfo} from '../vo/metrics/ManifestUpdate';\nimport SchedulingInfo from '../vo/metrics/SchedulingInfo';\nimport EventBus from '../../core/EventBus';\nimport RequestsQueue from '../vo/metrics/RequestsQueue';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\n\nfunction MetricsModel() {\n\n const MAXIMUM_LIST_DEPTH = 1000;\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let instance,\n adapter,\n streamMetrics;\n\n function setup() {\n streamMetrics = {};\n }\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.adapter) {\n adapter = config.adapter;\n }\n }\n\n function metricsChanged() {\n eventBus.trigger(Events.METRICS_CHANGED);\n }\n\n function metricChanged(mediaType) {\n eventBus.trigger(Events.METRIC_CHANGED, {mediaType: mediaType});\n metricsChanged();\n }\n\n function metricUpdated(mediaType, metricType, vo) {\n eventBus.trigger(Events.METRIC_UPDATED, {mediaType: mediaType, metric: metricType, value: vo});\n metricChanged(mediaType);\n }\n\n function metricAdded(mediaType, metricType, vo) {\n eventBus.trigger(Events.METRIC_ADDED, {mediaType: mediaType, metric: metricType, value: vo});\n metricChanged(mediaType);\n }\n\n function clearCurrentMetricsForType(type) {\n delete streamMetrics[type];\n metricChanged(type);\n }\n\n function clearAllCurrentMetrics() {\n streamMetrics = {};\n metricsChanged();\n }\n\n function getReadOnlyMetricsFor(type) {\n if (streamMetrics.hasOwnProperty(type)) {\n return streamMetrics[type];\n }\n\n return null;\n }\n\n function getMetricsFor(type) {\n let metrics;\n\n if (streamMetrics.hasOwnProperty(type)) {\n metrics = streamMetrics[type];\n } else {\n metrics = new MetricsList();\n streamMetrics[type] = metrics;\n }\n\n return metrics;\n }\n\n function pushMetrics(type, list, value) {\n let metrics = getMetricsFor(type);\n metrics[list].push(value);\n if ( metrics[list].length > MAXIMUM_LIST_DEPTH ) {\n metrics[list].shift();\n }\n }\n\n function addTcpConnection(mediaType, tcpid, dest, topen, tclose, tconnect) {\n let vo = new TCPConnection();\n\n vo.tcpid = tcpid;\n vo.dest = dest;\n vo.topen = topen;\n vo.tclose = tclose;\n vo.tconnect = tconnect;\n\n pushAndNotify(mediaType, MetricsConstants.TCP_CONNECTION, vo);\n\n return vo;\n }\n\n function appendHttpTrace(httpRequest, s, d, b) {\n let vo = new HTTPRequestTrace();\n\n vo.s = s;\n vo.d = d;\n vo.b = b;\n\n httpRequest.trace.push(vo);\n\n if (!httpRequest.interval) {\n httpRequest.interval = 0;\n }\n\n httpRequest.interval += d;\n\n return vo;\n }\n\n function addHttpRequest(mediaType, tcpid, type, url, actualurl, serviceLocation, range, trequest, tresponse, tfinish, responsecode, mediaduration, responseHeaders, traces) {\n let vo = new HTTPRequest();\n\n // ISO 23009-1 D.4.3 NOTE 2:\n // All entries for a given object will have the same URL and range\n // and so can easily be correlated. If there were redirects or\n // failures there will be one entry for each redirect/failure.\n // The redirect-to URL or alternative url (where multiple have been\n // provided in the MPD) will appear as the actualurl of the next\n // entry with the same url value.\n if (actualurl && (actualurl !== url)) {\n\n // given the above, add an entry for the original request\n addHttpRequest(\n mediaType,\n null,\n type,\n url,\n null,\n null,\n range,\n trequest,\n null, // unknown\n null, // unknown\n null, // unknown, probably a 302\n mediaduration,\n null,\n null\n );\n\n vo.actualurl = actualurl;\n }\n\n vo.tcpid = tcpid;\n vo.type = type;\n vo.url = url;\n vo.range = range;\n vo.trequest = trequest;\n vo.tresponse = tresponse;\n vo.responsecode = responsecode;\n\n vo._tfinish = tfinish;\n vo._stream = mediaType;\n vo._mediaduration = mediaduration;\n vo._responseHeaders = responseHeaders;\n vo._serviceLocation = serviceLocation;\n\n if (traces) {\n traces.forEach(trace => {\n appendHttpTrace(vo, trace.s, trace.d, trace.b);\n });\n } else {\n // The interval and trace shall be absent for redirect and failure records.\n delete vo.interval;\n delete vo.trace;\n }\n\n pushAndNotify(mediaType, MetricsConstants.HTTP_REQUEST, vo);\n\n return vo;\n }\n\n function addRepresentationSwitch(mediaType, t, mt, to, lto) {\n let vo = new TrackSwitch();\n\n vo.t = t;\n vo.mt = mt;\n vo.to = to;\n\n if (lto) {\n vo.lto = lto;\n } else {\n delete vo.lto;\n }\n\n pushAndNotify(mediaType, MetricsConstants.TRACK_SWITCH, vo);\n\n return vo;\n }\n\n function pushAndNotify(mediaType, metricType, metricObject) {\n pushMetrics(mediaType, metricType, metricObject);\n metricAdded(mediaType, metricType, metricObject);\n }\n\n function addBufferLevel(mediaType, t, level) {\n let vo = new BufferLevel();\n vo.t = t;\n vo.level = level;\n\n pushAndNotify(mediaType, MetricsConstants.BUFFER_LEVEL, vo);\n\n return vo;\n }\n\n function addBufferState(mediaType, state, target) {\n let vo = new BufferState();\n vo.target = target;\n vo.state = state;\n\n pushAndNotify(mediaType, MetricsConstants.BUFFER_STATE, vo);\n\n return vo;\n }\n\n function addDVRInfo(mediaType, currentTime, mpd, range) {\n let vo = new DVRInfo();\n vo.time = currentTime ;\n vo.range = range;\n vo.manifestInfo = mpd;\n\n pushAndNotify(mediaType, MetricsConstants.DVR_INFO, vo);\n\n return vo;\n }\n\n function addDroppedFrames(mediaType, quality) {\n let vo = new DroppedFrames();\n let list = getMetricsFor(mediaType).DroppedFrames;\n\n vo.time = quality.creationTime;\n vo.droppedFrames = quality.droppedVideoFrames;\n\n if (list.length > 0 && list[list.length - 1] == vo) {\n return list[list.length - 1];\n }\n\n pushAndNotify(mediaType, MetricsConstants.DROPPED_FRAMES, vo);\n\n return vo;\n }\n\n function addSchedulingInfo(mediaType, t, type, startTime, availabilityStartTime, duration, quality, range, state) {\n let vo = new SchedulingInfo();\n\n vo.mediaType = mediaType;\n vo.t = t;\n\n vo.type = type;\n vo.startTime = startTime;\n vo.availabilityStartTime = availabilityStartTime;\n vo.duration = duration;\n vo.quality = quality;\n vo.range = range;\n\n vo.state = state;\n\n pushAndNotify(mediaType, MetricsConstants.SCHEDULING_INFO, vo);\n\n return vo;\n }\n\n function addRequestsQueue(mediaType, loadingRequests, executedRequests) {\n let vo = new RequestsQueue();\n vo.loadingRequests = loadingRequests;\n vo.executedRequests = executedRequests;\n\n getMetricsFor(mediaType).RequestsQueue = vo;\n metricAdded(mediaType, MetricsConstants.REQUESTS_QUEUE, vo);\n }\n\n function addManifestUpdate(mediaType, type, requestTime, fetchTime, availabilityStartTime, presentationStartTime, clientTimeOffset, currentTime, buffered, latency) {\n let vo = new ManifestUpdate();\n\n vo.mediaType = mediaType;\n vo.type = type;\n vo.requestTime = requestTime; // when this manifest update was requested\n vo.fetchTime = fetchTime; // when this manifest update was received\n vo.availabilityStartTime = availabilityStartTime;\n vo.presentationStartTime = presentationStartTime; // the seek point (liveEdge for dynamic, Stream[0].startTime for static)\n vo.clientTimeOffset = clientTimeOffset; // the calculated difference between the server and client wall clock time\n vo.currentTime = currentTime; // actual element.currentTime\n vo.buffered = buffered; // actual element.ranges\n vo.latency = latency; // (static is fixed value of zero. dynamic should be ((Now-@availabilityStartTime) - currentTime)\n\n pushMetrics(Constants.STREAM, MetricsConstants.MANIFEST_UPDATE, vo);\n metricAdded(mediaType, MetricsConstants.MANIFEST_UPDATE, vo);\n\n return vo;\n }\n\n function updateManifestUpdateInfo(manifestUpdate, updatedFields) {\n if (manifestUpdate) {\n for (let field in updatedFields) {\n manifestUpdate[field] = updatedFields[field];\n }\n\n metricUpdated(manifestUpdate.mediaType, MetricsConstants.MANIFEST_UPDATE, manifestUpdate);\n }\n }\n\n function addManifestUpdateStreamInfo(manifestUpdate, id, index, start, duration) {\n if (manifestUpdate) {\n let vo = new ManifestUpdateStreamInfo();\n\n vo.id = id;\n vo.index = index;\n vo.start = start;\n vo.duration = duration;\n\n manifestUpdate.streamInfo.push(vo);\n metricUpdated(manifestUpdate.mediaType, MetricsConstants.MANIFEST_UPDATE_STREAM_INFO, manifestUpdate);\n\n return vo;\n }\n return null;\n }\n\n function addManifestUpdateRepresentationInfo(manifestUpdate, id, index, streamIndex, mediaType, presentationTimeOffset, startNumber, fragmentInfoType) {\n if (manifestUpdate) {\n\n const vo = new ManifestUpdateRepresentationInfo();\n vo.id = id;\n vo.index = index;\n vo.streamIndex = streamIndex;\n vo.mediaType = mediaType;\n vo.startNumber = startNumber;\n vo.fragmentInfoType = fragmentInfoType;\n vo.presentationTimeOffset = presentationTimeOffset;\n\n manifestUpdate.representationInfo.push(vo);\n metricUpdated(manifestUpdate.mediaType, MetricsConstants.MANIFEST_UPDATE_TRACK_INFO, manifestUpdate);\n\n return vo;\n }\n return null;\n }\n\n function addPlayList(vo) {\n let type = Constants.STREAM;\n\n if (vo.trace && Array.isArray(vo.trace)) {\n vo.trace.forEach(trace => {\n if (trace.hasOwnProperty('subreplevel') && !trace.subreplevel) {\n delete trace.subreplevel;\n }\n });\n } else {\n delete vo.trace;\n }\n\n pushAndNotify(type, MetricsConstants.PLAY_LIST, vo);\n\n return vo;\n }\n\n function addDVBErrors(vo) {\n let type = Constants.STREAM;\n\n pushAndNotify(type, MetricsConstants.DVB_ERRORS, vo);\n\n return vo;\n }\n\n instance = {\n clearCurrentMetricsForType: clearCurrentMetricsForType,\n clearAllCurrentMetrics: clearAllCurrentMetrics,\n getReadOnlyMetricsFor: getReadOnlyMetricsFor,\n getMetricsFor: getMetricsFor,\n addTcpConnection: addTcpConnection,\n addHttpRequest: addHttpRequest,\n addRepresentationSwitch: addRepresentationSwitch,\n addBufferLevel: addBufferLevel,\n addBufferState: addBufferState,\n addDVRInfo: addDVRInfo,\n addDroppedFrames: addDroppedFrames,\n addSchedulingInfo: addSchedulingInfo,\n addRequestsQueue: addRequestsQueue,\n addManifestUpdate: addManifestUpdate,\n updateManifestUpdateInfo: updateManifestUpdateInfo,\n addManifestUpdateStreamInfo: addManifestUpdateStreamInfo,\n addManifestUpdateRepresentationInfo: addManifestUpdateRepresentationInfo,\n addPlayList: addPlayList,\n addDVBErrors: addDVBErrors,\n setConfig: setConfig\n };\n\n setup();\n return instance;\n}\n\nMetricsModel.__dashjs_factory_name = 'MetricsModel';\nexport default FactoryMaker.getSingletonFactory(MetricsModel);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport URIFragmentData from '../vo/URIFragmentData';\nimport FactoryMaker from '../../core/FactoryMaker';\n\nfunction URIQueryAndFragmentModel() {\n\n let instance,\n URIFragmentDataVO,\n URIQueryData,\n isHTTPS;\n\n function initialize() {\n URIFragmentDataVO = new URIFragmentData();\n URIQueryData = [];\n isHTTPS = false;\n }\n\n function getURIFragmentData() {\n return URIFragmentDataVO;\n }\n\n function getURIQueryData() {\n return URIQueryData;\n }\n\n function isManifestHTTPS() {\n return isHTTPS;\n }\n\n function parseURI(uri) {\n if (!uri) return null;\n\n let URIFragmentData = [];\n let mappedArr;\n\n let testQuery = new RegExp(/[?]/);\n let testFragment = new RegExp(/[#]/);\n let testHTTPS = new RegExp(/^(https:)?\\/\\//i);\n let isQuery = testQuery.test(uri);\n let isFragment = testFragment.test(uri);\n\n isHTTPS = testHTTPS.test(uri);\n\n function reduceArray(previousValue, currentValue, index, array) {\n let arr = array[0].split(/[=]/);\n array.push({key: arr[0], value: arr[1]});\n array.shift();\n return array;\n }\n\n function mapArray(currentValue, index, array) {\n if (index > 0)\n {\n if (isQuery && URIQueryData.length === 0) {\n URIQueryData = array[index].split(/[&]/);\n } else if (isFragment) {\n URIFragmentData = array[index].split(/[&]/);\n }\n }\n\n return array;\n }\n\n mappedArr = uri.split(/[?#]/).map(mapArray);\n\n if (URIQueryData.length > 0) {\n URIQueryData = URIQueryData.reduce(reduceArray, null);\n }\n\n if (URIFragmentData.length > 0) {\n URIFragmentData = URIFragmentData.reduce(reduceArray, null);\n URIFragmentData.forEach(function (object) {\n URIFragmentDataVO[object.key] = object.value;\n });\n }\n\n return uri;\n }\n\n instance = {\n initialize: initialize,\n parseURI: parseURI,\n getURIFragmentData: getURIFragmentData,\n getURIQueryData: getURIQueryData,\n isManifestHTTPS: isManifestHTTPS\n };\n\n return instance;\n}\n\nURIQueryAndFragmentModel.__dashjs_factory_name = 'URIQueryAndFragmentModel';\nexport default FactoryMaker.getSingletonFactory(URIQueryAndFragmentModel);", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport Debug from '../../core/Debug';\n\nfunction VideoModel() {\n\n let instance,\n element,\n TTMLRenderingDiv,\n videoContainer,\n stalledStreams,\n previousPlaybackRate;\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n function initialize() {\n stalledStreams = [];\n }\n\n function onPlaybackCanPlay() {\n element.playbackRate = previousPlaybackRate || 1;\n element.removeEventListener('canplay', onPlaybackCanPlay);\n }\n\n function setPlaybackRate(value) {\n if (!element) return;\n if (element.readyState <= 2 && value > 0) {\n // If media element hasn't loaded enough data to play yet, wait until it has\n element.addEventListener('canplay', onPlaybackCanPlay);\n } else {\n element.playbackRate = value;\n }\n }\n\n //TODO Move the DVR window calculations from MediaPlayer to Here.\n function setCurrentTime(currentTime) {\n //_currentTime = currentTime;\n\n // We don't set the same currentTime because it can cause firing unexpected Pause event in IE11\n // providing playbackRate property equals to zero.\n if (element.currentTime == currentTime) return;\n\n // TODO Despite the fact that MediaSource 'open' event has been fired IE11 cannot set videoElement.currentTime\n // immediately (it throws InvalidStateError). It seems that this is related to videoElement.readyState property\n // Initially it is 0, but soon after 'open' event it goes to 1 and setting currentTime is allowed. Chrome allows to\n // set currentTime even if readyState = 0.\n // setTimeout is used to workaround InvalidStateError in IE11\n try {\n element.currentTime = currentTime;\n } catch (e) {\n if (element.readyState === 0 && e.code === e.INVALID_STATE_ERR) {\n setTimeout(function () {\n element.currentTime = currentTime;\n }, 400);\n }\n }\n }\n\n function getElement() {\n return element;\n }\n\n function setElement(value) {\n element = value;\n // Workaround to force Firefox to fire the canplay event.\n element.preload = 'auto';\n }\n\n function setSource(source) {\n if (source) {\n element.src = source;\n } else {\n element.removeAttribute('src');\n element.load();\n }\n }\n\n function getSource() {\n return element.src;\n }\n\n function getVideoContainer() {\n return videoContainer;\n }\n\n function setVideoContainer(value) {\n videoContainer = value;\n }\n\n function getTTMLRenderingDiv() {\n return TTMLRenderingDiv;\n }\n\n function setTTMLRenderingDiv(div) {\n TTMLRenderingDiv = div;\n // The styling will allow the captions to match the video window size and position.\n TTMLRenderingDiv.style.position = 'absolute';\n TTMLRenderingDiv.style.display = 'flex';\n TTMLRenderingDiv.style.overflow = 'hidden';\n TTMLRenderingDiv.style.pointerEvents = 'none';\n TTMLRenderingDiv.style.top = 0;\n TTMLRenderingDiv.style.left = 0;\n }\n\n function setStallState(type, state) {\n stallStream(type, state);\n }\n\n function isStalled() {\n return (stalledStreams.length > 0);\n }\n\n function addStalledStream(type) {\n\n let event;\n\n if (type === null || element.seeking || stalledStreams.indexOf(type) !== -1) {\n return;\n }\n\n stalledStreams.push(type);\n if (stalledStreams.length === 1) {\n // Halt playback until nothing is stalled.\n event = document.createEvent('Event');\n event.initEvent('waiting', true, false);\n previousPlaybackRate = element.playbackRate;\n setPlaybackRate(0);\n element.dispatchEvent(event);\n }\n }\n\n function removeStalledStream(type) {\n let index = stalledStreams.indexOf(type);\n let event;\n\n if (type === null) {\n return;\n }\n if (index !== -1) {\n stalledStreams.splice(index, 1);\n }\n // If nothing is stalled resume playback.\n if (isStalled() === false && element.playbackRate === 0) {\n setPlaybackRate(previousPlaybackRate || 1);\n if (!element.paused) {\n event = document.createEvent('Event');\n event.initEvent('playing', true, false);\n element.dispatchEvent(event);\n }\n }\n }\n\n function stallStream(type, isStalled) {\n if (isStalled) {\n addStalledStream(type);\n } else {\n removeStalledStream(type);\n }\n }\n\n function getPlaybackQuality() {\n let hasWebKit = ('webkitDroppedFrameCount' in element) && ('webkitDecodedFrameCount' in element);\n let hasQuality = ('getVideoPlaybackQuality' in element);\n let result = null;\n\n if (hasQuality) {\n result = element.getVideoPlaybackQuality();\n }\n else if (hasWebKit) {\n result = {\n droppedVideoFrames: element.webkitDroppedFrameCount,\n totalVideoFrames: element.webkitDroppedFrameCount + element.webkitDecodedFrameCount,\n creationTime: new Date()\n };\n }\n\n return result;\n }\n\n function play() {\n if (element) {\n element.autoplay = true;\n const p = element.play();\n if (p && (typeof Promise !== 'undefined') && (p instanceof Promise)) {\n p.catch((e) => {\n if (e.name === 'NotAllowedError') {\n eventBus.trigger(Events.PLAYBACK_NOT_ALLOWED);\n }\n log(`Caught pending play exception - continuing (${e})`);\n });\n }\n }\n }\n\n function isPaused() {\n return element ? element.paused : null;\n }\n\n function pause() {\n if (element) {\n element.pause();\n element.autoplay = false;\n }\n }\n\n function isSeeking() {\n return element ? element.seeking : null;\n }\n\n function getTime() {\n return element ? element.currentTime : null;\n }\n\n function getPlaybackRate() {\n return element ? element.playbackRate : null;\n }\n\n function getPlayedRanges() {\n return element ? element.played : null;\n }\n\n function getEnded() {\n return element ? element.ended : null;\n }\n\n function addEventListener(eventName, eventCallBack) {\n if (element) {\n element.addEventListener(eventName, eventCallBack);\n }\n }\n\n function removeEventListener(eventName, eventCallBack) {\n if (element) {\n element.removeEventListener(eventName, eventCallBack);\n }\n }\n\n function getReadyState() {\n return element ? element.readyState : NaN;\n }\n\n function getBufferRange() {\n return element ? element.buffered : null;\n }\n\n function getClientWidth() {\n return element ? element.clientWidth : NaN;\n }\n\n function getClientHeight() {\n return element ? element.clientHeight : NaN;\n }\n\n function getVideoWidth() {\n return element ? element.videoWidth : NaN;\n }\n\n function getVideoHeight() {\n return element ? element.videoHeight : NaN;\n }\n\n function getTextTracks() {\n return element ? element.textTracks : [];\n }\n\n function getTextTrack(kind, label, lang) {\n if (element) {\n for (var i = 0; i < element.textTracks.length; i++) {\n //label parameter could be a number (due to adaptationSet), but label, the attribute of textTrack, is a string => to modify...\n //label could also be undefined (due to adaptationSet)\n if (element.textTracks[i].kind === kind && (label ? element.textTracks[i].label == label : true) &&\n element.textTracks[i].language === lang) {\n return element.textTracks[i];\n }\n }\n }\n\n return null;\n }\n\n function addTextTrack(kind, label, lang) {\n if (element) {\n return element.addTextTrack(kind, label, lang);\n }\n return null;\n }\n\n function appendChild(childElement) {\n if (element) {\n element.appendChild(childElement);\n }\n }\n\n function removeChild(childElement) {\n if (element) {\n element.removeChild(childElement);\n }\n }\n\n instance = {\n initialize: initialize,\n setCurrentTime: setCurrentTime,\n play: play,\n isPaused: isPaused,\n pause: pause,\n isSeeking: isSeeking,\n getTime: getTime,\n getPlaybackRate: getPlaybackRate,\n getPlayedRanges: getPlayedRanges,\n getEnded: getEnded,\n setStallState: setStallState,\n getElement: getElement,\n setElement: setElement,\n setSource: setSource,\n getSource: getSource,\n getVideoContainer: getVideoContainer,\n setVideoContainer: setVideoContainer,\n getTTMLRenderingDiv: getTTMLRenderingDiv,\n setTTMLRenderingDiv: setTTMLRenderingDiv,\n getPlaybackQuality: getPlaybackQuality,\n addEventListener: addEventListener,\n removeEventListener: removeEventListener,\n getReadyState: getReadyState,\n getBufferRange: getBufferRange,\n getClientWidth: getClientWidth,\n getClientHeight: getClientHeight,\n getTextTracks: getTextTracks,\n getTextTrack: getTextTrack,\n addTextTrack: addTextTrack,\n appendChild: appendChild,\n removeChild: removeChild,\n getVideoWidth: getVideoWidth,\n getVideoHeight: getVideoHeight\n };\n\n return instance;\n}\n\nVideoModel.__dashjs_factory_name = 'VideoModel';\nexport default FactoryMaker.getSingletonFactory(VideoModel);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nclass CommonEncryption {\n /**\n * Find and return the ContentProtection element in the given array\n * that indicates support for MPEG Common Encryption\n *\n * @param {Array} cpArray array of content protection elements\n * @returns {Object|null} the Common Encryption content protection element or\n * null if one was not found\n */\n static findCencContentProtection(cpArray) {\n let retVal = null;\n for (let i = 0; i < cpArray.length; ++i) {\n let cp = cpArray[i];\n if (cp.schemeIdUri.toLowerCase() === 'urn:mpeg:dash:mp4protection:2011' &&\n cp.value.toLowerCase() === 'cenc')\n retVal = cp;\n }\n return retVal;\n }\n\n /**\n * Returns just the data portion of a single PSSH\n *\n * @param {ArrayBuffer} pssh - the PSSH\n * @return {ArrayBuffer} data portion of the PSSH\n */\n static getPSSHData(pssh) {\n let offset = 8; // Box size and type fields\n let view = new DataView(pssh);\n\n // Read version\n let version = view.getUint8(offset);\n\n offset += 20; // Version (1), flags (3), system ID (16)\n\n if (version > 0) {\n offset += 4 + (16 * view.getUint32(offset)); // Key ID count (4) and All key IDs (16*count)\n }\n\n offset += 4; // Data size\n return pssh.slice(offset);\n }\n\n /**\n * Returns the PSSH associated with the given key system from the concatenated\n * list of PSSH boxes in the given initData\n *\n * @param {KeySystem} keySystem the desired\n * key system\n * @param {ArrayBuffer} initData 'cenc' initialization data. Concatenated list of PSSH.\n * @returns {ArrayBuffer|null} The PSSH box data corresponding to the given key system, null if not found\n * or null if a valid association could not be found.\n */\n static getPSSHForKeySystem(keySystem, initData) {\n let psshList = CommonEncryption.parsePSSHList(initData);\n if (psshList.hasOwnProperty(keySystem.uuid.toLowerCase())) {\n return psshList[keySystem.uuid.toLowerCase()];\n }\n return null;\n }\n\n /**\n * Parse a standard common encryption PSSH which contains a simple\n * base64-encoding of the init data\n *\n * @param {Object} cpData the ContentProtection element\n * @param {BASE64} BASE64 reference\n * @returns {ArrayBuffer|null} the init data or null if not found\n */\n static parseInitDataFromContentProtection(cpData, BASE64) {\n if ('pssh' in cpData) {\n return BASE64.decodeArray(cpData.pssh.__text).buffer;\n }\n return null;\n }\n\n /**\n * Parses list of PSSH boxes into keysystem-specific PSSH data\n *\n * @param {ArrayBuffer} data - the concatenated list of PSSH boxes as provided by\n * CDM as initialization data when CommonEncryption content is detected\n * @returns {Object|Array} an object that has a property named according to each of\n * the detected key system UUIDs (e.g. 00000000-0000-0000-0000-0000000000)\n * and a ArrayBuffer (the entire PSSH box) as the property value\n */\n static parsePSSHList(data) {\n\n if (data === null)\n return [];\n\n let dv = new DataView(data);\n let done = false;\n let pssh = {};\n\n // TODO: Need to check every data read for end of buffer\n let byteCursor = 0;\n while (!done) {\n\n let size,\n nextBox,\n version,\n systemID,\n psshDataSize;\n let boxStart = byteCursor;\n\n if (byteCursor >= dv.buffer.byteLength)\n break;\n\n /* Box size */\n size = dv.getUint32(byteCursor);\n nextBox = byteCursor + size;\n byteCursor += 4;\n\n /* Verify PSSH */\n if (dv.getUint32(byteCursor) !== 0x70737368) {\n byteCursor = nextBox;\n continue;\n }\n byteCursor += 4;\n\n /* Version must be 0 or 1 */\n version = dv.getUint8(byteCursor);\n if (version !== 0 && version !== 1) {\n byteCursor = nextBox;\n continue;\n }\n byteCursor++;\n\n byteCursor += 3; /* skip flags */\n\n // 16-byte UUID/SystemID\n systemID = '';\n let i, val;\n for (i = 0; i < 4; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += (val.length === 1) ? '0' + val : val;\n }\n byteCursor += 4;\n systemID += '-';\n for (i = 0; i < 2; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += (val.length === 1) ? '0' + val : val;\n }\n byteCursor += 2;\n systemID += '-';\n for (i = 0; i < 2; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += (val.length === 1) ? '0' + val : val;\n }\n byteCursor += 2;\n systemID += '-';\n for (i = 0; i < 2; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += (val.length === 1) ? '0' + val : val;\n }\n byteCursor += 2;\n systemID += '-';\n for (i = 0; i < 6; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += (val.length === 1) ? '0' + val : val;\n }\n byteCursor += 6;\n\n systemID = systemID.toLowerCase();\n\n /* PSSH Data Size */\n psshDataSize = dv.getUint32(byteCursor);\n byteCursor += 4;\n\n /* PSSH Data */\n pssh[systemID] = dv.buffer.slice(boxStart, nextBox);\n byteCursor = nextBox;\n }\n\n return pssh;\n }\n}\n\nexport default CommonEncryption;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport Debug from '../../core/Debug';\n\nfunction VideoModel() {\n\n let instance,\n element,\n TTMLRenderingDiv,\n videoContainer,\n stalledStreams,\n previousPlaybackRate;\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let eventBus = EventBus(context).getInstance();\n\n function initialize() {\n stalledStreams = [];\n eventBus.on(Events.PLAYBACK_PLAYING, onPlaying, this);\n }\n\n function reset() {\n eventBus.off(Events.PLAYBACK_PLAYING, onPlaying, this);\n }\n\n function onPlaybackCanPlay() {\n element.playbackRate = previousPlaybackRate || 1;\n element.removeEventListener('canplay', onPlaybackCanPlay);\n }\n\n function setPlaybackRate(value) {\n if (!element) return;\n if (element.readyState <= 2 && value > 0) {\n // If media element hasn't loaded enough data to play yet, wait until it has\n element.addEventListener('canplay', onPlaybackCanPlay);\n } else {\n element.playbackRate = value;\n }\n }\n\n //TODO Move the DVR window calculations from MediaPlayer to Here.\n function setCurrentTime(currentTime) {\n //_currentTime = currentTime;\n\n // We don't set the same currentTime because it can cause firing unexpected Pause event in IE11\n // providing playbackRate property equals to zero.\n if (element.currentTime == currentTime) return;\n\n // TODO Despite the fact that MediaSource 'open' event has been fired IE11 cannot set videoElement.currentTime\n // immediately (it throws InvalidStateError). It seems that this is related to videoElement.readyState property\n // Initially it is 0, but soon after 'open' event it goes to 1 and setting currentTime is allowed. Chrome allows to\n // set currentTime even if readyState = 0.\n // setTimeout is used to workaround InvalidStateError in IE11\n try {\n element.currentTime = currentTime;\n } catch (e) {\n if (element.readyState === 0 && e.code === e.INVALID_STATE_ERR) {\n setTimeout(function () {\n element.currentTime = currentTime;\n }, 400);\n }\n }\n }\n\n function getElement() {\n return element;\n }\n\n function setElement(value) {\n element = value;\n // Workaround to force Firefox to fire the canplay event.\n element.preload = 'auto';\n }\n\n function setSource(source) {\n if (source) {\n element.src = source;\n } else {\n element.removeAttribute('src');\n element.load();\n }\n }\n\n function getSource() {\n return element.src;\n }\n\n function getVideoContainer() {\n return videoContainer;\n }\n\n function setVideoContainer(value) {\n videoContainer = value;\n }\n\n function getTTMLRenderingDiv() {\n return TTMLRenderingDiv;\n }\n\n function setTTMLRenderingDiv(div) {\n TTMLRenderingDiv = div;\n // The styling will allow the captions to match the video window size and position.\n TTMLRenderingDiv.style.position = 'absolute';\n TTMLRenderingDiv.style.display = 'flex';\n TTMLRenderingDiv.style.overflow = 'hidden';\n TTMLRenderingDiv.style.pointerEvents = 'none';\n TTMLRenderingDiv.style.top = 0;\n TTMLRenderingDiv.style.left = 0;\n }\n\n function setStallState(type, state) {\n stallStream(type, state);\n }\n\n function isStalled() {\n return (stalledStreams.length > 0);\n }\n\n function addStalledStream(type) {\n\n let event;\n\n if (type === null || element.seeking || stalledStreams.indexOf(type) !== -1) {\n return;\n }\n\n stalledStreams.push(type);\n if (stalledStreams.length === 1) {\n // Halt playback until nothing is stalled.\n event = document.createEvent('Event');\n event.initEvent('waiting', true, false);\n previousPlaybackRate = element.playbackRate;\n setPlaybackRate(0);\n element.dispatchEvent(event);\n }\n }\n\n function removeStalledStream(type) {\n let index = stalledStreams.indexOf(type);\n let event;\n\n if (type === null) {\n return;\n }\n if (index !== -1) {\n stalledStreams.splice(index, 1);\n }\n // If nothing is stalled resume playback.\n if (isStalled() === false && element.playbackRate === 0) {\n setPlaybackRate(previousPlaybackRate || 1);\n if (!element.paused) {\n event = document.createEvent('Event');\n event.initEvent('playing', true, false);\n element.dispatchEvent(event);\n }\n }\n }\n\n function stallStream(type, isStalled) {\n if (isStalled) {\n addStalledStream(type);\n } else {\n removeStalledStream(type);\n }\n }\n\n //Calling play on the element will emit playing - even if the stream is stalled. If the stream is stalled, emit a waiting event.\n function onPlaying() {\n if (element && isStalled() && element.playbackRate === 0) {\n const event = document.createEvent('Event');\n event.initEvent('waiting', true, false);\n element.dispatchEvent(event);\n }\n }\n\n function getPlaybackQuality() {\n let hasWebKit = ('webkitDroppedFrameCount' in element) && ('webkitDecodedFrameCount' in element);\n let hasQuality = ('getVideoPlaybackQuality' in element);\n let result = null;\n\n if (hasQuality) {\n result = element.getVideoPlaybackQuality();\n }\n else if (hasWebKit) {\n result = {\n droppedVideoFrames: element.webkitDroppedFrameCount,\n totalVideoFrames: element.webkitDroppedFrameCount + element.webkitDecodedFrameCount,\n creationTime: new Date()\n };\n }\n\n return result;\n }\n\n function play() {\n if (element) {\n element.autoplay = true;\n const p = element.play();\n if (p && (typeof Promise !== 'undefined') && (p instanceof Promise)) {\n p.catch((e) => {\n if (e.name === 'NotAllowedError') {\n eventBus.trigger(Events.PLAYBACK_NOT_ALLOWED);\n }\n log(`Caught pending play exception - continuing (${e})`);\n });\n }\n }\n }\n\n function isPaused() {\n return element ? element.paused : null;\n }\n\n function pause() {\n if (element) {\n element.pause();\n element.autoplay = false;\n }\n }\n\n function isSeeking() {\n return element ? element.seeking : null;\n }\n\n function getTime() {\n return element ? element.currentTime : null;\n }\n\n function getPlaybackRate() {\n return element ? element.playbackRate : null;\n }\n\n function getPlayedRanges() {\n return element ? element.played : null;\n }\n\n function getEnded() {\n return element ? element.ended : null;\n }\n\n function addEventListener(eventName, eventCallBack) {\n if (element) {\n element.addEventListener(eventName, eventCallBack);\n }\n }\n\n function removeEventListener(eventName, eventCallBack) {\n if (element) {\n element.removeEventListener(eventName, eventCallBack);\n }\n }\n\n function getReadyState() {\n return element ? element.readyState : NaN;\n }\n\n function getBufferRange() {\n return element ? element.buffered : null;\n }\n\n function getClientWidth() {\n return element ? element.clientWidth : NaN;\n }\n\n function getClientHeight() {\n return element ? element.clientHeight : NaN;\n }\n\n function getVideoWidth() {\n return element ? element.videoWidth : NaN;\n }\n\n function getVideoHeight() {\n return element ? element.videoHeight : NaN;\n }\n\n function getVideoRelativeOffsetTop() {\n return element && element.parentNode ? element.getBoundingClientRect().top - element.parentNode.getBoundingClientRect().top : NaN;\n }\n\n function getVideoRelativeOffsetLeft() {\n return element && element.parentNode ? element.getBoundingClientRect().left - element.parentNode.getBoundingClientRect().left : NaN;\n }\n\n function getTextTracks() {\n return element ? element.textTracks : [];\n }\n\n function getTextTrack(kind, label, lang, isTTML, isEmbedded) {\n if (element) {\n for (var i = 0; i < element.textTracks.length; i++) {\n //label parameter could be a number (due to adaptationSet), but label, the attribute of textTrack, is a string => to modify...\n //label could also be undefined (due to adaptationSet)\n if (element.textTracks[i].kind === kind && (label ? element.textTracks[i].label == label : true) &&\n element.textTracks[i].language === lang && element.textTracks[i].isTTML === isTTML && element.textTracks[i].isEmbedded === isEmbedded) {\n return element.textTracks[i];\n }\n }\n }\n\n return null;\n }\n\n function addTextTrack(kind, label, lang) {\n if (element) {\n return element.addTextTrack(kind, label, lang);\n }\n return null;\n }\n\n function appendChild(childElement) {\n if (element) {\n element.appendChild(childElement);\n //in Chrome, we need to differenciate textTrack with same lang, kind and label but different format (vtt, ttml, etc...)\n if (childElement.isTTML !== undefined) {\n element.textTracks[element.textTracks.length - 1].isTTML = childElement.isTTML;\n element.textTracks[element.textTracks.length - 1].isEmbedded = childElement.isEmbedded;\n }\n }\n }\n\n function removeChild(childElement) {\n if (element) {\n element.removeChild(childElement);\n }\n }\n\n instance = {\n initialize: initialize,\n setCurrentTime: setCurrentTime,\n play: play,\n isPaused: isPaused,\n pause: pause,\n isSeeking: isSeeking,\n getTime: getTime,\n getPlaybackRate: getPlaybackRate,\n getPlayedRanges: getPlayedRanges,\n getEnded: getEnded,\n setStallState: setStallState,\n getElement: getElement,\n setElement: setElement,\n setSource: setSource,\n getSource: getSource,\n getVideoContainer: getVideoContainer,\n setVideoContainer: setVideoContainer,\n getTTMLRenderingDiv: getTTMLRenderingDiv,\n setTTMLRenderingDiv: setTTMLRenderingDiv,\n getPlaybackQuality: getPlaybackQuality,\n addEventListener: addEventListener,\n removeEventListener: removeEventListener,\n getReadyState: getReadyState,\n getBufferRange: getBufferRange,\n getClientWidth: getClientWidth,\n getClientHeight: getClientHeight,\n getTextTracks: getTextTracks,\n getTextTrack: getTextTrack,\n addTextTrack: addTextTrack,\n appendChild: appendChild,\n removeChild: removeChild,\n getVideoWidth: getVideoWidth,\n getVideoHeight: getVideoHeight,\n getVideoRelativeOffsetTop: getVideoRelativeOffsetTop,\n getVideoRelativeOffsetLeft: getVideoRelativeOffsetLeft,\n reset: reset\n };\n\n return instance;\n}\n\nVideoModel.__dashjs_factory_name = 'VideoModel';\nexport default FactoryMaker.getSingletonFactory(VideoModel);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nclass CommonEncryption {\n /**\n * Find and return the ContentProtection element in the given array\n * that indicates support for MPEG Common Encryption\n *\n * @param {Array} cpArray array of content protection elements\n * @returns {Object|null} the Common Encryption content protection element or\n * null if one was not found\n */\n static findCencContentProtection(cpArray) {\n let retVal = null;\n for (let i = 0; i < cpArray.length; ++i) {\n let cp = cpArray[i];\n if (cp.schemeIdUri.toLowerCase() === 'urn:mpeg:dash:mp4protection:2011' &&\n cp.value.toLowerCase() === 'cenc')\n retVal = cp;\n }\n return retVal;\n }\n\n /**\n * Returns just the data portion of a single PSSH\n *\n * @param {ArrayBuffer} pssh - the PSSH\n * @return {ArrayBuffer} data portion of the PSSH\n */\n static getPSSHData(pssh) {\n let offset = 8; // Box size and type fields\n let view = new DataView(pssh);\n\n // Read version\n let version = view.getUint8(offset);\n\n offset += 20; // Version (1), flags (3), system ID (16)\n\n if (version > 0) {\n offset += 4 + (16 * view.getUint32(offset)); // Key ID count (4) and All key IDs (16*count)\n }\n\n offset += 4; // Data size\n return pssh.slice(offset);\n }\n\n /**\n * Returns the PSSH associated with the given key system from the concatenated\n * list of PSSH boxes in the given initData\n *\n * @param {KeySystem} keySystem the desired\n * key system\n * @param {ArrayBuffer} initData 'cenc' initialization data. Concatenated list of PSSH.\n * @returns {ArrayBuffer|null} The PSSH box data corresponding to the given key system, null if not found\n * or null if a valid association could not be found.\n */\n static getPSSHForKeySystem(keySystem, initData) {\n let psshList = CommonEncryption.parsePSSHList(initData);\n if (psshList.hasOwnProperty(keySystem.uuid.toLowerCase())) {\n return psshList[keySystem.uuid.toLowerCase()];\n }\n return null;\n }\n\n /**\n * Parse a standard common encryption PSSH which contains a simple\n * base64-encoding of the init data\n *\n * @param {Object} cpData the ContentProtection element\n * @param {BASE64} BASE64 reference\n * @returns {ArrayBuffer|null} the init data or null if not found\n */\n static parseInitDataFromContentProtection(cpData, BASE64) {\n if ('pssh' in cpData) {\n return BASE64.decodeArray(cpData.pssh.__text).buffer;\n }\n return null;\n }\n\n /**\n * Parses list of PSSH boxes into keysystem-specific PSSH data\n *\n * @param {ArrayBuffer} data - the concatenated list of PSSH boxes as provided by\n * CDM as initialization data when CommonEncryption content is detected\n * @returns {Object|Array} an object that has a property named according to each of\n * the detected key system UUIDs (e.g. 00000000-0000-0000-0000-0000000000)\n * and a ArrayBuffer (the entire PSSH box) as the property value\n */\n static parsePSSHList(data) {\n\n if (data === null)\n return [];\n\n let dv = new DataView(data.buffer || data); // data.buffer first for Uint8Array support\n let done = false;\n let pssh = {};\n\n // TODO: Need to check every data read for end of buffer\n let byteCursor = 0;\n while (!done) {\n\n let size,\n nextBox,\n version,\n systemID,\n psshDataSize;\n let boxStart = byteCursor;\n\n if (byteCursor >= dv.buffer.byteLength)\n break;\n\n /* Box size */\n size = dv.getUint32(byteCursor);\n nextBox = byteCursor + size;\n byteCursor += 4;\n\n /* Verify PSSH */\n if (dv.getUint32(byteCursor) !== 0x70737368) {\n byteCursor = nextBox;\n continue;\n }\n byteCursor += 4;\n\n /* Version must be 0 or 1 */\n version = dv.getUint8(byteCursor);\n if (version !== 0 && version !== 1) {\n byteCursor = nextBox;\n continue;\n }\n byteCursor++;\n\n byteCursor += 3; /* skip flags */\n\n // 16-byte UUID/SystemID\n systemID = '';\n let i, val;\n for (i = 0; i < 4; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += (val.length === 1) ? '0' + val : val;\n }\n byteCursor += 4;\n systemID += '-';\n for (i = 0; i < 2; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += (val.length === 1) ? '0' + val : val;\n }\n byteCursor += 2;\n systemID += '-';\n for (i = 0; i < 2; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += (val.length === 1) ? '0' + val : val;\n }\n byteCursor += 2;\n systemID += '-';\n for (i = 0; i < 2; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += (val.length === 1) ? '0' + val : val;\n }\n byteCursor += 2;\n systemID += '-';\n for (i = 0; i < 6; i++) {\n val = dv.getUint8(byteCursor + i).toString(16);\n systemID += (val.length === 1) ? '0' + val : val;\n }\n byteCursor += 6;\n\n systemID = systemID.toLowerCase();\n\n /* PSSH Data Size */\n psshDataSize = dv.getUint32(byteCursor);\n byteCursor += 4;\n\n /* PSSH Data */\n pssh[systemID] = dv.buffer.slice(boxStart, nextBox);\n byteCursor = nextBox;\n }\n\n return pssh;\n }\n}\n\nexport default CommonEncryption;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport ProtectionController from './controllers/ProtectionController';\nimport ProtectionKeyController from './controllers/ProtectionKeyController';\nimport ProtectionEvents from './ProtectionEvents';\nimport ProtectionModel_21Jan2015 from './models/ProtectionModel_21Jan2015';\nimport ProtectionModel_3Feb2014 from './models/ProtectionModel_3Feb2014';\nimport ProtectionModel_01b from './models/ProtectionModel_01b';\n\nconst APIS_ProtectionModel_01b = [\n // Un-prefixed as per spec\n {\n // Video Element\n generateKeyRequest: 'generateKeyRequest',\n addKey: 'addKey',\n cancelKeyRequest: 'cancelKeyRequest',\n\n // Events\n needkey: 'needkey',\n keyerror: 'keyerror',\n keyadded: 'keyadded',\n keymessage: 'keymessage'\n },\n // Webkit-prefixed (early Chrome versions and Chrome with EME disabled in chrome://flags)\n {\n // Video Element\n generateKeyRequest: 'webkitGenerateKeyRequest',\n addKey: 'webkitAddKey',\n cancelKeyRequest: 'webkitCancelKeyRequest',\n\n // Events\n needkey: 'webkitneedkey',\n keyerror: 'webkitkeyerror',\n keyadded: 'webkitkeyadded',\n keymessage: 'webkitkeymessage'\n }\n];\n\nconst APIS_ProtectionModel_3Feb2014 = [\n // Un-prefixed as per spec\n // Chrome 38-39 (and some earlier versions) with chrome://flags -- Enable Encrypted Media Extensions\n {\n // Video Element\n setMediaKeys: 'setMediaKeys',\n // MediaKeys\n MediaKeys: 'MediaKeys',\n // MediaKeySession\n release: 'close',\n\n // Events\n needkey: 'needkey',\n error: 'keyerror',\n message: 'keymessage',\n ready: 'keyadded',\n close: 'keyclose'\n },\n // MS-prefixed (IE11, Windows 8.1)\n {\n // Video Element\n setMediaKeys: 'msSetMediaKeys',\n // MediaKeys\n MediaKeys: 'MSMediaKeys',\n // MediaKeySession\n release: 'close',\n // Events\n needkey: 'msneedkey',\n error: 'mskeyerror',\n message: 'mskeymessage',\n ready: 'mskeyadded',\n close: 'mskeyclose'\n }\n];\n\nfunction Protection() {\n\n let instance;\n let context = this.context;\n\n /**\n * Create a ProtectionController and associated ProtectionModel for use with\n * a single piece of content.\n *\n * @param {Object} config\n * @return {ProtectionController} protection controller\n *\n */\n function createProtectionSystem(config) {\n\n let controller = null;\n\n let protectionKeyController = ProtectionKeyController(context).getInstance();\n protectionKeyController.setConfig({log: config.log, BASE64: config.BASE64});\n protectionKeyController.initialize();\n\n let protectionModel = getProtectionModel(config);\n\n if (!controller && protectionModel) {//TODO add ability to set external controller if still needed at all?\n controller = ProtectionController(context).create({\n protectionModel: protectionModel,\n protectionKeyController: protectionKeyController,\n adapter: config.adapter,\n eventBus: config.eventBus,\n log: config.log,\n events: config.events,\n BASE64: config.BASE64,\n Constants: config.Constants\n });\n config.capabilities.setEncryptedMediaSupported(true);\n }\n return controller;\n }\n\n function getProtectionModel(config) {\n\n let log = config.log;\n let eventBus = config.eventBus;\n let errHandler = config.errHandler;\n let videoElement = config.videoModel.getElement();\n\n if (videoElement.onencrypted !== undefined &&\n videoElement.mediaKeys !== undefined &&\n navigator.requestMediaKeySystemAccess !== undefined &&\n typeof navigator.requestMediaKeySystemAccess === 'function') {\n\n log('EME detected on this user agent! (ProtectionModel_21Jan2015)');\n return ProtectionModel_21Jan2015(context).create({log: log, eventBus: eventBus, events: config.events});\n\n } else if (getAPI(videoElement, APIS_ProtectionModel_3Feb2014)) {\n\n log('EME detected on this user agent! (ProtectionModel_3Feb2014)');\n return ProtectionModel_3Feb2014(context).create({log: log, eventBus: eventBus, events: config.events, api: getAPI(videoElement, APIS_ProtectionModel_3Feb2014)});\n\n } else if (getAPI(videoElement, APIS_ProtectionModel_01b)) {\n\n log('EME detected on this user agent! (ProtectionModel_01b)');\n return ProtectionModel_01b(context).create({log: log, eventBus: eventBus, errHandler: errHandler, events: config.events, api: getAPI(videoElement, APIS_ProtectionModel_01b)});\n\n } else {\n\n log('No supported version of EME detected on this user agent! - Attempts to play encrypted content will fail!');\n return null;\n\n }\n }\n\n function getAPI(videoElement, apis) {\n\n for (let i = 0; i < apis.length; i++) {\n let api = apis[i];\n // detect if api is supported by browser\n // check only first function in api -> should be fine\n if (typeof videoElement[api[Object.keys(api)[0]]] !== 'function') {\n continue;\n }\n\n return api;\n }\n\n return null;\n }\n\n instance = {\n createProtectionSystem: createProtectionSystem\n };\n\n return instance;\n}\n\nProtection.__dashjs_factory_name = 'Protection';\nlet factory = dashjs.FactoryMaker.getClassFactory(Protection); /* jshint ignore:line */\nfactory.events = ProtectionEvents;\ndashjs.FactoryMaker.updateClassFactory(Protection.__dashjs_factory_name, factory); /* jshint ignore:line */\nexport default factory;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventsBase from '../../core/events/EventsBase';\n/**\n * @class\n *\n */\nclass ProtectionEvents extends EventsBase {\n /**\n * @description Public facing external events to be used when including protection package.\n * All public events will be aggregated into the MediaPlayerEvents Class and can be accessed\n * via MediaPlayer.events. public_ is the prefix that we use to move event names to MediaPlayerEvents.\n */\n constructor () {\n super();\n\n /**\n * Event ID for events delivered when the protection set receives\n * a key message from the CDM\n *\n * @ignore\n */\n this.INTERNAL_KEY_MESSAGE = 'internalKeyMessage';\n\n /**\n * Event ID for events delivered when a key system selection procedure\n * completes\n * @ignore\n */\n this.INTERNAL_KEY_SYSTEM_SELECTED = 'internalKeySystemSelected';\n\n /**\n * Event ID for events delivered when a new key has been added\n *\n * @constant\n * @deprecated The latest versions of the EME specification no longer\n * use this event. {@MediaPlayer.models.protectionModel.eventList.KEY_STATUSES_CHANGED}\n * is preferred.\n * @event ProtectionEvents#KEY_ADDED\n */\n this.KEY_ADDED = 'public_keyAdded';\n /**\n * Event ID for events delivered when an error is encountered by the CDM\n * while processing a license server response message\n * @event ProtectionEvents#KEY_ERROR\n */\n this.KEY_ERROR = 'public_keyError';\n\n /**\n * Event ID for events delivered when the protection set receives\n * a key message from the CDM\n * @event ProtectionEvents#KEY_MESSAGE\n */\n this.KEY_MESSAGE = 'public_keyMessage';\n\n /**\n * Event ID for events delivered when a key session close\n * process has completed\n * @event ProtectionEvents#KEY_SESSION_CLOSED\n */\n this.KEY_SESSION_CLOSED = 'public_keySessionClosed';\n\n /**\n * Event ID for events delivered when a new key sessions creation\n * process has completed\n * @event ProtectionEvents#KEY_SESSION_CREATED\n */\n this.KEY_SESSION_CREATED = 'public_keySessionCreated';\n\n /**\n * Event ID for events delivered when a key session removal\n * process has completed\n * @event ProtectionEvents#KEY_SESSION_REMOVED\n */\n this.KEY_SESSION_REMOVED = 'public_keySessionRemoved';\n\n\n /**\n * Event ID for events delivered when the status of one or more\n * decryption keys has changed\n * @event ProtectionEvents#KEY_STATUSES_CHANGED\n */\n this.KEY_STATUSES_CHANGED = 'public_keyStatusesChanged';\n\n /**\n * Event ID for events delivered when a key system access procedure\n * has completed\n * @ignore\n */\n this.KEY_SYSTEM_ACCESS_COMPLETE = 'keySystemAccessComplete';\n\n /**\n * Event ID for events delivered when a key system selection procedure\n * completes\n * @event ProtectionEvents#KEY_SYSTEM_SELECTED\n */\n this.KEY_SYSTEM_SELECTED = 'public_keySystemSelected';\n\n /**\n * Event ID for events delivered when a license request procedure\n * has completed\n * @event ProtectionEvents#LICENSE_REQUEST_COMPLETE\n */\n this.LICENSE_REQUEST_COMPLETE = 'public_licenseRequestComplete';\n\n /**\n * Event ID for needkey/encrypted events\n * @ignore\n */\n this.NEED_KEY = 'needkey';\n\n /**\n * Event ID for events delivered when the Protection system is detected and created.\n * @event ProtectionEvents#PROTECTION_CREATED\n */\n this.PROTECTION_CREATED = 'public_protectioncreated';\n\n /**\n * Event ID for events delivered when the Protection system is destroyed.\n * @event ProtectionEvents#PROTECTION_DESTROYED\n */\n this.PROTECTION_DESTROYED = 'public_protectiondestroyed';\n\n /**\n * Event ID for events delivered when a new server certificate has\n * been delivered to the CDM\n * @ignore\n */\n this.SERVER_CERTIFICATE_UPDATED = 'serverCertificateUpdated';\n\n /**\n * Event ID for events delivered when the process of shutting down\n * a protection set has completed\n * @ignore\n */\n this.TEARDOWN_COMPLETE = 'protectionTeardownComplete';\n\n /**\n * Event ID for events delivered when a HTMLMediaElement has been\n * associated with the protection set\n * @ignore\n */\n this.VIDEO_ELEMENT_SELECTED = 'videoElementSelected';\n }\n}\n\nlet protectionEvents = new ProtectionEvents();\nexport default protectionEvents;\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CommonEncryption from '../CommonEncryption';\nimport MediaCapability from '../vo/MediaCapability';\nimport KeySystemConfiguration from '../vo/KeySystemConfiguration';\n\n/**\n * @module ProtectionController\n * @description Provides access to media protection information and functionality. Each\n * ProtectionController manages a single {@link MediaPlayer.models.ProtectionModel}\n * which encapsulates a set of protection information (EME APIs, selected key system,\n * key sessions). The APIs of ProtectionController mostly align with the latest EME\n * APIs. Key system selection is mostly automated when combined with app-overrideable\n * functionality provided in {@link ProtectionKeyController}.\n * @todo ProtectionController does almost all of its tasks automatically after init() is\n * called. Applications might want more control over this process and want to go through\n * each step manually (key system selection, session creation, session maintenance).\n * @param {Object} config\n */\n\nfunction ProtectionController(config) {\n\n const protectionKeyController = config.protectionKeyController;\n let protectionModel = config.protectionModel;\n let adapter = config.adapter;\n let eventBus = config.eventBus;\n const events = config.events;\n let log = config.log;\n let BASE64 = config.BASE64;\n const Constants = config.Constants;\n\n let instance,\n pendingNeedKeyData,\n audioInfo,\n videoInfo,\n protDataSet,\n initialized,\n sessionType,\n robustnessLevel,\n keySystem;\n\n function setup() {\n pendingNeedKeyData = [];\n initialized = false;\n sessionType = 'temporary';\n robustnessLevel = '';\n }\n\n /**\n * Initialize this protection system with a given manifest and optional audio\n * and video stream information.\n *\n * @param {Object} manifest the json version of the manifest XML document for the\n * desired content. Applications can download their manifest using\n * {@link module:MediaPlayer#retrieveManifest}\n * @param {StreamInfo} [aInfo] audio stream information\n * @param {StreamInfo} [vInfo] video stream information\n * @memberof module:ProtectionController\n * @instance\n * @todo This API will change when we have better support for allowing applications\n * to select different adaptation sets for playback. Right now it is clunky for\n * applications to create {@link StreamInfo} with the right information,\n */\n function initialize(manifest, aInfo, vInfo) {\n // TODO: We really need to do much more here... We need to be smarter about knowing\n // which adaptation sets for which we have initialized, including the default key ID\n // value from the ContentProtection elements so we know whether or not we still need to\n // select key systems and acquire keys.\n if (!initialized) {\n let streamInfo;\n\n if (!aInfo && !vInfo) {\n // Look for ContentProtection elements. InitData can be provided by either the\n // dash264drm:Pssh ContentProtection format or a DRM-specific format.\n streamInfo = adapter.getStreamsInfo()[0]; // TODO: Single period only for now. See TODO above\n }\n\n audioInfo = aInfo || (streamInfo ? adapter.getMediaInfoForType(streamInfo, Constants.AUDIO) : null);\n videoInfo = vInfo || (streamInfo ? adapter.getMediaInfoForType(streamInfo, Constants.VIDEO) : null);\n const mediaInfo = (videoInfo) ? videoInfo : audioInfo; // We could have audio or video only\n\n // ContentProtection elements are specified at the AdaptationSet level, so the CP for audio\n // and video will be the same. Just use one valid MediaInfo object\n const supportedKS = protectionKeyController.getSupportedKeySystemsFromContentProtection(mediaInfo.contentProtection);\n if (supportedKS && supportedKS.length > 0) {\n selectKeySystem(supportedKS, true);\n }\n\n initialized = true;\n }\n }\n\n /**\n * Returns a set of supported key systems and CENC initialization data\n * from the given array of ContentProtection elements. Only\n * key systems that are supported by this player will be returned.\n * Key systems are returned in priority order (highest first).\n *\n * @param {Array.} cps - array of content protection elements parsed\n * from the manifest\n * @returns {Array.} array of objects indicating which supported key\n * systems were found. Empty array is returned if no\n * supported key systems were found\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function getSupportedKeySystemsFromContentProtection(cps) {\n return protectionKeyController.getSupportedKeySystemsFromContentProtection(cps);\n }\n\n /**\n * Create a new key session associated with the given initialization data from\n * the MPD or from the PSSH box in the media\n *\n * @param {ArrayBuffer} initData the initialization data\n * @param {Uint8Array} cdmData the custom data to provide to licenser\n * @memberof module:ProtectionController\n * @instance\n * @fires ProtectionController#KeySessionCreated\n * @todo In older versions of the EME spec, there was a one-to-one relationship between\n * initialization data and key sessions. That is no longer true in the latest APIs. This\n * API will need to modified (and a new \"generateRequest(keySession, initData)\" API created)\n * to come up to speed with the latest EME standard\n */\n function createKeySession(initData, cdmData) {\n const initDataForKS = CommonEncryption.getPSSHForKeySystem(keySystem, initData);\n if (initDataForKS) {\n\n // Check for duplicate initData\n const currentInitData = protectionModel.getAllInitData();\n for (let i = 0; i < currentInitData.length; i++) {\n if (protectionKeyController.initDataEquals(initDataForKS, currentInitData[i])) {\n log('DRM: Ignoring initData because we have already seen it!');\n return;\n }\n }\n try {\n protectionModel.createKeySession(initDataForKS, sessionType, cdmData);\n } catch (error) {\n eventBus.trigger(events.KEY_SESSION_CREATED, {data: null, error: 'Error creating key session! ' + error.message});\n }\n } else {\n eventBus.trigger(events.KEY_SESSION_CREATED, {data: null, error: 'Selected key system is ' + keySystem.systemString + '. needkey/encrypted event contains no initData corresponding to that key system!'});\n }\n }\n\n /**\n * Loads a key session with the given session ID from persistent storage. This\n * essentially creates a new key session\n *\n * @param {string} sessionID\n * @memberof module:ProtectionController\n * @instance\n * @fires ProtectionController#KeySessionCreated\n */\n function loadKeySession(sessionID) {\n protectionModel.loadKeySession(sessionID);\n }\n\n /**\n * Removes the given key session from persistent storage and closes the session\n * as if {@link ProtectionController#closeKeySession}\n * was called\n *\n * @param {SessionToken} sessionToken the session\n * token\n * @memberof module:ProtectionController\n * @instance\n * @fires ProtectionController#KeySessionRemoved\n * @fires ProtectionController#KeySessionClosed\n */\n function removeKeySession(sessionToken) {\n protectionModel.removeKeySession(sessionToken);\n }\n\n /**\n * Closes the key session and releases all associated decryption keys. These\n * keys will no longer be available for decrypting media\n *\n * @param {SessionToken} sessionToken the session\n * token\n * @memberof module:ProtectionController\n * @instance\n * @fires ProtectionController#KeySessionClosed\n */\n function closeKeySession(sessionToken) {\n protectionModel.closeKeySession(sessionToken);\n }\n\n /**\n * Sets a server certificate for use by the CDM when signing key messages\n * intended for a particular license server. This will fire\n * an error event if a key system has not yet been selected.\n *\n * @param {ArrayBuffer} serverCertificate a CDM-specific license server\n * certificate\n * @memberof module:ProtectionController\n * @instance\n * @fires ProtectionController#ServerCertificateUpdated\n */\n function setServerCertificate(serverCertificate) {\n protectionModel.setServerCertificate(serverCertificate);\n }\n\n /**\n * Associate this protection system with the given HTMLMediaElement. This\n * causes the system to register for needkey/encrypted events from the given\n * element and provides a destination for setting of MediaKeys\n *\n * @param {HTMLMediaElement} element the media element to which the protection\n * system should be associated\n * @memberof module:ProtectionController\n * @instance\n */\n function setMediaElement(element) {\n if (element) {\n protectionModel.setMediaElement(element);\n eventBus.on(events.NEED_KEY, onNeedKey, this);\n eventBus.on(events.INTERNAL_KEY_MESSAGE, onKeyMessage, this);\n } else if (element === null) {\n protectionModel.setMediaElement(element);\n eventBus.off(events.NEED_KEY, onNeedKey, this);\n eventBus.off(events.INTERNAL_KEY_MESSAGE, onKeyMessage, this);\n }\n }\n\n /**\n * Sets the session type to use when creating key sessions. Either \"temporary\" or\n * \"persistent-license\". Default is \"temporary\".\n *\n * @param {string} value the session type\n * @memberof module:ProtectionController\n * @instance\n */\n function setSessionType(value) {\n sessionType = value;\n }\n\n /**\n * Sets the robustness level for video and audio capabilities. Optional to remove Chrome warnings.\n * Possible values are SW_SECURE_CRYPTO, SW_SECURE_DECODE, HW_SECURE_CRYPTO, HW_SECURE_CRYPTO, HW_SECURE_DECODE, HW_SECURE_ALL.\n *\n * @param {string} level the robustness level\n * @memberof module:ProtectionController\n * @instance\n */\n function setRobustnessLevel(level) {\n robustnessLevel = level;\n }\n\n /**\n * Attach KeySystem-specific data to use for license acquisition with EME\n *\n * @param {Object} data an object containing property names corresponding to\n * key system name strings (e.g. \"org.w3.clearkey\") and associated values\n * being instances of {@link ProtectionData}\n * @memberof module:ProtectionController\n * @instance\n */\n function setProtectionData(data) {\n protDataSet = data;\n protectionKeyController.setProtectionData(data);\n }\n\n /**\n * Destroys all protection data associated with this protection set. This includes\n * deleting all key sessions. In the case of persistent key sessions, the sessions\n * will simply be unloaded and not deleted. Additionally, if this protection set is\n * associated with a HTMLMediaElement, it will be detached from that element.\n *\n * @memberof module:ProtectionController\n * @instance\n */\n function reset() {\n setMediaElement(null);\n\n keySystem = undefined;//TODO-Refactor look at why undefined is needed for this. refactor\n\n if (protectionModel) {\n protectionModel.reset();\n protectionModel = null;\n }\n }\n\n ///////////////\n // Private\n ///////////////\n\n function getProtData(keySystem) {\n let protData = null;\n const keySystemString = keySystem.systemString;\n\n if (protDataSet) {\n protData = (keySystemString in protDataSet) ? protDataSet[keySystemString] : null;\n }\n return protData;\n }\n\n function getKeySystemConfiguration(keySystem) {\n const protData = getProtData(keySystem);\n const audioCapabilities = [];\n const videoCapabilities = [];\n const audioRobustness = (protData && protData.audioRobustness && protData.audioRobustness.length > 0) ? protData.audioRobustness : robustnessLevel;\n const videoRobustness = (protData && protData.videoRobustness && protData.videoRobustness.length > 0) ? protData.videoRobustness : robustnessLevel;\n\n if (audioInfo) {\n audioCapabilities.push(new MediaCapability(audioInfo.codec, audioRobustness));\n }\n if (videoInfo) {\n videoCapabilities.push(new MediaCapability(videoInfo.codec, videoRobustness));\n }\n\n return new KeySystemConfiguration(\n audioCapabilities, videoCapabilities, 'optional',\n (sessionType === 'temporary') ? 'optional' : 'required',\n [sessionType]);\n }\n\n function selectKeySystem(supportedKS, fromManifest) {\n const self = this;\n const requestedKeySystems = [];\n\n let ksIdx;\n if (keySystem) {\n // We have a key system\n for (ksIdx = 0; ksIdx < supportedKS.length; ksIdx++) {\n if (keySystem === supportedKS[ksIdx].ks) {\n\n requestedKeySystems.push({ks: supportedKS[ksIdx].ks, configs: [getKeySystemConfiguration(keySystem)]});\n\n // Ensure that we would be granted key system access using the key\n // system and codec information\n const onKeySystemAccessComplete = function (event) {\n eventBus.off(events.KEY_SYSTEM_ACCESS_COMPLETE, onKeySystemAccessComplete, self);\n if (event.error) {\n if (!fromManifest) {\n eventBus.trigger(events.KEY_SYSTEM_SELECTED, {error: 'DRM: KeySystem Access Denied! -- ' + event.error});\n }\n } else {\n log('DRM: KeySystem Access Granted');\n eventBus.trigger(events.KEY_SYSTEM_SELECTED, {data: event.data});\n createKeySession(supportedKS[ksIdx].initData, supportedKS[ksIdx].cdmData);\n }\n };\n eventBus.on(events.KEY_SYSTEM_ACCESS_COMPLETE, onKeySystemAccessComplete, self);\n protectionModel.requestKeySystemAccess(requestedKeySystems);\n break;\n }\n }\n }\n else if (keySystem === undefined) {\n // First time through, so we need to select a key system\n keySystem = null;\n pendingNeedKeyData.push(supportedKS);\n\n // Add all key systems to our request list since we have yet to select a key system\n for (let i = 0; i < supportedKS.length; i++) {\n requestedKeySystems.push({ks: supportedKS[i].ks, configs: [getKeySystemConfiguration(supportedKS[i].ks)]});\n }\n\n let keySystemAccess;\n const onKeySystemAccessComplete = function (event) {\n eventBus.off(events.KEY_SYSTEM_ACCESS_COMPLETE, onKeySystemAccessComplete, self);\n if (event.error) {\n keySystem = undefined;\n eventBus.off(events.INTERNAL_KEY_SYSTEM_SELECTED, onKeySystemSelected, self);\n\n if (!fromManifest) {\n eventBus.trigger(events.KEY_SYSTEM_SELECTED, {data: null, error: 'DRM: KeySystem Access Denied! -- ' + event.error});\n }\n } else {\n keySystemAccess = event.data;\n log('DRM: KeySystem Access Granted (' + keySystemAccess.keySystem.systemString + ')! Selecting key system...');\n protectionModel.selectKeySystem(keySystemAccess);\n }\n };\n var onKeySystemSelected = function (event) {\n eventBus.off(events.INTERNAL_KEY_SYSTEM_SELECTED, onKeySystemSelected, self);\n eventBus.off(events.KEY_SYSTEM_ACCESS_COMPLETE, onKeySystemAccessComplete, self);\n if (!event.error) {\n keySystem = protectionModel.getKeySystem();\n eventBus.trigger(events.KEY_SYSTEM_SELECTED, {data: keySystemAccess});\n // Set server certificate from protData\n const protData = getProtData(keySystem);\n if (protData && protData.serverCertificate && protData.serverCertificate.length > 0) {\n protectionModel.setServerCertificate(BASE64.decodeArray(protData.serverCertificate).buffer);\n }\n for (let i = 0; i < pendingNeedKeyData.length; i++) {\n for (ksIdx = 0; ksIdx < pendingNeedKeyData[i].length; ksIdx++) {\n if (keySystem === pendingNeedKeyData[i][ksIdx].ks) {\n createKeySession(pendingNeedKeyData[i][ksIdx].initData, pendingNeedKeyData[i][ksIdx].cdmData);\n break;\n }\n }\n }\n } else {\n keySystem = undefined;\n if (!fromManifest) {\n eventBus.trigger(events.KEY_SYSTEM_SELECTED, {data: null, error: 'DRM: Error selecting key system! -- ' + event.error});\n }\n }\n };\n eventBus.on(events.INTERNAL_KEY_SYSTEM_SELECTED, onKeySystemSelected, self);\n eventBus.on(events.KEY_SYSTEM_ACCESS_COMPLETE, onKeySystemAccessComplete, self);\n protectionModel.requestKeySystemAccess(requestedKeySystems);\n } else {\n // We are in the process of selecting a key system, so just save the data\n pendingNeedKeyData.push(supportedKS);\n }\n }\n\n function sendLicenseRequestCompleteEvent(data, error) {\n eventBus.trigger(events.LICENSE_REQUEST_COMPLETE, {data: data, error: error});\n }\n\n function onKeyMessage(e) {\n log('DRM: onKeyMessage');\n if (e.error) {\n log(e.error);\n return;\n }\n\n // Dispatch event to applications indicating we received a key message\n const keyMessage = e.data;\n eventBus.trigger(events.KEY_MESSAGE, {data: keyMessage});\n const messageType = (keyMessage.messageType) ? keyMessage.messageType : 'license-request';\n const message = keyMessage.message;\n const sessionToken = keyMessage.sessionToken;\n const protData = getProtData(keySystem);\n const keySystemString = keySystem.systemString;\n const licenseServerData = protectionKeyController.getLicenseServer(keySystem, protData, messageType);\n const eventData = { sessionToken: sessionToken, messageType: messageType };\n\n // Message not destined for license server\n if (!licenseServerData) {\n log('DRM: License server request not required for this message (type = ' + e.data.messageType + '). Session ID = ' + sessionToken.getSessionID());\n sendLicenseRequestCompleteEvent(eventData);\n return;\n }\n\n // Perform any special handling for ClearKey\n if (protectionKeyController.isClearKey(keySystem)) {\n const clearkeys = protectionKeyController.processClearKeyLicenseRequest(protData, message);\n if (clearkeys) {\n log('DRM: ClearKey license request handled by application!');\n sendLicenseRequestCompleteEvent(eventData);\n protectionModel.updateKeySession(sessionToken, clearkeys);\n return;\n }\n }\n\n // All remaining key system scenarios require a request to a remote license server\n const xhr = new XMLHttpRequest();\n\n // Determine license server URL\n let url = null;\n if (protData && protData.serverURL) {\n const serverURL = protData.serverURL;\n if (typeof serverURL === 'string' && serverURL !== '') {\n url = serverURL;\n } else if (typeof serverURL === 'object' && serverURL.hasOwnProperty(messageType)) {\n url = serverURL[messageType];\n }\n } else if (protData && protData.laURL && protData.laURL !== '') {\n // TODO: Deprecated!\n url = protData.laURL;\n } else {\n url = keySystem.getLicenseServerURLFromInitData(CommonEncryption.getPSSHData(sessionToken.initData));\n if (!url) {\n url = e.data.laURL;\n }\n }\n // Possibly update or override the URL based on the message\n url = licenseServerData.getServerURLFromMessage(url, message, messageType);\n\n // Ensure valid license server URL\n if (!url) {\n sendLicenseRequestCompleteEvent(eventData, 'DRM: No license server URL specified!');\n return;\n }\n\n const reportError = function (xhr, eventData, keySystemString, messageType) {\n const errorMsg = ((xhr.response) ? licenseServerData.getErrorResponse(xhr.response, keySystemString, messageType) : 'NONE');\n sendLicenseRequestCompleteEvent(eventData, 'DRM: ' + keySystemString + ' update, XHR complete. status is \"' + xhr.statusText + '\" (' + xhr.status + '), readyState is ' + xhr.readyState + '. Response is ' + errorMsg);\n };\n\n xhr.open(licenseServerData.getHTTPMethod(messageType), url, true);\n xhr.responseType = licenseServerData.getResponseType(keySystemString, messageType);\n xhr.onload = function () {\n if (this.status == 200) {\n const licenseMessage = licenseServerData.getLicenseMessage(this.response, keySystemString, messageType);\n if (licenseMessage !== null) {\n sendLicenseRequestCompleteEvent(eventData);\n protectionModel.updateKeySession(sessionToken, licenseMessage);\n } else {\n reportError(this, eventData, keySystemString, messageType);\n }\n } else {\n reportError(this, eventData, keySystemString, messageType);\n }\n };\n xhr.onabort = function () {\n sendLicenseRequestCompleteEvent(eventData, 'DRM: ' + keySystemString + ' update, XHR aborted. status is \"' + this.statusText + '\" (' + this.status + '), readyState is ' + this.readyState);\n };\n xhr.onerror = function () {\n sendLicenseRequestCompleteEvent(eventData, 'DRM: ' + keySystemString + ' update, XHR error. status is \"' + this.statusText + '\" (' + this.status + '), readyState is ' + this.readyState);\n };\n\n // Set optional XMLHttpRequest headers from protection data and message\n const updateHeaders = function (headers) {\n if (headers) {\n for (const key in headers) {\n if ('authorization' === key.toLowerCase()) {\n xhr.withCredentials = true;\n }\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n };\n if (protData) {\n updateHeaders(protData.httpRequestHeaders);\n }\n updateHeaders(keySystem.getRequestHeadersFromMessage(message));\n\n // Set withCredentials property from protData\n if (protData && protData.withCredentials) {\n xhr.withCredentials = true;\n }\n\n xhr.send(keySystem.getLicenseRequestFromMessage(message));\n }\n\n function onNeedKey(event) {\n log('DRM: onNeedKey');\n // Ignore non-cenc initData\n if (event.key.initDataType !== 'cenc') {\n log('DRM: Only \\'cenc\\' initData is supported! Ignoring initData of type: ' + event.key.initDataType);\n return;\n }\n\n // Some browsers return initData as Uint8Array (IE), some as ArrayBuffer (Chrome).\n // Convert to ArrayBuffer\n let abInitData = event.key.initData;\n if (ArrayBuffer.isView(abInitData)) {\n abInitData = abInitData.buffer;\n }\n\n // If key system has already been selected and initData already seen, then do nothing\n if (keySystem) {\n const initDataForKS = CommonEncryption.getPSSHForKeySystem(keySystem, abInitData);\n if (initDataForKS) {\n\n // Check for duplicate initData\n const currentInitData = protectionModel.getAllInitData();\n for (let i = 0; i < currentInitData.length; i++) {\n if (protectionKeyController.initDataEquals(initDataForKS, currentInitData[i])) {\n log('DRM: Ignoring initData because we have already seen it!');\n return;\n }\n }\n }\n }\n\n log('DRM: initData:', String.fromCharCode.apply(null, new Uint8Array(abInitData)));\n\n const supportedKS = protectionKeyController.getSupportedKeySystems(abInitData, protDataSet);\n if (supportedKS.length === 0) {\n log('DRM: Received needkey event with initData, but we don\\'t support any of the key systems!');\n return;\n }\n\n selectKeySystem(supportedKS, false);\n }\n\n function getKeySystems() {\n return protectionKeyController ? protectionKeyController.getKeySystems() : [];\n }\n\n instance = {\n initialize: initialize,\n createKeySession: createKeySession,\n loadKeySession: loadKeySession,\n removeKeySession: removeKeySession,\n closeKeySession: closeKeySession,\n setServerCertificate: setServerCertificate,\n setMediaElement: setMediaElement,\n setSessionType: setSessionType,\n setRobustnessLevel: setRobustnessLevel,\n setProtectionData: setProtectionData,\n getSupportedKeySystemsFromContentProtection: getSupportedKeySystemsFromContentProtection,\n getKeySystems: getKeySystems,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nProtectionController.__dashjs_factory_name = 'ProtectionController';\nexport default dashjs.FactoryMaker.getClassFactory(ProtectionController); /* jshint ignore:line */\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport CommonEncryption from './../CommonEncryption';\nimport KeySystemClearKey from './../drm/KeySystemClearKey';\nimport KeySystemWidevine from './../drm/KeySystemWidevine';\nimport KeySystemPlayReady from './../drm/KeySystemPlayReady';\nimport DRMToday from './../servers/DRMToday';\nimport PlayReady from './../servers/PlayReady';\nimport Widevine from './../servers/Widevine';\nimport ClearKey from './../servers/ClearKey';\n\n/**\n * @module ProtectionKeyController\n * @description Media protection key system functionality that can be modified/overridden by applications\n */\nfunction ProtectionKeyController() {\n\n let context = this.context;\n\n let instance,\n log,\n keySystems,\n BASE64,\n clearkeyKeySystem;\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.log) {\n log = config.log;\n }\n\n if (config.BASE64) {\n BASE64 = config.BASE64;\n }\n }\n\n function initialize() {\n keySystems = [];\n\n let keySystem;\n\n // PlayReady\n keySystem = KeySystemPlayReady(context).getInstance({BASE64: BASE64});\n keySystems.push(keySystem);\n\n // Widevine\n keySystem = KeySystemWidevine(context).getInstance({BASE64: BASE64});\n keySystems.push(keySystem);\n\n // ClearKey\n keySystem = KeySystemClearKey(context).getInstance({BASE64: BASE64});\n keySystems.push(keySystem);\n clearkeyKeySystem = keySystem;\n }\n\n /**\n * Returns a prioritized list of key systems supported\n * by this player (not necessarily those supported by the\n * user agent)\n *\n * @returns {Array.} a prioritized\n * list of key systems\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function getKeySystems() {\n return keySystems;\n }\n\n /**\n * Returns the key system associated with the given key system string\n * name (i.e. 'org.w3.clearkey')\n *\n * @param {string} systemString the system string\n * @returns {KeySystem|null} the key system\n * or null if no supported key system is associated with the given key\n * system string\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function getKeySystemBySystemString(systemString) {\n for (let i = 0; i < keySystems.length; i++) {\n if (keySystems[i].systemString === systemString) {\n return keySystems[i];\n }\n }\n return null;\n }\n\n /**\n * Determines whether the given key system is ClearKey. This is\n * necessary because the EME spec defines ClearKey and its method\n * for providing keys to the key session; and this method has changed\n * between the various API versions. Our EME-specific ProtectionModels\n * must know if the system is ClearKey so that it can format the keys\n * according to the particular spec version.\n *\n * @param {Object} keySystem the key\n * @returns {boolean} true if this is the ClearKey key system, false\n * otherwise\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function isClearKey(keySystem) {\n return (keySystem === clearkeyKeySystem);\n }\n\n /**\n * Check equality of initData array buffers.\n *\n * @param {ArrayBuffer} initData1 - first initData\n * @param {ArrayBuffer} initData2 - second initData\n * @returns {boolean} true if the initData arrays are equal in size and\n * contents, false otherwise\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function initDataEquals(initData1, initData2) {\n if (initData1.byteLength === initData2.byteLength) {\n let data1 = new Uint8Array(initData1);\n let data2 = new Uint8Array(initData2);\n\n for (let j = 0; j < data1.length; j++) {\n if (data1[j] !== data2[j]) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n\n /**\n * Returns a set of supported key systems and CENC initialization data\n * from the given array of ContentProtection elements. Only\n * key systems that are supported by this player will be returned.\n * Key systems are returned in priority order (highest first).\n *\n * @param {Array.} cps - array of content protection elements parsed\n * from the manifest\n * @returns {Array.} array of objects indicating which supported key\n * systems were found. Empty array is returned if no\n * supported key systems were found\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function getSupportedKeySystemsFromContentProtection(cps) {\n let cp, ks, ksIdx, cpIdx;\n let supportedKS = [];\n\n if (cps) {\n for (ksIdx = 0; ksIdx < keySystems.length; ++ksIdx) {\n ks = keySystems[ksIdx];\n for (cpIdx = 0; cpIdx < cps.length; ++cpIdx) {\n cp = cps[cpIdx];\n if (cp.schemeIdUri.toLowerCase() === ks.schemeIdURI) {\n\n // Look for DRM-specific ContentProtection\n let initData = ks.getInitData(cp);\n if (!!initData) {\n supportedKS.push({\n ks: keySystems[ksIdx],\n initData: initData,\n cdmData: ks.getCDMData()\n });\n }\n }\n }\n }\n }\n return supportedKS;\n }\n\n /**\n * Returns key systems supported by this player for the given PSSH\n * initializationData. Only key systems supported by this player\n * that have protection data present will be returned. Key systems are returned in priority order\n * (highest priority first)\n *\n * @param {ArrayBuffer} initData Concatenated PSSH data for all DRMs\n * supported by the content\n * @param {ProtectionData} protDataSet user specified protection data - license server url etc\n * supported by the content\n * @returns {Array.} array of objects indicating which supported key\n * systems were found. Empty array is returned if no\n * supported key systems were found\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function getSupportedKeySystems(initData, protDataSet) {\n let supportedKS = [];\n let pssh = CommonEncryption.parsePSSHList(initData);\n\n for (let ksIdx = 0; ksIdx < keySystems.length; ++ksIdx) {\n let keySystemString = keySystems[ksIdx].systemString;\n let shouldNotFilterOutKeySystem = (protDataSet) ? keySystemString in protDataSet : true;\n\n if (keySystems[ksIdx].uuid in pssh && shouldNotFilterOutKeySystem) {\n supportedKS.push({\n ks: keySystems[ksIdx],\n initData: pssh[keySystems[ksIdx].uuid]\n });\n }\n }\n return supportedKS;\n }\n\n /**\n * Returns the license server implementation data that should be used for this request.\n *\n * @param {KeySystem} keySystem the key system\n * associated with this license request\n * @param {ProtectionData} protData protection data to use for the\n * request\n * @param {string} [messageType=\"license-request\"] the message type associated with this\n * request. Supported message types can be found\n * {@link https://w3c.github.io/encrypted-media/#idl-def-MediaKeyMessageType|here}.\n * @returns {LicenseServer|null} the license server\n * implementation that should be used for this request or null if the player should not\n * pass messages of the given type to a license server\n * @memberof module:ProtectionKeyController\n * @instance\n *\n */\n function getLicenseServer(keySystem, protData, messageType) {\n\n // Our default server implementations do not do anything with \"license-release\" or\n // \"individualization-request\" messages, so we just send a success event\n if (messageType === 'license-release' || messageType === 'individualization-request') {\n return null;\n }\n\n let licenseServerData = null;\n if (protData && protData.hasOwnProperty('drmtoday')) {\n licenseServerData = DRMToday(context).getInstance({BASE64: BASE64});\n } else if (keySystem.systemString === 'com.widevine.alpha') {\n licenseServerData = Widevine(context).getInstance();\n } else if (keySystem.systemString === 'com.microsoft.playready') {\n licenseServerData = PlayReady(context).getInstance();\n } else if (keySystem.systemString === 'org.w3.clearkey') {\n licenseServerData = ClearKey(context).getInstance();\n }\n\n return licenseServerData;\n }\n\n /**\n * Allows application-specific retrieval of ClearKey keys.\n *\n * @param {ProtectionData} protData protection data to use for the\n * request\n * @param {ArrayBuffer} message the key message from the CDM\n * @return {ClearKeyKeySet|null} the clear keys associated with\n * the request or null if no keys can be returned by this function\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function processClearKeyLicenseRequest(protData, message) {\n try {\n return clearkeyKeySystem.getClearKeysFromProtectionData(protData, message);\n } catch (error) {\n log('Failed to retrieve clearkeys from ProtectionData');\n return null;\n }\n }\n\n function setProtectionData(protectionDataSet) {\n var getProtectionData = function (keySystemString) {\n var protData = null;\n if (protectionDataSet) {\n protData = (keySystemString in protectionDataSet) ? protectionDataSet[keySystemString] : null;\n }\n return protData;\n };\n\n for (var i = 0; i < keySystems.length; i++) {\n var keySystem = keySystems[i];\n if (keySystem.hasOwnProperty('init')) {\n keySystem.init(getProtectionData(keySystem.systemString));\n }\n }\n }\n\n instance = {\n initialize: initialize,\n setProtectionData: setProtectionData,\n isClearKey: isClearKey,\n initDataEquals: initDataEquals,\n getKeySystems: getKeySystems,\n getKeySystemBySystemString: getKeySystemBySystemString,\n getSupportedKeySystemsFromContentProtection: getSupportedKeySystemsFromContentProtection,\n getSupportedKeySystems: getSupportedKeySystems,\n getLicenseServer: getLicenseServer,\n processClearKeyLicenseRequest: processClearKeyLicenseRequest,\n setConfig: setConfig\n };\n\n return instance;\n}\n\nProtectionKeyController.__dashjs_factory_name = 'ProtectionKeyController';\nexport default dashjs.FactoryMaker.getSingletonFactory(ProtectionKeyController); /* jshint ignore:line */\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport KeyPair from '../vo/KeyPair';\nimport ClearKeyKeySet from '../vo/ClearKeyKeySet';\nimport CommonEncryption from '../CommonEncryption';\n\nconst uuid = '1077efec-c0b2-4d02-ace3-3c1e52e2fb4b';\nconst systemString = 'org.w3.clearkey';\nconst schemeIdURI = 'urn:uuid:' + uuid;\n\nfunction KeySystemClearKey(config) {\n\n let instance;\n let BASE64 = config.BASE64;\n /**\n * Returns desired clearkeys (as specified in the CDM message) from protection data\n *\n * @param {ProtectionData} protectionData the protection data\n * @param {ArrayBuffer} message the ClearKey CDM message\n * @returns {ClearKeyKeySet} the key set or null if none found\n * @throws {Error} if a keyID specified in the CDM message was not found in the\n * protection data\n * @memberof KeySystemClearKey\n */\n function getClearKeysFromProtectionData(protectionData, message) {\n let clearkeySet = null;\n if (protectionData) {\n // ClearKey is the only system that does not require a license server URL, so we\n // handle it here when keys are specified in protection data\n let jsonMsg = JSON.parse(String.fromCharCode.apply(null, new Uint8Array(message)));\n let keyPairs = [];\n for (let i = 0; i < jsonMsg.kids.length; i++) {\n let clearkeyID = jsonMsg.kids[i];\n let clearkey = (protectionData.clearkeys.hasOwnProperty(clearkeyID)) ? protectionData.clearkeys[clearkeyID] : null;\n if (!clearkey) {\n throw new Error('DRM: ClearKey keyID (' + clearkeyID + ') is not known!');\n }\n // KeyIDs from CDM are not base64 padded. Keys may or may not be padded\n keyPairs.push(new KeyPair(clearkeyID, clearkey));\n }\n clearkeySet = new ClearKeyKeySet(keyPairs);\n }\n return clearkeySet;\n }\n\n function getInitData(cp) {\n return CommonEncryption.parseInitDataFromContentProtection(cp, BASE64);\n }\n\n function getRequestHeadersFromMessage(/*message*/) {\n return null;\n }\n\n function getLicenseRequestFromMessage(message) {\n return new Uint8Array(message);\n }\n\n function getLicenseServerURLFromInitData(/*initData*/) {\n return null;\n }\n\n function getCDMData() {\n return null;\n }\n\n instance = {\n uuid: uuid,\n schemeIdURI: schemeIdURI,\n systemString: systemString,\n getInitData: getInitData,\n getRequestHeadersFromMessage: getRequestHeadersFromMessage,\n getLicenseRequestFromMessage: getLicenseRequestFromMessage,\n getLicenseServerURLFromInitData: getLicenseServerURLFromInitData,\n getCDMData: getCDMData,\n getClearKeysFromProtectionData: getClearKeysFromProtectionData\n };\n\n return instance;\n}\n\nKeySystemClearKey.__dashjs_factory_name = 'KeySystemClearKey';\nexport default dashjs.FactoryMaker.getSingletonFactory(KeySystemClearKey); /* jshint ignore:line */\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Microsoft PlayReady DRM\n *\n * @class\n * @implements KeySystem\n */\nimport CommonEncryption from '../CommonEncryption';\n\nconst uuid = '9a04f079-9840-4286-ab92-e65be0885f95';\nconst systemString = 'com.microsoft.playready';\nconst schemeIdURI = 'urn:uuid:' + uuid;\nconst PRCDMData = '%CUSTOMDATA%';\nlet protData;\n\nfunction KeySystemPlayReady(config) {\n\n let instance;\n let messageFormat = 'utf16';\n let BASE64 = config ? config.BASE64 : null;\n\n function checkConfig() {\n if (!BASE64 || !BASE64.hasOwnProperty('decodeArray') || !BASE64.hasOwnProperty('decodeArray') ) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n function getRequestHeadersFromMessage(message) {\n let msg,\n xmlDoc;\n let headers = {};\n let parser = new DOMParser();\n let dataview = (messageFormat === 'utf16') ? new Uint16Array(message) : new Uint8Array(message);\n\n msg = String.fromCharCode.apply(null, dataview);\n xmlDoc = parser.parseFromString(msg, 'application/xml');\n\n let headerNameList = xmlDoc.getElementsByTagName('name');\n let headerValueList = xmlDoc.getElementsByTagName('value');\n for (let i = 0; i < headerNameList.length; i++) {\n headers[headerNameList[i].childNodes[0].nodeValue] = headerValueList[i].childNodes[0].nodeValue;\n }\n // some versions of the PlayReady CDM return 'Content' instead of 'Content-Type'.\n // this is NOT w3c conform and license servers may reject the request!\n // -> rename it to proper w3c definition!\n if (headers.hasOwnProperty('Content')) {\n headers['Content-Type'] = headers.Content;\n delete headers.Content;\n }\n return headers;\n }\n\n function getLicenseRequestFromMessage(message) {\n let msg,\n xmlDoc;\n let licenseRequest = null;\n let parser = new DOMParser();\n let dataview = (messageFormat === 'utf16') ? new Uint16Array(message) : new Uint8Array(message);\n\n checkConfig();\n msg = String.fromCharCode.apply(null, dataview);\n xmlDoc = parser.parseFromString(msg, 'application/xml');\n\n if (xmlDoc.getElementsByTagName('Challenge')[0]) {\n let Challenge = xmlDoc.getElementsByTagName('Challenge')[0].childNodes[0].nodeValue;\n if (Challenge) {\n licenseRequest = BASE64.decode(Challenge);\n }\n }\n return licenseRequest;\n }\n\n function getLicenseServerURLFromInitData(initData) {\n if (initData) {\n let data = new DataView(initData);\n let numRecords = data.getUint16(4, true);\n let offset = 6;\n let parser = new DOMParser();\n\n for (let i = 0; i < numRecords; i++) {\n // Parse the PlayReady Record header\n let recordType = data.getUint16(offset, true);\n offset += 2;\n let recordLength = data.getUint16(offset, true);\n offset += 2;\n if (recordType !== 0x0001) {\n offset += recordLength;\n continue;\n }\n\n let recordData = initData.slice(offset, offset + recordLength);\n let record = String.fromCharCode.apply(null, new Uint16Array(recordData));\n let xmlDoc = parser.parseFromString(record, 'application/xml');\n\n // First try \n if (xmlDoc.getElementsByTagName('LA_URL')[0]) {\n let laurl = xmlDoc.getElementsByTagName('LA_URL')[0].childNodes[0].nodeValue;\n if (laurl) {\n return laurl;\n }\n }\n\n // Optionally, try \n if (xmlDoc.getElementsByTagName('LUI_URL')[0]) {\n let luiurl = xmlDoc.getElementsByTagName('LUI_URL')[0].childNodes[0].nodeValue;\n if (luiurl) {\n return luiurl;\n }\n }\n }\n }\n\n return null;\n }\n\n function getInitData(cpData) {\n // * desc@ getInitData\n // * generate PSSH data from PROHeader defined in MPD file\n // * PSSH format:\n // * size (4)\n // * box type(PSSH) (8)\n // * Protection SystemID (16)\n // * protection system data size (4) - length of decoded PROHeader\n // * decoded PROHeader data from MPD file\n let PSSHBoxType = new Uint8Array([0x70, 0x73, 0x73, 0x68, 0x00, 0x00, 0x00, 0x00]); //'PSSH' 8 bytes\n let playreadySystemID = new Uint8Array([0x9a, 0x04, 0xf0, 0x79, 0x98, 0x40, 0x42, 0x86, 0xab, 0x92, 0xe6, 0x5b, 0xe0, 0x88, 0x5f, 0x95]);\n\n let byteCursor = 0;\n let uint8arraydecodedPROHeader = null;\n\n let PROSize,\n PSSHSize,\n PSSHBoxBuffer,\n PSSHBox,\n PSSHData;\n\n checkConfig();\n // Handle common encryption PSSH\n if ('pssh' in cpData) {\n return CommonEncryption.parseInitDataFromContentProtection(cpData, BASE64);\n }\n // Handle native MS PlayReady ContentProtection elements\n if ('pro' in cpData) {\n uint8arraydecodedPROHeader = BASE64.decodeArray(cpData.pro.__text);\n }\n else if ('prheader' in cpData) {\n uint8arraydecodedPROHeader = BASE64.decodeArray(cpData.prheader.__text);\n }\n else {\n return null;\n }\n\n PROSize = uint8arraydecodedPROHeader.length;\n PSSHSize = 0x4 + PSSHBoxType.length + playreadySystemID.length + 0x4 + PROSize;\n\n PSSHBoxBuffer = new ArrayBuffer(PSSHSize);\n\n PSSHBox = new Uint8Array(PSSHBoxBuffer);\n PSSHData = new DataView(PSSHBoxBuffer);\n\n PSSHData.setUint32(byteCursor, PSSHSize);\n byteCursor += 0x4;\n\n PSSHBox.set(PSSHBoxType, byteCursor);\n byteCursor += PSSHBoxType.length;\n\n PSSHBox.set(playreadySystemID, byteCursor);\n byteCursor += playreadySystemID.length;\n\n PSSHData.setUint32(byteCursor, PROSize);\n byteCursor += 0x4;\n\n PSSHBox.set(uint8arraydecodedPROHeader, byteCursor);\n byteCursor += PROSize;\n\n return PSSHBox.buffer;\n }\n\n /**\n * It seems that some PlayReady implementations return their XML-based CDM\n * messages using UTF16, while others return them as UTF8. Use this function\n * to modify the message format to expect when parsing CDM messages.\n *\n * @param {string} format the expected message format. Either \"utf8\" or \"utf16\".\n * @throws {Error} Specified message format is not one of \"utf8\" or \"utf16\"\n */\n function setPlayReadyMessageFormat(format) {\n if (format !== 'utf8' && format !== 'utf16') {\n throw new Error('Illegal PlayReady message format! -- ' + format);\n }\n messageFormat = format;\n }\n\n /**\n * Initialize the Key system with protection data\n * @param {Object} protectionData the protection data\n */\n function init(protectionData) {\n if (protectionData) {\n protData = protectionData;\n }\n }\n\n\n /**\n * Get Playready Custom data\n */\n function getCDMData() {\n var customData,\n cdmData,\n cdmDataBytes,\n i;\n\n checkConfig();\n if (protData && protData.cdmData) {\n\n // Convert custom data into multibyte string\n customData = [];\n for (i = 0; i < protData.cdmData.length; ++i) {\n customData.push(protData.cdmData.charCodeAt(i));\n customData.push(0);\n }\n customData = String.fromCharCode.apply(null, customData);\n\n // Encode in Base 64 the custom data string\n customData = BASE64.encode(customData);\n\n // Initialize CDM data with Base 64 encoded custom data\n // (see https://msdn.microsoft.com/en-us/library/dn457361.aspx)\n cdmData = PRCDMData.replace('%CUSTOMDATA%', customData);\n\n // Convert CDM data into multibyte characters\n cdmDataBytes = [];\n for (i = 0; i < cdmData.length; ++i) {\n cdmDataBytes.push(cdmData.charCodeAt(i));\n cdmDataBytes.push(0);\n }\n\n return new Uint8Array(cdmDataBytes).buffer;\n }\n\n return null;\n }\n\n instance = {\n uuid: uuid,\n schemeIdURI: schemeIdURI,\n systemString: systemString,\n getInitData: getInitData,\n getRequestHeadersFromMessage: getRequestHeadersFromMessage,\n getLicenseRequestFromMessage: getLicenseRequestFromMessage,\n getLicenseServerURLFromInitData: getLicenseServerURLFromInitData,\n getCDMData: getCDMData,\n setPlayReadyMessageFormat: setPlayReadyMessageFormat,\n init: init\n };\n\n return instance;\n}\n\nKeySystemPlayReady.__dashjs_factory_name = 'KeySystemPlayReady';\nexport default dashjs.FactoryMaker.getSingletonFactory(KeySystemPlayReady); /* jshint ignore:line */", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Google Widevine DRM\n *\n * @class\n * @implements MediaPlayer.dependencies.protection.KeySystem\n */\n\nimport CommonEncryption from '../CommonEncryption';\n\nconst uuid = 'edef8ba9-79d6-4ace-a3c8-27dcd51d21ed';\nconst systemString = 'com.widevine.alpha';\nconst schemeIdURI = 'urn:uuid:' + uuid;\n\nfunction KeySystemWidevine(config) {\n\n let instance;\n let protData = null;\n let BASE64 = config.BASE64;\n\n function init(protectionData) {\n if (protectionData) {\n protData = protectionData;\n }\n }\n\n function replaceKID(pssh, KID) {\n let pssh_array;\n let replace = true;\n let kidLen = 16;\n let pos;\n let i, j;\n\n pssh_array = new Uint8Array(pssh);\n\n for (i = 0; i <= pssh_array.length - (kidLen + 2); i++) {\n if (pssh_array[i] === 0x12 && pssh_array[i + 1] === 0x10) {\n pos = i + 2;\n for (j = pos; j < (pos + kidLen); j++) {\n if (pssh_array[j] !== 0xFF) {\n replace = false;\n break;\n }\n }\n break;\n }\n }\n\n if (replace) {\n pssh_array.set(KID, pos);\n }\n\n return pssh_array.buffer;\n }\n\n function getInitData(cp) {\n var pssh = null;\n // Get pssh from protectionData or from manifest\n if (protData && protData.pssh) {\n pssh = BASE64.decodeArray(protData.pssh).buffer;\n } else {\n pssh = CommonEncryption.parseInitDataFromContentProtection(cp, BASE64);\n }\n\n // Check if KID within pssh is empty, in that case set KID value according to 'cenc:default_KID' value\n if (pssh) {\n pssh = replaceKID(pssh, cp['cenc:default_KID']);\n }\n\n return pssh;\n }\n\n function getRequestHeadersFromMessage( /*message*/ ) {\n return null;\n }\n\n function getLicenseRequestFromMessage(message) {\n return new Uint8Array(message);\n }\n\n function getLicenseServerURLFromInitData( /*initData*/ ) {\n return null;\n }\n\n function getCDMData() {\n return null;\n }\n\n instance = {\n uuid: uuid,\n schemeIdURI: schemeIdURI,\n systemString: systemString,\n init: init,\n getInitData: getInitData,\n getRequestHeadersFromMessage: getRequestHeadersFromMessage,\n getLicenseRequestFromMessage: getLicenseRequestFromMessage,\n getLicenseServerURLFromInitData: getLicenseServerURLFromInitData,\n getCDMData: getCDMData\n };\n\n return instance;\n}\n\nKeySystemWidevine.__dashjs_factory_name = 'KeySystemWidevine';\nexport default dashjs.FactoryMaker.getSingletonFactory(KeySystemWidevine); /* jshint ignore:line */\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Initial implementation of EME\n *\n * Implemented by Google Chrome prior to v36\n *\n * @implements ProtectionModel\n * @class\n */\nimport ProtectionKeyController from '../controllers/ProtectionKeyController';\nimport NeedKey from '../vo/NeedKey';\nimport KeyError from '../vo/KeyError';\nimport KeyMessage from '../vo/KeyMessage';\nimport KeySystemConfiguration from '../vo/KeySystemConfiguration';\nimport KeySystemAccess from '../vo/KeySystemAccess';\n\nfunction ProtectionModel_01b(config) {\n\n let context = this.context;\n let eventBus = config.eventBus;//Need to pass in here so we can use same instance since this is optional module\n const events = config.events;\n let log = config.log;\n let api = config.api;\n let errHandler = config.errHandler;\n\n let instance,\n videoElement,\n keySystem,\n protectionKeyController,\n\n // With this version of the EME APIs, sessionIDs are not assigned to\n // sessions until the first key message is received. We are assuming\n // that in the case of multiple sessions, key messages will be received\n // in the order that generateKeyRequest() is called.\n // Holding spot for newly-created sessions until we determine whether or\n // not the CDM supports sessionIDs\n pendingSessions,\n\n // List of sessions that have been initialized. Only the first position will\n // be used in the case that the CDM does not support sessionIDs\n sessions,\n\n // Not all CDMs support the notion of sessionIDs. Without sessionIDs\n // there is no way for us to differentiate between sessions, therefore\n // we must only allow a single session. Once we receive the first key\n // message we can set this flag to determine if more sessions are allowed\n moreSessionsAllowed,\n\n // This is our main event handler for all desired HTMLMediaElement events\n // related to EME. These events are translated into our API-independent\n // versions of the same events\n eventHandler;\n\n function setup() {\n videoElement = null;\n keySystem = null;\n pendingSessions = [];\n sessions = [];\n protectionKeyController = ProtectionKeyController(context).getInstance();\n eventHandler = createEventHandler();\n }\n\n function reset() {\n if (videoElement) {\n removeEventListeners();\n }\n for (let i = 0; i < sessions.length; i++) {\n closeKeySession(sessions[i]);\n }\n eventBus.trigger(events.TEARDOWN_COMPLETE);\n }\n\n function getKeySystem() {\n return keySystem;\n }\n\n function getAllInitData() {\n let retVal = [];\n for (let i = 0; i < pendingSessions.length; i++) {\n retVal.push(pendingSessions[i].initData);\n }\n for (let i = 0; i < sessions.length; i++) {\n retVal.push(sessions[i].initData);\n }\n return retVal;\n }\n\n function requestKeySystemAccess(ksConfigurations) {\n let ve = videoElement;\n if (!ve) { // Must have a video element to do this capability tests\n ve = document.createElement('video');\n }\n\n // Try key systems in order, first one with supported key system configuration\n // is used\n let found = false;\n for (let ksIdx = 0; ksIdx < ksConfigurations.length; ksIdx++) {\n let systemString = ksConfigurations[ksIdx].ks.systemString;\n let configs = ksConfigurations[ksIdx].configs;\n let supportedAudio = null;\n let supportedVideo = null;\n\n // Try key system configs in order, first one with supported audio/video\n // is used\n for (let configIdx = 0; configIdx < configs.length; configIdx++) {\n //let audios = configs[configIdx].audioCapabilities;\n let videos = configs[configIdx].videoCapabilities;\n // Look for supported video container/codecs\n if (videos && videos.length !== 0) {\n supportedVideo = []; // Indicates that we have a requested video config\n for (let videoIdx = 0; videoIdx < videos.length; videoIdx++) {\n if (ve.canPlayType(videos[videoIdx].contentType, systemString) !== '') {\n supportedVideo.push(videos[videoIdx]);\n }\n }\n }\n\n // No supported audio or video in this configuration OR we have\n // requested audio or video configuration that is not supported\n if ((!supportedAudio && !supportedVideo) ||\n (supportedAudio && supportedAudio.length === 0) ||\n (supportedVideo && supportedVideo.length === 0)) {\n continue;\n }\n\n // This configuration is supported\n found = true;\n let ksConfig = new KeySystemConfiguration(supportedAudio, supportedVideo);\n let ks = protectionKeyController.getKeySystemBySystemString(systemString);\n eventBus.trigger(events.KEY_SYSTEM_ACCESS_COMPLETE, { data: new KeySystemAccess(ks, ksConfig) });\n break;\n }\n }\n if (!found) {\n eventBus.trigger(events.KEY_SYSTEM_ACCESS_COMPLETE, {error: 'Key system access denied! -- No valid audio/video content configurations detected!'});\n }\n }\n\n function selectKeySystem(keySystemAccess) {\n keySystem = keySystemAccess.keySystem;\n eventBus.trigger(events.INTERNAL_KEY_SYSTEM_SELECTED);\n }\n\n function setMediaElement(mediaElement) {\n if (videoElement === mediaElement) {\n return;\n }\n\n // Replacing the previous element\n if (videoElement) {\n removeEventListeners();\n }\n\n videoElement = mediaElement;\n\n // Only if we are not detaching from the existing element\n if (videoElement) {\n videoElement.addEventListener(api.keyerror, eventHandler);\n videoElement.addEventListener(api.needkey, eventHandler);\n videoElement.addEventListener(api.keymessage, eventHandler);\n videoElement.addEventListener(api.keyadded, eventHandler);\n eventBus.trigger(events.VIDEO_ELEMENT_SELECTED);\n }\n }\n\n function createKeySession(initData /*, keySystemType */) {\n\n if (!keySystem) {\n throw new Error('Can not create sessions until you have selected a key system');\n }\n\n // Determine if creating a new session is allowed\n if (moreSessionsAllowed || sessions.length === 0) {\n\n let newSession = { // Implements SessionToken\n sessionID: null,\n initData: initData,\n getSessionID: function () {\n return this.sessionID;\n },\n\n getExpirationTime: function () {\n return NaN;\n },\n\n getSessionType: function () {\n return 'temporary';\n }\n };\n pendingSessions.push(newSession);\n\n // Send our request to the CDM\n videoElement[api.generateKeyRequest](keySystem.systemString, new Uint8Array(initData));\n\n return newSession;\n\n } else {\n throw new Error('Multiple sessions not allowed!');\n }\n\n }\n\n function updateKeySession(sessionToken, message) {\n const sessionID = sessionToken.sessionID;\n if (!protectionKeyController.isClearKey(keySystem)) {\n // Send our request to the CDM\n videoElement[api.addKey](keySystem.systemString,\n new Uint8Array(message), new Uint8Array(sessionToken.initData), sessionID);\n } else {\n // For clearkey, message is a ClearKeyKeySet\n for (let i = 0; i < message.keyPairs.length; i++) {\n videoElement[api.addKey](keySystem.systemString,\n message.keyPairs[i].key, message.keyPairs[i].keyID, sessionID);\n }\n }\n }\n\n function closeKeySession(sessionToken) {\n // Send our request to the CDM\n videoElement[api.cancelKeyRequest](keySystem.systemString, sessionToken.sessionID);\n }\n\n function setServerCertificate(/*serverCertificate*/) { /* Not supported */ }\n function loadKeySession(/*sessionID*/) { /* Not supported */ }\n function removeKeySession(/*sessionToken*/) { /* Not supported */ }\n\n function createEventHandler() {\n return {\n handleEvent: function (event) {\n let sessionToken = null;\n switch (event.type) {\n\n case api.needkey:\n let initData = ArrayBuffer.isView(event.initData) ? event.initData.buffer : event.initData;\n eventBus.trigger(events.NEED_KEY, {key: new NeedKey(initData, 'cenc')});\n break;\n\n case api.keyerror:\n sessionToken = findSessionByID(sessions, event.sessionId);\n if (!sessionToken) {\n sessionToken = findSessionByID(pendingSessions, event.sessionId);\n }\n\n if (sessionToken) {\n let msg = '';\n switch (event.errorCode.code) {\n case 1:\n msg += 'MEDIA_KEYERR_UNKNOWN - An unspecified error occurred. This value is used for errors that don\\'t match any of the other codes.';\n break;\n case 2:\n msg += 'MEDIA_KEYERR_CLIENT - The Key System could not be installed or updated.';\n break;\n case 3:\n msg += 'MEDIA_KEYERR_SERVICE - The message passed into update indicated an error from the license service.';\n break;\n case 4:\n msg += 'MEDIA_KEYERR_OUTPUT - There is no available output device with the required characteristics for the content protection system.';\n break;\n case 5:\n msg += 'MEDIA_KEYERR_HARDWARECHANGE - A hardware configuration change caused a content protection error.';\n break;\n case 6:\n msg += 'MEDIA_KEYERR_DOMAIN - An error occurred in a multi-device domain licensing configuration. The most common error is a failure to join the domain.';\n break;\n }\n msg += ' System Code = ' + event.systemCode;\n // TODO: Build error string based on key error\n eventBus.trigger(events.KEY_ERROR, {data: new KeyError(sessionToken, msg)});\n } else {\n log('No session token found for key error');\n }\n break;\n\n case api.keyadded:\n sessionToken = findSessionByID(sessions, event.sessionId);\n if (!sessionToken) {\n sessionToken = findSessionByID(pendingSessions, event.sessionId);\n }\n\n if (sessionToken) {\n log('DRM: Key added.');\n eventBus.trigger(events.KEY_ADDED, {data: sessionToken});//TODO not sure anything is using sessionToken? why there?\n } else {\n log('No session token found for key added');\n }\n break;\n\n case api.keymessage:\n\n // If this CDM does not support session IDs, we will be limited\n // to a single session\n moreSessionsAllowed = (event.sessionId !== null) && (event.sessionId !== undefined);\n\n // SessionIDs supported\n if (moreSessionsAllowed) {\n\n // Attempt to find an uninitialized token with this sessionID\n sessionToken = findSessionByID(sessions, event.sessionId);\n if (!sessionToken && pendingSessions.length > 0) {\n\n // This is the first message for our latest session, so set the\n // sessionID and add it to our list\n sessionToken = pendingSessions.shift();\n sessions.push(sessionToken);\n sessionToken.sessionID = event.sessionId;\n }\n } else if (pendingSessions.length > 0) { // SessionIDs not supported\n\n sessionToken = pendingSessions.shift();\n sessions.push(sessionToken);\n\n if (pendingSessions.length !== 0) {\n errHandler.mediaKeyMessageError('Multiple key sessions were creates with a user-agent that does not support sessionIDs!! Unpredictable behavior ahead!');\n }\n }\n\n if (sessionToken) {\n let message = ArrayBuffer.isView(event.message) ? event.message.buffer : event.message;\n\n // For ClearKey, the spec mandates that you pass this message to the\n // addKey method, so we always save it to the token since there is no\n // way to tell which key system is in use\n sessionToken.keyMessage = message;\n eventBus.trigger(events.INTERNAL_KEY_MESSAGE, {data: new KeyMessage(sessionToken, message, event.defaultURL)});\n\n } else {\n log('No session token found for key message');\n }\n break;\n }\n }\n };\n }\n\n\n /**\n * Helper function to retrieve the stored session token based on a given\n * sessionID value\n *\n * @param {Array} sessionArray - the array of sessions to search\n * @param {*} sessionID - the sessionID to search for\n * @returns {*} the session token with the given sessionID\n */\n function findSessionByID(sessionArray, sessionID) {\n\n if (!sessionID || !sessionArray) {\n return null;\n } else {\n const len = sessionArray.length;\n for (let i = 0; i < len; i++) {\n if (sessionArray[i].sessionID == sessionID) {\n return sessionArray[i];\n }\n }\n return null;\n }\n }\n\n function removeEventListeners() {\n videoElement.removeEventListener(api.keyerror, eventHandler);\n videoElement.removeEventListener(api.needkey, eventHandler);\n videoElement.removeEventListener(api.keymessage, eventHandler);\n videoElement.removeEventListener(api.keyadded, eventHandler);\n }\n\n instance = {\n getAllInitData: getAllInitData,\n requestKeySystemAccess: requestKeySystemAccess,\n getKeySystem: getKeySystem,\n selectKeySystem: selectKeySystem,\n setMediaElement: setMediaElement,\n createKeySession: createKeySession,\n updateKeySession: updateKeySession,\n closeKeySession: closeKeySession,\n setServerCertificate: setServerCertificate,\n loadKeySession: loadKeySession,\n removeKeySession: removeKeySession,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nProtectionModel_01b.__dashjs_factory_name = 'ProtectionModel_01b';\nexport default dashjs.FactoryMaker.getClassFactory(ProtectionModel_01b); /* jshint ignore:line */\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Most recent EME implementation\n *\n * Implemented by Google Chrome v36+ (Windows, OSX, Linux)\n *\n * @implements ProtectionModel\n * @class\n */\nimport ProtectionKeyController from '../controllers/ProtectionKeyController';\nimport NeedKey from '../vo/NeedKey';\nimport KeyError from '../vo/KeyError';\nimport KeyMessage from '../vo/KeyMessage';\nimport KeySystemAccess from '../vo/KeySystemAccess';\n\nfunction ProtectionModel_21Jan2015(config) {\n\n let context = this.context;\n let eventBus = config.eventBus;//Need to pass in here so we can use same instance since this is optional module\n const events = config.events;\n let log = config.log;\n\n let instance,\n keySystem,\n videoElement,\n mediaKeys,\n sessions,\n eventHandler,\n protectionKeyController;\n\n function setup() {\n keySystem = null;\n videoElement = null;\n mediaKeys = null;\n sessions = [];\n protectionKeyController = ProtectionKeyController(context).getInstance();\n eventHandler = createEventHandler();\n }\n\n function reset() {\n const numSessions = sessions.length;\n let session;\n\n if (numSessions !== 0) {\n // Called when we are done closing a session. Success or fail\n const done = function (session) {\n removeSession(session);\n if (sessions.length === 0) {\n if (videoElement) {\n videoElement.removeEventListener('encrypted', eventHandler);\n videoElement.setMediaKeys(null).then(function () {\n eventBus.trigger(events.TEARDOWN_COMPLETE);\n });\n } else {\n eventBus.trigger(events.TEARDOWN_COMPLETE);\n }\n }\n };\n for (let i = 0; i < numSessions; i++) {\n session = sessions[i];\n (function (s) {\n // Override closed promise resolver\n session.session.closed.then(function () {\n done(s);\n });\n // Close the session and handle errors, otherwise promise\n // resolver above will be called\n closeKeySessionInternal(session).catch(function () {\n done(s);\n });\n\n })(session);\n }\n } else {\n eventBus.trigger(events.TEARDOWN_COMPLETE);\n }\n }\n\n function getKeySystem() {\n return keySystem;\n }\n\n function getAllInitData() {\n let retVal = [];\n for (let i = 0; i < sessions.length; i++) {\n retVal.push(sessions[i].initData);\n }\n return retVal;\n }\n\n function requestKeySystemAccess(ksConfigurations) {\n requestKeySystemAccessInternal(ksConfigurations, 0);\n }\n\n function selectKeySystem(keySystemAccess) {\n keySystemAccess.mksa.createMediaKeys().then(function (mkeys) {\n keySystem = keySystemAccess.keySystem;\n mediaKeys = mkeys;\n if (videoElement) {\n videoElement.setMediaKeys(mediaKeys).then(function () {\n eventBus.trigger(events.INTERNAL_KEY_SYSTEM_SELECTED);\n });\n }\n\n }).catch(function () {\n eventBus.trigger(events.INTERNAL_KEY_SYSTEM_SELECTED, {error: 'Error selecting keys system (' + keySystemAccess.keySystem.systemString + ')! Could not create MediaKeys -- TODO'});\n });\n }\n\n function setMediaElement(mediaElement) {\n if (videoElement === mediaElement)\n return;\n\n // Replacing the previous element\n if (videoElement) {\n videoElement.removeEventListener('encrypted', eventHandler);\n videoElement.setMediaKeys(null);\n }\n\n videoElement = mediaElement;\n\n // Only if we are not detaching from the existing element\n if (videoElement) {\n videoElement.addEventListener('encrypted', eventHandler);\n if (mediaKeys) {\n videoElement.setMediaKeys(mediaKeys);\n }\n }\n }\n\n function setServerCertificate(serverCertificate) {\n if (!keySystem || !mediaKeys) {\n throw new Error('Can not set server certificate until you have selected a key system');\n }\n mediaKeys.setServerCertificate(serverCertificate).then(function () {\n log('DRM: License server certificate successfully updated.');\n eventBus.trigger(events.SERVER_CERTIFICATE_UPDATED);\n }).catch(function (error) {\n eventBus.trigger(events.SERVER_CERTIFICATE_UPDATED, {error: 'Error updating server certificate -- ' + error.name});\n });\n }\n\n function createKeySession(initData, sessionType) {\n\n if (!keySystem || !mediaKeys) {\n throw new Error('Can not create sessions until you have selected a key system');\n }\n\n let session = mediaKeys.createSession(sessionType);\n let sessionToken = createSessionToken(session, initData, sessionType);\n\n // Generate initial key request\n session.generateRequest('cenc', initData).then(function () {\n log('DRM: Session created. SessionID = ' + sessionToken.getSessionID());\n eventBus.trigger(events.KEY_SESSION_CREATED, {data: sessionToken});\n }).catch(function (error) {\n // TODO: Better error string\n removeSession(sessionToken);\n eventBus.trigger(events.KEY_SESSION_CREATED, {data: null, error: 'Error generating key request -- ' + error.name});\n });\n }\n\n function updateKeySession(sessionToken, message) {\n\n let session = sessionToken.session;\n\n // Send our request to the key session\n if (protectionKeyController.isClearKey(keySystem)) {\n message = message.toJWK();\n }\n session.update(message).catch(function (error) {\n eventBus.trigger(events.KEY_ERROR, {data: new KeyError(sessionToken, 'Error sending update() message! ' + error.name)});\n });\n }\n\n function loadKeySession(sessionID) {\n if (!keySystem || !mediaKeys) {\n throw new Error('Can not load sessions until you have selected a key system');\n }\n\n let session = mediaKeys.createSession();\n\n // Load persisted session data into our newly created session object\n session.load(sessionID).then(function (success) {\n if (success) {\n let sessionToken = createSessionToken(session);\n log('DRM: Session created. SessionID = ' + sessionToken.getSessionID());\n eventBus.trigger(events.KEY_SESSION_CREATED, {data: sessionToken});\n } else {\n eventBus.trigger(events.KEY_SESSION_CREATED, {data: null, error: 'Could not load session! Invalid Session ID (' + sessionID + ')'});\n }\n }).catch(function (error) {\n eventBus.trigger(events.KEY_SESSION_CREATED, {data: null, error: 'Could not load session (' + sessionID + ')! ' + error.name});\n });\n }\n\n function removeKeySession(sessionToken) {\n let session = sessionToken.session;\n\n session.remove().then(function () {\n log('DRM: Session removed. SessionID = ' + sessionToken.getSessionID());\n eventBus.trigger(events.KEY_SESSION_REMOVED, {data: sessionToken.getSessionID()});\n }, function (error) {\n eventBus.trigger(events.KEY_SESSION_REMOVED, {data: null, error: 'Error removing session (' + sessionToken.getSessionID() + '). ' + error.name});\n\n });\n }\n\n function closeKeySession(sessionToken) {\n // Send our request to the key session\n closeKeySessionInternal(sessionToken).catch(function (error) {\n removeSession(sessionToken);\n eventBus.trigger(events.KEY_SESSION_CLOSED, {data: null, error: 'Error closing session (' + sessionToken.getSessionID() + ') ' + error.name});\n });\n }\n\n function requestKeySystemAccessInternal(ksConfigurations, idx) {\n (function (i) {\n let keySystem = ksConfigurations[i].ks;\n let configs = ksConfigurations[i].configs;\n navigator.requestMediaKeySystemAccess(keySystem.systemString, configs).then(function (mediaKeySystemAccess) {\n\n // Chrome 40 does not currently implement MediaKeySystemAccess.getConfiguration()\n let configuration = (typeof mediaKeySystemAccess.getConfiguration === 'function') ?\n mediaKeySystemAccess.getConfiguration() : null;\n let keySystemAccess = new KeySystemAccess(keySystem, configuration);\n keySystemAccess.mksa = mediaKeySystemAccess;\n eventBus.trigger(events.KEY_SYSTEM_ACCESS_COMPLETE, {data: keySystemAccess});\n\n }).catch(function () {\n if (++i < ksConfigurations.length) {\n requestKeySystemAccessInternal(ksConfigurations, i);\n } else {\n eventBus.trigger(events.KEY_SYSTEM_ACCESS_COMPLETE, {error: 'Key system access denied!'});\n }\n });\n })(idx);\n }\n\n function closeKeySessionInternal(sessionToken) {\n let session = sessionToken.session;\n\n // Remove event listeners\n session.removeEventListener('keystatuseschange', sessionToken);\n session.removeEventListener('message', sessionToken);\n\n // Send our request to the key session\n return session.close();\n }\n\n // This is our main event handler for all desired HTMLMediaElement events\n // related to EME. These events are translated into our API-independent\n // versions of the same events\n function createEventHandler() {\n return {\n handleEvent: function (event) {\n switch (event.type) {\n\n case 'encrypted':\n if (event.initData) {\n let initData = ArrayBuffer.isView(event.initData) ? event.initData.buffer : event.initData;\n eventBus.trigger(events.NEED_KEY, {key: new NeedKey(initData, event.initDataType)});\n }\n break;\n }\n }\n };\n }\n\n function removeSession(token) {\n // Remove from our session list\n for (let i = 0; i < sessions.length; i++) {\n if (sessions[i] === token) {\n sessions.splice(i,1);\n break;\n }\n }\n }\n\n // Function to create our session token objects which manage the EME\n // MediaKeySession and session-specific event handler\n function createSessionToken(session, initData, sessionType) {\n\n let token = { // Implements SessionToken\n session: session,\n initData: initData,\n\n // This is our main event handler for all desired MediaKeySession events\n // These events are translated into our API-independent versions of the\n // same events\n handleEvent: function (event) {\n switch (event.type) {\n case 'keystatuseschange':\n eventBus.trigger(events.KEY_STATUSES_CHANGED, {data: this});\n break;\n\n case 'message':\n let message = ArrayBuffer.isView(event.message) ? event.message.buffer : event.message;\n eventBus.trigger(events.INTERNAL_KEY_MESSAGE, {data: new KeyMessage(this, message, undefined, event.messageType)});\n break;\n }\n },\n\n getSessionID: function () {\n return session.sessionId;\n },\n\n getExpirationTime: function () {\n return session.expiration;\n },\n\n getKeyStatuses: function () {\n return session.keyStatuses;\n },\n\n getSessionType: function () {\n return sessionType;\n }\n };\n\n // Add all event listeners\n session.addEventListener('keystatuseschange', token);\n session.addEventListener('message', token);\n\n // Register callback for session closed Promise\n session.closed.then(function () {\n removeSession(token);\n log('DRM: Session closed. SessionID = ' + token.getSessionID());\n eventBus.trigger(events.KEY_SESSION_CLOSED, {data: token.getSessionID()});\n });\n\n // Add to our session list\n sessions.push(token);\n\n return token;\n }\n\n instance = {\n getAllInitData: getAllInitData,\n requestKeySystemAccess: requestKeySystemAccess,\n getKeySystem: getKeySystem,\n selectKeySystem: selectKeySystem,\n setMediaElement: setMediaElement,\n setServerCertificate: setServerCertificate,\n createKeySession: createKeySession,\n updateKeySession: updateKeySession,\n loadKeySession: loadKeySession,\n removeKeySession: removeKeySession,\n closeKeySession: closeKeySession,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nProtectionModel_21Jan2015.__dashjs_factory_name = 'ProtectionModel_21Jan2015';\nexport default dashjs.FactoryMaker.getClassFactory(ProtectionModel_21Jan2015); /* jshint ignore:line */", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Implementation of the EME APIs as of the 3 Feb 2014 state of the specification.\n *\n * Implemented by Internet Explorer 11 (Windows 8.1)\n *\n * @implements ProtectionModel\n * @class\n */\n\nimport ProtectionKeyController from '../controllers/ProtectionKeyController';\nimport NeedKey from '../vo/NeedKey';\nimport KeyError from '../vo/KeyError';\nimport KeyMessage from '../vo/KeyMessage';\nimport KeySystemConfiguration from '../vo/KeySystemConfiguration';\nimport KeySystemAccess from '../vo/KeySystemAccess';\n\nfunction ProtectionModel_3Feb2014(config) {\n\n let context = this.context;\n let eventBus = config.eventBus;//Need to pass in here so we can use same instance since this is optional module\n const events = config.events;\n let log = config.log;\n let api = config.api;\n\n\n let instance,\n videoElement,\n keySystem,\n mediaKeys,\n keySystemAccess,\n sessions,\n eventHandler,\n protectionKeyController;\n\n function setup() {\n videoElement = null;\n keySystem = null;\n mediaKeys = null;\n keySystemAccess = null;\n sessions = [];\n protectionKeyController = ProtectionKeyController(context).getInstance();\n eventHandler = createEventHandler();\n }\n\n function reset() {\n try {\n for (let i = 0; i < sessions.length; i++) {\n closeKeySession(sessions[i]);\n }\n if (videoElement) {\n videoElement.removeEventListener(api.needkey, eventHandler);\n }\n eventBus.trigger(events.TEARDOWN_COMPLETE);\n } catch (error) {\n eventBus.trigger(events.TEARDOWN_COMPLETE, {error: 'Error tearing down key sessions and MediaKeys! -- ' + error.message});\n }\n }\n\n function getKeySystem() {\n return keySystem;\n }\n\n function getAllInitData() {\n let retVal = [];\n for (let i = 0; i < sessions.length; i++) {\n retVal.push(sessions[i].initData);\n }\n return retVal;\n }\n\n function requestKeySystemAccess(ksConfigurations) {\n\n // Try key systems in order, first one with supported key system configuration\n // is used\n let found = false;\n for (let ksIdx = 0; ksIdx < ksConfigurations.length; ksIdx++) {\n let systemString = ksConfigurations[ksIdx].ks.systemString;\n let configs = ksConfigurations[ksIdx].configs;\n let supportedAudio = null;\n let supportedVideo = null;\n\n // Try key system configs in order, first one with supported audio/video\n // is used\n for (let configIdx = 0; configIdx < configs.length; configIdx++) {\n let audios = configs[configIdx].audioCapabilities;\n let videos = configs[configIdx].videoCapabilities;\n\n // Look for supported audio container/codecs\n if (audios && audios.length !== 0) {\n supportedAudio = []; // Indicates that we have a requested audio config\n for (let audioIdx = 0; audioIdx < audios.length; audioIdx++) {\n if (window[api.MediaKeys].isTypeSupported(systemString, audios[audioIdx].contentType)) {\n supportedAudio.push(audios[audioIdx]);\n }\n }\n }\n\n // Look for supported video container/codecs\n if (videos && videos.length !== 0) {\n supportedVideo = []; // Indicates that we have a requested video config\n for (let videoIdx = 0; videoIdx < videos.length; videoIdx++) {\n if (window[api.MediaKeys].isTypeSupported(systemString, videos[videoIdx].contentType)) {\n supportedVideo.push(videos[videoIdx]);\n }\n }\n }\n\n // No supported audio or video in this configuration OR we have\n // requested audio or video configuration that is not supported\n if ((!supportedAudio && !supportedVideo) ||\n (supportedAudio && supportedAudio.length === 0) ||\n (supportedVideo && supportedVideo.length === 0)) {\n continue;\n }\n\n // This configuration is supported\n found = true;\n let ksConfig = new KeySystemConfiguration(supportedAudio, supportedVideo);\n let ks = protectionKeyController.getKeySystemBySystemString(systemString);\n eventBus.trigger(events.KEY_SYSTEM_ACCESS_COMPLETE, {data: new KeySystemAccess(ks, ksConfig)});\n break;\n }\n }\n if (!found) {\n eventBus.trigger(events.KEY_SYSTEM_ACCESS_COMPLETE, {error: 'Key system access denied! -- No valid audio/video content configurations detected!'});\n }\n }\n\n function selectKeySystem(ksAccess) {\n try {\n mediaKeys = ksAccess.mediaKeys = new window[api.MediaKeys](ksAccess.keySystem.systemString);\n keySystem = ksAccess.keySystem;\n keySystemAccess = ksAccess;\n if (videoElement) {\n setMediaKeys();\n }\n eventBus.trigger(events.INTERNAL_KEY_SYSTEM_SELECTED);\n } catch (error) {\n eventBus.trigger(events.INTERNAL_KEY_SYSTEM_SELECTED, {error: 'Error selecting keys system (' + keySystem.systemString + ')! Could not create MediaKeys -- TODO'});\n }\n }\n\n function setMediaElement(mediaElement) {\n if (videoElement === mediaElement)\n return;\n\n // Replacing the previous element\n if (videoElement) {\n videoElement.removeEventListener(api.needkey, eventHandler);\n }\n\n videoElement = mediaElement;\n\n // Only if we are not detaching from the existing element\n if (videoElement) {\n videoElement.addEventListener(api.needkey, eventHandler);\n if (mediaKeys) {\n setMediaKeys();\n }\n }\n }\n\n function createKeySession(initData, sessionType, cdmData) {\n\n if (!keySystem || !mediaKeys || !keySystemAccess) {\n throw new Error('Can not create sessions until you have selected a key system');\n }\n\n // Use the first video capability for the contentType.\n // TODO: Not sure if there is a way to concatenate all capability data into a RFC6386-compatible format\n\n // If player is trying to playback Audio only stream - don't error out.\n let capabilities = null;\n\n if (keySystemAccess.ksConfiguration.videoCapabilities !== null && keySystemAccess.ksConfiguration.videoCapabilities.length > 0)\n capabilities = keySystemAccess.ksConfiguration.videoCapabilities[0];\n\n if (capabilities === null && keySystemAccess.ksConfiguration.audioCapabilities !== null && keySystemAccess.ksConfiguration.audioCapabilities.length > 0)\n capabilities = keySystemAccess.ksConfiguration.audioCapabilities[0];\n\n if (capabilities === null)\n throw new Error('Can not create sessions for unknown content types.');\n\n let contentType = capabilities.contentType;\n let session = mediaKeys.createSession(contentType, new Uint8Array(initData), cdmData ? new Uint8Array(cdmData) : null);\n let sessionToken = createSessionToken(session, initData);\n\n // Add all event listeners\n session.addEventListener(api.error, sessionToken);\n session.addEventListener(api.message, sessionToken);\n session.addEventListener(api.ready, sessionToken);\n session.addEventListener(api.close, sessionToken);\n\n // Add to our session list\n sessions.push(sessionToken);\n log('DRM: Session created. SessionID = ' + sessionToken.getSessionID());\n eventBus.trigger(events.KEY_SESSION_CREATED, {data: sessionToken});\n }\n\n function updateKeySession(sessionToken, message) {\n\n let session = sessionToken.session;\n\n if (!protectionKeyController.isClearKey(keySystem)) {\n // Send our request to the key session\n session.update(new Uint8Array(message));\n } else {\n // For clearkey, message is a ClearKeyKeySet\n session.update(new Uint8Array(message.toJWK()));\n }\n }\n\n /**\n * Close the given session and release all associated keys. Following\n * this call, the sessionToken becomes invalid\n *\n * @param {Object} sessionToken - the session token\n */\n function closeKeySession(sessionToken) {\n\n let session = sessionToken.session;\n\n // Remove event listeners\n session.removeEventListener(api.error, sessionToken);\n session.removeEventListener(api.message, sessionToken);\n session.removeEventListener(api.ready, sessionToken);\n session.removeEventListener(api.close, sessionToken);\n\n // Remove from our session list\n for (let i = 0; i < sessions.length; i++) {\n if (sessions[i] === sessionToken) {\n sessions.splice(i,1);\n break;\n }\n }\n\n // Send our request to the key session\n session[api.release]();\n }\n\n function setServerCertificate(/*serverCertificate*/) { /* Not supported */ }\n function loadKeySession(/*sessionID*/) { /* Not supported */ }\n function removeKeySession(/*sessionToken*/) { /* Not supported */ }\n\n\n function createEventHandler() {\n return {\n handleEvent: function (event) {\n switch (event.type) {\n\n case api.needkey:\n if (event.initData) {\n let initData = ArrayBuffer.isView(event.initData) ? event.initData.buffer : event.initData;\n eventBus.trigger(events.NEED_KEY, {key: new NeedKey(initData, 'cenc')});\n }\n break;\n }\n }\n };\n }\n\n\n // IE11 does not let you set MediaKeys until it has entered a certain\n // readyState, so we need this logic to ensure we don't set the keys\n // too early\n function setMediaKeys() {\n let boundDoSetKeys = null;\n const doSetKeys = function () {\n videoElement.removeEventListener('loadedmetadata', boundDoSetKeys);\n videoElement[api.setMediaKeys](mediaKeys);\n eventBus.trigger(events.VIDEO_ELEMENT_SELECTED);\n };\n if (videoElement.readyState >= 1) {\n doSetKeys();\n } else {\n boundDoSetKeys = doSetKeys.bind(this);\n videoElement.addEventListener('loadedmetadata', boundDoSetKeys);\n }\n\n }\n\n // Function to create our session token objects which manage the EME\n // MediaKeySession and session-specific event handler\n function createSessionToken(keySession, initData) {\n return {\n // Implements SessionToken\n session: keySession,\n initData: initData,\n\n getSessionID: function () {\n return this.session.sessionId;\n },\n\n getExpirationTime: function () {\n return NaN;\n },\n\n getSessionType: function () {\n return 'temporary';\n },\n // This is our main event handler for all desired MediaKeySession events\n // These events are translated into our API-independent versions of the\n // same events\n handleEvent: function (event) {\n switch (event.type) {\n\n case api.error:\n let errorStr = 'KeyError'; // TODO: Make better string from event\n eventBus.trigger(events.KEY_ERROR, { data: new KeyError(this, errorStr) });\n break;\n case api.message:\n let message = ArrayBuffer.isView(event.message) ? event.message.buffer : event.message;\n eventBus.trigger(events.INTERNAL_KEY_MESSAGE, { data: new KeyMessage(this, message, event.destinationURL) });\n break;\n case api.ready:\n log('DRM: Key added.');\n eventBus.trigger(events.KEY_ADDED);\n break;\n\n case api.close:\n log('DRM: Session closed. SessionID = ' + this.getSessionID());\n eventBus.trigger(events.KEY_SESSION_CLOSED, { data: this.getSessionID() });\n break;\n }\n }\n };\n }\n\n instance = {\n getAllInitData: getAllInitData,\n requestKeySystemAccess: requestKeySystemAccess,\n getKeySystem: getKeySystem,\n selectKeySystem: selectKeySystem,\n setMediaElement: setMediaElement,\n createKeySession: createKeySession,\n updateKeySession: updateKeySession,\n closeKeySession: closeKeySession,\n setServerCertificate: setServerCertificate,\n loadKeySession: loadKeySession,\n removeKeySession: removeKeySession,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nProtectionModel_3Feb2014.__dashjs_factory_name = 'ProtectionModel_3Feb2014';\nexport default dashjs.FactoryMaker.getClassFactory(ProtectionModel_3Feb2014); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport CommonEncryption from '../CommonEncryption';\nimport MediaCapability from '../vo/MediaCapability';\nimport KeySystemConfiguration from '../vo/KeySystemConfiguration';\n\n/**\n * @module ProtectionController\n * @description Provides access to media protection information and functionality. Each\n * ProtectionController manages a single {@link MediaPlayer.models.ProtectionModel}\n * which encapsulates a set of protection information (EME APIs, selected key system,\n * key sessions). The APIs of ProtectionController mostly align with the latest EME\n * APIs. Key system selection is mostly automated when combined with app-overrideable\n * functionality provided in {@link ProtectionKeyController}.\n * @todo ProtectionController does almost all of its tasks automatically after init() is\n * called. Applications might want more control over this process and want to go through\n * each step manually (key system selection, session creation, session maintenance).\n * @param {Object} config\n */\n\nfunction ProtectionController(config) {\n\n config = config || {};\n const protectionKeyController = config.protectionKeyController;\n let protectionModel = config.protectionModel;\n let adapter = config.adapter;\n let eventBus = config.eventBus;\n const events = config.events;\n let log = config.log;\n let BASE64 = config.BASE64;\n const Constants = config.Constants;\n\n let instance,\n pendingNeedKeyData,\n audioInfo,\n videoInfo,\n protDataSet,\n initialized,\n sessionType,\n robustnessLevel,\n keySystem;\n\n function setup() {\n pendingNeedKeyData = [];\n initialized = false;\n sessionType = 'temporary';\n robustnessLevel = '';\n }\n\n /**\n * Initialize this protection system with a given manifest and optional audio\n * and video stream information.\n *\n * @param {Object} manifest the json version of the manifest XML document for the\n * desired content. Applications can download their manifest using\n * {@link module:MediaPlayer#retrieveManifest}\n * @param {StreamInfo} [aInfo] audio stream information\n * @param {StreamInfo} [vInfo] video stream information\n * @memberof module:ProtectionController\n * @instance\n * @todo This API will change when we have better support for allowing applications\n * to select different adaptation sets for playback. Right now it is clunky for\n * applications to create {@link StreamInfo} with the right information,\n */\n function initialize(manifest, aInfo, vInfo) {\n // TODO: We really need to do much more here... We need to be smarter about knowing\n // which adaptation sets for which we have initialized, including the default key ID\n // value from the ContentProtection elements so we know whether or not we still need to\n // select key systems and acquire keys.\n if (!initialized) {\n let streamInfo;\n\n if (!aInfo && !vInfo) {\n // Look for ContentProtection elements. InitData can be provided by either the\n // dash264drm:Pssh ContentProtection format or a DRM-specific format.\n streamInfo = adapter.getStreamsInfo()[0]; // TODO: Single period only for now. See TODO above\n }\n\n audioInfo = aInfo || (streamInfo ? adapter.getMediaInfoForType(streamInfo, Constants.AUDIO) : null);\n videoInfo = vInfo || (streamInfo ? adapter.getMediaInfoForType(streamInfo, Constants.VIDEO) : null);\n const mediaInfo = (videoInfo) ? videoInfo : audioInfo; // We could have audio or video only\n\n // ContentProtection elements are specified at the AdaptationSet level, so the CP for audio\n // and video will be the same. Just use one valid MediaInfo object\n const supportedKS = protectionKeyController.getSupportedKeySystemsFromContentProtection(mediaInfo.contentProtection);\n if (supportedKS && supportedKS.length > 0) {\n selectKeySystem(supportedKS, true);\n }\n\n initialized = true;\n }\n }\n\n /**\n * Returns a set of supported key systems and CENC initialization data\n * from the given array of ContentProtection elements. Only\n * key systems that are supported by this player will be returned.\n * Key systems are returned in priority order (highest first).\n *\n * @param {Array.} cps - array of content protection elements parsed\n * from the manifest\n * @returns {Array.} array of objects indicating which supported key\n * systems were found. Empty array is returned if no\n * supported key systems were found\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function getSupportedKeySystemsFromContentProtection(cps) {\n return protectionKeyController.getSupportedKeySystemsFromContentProtection(cps);\n }\n\n /**\n * Create a new key session associated with the given initialization data from\n * the MPD or from the PSSH box in the media\n *\n * @param {ArrayBuffer} initData the initialization data\n * @param {Uint8Array} cdmData the custom data to provide to licenser\n * @memberof module:ProtectionController\n * @instance\n * @fires ProtectionController#KeySessionCreated\n * @todo In older versions of the EME spec, there was a one-to-one relationship between\n * initialization data and key sessions. That is no longer true in the latest APIs. This\n * API will need to modified (and a new \"generateRequest(keySession, initData)\" API created)\n * to come up to speed with the latest EME standard\n */\n function createKeySession(initData, cdmData) {\n const initDataForKS = CommonEncryption.getPSSHForKeySystem(keySystem, initData);\n const protData = getProtData(keySystem);\n if (initDataForKS) {\n\n // Check for duplicate initData\n const currentInitData = protectionModel.getAllInitData();\n for (let i = 0; i < currentInitData.length; i++) {\n if (protectionKeyController.initDataEquals(initDataForKS, currentInitData[i])) {\n log('DRM: Ignoring initData because we have already seen it!');\n return;\n }\n }\n try {\n protectionModel.createKeySession(initDataForKS, protData, sessionType, cdmData);\n } catch (error) {\n eventBus.trigger(events.KEY_SESSION_CREATED, {data: null, error: 'Error creating key session! ' + error.message});\n }\n } else if (initData) {\n protectionModel.createKeySession(initData, protData, sessionType, cdmData);\n } else {\n eventBus.trigger(events.KEY_SESSION_CREATED, {data: null, error: 'Selected key system is ' + keySystem.systemString + '. needkey/encrypted event contains no initData corresponding to that key system!'});\n }\n }\n\n /**\n * Loads a key session with the given session ID from persistent storage. This\n * essentially creates a new key session\n *\n * @param {string} sessionID\n * @memberof module:ProtectionController\n * @instance\n * @fires ProtectionController#KeySessionCreated\n */\n function loadKeySession(sessionID) {\n protectionModel.loadKeySession(sessionID);\n }\n\n /**\n * Removes the given key session from persistent storage and closes the session\n * as if {@link ProtectionController#closeKeySession}\n * was called\n *\n * @param {SessionToken} sessionToken the session\n * token\n * @memberof module:ProtectionController\n * @instance\n * @fires ProtectionController#KeySessionRemoved\n * @fires ProtectionController#KeySessionClosed\n */\n function removeKeySession(sessionToken) {\n protectionModel.removeKeySession(sessionToken);\n }\n\n /**\n * Closes the key session and releases all associated decryption keys. These\n * keys will no longer be available for decrypting media\n *\n * @param {SessionToken} sessionToken the session\n * token\n * @memberof module:ProtectionController\n * @instance\n * @fires ProtectionController#KeySessionClosed\n */\n function closeKeySession(sessionToken) {\n protectionModel.closeKeySession(sessionToken);\n }\n\n /**\n * Sets a server certificate for use by the CDM when signing key messages\n * intended for a particular license server. This will fire\n * an error event if a key system has not yet been selected.\n *\n * @param {ArrayBuffer} serverCertificate a CDM-specific license server\n * certificate\n * @memberof module:ProtectionController\n * @instance\n * @fires ProtectionController#ServerCertificateUpdated\n */\n function setServerCertificate(serverCertificate) {\n protectionModel.setServerCertificate(serverCertificate);\n }\n\n /**\n * Associate this protection system with the given HTMLMediaElement. This\n * causes the system to register for needkey/encrypted events from the given\n * element and provides a destination for setting of MediaKeys\n *\n * @param {HTMLMediaElement} element the media element to which the protection\n * system should be associated\n * @memberof module:ProtectionController\n * @instance\n */\n function setMediaElement(element) {\n if (element) {\n protectionModel.setMediaElement(element);\n eventBus.on(events.NEED_KEY, onNeedKey, this);\n eventBus.on(events.INTERNAL_KEY_MESSAGE, onKeyMessage, this);\n } else if (element === null) {\n protectionModel.setMediaElement(element);\n eventBus.off(events.NEED_KEY, onNeedKey, this);\n eventBus.off(events.INTERNAL_KEY_MESSAGE, onKeyMessage, this);\n }\n }\n\n /**\n * Sets the session type to use when creating key sessions. Either \"temporary\" or\n * \"persistent-license\". Default is \"temporary\".\n *\n * @param {string} value the session type\n * @memberof module:ProtectionController\n * @instance\n */\n function setSessionType(value) {\n sessionType = value;\n }\n\n /**\n * Sets the robustness level for video and audio capabilities. Optional to remove Chrome warnings.\n * Possible values are SW_SECURE_CRYPTO, SW_SECURE_DECODE, HW_SECURE_CRYPTO, HW_SECURE_CRYPTO, HW_SECURE_DECODE, HW_SECURE_ALL.\n *\n * @param {string} level the robustness level\n * @memberof module:ProtectionController\n * @instance\n */\n function setRobustnessLevel(level) {\n robustnessLevel = level;\n }\n\n /**\n * Attach KeySystem-specific data to use for license acquisition with EME\n *\n * @param {Object} data an object containing property names corresponding to\n * key system name strings (e.g. \"org.w3.clearkey\") and associated values\n * being instances of {@link ProtectionData}\n * @memberof module:ProtectionController\n * @instance\n */\n function setProtectionData(data) {\n protDataSet = data;\n protectionKeyController.setProtectionData(data);\n }\n\n /**\n * Destroys all protection data associated with this protection set. This includes\n * deleting all key sessions. In the case of persistent key sessions, the sessions\n * will simply be unloaded and not deleted. Additionally, if this protection set is\n * associated with a HTMLMediaElement, it will be detached from that element.\n *\n * @memberof module:ProtectionController\n * @instance\n */\n function reset() {\n setMediaElement(null);\n\n keySystem = undefined;//TODO-Refactor look at why undefined is needed for this. refactor\n\n if (protectionModel) {\n protectionModel.reset();\n protectionModel = null;\n }\n }\n\n ///////////////\n // Private\n ///////////////\n\n function getProtData(keySystem) {\n let protData = null;\n const keySystemString = keySystem.systemString;\n\n if (protDataSet) {\n protData = (keySystemString in protDataSet) ? protDataSet[keySystemString] : null;\n }\n return protData;\n }\n\n function getKeySystemConfiguration(keySystem) {\n const protData = getProtData(keySystem);\n const audioCapabilities = [];\n const videoCapabilities = [];\n const audioRobustness = (protData && protData.audioRobustness && protData.audioRobustness.length > 0) ? protData.audioRobustness : robustnessLevel;\n const videoRobustness = (protData && protData.videoRobustness && protData.videoRobustness.length > 0) ? protData.videoRobustness : robustnessLevel;\n\n if (audioInfo) {\n audioCapabilities.push(new MediaCapability(audioInfo.codec, audioRobustness));\n }\n if (videoInfo) {\n videoCapabilities.push(new MediaCapability(videoInfo.codec, videoRobustness));\n }\n\n return new KeySystemConfiguration(\n audioCapabilities, videoCapabilities, 'optional',\n (sessionType === 'temporary') ? 'optional' : 'required',\n [sessionType]);\n }\n\n function selectKeySystem(supportedKS, fromManifest) {\n const self = this;\n const requestedKeySystems = [];\n\n let ksIdx;\n if (keySystem) {\n // We have a key system\n for (ksIdx = 0; ksIdx < supportedKS.length; ksIdx++) {\n if (keySystem === supportedKS[ksIdx].ks) {\n\n requestedKeySystems.push({ks: supportedKS[ksIdx].ks, configs: [getKeySystemConfiguration(keySystem)]});\n\n // Ensure that we would be granted key system access using the key\n // system and codec information\n const onKeySystemAccessComplete = function (event) {\n eventBus.off(events.KEY_SYSTEM_ACCESS_COMPLETE, onKeySystemAccessComplete, self);\n if (event.error) {\n if (!fromManifest) {\n eventBus.trigger(events.KEY_SYSTEM_SELECTED, {error: 'DRM: KeySystem Access Denied! -- ' + event.error});\n }\n } else {\n log('DRM: KeySystem Access Granted');\n eventBus.trigger(events.KEY_SYSTEM_SELECTED, {data: event.data});\n createKeySession(supportedKS[ksIdx].initData, supportedKS[ksIdx].cdmData);\n }\n };\n eventBus.on(events.KEY_SYSTEM_ACCESS_COMPLETE, onKeySystemAccessComplete, self);\n protectionModel.requestKeySystemAccess(requestedKeySystems);\n break;\n }\n }\n }\n else if (keySystem === undefined) {\n // First time through, so we need to select a key system\n keySystem = null;\n pendingNeedKeyData.push(supportedKS);\n\n // Add all key systems to our request list since we have yet to select a key system\n for (let i = 0; i < supportedKS.length; i++) {\n requestedKeySystems.push({ks: supportedKS[i].ks, configs: [getKeySystemConfiguration(supportedKS[i].ks)]});\n }\n\n let keySystemAccess;\n const onKeySystemAccessComplete = function (event) {\n eventBus.off(events.KEY_SYSTEM_ACCESS_COMPLETE, onKeySystemAccessComplete, self);\n if (event.error) {\n keySystem = undefined;\n eventBus.off(events.INTERNAL_KEY_SYSTEM_SELECTED, onKeySystemSelected, self);\n\n if (!fromManifest) {\n eventBus.trigger(events.KEY_SYSTEM_SELECTED, {data: null, error: 'DRM: KeySystem Access Denied! -- ' + event.error});\n }\n } else {\n keySystemAccess = event.data;\n log('DRM: KeySystem Access Granted (' + keySystemAccess.keySystem.systemString + ')! Selecting key system...');\n protectionModel.selectKeySystem(keySystemAccess);\n }\n };\n var onKeySystemSelected = function (event) {\n eventBus.off(events.INTERNAL_KEY_SYSTEM_SELECTED, onKeySystemSelected, self);\n eventBus.off(events.KEY_SYSTEM_ACCESS_COMPLETE, onKeySystemAccessComplete, self);\n if (!event.error) {\n keySystem = protectionModel.getKeySystem();\n eventBus.trigger(events.KEY_SYSTEM_SELECTED, {data: keySystemAccess});\n // Set server certificate from protData\n const protData = getProtData(keySystem);\n if (protData && protData.serverCertificate && protData.serverCertificate.length > 0) {\n protectionModel.setServerCertificate(BASE64.decodeArray(protData.serverCertificate).buffer);\n }\n for (let i = 0; i < pendingNeedKeyData.length; i++) {\n for (ksIdx = 0; ksIdx < pendingNeedKeyData[i].length; ksIdx++) {\n if (keySystem === pendingNeedKeyData[i][ksIdx].ks) {\n if (pendingNeedKeyData[i][ksIdx].initData === null && protData && protData.hasOwnProperty('clearkeys')) {\n const initData = { kids: Object.keys(protData.clearkeys) };\n pendingNeedKeyData[i][ksIdx].initData = new TextEncoder().encode(JSON.stringify(initData));\n }\n createKeySession(pendingNeedKeyData[i][ksIdx].initData, pendingNeedKeyData[i][ksIdx].cdmData);\n break;\n }\n }\n }\n } else {\n keySystem = undefined;\n if (!fromManifest) {\n eventBus.trigger(events.KEY_SYSTEM_SELECTED, {data: null, error: 'DRM: Error selecting key system! -- ' + event.error});\n }\n }\n };\n eventBus.on(events.INTERNAL_KEY_SYSTEM_SELECTED, onKeySystemSelected, self);\n eventBus.on(events.KEY_SYSTEM_ACCESS_COMPLETE, onKeySystemAccessComplete, self);\n protectionModel.requestKeySystemAccess(requestedKeySystems);\n } else {\n // We are in the process of selecting a key system, so just save the data\n pendingNeedKeyData.push(supportedKS);\n }\n }\n\n function sendLicenseRequestCompleteEvent(data, error) {\n eventBus.trigger(events.LICENSE_REQUEST_COMPLETE, {data: data, error: error});\n }\n\n function onKeyMessage(e) {\n log('DRM: onKeyMessage');\n if (e.error) {\n log(e.error);\n return;\n }\n\n // Dispatch event to applications indicating we received a key message\n const keyMessage = e.data;\n eventBus.trigger(events.KEY_MESSAGE, {data: keyMessage});\n const messageType = (keyMessage.messageType) ? keyMessage.messageType : 'license-request';\n const message = keyMessage.message;\n const sessionToken = keyMessage.sessionToken;\n const protData = getProtData(keySystem);\n const keySystemString = keySystem.systemString;\n const licenseServerData = protectionKeyController.getLicenseServer(keySystem, protData, messageType);\n const eventData = { sessionToken: sessionToken, messageType: messageType };\n\n // Message not destined for license server\n if (!licenseServerData) {\n log('DRM: License server request not required for this message (type = ' + e.data.messageType + '). Session ID = ' + sessionToken.getSessionID());\n sendLicenseRequestCompleteEvent(eventData);\n return;\n }\n\n // Perform any special handling for ClearKey\n if (protectionKeyController.isClearKey(keySystem)) {\n const clearkeys = protectionKeyController.processClearKeyLicenseRequest(keySystem, protData, message);\n if (clearkeys) {\n log('DRM: ClearKey license request handled by application!');\n sendLicenseRequestCompleteEvent(eventData);\n protectionModel.updateKeySession(sessionToken, clearkeys);\n return;\n }\n }\n\n // All remaining key system scenarios require a request to a remote license server\n const xhr = new XMLHttpRequest();\n\n // Determine license server URL\n let url = null;\n if (protData && protData.serverURL) {\n const serverURL = protData.serverURL;\n if (typeof serverURL === 'string' && serverURL !== '') {\n url = serverURL;\n } else if (typeof serverURL === 'object' && serverURL.hasOwnProperty(messageType)) {\n url = serverURL[messageType];\n }\n } else if (protData && protData.laURL && protData.laURL !== '') {\n // TODO: Deprecated!\n url = protData.laURL;\n } else {\n url = keySystem.getLicenseServerURLFromInitData(CommonEncryption.getPSSHData(sessionToken.initData));\n if (!url) {\n url = e.data.laURL;\n }\n }\n // Possibly update or override the URL based on the message\n url = licenseServerData.getServerURLFromMessage(url, message, messageType);\n\n // Ensure valid license server URL\n if (!url) {\n sendLicenseRequestCompleteEvent(eventData, 'DRM: No license server URL specified!');\n return;\n }\n\n const reportError = function (xhr, eventData, keySystemString, messageType) {\n const errorMsg = ((xhr.response) ? licenseServerData.getErrorResponse(xhr.response, keySystemString, messageType) : 'NONE');\n sendLicenseRequestCompleteEvent(eventData, 'DRM: ' + keySystemString + ' update, XHR complete. status is \"' + xhr.statusText + '\" (' + xhr.status + '), readyState is ' + xhr.readyState + '. Response is ' + errorMsg);\n };\n\n xhr.open(licenseServerData.getHTTPMethod(messageType), url, true);\n xhr.responseType = licenseServerData.getResponseType(keySystemString, messageType);\n xhr.onload = function () {\n if (this.status == 200) {\n const licenseMessage = licenseServerData.getLicenseMessage(this.response, keySystemString, messageType);\n if (licenseMessage !== null) {\n sendLicenseRequestCompleteEvent(eventData);\n protectionModel.updateKeySession(sessionToken, licenseMessage);\n } else {\n reportError(this, eventData, keySystemString, messageType);\n }\n } else {\n reportError(this, eventData, keySystemString, messageType);\n }\n };\n xhr.onabort = function () {\n sendLicenseRequestCompleteEvent(eventData, 'DRM: ' + keySystemString + ' update, XHR aborted. status is \"' + this.statusText + '\" (' + this.status + '), readyState is ' + this.readyState);\n };\n xhr.onerror = function () {\n sendLicenseRequestCompleteEvent(eventData, 'DRM: ' + keySystemString + ' update, XHR error. status is \"' + this.statusText + '\" (' + this.status + '), readyState is ' + this.readyState);\n };\n\n // Set optional XMLHttpRequest headers from protection data and message\n const updateHeaders = function (headers) {\n if (headers) {\n for (const key in headers) {\n if ('authorization' === key.toLowerCase()) {\n xhr.withCredentials = true;\n }\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n };\n if (protData) {\n updateHeaders(protData.httpRequestHeaders);\n }\n updateHeaders(keySystem.getRequestHeadersFromMessage(message));\n\n // Overwrite withCredentials property from protData if present\n if (protData && typeof protData.withCredentials == 'boolean') {\n xhr.withCredentials = protData.withCredentials;\n }\n\n xhr.send(keySystem.getLicenseRequestFromMessage(message));\n }\n\n function onNeedKey(event) {\n log('DRM: onNeedKey');\n // Ignore non-cenc initData\n if (event.key.initDataType !== 'cenc') {\n log('DRM: Only \\'cenc\\' initData is supported! Ignoring initData of type: ' + event.key.initDataType);\n return;\n }\n\n // Some browsers return initData as Uint8Array (IE), some as ArrayBuffer (Chrome).\n // Convert to ArrayBuffer\n let abInitData = event.key.initData;\n if (ArrayBuffer.isView(abInitData)) {\n abInitData = abInitData.buffer;\n }\n\n // If key system has already been selected and initData already seen, then do nothing\n if (keySystem) {\n const initDataForKS = CommonEncryption.getPSSHForKeySystem(keySystem, abInitData);\n if (initDataForKS) {\n\n // Check for duplicate initData\n const currentInitData = protectionModel.getAllInitData();\n for (let i = 0; i < currentInitData.length; i++) {\n if (protectionKeyController.initDataEquals(initDataForKS, currentInitData[i])) {\n log('DRM: Ignoring initData because we have already seen it!');\n return;\n }\n }\n }\n }\n\n log('DRM: initData:', String.fromCharCode.apply(null, new Uint8Array(abInitData)));\n\n const supportedKS = protectionKeyController.getSupportedKeySystems(abInitData, protDataSet);\n if (supportedKS.length === 0) {\n log('DRM: Received needkey event with initData, but we don\\'t support any of the key systems!');\n return;\n }\n\n selectKeySystem(supportedKS, false);\n }\n\n function getKeySystems() {\n return protectionKeyController ? protectionKeyController.getKeySystems() : [];\n }\n\n instance = {\n initialize: initialize,\n createKeySession: createKeySession,\n loadKeySession: loadKeySession,\n removeKeySession: removeKeySession,\n closeKeySession: closeKeySession,\n setServerCertificate: setServerCertificate,\n setMediaElement: setMediaElement,\n setSessionType: setSessionType,\n setRobustnessLevel: setRobustnessLevel,\n setProtectionData: setProtectionData,\n getSupportedKeySystemsFromContentProtection: getSupportedKeySystemsFromContentProtection,\n getKeySystems: getKeySystems,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nProtectionController.__dashjs_factory_name = 'ProtectionController';\nexport default dashjs.FactoryMaker.getClassFactory(ProtectionController); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport CommonEncryption from './../CommonEncryption';\nimport KeySystemClearKey from './../drm/KeySystemClearKey';\nimport KeySystemW3CClearKey from './../drm/KeySystemW3CClearKey';\nimport KeySystemWidevine from './../drm/KeySystemWidevine';\nimport KeySystemPlayReady from './../drm/KeySystemPlayReady';\nimport DRMToday from './../servers/DRMToday';\nimport PlayReady from './../servers/PlayReady';\nimport Widevine from './../servers/Widevine';\nimport ClearKey from './../servers/ClearKey';\nimport ProtectionConstants from '../../constants/ProtectionConstants';\n\n/**\n * @module ProtectionKeyController\n * @description Media protection key system functionality that can be modified/overridden by applications\n */\nfunction ProtectionKeyController() {\n\n let context = this.context;\n\n let instance,\n log,\n keySystems,\n BASE64,\n clearkeyKeySystem,\n clearkeyW3CKeySystem;\n\n function setConfig(config) {\n if (!config) return;\n\n if (config.log) {\n log = config.log;\n }\n\n if (config.BASE64) {\n BASE64 = config.BASE64;\n }\n }\n\n function initialize() {\n keySystems = [];\n\n let keySystem;\n\n // PlayReady\n keySystem = KeySystemPlayReady(context).getInstance({ BASE64: BASE64 });\n keySystems.push(keySystem);\n\n // Widevine\n keySystem = KeySystemWidevine(context).getInstance({ BASE64: BASE64 });\n keySystems.push(keySystem);\n\n // ClearKey\n keySystem = KeySystemClearKey(context).getInstance({ BASE64: BASE64 });\n keySystems.push(keySystem);\n clearkeyKeySystem = keySystem;\n\n // W3C ClearKey\n keySystem = KeySystemW3CClearKey(context).getInstance({ BASE64: BASE64, log: log });\n keySystems.push(keySystem);\n clearkeyW3CKeySystem = keySystem;\n }\n\n /**\n * Returns a prioritized list of key systems supported\n * by this player (not necessarily those supported by the\n * user agent)\n *\n * @returns {Array.} a prioritized\n * list of key systems\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function getKeySystems() {\n return keySystems;\n }\n\n /**\n * Returns the key system associated with the given key system string\n * name (i.e. 'org.w3.clearkey')\n *\n * @param {string} systemString the system string\n * @returns {KeySystem|null} the key system\n * or null if no supported key system is associated with the given key\n * system string\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function getKeySystemBySystemString(systemString) {\n for (let i = 0; i < keySystems.length; i++) {\n if (keySystems[i].systemString === systemString) {\n return keySystems[i];\n }\n }\n return null;\n }\n\n /**\n * Determines whether the given key system is ClearKey. This is\n * necessary because the EME spec defines ClearKey and its method\n * for providing keys to the key session; and this method has changed\n * between the various API versions. Our EME-specific ProtectionModels\n * must know if the system is ClearKey so that it can format the keys\n * according to the particular spec version.\n *\n * @param {Object} keySystem the key\n * @returns {boolean} true if this is the ClearKey key system, false\n * otherwise\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function isClearKey(keySystem) {\n return (keySystem === clearkeyKeySystem || keySystem === clearkeyW3CKeySystem);\n }\n\n /**\n * Check equality of initData array buffers.\n *\n * @param {ArrayBuffer} initData1 - first initData\n * @param {ArrayBuffer} initData2 - second initData\n * @returns {boolean} true if the initData arrays are equal in size and\n * contents, false otherwise\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function initDataEquals(initData1, initData2) {\n if (initData1.byteLength === initData2.byteLength) {\n let data1 = new Uint8Array(initData1);\n let data2 = new Uint8Array(initData2);\n\n for (let j = 0; j < data1.length; j++) {\n if (data1[j] !== data2[j]) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n\n /**\n * Returns a set of supported key systems and CENC initialization data\n * from the given array of ContentProtection elements. Only\n * key systems that are supported by this player will be returned.\n * Key systems are returned in priority order (highest first).\n *\n * @param {Array.} cps - array of content protection elements parsed\n * from the manifest\n * @returns {Array.} array of objects indicating which supported key\n * systems were found. Empty array is returned if no\n * supported key systems were found\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function getSupportedKeySystemsFromContentProtection(cps) {\n let cp, ks, ksIdx, cpIdx;\n let supportedKS = [];\n\n if (cps) {\n for (ksIdx = 0; ksIdx < keySystems.length; ++ksIdx) {\n ks = keySystems[ksIdx];\n for (cpIdx = 0; cpIdx < cps.length; ++cpIdx) {\n cp = cps[cpIdx];\n if (cp.schemeIdUri.toLowerCase() === ks.schemeIdURI) {\n // Look for DRM-specific ContentProtection\n let initData = ks.getInitData(cp);\n if (!!initData) {\n supportedKS.push({\n ks: keySystems[ksIdx],\n initData: initData,\n cdmData: ks.getCDMData()\n });\n } else if (this.isClearKey(ks)) {\n supportedKS.push({\n ks: ks,\n initData: null\n });\n }\n }\n }\n }\n }\n return supportedKS;\n }\n\n /**\n * Returns key systems supported by this player for the given PSSH\n * initializationData. Only key systems supported by this player\n * that have protection data present will be returned. Key systems are returned in priority order\n * (highest priority first)\n *\n * @param {ArrayBuffer} initData Concatenated PSSH data for all DRMs\n * supported by the content\n * @param {ProtectionData} protDataSet user specified protection data - license server url etc\n * supported by the content\n * @returns {Array.} array of objects indicating which supported key\n * systems were found. Empty array is returned if no\n * supported key systems were found\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function getSupportedKeySystems(initData, protDataSet) {\n let supportedKS = [];\n let pssh = CommonEncryption.parsePSSHList(initData);\n\n for (let ksIdx = 0; ksIdx < keySystems.length; ++ksIdx) {\n let keySystemString = keySystems[ksIdx].systemString;\n let shouldNotFilterOutKeySystem = (protDataSet) ? keySystemString in protDataSet : true;\n\n if (keySystems[ksIdx].uuid in pssh && shouldNotFilterOutKeySystem) {\n supportedKS.push({\n ks: keySystems[ksIdx],\n initData: pssh[keySystems[ksIdx].uuid]\n });\n }\n }\n return supportedKS;\n }\n\n /**\n * Returns the license server implementation data that should be used for this request.\n *\n * @param {KeySystem} keySystem the key system\n * associated with this license request\n * @param {ProtectionData} protData protection data to use for the\n * request\n * @param {string} [messageType=\"license-request\"] the message type associated with this\n * request. Supported message types can be found\n * {@link https://w3c.github.io/encrypted-media/#idl-def-MediaKeyMessageType|here}.\n * @returns {LicenseServer|null} the license server\n * implementation that should be used for this request or null if the player should not\n * pass messages of the given type to a license server\n * @memberof module:ProtectionKeyController\n * @instance\n *\n */\n function getLicenseServer(keySystem, protData, messageType) {\n\n // Our default server implementations do not do anything with \"license-release\" or\n // \"individualization-request\" messages, so we just send a success event\n if (messageType === 'license-release' || messageType === 'individualization-request') {\n return null;\n }\n\n let licenseServerData = null;\n if (protData && protData.hasOwnProperty('drmtoday')) {\n licenseServerData = DRMToday(context).getInstance({ BASE64: BASE64 });\n } else if (keySystem.systemString === ProtectionConstants.WIDEVINE_KEYSTEM_STRING) {\n licenseServerData = Widevine(context).getInstance();\n } else if (keySystem.systemString === ProtectionConstants.PLAYREADY_KEYSTEM_STRING) {\n licenseServerData = PlayReady(context).getInstance();\n } else if (keySystem.systemString === ProtectionConstants.CLEARKEY_KEYSTEM_STRING) {\n licenseServerData = ClearKey(context).getInstance();\n }\n\n return licenseServerData;\n }\n\n /**\n * Allows application-specific retrieval of ClearKey keys.\n *\n * @param {KeySystem} clearkeyKeySystem They exact ClearKey System to be used\n * @param {ProtectionData} protData protection data to use for the\n * request\n * @param {ArrayBuffer} message the key message from the CDM\n * @return {ClearKeyKeySet|null} the clear keys associated with\n * the request or null if no keys can be returned by this function\n * @memberof module:ProtectionKeyController\n * @instance\n */\n function processClearKeyLicenseRequest(clearkeyKeySystem, protData, message) {\n try {\n return clearkeyKeySystem.getClearKeysFromProtectionData(protData, message);\n } catch (error) {\n log('Failed to retrieve clearkeys from ProtectionData');\n return null;\n }\n }\n\n function setProtectionData(protectionDataSet) {\n var getProtectionData = function (keySystemString) {\n var protData = null;\n if (protectionDataSet) {\n protData = (keySystemString in protectionDataSet) ? protectionDataSet[keySystemString] : null;\n }\n return protData;\n };\n\n for (var i = 0; i < keySystems.length; i++) {\n var keySystem = keySystems[i];\n if (keySystem.hasOwnProperty('init')) {\n keySystem.init(getProtectionData(keySystem.systemString));\n }\n }\n }\n\n instance = {\n initialize: initialize,\n setProtectionData: setProtectionData,\n isClearKey: isClearKey,\n initDataEquals: initDataEquals,\n getKeySystems: getKeySystems,\n getKeySystemBySystemString: getKeySystemBySystemString,\n getSupportedKeySystemsFromContentProtection: getSupportedKeySystemsFromContentProtection,\n getSupportedKeySystems: getSupportedKeySystems,\n getLicenseServer: getLicenseServer,\n processClearKeyLicenseRequest: processClearKeyLicenseRequest,\n setConfig: setConfig\n };\n\n return instance;\n}\n\nProtectionKeyController.__dashjs_factory_name = 'ProtectionKeyController';\nexport default dashjs.FactoryMaker.getSingletonFactory(ProtectionKeyController); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport KeyPair from '../vo/KeyPair';\nimport ClearKeyKeySet from '../vo/ClearKeyKeySet';\nimport CommonEncryption from '../CommonEncryption';\nimport ProtectionConstants from '../../constants/ProtectionConstants';\n\nconst uuid = 'e2719d58-a985-b3c9-781a-b030af78d30e';\nconst systemString = ProtectionConstants.CLEARKEY_KEYSTEM_STRING;\nconst schemeIdURI = 'urn:uuid:' + uuid;\n\nfunction KeySystemClearKey(config) {\n\n config = config || {};\n let instance;\n const BASE64 = config.BASE64;\n\n /**\n * Returns desired clearkeys (as specified in the CDM message) from protection data\n *\n * @param {ProtectionData} protectionData the protection data\n * @param {ArrayBuffer} message the ClearKey CDM message\n * @returns {ClearKeyKeySet} the key set or null if none found\n * @throws {Error} if a keyID specified in the CDM message was not found in the\n * protection data\n * @memberof KeySystemClearKey\n */\n function getClearKeysFromProtectionData(protectionData, message) {\n let clearkeySet = null;\n if (protectionData) {\n // ClearKey is the only system that does not require a license server URL, so we\n // handle it here when keys are specified in protection data\n const jsonMsg = JSON.parse(String.fromCharCode.apply(null, new Uint8Array(message)));\n const keyPairs = [];\n for (let i = 0; i < jsonMsg.kids.length; i++) {\n const clearkeyID = jsonMsg.kids[i];\n const clearkey = (protectionData.clearkeys && protectionData.clearkeys.hasOwnProperty(clearkeyID)) ? protectionData.clearkeys[clearkeyID] : null;\n if (!clearkey) {\n throw new Error('DRM: ClearKey keyID (' + clearkeyID + ') is not known!');\n }\n // KeyIDs from CDM are not base64 padded. Keys may or may not be padded\n keyPairs.push(new KeyPair(clearkeyID, clearkey));\n }\n clearkeySet = new ClearKeyKeySet(keyPairs);\n }\n return clearkeySet;\n }\n\n function getInitData(cp) {\n return CommonEncryption.parseInitDataFromContentProtection(cp, BASE64);\n }\n\n function getRequestHeadersFromMessage(/*message*/) {\n return null;\n }\n\n function getLicenseRequestFromMessage(message) {\n return new Uint8Array(message);\n }\n\n function getLicenseServerURLFromInitData(/*initData*/) {\n return null;\n }\n\n function getCDMData() {\n return null;\n }\n\n instance = {\n uuid: uuid,\n schemeIdURI: schemeIdURI,\n systemString: systemString,\n getInitData: getInitData,\n getRequestHeadersFromMessage: getRequestHeadersFromMessage,\n getLicenseRequestFromMessage: getLicenseRequestFromMessage,\n getLicenseServerURLFromInitData: getLicenseServerURLFromInitData,\n getCDMData: getCDMData,\n getClearKeysFromProtectionData: getClearKeysFromProtectionData\n };\n\n return instance;\n}\n\nKeySystemClearKey.__dashjs_factory_name = 'KeySystemClearKey';\nexport default dashjs.FactoryMaker.getSingletonFactory(KeySystemClearKey); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Microsoft PlayReady DRM\n *\n * @class\n * @implements KeySystem\n */\nimport CommonEncryption from '../CommonEncryption';\nimport ProtectionConstants from '../../constants/ProtectionConstants';\n\nconst uuid = '9a04f079-9840-4286-ab92-e65be0885f95';\nconst systemString = ProtectionConstants.PLAYREADY_KEYSTEM_STRING;\nconst schemeIdURI = 'urn:uuid:' + uuid;\nconst PRCDMData = '%CUSTOMDATA%';\nlet protData;\n\nfunction KeySystemPlayReady(config) {\n\n config = config || {};\n let instance;\n let messageFormat = 'utf16';\n const BASE64 = config.BASE64;\n\n function checkConfig() {\n if (!BASE64 || !BASE64.hasOwnProperty('decodeArray') || !BASE64.hasOwnProperty('decodeArray') ) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n function getRequestHeadersFromMessage(message) {\n let msg,\n xmlDoc;\n const headers = {};\n const parser = new DOMParser();\n const dataview = (messageFormat === 'utf16') ? new Uint16Array(message) : new Uint8Array(message);\n\n msg = String.fromCharCode.apply(null, dataview);\n xmlDoc = parser.parseFromString(msg, 'application/xml');\n\n const headerNameList = xmlDoc.getElementsByTagName('name');\n const headerValueList = xmlDoc.getElementsByTagName('value');\n for (let i = 0; i < headerNameList.length; i++) {\n headers[headerNameList[i].childNodes[0].nodeValue] = headerValueList[i].childNodes[0].nodeValue;\n }\n // some versions of the PlayReady CDM return 'Content' instead of 'Content-Type'.\n // this is NOT w3c conform and license servers may reject the request!\n // -> rename it to proper w3c definition!\n if (headers.hasOwnProperty('Content')) {\n headers['Content-Type'] = headers.Content;\n delete headers.Content;\n }\n return headers;\n }\n\n function getLicenseRequestFromMessage(message) {\n let msg,\n xmlDoc;\n let licenseRequest = null;\n const parser = new DOMParser();\n const dataview = (messageFormat === 'utf16') ? new Uint16Array(message) : new Uint8Array(message);\n\n checkConfig();\n msg = String.fromCharCode.apply(null, dataview);\n xmlDoc = parser.parseFromString(msg, 'application/xml');\n\n if (xmlDoc.getElementsByTagName('Challenge')[0]) {\n const Challenge = xmlDoc.getElementsByTagName('Challenge')[0].childNodes[0].nodeValue;\n if (Challenge) {\n licenseRequest = BASE64.decode(Challenge);\n }\n }\n return licenseRequest;\n }\n\n function getLicenseServerURLFromInitData(initData) {\n if (initData) {\n const data = new DataView(initData);\n const numRecords = data.getUint16(4, true);\n let offset = 6;\n const parser = new DOMParser();\n\n for (let i = 0; i < numRecords; i++) {\n // Parse the PlayReady Record header\n const recordType = data.getUint16(offset, true);\n offset += 2;\n const recordLength = data.getUint16(offset, true);\n offset += 2;\n if (recordType !== 0x0001) {\n offset += recordLength;\n continue;\n }\n\n const recordData = initData.slice(offset, offset + recordLength);\n const record = String.fromCharCode.apply(null, new Uint16Array(recordData));\n const xmlDoc = parser.parseFromString(record, 'application/xml');\n\n // First try \n if (xmlDoc.getElementsByTagName('LA_URL')[0]) {\n const laurl = xmlDoc.getElementsByTagName('LA_URL')[0].childNodes[0].nodeValue;\n if (laurl) {\n return laurl;\n }\n }\n\n // Optionally, try \n if (xmlDoc.getElementsByTagName('LUI_URL')[0]) {\n const luiurl = xmlDoc.getElementsByTagName('LUI_URL')[0].childNodes[0].nodeValue;\n if (luiurl) {\n return luiurl;\n }\n }\n }\n }\n\n return null;\n }\n\n function getInitData(cpData) {\n // * desc@ getInitData\n // * generate PSSH data from PROHeader defined in MPD file\n // * PSSH format:\n // * size (4)\n // * box type(PSSH) (8)\n // * Protection SystemID (16)\n // * protection system data size (4) - length of decoded PROHeader\n // * decoded PROHeader data from MPD file\n const PSSHBoxType = new Uint8Array([0x70, 0x73, 0x73, 0x68, 0x00, 0x00, 0x00, 0x00]); //'PSSH' 8 bytes\n const playreadySystemID = new Uint8Array([0x9a, 0x04, 0xf0, 0x79, 0x98, 0x40, 0x42, 0x86, 0xab, 0x92, 0xe6, 0x5b, 0xe0, 0x88, 0x5f, 0x95]);\n\n let byteCursor = 0;\n let uint8arraydecodedPROHeader = null;\n\n let PROSize,\n PSSHSize,\n PSSHBoxBuffer,\n PSSHBox,\n PSSHData;\n\n checkConfig();\n // Handle common encryption PSSH\n if ('pssh' in cpData) {\n return CommonEncryption.parseInitDataFromContentProtection(cpData, BASE64);\n }\n // Handle native MS PlayReady ContentProtection elements\n if ('pro' in cpData) {\n uint8arraydecodedPROHeader = BASE64.decodeArray(cpData.pro.__text);\n }\n else if ('prheader' in cpData) {\n uint8arraydecodedPROHeader = BASE64.decodeArray(cpData.prheader.__text);\n }\n else {\n return null;\n }\n\n PROSize = uint8arraydecodedPROHeader.length;\n PSSHSize = 0x4 + PSSHBoxType.length + playreadySystemID.length + 0x4 + PROSize;\n\n PSSHBoxBuffer = new ArrayBuffer(PSSHSize);\n\n PSSHBox = new Uint8Array(PSSHBoxBuffer);\n PSSHData = new DataView(PSSHBoxBuffer);\n\n PSSHData.setUint32(byteCursor, PSSHSize);\n byteCursor += 0x4;\n\n PSSHBox.set(PSSHBoxType, byteCursor);\n byteCursor += PSSHBoxType.length;\n\n PSSHBox.set(playreadySystemID, byteCursor);\n byteCursor += playreadySystemID.length;\n\n PSSHData.setUint32(byteCursor, PROSize);\n byteCursor += 0x4;\n\n PSSHBox.set(uint8arraydecodedPROHeader, byteCursor);\n byteCursor += PROSize;\n\n return PSSHBox.buffer;\n }\n\n /**\n * It seems that some PlayReady implementations return their XML-based CDM\n * messages using UTF16, while others return them as UTF8. Use this function\n * to modify the message format to expect when parsing CDM messages.\n *\n * @param {string} format the expected message format. Either \"utf8\" or \"utf16\".\n * @throws {Error} Specified message format is not one of \"utf8\" or \"utf16\"\n */\n function setPlayReadyMessageFormat(format) {\n if (format !== 'utf8' && format !== 'utf16') {\n throw new Error('Illegal PlayReady message format! -- ' + format);\n }\n messageFormat = format;\n }\n\n /**\n * Initialize the Key system with protection data\n * @param {Object} protectionData the protection data\n */\n function init(protectionData) {\n if (protectionData) {\n protData = protectionData;\n }\n }\n\n\n /**\n * Get Playready Custom data\n */\n function getCDMData() {\n let customData,\n cdmData,\n cdmDataBytes,\n i;\n\n checkConfig();\n if (protData && protData.cdmData) {\n // Convert custom data into multibyte string\n customData = [];\n for (i = 0; i < protData.cdmData.length; ++i) {\n customData.push(protData.cdmData.charCodeAt(i));\n customData.push(0);\n }\n customData = String.fromCharCode.apply(null, customData);\n\n // Encode in Base 64 the custom data string\n customData = BASE64.encode(customData);\n\n // Initialize CDM data with Base 64 encoded custom data\n // (see https://msdn.microsoft.com/en-us/library/dn457361.aspx)\n cdmData = PRCDMData.replace('%CUSTOMDATA%', customData);\n\n // Convert CDM data into multibyte characters\n cdmDataBytes = [];\n for (i = 0; i < cdmData.length; ++i) {\n cdmDataBytes.push(cdmData.charCodeAt(i));\n cdmDataBytes.push(0);\n }\n\n return new Uint8Array(cdmDataBytes).buffer;\n }\n\n return null;\n }\n\n instance = {\n uuid: uuid,\n schemeIdURI: schemeIdURI,\n systemString: systemString,\n getInitData: getInitData,\n getRequestHeadersFromMessage: getRequestHeadersFromMessage,\n getLicenseRequestFromMessage: getLicenseRequestFromMessage,\n getLicenseServerURLFromInitData: getLicenseServerURLFromInitData,\n getCDMData: getCDMData,\n setPlayReadyMessageFormat: setPlayReadyMessageFormat,\n init: init\n };\n\n return instance;\n}\n\nKeySystemPlayReady.__dashjs_factory_name = 'KeySystemPlayReady';\nexport default dashjs.FactoryMaker.getSingletonFactory(KeySystemPlayReady); /* jshint ignore:line */", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport KeyPair from '../vo/KeyPair';\nimport ClearKeyKeySet from '../vo/ClearKeyKeySet';\nimport CommonEncryption from '../CommonEncryption';\nimport ProtectionConstants from '../../constants/ProtectionConstants';\n\nconst uuid = '1077efec-c0b2-4d02-ace3-3c1e52e2fb4b';\nconst systemString = ProtectionConstants.CLEARKEY_KEYSTEM_STRING;\nconst schemeIdURI = 'urn:uuid:' + uuid;\n\nfunction KeySystemW3CClearKey(config) {\n let instance;\n const BASE64 = config.BASE64;\n const log = config.log;\n /**\n * Returns desired clearkeys (as specified in the CDM message) from protection data\n *\n * @param {ProtectionData} protectionData the protection data\n * @param {ArrayBuffer} message the ClearKey CDM message\n * @returns {ClearKeyKeySet} the key set or null if none found\n * @throws {Error} if a keyID specified in the CDM message was not found in the\n * protection data\n * @memberof KeySystemClearKey\n */\n function getClearKeysFromProtectionData(protectionData, message) {\n let clearkeySet = null;\n if (protectionData) {\n // ClearKey is the only system that does not require a license server URL, so we\n // handle it here when keys are specified in protection data\n const jsonMsg = JSON.parse(String.fromCharCode.apply(null, new Uint8Array(message)));\n const keyPairs = [];\n for (let i = 0; i < jsonMsg.kids.length; i++) {\n const clearkeyID = jsonMsg.kids[i];\n const clearkey = (protectionData.clearkeys && protectionData.clearkeys.hasOwnProperty(clearkeyID)) ? protectionData.clearkeys[clearkeyID] : null;\n if (!clearkey) {\n throw new Error('DRM: ClearKey keyID (' + clearkeyID + ') is not known!');\n }\n // KeyIDs from CDM are not base64 padded. Keys may or may not be padded\n keyPairs.push(new KeyPair(clearkeyID, clearkey));\n }\n clearkeySet = new ClearKeyKeySet(keyPairs);\n\n log('Warning: ClearKey schemeIdURI is using W3C Common PSSH systemID (1077efec-c0b2-4d02-ace3-3c1e52e2fb4b) in Content Protection. See DASH-IF IOP v4.1 section 7.6.2.4');\n }\n return clearkeySet;\n }\n\n function getInitData(cp) {\n return CommonEncryption.parseInitDataFromContentProtection(cp, BASE64);\n }\n\n function getRequestHeadersFromMessage(/*message*/) {\n return null;\n }\n\n function getLicenseRequestFromMessage(message) {\n return new Uint8Array(message);\n }\n\n function getLicenseServerURLFromInitData(/*initData*/) {\n return null;\n }\n\n function getCDMData() {\n return null;\n }\n\n instance = {\n uuid: uuid,\n schemeIdURI: schemeIdURI,\n systemString: systemString,\n getInitData: getInitData,\n getRequestHeadersFromMessage: getRequestHeadersFromMessage,\n getLicenseRequestFromMessage: getLicenseRequestFromMessage,\n getLicenseServerURLFromInitData: getLicenseServerURLFromInitData,\n getCDMData: getCDMData,\n getClearKeysFromProtectionData: getClearKeysFromProtectionData\n };\n\n return instance;\n}\n\nKeySystemW3CClearKey.__dashjs_factory_name = 'KeySystemW3CClearKey';\nexport default dashjs.FactoryMaker.getSingletonFactory(KeySystemW3CClearKey); /* jshint ignore:line */\n\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Google Widevine DRM\n *\n * @class\n * @implements MediaPlayer.dependencies.protection.KeySystem\n */\n\nimport CommonEncryption from '../CommonEncryption';\nimport ProtectionConstants from '../../constants/ProtectionConstants';\n\nconst uuid = 'edef8ba9-79d6-4ace-a3c8-27dcd51d21ed';\nconst systemString = ProtectionConstants.WIDEVINE_KEYSTEM_STRING;\nconst schemeIdURI = 'urn:uuid:' + uuid;\n\nfunction KeySystemWidevine(config) {\n\n config = config || {};\n let instance;\n let protData = null;\n const BASE64 = config.BASE64;\n\n function init(protectionData) {\n if (protectionData) {\n protData = protectionData;\n }\n }\n\n function replaceKID(pssh, KID) {\n let pssh_array;\n let replace = true;\n let kidLen = 16;\n let pos;\n let i, j;\n\n pssh_array = new Uint8Array(pssh);\n\n for (i = 0; i <= pssh_array.length - (kidLen + 2); i++) {\n if (pssh_array[i] === 0x12 && pssh_array[i + 1] === 0x10) {\n pos = i + 2;\n for (j = pos; j < (pos + kidLen); j++) {\n if (pssh_array[j] !== 0xFF) {\n replace = false;\n break;\n }\n }\n break;\n }\n }\n\n if (replace) {\n pssh_array.set(KID, pos);\n }\n\n return pssh_array.buffer;\n }\n\n function getInitData(cp) {\n var pssh = null;\n // Get pssh from protectionData or from manifest\n if (protData && protData.pssh) {\n pssh = BASE64.decodeArray(protData.pssh).buffer;\n } else {\n pssh = CommonEncryption.parseInitDataFromContentProtection(cp, BASE64);\n }\n\n // Check if KID within pssh is empty, in that case set KID value according to 'cenc:default_KID' value\n if (pssh) {\n pssh = replaceKID(pssh, cp['cenc:default_KID']);\n }\n\n return pssh;\n }\n\n function getRequestHeadersFromMessage( /*message*/ ) {\n return null;\n }\n\n function getLicenseRequestFromMessage(message) {\n return new Uint8Array(message);\n }\n\n function getLicenseServerURLFromInitData( /*initData*/ ) {\n return null;\n }\n\n function getCDMData() {\n return null;\n }\n\n instance = {\n uuid: uuid,\n schemeIdURI: schemeIdURI,\n systemString: systemString,\n init: init,\n getInitData: getInitData,\n getRequestHeadersFromMessage: getRequestHeadersFromMessage,\n getLicenseRequestFromMessage: getLicenseRequestFromMessage,\n getLicenseServerURLFromInitData: getLicenseServerURLFromInitData,\n getCDMData: getCDMData\n };\n\n return instance;\n}\n\nKeySystemWidevine.__dashjs_factory_name = 'KeySystemWidevine';\nexport default dashjs.FactoryMaker.getSingletonFactory(KeySystemWidevine); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Initial implementation of EME\n *\n * Implemented by Google Chrome prior to v36\n *\n * @implements ProtectionModel\n * @class\n */\nimport ProtectionKeyController from '../controllers/ProtectionKeyController';\nimport NeedKey from '../vo/NeedKey';\nimport KeyError from '../vo/KeyError';\nimport KeyMessage from '../vo/KeyMessage';\nimport KeySystemConfiguration from '../vo/KeySystemConfiguration';\nimport KeySystemAccess from '../vo/KeySystemAccess';\n\nfunction ProtectionModel_01b(config) {\n\n config = config || {};\n const context = this.context;\n const eventBus = config.eventBus;//Need to pass in here so we can use same instance since this is optional module\n const events = config.events;\n const log = config.log;\n const api = config.api;\n const errHandler = config.errHandler;\n\n let instance,\n videoElement,\n keySystem,\n protectionKeyController,\n\n // With this version of the EME APIs, sessionIDs are not assigned to\n // sessions until the first key message is received. We are assuming\n // that in the case of multiple sessions, key messages will be received\n // in the order that generateKeyRequest() is called.\n // Holding spot for newly-created sessions until we determine whether or\n // not the CDM supports sessionIDs\n pendingSessions,\n\n // List of sessions that have been initialized. Only the first position will\n // be used in the case that the CDM does not support sessionIDs\n sessions,\n\n // Not all CDMs support the notion of sessionIDs. Without sessionIDs\n // there is no way for us to differentiate between sessions, therefore\n // we must only allow a single session. Once we receive the first key\n // message we can set this flag to determine if more sessions are allowed\n moreSessionsAllowed,\n\n // This is our main event handler for all desired HTMLMediaElement events\n // related to EME. These events are translated into our API-independent\n // versions of the same events\n eventHandler;\n\n function setup() {\n videoElement = null;\n keySystem = null;\n pendingSessions = [];\n sessions = [];\n protectionKeyController = ProtectionKeyController(context).getInstance();\n eventHandler = createEventHandler();\n }\n\n function reset() {\n if (videoElement) {\n removeEventListeners();\n }\n for (let i = 0; i < sessions.length; i++) {\n closeKeySession(sessions[i]);\n }\n eventBus.trigger(events.TEARDOWN_COMPLETE);\n }\n\n function getKeySystem() {\n return keySystem;\n }\n\n function getAllInitData() {\n const retVal = [];\n for (let i = 0; i < pendingSessions.length; i++) {\n retVal.push(pendingSessions[i].initData);\n }\n for (let i = 0; i < sessions.length; i++) {\n retVal.push(sessions[i].initData);\n }\n return retVal;\n }\n\n function requestKeySystemAccess(ksConfigurations) {\n let ve = videoElement;\n if (!ve) { // Must have a video element to do this capability tests\n ve = document.createElement('video');\n }\n\n // Try key systems in order, first one with supported key system configuration\n // is used\n let found = false;\n for (let ksIdx = 0; ksIdx < ksConfigurations.length; ksIdx++) {\n const systemString = ksConfigurations[ksIdx].ks.systemString;\n const configs = ksConfigurations[ksIdx].configs;\n let supportedAudio = null;\n let supportedVideo = null;\n\n // Try key system configs in order, first one with supported audio/video\n // is used\n for (let configIdx = 0; configIdx < configs.length; configIdx++) {\n //let audios = configs[configIdx].audioCapabilities;\n const videos = configs[configIdx].videoCapabilities;\n // Look for supported video container/codecs\n if (videos && videos.length !== 0) {\n supportedVideo = []; // Indicates that we have a requested video config\n for (let videoIdx = 0; videoIdx < videos.length; videoIdx++) {\n if (ve.canPlayType(videos[videoIdx].contentType, systemString) !== '') {\n supportedVideo.push(videos[videoIdx]);\n }\n }\n }\n\n // No supported audio or video in this configuration OR we have\n // requested audio or video configuration that is not supported\n if ((!supportedAudio && !supportedVideo) ||\n (supportedAudio && supportedAudio.length === 0) ||\n (supportedVideo && supportedVideo.length === 0)) {\n continue;\n }\n\n // This configuration is supported\n found = true;\n const ksConfig = new KeySystemConfiguration(supportedAudio, supportedVideo);\n const ks = protectionKeyController.getKeySystemBySystemString(systemString);\n eventBus.trigger(events.KEY_SYSTEM_ACCESS_COMPLETE, { data: new KeySystemAccess(ks, ksConfig) });\n break;\n }\n }\n if (!found) {\n eventBus.trigger(events.KEY_SYSTEM_ACCESS_COMPLETE, {error: 'Key system access denied! -- No valid audio/video content configurations detected!'});\n }\n }\n\n function selectKeySystem(keySystemAccess) {\n keySystem = keySystemAccess.keySystem;\n eventBus.trigger(events.INTERNAL_KEY_SYSTEM_SELECTED);\n }\n\n function setMediaElement(mediaElement) {\n if (videoElement === mediaElement) {\n return;\n }\n\n // Replacing the previous element\n if (videoElement) {\n removeEventListeners();\n }\n\n videoElement = mediaElement;\n\n // Only if we are not detaching from the existing element\n if (videoElement) {\n videoElement.addEventListener(api.keyerror, eventHandler);\n videoElement.addEventListener(api.needkey, eventHandler);\n videoElement.addEventListener(api.keymessage, eventHandler);\n videoElement.addEventListener(api.keyadded, eventHandler);\n eventBus.trigger(events.VIDEO_ELEMENT_SELECTED);\n }\n }\n\n function createKeySession(initData /*, protData, keySystemType */) {\n if (!keySystem) {\n throw new Error('Can not create sessions until you have selected a key system');\n }\n\n // Determine if creating a new session is allowed\n if (moreSessionsAllowed || sessions.length === 0) {\n const newSession = { // Implements SessionToken\n sessionID: null,\n initData: initData,\n getSessionID: function () {\n return this.sessionID;\n },\n\n getExpirationTime: function () {\n return NaN;\n },\n\n getSessionType: function () {\n return 'temporary';\n }\n };\n pendingSessions.push(newSession);\n\n // Send our request to the CDM\n videoElement[api.generateKeyRequest](keySystem.systemString, new Uint8Array(initData));\n\n return newSession;\n\n } else {\n throw new Error('Multiple sessions not allowed!');\n }\n\n }\n\n function updateKeySession(sessionToken, message) {\n const sessionID = sessionToken.sessionID;\n if (!protectionKeyController.isClearKey(keySystem)) {\n // Send our request to the CDM\n videoElement[api.addKey](keySystem.systemString,\n new Uint8Array(message), new Uint8Array(sessionToken.initData), sessionID);\n } else {\n // For clearkey, message is a ClearKeyKeySet\n for (let i = 0; i < message.keyPairs.length; i++) {\n videoElement[api.addKey](keySystem.systemString,\n message.keyPairs[i].key, message.keyPairs[i].keyID, sessionID);\n }\n }\n }\n\n function closeKeySession(sessionToken) {\n // Send our request to the CDM\n videoElement[api.cancelKeyRequest](keySystem.systemString, sessionToken.sessionID);\n }\n\n function setServerCertificate(/*serverCertificate*/) { /* Not supported */ }\n function loadKeySession(/*sessionID*/) { /* Not supported */ }\n function removeKeySession(/*sessionToken*/) { /* Not supported */ }\n\n function createEventHandler() {\n return {\n handleEvent: function (event) {\n let sessionToken = null;\n switch (event.type) {\n case api.needkey:\n let initData = ArrayBuffer.isView(event.initData) ? event.initData.buffer : event.initData;\n eventBus.trigger(events.NEED_KEY, {key: new NeedKey(initData, 'cenc')});\n break;\n\n case api.keyerror:\n sessionToken = findSessionByID(sessions, event.sessionId);\n if (!sessionToken) {\n sessionToken = findSessionByID(pendingSessions, event.sessionId);\n }\n\n if (sessionToken) {\n let msg = '';\n switch (event.errorCode.code) {\n case 1:\n msg += 'MEDIA_KEYERR_UNKNOWN - An unspecified error occurred. This value is used for errors that don\\'t match any of the other codes.';\n break;\n case 2:\n msg += 'MEDIA_KEYERR_CLIENT - The Key System could not be installed or updated.';\n break;\n case 3:\n msg += 'MEDIA_KEYERR_SERVICE - The message passed into update indicated an error from the license service.';\n break;\n case 4:\n msg += 'MEDIA_KEYERR_OUTPUT - There is no available output device with the required characteristics for the content protection system.';\n break;\n case 5:\n msg += 'MEDIA_KEYERR_HARDWARECHANGE - A hardware configuration change caused a content protection error.';\n break;\n case 6:\n msg += 'MEDIA_KEYERR_DOMAIN - An error occurred in a multi-device domain licensing configuration. The most common error is a failure to join the domain.';\n break;\n }\n msg += ' System Code = ' + event.systemCode;\n // TODO: Build error string based on key error\n eventBus.trigger(events.KEY_ERROR, {data: new KeyError(sessionToken, msg)});\n } else {\n log('No session token found for key error');\n }\n break;\n\n case api.keyadded:\n sessionToken = findSessionByID(sessions, event.sessionId);\n if (!sessionToken) {\n sessionToken = findSessionByID(pendingSessions, event.sessionId);\n }\n\n if (sessionToken) {\n log('DRM: Key added.');\n eventBus.trigger(events.KEY_ADDED, {data: sessionToken});//TODO not sure anything is using sessionToken? why there?\n } else {\n log('No session token found for key added');\n }\n break;\n\n case api.keymessage:\n // If this CDM does not support session IDs, we will be limited\n // to a single session\n moreSessionsAllowed = (event.sessionId !== null) && (event.sessionId !== undefined);\n\n // SessionIDs supported\n if (moreSessionsAllowed) {\n // Attempt to find an uninitialized token with this sessionID\n sessionToken = findSessionByID(sessions, event.sessionId);\n if (!sessionToken && pendingSessions.length > 0) {\n\n // This is the first message for our latest session, so set the\n // sessionID and add it to our list\n sessionToken = pendingSessions.shift();\n sessions.push(sessionToken);\n sessionToken.sessionID = event.sessionId;\n }\n } else if (pendingSessions.length > 0) { // SessionIDs not supported\n sessionToken = pendingSessions.shift();\n sessions.push(sessionToken);\n\n if (pendingSessions.length !== 0) {\n errHandler.mediaKeyMessageError('Multiple key sessions were creates with a user-agent that does not support sessionIDs!! Unpredictable behavior ahead!');\n }\n }\n\n if (sessionToken) {\n let message = ArrayBuffer.isView(event.message) ? event.message.buffer : event.message;\n\n // For ClearKey, the spec mandates that you pass this message to the\n // addKey method, so we always save it to the token since there is no\n // way to tell which key system is in use\n sessionToken.keyMessage = message;\n eventBus.trigger(events.INTERNAL_KEY_MESSAGE, {data: new KeyMessage(sessionToken, message, event.defaultURL)});\n\n } else {\n log('No session token found for key message');\n }\n break;\n }\n }\n };\n }\n\n\n /**\n * Helper function to retrieve the stored session token based on a given\n * sessionID value\n *\n * @param {Array} sessionArray - the array of sessions to search\n * @param {*} sessionID - the sessionID to search for\n * @returns {*} the session token with the given sessionID\n */\n function findSessionByID(sessionArray, sessionID) {\n if (!sessionID || !sessionArray) {\n return null;\n } else {\n const len = sessionArray.length;\n for (let i = 0; i < len; i++) {\n if (sessionArray[i].sessionID == sessionID) {\n return sessionArray[i];\n }\n }\n return null;\n }\n }\n\n function removeEventListeners() {\n videoElement.removeEventListener(api.keyerror, eventHandler);\n videoElement.removeEventListener(api.needkey, eventHandler);\n videoElement.removeEventListener(api.keymessage, eventHandler);\n videoElement.removeEventListener(api.keyadded, eventHandler);\n }\n\n instance = {\n getAllInitData: getAllInitData,\n requestKeySystemAccess: requestKeySystemAccess,\n getKeySystem: getKeySystem,\n selectKeySystem: selectKeySystem,\n setMediaElement: setMediaElement,\n createKeySession: createKeySession,\n updateKeySession: updateKeySession,\n closeKeySession: closeKeySession,\n setServerCertificate: setServerCertificate,\n loadKeySession: loadKeySession,\n removeKeySession: removeKeySession,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nProtectionModel_01b.__dashjs_factory_name = 'ProtectionModel_01b';\nexport default dashjs.FactoryMaker.getClassFactory(ProtectionModel_01b); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Most recent EME implementation\n *\n * Implemented by Google Chrome v36+ (Windows, OSX, Linux)\n *\n * @implements ProtectionModel\n * @class\n */\nimport ProtectionKeyController from '../controllers/ProtectionKeyController';\nimport NeedKey from '../vo/NeedKey';\nimport KeyError from '../vo/KeyError';\nimport KeyMessage from '../vo/KeyMessage';\nimport KeySystemAccess from '../vo/KeySystemAccess';\nimport ProtectionConstants from '../../constants/ProtectionConstants';\n\nfunction ProtectionModel_21Jan2015(config) {\n\n config = config || {};\n const context = this.context;\n const eventBus = config.eventBus;//Need to pass in here so we can use same instance since this is optional module\n const events = config.events;\n const log = config.log;\n\n let instance,\n keySystem,\n videoElement,\n mediaKeys,\n sessions,\n eventHandler,\n protectionKeyController;\n\n function setup() {\n keySystem = null;\n videoElement = null;\n mediaKeys = null;\n sessions = [];\n protectionKeyController = ProtectionKeyController(context).getInstance();\n eventHandler = createEventHandler();\n }\n\n function reset() {\n const numSessions = sessions.length;\n let session;\n\n if (numSessions !== 0) {\n // Called when we are done closing a session. Success or fail\n const done = function (session) {\n removeSession(session);\n if (sessions.length === 0) {\n if (videoElement) {\n videoElement.removeEventListener('encrypted', eventHandler);\n videoElement.setMediaKeys(null).then(function () {\n eventBus.trigger(events.TEARDOWN_COMPLETE);\n });\n } else {\n eventBus.trigger(events.TEARDOWN_COMPLETE);\n }\n }\n };\n for (let i = 0; i < numSessions; i++) {\n session = sessions[i];\n (function (s) {\n // Override closed promise resolver\n session.session.closed.then(function () {\n done(s);\n });\n // Close the session and handle errors, otherwise promise\n // resolver above will be called\n closeKeySessionInternal(session).catch(function () {\n done(s);\n });\n\n })(session);\n }\n } else {\n eventBus.trigger(events.TEARDOWN_COMPLETE);\n }\n }\n\n function getKeySystem() {\n return keySystem;\n }\n\n function getAllInitData() {\n const retVal = [];\n for (let i = 0; i < sessions.length; i++) {\n retVal.push(sessions[i].initData);\n }\n return retVal;\n }\n\n function requestKeySystemAccess(ksConfigurations) {\n requestKeySystemAccessInternal(ksConfigurations, 0);\n }\n\n function selectKeySystem(keySystemAccess) {\n keySystemAccess.mksa.createMediaKeys().then(function (mkeys) {\n keySystem = keySystemAccess.keySystem;\n mediaKeys = mkeys;\n if (videoElement) {\n videoElement.setMediaKeys(mediaKeys).then(function () {\n eventBus.trigger(events.INTERNAL_KEY_SYSTEM_SELECTED);\n });\n }\n\n }).catch(function () {\n eventBus.trigger(events.INTERNAL_KEY_SYSTEM_SELECTED, {error: 'Error selecting keys system (' + keySystemAccess.keySystem.systemString + ')! Could not create MediaKeys -- TODO'});\n });\n }\n\n function setMediaElement(mediaElement) {\n if (videoElement === mediaElement)\n return;\n\n // Replacing the previous element\n if (videoElement) {\n videoElement.removeEventListener('encrypted', eventHandler);\n videoElement.setMediaKeys(null);\n }\n\n videoElement = mediaElement;\n\n // Only if we are not detaching from the existing element\n if (videoElement) {\n videoElement.addEventListener('encrypted', eventHandler);\n if (mediaKeys) {\n videoElement.setMediaKeys(mediaKeys);\n }\n }\n }\n\n function setServerCertificate(serverCertificate) {\n if (!keySystem || !mediaKeys) {\n throw new Error('Can not set server certificate until you have selected a key system');\n }\n mediaKeys.setServerCertificate(serverCertificate).then(function () {\n log('DRM: License server certificate successfully updated.');\n eventBus.trigger(events.SERVER_CERTIFICATE_UPDATED);\n }).catch(function (error) {\n eventBus.trigger(events.SERVER_CERTIFICATE_UPDATED, {error: 'Error updating server certificate -- ' + error.name});\n });\n }\n\n function createKeySession(initData, protData, sessionType) {\n if (!keySystem || !mediaKeys) {\n throw new Error('Can not create sessions until you have selected a key system');\n }\n\n const session = mediaKeys.createSession(sessionType);\n const sessionToken = createSessionToken(session, initData, sessionType);\n const ks = this.getKeySystem();\n\n // Generate initial key request.\n // keyids type is used for clearkey when keys are provided directly in the protection data and then request to a license server is not needed\n const dataType = ks.systemString === ProtectionConstants.CLEARKEY_KEYSTEM_STRING && protData && protData.clearkeys ? 'keyids' : 'cenc';\n session.generateRequest(dataType, initData).then(function () {\n log('DRM: Session created. SessionID = ' + sessionToken.getSessionID());\n eventBus.trigger(events.KEY_SESSION_CREATED, {data: sessionToken});\n }).catch(function (error) {\n // TODO: Better error string\n removeSession(sessionToken);\n eventBus.trigger(events.KEY_SESSION_CREATED, {data: null, error: 'Error generating key request -- ' + error.name});\n });\n }\n\n function updateKeySession(sessionToken, message) {\n const session = sessionToken.session;\n\n // Send our request to the key session\n if (protectionKeyController.isClearKey(keySystem)) {\n message = message.toJWK();\n }\n session.update(message).catch(function (error) {\n eventBus.trigger(events.KEY_ERROR, {data: new KeyError(sessionToken, 'Error sending update() message! ' + error.name)});\n });\n }\n\n function loadKeySession(sessionID) {\n if (!keySystem || !mediaKeys) {\n throw new Error('Can not load sessions until you have selected a key system');\n }\n\n const session = mediaKeys.createSession();\n\n // Load persisted session data into our newly created session object\n session.load(sessionID).then(function (success) {\n if (success) {\n const sessionToken = createSessionToken(session);\n log('DRM: Session created. SessionID = ' + sessionToken.getSessionID());\n eventBus.trigger(events.KEY_SESSION_CREATED, {data: sessionToken});\n } else {\n eventBus.trigger(events.KEY_SESSION_CREATED, {data: null, error: 'Could not load session! Invalid Session ID (' + sessionID + ')'});\n }\n }).catch(function (error) {\n eventBus.trigger(events.KEY_SESSION_CREATED, {data: null, error: 'Could not load session (' + sessionID + ')! ' + error.name});\n });\n }\n\n function removeKeySession(sessionToken) {\n const session = sessionToken.session;\n\n session.remove().then(function () {\n log('DRM: Session removed. SessionID = ' + sessionToken.getSessionID());\n eventBus.trigger(events.KEY_SESSION_REMOVED, {data: sessionToken.getSessionID()});\n }, function (error) {\n eventBus.trigger(events.KEY_SESSION_REMOVED, {data: null, error: 'Error removing session (' + sessionToken.getSessionID() + '). ' + error.name});\n\n });\n }\n\n function closeKeySession(sessionToken) {\n // Send our request to the key session\n closeKeySessionInternal(sessionToken).catch(function (error) {\n removeSession(sessionToken);\n eventBus.trigger(events.KEY_SESSION_CLOSED, {data: null, error: 'Error closing session (' + sessionToken.getSessionID() + ') ' + error.name});\n });\n }\n\n function requestKeySystemAccessInternal(ksConfigurations, idx) {\n (function (i) {\n const keySystem = ksConfigurations[i].ks;\n const configs = ksConfigurations[i].configs;\n navigator.requestMediaKeySystemAccess(keySystem.systemString, configs).then(function (mediaKeySystemAccess) {\n // Chrome 40 does not currently implement MediaKeySystemAccess.getConfiguration()\n const configuration = (typeof mediaKeySystemAccess.getConfiguration === 'function') ?\n mediaKeySystemAccess.getConfiguration() : null;\n const keySystemAccess = new KeySystemAccess(keySystem, configuration);\n keySystemAccess.mksa = mediaKeySystemAccess;\n eventBus.trigger(events.KEY_SYSTEM_ACCESS_COMPLETE, {data: keySystemAccess});\n\n }).catch(function () {\n if (++i < ksConfigurations.length) {\n requestKeySystemAccessInternal(ksConfigurations, i);\n } else {\n eventBus.trigger(events.KEY_SYSTEM_ACCESS_COMPLETE, {error: 'Key system access denied!'});\n }\n });\n })(idx);\n }\n\n function closeKeySessionInternal(sessionToken) {\n const session = sessionToken.session;\n\n // Remove event listeners\n session.removeEventListener('keystatuseschange', sessionToken);\n session.removeEventListener('message', sessionToken);\n\n // Send our request to the key session\n return session.close();\n }\n\n // This is our main event handler for all desired HTMLMediaElement events\n // related to EME. These events are translated into our API-independent\n // versions of the same events\n function createEventHandler() {\n return {\n handleEvent: function (event) {\n switch (event.type) {\n case 'encrypted':\n if (event.initData) {\n let initData = ArrayBuffer.isView(event.initData) ? event.initData.buffer : event.initData;\n eventBus.trigger(events.NEED_KEY, {key: new NeedKey(initData, event.initDataType)});\n }\n break;\n }\n }\n };\n }\n\n function removeSession(token) {\n // Remove from our session list\n for (let i = 0; i < sessions.length; i++) {\n if (sessions[i] === token) {\n sessions.splice(i,1);\n break;\n }\n }\n }\n\n // Function to create our session token objects which manage the EME\n // MediaKeySession and session-specific event handler\n function createSessionToken(session, initData, sessionType) {\n const token = { // Implements SessionToken\n session: session,\n initData: initData,\n\n // This is our main event handler for all desired MediaKeySession events\n // These events are translated into our API-independent versions of the\n // same events\n handleEvent: function (event) {\n switch (event.type) {\n case 'keystatuseschange':\n eventBus.trigger(events.KEY_STATUSES_CHANGED, {data: this});\n break;\n\n case 'message':\n let message = ArrayBuffer.isView(event.message) ? event.message.buffer : event.message;\n eventBus.trigger(events.INTERNAL_KEY_MESSAGE, {data: new KeyMessage(this, message, undefined, event.messageType)});\n break;\n }\n },\n\n getSessionID: function () {\n return session.sessionId;\n },\n\n getExpirationTime: function () {\n return session.expiration;\n },\n\n getKeyStatuses: function () {\n return session.keyStatuses;\n },\n\n getSessionType: function () {\n return sessionType;\n }\n };\n\n // Add all event listeners\n session.addEventListener('keystatuseschange', token);\n session.addEventListener('message', token);\n\n // Register callback for session closed Promise\n session.closed.then(function () {\n removeSession(token);\n log('DRM: Session closed. SessionID = ' + token.getSessionID());\n eventBus.trigger(events.KEY_SESSION_CLOSED, {data: token.getSessionID()});\n });\n\n // Add to our session list\n sessions.push(token);\n\n return token;\n }\n\n instance = {\n getAllInitData: getAllInitData,\n requestKeySystemAccess: requestKeySystemAccess,\n getKeySystem: getKeySystem,\n selectKeySystem: selectKeySystem,\n setMediaElement: setMediaElement,\n setServerCertificate: setServerCertificate,\n createKeySession: createKeySession,\n updateKeySession: updateKeySession,\n loadKeySession: loadKeySession,\n removeKeySession: removeKeySession,\n closeKeySession: closeKeySession,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nProtectionModel_21Jan2015.__dashjs_factory_name = 'ProtectionModel_21Jan2015';\nexport default dashjs.FactoryMaker.getClassFactory(ProtectionModel_21Jan2015); /* jshint ignore:line */\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Implementation of the EME APIs as of the 3 Feb 2014 state of the specification.\n *\n * Implemented by Internet Explorer 11 (Windows 8.1)\n *\n * @implements ProtectionModel\n * @class\n */\n\nimport ProtectionKeyController from '../controllers/ProtectionKeyController';\nimport NeedKey from '../vo/NeedKey';\nimport KeyError from '../vo/KeyError';\nimport KeyMessage from '../vo/KeyMessage';\nimport KeySystemConfiguration from '../vo/KeySystemConfiguration';\nimport KeySystemAccess from '../vo/KeySystemAccess';\n\nfunction ProtectionModel_3Feb2014(config) {\n\n config = config || {};\n let context = this.context;\n let eventBus = config.eventBus;//Need to pass in here so we can use same instance since this is optional module\n const events = config.events;\n let log = config.log;\n let api = config.api;\n\n\n let instance,\n videoElement,\n keySystem,\n mediaKeys,\n keySystemAccess,\n sessions,\n eventHandler,\n protectionKeyController;\n\n function setup() {\n videoElement = null;\n keySystem = null;\n mediaKeys = null;\n keySystemAccess = null;\n sessions = [];\n protectionKeyController = ProtectionKeyController(context).getInstance();\n eventHandler = createEventHandler();\n }\n\n function reset() {\n try {\n for (let i = 0; i < sessions.length; i++) {\n closeKeySession(sessions[i]);\n }\n if (videoElement) {\n videoElement.removeEventListener(api.needkey, eventHandler);\n }\n eventBus.trigger(events.TEARDOWN_COMPLETE);\n } catch (error) {\n eventBus.trigger(events.TEARDOWN_COMPLETE, {error: 'Error tearing down key sessions and MediaKeys! -- ' + error.message});\n }\n }\n\n function getKeySystem() {\n return keySystem;\n }\n\n function getAllInitData() {\n let retVal = [];\n for (let i = 0; i < sessions.length; i++) {\n retVal.push(sessions[i].initData);\n }\n return retVal;\n }\n\n function requestKeySystemAccess(ksConfigurations) {\n\n // Try key systems in order, first one with supported key system configuration\n // is used\n let found = false;\n for (let ksIdx = 0; ksIdx < ksConfigurations.length; ksIdx++) {\n let systemString = ksConfigurations[ksIdx].ks.systemString;\n let configs = ksConfigurations[ksIdx].configs;\n let supportedAudio = null;\n let supportedVideo = null;\n\n // Try key system configs in order, first one with supported audio/video\n // is used\n for (let configIdx = 0; configIdx < configs.length; configIdx++) {\n let audios = configs[configIdx].audioCapabilities;\n let videos = configs[configIdx].videoCapabilities;\n\n // Look for supported audio container/codecs\n if (audios && audios.length !== 0) {\n supportedAudio = []; // Indicates that we have a requested audio config\n for (let audioIdx = 0; audioIdx < audios.length; audioIdx++) {\n if (window[api.MediaKeys].isTypeSupported(systemString, audios[audioIdx].contentType)) {\n supportedAudio.push(audios[audioIdx]);\n }\n }\n }\n\n // Look for supported video container/codecs\n if (videos && videos.length !== 0) {\n supportedVideo = []; // Indicates that we have a requested video config\n for (let videoIdx = 0; videoIdx < videos.length; videoIdx++) {\n if (window[api.MediaKeys].isTypeSupported(systemString, videos[videoIdx].contentType)) {\n supportedVideo.push(videos[videoIdx]);\n }\n }\n }\n\n // No supported audio or video in this configuration OR we have\n // requested audio or video configuration that is not supported\n if ((!supportedAudio && !supportedVideo) ||\n (supportedAudio && supportedAudio.length === 0) ||\n (supportedVideo && supportedVideo.length === 0)) {\n continue;\n }\n\n // This configuration is supported\n found = true;\n let ksConfig = new KeySystemConfiguration(supportedAudio, supportedVideo);\n let ks = protectionKeyController.getKeySystemBySystemString(systemString);\n eventBus.trigger(events.KEY_SYSTEM_ACCESS_COMPLETE, {data: new KeySystemAccess(ks, ksConfig)});\n break;\n }\n }\n if (!found) {\n eventBus.trigger(events.KEY_SYSTEM_ACCESS_COMPLETE, {error: 'Key system access denied! -- No valid audio/video content configurations detected!'});\n }\n }\n\n function selectKeySystem(ksAccess) {\n try {\n mediaKeys = ksAccess.mediaKeys = new window[api.MediaKeys](ksAccess.keySystem.systemString);\n keySystem = ksAccess.keySystem;\n keySystemAccess = ksAccess;\n if (videoElement) {\n setMediaKeys();\n }\n eventBus.trigger(events.INTERNAL_KEY_SYSTEM_SELECTED);\n } catch (error) {\n eventBus.trigger(events.INTERNAL_KEY_SYSTEM_SELECTED, {error: 'Error selecting keys system (' + keySystem.systemString + ')! Could not create MediaKeys -- TODO'});\n }\n }\n\n function setMediaElement(mediaElement) {\n if (videoElement === mediaElement)\n return;\n\n // Replacing the previous element\n if (videoElement) {\n videoElement.removeEventListener(api.needkey, eventHandler);\n }\n\n videoElement = mediaElement;\n\n // Only if we are not detaching from the existing element\n if (videoElement) {\n videoElement.addEventListener(api.needkey, eventHandler);\n if (mediaKeys) {\n setMediaKeys();\n }\n }\n }\n\n function createKeySession(initData, protData, sessionType, cdmData) {\n\n if (!keySystem || !mediaKeys || !keySystemAccess) {\n throw new Error('Can not create sessions until you have selected a key system');\n }\n\n // Use the first video capability for the contentType.\n // TODO: Not sure if there is a way to concatenate all capability data into a RFC6386-compatible format\n\n // If player is trying to playback Audio only stream - don't error out.\n let capabilities = null;\n\n if (keySystemAccess.ksConfiguration.videoCapabilities !== null && keySystemAccess.ksConfiguration.videoCapabilities.length > 0)\n capabilities = keySystemAccess.ksConfiguration.videoCapabilities[0];\n\n if (capabilities === null && keySystemAccess.ksConfiguration.audioCapabilities !== null && keySystemAccess.ksConfiguration.audioCapabilities.length > 0)\n capabilities = keySystemAccess.ksConfiguration.audioCapabilities[0];\n\n if (capabilities === null)\n throw new Error('Can not create sessions for unknown content types.');\n\n let contentType = capabilities.contentType;\n let session = mediaKeys.createSession(contentType, new Uint8Array(initData), cdmData ? new Uint8Array(cdmData) : null);\n let sessionToken = createSessionToken(session, initData);\n\n // Add all event listeners\n session.addEventListener(api.error, sessionToken);\n session.addEventListener(api.message, sessionToken);\n session.addEventListener(api.ready, sessionToken);\n session.addEventListener(api.close, sessionToken);\n\n // Add to our session list\n sessions.push(sessionToken);\n log('DRM: Session created. SessionID = ' + sessionToken.getSessionID());\n eventBus.trigger(events.KEY_SESSION_CREATED, {data: sessionToken});\n }\n\n function updateKeySession(sessionToken, message) {\n\n let session = sessionToken.session;\n\n if (!protectionKeyController.isClearKey(keySystem)) {\n // Send our request to the key session\n session.update(new Uint8Array(message));\n } else {\n // For clearkey, message is a ClearKeyKeySet\n session.update(new Uint8Array(message.toJWK()));\n }\n }\n\n /**\n * Close the given session and release all associated keys. Following\n * this call, the sessionToken becomes invalid\n *\n * @param {Object} sessionToken - the session token\n */\n function closeKeySession(sessionToken) {\n\n let session = sessionToken.session;\n\n // Remove event listeners\n session.removeEventListener(api.error, sessionToken);\n session.removeEventListener(api.message, sessionToken);\n session.removeEventListener(api.ready, sessionToken);\n session.removeEventListener(api.close, sessionToken);\n\n // Remove from our session list\n for (let i = 0; i < sessions.length; i++) {\n if (sessions[i] === sessionToken) {\n sessions.splice(i,1);\n break;\n }\n }\n\n // Send our request to the key session\n session[api.release]();\n }\n\n function setServerCertificate(/*serverCertificate*/) { /* Not supported */ }\n function loadKeySession(/*sessionID*/) { /* Not supported */ }\n function removeKeySession(/*sessionToken*/) { /* Not supported */ }\n\n\n function createEventHandler() {\n return {\n handleEvent: function (event) {\n switch (event.type) {\n\n case api.needkey:\n if (event.initData) {\n let initData = ArrayBuffer.isView(event.initData) ? event.initData.buffer : event.initData;\n eventBus.trigger(events.NEED_KEY, {key: new NeedKey(initData, 'cenc')});\n }\n break;\n }\n }\n };\n }\n\n\n // IE11 does not let you set MediaKeys until it has entered a certain\n // readyState, so we need this logic to ensure we don't set the keys\n // too early\n function setMediaKeys() {\n let boundDoSetKeys = null;\n const doSetKeys = function () {\n videoElement.removeEventListener('loadedmetadata', boundDoSetKeys);\n videoElement[api.setMediaKeys](mediaKeys);\n eventBus.trigger(events.VIDEO_ELEMENT_SELECTED);\n };\n if (videoElement.readyState >= 1) {\n doSetKeys();\n } else {\n boundDoSetKeys = doSetKeys.bind(this);\n videoElement.addEventListener('loadedmetadata', boundDoSetKeys);\n }\n\n }\n\n // Function to create our session token objects which manage the EME\n // MediaKeySession and session-specific event handler\n function createSessionToken(keySession, initData) {\n return {\n // Implements SessionToken\n session: keySession,\n initData: initData,\n\n getSessionID: function () {\n return this.session.sessionId;\n },\n\n getExpirationTime: function () {\n return NaN;\n },\n\n getSessionType: function () {\n return 'temporary';\n },\n // This is our main event handler for all desired MediaKeySession events\n // These events are translated into our API-independent versions of the\n // same events\n handleEvent: function (event) {\n switch (event.type) {\n\n case api.error:\n let errorStr = 'KeyError'; // TODO: Make better string from event\n eventBus.trigger(events.KEY_ERROR, { data: new KeyError(this, errorStr) });\n break;\n case api.message:\n let message = ArrayBuffer.isView(event.message) ? event.message.buffer : event.message;\n eventBus.trigger(events.INTERNAL_KEY_MESSAGE, { data: new KeyMessage(this, message, event.destinationURL) });\n break;\n case api.ready:\n log('DRM: Key added.');\n eventBus.trigger(events.KEY_ADDED);\n break;\n\n case api.close:\n log('DRM: Session closed. SessionID = ' + this.getSessionID());\n eventBus.trigger(events.KEY_SESSION_CLOSED, { data: this.getSessionID() });\n break;\n }\n }\n };\n }\n\n instance = {\n getAllInitData: getAllInitData,\n requestKeySystemAccess: requestKeySystemAccess,\n getKeySystem: getKeySystem,\n selectKeySystem: selectKeySystem,\n setMediaElement: setMediaElement,\n createKeySession: createKeySession,\n updateKeySession: updateKeySession,\n closeKeySession: closeKeySession,\n setServerCertificate: setServerCertificate,\n loadKeySession: loadKeySession,\n removeKeySession: removeKeySession,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nProtectionModel_3Feb2014.__dashjs_factory_name = 'ProtectionModel_3Feb2014';\nexport default dashjs.FactoryMaker.getClassFactory(ProtectionModel_3Feb2014); /* jshint ignore:line */\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * CableLabs ClearKey license server implementation\n *\n * For testing purposes and evaluating potential uses for ClearKey, we have developed\n * a dirt-simple API for requesting ClearKey licenses from a remote server.\n *\n * @implements LicenseServer\n * @class\n */\nimport KeyPair from '../vo/KeyPair';\nimport ClearKeyKeySet from '../vo/ClearKeyKeySet';\n\nfunction ClearKey() {\n\n let instance;\n\n function getServerURLFromMessage(url, message/*, messageType*/) {\n // Build ClearKey server query string\n const jsonMsg = JSON.parse(String.fromCharCode.apply(null, new Uint8Array(message)));\n url += '/?';\n for (let i = 0; i < jsonMsg.kids.length; i++) {\n url += jsonMsg.kids[i] + '&';\n }\n url = url.substring(0, url.length - 1);\n return url;\n }\n\n function getHTTPMethod(/*messageType*/) {\n return 'GET';\n }\n\n function getResponseType(/*keySystemStr*/) {\n return 'json';\n }\n\n function getLicenseMessage(serverResponse/*, keySystemStr, messageType*/) {\n if (!serverResponse.hasOwnProperty('keys')) {\n return null;\n }\n let keyPairs = [];\n for (let i = 0; i < serverResponse.keys.length; i++) {\n let keypair = serverResponse.keys[i];\n let keyid = keypair.kid.replace(/=/g, '');\n let key = keypair.k.replace(/=/g, '');\n\n keyPairs.push(new KeyPair(keyid, key));\n }\n return new ClearKeyKeySet(keyPairs);\n }\n\n function getErrorResponse(serverResponse/*, keySystemStr, messageType*/) {\n return String.fromCharCode.apply(null, new Uint8Array(serverResponse));\n }\n\n instance = {\n getServerURLFromMessage: getServerURLFromMessage,\n getHTTPMethod: getHTTPMethod,\n getResponseType: getResponseType,\n getLicenseMessage: getLicenseMessage,\n getErrorResponse: getErrorResponse\n };\n\n return instance;\n}\n\nClearKey.__dashjs_factory_name = 'ClearKey';\nexport default dashjs.FactoryMaker.getSingletonFactory(ClearKey); /* jshint ignore:line */", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * CastLabs DRMToday License Server implementation\n *\n * @implements LicenseServer\n * @class\n */\n\nfunction DRMToday(config) {\n\n let BASE64 = config.BASE64;\n\n const keySystems = {\n 'com.widevine.alpha': {\n responseType: 'json',\n getLicenseMessage: function (response) {\n return BASE64.decodeArray(response.license);\n },\n getErrorResponse: function (response) {\n return response;\n }\n },\n 'com.microsoft.playready': {\n responseType: 'arraybuffer',\n getLicenseMessage: function (response) {\n return response;\n },\n getErrorResponse: function (response) {\n return String.fromCharCode.apply(null, new Uint8Array(response));\n }\n }\n };\n\n let instance;\n\n function checkConfig() {\n if (!BASE64 || !BASE64.hasOwnProperty('decodeArray')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n function getServerURLFromMessage(url /*, message, messageType*/) {\n return url;\n }\n\n function getHTTPMethod(/*messageType*/) {\n return 'POST';\n }\n\n function getResponseType(keySystemStr/*, messageType*/) {\n return keySystems[keySystemStr].responseType;\n }\n\n function getLicenseMessage(serverResponse, keySystemStr/*, messageType*/) {\n checkConfig();\n return keySystems[keySystemStr].getLicenseMessage(serverResponse);\n }\n\n function getErrorResponse(serverResponse, keySystemStr/*, messageType*/) {\n return keySystems[keySystemStr].getErrorResponse(serverResponse);\n }\n\n instance = {\n getServerURLFromMessage: getServerURLFromMessage,\n getHTTPMethod: getHTTPMethod,\n getResponseType: getResponseType,\n getLicenseMessage: getLicenseMessage,\n getErrorResponse: getErrorResponse\n };\n\n return instance;\n}\n\nDRMToday.__dashjs_factory_name = 'DRMToday';\nexport default dashjs.FactoryMaker.getSingletonFactory(DRMToday); /* jshint ignore:line */", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * CastLabs DRMToday License Server implementation\n *\n * @implements LicenseServer\n * @class\n */\n\nimport ProtectionConstants from '../../constants/ProtectionConstants';\n\nfunction DRMToday(config) {\n\n config = config || {};\n const BASE64 = config.BASE64;\n\n const keySystems = {};\n keySystems[ProtectionConstants.WIDEVINE_KEYSTEM_STRING] = {\n responseType: 'json',\n getLicenseMessage: function (response) {\n return BASE64.decodeArray(response.license);\n },\n getErrorResponse: function (response) {\n return response;\n }\n };\n keySystems[ProtectionConstants.PLAYREADY_KEYSTEM_STRING] = {\n responseType: 'arraybuffer',\n getLicenseMessage: function (response) {\n return response;\n },\n getErrorResponse: function (response) {\n return String.fromCharCode.apply(null, new Uint8Array(response));\n }\n };\n\n let instance;\n\n function checkConfig() {\n if (!BASE64 || !BASE64.hasOwnProperty('decodeArray')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n function getServerURLFromMessage(url /*, message, messageType*/) {\n return url;\n }\n\n function getHTTPMethod(/*messageType*/) {\n return 'POST';\n }\n\n function getResponseType(keySystemStr/*, messageType*/) {\n return keySystems[keySystemStr].responseType;\n }\n\n function getLicenseMessage(serverResponse, keySystemStr/*, messageType*/) {\n checkConfig();\n return keySystems[keySystemStr].getLicenseMessage(serverResponse);\n }\n\n function getErrorResponse(serverResponse, keySystemStr/*, messageType*/) {\n return keySystems[keySystemStr].getErrorResponse(serverResponse);\n }\n\n instance = {\n getServerURLFromMessage: getServerURLFromMessage,\n getHTTPMethod: getHTTPMethod,\n getResponseType: getResponseType,\n getLicenseMessage: getLicenseMessage,\n getErrorResponse: getErrorResponse\n };\n\n return instance;\n}\n\nDRMToday.__dashjs_factory_name = 'DRMToday';\nexport default dashjs.FactoryMaker.getSingletonFactory(DRMToday); /* jshint ignore:line */", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global escape: true */\n\n/**\n * Microsoft PlayReady Test License Server\n *\n * For testing content that uses the PlayReady test server at\n *\n * @implements LicenseServer\n * @class\n */\n\nfunction PlayReady() {\n\n let instance;\n\n const soap = 'http://schemas.xmlsoap.org/soap/envelope/';\n\n function uintToString(arrayBuffer) {\n const encodedString = String.fromCharCode.apply(null, new Uint8Array(arrayBuffer));\n const decodedString = decodeURIComponent(escape(encodedString));\n return decodedString;\n }\n\n function parseServerResponse(serverResponse) {\n if (window.DOMParser) {\n const stringResponse = uintToString(serverResponse);\n const parser = new window.DOMParser();\n const xmlDoc = parser.parseFromString(stringResponse, 'text/xml');\n const envelope = xmlDoc ? xmlDoc.getElementsByTagNameNS(soap, 'Envelope')[0] : null;\n const body = envelope ? envelope.getElementsByTagNameNS(soap, 'Body')[0] : null;\n const fault = body ? body.getElementsByTagNameNS(soap, 'Fault')[0] : null;\n\n if (fault) {\n return null;\n }\n }\n return serverResponse;\n }\n\n function parseErrorResponse(serverResponse) {\n let faultstring = '';\n let statusCode = '';\n let message = '';\n let idStart = -1;\n let idEnd = -1;\n\n if (window.DOMParser) {\n const stringResponse = uintToString(serverResponse);\n const parser = new window.DOMParser();\n const xmlDoc = parser.parseFromString(stringResponse, 'text/xml');\n const envelope = xmlDoc ? xmlDoc.getElementsByTagNameNS(soap, 'Envelope')[0] : null;\n const body = envelope ? envelope.getElementsByTagNameNS(soap, 'Body')[0] : null;\n const fault = body ? body.getElementsByTagNameNS(soap, 'Fault')[0] : null;\n const detail = fault ? fault.getElementsByTagName('detail')[0] : null;\n const exception = detail ? detail.getElementsByTagName('Exception')[0] : null;\n let node = null;\n\n if (fault === null) {\n return stringResponse;\n }\n\n node = fault.getElementsByTagName('faultstring')[0].firstChild;\n faultstring = node ? node.nodeValue : null;\n\n if (exception !== null) {\n node = exception.getElementsByTagName('StatusCode')[0];\n statusCode = node ? node.firstChild.nodeValue : null;\n node = exception.getElementsByTagName('Message')[0];\n message = node ? node.firstChild.nodeValue : null;\n idStart = message ? message.lastIndexOf('[') + 1 : -1;\n idEnd = message ? message.indexOf(']') : -1;\n message = message ? message.substring(idStart, idEnd) : '';\n }\n }\n\n let errorString = `code: ${statusCode}, name: ${faultstring}`;\n if (message) {\n errorString += `, message: ${message}`;\n }\n\n return errorString;\n }\n\n function getServerURLFromMessage(url /*, message, messageType*/) {\n return url;\n }\n\n function getHTTPMethod(/*messageType*/) {\n return 'POST';\n }\n\n function getResponseType(/*keySystemStr, messageType*/) {\n return 'arraybuffer';\n }\n\n function getLicenseMessage(serverResponse/*, keySystemStr, messageType*/) {\n return parseServerResponse.call(this, serverResponse);\n }\n\n function getErrorResponse(serverResponse/*, keySystemStr, messageType*/) {\n return parseErrorResponse.call(this, serverResponse);\n }\n\n instance = {\n getServerURLFromMessage: getServerURLFromMessage,\n getHTTPMethod: getHTTPMethod,\n getResponseType: getResponseType,\n getLicenseMessage: getLicenseMessage,\n getErrorResponse: getErrorResponse\n };\n\n return instance;\n}\n\nPlayReady.__dashjs_factory_name = 'PlayReady';\nexport default dashjs.FactoryMaker.getSingletonFactory(PlayReady); /* jshint ignore:line */", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nfunction Widevine() {\n\n let instance;\n\n function getServerURLFromMessage(url /*, message, messageType*/) {\n return url;\n }\n\n function getHTTPMethod(/*messageType*/) {\n return 'POST';\n }\n\n function getResponseType(/*keySystemStr, messageType*/) {\n return 'arraybuffer';\n }\n\n function getLicenseMessage(serverResponse/*, keySystemStr, messageType*/) {\n return serverResponse;\n }\n\n function getErrorResponse(serverResponse/*, keySystemStr, messageType*/) {\n return String.fromCharCode.apply(null, new Uint8Array(serverResponse));\n }\n\n instance = {\n getServerURLFromMessage: getServerURLFromMessage,\n getHTTPMethod: getHTTPMethod,\n getResponseType: getResponseType,\n getLicenseMessage: getLicenseMessage,\n getErrorResponse: getErrorResponse\n };\n\n return instance;\n}\n\nWidevine.__dashjs_factory_name = 'Widevine';\nexport default dashjs.FactoryMaker.getSingletonFactory(Widevine); /* jshint ignore:line */", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * @classdesc A collection of ClearKey encryption keys with an (optional) associated\n * type\n * @ignore\n */\nclass ClearKeyKeySet {\n /**\n * @param {Array.} keyPairs\n * @param {string} type the type of keys in this set. One of either 'persistent'\n * or 'temporary'. Can also be null or undefined.\n * @class\n * @ignore\n */\n constructor(keyPairs, type) {\n if (type && type !== 'persistent' && type !== 'temporary')\n throw new Error('Invalid ClearKey key set type! Must be one of \\'persistent\\' or \\'temporary\\'');\n this.keyPairs = keyPairs;\n this.type = type;\n }\n\n /**\n * Convert this key set to its JSON Web Key (JWK) representation\n *\n * @return {ArrayBuffer} JWK object UTF-8 encoded as ArrayBuffer\n */\n toJWK() {\n let i;\n let numKeys = this.keyPairs.length;\n let jwk = {keys: []};\n\n for (i = 0; i < numKeys; i++) {\n let key = {\n kty: 'oct',\n alg: 'A128KW',\n kid: this.keyPairs[i].keyID,\n k: this.keyPairs[i].key\n };\n jwk.keys.push(key);\n }\n if (this.type) {\n jwk.type = this.type;\n }\n let jwkString = JSON.stringify(jwk);\n const len = jwkString.length;\n\n // Convert JSON string to ArrayBuffer\n let buf = new ArrayBuffer(len);\n let bView = new Uint8Array(buf);\n for (i = 0; i < len; i++)\n bView[i] = jwkString.charCodeAt(i);\n return buf;\n }\n}\n\nexport default ClearKeyKeySet;\n", @@ -408,42 +412,42 @@ "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @classdesc A media capability\n * @ignore\n */\nclass MediaCapability {\n /**\n * @param {string} contentType MIME type and codecs (RFC6386)\n * @param {string} robustness\n * @class\n * @ignore\n */\n constructor(contentType, robustness) {\n this.contentType = contentType;\n this.robustness = robustness;\n }\n}\n\nexport default MediaCapability;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @classdesc NeedKey\n * @ignore\n */\nclass NeedKey {\n /**\n * @param {ArrayBuffer} initData the initialization data\n * @param {string} initDataType initialization data type\n * @class\n */\n constructor(initData, initDataType) {\n this.initData = initData;\n this.initDataType = initDataType;\n }\n}\n\nexport default NeedKey;\n", "\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\n\nfunction DroppedFramesHistory() {\n\n let values = [];\n let lastDroppedFrames = 0;\n let lastTotalFrames = 0;\n\n function push(index, playbackQuality) {\n let intervalDroppedFrames = playbackQuality.droppedVideoFrames - lastDroppedFrames;\n lastDroppedFrames = playbackQuality.droppedVideoFrames;\n\n let intervalTotalFrames = playbackQuality.totalVideoFrames - lastTotalFrames;\n lastTotalFrames = playbackQuality.totalVideoFrames;\n\n if (!isNaN(index)) {\n if (!values[index]) {\n values[index] = {droppedVideoFrames: intervalDroppedFrames, totalVideoFrames: intervalTotalFrames};\n } else {\n values[index].droppedVideoFrames += intervalDroppedFrames;\n values[index].totalVideoFrames += intervalTotalFrames;\n }\n }\n }\n\n function getDroppedFrameHistory() {\n return values;\n }\n\n function reset(playbackQuality) {\n values = [];\n lastDroppedFrames = playbackQuality.droppedVideoFrames;\n lastTotalFrames = playbackQuality.totalVideoFrames;\n }\n\n return {\n push: push,\n getFrameHistory: getDroppedFrameHistory,\n reset: reset\n };\n}\n\nDroppedFramesHistory.__dashjs_factory_name = 'DroppedFramesHistory';\nlet factory = FactoryMaker.getClassFactory(DroppedFramesHistory);\nexport default factory;\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\n\nfunction RulesContext(config) {\n\n let instance;\n const abrController = config.abrController;\n const streamProcessor = config.streamProcessor;\n const representationInfo = config.streamProcessor.getCurrentRepresentationInfo();\n const switchHistory = config.switchHistory;\n const droppedFramesHistory = config.droppedFramesHistory;\n const currentRequest = config.currentRequest;\n const bufferOccupancyABR = config.useBufferOccupancyABR;\n\n function getMediaType() {\n return representationInfo.mediaInfo.type;\n }\n\n function getStreamInfo() {\n return representationInfo.mediaInfo.streamInfo;\n }\n\n function getMediaInfo() {\n return representationInfo.mediaInfo;\n }\n\n function getRepresentationInfo() {\n return representationInfo;\n }\n\n function getStreamProcessor() {\n return streamProcessor;\n }\n\n function getAbrController() {\n return abrController;\n }\n\n function getSwitchHistory() {\n return switchHistory;\n }\n\n function getDroppedFramesHistory() {\n return droppedFramesHistory;\n }\n\n function getCurrentRequest() {\n return currentRequest;\n }\n\n function useBufferOccupancyABR() {\n return bufferOccupancyABR;\n }\n\n instance = {\n getMediaType: getMediaType,\n getMediaInfo: getMediaInfo,\n getDroppedFramesHistory: getDroppedFramesHistory,\n getCurrentRequest: getCurrentRequest,\n getSwitchHistory: getSwitchHistory,\n getStreamInfo: getStreamInfo,\n getStreamProcessor: getStreamProcessor,\n getAbrController: getAbrController,\n getRepresentationInfo: getRepresentationInfo,\n useBufferOccupancyABR: useBufferOccupancyABR\n };\n\n return instance;\n}\n\nRulesContext.__dashjs_factory_name = 'RulesContext';\nexport default FactoryMaker.getClassFactory(RulesContext);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\n\nfunction RulesContext(config) {\n\n config = config || {};\n let instance;\n const abrController = config.abrController;\n const streamProcessor = config.streamProcessor;\n const representationInfo = config.streamProcessor.getCurrentRepresentationInfo();\n const switchHistory = config.switchHistory;\n const droppedFramesHistory = config.droppedFramesHistory;\n const currentRequest = config.currentRequest;\n const bufferOccupancyABR = config.useBufferOccupancyABR;\n\n function getMediaType() {\n return representationInfo.mediaInfo.type;\n }\n\n function getStreamInfo() {\n return representationInfo.mediaInfo.streamInfo;\n }\n\n function getMediaInfo() {\n return representationInfo.mediaInfo;\n }\n\n function getRepresentationInfo() {\n return representationInfo;\n }\n\n function getStreamProcessor() {\n return streamProcessor;\n }\n\n function getAbrController() {\n return abrController;\n }\n\n function getSwitchHistory() {\n return switchHistory;\n }\n\n function getDroppedFramesHistory() {\n return droppedFramesHistory;\n }\n\n function getCurrentRequest() {\n return currentRequest;\n }\n\n function useBufferOccupancyABR() {\n return bufferOccupancyABR;\n }\n\n instance = {\n getMediaType: getMediaType,\n getMediaInfo: getMediaInfo,\n getDroppedFramesHistory: getDroppedFramesHistory,\n getCurrentRequest: getCurrentRequest,\n getSwitchHistory: getSwitchHistory,\n getStreamInfo: getStreamInfo,\n getStreamProcessor: getStreamProcessor,\n getAbrController: getAbrController,\n getRepresentationInfo: getRepresentationInfo,\n useBufferOccupancyABR: useBufferOccupancyABR\n };\n\n return instance;\n}\n\nRulesContext.__dashjs_factory_name = 'RulesContext';\nexport default FactoryMaker.getClassFactory(RulesContext);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\n\nconst NO_CHANGE = -1;\nconst PRIORITY = {\n DEFAULT: 0.5,\n STRONG: 1,\n WEAK: 0\n};\n\nfunction SwitchRequest(q, r, p) {\n //TODO refactor all the calls to this to use config to be like everything else.\n let instance;\n let quality;\n let priority;\n let reason;\n\n // check priority value\n function getPriority(p) {\n let ret = PRIORITY.DEFAULT;\n\n // check that p is one of declared priority value\n if (p === PRIORITY.DEFAULT || p === PRIORITY.STRONG || p === PRIORITY.WEAK) {\n ret = p;\n }\n return ret;\n }\n\n // init attributes\n quality = (q === undefined) ? NO_CHANGE : q;\n priority = getPriority(p);\n reason = (r === undefined) ? null : r;\n\n instance = {\n quality: quality,\n reason: reason,\n priority: priority\n };\n\n return instance;\n}\n\nSwitchRequest.__dashjs_factory_name = 'SwitchRequest';\nlet factory = FactoryMaker.getClassFactory(SwitchRequest);\nfactory.NO_CHANGE = NO_CHANGE;\nfactory.PRIORITY = PRIORITY;\nFactoryMaker.updateClassFactory(SwitchRequest.__dashjs_factory_name, factory);\n\nexport default factory;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker.js';\nimport SwitchRequest from './SwitchRequest.js';\n\nconst SWITCH_REQUEST_HISTORY_DEPTH = 8; // must be > SwitchHistoryRule SAMPLE_SIZE to enable rule\n\nfunction SwitchRequestHistory() {\n let switchRequests = []; // running total\n let srHistory = []; // history of each switch\n\n function push(switchRequest) {\n if (switchRequest.newValue === SwitchRequest.NO_CHANGE) {\n switchRequest.newValue = switchRequest.oldValue;\n }\n if (!switchRequests[switchRequest.oldValue]) {\n switchRequests[switchRequest.oldValue] = {noDrops: 0, drops: 0, dropSize: 0};\n }\n\n // Set switch details\n let indexDiff = switchRequest.newValue - switchRequest.oldValue;\n let drop = (indexDiff < 0) ? 1 : 0;\n let dropSize = drop ? -indexDiff : 0;\n let noDrop = drop ? 0 : 1;\n\n // Update running totals\n switchRequests[switchRequest.oldValue].drops += drop;\n switchRequests[switchRequest.oldValue].dropSize += dropSize;\n switchRequests[switchRequest.oldValue].noDrops += noDrop;\n\n // Save to history\n srHistory.push({idx: switchRequest.oldValue, noDrop: noDrop, drop: drop, dropSize: dropSize});\n\n // Shift earliest switch off srHistory and readjust to keep depth of running totals constant\n if ( srHistory.length > SWITCH_REQUEST_HISTORY_DEPTH ) {\n let srHistoryFirst = srHistory.shift();\n switchRequests[srHistoryFirst.idx].drops -= srHistoryFirst.drop;\n switchRequests[srHistoryFirst.idx].dropSize -= srHistoryFirst.dropSize;\n switchRequests[srHistoryFirst.idx].noDrops -= srHistoryFirst.noDrop;\n }\n }\n\n function getSwitchRequests() {\n return switchRequests;\n }\n\n function reset() {\n switchRequests = [];\n srHistory = [];\n }\n\n return {\n push: push,\n getSwitchRequests: getSwitchRequests,\n reset: reset\n };\n}\n\nSwitchRequestHistory.__dashjs_factory_name = 'SwitchRequestHistory';\nlet factory = FactoryMaker.getClassFactory(SwitchRequestHistory);\nexport default factory;\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2017, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Constants from '../constants/Constants';\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\n// throughput generally stored in kbit/s\n// latency generally stored in ms\n\nfunction ThroughputHistory(config) {\n\n // sliding window constants\n const MAX_MEASUREMENTS_TO_KEEP = 20;\n const AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_LIVE = 3;\n const AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_VOD = 4;\n const AVERAGE_LATENCY_SAMPLE_AMOUNT = 4;\n const THROUGHPUT_DECREASE_SCALE = 1.3;\n const THROUGHPUT_INCREASE_SCALE = 1.3;\n\n // EWMA constants\n const EWMA_THROUGHPUT_SLOW_HALF_LIFE_SECONDS = 8;\n const EWMA_THROUGHPUT_FAST_HALF_LIFE_SECONDS = 3;\n const EWMA_LATENCY_SLOW_HALF_LIFE_COUNT = 2;\n const EWMA_LATENCY_FAST_HALF_LIFE_COUNT = 1;\n\n const CACHE_LOAD_THRESHOLD_VIDEO = 50;\n const CACHE_LOAD_THRESHOLD_AUDIO = 5;\n\n const mediaPlayerModel = config.mediaPlayerModel;\n\n let throughputDict,\n latencyDict,\n ewmaThroughputDict,\n ewmaLatencyDict,\n ewmaHalfLife;\n\n function setup() {\n ewmaHalfLife = {\n throughputHalfLife: { fast: EWMA_THROUGHPUT_FAST_HALF_LIFE_SECONDS, slow: EWMA_THROUGHPUT_SLOW_HALF_LIFE_SECONDS },\n latencyHalfLife: { fast: EWMA_LATENCY_FAST_HALF_LIFE_COUNT, slow: EWMA_LATENCY_SLOW_HALF_LIFE_COUNT }\n };\n\n reset();\n }\n\n function isCachedResponse(mediaType, latencyMs, downloadTimeMs) {\n if (mediaType === Constants.VIDEO) {\n return downloadTimeMs < CACHE_LOAD_THRESHOLD_VIDEO;\n } else if (mediaType === Constants.AUDIO) {\n return downloadTimeMs < CACHE_LOAD_THRESHOLD_AUDIO;\n }\n }\n\n function push(mediaType, httpRequest, useDeadTimeLatency) {\n if (!httpRequest.trace || !httpRequest.trace.length) {\n return;\n }\n\n const latencyTimeInMilliseconds = (httpRequest.tresponse.getTime() - httpRequest.trequest.getTime()) || 1;\n const downloadTimeInMilliseconds = (httpRequest._tfinish.getTime() - httpRequest.tresponse.getTime()) || 1; //Make sure never 0 we divide by this value. Avoid infinity!\n const downloadBytes = httpRequest.trace.reduce((a, b) => a + b.b[0], 0);\n const throughputMeasureTime = useDeadTimeLatency ? downloadTimeInMilliseconds : latencyTimeInMilliseconds + downloadTimeInMilliseconds;\n let throughput = Math.round((8 * downloadBytes) / throughputMeasureTime); // bits/ms = kbits/s\n\n checkSettingsForMediaType(mediaType);\n\n if (isCachedResponse(mediaType, latencyTimeInMilliseconds, downloadTimeInMilliseconds)) {\n if (throughputDict[mediaType].length > 0 && !throughputDict[mediaType].hasCachedEntries) {\n // already have some entries which are not cached entries\n // prevent cached fragment loads from skewing the average values\n return;\n } else { // have no entries || have cached entries\n // no uncached entries yet, rely on cached entries because ABR rules need something to go by\n throughputDict[mediaType].hasCachedEntries = true;\n }\n } else if (throughputDict[mediaType] && throughputDict[mediaType].hasCachedEntries) {\n // if we are here then we have some entries already, but they are cached, and now we have a new uncached entry\n clearSettingsForMediaType(mediaType);\n }\n\n throughputDict[mediaType].push(throughput);\n if (throughputDict[mediaType].length > MAX_MEASUREMENTS_TO_KEEP) {\n throughputDict[mediaType].shift();\n }\n\n latencyDict[mediaType].push(latencyTimeInMilliseconds);\n if (latencyDict[mediaType].length > MAX_MEASUREMENTS_TO_KEEP) {\n latencyDict[mediaType].shift();\n }\n\n updateEwmaEstimate(ewmaThroughputDict[mediaType], throughput, 0.001 * downloadTimeInMilliseconds, ewmaHalfLife.throughputHalfLife);\n updateEwmaEstimate(ewmaLatencyDict[mediaType], latencyTimeInMilliseconds, 1, ewmaHalfLife.latencyHalfLife);\n }\n\n function updateEwmaEstimate(ewmaObj, value, weight, halfLife) {\n // Note about startup:\n // Estimates start at 0, so early values are underestimated.\n // This effect is countered in getAverageEwma() by dividing the estimates by:\n // 1 - Math.pow(0.5, ewmaObj.totalWeight / halfLife)\n\n const fastAlpha = Math.pow(0.5, weight / halfLife.fast);\n ewmaObj.fastEstimate = (1 - fastAlpha) * value + fastAlpha * ewmaObj.fastEstimate;\n\n const slowAlpha = Math.pow(0.5, weight / halfLife.slow);\n ewmaObj.slowEstimate = (1 - slowAlpha) * value + slowAlpha * ewmaObj.slowEstimate;\n\n ewmaObj.totalWeight += weight;\n }\n\n function getSampleSize(isThroughput, mediaType, isLive) {\n let arr;\n let sampleSize;\n\n if (isThroughput) {\n arr = throughputDict[mediaType];\n sampleSize = isLive ? AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_LIVE : AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_VOD;\n } else {\n arr = latencyDict[mediaType];\n sampleSize = AVERAGE_LATENCY_SAMPLE_AMOUNT;\n }\n\n if (!arr) {\n sampleSize = 0;\n } else if (sampleSize >= arr.length) {\n sampleSize = arr.length;\n } else if (isThroughput) {\n // if throughput samples vary a lot, average over a wider sample\n for (let i = 1; i < sampleSize; ++i) {\n let ratio = arr[-i] / arr[-i - 1];\n if (ratio >= THROUGHPUT_INCREASE_SCALE || ratio <= 1 / THROUGHPUT_DECREASE_SCALE) {\n sampleSize += 1;\n if (sampleSize === arr.length) { // cannot increase sampleSize beyond arr.length\n break;\n }\n }\n }\n }\n\n return sampleSize;\n }\n\n function getAverage(isThroughput, mediaType, isDynamic) {\n // only two moving average methods defined at the moment\n return mediaPlayerModel.getMovingAverageMethod() !== Constants.MOVING_AVERAGE_SLIDING_WINDOW ?\n getAverageEwma(isThroughput, mediaType) : getAverageSlidingWindow(isThroughput, mediaType, isDynamic);\n }\n\n function getAverageSlidingWindow(isThroughput, mediaType, isDynamic) {\n let sampleSize = getSampleSize(isThroughput, mediaType, isDynamic);\n let dict = isThroughput ? throughputDict : latencyDict;\n let arr = dict[mediaType];\n\n if (sampleSize === 0 || !arr || arr.length === 0) {\n return NaN;\n }\n\n arr = arr.slice(-sampleSize); // still works if sampleSize too large\n // arr.length >= 1\n return arr.reduce((total, elem) => total + elem) / arr.length;\n }\n\n function getAverageEwma(isThroughput, mediaType) {\n let halfLife = isThroughput ? ewmaHalfLife.throughputHalfLife : ewmaHalfLife.latencyHalfLife;\n let ewmaObj = isThroughput ? ewmaThroughputDict[mediaType] : ewmaLatencyDict[mediaType];\n\n if (!ewmaObj || ewmaObj.totalWeight <= 0) {\n return NaN;\n }\n\n // to correct for startup, divide by zero factor = 1 - Math.pow(0.5, ewmaObj.totalWeight / halfLife)\n const fastEstimate = ewmaObj.fastEstimate / (1 - Math.pow(0.5, ewmaObj.totalWeight / halfLife.fast));\n const slowEstimate = ewmaObj.slowEstimate / (1 - Math.pow(0.5, ewmaObj.totalWeight / halfLife.slow));\n return isThroughput ? Math.min(fastEstimate, slowEstimate) : Math.max(fastEstimate, slowEstimate);\n }\n\n function getAverageThroughput(mediaType, isDynamic) {\n return getAverage(true, mediaType, isDynamic);\n }\n\n function getSafeAverageThroughput(mediaType, isDynamic) {\n let average = getAverageThroughput(mediaType, isDynamic);\n if (!isNaN(average)) {\n average *= mediaPlayerModel.getBandwidthSafetyFactor();\n }\n return average;\n }\n\n function getAverageLatency(mediaType) {\n return getAverage(false, mediaType);\n }\n\n function checkSettingsForMediaType(mediaType) {\n throughputDict[mediaType] = throughputDict[mediaType] || [];\n latencyDict[mediaType] = latencyDict[mediaType] || [];\n ewmaThroughputDict[mediaType] = ewmaThroughputDict[mediaType] || {fastEstimate: 0, slowEstimate: 0, totalWeight: 0};\n ewmaLatencyDict[mediaType] = ewmaLatencyDict[mediaType] || {fastEstimate: 0, slowEstimate: 0, totalWeight: 0};\n }\n\n function clearSettingsForMediaType(mediaType) {\n delete throughputDict[mediaType];\n delete latencyDict[mediaType];\n delete ewmaThroughputDict[mediaType];\n delete ewmaLatencyDict[mediaType];\n checkSettingsForMediaType(mediaType);\n }\n\n function reset() {\n throughputDict = {};\n latencyDict = {};\n ewmaThroughputDict = {};\n ewmaLatencyDict = {};\n }\n\n const instance = {\n push: push,\n getAverageThroughput: getAverageThroughput,\n getSafeAverageThroughput: getSafeAverageThroughput,\n getAverageLatency: getAverageLatency,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nThroughputHistory.__dashjs_factory_name = 'ThroughputHistory';\nexport default FactoryMaker.getClassFactory(ThroughputHistory);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport ThroughputRule from './ThroughputRule';\nimport InsufficientBufferRule from './InsufficientBufferRule';\nimport AbandonRequestsRule from './AbandonRequestsRule';\nimport DroppedFramesRule from './DroppedFramesRule.js';\nimport SwitchHistoryRule from './SwitchHistoryRule.js';\nimport BolaRule from './BolaRule';\nimport FactoryMaker from '../../../core/FactoryMaker';\nimport SwitchRequest from '../SwitchRequest.js';\n\nconst QUALITY_SWITCH_RULES = 'qualitySwitchRules';\nconst ABANDON_FRAGMENT_RULES = 'abandonFragmentRules';\n\nfunction ABRRulesCollection(config) {\n\n const context = this.context;\n\n const mediaPlayerModel = config.mediaPlayerModel;\n const metricsModel = config.metricsModel;\n const dashMetrics = config.dashMetrics;\n\n let instance,\n qualitySwitchRules,\n abandonFragmentRules;\n\n function initialize() {\n qualitySwitchRules = [];\n abandonFragmentRules = [];\n\n if (mediaPlayerModel.getUseDefaultABRRules()) {\n // Only one of BolaRule and ThroughputRule will give a switchRequest.quality !== SwitchRequest.NO_CHANGE.\n // This is controlled by useBufferOccupancyABR mechanism in AbrController.\n qualitySwitchRules.push(\n BolaRule(context).create({\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n mediaPlayerModel: mediaPlayerModel\n })\n );\n qualitySwitchRules.push(\n ThroughputRule(context).create({\n metricsModel: metricsModel,\n dashMetrics: dashMetrics\n })\n );\n qualitySwitchRules.push(\n InsufficientBufferRule(context).create({\n metricsModel: metricsModel,\n dashMetrics: dashMetrics\n })\n );\n qualitySwitchRules.push(\n SwitchHistoryRule(context).create()\n );\n qualitySwitchRules.push(\n DroppedFramesRule(context).create()\n );\n abandonFragmentRules.push(\n AbandonRequestsRule(context).create({\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n mediaPlayerModel: mediaPlayerModel\n })\n );\n }\n\n // add custom ABR rules if any\n const customRules = mediaPlayerModel.getABRCustomRules();\n customRules.forEach(function (rule) {\n if (rule.type === QUALITY_SWITCH_RULES) {\n qualitySwitchRules.push(rule.rule(context).create());\n }\n\n if (rule.type === ABANDON_FRAGMENT_RULES) {\n abandonFragmentRules.push(rule.rule(context).create());\n }\n });\n }\n\n function getActiveRules(srArray) {\n return srArray.filter(sr => sr.quality > SwitchRequest.NO_CHANGE);\n }\n\n function getMinSwitchRequest(srArray) {\n const values = {};\n let i,\n len,\n req,\n newQuality,\n quality;\n\n if (srArray.length === 0) {\n return;\n }\n\n values[SwitchRequest.PRIORITY.STRONG] = SwitchRequest.NO_CHANGE;\n values[SwitchRequest.PRIORITY.WEAK] = SwitchRequest.NO_CHANGE;\n values[SwitchRequest.PRIORITY.DEFAULT] = SwitchRequest.NO_CHANGE;\n\n for (i = 0, len = srArray.length; i < len; i += 1) {\n req = srArray[i];\n if (req.quality !== SwitchRequest.NO_CHANGE) {\n values[req.priority] = values[req.priority] > SwitchRequest.NO_CHANGE ? Math.min(values[req.priority], req.quality) : req.quality;\n }\n }\n\n if (values[SwitchRequest.PRIORITY.WEAK] !== SwitchRequest.NO_CHANGE) {\n newQuality = values[SwitchRequest.PRIORITY.WEAK];\n }\n\n if (values[SwitchRequest.PRIORITY.DEFAULT] !== SwitchRequest.NO_CHANGE) {\n newQuality = values[SwitchRequest.PRIORITY.DEFAULT];\n }\n\n if (values[SwitchRequest.PRIORITY.STRONG] !== SwitchRequest.NO_CHANGE) {\n newQuality = values[SwitchRequest.PRIORITY.STRONG];\n }\n\n if (newQuality !== SwitchRequest.NO_CHANGE) {\n quality = newQuality;\n }\n\n return SwitchRequest(context).create(quality);\n }\n\n function getMaxQuality(rulesContext) {\n const switchRequestArray = qualitySwitchRules.map(rule => rule.getMaxIndex(rulesContext));\n const activeRules = getActiveRules(switchRequestArray);\n const maxQuality = getMinSwitchRequest(activeRules);\n\n return maxQuality || SwitchRequest(context).create();\n }\n\n function shouldAbandonFragment(rulesContext) {\n const abandonRequestArray = abandonFragmentRules.map(rule => rule.shouldAbandon(rulesContext));\n const activeRules = getActiveRules(abandonRequestArray);\n const shouldAbandon = getMinSwitchRequest(activeRules);\n\n return shouldAbandon || SwitchRequest(context).create();\n }\n\n function reset() {\n [qualitySwitchRules, abandonFragmentRules].forEach(rules => {\n if (rules && rules.length) {\n rules.forEach(rule => rule.reset && rule.reset());\n }\n });\n qualitySwitchRules = [];\n abandonFragmentRules = [];\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n getMaxQuality: getMaxQuality,\n shouldAbandonFragment: shouldAbandonFragment\n };\n\n return instance;\n}\n\nABRRulesCollection.__dashjs_factory_name = 'ABRRulesCollection';\nconst factory = FactoryMaker.getClassFactory(ABRRulesCollection);\nfactory.QUALITY_SWITCH_RULES = QUALITY_SWITCH_RULES;\nfactory.ABANDON_FRAGMENT_RULES = ABANDON_FRAGMENT_RULES;\nFactoryMaker.updateSingletonFactory(ABRRulesCollection.__dashjs_factory_name, factory);\n\nexport default factory;\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport SwitchRequest from '../SwitchRequest';\nimport FactoryMaker from '../../../core/FactoryMaker';\nimport Debug from '../../../core/Debug';\n\nfunction AbandonRequestsRule(config) {\n\n const ABANDON_MULTIPLIER = 1.8;\n const GRACE_TIME_THRESHOLD = 500;\n const MIN_LENGTH_TO_AVERAGE = 5;\n\n const context = this.context;\n const log = Debug(context).getInstance().log;\n\n const mediaPlayerModel = config.mediaPlayerModel;\n const metricsModel = config.metricsModel;\n const dashMetrics = config.dashMetrics;\n\n let fragmentDict,\n abandonDict,\n throughputArray;\n\n function setup() {\n reset();\n }\n\n function setFragmentRequestDict(type, id) {\n fragmentDict[type] = fragmentDict[type] || {};\n fragmentDict[type][id] = fragmentDict[type][id] || {};\n }\n\n function storeLastRequestThroughputByType(type, throughput) {\n throughputArray[type] = throughputArray[type] || [];\n throughputArray[type].push(throughput);\n }\n\n function shouldAbandon(rulesContext) {\n const switchRequest = SwitchRequest(context).create(SwitchRequest.NO_CHANGE, {name: AbandonRequestsRule.__dashjs_factory_name});\n\n if (!rulesContext || !rulesContext.hasOwnProperty('getMediaInfo') || !rulesContext.hasOwnProperty('getMediaType') || !rulesContext.hasOwnProperty('getCurrentRequest') ||\n !rulesContext.hasOwnProperty('getRepresentationInfo') || !rulesContext.hasOwnProperty('getAbrController')) {\n return switchRequest;\n }\n\n const mediaInfo = rulesContext.getMediaInfo();\n const mediaType = rulesContext.getMediaType();\n const req = rulesContext.getCurrentRequest();\n\n if (!isNaN(req.index)) {\n setFragmentRequestDict(mediaType, req.index);\n\n const stableBufferTime = mediaPlayerModel.getStableBufferTime();\n const bufferLevel = dashMetrics.getCurrentBufferLevel(metricsModel.getReadOnlyMetricsFor(mediaType));\n if ( bufferLevel > stableBufferTime ) {\n return switchRequest;\n }\n\n const fragmentInfo = fragmentDict[mediaType][req.index];\n if (fragmentInfo === null || req.firstByteDate === null || abandonDict.hasOwnProperty(fragmentInfo.id)) {\n return switchRequest;\n }\n\n //setup some init info based on first progress event\n if (fragmentInfo.firstByteTime === undefined) {\n throughputArray[mediaType] = [];\n fragmentInfo.firstByteTime = req.firstByteDate.getTime();\n fragmentInfo.segmentDuration = req.duration;\n fragmentInfo.bytesTotal = req.bytesTotal;\n fragmentInfo.id = req.index;\n }\n fragmentInfo.bytesLoaded = req.bytesLoaded;\n fragmentInfo.elapsedTime = new Date().getTime() - fragmentInfo.firstByteTime;\n\n if (fragmentInfo.bytesLoaded > 0 && fragmentInfo.elapsedTime > 0) {\n storeLastRequestThroughputByType(mediaType, Math.round(fragmentInfo.bytesLoaded * 8 / fragmentInfo.elapsedTime));\n }\n\n if (throughputArray[mediaType].length >= MIN_LENGTH_TO_AVERAGE &&\n fragmentInfo.elapsedTime > GRACE_TIME_THRESHOLD &&\n fragmentInfo.bytesLoaded < fragmentInfo.bytesTotal) {\n\n const totalSampledValue = throughputArray[mediaType].reduce((a, b) => a + b, 0);\n fragmentInfo.measuredBandwidthInKbps = Math.round(totalSampledValue / throughputArray[mediaType].length);\n fragmentInfo.estimatedTimeOfDownload = +((fragmentInfo.bytesTotal * 8 / fragmentInfo.measuredBandwidthInKbps) / 1000).toFixed(2);\n\n if (fragmentInfo.estimatedTimeOfDownload < fragmentInfo.segmentDuration * ABANDON_MULTIPLIER || rulesContext.getRepresentationInfo().quality === 0 ) {\n return switchRequest;\n } else if (!abandonDict.hasOwnProperty(fragmentInfo.id)) {\n\n const abrController = rulesContext.getAbrController();\n const bytesRemaining = fragmentInfo.bytesTotal - fragmentInfo.bytesLoaded;\n const bitrateList = abrController.getBitrateList(mediaInfo);\n const newQuality = abrController.getQualityForBitrate(mediaInfo, fragmentInfo.measuredBandwidthInKbps * mediaPlayerModel.getBandwidthSafetyFactor());\n const estimateOtherBytesTotal = fragmentInfo.bytesTotal * bitrateList[newQuality].bitrate / bitrateList[abrController.getQualityFor(mediaType, mediaInfo.streamInfo)].bitrate;\n\n if (bytesRemaining > estimateOtherBytesTotal) {\n switchRequest.quality = newQuality;\n switchRequest.reason.throughput = fragmentInfo.measuredBandwidthInKbps;\n switchRequest.reason.fragmentID = fragmentInfo.id;\n abandonDict[fragmentInfo.id] = fragmentInfo;\n log('AbandonRequestsRule ( ', mediaType, 'frag id',fragmentInfo.id,') is asking to abandon and switch to quality to ', newQuality, ' measured bandwidth was', fragmentInfo.measuredBandwidthInKbps);\n delete fragmentDict[mediaType][fragmentInfo.id];\n }\n }\n } else if (fragmentInfo.bytesLoaded === fragmentInfo.bytesTotal) {\n delete fragmentDict[mediaType][fragmentInfo.id];\n }\n }\n\n return switchRequest;\n }\n\n function reset() {\n fragmentDict = {};\n abandonDict = {};\n throughputArray = [];\n }\n\n const instance = {\n shouldAbandon: shouldAbandon,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nAbandonRequestsRule.__dashjs_factory_name = 'AbandonRequestsRule';\nexport default FactoryMaker.getClassFactory(AbandonRequestsRule);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2016, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n// For a description of the BOLA adaptive bitrate (ABR) algorithm, see http://arxiv.org/abs/1601.06748\n\nimport MetricsConstants from '../../constants/MetricsConstants';\nimport SwitchRequest from '../SwitchRequest';\nimport FactoryMaker from '../../../core/FactoryMaker';\nimport {HTTPRequest} from '../../vo/metrics/HTTPRequest';\nimport EventBus from '../../../core/EventBus';\nimport Events from '../../../core/events/Events';\nimport Debug from '../../../core/Debug';\n\n// BOLA_STATE_ONE_BITRATE : If there is only one bitrate (or initialization failed), always return NO_CHANGE.\n// BOLA_STATE_STARTUP : Set placeholder buffer such that we download fragments at most recently measured throughput.\n// BOLA_STATE_STEADY : Buffer primed, we switch to steady operation.\n// TODO: add BOLA_STATE_SEEK and tune BOLA behavior on seeking\nconst BOLA_STATE_ONE_BITRATE = 0;\nconst BOLA_STATE_STARTUP = 1;\nconst BOLA_STATE_STEADY = 2;\n\nconst MINIMUM_BUFFER_S = 10; // BOLA should never add artificial delays if buffer is less than MINIMUM_BUFFER_S.\nconst MINIMUM_BUFFER_PER_BITRATE_LEVEL_S = 2;\n// E.g. if there are 5 bitrates, BOLA switches to top bitrate at buffer = 10 + 5 * 2 = 20s.\n// If Schedule Controller does not allow buffer to reach that level, it can be achieved through the placeholder buffer level.\n\nconst PLACEHOLDER_BUFFER_DECAY = 0.99; // Make sure placeholder buffer does not stick around too long.\n\nfunction BolaRule(config) {\n\n const context = this.context;\n const log = Debug(context).getInstance().log;\n\n const dashMetrics = config.dashMetrics;\n const metricsModel = config.metricsModel;\n const mediaPlayerModel = config.mediaPlayerModel;\n const eventBus = EventBus(context).getInstance();\n\n let instance,\n bolaStateDict;\n\n function setup() {\n resetInitialSettings();\n\n eventBus.on(Events.BUFFER_EMPTY, onBufferEmpty, instance);\n eventBus.on(Events.PLAYBACK_SEEKING, onPlaybackSeeking, instance);\n eventBus.on(Events.PERIOD_SWITCH_STARTED, onPeriodSwitchStarted, instance);\n eventBus.on(Events.MEDIA_FRAGMENT_LOADED, onMediaFragmentLoaded, instance);\n eventBus.on(Events.METRIC_ADDED, onMetricAdded, instance);\n eventBus.on(Events.QUALITY_CHANGE_REQUESTED, onQualityChangeRequested, instance);\n eventBus.on(Events.FRAGMENT_LOADING_ABANDONED, onFragmentLoadingAbandoned, instance);\n }\n\n function utilitiesFromBitrates(bitrates) {\n return bitrates.map(b => Math.log(b));\n // no need to worry about offset, utilities will be offset (uniformly) anyway later\n }\n\n // NOTE: in live streaming, the real buffer level can drop below minimumBufferS, but bola should not stick to lowest bitrate by using a placeholder buffer level\n function calculateBolaParameters(stableBufferTime, bitrates, utilities) {\n const highestUtilityIndex = utilities.reduce((highestIndex, u, uIndex) => (u > utilities[highestIndex] ? uIndex : highestIndex), 0);\n\n if (highestUtilityIndex === 0) {\n // if highestUtilityIndex === 0, then always use lowest bitrate\n return null;\n }\n\n const bufferTime = Math.max(stableBufferTime, MINIMUM_BUFFER_S + MINIMUM_BUFFER_PER_BITRATE_LEVEL_S * bitrates.length);\n\n // TODO: Investigate if following can be better if utilities are not the default Math.log utilities.\n // If using Math.log utilities, we can choose Vp and gp to always prefer bitrates[0] at minimumBufferS and bitrates[max] at bufferTarget.\n // (Vp * (utility + gp) - bufferLevel) / bitrate has the maxima described when:\n // Vp * (utilities[0] + gp - 1) === minimumBufferS and Vp * (utilities[max] + gp - 1) === bufferTarget\n // giving:\n const gp = (utilities[highestUtilityIndex] - 1) / (bufferTime / MINIMUM_BUFFER_S - 1);\n const Vp = MINIMUM_BUFFER_S / gp;\n // note that expressions for gp and Vp assume utilities[0] === 1, which is true because of normalization\n\n return {gp: gp, Vp: Vp};\n }\n\n function getInitialBolaState(rulesContext) {\n const initialState = {};\n const mediaInfo = rulesContext.getMediaInfo();\n const bitrates = mediaInfo.bitrateList.map(b => b.bandwidth);\n let utilities = utilitiesFromBitrates(bitrates);\n utilities = utilities.map(u => u - utilities[0] + 1); // normalize\n const stableBufferTime = mediaPlayerModel.getStableBufferTime();\n const params = calculateBolaParameters(stableBufferTime, bitrates, utilities);\n\n if (!params) {\n // only happens when there is only one bitrate level\n initialState.state = BOLA_STATE_ONE_BITRATE;\n } else {\n initialState.state = BOLA_STATE_STARTUP;\n\n initialState.bitrates = bitrates;\n initialState.utilities = utilities;\n initialState.stableBufferTime = stableBufferTime;\n initialState.Vp = params.Vp;\n initialState.gp = params.gp;\n\n initialState.lastQuality = 0;\n clearBolaStateOnSeek(initialState);\n }\n\n return initialState;\n }\n\n function clearBolaStateOnSeek(bolaState) {\n bolaState.placeholderBuffer = 0;\n bolaState.mostAdvancedSegmentStart = NaN;\n bolaState.lastSegmentWasReplacement = false;\n bolaState.lastSegmentStart = NaN;\n bolaState.lastSegmentDurationS = NaN;\n bolaState.lastSegmentRequestTimeMs = NaN;\n bolaState.lastSegmentFinishTimeMs = NaN;\n }\n\n // If the buffer target is changed (can this happen mid-stream?), then adjust BOLA parameters accordingly.\n function checkBolaStateStableBufferTime(bolaState, mediaType) {\n const stableBufferTime = mediaPlayerModel.getStableBufferTime();\n if (bolaState.stableBufferTime !== stableBufferTime) {\n const params = calculateBolaParameters(stableBufferTime, bolaState.bitrates, bolaState.utilities);\n if (params.Vp !== bolaState.Vp || params.gp !== bolaState.gp) {\n // correct placeholder buffer using two criteria:\n // 1. do not change effective buffer level at effectiveBufferLevel === MINIMUM_BUFFER_S ( === Vp * gp )\n // 2. scale placeholder buffer by Vp subject to offset indicated in 1.\n\n const bufferLevel = dashMetrics.getCurrentBufferLevel(metricsModel.getReadOnlyMetricsFor(mediaType));\n let effectiveBufferLevel = bufferLevel + bolaState.placeholderBuffer;\n\n effectiveBufferLevel -= MINIMUM_BUFFER_S;\n effectiveBufferLevel *= params.Vp / bolaState.Vp;\n effectiveBufferLevel += MINIMUM_BUFFER_S;\n\n bolaState.stableBufferTime = stableBufferTime;\n bolaState.Vp = params.Vp;\n bolaState.gp = params.gp;\n bolaState.placeholderBuffer = Math.max(0, effectiveBufferLevel - bufferLevel);\n }\n }\n }\n\n function getBolaState(rulesContext) {\n const mediaType = rulesContext.getMediaType();\n let bolaState = bolaStateDict[mediaType];\n if (!bolaState) {\n bolaState = getInitialBolaState(rulesContext);\n bolaStateDict[mediaType] = bolaState;\n } else if (bolaState.state !== BOLA_STATE_ONE_BITRATE) {\n checkBolaStateStableBufferTime(bolaState, mediaType);\n }\n return bolaState;\n }\n\n // The core idea of BOLA.\n function getQualityFromBufferLevel(bolaState, bufferLevel) {\n const bitrateCount = bolaState.bitrates.length;\n let quality = NaN;\n let score = NaN;\n for (let i = 0; i < bitrateCount; ++i) {\n let s = (bolaState.Vp * (bolaState.utilities[i] + bolaState.gp) - bufferLevel) / bolaState.bitrates[i];\n if (isNaN(score) || s >= score) {\n score = s;\n quality = i;\n }\n }\n return quality;\n }\n\n // maximum buffer level which prefers to download at quality rather than wait\n function maxBufferLevelForQuality(bolaState, quality) {\n return bolaState.Vp * (bolaState.utilities[quality] + bolaState.gp);\n }\n\n // the minimum buffer level that would cause BOLA to choose quality rather than a lower bitrate\n function minBufferLevelForQuality(bolaState, quality) {\n const qBitrate = bolaState.bitrates[quality];\n const qUtility = bolaState.utilities[quality];\n\n let min = 0;\n for (let i = quality - 1; i >= 0; --i) {\n // for each bitrate less than bitrates[quality], BOLA should prefer quality (unless other bitrate has higher utility)\n if (bolaState.utilities[i] < bolaState.utilities[quality]) {\n const iBitrate = bolaState.bitrates[i];\n const iUtility = bolaState.utilities[i];\n\n const level = bolaState.Vp * (bolaState.gp + (qBitrate * iUtility - iBitrate * qUtility) / (qBitrate - iBitrate));\n min = Math.max(min, level); // we want min to be small but at least level(i) for all i\n }\n }\n return min;\n }\n\n /*\n * The placeholder buffer increases the effective buffer that is used to calculate the bitrate.\n * There are two main reasons we might want to increase the placeholder buffer:\n *\n * 1. When a segment finishes downloading, we would expect to get a call on getMaxIndex() regarding the quality for\n * the next segment. However, there might be a delay before the next call. E.g. when streaming live content, the\n * next segment might not be available yet. If the call to getMaxIndex() does happens after a delay, we don't\n * want the delay to change the BOLA decision - we only want to factor download time to decide on bitrate level.\n *\n * 2. It is possible to get a call to getMaxIndex() without having a segment download. The buffer target in dash.js\n * is different for top-quality segments and lower-quality segments. If getMaxIndex() returns a lower-than-top\n * quality, then the buffer controller might decide not to download a segment. When dash.js is ready for the next\n * segment, getMaxIndex() will be called again. We don't want this extra delay to factor in the bitrate decision.\n */\n function updatePlaceholderBuffer(bolaState, mediaType) {\n const nowMs = Date.now();\n\n if (!isNaN(bolaState.lastSegmentFinishTimeMs)) {\n // compensate for non-bandwidth-derived delays, e.g., live streaming availability, buffer controller\n const delay = 0.001 * (nowMs - bolaState.lastSegmentFinishTimeMs);\n bolaState.placeholderBuffer += Math.max(0, delay);\n } else if (!isNaN(bolaState.lastCallTimeMs)) {\n // no download after last call, compensate for delay between calls\n const delay = 0.001 * (nowMs - bolaState.lastCallTimeMs);\n bolaState.placeholderBuffer += Math.max(0, delay);\n }\n\n bolaState.lastCallTimeMs = nowMs;\n bolaState.lastSegmentStart = NaN;\n bolaState.lastSegmentRequestTimeMs = NaN;\n bolaState.lastSegmentFinishTimeMs = NaN;\n\n checkBolaStateStableBufferTime(bolaState, mediaType);\n }\n\n function onBufferEmpty() {\n // if we rebuffer, we don't want the placeholder buffer to artificially raise BOLA quality\n for (const mediaType in bolaStateDict) {\n if (bolaStateDict.hasOwnProperty(mediaType) && bolaStateDict[mediaType].state === BOLA_STATE_STEADY) {\n bolaStateDict[mediaType].placeholderBuffer = 0;\n }\n }\n }\n\n function onPlaybackSeeking() {\n // TODO: 1. Verify what happens if we seek mid-fragment.\n // TODO: 2. If e.g. we have 10s fragments and seek, we might want to download the first fragment at a lower quality to restart playback quickly.\n for (const mediaType in bolaStateDict) {\n if (bolaStateDict.hasOwnProperty(mediaType)) {\n const bolaState = bolaStateDict[mediaType];\n if (bolaState.state !== BOLA_STATE_ONE_BITRATE) {\n bolaState.state = BOLA_STATE_STARTUP; // TODO: BOLA_STATE_SEEK?\n clearBolaStateOnSeek(bolaState);\n }\n }\n }\n }\n\n function onPeriodSwitchStarted() {\n // TODO: does this have to be handled here?\n }\n\n function onMediaFragmentLoaded(e) {\n if (e && e.chunk && e.chunk.mediaInfo) {\n const bolaState = bolaStateDict[e.chunk.mediaInfo.type];\n if (bolaState && bolaState.state !== BOLA_STATE_ONE_BITRATE) {\n const start = e.chunk.start;\n if (isNaN(bolaState.mostAdvancedSegmentStart) || start > bolaState.mostAdvancedSegmentStart) {\n bolaState.mostAdvancedSegmentStart = start;\n bolaState.lastSegmentWasReplacement = false;\n } else {\n bolaState.lastSegmentWasReplacement = true;\n }\n\n bolaState.lastSegmentStart = start;\n bolaState.lastSegmentDurationS = e.chunk.duration;\n bolaState.lastQuality = e.chunk.quality;\n\n checkNewSegment(bolaState, e.chunk.mediaInfo.type);\n }\n }\n }\n\n function onMetricAdded(e) {\n if (e && e.metric === MetricsConstants.HTTP_REQUEST && e.value && e.value.type === HTTPRequest.MEDIA_SEGMENT_TYPE && e.value.trace && e.value.trace.length) {\n const bolaState = bolaStateDict[e.mediaType];\n if (bolaState && bolaState.state !== BOLA_STATE_ONE_BITRATE) {\n bolaState.lastSegmentRequestTimeMs = e.value.trequest.getTime();\n bolaState.lastSegmentFinishTimeMs = e.value._tfinish.getTime();\n\n checkNewSegment(bolaState, e.mediaType);\n }\n }\n }\n\n /*\n * When a new segment is downloaded, we get two notifications: onMediaFragmentLoaded() and onMetricAdded(). It is\n * possible that the quality for the downloaded segment was lower (not higher) than the quality indicated by BOLA.\n * This might happen because of other rules such as the DroppedFramesRule. When this happens, we trim the\n * placeholder buffer to make BOLA more stable. This mechanism also avoids inflating the buffer when BOLA itself\n * decides not to increase the quality to avoid oscillations.\n *\n * We should also check for replacement segments (fast switching). In this case, a segment is downloaded but does\n * not grow the actual buffer. Fast switching might cause the buffer to deplete, causing BOLA to drop the bitrate.\n * We avoid this by growing the placeholder buffer.\n */\n function checkNewSegment(bolaState, mediaType) {\n if (!isNaN(bolaState.lastSegmentStart) && !isNaN(bolaState.lastSegmentRequestTimeMs) && !isNaN(bolaState.placeholderBuffer)) {\n bolaState.placeholderBuffer *= PLACEHOLDER_BUFFER_DECAY;\n\n // Find what maximum buffer corresponding to last segment was, and ensure placeholder is not relatively larger.\n if (!isNaN(bolaState.lastSegmentFinishTimeMs)) {\n const bufferLevel = dashMetrics.getCurrentBufferLevel(metricsModel.getReadOnlyMetricsFor(mediaType));\n const bufferAtLastSegmentRequest = bufferLevel + 0.001 * (bolaState.lastSegmentFinishTimeMs - bolaState.lastSegmentRequestTimeMs); // estimate\n const maxEffectiveBufferForLastSegment = maxBufferLevelForQuality(bolaState, bolaState.lastQuality);\n const maxPlaceholderBuffer = Math.max(0, maxEffectiveBufferForLastSegment - bufferAtLastSegmentRequest);\n bolaState.placeholderBuffer = Math.min(maxPlaceholderBuffer, bolaState.placeholderBuffer);\n }\n\n // then see if we should grow placeholder buffer\n\n if (bolaState.lastSegmentWasReplacement && !isNaN(bolaState.lastSegmentDurationS)) {\n // compensate for segments that were downloaded but did not grow the buffer\n bolaState.placeholderBuffer += bolaState.lastSegmentDurationS;\n }\n\n bolaState.lastSegmentStart = NaN;\n bolaState.lastSegmentRequestTimeMs = NaN;\n }\n }\n\n function onQualityChangeRequested(e) {\n // Useful to store change requests when abandoning a download.\n if (e) {\n const bolaState = bolaStateDict[e.mediaType];\n if (bolaState && bolaState.state !== BOLA_STATE_ONE_BITRATE) {\n bolaState.abrQuality = e.newQuality;\n }\n }\n }\n\n function onFragmentLoadingAbandoned(e) {\n if (e) {\n const bolaState = bolaStateDict[e.mediaType];\n if (bolaState && bolaState.state !== BOLA_STATE_ONE_BITRATE) {\n // deflate placeholderBuffer - note that we want to be conservative when abandoning\n const bufferLevel = dashMetrics.getCurrentBufferLevel(metricsModel.getReadOnlyMetricsFor(e.mediaType));\n let wantEffectiveBufferLevel;\n if (bolaState.abrQuality > 0) {\n // deflate to point where BOLA just chooses newQuality over newQuality-1\n wantEffectiveBufferLevel = minBufferLevelForQuality(bolaState, bolaState.abrQuality);\n } else {\n wantEffectiveBufferLevel = MINIMUM_BUFFER_S;\n }\n const maxPlaceholderBuffer = Math.max(0, wantEffectiveBufferLevel - bufferLevel);\n bolaState.placeholderBuffer = Math.min(bolaState.placeholderBuffer, maxPlaceholderBuffer);\n }\n }\n }\n\n function getMaxIndex(rulesContext) {\n const mediaInfo = rulesContext.getMediaInfo();\n const mediaType = rulesContext.getMediaType();\n const metrics = metricsModel.getReadOnlyMetricsFor(mediaType);\n const streamProcessor = rulesContext.getStreamProcessor();\n const streamInfo = rulesContext.getStreamInfo();\n const abrController = rulesContext.getAbrController();\n const throughputHistory = abrController.getThroughputHistory();\n const streamId = streamInfo ? streamInfo.id : null;\n const isDynamic = streamInfo && streamInfo.manifestInfo && streamInfo.manifestInfo.isDynamic;\n const useBufferOccupancyABR = rulesContext.useBufferOccupancyABR();\n const switchRequest = SwitchRequest(context).create();\n switchRequest.reason = switchRequest.reason || {};\n\n if (!useBufferOccupancyABR) {\n return switchRequest;\n }\n\n streamProcessor.getScheduleController().setTimeToLoadDelay(0);\n\n const bolaState = getBolaState(rulesContext);\n\n if (bolaState.state === BOLA_STATE_ONE_BITRATE) {\n // shouldn't even have been called\n log('BOLA ABR rule invoked for media type \\'' + mediaType + '\\' with only one bitrate.');\n return switchRequest;\n }\n\n const bufferLevel = dashMetrics.getCurrentBufferLevel(metrics);\n const throughput = throughputHistory.getAverageThroughput(mediaType, isDynamic);\n const safeThroughput = throughputHistory.getSafeAverageThroughput(mediaType, isDynamic);\n const latency = throughputHistory.getAverageLatency(mediaType);\n let quality;\n\n switchRequest.reason.state = bolaState.state;\n switchRequest.reason.throughput = throughput;\n switchRequest.reason.latency = latency;\n\n if (isNaN(throughput)) { // isNaN(throughput) === isNaN(safeThroughput) === isNaN(latency)\n // still starting up - not enough information\n return switchRequest;\n }\n\n switch (bolaState.state) {\n case BOLA_STATE_STARTUP:\n quality = abrController.getQualityForBitrate(mediaInfo, safeThroughput, latency);\n\n switchRequest.quality = quality;\n switchRequest.reason.throughput = safeThroughput;\n\n bolaState.placeholderBuffer = Math.max(0, minBufferLevelForQuality(bolaState, quality) - bufferLevel);\n bolaState.lastQuality = quality;\n\n if (!isNaN(bolaState.lastSegmentDurationS) && bufferLevel >= bolaState.lastSegmentDurationS) {\n bolaState.state = BOLA_STATE_STEADY;\n }\n\n break; // BOLA_STATE_STARTUP\n\n case BOLA_STATE_STEADY:\n\n // NB: The placeholder buffer is added to bufferLevel to come up with a bitrate.\n // This might lead BOLA to be too optimistic and to choose a bitrate that would lead to rebuffering -\n // if the real buffer bufferLevel runs out, the placeholder buffer cannot prevent rebuffering.\n // However, the InsufficientBufferRule takes care of this scenario.\n\n updatePlaceholderBuffer(bolaState, mediaType);\n\n quality = getQualityFromBufferLevel(bolaState, bufferLevel + bolaState.placeholderBuffer);\n\n // we want to avoid oscillations\n // We implement the \"BOLA-O\" variant: when network bandwidth lies between two encoded bitrate levels, stick to the lowest level.\n const qualityForThroughput = abrController.getQualityForBitrate(mediaInfo, safeThroughput, latency);\n if (quality > bolaState.lastQuality && quality > qualityForThroughput) {\n // only intervene if we are trying to *increase* quality to an *unsustainable* level\n // we are only avoid oscillations - do not drop below last quality\n\n quality = Math.max(qualityForThroughput, bolaState.lastQuality);\n }\n\n // We do not want to overfill buffer with low quality chunks.\n // Note that there will be no delay if buffer level is below MINIMUM_BUFFER_S, probably even with some margin higher than MINIMUM_BUFFER_S.\n let delayS = Math.max(0, bufferLevel + bolaState.placeholderBuffer - maxBufferLevelForQuality(bolaState, quality));\n\n // First reduce placeholder buffer, then tell schedule controller to pause.\n if (delayS <= bolaState.placeholderBuffer) {\n bolaState.placeholderBuffer -= delayS;\n delayS = 0;\n } else {\n delayS -= bolaState.placeholderBuffer;\n bolaState.placeholderBuffer = 0;\n\n if (quality < abrController.getTopQualityIndexFor(mediaType, streamId)) {\n // At top quality, allow schedule controller to decide how far to fill buffer.\n streamProcessor.getScheduleController().setTimeToLoadDelay(1000 * delayS);\n } else {\n delayS = 0;\n }\n }\n\n switchRequest.quality = quality;\n switchRequest.reason.throughput = throughput;\n switchRequest.reason.latency = latency;\n switchRequest.reason.bufferLevel = bufferLevel;\n switchRequest.reason.placeholderBuffer = bolaState.placeholderBuffer;\n switchRequest.reason.delay = delayS;\n\n bolaState.lastQuality = quality;\n // keep bolaState.state === BOLA_STATE_STEADY\n\n break; // BOLA_STATE_STEADY\n\n default:\n log('BOLA ABR rule invoked in bad state.');\n // should not arrive here, try to recover\n switchRequest.quality = abrController.getQualityForBitrate(mediaInfo, safeThroughput, latency);\n switchRequest.reason.state = bolaState.state;\n switchRequest.reason.throughput = safeThroughput;\n switchRequest.reason.latency = latency;\n bolaState.state = BOLA_STATE_STARTUP;\n clearBolaStateOnSeek(bolaState);\n }\n\n return switchRequest;\n }\n\n function resetInitialSettings() {\n bolaStateDict = {};\n }\n\n function reset() {\n resetInitialSettings();\n\n eventBus.off(Events.BUFFER_EMPTY, onBufferEmpty, instance);\n eventBus.off(Events.PLAYBACK_SEEKING, onPlaybackSeeking, instance);\n eventBus.off(Events.PERIOD_SWITCH_STARTED, onPeriodSwitchStarted, instance);\n eventBus.off(Events.MEDIA_FRAGMENT_LOADED, onMediaFragmentLoaded, instance);\n eventBus.off(Events.METRIC_ADDED, onMetricAdded, instance);\n eventBus.off(Events.QUALITY_CHANGE_REQUESTED, onQualityChangeRequested, instance);\n eventBus.off(Events.FRAGMENT_LOADING_ABANDONED, onFragmentLoadingAbandoned, instance);\n }\n\n instance = {\n getMaxIndex: getMaxIndex,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nBolaRule.__dashjs_factory_name = 'BolaRule';\nexport default FactoryMaker.getClassFactory(BolaRule);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2017, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Constants from '../constants/Constants';\nimport FactoryMaker from '../../core/FactoryMaker.js';\n\n// throughput generally stored in kbit/s\n// latency generally stored in ms\n\nfunction ThroughputHistory(config) {\n\n config = config || {};\n // sliding window constants\n const MAX_MEASUREMENTS_TO_KEEP = 20;\n const AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_LIVE = 3;\n const AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_VOD = 4;\n const AVERAGE_LATENCY_SAMPLE_AMOUNT = 4;\n const THROUGHPUT_DECREASE_SCALE = 1.3;\n const THROUGHPUT_INCREASE_SCALE = 1.3;\n\n // EWMA constants\n const EWMA_THROUGHPUT_SLOW_HALF_LIFE_SECONDS = 8;\n const EWMA_THROUGHPUT_FAST_HALF_LIFE_SECONDS = 3;\n const EWMA_LATENCY_SLOW_HALF_LIFE_COUNT = 2;\n const EWMA_LATENCY_FAST_HALF_LIFE_COUNT = 1;\n\n const CACHE_LOAD_THRESHOLD_VIDEO = 50;\n const CACHE_LOAD_THRESHOLD_AUDIO = 5;\n\n const mediaPlayerModel = config.mediaPlayerModel;\n\n let throughputDict,\n latencyDict,\n ewmaThroughputDict,\n ewmaLatencyDict,\n ewmaHalfLife;\n\n function setup() {\n ewmaHalfLife = {\n throughputHalfLife: { fast: EWMA_THROUGHPUT_FAST_HALF_LIFE_SECONDS, slow: EWMA_THROUGHPUT_SLOW_HALF_LIFE_SECONDS },\n latencyHalfLife: { fast: EWMA_LATENCY_FAST_HALF_LIFE_COUNT, slow: EWMA_LATENCY_SLOW_HALF_LIFE_COUNT }\n };\n\n reset();\n }\n\n function isCachedResponse(mediaType, latencyMs, downloadTimeMs) {\n if (mediaType === Constants.VIDEO) {\n return downloadTimeMs < CACHE_LOAD_THRESHOLD_VIDEO;\n } else if (mediaType === Constants.AUDIO) {\n return downloadTimeMs < CACHE_LOAD_THRESHOLD_AUDIO;\n }\n }\n\n function push(mediaType, httpRequest, useDeadTimeLatency) {\n if (!httpRequest.trace || !httpRequest.trace.length) {\n return;\n }\n\n const latencyTimeInMilliseconds = (httpRequest.tresponse.getTime() - httpRequest.trequest.getTime()) || 1;\n const downloadTimeInMilliseconds = (httpRequest._tfinish.getTime() - httpRequest.tresponse.getTime()) || 1; //Make sure never 0 we divide by this value. Avoid infinity!\n const downloadBytes = httpRequest.trace.reduce((a, b) => a + b.b[0], 0);\n const throughputMeasureTime = useDeadTimeLatency ? downloadTimeInMilliseconds : latencyTimeInMilliseconds + downloadTimeInMilliseconds;\n let throughput = Math.round((8 * downloadBytes) / throughputMeasureTime); // bits/ms = kbits/s\n\n checkSettingsForMediaType(mediaType);\n\n if (isCachedResponse(mediaType, latencyTimeInMilliseconds, downloadTimeInMilliseconds)) {\n if (throughputDict[mediaType].length > 0 && !throughputDict[mediaType].hasCachedEntries) {\n // already have some entries which are not cached entries\n // prevent cached fragment loads from skewing the average values\n return;\n } else { // have no entries || have cached entries\n // no uncached entries yet, rely on cached entries because ABR rules need something to go by\n throughputDict[mediaType].hasCachedEntries = true;\n }\n } else if (throughputDict[mediaType] && throughputDict[mediaType].hasCachedEntries) {\n // if we are here then we have some entries already, but they are cached, and now we have a new uncached entry\n clearSettingsForMediaType(mediaType);\n }\n\n throughputDict[mediaType].push(throughput);\n if (throughputDict[mediaType].length > MAX_MEASUREMENTS_TO_KEEP) {\n throughputDict[mediaType].shift();\n }\n\n latencyDict[mediaType].push(latencyTimeInMilliseconds);\n if (latencyDict[mediaType].length > MAX_MEASUREMENTS_TO_KEEP) {\n latencyDict[mediaType].shift();\n }\n\n updateEwmaEstimate(ewmaThroughputDict[mediaType], throughput, 0.001 * downloadTimeInMilliseconds, ewmaHalfLife.throughputHalfLife);\n updateEwmaEstimate(ewmaLatencyDict[mediaType], latencyTimeInMilliseconds, 1, ewmaHalfLife.latencyHalfLife);\n }\n\n function updateEwmaEstimate(ewmaObj, value, weight, halfLife) {\n // Note about startup:\n // Estimates start at 0, so early values are underestimated.\n // This effect is countered in getAverageEwma() by dividing the estimates by:\n // 1 - Math.pow(0.5, ewmaObj.totalWeight / halfLife)\n\n const fastAlpha = Math.pow(0.5, weight / halfLife.fast);\n ewmaObj.fastEstimate = (1 - fastAlpha) * value + fastAlpha * ewmaObj.fastEstimate;\n\n const slowAlpha = Math.pow(0.5, weight / halfLife.slow);\n ewmaObj.slowEstimate = (1 - slowAlpha) * value + slowAlpha * ewmaObj.slowEstimate;\n\n ewmaObj.totalWeight += weight;\n }\n\n function getSampleSize(isThroughput, mediaType, isLive) {\n let arr;\n let sampleSize;\n\n if (isThroughput) {\n arr = throughputDict[mediaType];\n sampleSize = isLive ? AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_LIVE : AVERAGE_THROUGHPUT_SAMPLE_AMOUNT_VOD;\n } else {\n arr = latencyDict[mediaType];\n sampleSize = AVERAGE_LATENCY_SAMPLE_AMOUNT;\n }\n\n if (!arr) {\n sampleSize = 0;\n } else if (sampleSize >= arr.length) {\n sampleSize = arr.length;\n } else if (isThroughput) {\n // if throughput samples vary a lot, average over a wider sample\n for (let i = 1; i < sampleSize; ++i) {\n let ratio = arr[-i] / arr[-i - 1];\n if (ratio >= THROUGHPUT_INCREASE_SCALE || ratio <= 1 / THROUGHPUT_DECREASE_SCALE) {\n sampleSize += 1;\n if (sampleSize === arr.length) { // cannot increase sampleSize beyond arr.length\n break;\n }\n }\n }\n }\n\n return sampleSize;\n }\n\n function getAverage(isThroughput, mediaType, isDynamic) {\n // only two moving average methods defined at the moment\n return mediaPlayerModel.getMovingAverageMethod() !== Constants.MOVING_AVERAGE_SLIDING_WINDOW ?\n getAverageEwma(isThroughput, mediaType) : getAverageSlidingWindow(isThroughput, mediaType, isDynamic);\n }\n\n function getAverageSlidingWindow(isThroughput, mediaType, isDynamic) {\n let sampleSize = getSampleSize(isThroughput, mediaType, isDynamic);\n let dict = isThroughput ? throughputDict : latencyDict;\n let arr = dict[mediaType];\n\n if (sampleSize === 0 || !arr || arr.length === 0) {\n return NaN;\n }\n\n arr = arr.slice(-sampleSize); // still works if sampleSize too large\n // arr.length >= 1\n return arr.reduce((total, elem) => total + elem) / arr.length;\n }\n\n function getAverageEwma(isThroughput, mediaType) {\n let halfLife = isThroughput ? ewmaHalfLife.throughputHalfLife : ewmaHalfLife.latencyHalfLife;\n let ewmaObj = isThroughput ? ewmaThroughputDict[mediaType] : ewmaLatencyDict[mediaType];\n\n if (!ewmaObj || ewmaObj.totalWeight <= 0) {\n return NaN;\n }\n\n // to correct for startup, divide by zero factor = 1 - Math.pow(0.5, ewmaObj.totalWeight / halfLife)\n const fastEstimate = ewmaObj.fastEstimate / (1 - Math.pow(0.5, ewmaObj.totalWeight / halfLife.fast));\n const slowEstimate = ewmaObj.slowEstimate / (1 - Math.pow(0.5, ewmaObj.totalWeight / halfLife.slow));\n return isThroughput ? Math.min(fastEstimate, slowEstimate) : Math.max(fastEstimate, slowEstimate);\n }\n\n function getAverageThroughput(mediaType, isDynamic) {\n return getAverage(true, mediaType, isDynamic);\n }\n\n function getSafeAverageThroughput(mediaType, isDynamic) {\n let average = getAverageThroughput(mediaType, isDynamic);\n if (!isNaN(average)) {\n average *= mediaPlayerModel.getBandwidthSafetyFactor();\n }\n return average;\n }\n\n function getAverageLatency(mediaType) {\n return getAverage(false, mediaType);\n }\n\n function checkSettingsForMediaType(mediaType) {\n throughputDict[mediaType] = throughputDict[mediaType] || [];\n latencyDict[mediaType] = latencyDict[mediaType] || [];\n ewmaThroughputDict[mediaType] = ewmaThroughputDict[mediaType] || {fastEstimate: 0, slowEstimate: 0, totalWeight: 0};\n ewmaLatencyDict[mediaType] = ewmaLatencyDict[mediaType] || {fastEstimate: 0, slowEstimate: 0, totalWeight: 0};\n }\n\n function clearSettingsForMediaType(mediaType) {\n delete throughputDict[mediaType];\n delete latencyDict[mediaType];\n delete ewmaThroughputDict[mediaType];\n delete ewmaLatencyDict[mediaType];\n checkSettingsForMediaType(mediaType);\n }\n\n function reset() {\n throughputDict = {};\n latencyDict = {};\n ewmaThroughputDict = {};\n ewmaLatencyDict = {};\n }\n\n const instance = {\n push: push,\n getAverageThroughput: getAverageThroughput,\n getSafeAverageThroughput: getSafeAverageThroughput,\n getAverageLatency: getAverageLatency,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nThroughputHistory.__dashjs_factory_name = 'ThroughputHistory';\nexport default FactoryMaker.getClassFactory(ThroughputHistory);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport ThroughputRule from './ThroughputRule';\nimport InsufficientBufferRule from './InsufficientBufferRule';\nimport AbandonRequestsRule from './AbandonRequestsRule';\nimport DroppedFramesRule from './DroppedFramesRule.js';\nimport SwitchHistoryRule from './SwitchHistoryRule.js';\nimport BolaRule from './BolaRule';\nimport FactoryMaker from '../../../core/FactoryMaker';\nimport SwitchRequest from '../SwitchRequest.js';\n\nconst QUALITY_SWITCH_RULES = 'qualitySwitchRules';\nconst ABANDON_FRAGMENT_RULES = 'abandonFragmentRules';\n\nfunction ABRRulesCollection(config) {\n\n config = config || {};\n const context = this.context;\n\n const mediaPlayerModel = config.mediaPlayerModel;\n const metricsModel = config.metricsModel;\n const dashMetrics = config.dashMetrics;\n\n let instance,\n qualitySwitchRules,\n abandonFragmentRules;\n\n function initialize() {\n qualitySwitchRules = [];\n abandonFragmentRules = [];\n\n if (mediaPlayerModel.getUseDefaultABRRules()) {\n // Only one of BolaRule and ThroughputRule will give a switchRequest.quality !== SwitchRequest.NO_CHANGE.\n // This is controlled by useBufferOccupancyABR mechanism in AbrController.\n qualitySwitchRules.push(\n BolaRule(context).create({\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n mediaPlayerModel: mediaPlayerModel\n })\n );\n qualitySwitchRules.push(\n ThroughputRule(context).create({\n metricsModel: metricsModel,\n dashMetrics: dashMetrics\n })\n );\n qualitySwitchRules.push(\n InsufficientBufferRule(context).create({\n metricsModel: metricsModel,\n dashMetrics: dashMetrics\n })\n );\n qualitySwitchRules.push(\n SwitchHistoryRule(context).create()\n );\n qualitySwitchRules.push(\n DroppedFramesRule(context).create()\n );\n abandonFragmentRules.push(\n AbandonRequestsRule(context).create({\n metricsModel: metricsModel,\n dashMetrics: dashMetrics,\n mediaPlayerModel: mediaPlayerModel\n })\n );\n }\n\n // add custom ABR rules if any\n const customRules = mediaPlayerModel.getABRCustomRules();\n customRules.forEach(function (rule) {\n if (rule.type === QUALITY_SWITCH_RULES) {\n qualitySwitchRules.push(rule.rule(context).create());\n }\n\n if (rule.type === ABANDON_FRAGMENT_RULES) {\n abandonFragmentRules.push(rule.rule(context).create());\n }\n });\n }\n\n function getActiveRules(srArray) {\n return srArray.filter(sr => sr.quality > SwitchRequest.NO_CHANGE);\n }\n\n function getMinSwitchRequest(srArray) {\n const values = {};\n let i,\n len,\n req,\n newQuality,\n quality;\n\n if (srArray.length === 0) {\n return;\n }\n\n values[SwitchRequest.PRIORITY.STRONG] = SwitchRequest.NO_CHANGE;\n values[SwitchRequest.PRIORITY.WEAK] = SwitchRequest.NO_CHANGE;\n values[SwitchRequest.PRIORITY.DEFAULT] = SwitchRequest.NO_CHANGE;\n\n for (i = 0, len = srArray.length; i < len; i += 1) {\n req = srArray[i];\n if (req.quality !== SwitchRequest.NO_CHANGE) {\n values[req.priority] = values[req.priority] > SwitchRequest.NO_CHANGE ? Math.min(values[req.priority], req.quality) : req.quality;\n }\n }\n\n if (values[SwitchRequest.PRIORITY.WEAK] !== SwitchRequest.NO_CHANGE) {\n newQuality = values[SwitchRequest.PRIORITY.WEAK];\n }\n\n if (values[SwitchRequest.PRIORITY.DEFAULT] !== SwitchRequest.NO_CHANGE) {\n newQuality = values[SwitchRequest.PRIORITY.DEFAULT];\n }\n\n if (values[SwitchRequest.PRIORITY.STRONG] !== SwitchRequest.NO_CHANGE) {\n newQuality = values[SwitchRequest.PRIORITY.STRONG];\n }\n\n if (newQuality !== SwitchRequest.NO_CHANGE) {\n quality = newQuality;\n }\n\n return SwitchRequest(context).create(quality);\n }\n\n function getMaxQuality(rulesContext) {\n const switchRequestArray = qualitySwitchRules.map(rule => rule.getMaxIndex(rulesContext));\n const activeRules = getActiveRules(switchRequestArray);\n const maxQuality = getMinSwitchRequest(activeRules);\n\n return maxQuality || SwitchRequest(context).create();\n }\n\n function shouldAbandonFragment(rulesContext) {\n const abandonRequestArray = abandonFragmentRules.map(rule => rule.shouldAbandon(rulesContext));\n const activeRules = getActiveRules(abandonRequestArray);\n const shouldAbandon = getMinSwitchRequest(activeRules);\n\n return shouldAbandon || SwitchRequest(context).create();\n }\n\n function reset() {\n [qualitySwitchRules, abandonFragmentRules].forEach(rules => {\n if (rules && rules.length) {\n rules.forEach(rule => rule.reset && rule.reset());\n }\n });\n qualitySwitchRules = [];\n abandonFragmentRules = [];\n }\n\n instance = {\n initialize: initialize,\n reset: reset,\n getMaxQuality: getMaxQuality,\n shouldAbandonFragment: shouldAbandonFragment\n };\n\n return instance;\n}\n\nABRRulesCollection.__dashjs_factory_name = 'ABRRulesCollection';\nconst factory = FactoryMaker.getClassFactory(ABRRulesCollection);\nfactory.QUALITY_SWITCH_RULES = QUALITY_SWITCH_RULES;\nfactory.ABANDON_FRAGMENT_RULES = ABANDON_FRAGMENT_RULES;\nFactoryMaker.updateSingletonFactory(ABRRulesCollection.__dashjs_factory_name, factory);\n\nexport default factory;\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport SwitchRequest from '../SwitchRequest';\nimport FactoryMaker from '../../../core/FactoryMaker';\nimport Debug from '../../../core/Debug';\n\nfunction AbandonRequestsRule(config) {\n\n config = config || {};\n const ABANDON_MULTIPLIER = 1.8;\n const GRACE_TIME_THRESHOLD = 500;\n const MIN_LENGTH_TO_AVERAGE = 5;\n\n const context = this.context;\n const log = Debug(context).getInstance().log;\n\n const mediaPlayerModel = config.mediaPlayerModel;\n const metricsModel = config.metricsModel;\n const dashMetrics = config.dashMetrics;\n\n let fragmentDict,\n abandonDict,\n throughputArray;\n\n function setup() {\n reset();\n }\n\n function setFragmentRequestDict(type, id) {\n fragmentDict[type] = fragmentDict[type] || {};\n fragmentDict[type][id] = fragmentDict[type][id] || {};\n }\n\n function storeLastRequestThroughputByType(type, throughput) {\n throughputArray[type] = throughputArray[type] || [];\n throughputArray[type].push(throughput);\n }\n\n function shouldAbandon(rulesContext) {\n const switchRequest = SwitchRequest(context).create(SwitchRequest.NO_CHANGE, {name: AbandonRequestsRule.__dashjs_factory_name});\n\n if (!rulesContext || !rulesContext.hasOwnProperty('getMediaInfo') || !rulesContext.hasOwnProperty('getMediaType') || !rulesContext.hasOwnProperty('getCurrentRequest') ||\n !rulesContext.hasOwnProperty('getRepresentationInfo') || !rulesContext.hasOwnProperty('getAbrController')) {\n return switchRequest;\n }\n\n const mediaInfo = rulesContext.getMediaInfo();\n const mediaType = rulesContext.getMediaType();\n const req = rulesContext.getCurrentRequest();\n\n if (!isNaN(req.index)) {\n setFragmentRequestDict(mediaType, req.index);\n\n const stableBufferTime = mediaPlayerModel.getStableBufferTime();\n const bufferLevel = dashMetrics.getCurrentBufferLevel(metricsModel.getReadOnlyMetricsFor(mediaType));\n if ( bufferLevel > stableBufferTime ) {\n return switchRequest;\n }\n\n const fragmentInfo = fragmentDict[mediaType][req.index];\n if (fragmentInfo === null || req.firstByteDate === null || abandonDict.hasOwnProperty(fragmentInfo.id)) {\n return switchRequest;\n }\n\n //setup some init info based on first progress event\n if (fragmentInfo.firstByteTime === undefined) {\n throughputArray[mediaType] = [];\n fragmentInfo.firstByteTime = req.firstByteDate.getTime();\n fragmentInfo.segmentDuration = req.duration;\n fragmentInfo.bytesTotal = req.bytesTotal;\n fragmentInfo.id = req.index;\n }\n fragmentInfo.bytesLoaded = req.bytesLoaded;\n fragmentInfo.elapsedTime = new Date().getTime() - fragmentInfo.firstByteTime;\n\n if (fragmentInfo.bytesLoaded > 0 && fragmentInfo.elapsedTime > 0) {\n storeLastRequestThroughputByType(mediaType, Math.round(fragmentInfo.bytesLoaded * 8 / fragmentInfo.elapsedTime));\n }\n\n if (throughputArray[mediaType].length >= MIN_LENGTH_TO_AVERAGE &&\n fragmentInfo.elapsedTime > GRACE_TIME_THRESHOLD &&\n fragmentInfo.bytesLoaded < fragmentInfo.bytesTotal) {\n\n const totalSampledValue = throughputArray[mediaType].reduce((a, b) => a + b, 0);\n fragmentInfo.measuredBandwidthInKbps = Math.round(totalSampledValue / throughputArray[mediaType].length);\n fragmentInfo.estimatedTimeOfDownload = +((fragmentInfo.bytesTotal * 8 / fragmentInfo.measuredBandwidthInKbps) / 1000).toFixed(2);\n\n if (fragmentInfo.estimatedTimeOfDownload < fragmentInfo.segmentDuration * ABANDON_MULTIPLIER || rulesContext.getRepresentationInfo().quality === 0 ) {\n return switchRequest;\n } else if (!abandonDict.hasOwnProperty(fragmentInfo.id)) {\n\n const abrController = rulesContext.getAbrController();\n const bytesRemaining = fragmentInfo.bytesTotal - fragmentInfo.bytesLoaded;\n const bitrateList = abrController.getBitrateList(mediaInfo);\n const newQuality = abrController.getQualityForBitrate(mediaInfo, fragmentInfo.measuredBandwidthInKbps * mediaPlayerModel.getBandwidthSafetyFactor());\n const estimateOtherBytesTotal = fragmentInfo.bytesTotal * bitrateList[newQuality].bitrate / bitrateList[abrController.getQualityFor(mediaType, mediaInfo.streamInfo)].bitrate;\n\n if (bytesRemaining > estimateOtherBytesTotal) {\n switchRequest.quality = newQuality;\n switchRequest.reason.throughput = fragmentInfo.measuredBandwidthInKbps;\n switchRequest.reason.fragmentID = fragmentInfo.id;\n abandonDict[fragmentInfo.id] = fragmentInfo;\n log('AbandonRequestsRule ( ', mediaType, 'frag id',fragmentInfo.id,') is asking to abandon and switch to quality to ', newQuality, ' measured bandwidth was', fragmentInfo.measuredBandwidthInKbps);\n delete fragmentDict[mediaType][fragmentInfo.id];\n }\n }\n } else if (fragmentInfo.bytesLoaded === fragmentInfo.bytesTotal) {\n delete fragmentDict[mediaType][fragmentInfo.id];\n }\n }\n\n return switchRequest;\n }\n\n function reset() {\n fragmentDict = {};\n abandonDict = {};\n throughputArray = [];\n }\n\n const instance = {\n shouldAbandon: shouldAbandon,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nAbandonRequestsRule.__dashjs_factory_name = 'AbandonRequestsRule';\nexport default FactoryMaker.getClassFactory(AbandonRequestsRule);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2016, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n// For a description of the BOLA adaptive bitrate (ABR) algorithm, see http://arxiv.org/abs/1601.06748\n\nimport MetricsConstants from '../../constants/MetricsConstants';\nimport SwitchRequest from '../SwitchRequest';\nimport FactoryMaker from '../../../core/FactoryMaker';\nimport {HTTPRequest} from '../../vo/metrics/HTTPRequest';\nimport EventBus from '../../../core/EventBus';\nimport Events from '../../../core/events/Events';\nimport Debug from '../../../core/Debug';\n\n// BOLA_STATE_ONE_BITRATE : If there is only one bitrate (or initialization failed), always return NO_CHANGE.\n// BOLA_STATE_STARTUP : Set placeholder buffer such that we download fragments at most recently measured throughput.\n// BOLA_STATE_STEADY : Buffer primed, we switch to steady operation.\n// TODO: add BOLA_STATE_SEEK and tune BOLA behavior on seeking\nconst BOLA_STATE_ONE_BITRATE = 0;\nconst BOLA_STATE_STARTUP = 1;\nconst BOLA_STATE_STEADY = 2;\n\nconst MINIMUM_BUFFER_S = 10; // BOLA should never add artificial delays if buffer is less than MINIMUM_BUFFER_S.\nconst MINIMUM_BUFFER_PER_BITRATE_LEVEL_S = 2;\n// E.g. if there are 5 bitrates, BOLA switches to top bitrate at buffer = 10 + 5 * 2 = 20s.\n// If Schedule Controller does not allow buffer to reach that level, it can be achieved through the placeholder buffer level.\n\nconst PLACEHOLDER_BUFFER_DECAY = 0.99; // Make sure placeholder buffer does not stick around too long.\n\nfunction BolaRule(config) {\n\n config = config || {};\n const context = this.context;\n const log = Debug(context).getInstance().log;\n\n const dashMetrics = config.dashMetrics;\n const metricsModel = config.metricsModel;\n const mediaPlayerModel = config.mediaPlayerModel;\n const eventBus = EventBus(context).getInstance();\n\n let instance,\n bolaStateDict;\n\n function setup() {\n resetInitialSettings();\n\n eventBus.on(Events.BUFFER_EMPTY, onBufferEmpty, instance);\n eventBus.on(Events.PLAYBACK_SEEKING, onPlaybackSeeking, instance);\n eventBus.on(Events.PERIOD_SWITCH_STARTED, onPeriodSwitchStarted, instance);\n eventBus.on(Events.MEDIA_FRAGMENT_LOADED, onMediaFragmentLoaded, instance);\n eventBus.on(Events.METRIC_ADDED, onMetricAdded, instance);\n eventBus.on(Events.QUALITY_CHANGE_REQUESTED, onQualityChangeRequested, instance);\n eventBus.on(Events.FRAGMENT_LOADING_ABANDONED, onFragmentLoadingAbandoned, instance);\n }\n\n function utilitiesFromBitrates(bitrates) {\n return bitrates.map(b => Math.log(b));\n // no need to worry about offset, utilities will be offset (uniformly) anyway later\n }\n\n // NOTE: in live streaming, the real buffer level can drop below minimumBufferS, but bola should not stick to lowest bitrate by using a placeholder buffer level\n function calculateBolaParameters(stableBufferTime, bitrates, utilities) {\n const highestUtilityIndex = utilities.reduce((highestIndex, u, uIndex) => (u > utilities[highestIndex] ? uIndex : highestIndex), 0);\n\n if (highestUtilityIndex === 0) {\n // if highestUtilityIndex === 0, then always use lowest bitrate\n return null;\n }\n\n const bufferTime = Math.max(stableBufferTime, MINIMUM_BUFFER_S + MINIMUM_BUFFER_PER_BITRATE_LEVEL_S * bitrates.length);\n\n // TODO: Investigate if following can be better if utilities are not the default Math.log utilities.\n // If using Math.log utilities, we can choose Vp and gp to always prefer bitrates[0] at minimumBufferS and bitrates[max] at bufferTarget.\n // (Vp * (utility + gp) - bufferLevel) / bitrate has the maxima described when:\n // Vp * (utilities[0] + gp - 1) === minimumBufferS and Vp * (utilities[max] + gp - 1) === bufferTarget\n // giving:\n const gp = (utilities[highestUtilityIndex] - 1) / (bufferTime / MINIMUM_BUFFER_S - 1);\n const Vp = MINIMUM_BUFFER_S / gp;\n // note that expressions for gp and Vp assume utilities[0] === 1, which is true because of normalization\n\n return {gp: gp, Vp: Vp};\n }\n\n function getInitialBolaState(rulesContext) {\n const initialState = {};\n const mediaInfo = rulesContext.getMediaInfo();\n const bitrates = mediaInfo.bitrateList.map(b => b.bandwidth);\n let utilities = utilitiesFromBitrates(bitrates);\n utilities = utilities.map(u => u - utilities[0] + 1); // normalize\n const stableBufferTime = mediaPlayerModel.getStableBufferTime();\n const params = calculateBolaParameters(stableBufferTime, bitrates, utilities);\n\n if (!params) {\n // only happens when there is only one bitrate level\n initialState.state = BOLA_STATE_ONE_BITRATE;\n } else {\n initialState.state = BOLA_STATE_STARTUP;\n\n initialState.bitrates = bitrates;\n initialState.utilities = utilities;\n initialState.stableBufferTime = stableBufferTime;\n initialState.Vp = params.Vp;\n initialState.gp = params.gp;\n\n initialState.lastQuality = 0;\n clearBolaStateOnSeek(initialState);\n }\n\n return initialState;\n }\n\n function clearBolaStateOnSeek(bolaState) {\n bolaState.placeholderBuffer = 0;\n bolaState.mostAdvancedSegmentStart = NaN;\n bolaState.lastSegmentWasReplacement = false;\n bolaState.lastSegmentStart = NaN;\n bolaState.lastSegmentDurationS = NaN;\n bolaState.lastSegmentRequestTimeMs = NaN;\n bolaState.lastSegmentFinishTimeMs = NaN;\n }\n\n // If the buffer target is changed (can this happen mid-stream?), then adjust BOLA parameters accordingly.\n function checkBolaStateStableBufferTime(bolaState, mediaType) {\n const stableBufferTime = mediaPlayerModel.getStableBufferTime();\n if (bolaState.stableBufferTime !== stableBufferTime) {\n const params = calculateBolaParameters(stableBufferTime, bolaState.bitrates, bolaState.utilities);\n if (params.Vp !== bolaState.Vp || params.gp !== bolaState.gp) {\n // correct placeholder buffer using two criteria:\n // 1. do not change effective buffer level at effectiveBufferLevel === MINIMUM_BUFFER_S ( === Vp * gp )\n // 2. scale placeholder buffer by Vp subject to offset indicated in 1.\n\n const bufferLevel = dashMetrics.getCurrentBufferLevel(metricsModel.getReadOnlyMetricsFor(mediaType));\n let effectiveBufferLevel = bufferLevel + bolaState.placeholderBuffer;\n\n effectiveBufferLevel -= MINIMUM_BUFFER_S;\n effectiveBufferLevel *= params.Vp / bolaState.Vp;\n effectiveBufferLevel += MINIMUM_BUFFER_S;\n\n bolaState.stableBufferTime = stableBufferTime;\n bolaState.Vp = params.Vp;\n bolaState.gp = params.gp;\n bolaState.placeholderBuffer = Math.max(0, effectiveBufferLevel - bufferLevel);\n }\n }\n }\n\n function getBolaState(rulesContext) {\n const mediaType = rulesContext.getMediaType();\n let bolaState = bolaStateDict[mediaType];\n if (!bolaState) {\n bolaState = getInitialBolaState(rulesContext);\n bolaStateDict[mediaType] = bolaState;\n } else if (bolaState.state !== BOLA_STATE_ONE_BITRATE) {\n checkBolaStateStableBufferTime(bolaState, mediaType);\n }\n return bolaState;\n }\n\n // The core idea of BOLA.\n function getQualityFromBufferLevel(bolaState, bufferLevel) {\n const bitrateCount = bolaState.bitrates.length;\n let quality = NaN;\n let score = NaN;\n for (let i = 0; i < bitrateCount; ++i) {\n let s = (bolaState.Vp * (bolaState.utilities[i] + bolaState.gp) - bufferLevel) / bolaState.bitrates[i];\n if (isNaN(score) || s >= score) {\n score = s;\n quality = i;\n }\n }\n return quality;\n }\n\n // maximum buffer level which prefers to download at quality rather than wait\n function maxBufferLevelForQuality(bolaState, quality) {\n return bolaState.Vp * (bolaState.utilities[quality] + bolaState.gp);\n }\n\n // the minimum buffer level that would cause BOLA to choose quality rather than a lower bitrate\n function minBufferLevelForQuality(bolaState, quality) {\n const qBitrate = bolaState.bitrates[quality];\n const qUtility = bolaState.utilities[quality];\n\n let min = 0;\n for (let i = quality - 1; i >= 0; --i) {\n // for each bitrate less than bitrates[quality], BOLA should prefer quality (unless other bitrate has higher utility)\n if (bolaState.utilities[i] < bolaState.utilities[quality]) {\n const iBitrate = bolaState.bitrates[i];\n const iUtility = bolaState.utilities[i];\n\n const level = bolaState.Vp * (bolaState.gp + (qBitrate * iUtility - iBitrate * qUtility) / (qBitrate - iBitrate));\n min = Math.max(min, level); // we want min to be small but at least level(i) for all i\n }\n }\n return min;\n }\n\n /*\n * The placeholder buffer increases the effective buffer that is used to calculate the bitrate.\n * There are two main reasons we might want to increase the placeholder buffer:\n *\n * 1. When a segment finishes downloading, we would expect to get a call on getMaxIndex() regarding the quality for\n * the next segment. However, there might be a delay before the next call. E.g. when streaming live content, the\n * next segment might not be available yet. If the call to getMaxIndex() does happens after a delay, we don't\n * want the delay to change the BOLA decision - we only want to factor download time to decide on bitrate level.\n *\n * 2. It is possible to get a call to getMaxIndex() without having a segment download. The buffer target in dash.js\n * is different for top-quality segments and lower-quality segments. If getMaxIndex() returns a lower-than-top\n * quality, then the buffer controller might decide not to download a segment. When dash.js is ready for the next\n * segment, getMaxIndex() will be called again. We don't want this extra delay to factor in the bitrate decision.\n */\n function updatePlaceholderBuffer(bolaState, mediaType) {\n const nowMs = Date.now();\n\n if (!isNaN(bolaState.lastSegmentFinishTimeMs)) {\n // compensate for non-bandwidth-derived delays, e.g., live streaming availability, buffer controller\n const delay = 0.001 * (nowMs - bolaState.lastSegmentFinishTimeMs);\n bolaState.placeholderBuffer += Math.max(0, delay);\n } else if (!isNaN(bolaState.lastCallTimeMs)) {\n // no download after last call, compensate for delay between calls\n const delay = 0.001 * (nowMs - bolaState.lastCallTimeMs);\n bolaState.placeholderBuffer += Math.max(0, delay);\n }\n\n bolaState.lastCallTimeMs = nowMs;\n bolaState.lastSegmentStart = NaN;\n bolaState.lastSegmentRequestTimeMs = NaN;\n bolaState.lastSegmentFinishTimeMs = NaN;\n\n checkBolaStateStableBufferTime(bolaState, mediaType);\n }\n\n function onBufferEmpty() {\n // if we rebuffer, we don't want the placeholder buffer to artificially raise BOLA quality\n for (const mediaType in bolaStateDict) {\n if (bolaStateDict.hasOwnProperty(mediaType) && bolaStateDict[mediaType].state === BOLA_STATE_STEADY) {\n bolaStateDict[mediaType].placeholderBuffer = 0;\n }\n }\n }\n\n function onPlaybackSeeking() {\n // TODO: 1. Verify what happens if we seek mid-fragment.\n // TODO: 2. If e.g. we have 10s fragments and seek, we might want to download the first fragment at a lower quality to restart playback quickly.\n for (const mediaType in bolaStateDict) {\n if (bolaStateDict.hasOwnProperty(mediaType)) {\n const bolaState = bolaStateDict[mediaType];\n if (bolaState.state !== BOLA_STATE_ONE_BITRATE) {\n bolaState.state = BOLA_STATE_STARTUP; // TODO: BOLA_STATE_SEEK?\n clearBolaStateOnSeek(bolaState);\n }\n }\n }\n }\n\n function onPeriodSwitchStarted() {\n // TODO: does this have to be handled here?\n }\n\n function onMediaFragmentLoaded(e) {\n if (e && e.chunk && e.chunk.mediaInfo) {\n const bolaState = bolaStateDict[e.chunk.mediaInfo.type];\n if (bolaState && bolaState.state !== BOLA_STATE_ONE_BITRATE) {\n const start = e.chunk.start;\n if (isNaN(bolaState.mostAdvancedSegmentStart) || start > bolaState.mostAdvancedSegmentStart) {\n bolaState.mostAdvancedSegmentStart = start;\n bolaState.lastSegmentWasReplacement = false;\n } else {\n bolaState.lastSegmentWasReplacement = true;\n }\n\n bolaState.lastSegmentStart = start;\n bolaState.lastSegmentDurationS = e.chunk.duration;\n bolaState.lastQuality = e.chunk.quality;\n\n checkNewSegment(bolaState, e.chunk.mediaInfo.type);\n }\n }\n }\n\n function onMetricAdded(e) {\n if (e && e.metric === MetricsConstants.HTTP_REQUEST && e.value && e.value.type === HTTPRequest.MEDIA_SEGMENT_TYPE && e.value.trace && e.value.trace.length) {\n const bolaState = bolaStateDict[e.mediaType];\n if (bolaState && bolaState.state !== BOLA_STATE_ONE_BITRATE) {\n bolaState.lastSegmentRequestTimeMs = e.value.trequest.getTime();\n bolaState.lastSegmentFinishTimeMs = e.value._tfinish.getTime();\n\n checkNewSegment(bolaState, e.mediaType);\n }\n }\n }\n\n /*\n * When a new segment is downloaded, we get two notifications: onMediaFragmentLoaded() and onMetricAdded(). It is\n * possible that the quality for the downloaded segment was lower (not higher) than the quality indicated by BOLA.\n * This might happen because of other rules such as the DroppedFramesRule. When this happens, we trim the\n * placeholder buffer to make BOLA more stable. This mechanism also avoids inflating the buffer when BOLA itself\n * decides not to increase the quality to avoid oscillations.\n *\n * We should also check for replacement segments (fast switching). In this case, a segment is downloaded but does\n * not grow the actual buffer. Fast switching might cause the buffer to deplete, causing BOLA to drop the bitrate.\n * We avoid this by growing the placeholder buffer.\n */\n function checkNewSegment(bolaState, mediaType) {\n if (!isNaN(bolaState.lastSegmentStart) && !isNaN(bolaState.lastSegmentRequestTimeMs) && !isNaN(bolaState.placeholderBuffer)) {\n bolaState.placeholderBuffer *= PLACEHOLDER_BUFFER_DECAY;\n\n // Find what maximum buffer corresponding to last segment was, and ensure placeholder is not relatively larger.\n if (!isNaN(bolaState.lastSegmentFinishTimeMs)) {\n const bufferLevel = dashMetrics.getCurrentBufferLevel(metricsModel.getReadOnlyMetricsFor(mediaType));\n const bufferAtLastSegmentRequest = bufferLevel + 0.001 * (bolaState.lastSegmentFinishTimeMs - bolaState.lastSegmentRequestTimeMs); // estimate\n const maxEffectiveBufferForLastSegment = maxBufferLevelForQuality(bolaState, bolaState.lastQuality);\n const maxPlaceholderBuffer = Math.max(0, maxEffectiveBufferForLastSegment - bufferAtLastSegmentRequest);\n bolaState.placeholderBuffer = Math.min(maxPlaceholderBuffer, bolaState.placeholderBuffer);\n }\n\n // then see if we should grow placeholder buffer\n\n if (bolaState.lastSegmentWasReplacement && !isNaN(bolaState.lastSegmentDurationS)) {\n // compensate for segments that were downloaded but did not grow the buffer\n bolaState.placeholderBuffer += bolaState.lastSegmentDurationS;\n }\n\n bolaState.lastSegmentStart = NaN;\n bolaState.lastSegmentRequestTimeMs = NaN;\n }\n }\n\n function onQualityChangeRequested(e) {\n // Useful to store change requests when abandoning a download.\n if (e) {\n const bolaState = bolaStateDict[e.mediaType];\n if (bolaState && bolaState.state !== BOLA_STATE_ONE_BITRATE) {\n bolaState.abrQuality = e.newQuality;\n }\n }\n }\n\n function onFragmentLoadingAbandoned(e) {\n if (e) {\n const bolaState = bolaStateDict[e.mediaType];\n if (bolaState && bolaState.state !== BOLA_STATE_ONE_BITRATE) {\n // deflate placeholderBuffer - note that we want to be conservative when abandoning\n const bufferLevel = dashMetrics.getCurrentBufferLevel(metricsModel.getReadOnlyMetricsFor(e.mediaType));\n let wantEffectiveBufferLevel;\n if (bolaState.abrQuality > 0) {\n // deflate to point where BOLA just chooses newQuality over newQuality-1\n wantEffectiveBufferLevel = minBufferLevelForQuality(bolaState, bolaState.abrQuality);\n } else {\n wantEffectiveBufferLevel = MINIMUM_BUFFER_S;\n }\n const maxPlaceholderBuffer = Math.max(0, wantEffectiveBufferLevel - bufferLevel);\n bolaState.placeholderBuffer = Math.min(bolaState.placeholderBuffer, maxPlaceholderBuffer);\n }\n }\n }\n\n function getMaxIndex(rulesContext) {\n const mediaInfo = rulesContext.getMediaInfo();\n const mediaType = rulesContext.getMediaType();\n const metrics = metricsModel.getReadOnlyMetricsFor(mediaType);\n const streamProcessor = rulesContext.getStreamProcessor();\n const streamInfo = rulesContext.getStreamInfo();\n const abrController = rulesContext.getAbrController();\n const throughputHistory = abrController.getThroughputHistory();\n const streamId = streamInfo ? streamInfo.id : null;\n const isDynamic = streamInfo && streamInfo.manifestInfo && streamInfo.manifestInfo.isDynamic;\n const useBufferOccupancyABR = rulesContext.useBufferOccupancyABR();\n const switchRequest = SwitchRequest(context).create();\n switchRequest.reason = switchRequest.reason || {};\n\n if (!useBufferOccupancyABR) {\n return switchRequest;\n }\n\n streamProcessor.getScheduleController().setTimeToLoadDelay(0);\n\n const bolaState = getBolaState(rulesContext);\n\n if (bolaState.state === BOLA_STATE_ONE_BITRATE) {\n // shouldn't even have been called\n log('BOLA ABR rule invoked for media type \\'' + mediaType + '\\' with only one bitrate.');\n return switchRequest;\n }\n\n const bufferLevel = dashMetrics.getCurrentBufferLevel(metrics);\n const throughput = throughputHistory.getAverageThroughput(mediaType, isDynamic);\n const safeThroughput = throughputHistory.getSafeAverageThroughput(mediaType, isDynamic);\n const latency = throughputHistory.getAverageLatency(mediaType);\n let quality;\n\n switchRequest.reason.state = bolaState.state;\n switchRequest.reason.throughput = throughput;\n switchRequest.reason.latency = latency;\n\n if (isNaN(throughput)) { // isNaN(throughput) === isNaN(safeThroughput) === isNaN(latency)\n // still starting up - not enough information\n return switchRequest;\n }\n\n switch (bolaState.state) {\n case BOLA_STATE_STARTUP:\n quality = abrController.getQualityForBitrate(mediaInfo, safeThroughput, latency);\n\n switchRequest.quality = quality;\n switchRequest.reason.throughput = safeThroughput;\n\n bolaState.placeholderBuffer = Math.max(0, minBufferLevelForQuality(bolaState, quality) - bufferLevel);\n bolaState.lastQuality = quality;\n\n if (!isNaN(bolaState.lastSegmentDurationS) && bufferLevel >= bolaState.lastSegmentDurationS) {\n bolaState.state = BOLA_STATE_STEADY;\n }\n\n break; // BOLA_STATE_STARTUP\n\n case BOLA_STATE_STEADY:\n\n // NB: The placeholder buffer is added to bufferLevel to come up with a bitrate.\n // This might lead BOLA to be too optimistic and to choose a bitrate that would lead to rebuffering -\n // if the real buffer bufferLevel runs out, the placeholder buffer cannot prevent rebuffering.\n // However, the InsufficientBufferRule takes care of this scenario.\n\n updatePlaceholderBuffer(bolaState, mediaType);\n\n quality = getQualityFromBufferLevel(bolaState, bufferLevel + bolaState.placeholderBuffer);\n\n // we want to avoid oscillations\n // We implement the \"BOLA-O\" variant: when network bandwidth lies between two encoded bitrate levels, stick to the lowest level.\n const qualityForThroughput = abrController.getQualityForBitrate(mediaInfo, safeThroughput, latency);\n if (quality > bolaState.lastQuality && quality > qualityForThroughput) {\n // only intervene if we are trying to *increase* quality to an *unsustainable* level\n // we are only avoid oscillations - do not drop below last quality\n\n quality = Math.max(qualityForThroughput, bolaState.lastQuality);\n }\n\n // We do not want to overfill buffer with low quality chunks.\n // Note that there will be no delay if buffer level is below MINIMUM_BUFFER_S, probably even with some margin higher than MINIMUM_BUFFER_S.\n let delayS = Math.max(0, bufferLevel + bolaState.placeholderBuffer - maxBufferLevelForQuality(bolaState, quality));\n\n // First reduce placeholder buffer, then tell schedule controller to pause.\n if (delayS <= bolaState.placeholderBuffer) {\n bolaState.placeholderBuffer -= delayS;\n delayS = 0;\n } else {\n delayS -= bolaState.placeholderBuffer;\n bolaState.placeholderBuffer = 0;\n\n if (quality < abrController.getTopQualityIndexFor(mediaType, streamId)) {\n // At top quality, allow schedule controller to decide how far to fill buffer.\n streamProcessor.getScheduleController().setTimeToLoadDelay(1000 * delayS);\n } else {\n delayS = 0;\n }\n }\n\n switchRequest.quality = quality;\n switchRequest.reason.throughput = throughput;\n switchRequest.reason.latency = latency;\n switchRequest.reason.bufferLevel = bufferLevel;\n switchRequest.reason.placeholderBuffer = bolaState.placeholderBuffer;\n switchRequest.reason.delay = delayS;\n\n bolaState.lastQuality = quality;\n // keep bolaState.state === BOLA_STATE_STEADY\n\n break; // BOLA_STATE_STEADY\n\n default:\n log('BOLA ABR rule invoked in bad state.');\n // should not arrive here, try to recover\n switchRequest.quality = abrController.getQualityForBitrate(mediaInfo, safeThroughput, latency);\n switchRequest.reason.state = bolaState.state;\n switchRequest.reason.throughput = safeThroughput;\n switchRequest.reason.latency = latency;\n bolaState.state = BOLA_STATE_STARTUP;\n clearBolaStateOnSeek(bolaState);\n }\n\n return switchRequest;\n }\n\n function resetInitialSettings() {\n bolaStateDict = {};\n }\n\n function reset() {\n resetInitialSettings();\n\n eventBus.off(Events.BUFFER_EMPTY, onBufferEmpty, instance);\n eventBus.off(Events.PLAYBACK_SEEKING, onPlaybackSeeking, instance);\n eventBus.off(Events.PERIOD_SWITCH_STARTED, onPeriodSwitchStarted, instance);\n eventBus.off(Events.MEDIA_FRAGMENT_LOADED, onMediaFragmentLoaded, instance);\n eventBus.off(Events.METRIC_ADDED, onMetricAdded, instance);\n eventBus.off(Events.QUALITY_CHANGE_REQUESTED, onQualityChangeRequested, instance);\n eventBus.off(Events.FRAGMENT_LOADING_ABANDONED, onFragmentLoadingAbandoned, instance);\n }\n\n instance = {\n getMaxIndex: getMaxIndex,\n reset: reset\n };\n\n setup();\n return instance;\n}\n\nBolaRule.__dashjs_factory_name = 'BolaRule';\nexport default FactoryMaker.getClassFactory(BolaRule);\n", "\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport SwitchRequest from '../SwitchRequest.js';\nimport Debug from '../../../core/Debug';\n\nfunction DroppedFramesRule() {\n\n const context = this.context;\n const log = Debug(context).getInstance().log;\n\n const DROPPED_PERCENTAGE_FORBID = 0.15;\n const GOOD_SAMPLE_SIZE = 375; //Don't apply the rule until this many frames have been rendered(and counted under those indices).\n\n\n function getMaxIndex(rulesContext) {\n const droppedFramesHistory = rulesContext.getDroppedFramesHistory();\n if (droppedFramesHistory) {\n const dfh = droppedFramesHistory.getFrameHistory();\n let droppedFrames = 0;\n let totalFrames = 0;\n let maxIndex = SwitchRequest.NO_CHANGE;\n for (let i = 1; i < dfh.length; i++) { //No point in measuring dropped frames for the zeroeth index.\n if (dfh[i]) {\n droppedFrames = dfh[i].droppedVideoFrames;\n totalFrames = dfh[i].totalVideoFrames;\n\n if (totalFrames > GOOD_SAMPLE_SIZE && droppedFrames / totalFrames > DROPPED_PERCENTAGE_FORBID) {\n maxIndex = i - 1;\n log('DroppedFramesRule, index: ' + maxIndex + ' Dropped Frames: ' + droppedFrames + ' Total Frames: ' + totalFrames);\n break;\n }\n }\n }\n return SwitchRequest(context).create(maxIndex, {droppedFrames: droppedFrames});\n }\n\n return SwitchRequest(context).create();\n }\n\n return {\n getMaxIndex: getMaxIndex\n };\n}\n\nDroppedFramesRule.__dashjs_factory_name = 'DroppedFramesRule';\nexport default FactoryMaker.getClassFactory(DroppedFramesRule);", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport BufferController from '../../controllers/BufferController';\nimport EventBus from '../../../core/EventBus';\nimport Events from '../../../core/events/Events';\nimport FactoryMaker from '../../../core/FactoryMaker';\nimport Debug from '../../../core/Debug';\nimport SwitchRequest from '../SwitchRequest.js';\n\nfunction InsufficientBufferRule(config) {\n\n const INSUFFICIENT_BUFFER_SAFETY_FACTOR = 0.5;\n\n const context = this.context;\n const log = Debug(context).getInstance().log;\n\n const eventBus = EventBus(context).getInstance();\n const metricsModel = config.metricsModel;\n const dashMetrics = config.dashMetrics;\n\n let instance,\n bufferStateDict;\n\n function setup() {\n resetInitialSettings();\n eventBus.on(Events.PLAYBACK_SEEKING, onPlaybackSeeking, instance);\n }\n\n function checkConfig() {\n if (!metricsModel || !metricsModel.hasOwnProperty('getReadOnlyMetricsFor') || !dashMetrics || !dashMetrics.hasOwnProperty('getCurrentBufferLevel')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n /*\n * InsufficientBufferRule does not kick in before the first BUFFER_LOADED event happens. This is reset at every seek.\n *\n * If a BUFFER_EMPTY event happens, then InsufficientBufferRule returns switchRequest.quality=0 until BUFFER_LOADED happens.\n *\n * Otherwise InsufficientBufferRule gives a maximum bitrate depending on throughput and bufferLevel such that\n * a whole fragment can be downloaded before the buffer runs out, subject to a conservative safety factor of 0.5.\n * If the bufferLevel is low, then InsufficientBufferRule avoids rebuffering risk.\n * If the bufferLevel is high, then InsufficientBufferRule give a high MaxIndex allowing other rules to take over.\n */\n function getMaxIndex (rulesContext) {\n const switchRequest = SwitchRequest(context).create();\n\n if (!rulesContext || !rulesContext.hasOwnProperty('getMediaType')) {\n return switchRequest;\n }\n\n checkConfig();\n\n const mediaType = rulesContext.getMediaType();\n const metrics = metricsModel.getReadOnlyMetricsFor(mediaType);\n const lastBufferStateVO = (metrics.BufferState.length > 0) ? metrics.BufferState[metrics.BufferState.length - 1] : null;\n const representationInfo = rulesContext.getRepresentationInfo();\n const fragmentDuration = representationInfo.fragmentDuration;\n\n // Don't ask for a bitrate change if there is not info about buffer state or if fragmentDuration is not defined\n if (!lastBufferStateVO || !wasFirstBufferLoadedEventTriggered(mediaType, lastBufferStateVO) || !fragmentDuration) {\n return switchRequest;\n }\n\n if (lastBufferStateVO.state === BufferController.BUFFER_EMPTY) {\n log('Switch to index 0; buffer is empty.');\n switchRequest.quality = 0;\n switchRequest.reason = 'InsufficientBufferRule: Buffer is empty';\n } else {\n const mediaInfo = rulesContext.getMediaInfo();\n const abrController = rulesContext.getAbrController();\n const throughputHistory = abrController.getThroughputHistory();\n\n const bufferLevel = dashMetrics.getCurrentBufferLevel(metrics);\n const throughput = throughputHistory.getAverageThroughput(mediaType);\n const latency = throughputHistory.getAverageLatency(mediaType);\n const bitrate = throughput * (bufferLevel / fragmentDuration) * INSUFFICIENT_BUFFER_SAFETY_FACTOR;\n\n switchRequest.quality = abrController.getQualityForBitrate(mediaInfo, bitrate, latency);\n switchRequest.reason = 'InsufficientBufferRule: being conservative to avoid immediate rebuffering';\n }\n\n return switchRequest;\n }\n\n function wasFirstBufferLoadedEventTriggered(mediaType, currentBufferState) {\n bufferStateDict[mediaType] = bufferStateDict[mediaType] || {};\n\n let wasTriggered = false;\n if (bufferStateDict[mediaType].firstBufferLoadedEvent) {\n wasTriggered = true;\n } else if (currentBufferState && currentBufferState.state === BufferController.BUFFER_LOADED) {\n bufferStateDict[mediaType].firstBufferLoadedEvent = true;\n wasTriggered = true;\n }\n return wasTriggered;\n }\n\n function resetInitialSettings() {\n bufferStateDict = {};\n }\n\n function onPlaybackSeeking() {\n resetInitialSettings();\n }\n\n function reset() {\n resetInitialSettings();\n eventBus.off(Events.PLAYBACK_SEEKING, onPlaybackSeeking, instance);\n }\n\n instance = {\n getMaxIndex: getMaxIndex,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nInsufficientBufferRule.__dashjs_factory_name = 'InsufficientBufferRule';\nexport default FactoryMaker.getClassFactory(InsufficientBufferRule);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport BufferController from '../../controllers/BufferController';\nimport EventBus from '../../../core/EventBus';\nimport Events from '../../../core/events/Events';\nimport FactoryMaker from '../../../core/FactoryMaker';\nimport Debug from '../../../core/Debug';\nimport SwitchRequest from '../SwitchRequest.js';\n\nfunction InsufficientBufferRule(config) {\n\n config = config || {};\n const INSUFFICIENT_BUFFER_SAFETY_FACTOR = 0.5;\n\n const context = this.context;\n const log = Debug(context).getInstance().log;\n\n const eventBus = EventBus(context).getInstance();\n const metricsModel = config.metricsModel;\n const dashMetrics = config.dashMetrics;\n\n let instance,\n bufferStateDict;\n\n function setup() {\n resetInitialSettings();\n eventBus.on(Events.PLAYBACK_SEEKING, onPlaybackSeeking, instance);\n }\n\n function checkConfig() {\n if (!metricsModel || !metricsModel.hasOwnProperty('getReadOnlyMetricsFor') || !dashMetrics || !dashMetrics.hasOwnProperty('getCurrentBufferLevel')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n /*\n * InsufficientBufferRule does not kick in before the first BUFFER_LOADED event happens. This is reset at every seek.\n *\n * If a BUFFER_EMPTY event happens, then InsufficientBufferRule returns switchRequest.quality=0 until BUFFER_LOADED happens.\n *\n * Otherwise InsufficientBufferRule gives a maximum bitrate depending on throughput and bufferLevel such that\n * a whole fragment can be downloaded before the buffer runs out, subject to a conservative safety factor of 0.5.\n * If the bufferLevel is low, then InsufficientBufferRule avoids rebuffering risk.\n * If the bufferLevel is high, then InsufficientBufferRule give a high MaxIndex allowing other rules to take over.\n */\n function getMaxIndex (rulesContext) {\n const switchRequest = SwitchRequest(context).create();\n\n if (!rulesContext || !rulesContext.hasOwnProperty('getMediaType')) {\n return switchRequest;\n }\n\n checkConfig();\n\n const mediaType = rulesContext.getMediaType();\n const metrics = metricsModel.getReadOnlyMetricsFor(mediaType);\n const lastBufferStateVO = (metrics.BufferState.length > 0) ? metrics.BufferState[metrics.BufferState.length - 1] : null;\n const representationInfo = rulesContext.getRepresentationInfo();\n const fragmentDuration = representationInfo.fragmentDuration;\n\n // Don't ask for a bitrate change if there is not info about buffer state or if fragmentDuration is not defined\n if (!lastBufferStateVO || !wasFirstBufferLoadedEventTriggered(mediaType, lastBufferStateVO) || !fragmentDuration) {\n return switchRequest;\n }\n\n if (lastBufferStateVO.state === BufferController.BUFFER_EMPTY) {\n log('Switch to index 0; buffer is empty.');\n switchRequest.quality = 0;\n switchRequest.reason = 'InsufficientBufferRule: Buffer is empty';\n } else {\n const mediaInfo = rulesContext.getMediaInfo();\n const abrController = rulesContext.getAbrController();\n const throughputHistory = abrController.getThroughputHistory();\n\n const bufferLevel = dashMetrics.getCurrentBufferLevel(metrics);\n const throughput = throughputHistory.getAverageThroughput(mediaType);\n const latency = throughputHistory.getAverageLatency(mediaType);\n const bitrate = throughput * (bufferLevel / fragmentDuration) * INSUFFICIENT_BUFFER_SAFETY_FACTOR;\n\n switchRequest.quality = abrController.getQualityForBitrate(mediaInfo, bitrate, latency);\n switchRequest.reason = 'InsufficientBufferRule: being conservative to avoid immediate rebuffering';\n }\n\n return switchRequest;\n }\n\n function wasFirstBufferLoadedEventTriggered(mediaType, currentBufferState) {\n bufferStateDict[mediaType] = bufferStateDict[mediaType] || {};\n\n let wasTriggered = false;\n if (bufferStateDict[mediaType].firstBufferLoadedEvent) {\n wasTriggered = true;\n } else if (currentBufferState && currentBufferState.state === BufferController.BUFFER_LOADED) {\n bufferStateDict[mediaType].firstBufferLoadedEvent = true;\n wasTriggered = true;\n }\n return wasTriggered;\n }\n\n function resetInitialSettings() {\n bufferStateDict = {};\n }\n\n function onPlaybackSeeking() {\n resetInitialSettings();\n }\n\n function reset() {\n resetInitialSettings();\n eventBus.off(Events.PLAYBACK_SEEKING, onPlaybackSeeking, instance);\n }\n\n instance = {\n getMaxIndex: getMaxIndex,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nInsufficientBufferRule.__dashjs_factory_name = 'InsufficientBufferRule';\nexport default FactoryMaker.getClassFactory(InsufficientBufferRule);\n", "\nimport FactoryMaker from '../../../core/FactoryMaker.js';\nimport Debug from '../../../core/Debug';\nimport SwitchRequest from '../SwitchRequest.js';\n\nfunction SwitchHistoryRule() {\n\n const context = this.context;\n const log = Debug(context).getInstance().log;\n\n //MAX_SWITCH is the number of drops made. It doesn't consider the size of the drop.\n const MAX_SWITCH = 0.075;\n\n //Before this number of switch requests(no switch or actual), don't apply the rule.\n //must be < SwitchRequestHistory SWITCH_REQUEST_HISTORY_DEPTH to enable rule\n const SAMPLE_SIZE = 6;\n\n\n function getMaxIndex(rulesContext) {\n const switchRequestHistory = rulesContext ? rulesContext.getSwitchHistory() : null;\n const switchRequests = switchRequestHistory ? switchRequestHistory.getSwitchRequests() : [];\n let drops = 0;\n let noDrops = 0;\n let dropSize = 0;\n const switchRequest = SwitchRequest(context).create();\n\n for (let i = 0; i < switchRequests.length; i++) {\n if (switchRequests[i] !== undefined) {\n drops += switchRequests[i].drops;\n noDrops += switchRequests[i].noDrops;\n dropSize += switchRequests[i].dropSize;\n\n if (drops + noDrops >= SAMPLE_SIZE && (drops / noDrops > MAX_SWITCH)) {\n switchRequest.quality = (i > 0 && switchRequests[i].drops > 0) ? i - 1 : i;\n switchRequest.reason = {index: switchRequest.quality, drops: drops, noDrops: noDrops, dropSize: dropSize};\n log('Switch history rule index: ' + switchRequest.quality + ' samples: ' + (drops + noDrops) + ' drops: ' + drops);\n break;\n }\n }\n }\n\n return switchRequest;\n }\n\n return {\n getMaxIndex: getMaxIndex\n };\n}\n\n\nSwitchHistoryRule.__dashjs_factory_name = 'SwitchHistoryRule';\nexport default FactoryMaker.getClassFactory(SwitchHistoryRule);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport BufferController from '../../controllers/BufferController';\nimport AbrController from '../../controllers/AbrController';\nimport FactoryMaker from '../../../core/FactoryMaker';\nimport Debug from '../../../core/Debug';\nimport SwitchRequest from '../SwitchRequest.js';\n\nfunction ThroughputRule(config) {\n\n const context = this.context;\n const log = Debug(context).getInstance().log;\n\n const metricsModel = config.metricsModel;\n\n function checkConfig() {\n if (!metricsModel || !metricsModel.hasOwnProperty('getReadOnlyMetricsFor')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n function getMaxIndex(rulesContext) {\n const switchRequest = SwitchRequest(context).create();\n\n if (!rulesContext || !rulesContext.hasOwnProperty('getMediaInfo') || !rulesContext.hasOwnProperty('getMediaType') || !rulesContext.hasOwnProperty('useBufferOccupancyABR') ||\n !rulesContext.hasOwnProperty('getAbrController') || !rulesContext.hasOwnProperty('getStreamProcessor')) {\n return switchRequest;\n }\n\n checkConfig();\n\n const mediaInfo = rulesContext.getMediaInfo();\n const mediaType = rulesContext.getMediaType();\n const metrics = metricsModel.getReadOnlyMetricsFor(mediaType);\n const streamProcessor = rulesContext.getStreamProcessor();\n const abrController = rulesContext.getAbrController();\n const streamInfo = rulesContext.getStreamInfo();\n const isDynamic = streamInfo && streamInfo.manifestInfo ? streamInfo.manifestInfo.isDynamic : null;\n const throughputHistory = abrController.getThroughputHistory();\n const throughput = throughputHistory.getSafeAverageThroughput(mediaType, isDynamic);\n const latency = throughputHistory.getAverageLatency(mediaType);\n const bufferStateVO = (metrics.BufferState.length > 0) ? metrics.BufferState[metrics.BufferState.length - 1] : null;\n const useBufferOccupancyABR = rulesContext.useBufferOccupancyABR();\n\n if (!metrics || isNaN(throughput) || !bufferStateVO || useBufferOccupancyABR) {\n return switchRequest;\n }\n\n if (abrController.getAbandonmentStateFor(mediaType) !== AbrController.ABANDON_LOAD) {\n if (bufferStateVO.state === BufferController.BUFFER_LOADED || isDynamic) {\n switchRequest.quality = abrController.getQualityForBitrate(mediaInfo, throughput, latency);\n streamProcessor.getScheduleController().setTimeToLoadDelay(0);\n log('ThroughputRule requesting switch to index: ', switchRequest.quality, 'type: ',mediaType, 'Average throughput', Math.round(throughput), 'kbps');\n switchRequest.reason = {throughput: throughput, latency: latency};\n }\n }\n\n return switchRequest;\n }\n\n function reset() {\n // no persistent information to reset\n }\n\n const instance = {\n getMaxIndex: getMaxIndex,\n reset: reset\n };\n\n return instance;\n}\n\nThroughputRule.__dashjs_factory_name = 'ThroughputRule';\nexport default FactoryMaker.getClassFactory(ThroughputRule);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../../constants/Constants';\nimport FactoryMaker from '../../../core/FactoryMaker';\n\nfunction BufferLevelRule(config) {\n\n const dashMetrics = config.dashMetrics;\n const metricsModel = config.metricsModel;\n const mediaPlayerModel = config.mediaPlayerModel;\n const textController = config.textController;\n const abrController = config.abrController;\n\n function setup() {\n }\n\n function execute(streamProcessor, type, videoTrackPresent) {\n const bufferLevel = dashMetrics.getCurrentBufferLevel(metricsModel.getReadOnlyMetricsFor(type));\n return bufferLevel < getBufferTarget(streamProcessor, type, videoTrackPresent);\n }\n\n function getBufferTarget(streamProcessor, type, videoTrackPresent) {\n let bufferTarget = NaN;\n const representationInfo = streamProcessor.getCurrentRepresentationInfo();\n if (type === Constants.FRAGMENTED_TEXT) {\n bufferTarget = textController.getAllTracksAreDisabled() ? 0 : representationInfo.fragmentDuration;\n } else if (type === Constants.AUDIO && videoTrackPresent) {\n const videoBufferLevel = dashMetrics.getCurrentBufferLevel(metricsModel.getReadOnlyMetricsFor(Constants.VIDEO));\n if (isNaN(representationInfo.fragmentDuration)) {\n bufferTarget = videoBufferLevel;\n } else {\n bufferTarget = Math.max(videoBufferLevel, representationInfo.fragmentDuration);\n }\n // console.log('videoBufferLevel - ' + videoBufferLevel + ' target : ' + bufferTarget);\n } else {\n const streamInfo = representationInfo.mediaInfo.streamInfo;\n if (abrController.isPlayingAtTopQuality(streamInfo)) {\n const isLongFormContent = streamInfo.manifestInfo.duration >= mediaPlayerModel.getLongFormContentDurationThreshold();\n bufferTarget = isLongFormContent ? mediaPlayerModel.getBufferTimeAtTopQualityLongForm() : mediaPlayerModel.getBufferTimeAtTopQuality();\n }else {\n bufferTarget = mediaPlayerModel.getStableBufferTime();\n }\n }\n\n return bufferTarget;\n }\n\n const instance = {\n execute: execute,\n getBufferTarget: getBufferTarget\n };\n\n setup();\n return instance;\n}\n\nBufferLevelRule.__dashjs_factory_name = 'BufferLevelRule';\nexport default FactoryMaker.getClassFactory(BufferLevelRule);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../../constants/Constants';\nimport Debug from '../../../core/Debug';\nimport FactoryMaker from '../../../core/FactoryMaker';\n\nfunction NextFragmentRequestRule(config) {\n\n const context = this.context;\n const log = Debug(context).getInstance().log;\n const adapter = config.adapter;\n const sourceBufferController = config.sourceBufferController;\n const textController = config.textController;\n\n function execute(streamProcessor, requestToReplace) {\n\n const representationInfo = streamProcessor.getCurrentRepresentationInfo();\n const mediaInfo = representationInfo.mediaInfo;\n const mediaType = mediaInfo.type;\n const scheduleController = streamProcessor.getScheduleController();\n const seekTarget = scheduleController.getSeekTarget();\n const hasSeekTarget = !isNaN(seekTarget);\n const buffer = streamProcessor.getBuffer();\n\n let time = hasSeekTarget ? seekTarget : adapter.getIndexHandlerTime(streamProcessor);\n\n if (isNaN(time) || (mediaType === Constants.FRAGMENTED_TEXT && textController.getAllTracksAreDisabled())) {\n return null;\n }\n\n if (hasSeekTarget) {\n scheduleController.setSeekTarget(NaN);\n }\n\n /**\n * This is critical for IE/Safari/EDGE\n * */\n if (buffer) {\n const range = sourceBufferController.getBufferRange(buffer, time);\n if (range !== null) {\n log('Prior to making a request for time, NextFragmentRequestRule is aligning index handler\\'s currentTime with bufferedRange.end.', time, ' was changed to ', range.end);\n time = range.end;\n }\n }\n\n let request;\n if (requestToReplace) {\n // log('requestToReplace :' + requestToReplace.url);\n time = requestToReplace.startTime + (requestToReplace.duration / 2);\n request = adapter.getFragmentRequestForTime(streamProcessor, representationInfo, time, {\n timeThreshold: 0,\n ignoreIsFinished: true\n });\n } else {\n request = adapter.getFragmentRequestForTime(streamProcessor, representationInfo, time, {\n keepIdx: !hasSeekTarget\n });\n while ( streamProcessor.getFragmentModel().isFragmentLoaded(request)) {\n // loop until we found not loaded fragment, or no fragment\n request = adapter.getNextFragmentRequest(streamProcessor, representationInfo);\n }\n if (request) {\n adapter.setIndexHandlerTime(streamProcessor, request.startTime + request.duration);\n request.delayLoadingTime = new Date().getTime() + scheduleController.getTimeToLoadDelay();\n scheduleController.setTimeToLoadDelay(0);\n }\n }\n\n /*\n if (request) {\n log('Return request :' + request.url);\n } else {\n log('no request');\n }*/\n\n return request;\n }\n\n const instance = {\n execute: execute\n };\n\n return instance;\n}\n\nNextFragmentRequestRule.__dashjs_factory_name = 'NextFragmentRequestRule';\nexport default FactoryMaker.getClassFactory(NextFragmentRequestRule);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport BufferController from '../../controllers/BufferController';\nimport AbrController from '../../controllers/AbrController';\nimport FactoryMaker from '../../../core/FactoryMaker';\nimport Debug from '../../../core/Debug';\nimport SwitchRequest from '../SwitchRequest.js';\n\nfunction ThroughputRule(config) {\n\n config = config || {};\n const context = this.context;\n const log = Debug(context).getInstance().log;\n\n const metricsModel = config.metricsModel;\n\n function checkConfig() {\n if (!metricsModel || !metricsModel.hasOwnProperty('getReadOnlyMetricsFor')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n function getMaxIndex(rulesContext) {\n const switchRequest = SwitchRequest(context).create();\n\n if (!rulesContext || !rulesContext.hasOwnProperty('getMediaInfo') || !rulesContext.hasOwnProperty('getMediaType') || !rulesContext.hasOwnProperty('useBufferOccupancyABR') ||\n !rulesContext.hasOwnProperty('getAbrController') || !rulesContext.hasOwnProperty('getStreamProcessor')) {\n return switchRequest;\n }\n\n checkConfig();\n\n const mediaInfo = rulesContext.getMediaInfo();\n const mediaType = rulesContext.getMediaType();\n const metrics = metricsModel.getReadOnlyMetricsFor(mediaType);\n const streamProcessor = rulesContext.getStreamProcessor();\n const abrController = rulesContext.getAbrController();\n const streamInfo = rulesContext.getStreamInfo();\n const isDynamic = streamInfo && streamInfo.manifestInfo ? streamInfo.manifestInfo.isDynamic : null;\n const throughputHistory = abrController.getThroughputHistory();\n const throughput = throughputHistory.getSafeAverageThroughput(mediaType, isDynamic);\n const latency = throughputHistory.getAverageLatency(mediaType);\n const bufferStateVO = (metrics.BufferState.length > 0) ? metrics.BufferState[metrics.BufferState.length - 1] : null;\n const useBufferOccupancyABR = rulesContext.useBufferOccupancyABR();\n\n if (!metrics || isNaN(throughput) || !bufferStateVO || useBufferOccupancyABR) {\n return switchRequest;\n }\n\n if (abrController.getAbandonmentStateFor(mediaType) !== AbrController.ABANDON_LOAD) {\n if (bufferStateVO.state === BufferController.BUFFER_LOADED || isDynamic) {\n switchRequest.quality = abrController.getQualityForBitrate(mediaInfo, throughput, latency);\n streamProcessor.getScheduleController().setTimeToLoadDelay(0);\n log('ThroughputRule requesting switch to index: ', switchRequest.quality, 'type: ',mediaType, 'Average throughput', Math.round(throughput), 'kbps');\n switchRequest.reason = {throughput: throughput, latency: latency};\n }\n }\n\n return switchRequest;\n }\n\n function reset() {\n // no persistent information to reset\n }\n\n const instance = {\n getMaxIndex: getMaxIndex,\n reset: reset\n };\n\n return instance;\n}\n\nThroughputRule.__dashjs_factory_name = 'ThroughputRule';\nexport default FactoryMaker.getClassFactory(ThroughputRule);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../../constants/Constants';\nimport FactoryMaker from '../../../core/FactoryMaker';\n\nfunction BufferLevelRule(config) {\n\n config = config || {};\n const dashMetrics = config.dashMetrics;\n const metricsModel = config.metricsModel;\n const mediaPlayerModel = config.mediaPlayerModel;\n const textController = config.textController;\n const abrController = config.abrController;\n\n function setup() {\n }\n\n function execute(streamProcessor, type, videoTrackPresent) {\n const bufferLevel = dashMetrics.getCurrentBufferLevel(metricsModel.getReadOnlyMetricsFor(type));\n return bufferLevel < getBufferTarget(streamProcessor, type, videoTrackPresent);\n }\n\n function getBufferTarget(streamProcessor, type, videoTrackPresent) {\n let bufferTarget = NaN;\n const representationInfo = streamProcessor.getCurrentRepresentationInfo();\n if (type === Constants.FRAGMENTED_TEXT) {\n bufferTarget = textController.getAllTracksAreDisabled() ? 0 : representationInfo.fragmentDuration;\n } else if (type === Constants.AUDIO && videoTrackPresent) {\n const videoBufferLevel = dashMetrics.getCurrentBufferLevel(metricsModel.getReadOnlyMetricsFor(Constants.VIDEO));\n if (isNaN(representationInfo.fragmentDuration)) {\n bufferTarget = videoBufferLevel;\n } else {\n bufferTarget = Math.max(videoBufferLevel, representationInfo.fragmentDuration);\n }\n // console.log('videoBufferLevel - ' + videoBufferLevel + ' target : ' + bufferTarget);\n } else {\n const streamInfo = representationInfo.mediaInfo.streamInfo;\n if (abrController.isPlayingAtTopQuality(streamInfo)) {\n const isLongFormContent = streamInfo.manifestInfo.duration >= mediaPlayerModel.getLongFormContentDurationThreshold();\n bufferTarget = isLongFormContent ? mediaPlayerModel.getBufferTimeAtTopQualityLongForm() : mediaPlayerModel.getBufferTimeAtTopQuality();\n }else {\n bufferTarget = mediaPlayerModel.getStableBufferTime();\n }\n }\n\n return bufferTarget;\n }\n\n const instance = {\n execute: execute,\n getBufferTarget: getBufferTarget\n };\n\n setup();\n return instance;\n}\n\nBufferLevelRule.__dashjs_factory_name = 'BufferLevelRule';\nexport default FactoryMaker.getClassFactory(BufferLevelRule);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../../constants/Constants';\nimport Debug from '../../../core/Debug';\nimport FactoryMaker from '../../../core/FactoryMaker';\n\nfunction NextFragmentRequestRule(config) {\n\n config = config || {};\n const context = this.context;\n const log = Debug(context).getInstance().log;\n const adapter = config.adapter;\n const sourceBufferController = config.sourceBufferController;\n const textController = config.textController;\n\n function execute(streamProcessor, requestToReplace) {\n\n const representationInfo = streamProcessor.getCurrentRepresentationInfo();\n const mediaInfo = representationInfo.mediaInfo;\n const mediaType = mediaInfo.type;\n const scheduleController = streamProcessor.getScheduleController();\n const seekTarget = scheduleController.getSeekTarget();\n const hasSeekTarget = !isNaN(seekTarget);\n const buffer = streamProcessor.getBuffer();\n\n let time = hasSeekTarget ? seekTarget : adapter.getIndexHandlerTime(streamProcessor);\n\n if (isNaN(time) || (mediaType === Constants.FRAGMENTED_TEXT && textController.getAllTracksAreDisabled())) {\n return null;\n }\n\n if (hasSeekTarget) {\n scheduleController.setSeekTarget(NaN);\n }\n\n /**\n * This is critical for IE/Safari/EDGE\n * */\n if (buffer) {\n const range = sourceBufferController.getBufferRange(buffer, time);\n if (range !== null) {\n log('Prior to making a request for time, NextFragmentRequestRule is aligning index handler\\'s currentTime with bufferedRange.end.', time, ' was changed to ', range.end);\n time = range.end;\n }\n }\n\n let request;\n if (requestToReplace) {\n // log('requestToReplace :' + requestToReplace.url);\n time = requestToReplace.startTime + (requestToReplace.duration / 2);\n request = adapter.getFragmentRequestForTime(streamProcessor, representationInfo, time, {\n timeThreshold: 0,\n ignoreIsFinished: true\n });\n } else {\n request = adapter.getFragmentRequestForTime(streamProcessor, representationInfo, time, {\n keepIdx: !hasSeekTarget\n });\n while ( streamProcessor.getFragmentModel().isFragmentLoaded(request)) {\n // loop until we found not loaded fragment, or no fragment\n request = adapter.getNextFragmentRequest(streamProcessor, representationInfo);\n }\n if (request) {\n adapter.setIndexHandlerTime(streamProcessor, request.startTime + request.duration);\n request.delayLoadingTime = new Date().getTime() + scheduleController.getTimeToLoadDelay();\n scheduleController.setTimeToLoadDelay(0);\n }\n }\n\n /*\n if (request) {\n log('Return request :' + request.url);\n } else {\n log('no request');\n }*/\n\n return request;\n }\n\n const instance = {\n execute: execute\n };\n\n return instance;\n}\n\nNextFragmentRequestRule.__dashjs_factory_name = 'NextFragmentRequestRule';\nexport default FactoryMaker.getClassFactory(NextFragmentRequestRule);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker';\n\nfunction EmbeddedTextHtmlRender() {\n\n let captionId = 0;\n let instance;\n\n /* HTML Rendering functions */\n function checkIndent(chars) {\n let line = '';\n\n for (let c = 0; c < chars.length; ++c) {\n let uc = chars[c];\n line += uc.uchar;\n }\n\n let l = line.length;\n let ll = line.replace(/^\\s+/,'').length;\n return l - ll;\n }\n\n function getRegionProperties(region) {\n return 'left: ' + (region.x * 3.125) + '%; top: ' + (region.y1 * 6.66) + '%; width: ' + (100 - (region.x * 3.125)) + '%; height: ' + (Math.max((region.y2 - 1) - region.y1, 1) * 6.66) + '%; align-items: flex-start; overflow: visible; -webkit-writing-mode: horizontal-tb;';\n }\n\n function createRGB(color) {\n if (color === 'red') {\n return 'rgb(255, 0, 0)';\n } else if (color === 'green') {\n return 'rgb(0, 255, 0)';\n } else if (color === 'blue') {\n return 'rgb(0, 0, 255)';\n } else if (color === 'cyan') {\n return 'rgb(0, 255, 255)';\n } else if (color === 'magenta') {\n return 'rgb(255, 0, 255)';\n } else if (color === 'yellow') {\n return 'rgb(255, 255, 0)';\n } else if (color === 'white') {\n return 'rgb(255, 255, 255)';\n } else if (color === 'black') {\n return 'rgb(0, 0, 0)';\n }\n return color;\n }\n\n function getStyle(videoElement, style) {\n const fontSize = videoElement.videoHeight / 15.0;\n if (style) {\n return 'font-size: ' + fontSize + 'px; font-family: Menlo, Consolas, \\'Cutive Mono\\', monospace; color: ' + ((style.foreground) ? createRGB(style.foreground) : 'rgb(255, 255, 255)') + '; font-style: ' + (style.italics ? 'italic' : 'normal') + '; text-decoration: ' + (style.underline ? 'underline' : 'none') + '; white-space: pre; background-color: ' + ((style.background) ? createRGB(style.background) : 'transparent') + ';';\n } else {\n return 'font-size: ' + fontSize + 'px; font-family: Menlo, Consolas, \\'Cutive Mono\\', monospace; justify-content: flex-start; text-align: left; color: rgb(255, 255, 255); font-style: normal; white-space: pre; line-height: normal; font-weight: normal; text-decoration: none; width: 100%; display: flex;';\n }\n }\n\n function ltrim(s) {\n let trimmed = s.replace(/^\\s+/g, '');\n return trimmed;\n }\n function rtrim(s) {\n let trimmed = s.replace(/\\s+$/g, '');\n return trimmed;\n }\n\n\n function createHTMLCaptionsFromScreen(videoElement, startTime, endTime, captionScreen) {\n\n let currRegion = null;\n let existingRegion = null;\n let lastRowHasText = false;\n let lastRowIndentL = -1;\n let currP = { start: startTime, end: endTime, spans: [] };\n let currentStyle = 'style_cea608_white_black';\n let seenRegions = { };\n let styleStates = { };\n let regions = [];\n let r, s;\n\n for (r = 0; r < 15; ++r) {\n let row = captionScreen.rows[r];\n let line = '';\n let prevPenState = null;\n\n if (false === row.isEmpty()) {\n /* Row is not empty */\n\n /* Get indentation of this row */\n let rowIndent = checkIndent(row.chars);\n\n /* Create a new region is there is none */\n if (currRegion === null) {\n currRegion = { x: rowIndent, y1: r, y2: (r + 1), p: [] };\n }\n\n /* Check if indentation has changed and we had text of last row */\n if ((rowIndent !== lastRowIndentL) && lastRowHasText) {\n currRegion.p.push(currP);\n currP = { start: startTime, end: endTime, spans: [] };\n currRegion.y2 = r;\n currRegion.name = 'region_' + currRegion.x + '_' + currRegion.y1 + '_' + currRegion.y2;\n if (false === seenRegions.hasOwnProperty(currRegion.name)) {\n regions.push(currRegion);\n seenRegions[currRegion.name] = currRegion;\n } else {\n existingRegion = seenRegions[currRegion.name];\n existingRegion.p.contat(currRegion.p);\n }\n\n currRegion = { x: rowIndent, y1: r, y2: (r + 1), p: [] };\n }\n\n for (let c = 0; c < row.chars.length; ++c) {\n let uc = row.chars[c];\n let currPenState = uc.penState;\n if ((prevPenState === null) || (!currPenState.equals(prevPenState))) {\n if (line.trim().length > 0) {\n currP.spans.push({ name: currentStyle, line: line, row: r });\n line = '';\n }\n\n let currPenStateString = 'style_cea608_' + currPenState.foreground + '_' + currPenState.background;\n if (currPenState.underline) {\n currPenStateString += '_underline';\n }\n if (currPenState.italics) {\n currPenStateString += '_italics';\n }\n\n if (!styleStates.hasOwnProperty(currPenStateString)) {\n styleStates[currPenStateString] = JSON.parse(JSON.stringify(currPenState));\n }\n\n prevPenState = currPenState;\n\n currentStyle = currPenStateString;\n }\n\n line += uc.uchar;\n }\n\n if (line.trim().length > 0) {\n currP.spans.push({ name: currentStyle, line: line, row: r });\n }\n\n lastRowHasText = true;\n lastRowIndentL = rowIndent;\n } else {\n /* Row is empty */\n lastRowHasText = false;\n lastRowIndentL = -1;\n\n if (currRegion) {\n currRegion.p.push(currP);\n currP = { start: startTime, end: endTime, spans: [] };\n currRegion.y2 = r;\n currRegion.name = 'region_' + currRegion.x + '_' + currRegion.y1 + '_' + currRegion.y2;\n if (false === seenRegions.hasOwnProperty(currRegion.name)) {\n regions.push(currRegion);\n seenRegions[currRegion.name] = currRegion;\n } else {\n existingRegion = seenRegions[currRegion.name];\n existingRegion.p.contat(currRegion.p);\n }\n\n currRegion = null;\n }\n\n }\n }\n\n if (currRegion) {\n currRegion.p.push(currP);\n currRegion.y2 = r + 1;\n currRegion.name = 'region_' + currRegion.x + '_' + currRegion.y1 + '_' + currRegion.y2;\n if (false === seenRegions.hasOwnProperty(currRegion.name)) {\n regions.push(currRegion);\n seenRegions[currRegion.name] = currRegion;\n } else {\n existingRegion = seenRegions[currRegion.name];\n existingRegion.p.contat(currRegion.p);\n }\n\n currRegion = null;\n }\n\n //log(styleStates);\n //log(regions);\n\n let captionsArray = [];\n\n /* Loop thru regions */\n for (r = 0; r < regions.length; ++r) {\n let region = regions[r];\n\n let cueID = 'sub_cea608_' + (captionId++);\n let finalDiv = document.createElement('div');\n finalDiv.id = cueID;\n let cueRegionProperties = getRegionProperties(region);\n finalDiv.style.cssText = 'position: absolute; margin: 0; display: flex; box-sizing: border-box; pointer-events: none;' + cueRegionProperties;\n\n let bodyDiv = document.createElement('div');\n bodyDiv.className = 'paragraph bodyStyle';\n bodyDiv.style.cssText = getStyle(videoElement);\n\n let cueUniWrapper = document.createElement('div');\n cueUniWrapper.className = 'cueUniWrapper';\n cueUniWrapper.style.cssText = 'unicode-bidi: normal; direction: ltr;';\n\n for (let p = 0; p < region.p.length; ++p) {\n let ptag = region.p[p];\n let lastSpanRow = 0;\n for (s = 0; s < ptag.spans.length; ++s) {\n let span = ptag.spans[s];\n if (span.line.length > 0) {\n if ((s !== 0) && lastSpanRow != span.row) {\n let brElement = document.createElement('br');\n brElement.className = 'lineBreak';\n cueUniWrapper.appendChild(brElement);\n }\n let sameRow = false;\n if (lastSpanRow === span.row) {\n sameRow = true;\n }\n lastSpanRow = span.row;\n let spanStyle = styleStates[span.name];\n let spanElement = document.createElement('span');\n spanElement.className = 'spanPadding ' + span.name + ' customSpanColor';\n spanElement.style.cssText = getStyle(videoElement, spanStyle);\n /* If this is not the first span, and it's on the same\n * row as the last one */\n if ((s !== 0) && sameRow) {\n /* and it's the last span on this row */\n if (s === ptag.spans.length - 1) {\n /* trim only the right side */\n spanElement.textContent = rtrim(span.line);\n } else {\n /* don't trim at all */\n spanElement.textContent = span.line;\n }\n } else {\n /* if there is more than 1 span and this isn't the last span */\n if (ptag.spans.length > 1 && s < (ptag.spans.length - 1)) {\n /* Check if next text is on same row */\n if (span.row === ptag.spans[s + 1].row) {\n /* Next element on same row, trim start */\n spanElement.textContent = ltrim(span.line);\n } else {\n /* Different rows, trim both */\n spanElement.textContent = span.line.trim();\n }\n } else {\n spanElement.textContent = span.line.trim();\n }\n }\n cueUniWrapper.appendChild(spanElement);\n }\n }\n }\n\n bodyDiv.appendChild(cueUniWrapper);\n\n finalDiv.appendChild(bodyDiv);\n\n let fontSize = { 'bodyStyle': ['%', 90] };\n for (s in styleStates) {\n if (styleStates.hasOwnProperty(s)) {\n fontSize[s] = ['%', 90];\n }\n }\n\n captionsArray.push({ type: 'html',\n start: startTime,\n end: endTime,\n cueHTMLElement: finalDiv,\n cueID: cueID,\n cellResolution: [32, 15],\n isFromCEA608: true,\n regions: regions,\n regionID: region.name,\n videoHeight: videoElement.videoHeight,\n videoWidth: videoElement.videoWidth,\n fontSize: fontSize,\n lineHeight: {},\n linePadding: {}\n });\n }\n return captionsArray;\n }\n\n instance = {\n createHTMLCaptionsFromScreen: createHTMLCaptionsFromScreen\n };\n return instance;\n}\n\nEmbeddedTextHtmlRender.__dashjs_factory_name = 'EmbeddedTextHtmlRender';\nexport default FactoryMaker.getSingletonFactory(EmbeddedTextHtmlRender);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport InitCache from '../utils/InitCache';\n\nconst BUFFER_CONTROLLER_TYPE = 'NotFragmentedTextBufferController';\nfunction NotFragmentedTextBufferController(config) {\n\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let sourceBufferController = config.sourceBufferController;\n let errHandler = config.errHandler;\n let type = config.type;\n let streamProcessor = config.streamProcessor;\n\n let instance,\n isBufferingCompleted,\n initialized,\n mediaSource,\n buffer,\n seekStartTime,\n representationController,\n initCache;\n\n function setup() {\n\n initialized = false;\n mediaSource = null;\n buffer = null;\n representationController = null;\n isBufferingCompleted = false;\n\n eventBus.on(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.on(Events.INIT_FRAGMENT_LOADED, onInitFragmentLoaded, this);\n }\n\n function getBufferControllerType() {\n return BUFFER_CONTROLLER_TYPE;\n }\n\n function initialize(source) {\n setMediaSource(source);\n representationController = streamProcessor.getRepresentationController();\n initCache = InitCache(context).getInstance();\n }\n\n /**\n * @param {MediaInfo }mediaInfo\n * @returns {Object} SourceBuffer object\n * @memberof BufferController#\n */\n function createBuffer(mediaInfo) {\n try {\n buffer = sourceBufferController.createSourceBuffer(mediaSource, mediaInfo);\n\n if (!initialized) {\n if (buffer.hasOwnProperty(Constants.INITIALIZE)) {\n buffer.initialize(type, streamProcessor);\n }\n initialized = true;\n }\n } catch (e) {\n errHandler.mediaSourceError('Error creating ' + type + ' source buffer.');\n }\n\n return buffer;\n }\n\n function getType() {\n return type;\n }\n\n function getBuffer() {\n return buffer;\n }\n\n function setBuffer(value) {\n buffer = value;\n }\n\n function setMediaSource(value) {\n mediaSource = value;\n }\n\n function getMediaSource() {\n return mediaSource;\n }\n\n function getStreamProcessor() {\n return streamProcessor;\n }\n\n function setSeekStartTime(value) {\n seekStartTime = value;\n }\n\n function getSeekStartTime() {\n return seekStartTime;\n }\n\n function getBufferLevel() {\n return 0;\n }\n\n function getIsBufferingCompleted() {\n return isBufferingCompleted;\n }\n\n function reset(errored) {\n\n eventBus.off(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.off(Events.INIT_FRAGMENT_LOADED, onInitFragmentLoaded, this);\n\n if (!errored) {\n sourceBufferController.abort(mediaSource, buffer);\n sourceBufferController.removeSourceBuffer(mediaSource, buffer);\n }\n }\n\n function onDataUpdateCompleted(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) {\n return;\n }\n\n eventBus.trigger(Events.TIMED_TEXT_REQUESTED, {\n index: 0,\n sender: e.sender\n }); //TODO make index dynamic if referring to MP?\n }\n\n function onInitFragmentLoaded(e) {\n if (e.fragmentModel !== streamProcessor.getFragmentModel() || (!e.chunk.bytes)) {\n return;\n }\n initCache.save(e.chunk);\n sourceBufferController.append(buffer, e.chunk);\n }\n\n function switchInitData(streamId, representationId) {\n const chunk = initCache.extract(streamId, representationId);\n if (chunk) {\n sourceBufferController.append(buffer, chunk);\n } else {\n eventBus.trigger(Events.INIT_REQUESTED, {\n sender: instance\n });\n }\n }\n\n instance = {\n getBufferControllerType: getBufferControllerType,\n initialize: initialize,\n createBuffer: createBuffer,\n getType: getType,\n getStreamProcessor: getStreamProcessor,\n setSeekStartTime: setSeekStartTime,\n getSeekStartTime: getSeekStartTime,\n getBuffer: getBuffer,\n setBuffer: setBuffer,\n getBufferLevel: getBufferLevel,\n setMediaSource: setMediaSource,\n getMediaSource: getMediaSource,\n getIsBufferingCompleted: getIsBufferingCompleted,\n switchInitData: switchInitData,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nNotFragmentedTextBufferController.__dashjs_factory_name = BUFFER_CONTROLLER_TYPE;\nexport default FactoryMaker.getClassFactory(NotFragmentedTextBufferController);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport BufferController from './../controllers/BufferController';\nimport NotFragmentedTextBufferController from './NotFragmentedTextBufferController';\n\nfunction TextBufferController(config) {\n\n let context = this.context;\n\n let _BufferControllerImpl;\n\n let instance;\n\n function setup() {\n\n // according to text type, we create corresponding buffer controller\n if (config.type === Constants.FRAGMENTED_TEXT) {\n\n // in this case, internal buffer ocntroller is a classical BufferController object\n _BufferControllerImpl = BufferController(context).create({\n type: config.type,\n metricsModel: config.metricsModel,\n mediaPlayerModel: config.mediaPlayerModel,\n manifestModel: config.manifestModel,\n sourceBufferController: config.sourceBufferController,\n errHandler: config.errHandler,\n streamController: config.streamController,\n mediaController: config.mediaController,\n adapter: config.adapter,\n textController: config.textController,\n abrController: config.abrController,\n playbackController: config.playbackController,\n streamProcessor: config.streamProcessor\n });\n } else {\n\n // in this case, internal buffer controller is a not fragmented text controller object\n _BufferControllerImpl = NotFragmentedTextBufferController(context).create({\n type: config.type,\n errHandler: config.errHandler,\n sourceBufferController: config.sourceBufferController,\n streamProcessor: config.streamProcessor\n });\n }\n }\n\n function getBufferControllerType() {\n return _BufferControllerImpl.getBufferControllerType();\n }\n\n function initialize(source, StreamProcessor) {\n return _BufferControllerImpl.initialize(source, StreamProcessor);\n }\n\n /**\n * @param {MediaInfo }mediaInfo\n * @returns {Object} SourceBuffer object\n * @memberof BufferController#\n */\n function createBuffer(mediaInfo) {\n return _BufferControllerImpl.createBuffer(mediaInfo);\n }\n\n function getType() {\n return _BufferControllerImpl.getType();\n }\n\n function getBuffer() {\n return _BufferControllerImpl.getBuffer();\n }\n\n function setBuffer(value) {\n _BufferControllerImpl.setBuffer(value);\n }\n\n function getMediaSource() {\n return _BufferControllerImpl.getMediaSource();\n }\n\n function setMediaSource(value) {\n _BufferControllerImpl.setMediaSource(value);\n }\n\n function getStreamProcessor() {\n _BufferControllerImpl.getStreamProcessor();\n }\n\n function setSeekStartTime(value) {\n _BufferControllerImpl.setSeekStartTime(value);\n }\n\n function getBufferLevel() {\n return _BufferControllerImpl.getBufferLevel();\n }\n\n function reset(errored) {\n _BufferControllerImpl.reset(errored);\n }\n\n function getIsBufferingCompleted() {\n return _BufferControllerImpl.getIsBufferingCompleted();\n }\n\n function switchInitData(streamId, representationId) {\n _BufferControllerImpl.switchInitData(streamId, representationId);\n }\n\n instance = {\n getBufferControllerType: getBufferControllerType,\n initialize: initialize,\n createBuffer: createBuffer,\n getType: getType,\n getStreamProcessor: getStreamProcessor,\n setSeekStartTime: setSeekStartTime,\n getBuffer: getBuffer,\n setBuffer: setBuffer,\n getBufferLevel: getBufferLevel,\n setMediaSource: setMediaSource,\n getMediaSource: getMediaSource,\n getIsBufferingCompleted: getIsBufferingCompleted,\n switchInitData: switchInitData,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nTextBufferController.__dashjs_factory_name = 'TextBufferController';\nexport default FactoryMaker.getClassFactory(TextBufferController);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport TextSourceBuffer from './TextSourceBuffer';\nimport TextTracks from './TextTracks';\nimport VTTParser from '../utils/VTTParser';\nimport TTMLParser from '../utils/TTMLParser';\n\nfunction TextController() {\n\n let context = this.context;\n let instance;\n let textSourceBuffer;\n\n let allTracksAreDisabled,\n errHandler,\n dashManifestModel,\n manifestModel,\n mediaController,\n videoModel,\n streamController,\n textTracks,\n vttParser,\n ttmlParser;\n\n function setup() {\n\n textTracks = TextTracks(context).getInstance();\n vttParser = VTTParser(context).getInstance();\n ttmlParser = TTMLParser(context).getInstance();\n textSourceBuffer = TextSourceBuffer(context).getInstance();\n\n textTracks.initialize();\n\n resetInitialSettings();\n }\n\n function setConfig(config) {\n if (!config) {\n return;\n }\n if (config.errHandler) {\n errHandler = config.errHandler;\n }\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n if (config.mediaController) {\n mediaController = config.mediaController;\n }\n if (config.videoModel) {\n videoModel = config.videoModel;\n }\n if (config.streamController) {\n streamController = config.streamController;\n }\n if (config.textTracks) {\n textTracks = config.textTracks;\n }\n if (config.vttParser) {\n vttParser = config.vttParser;\n }\n if (config.ttmlParser) {\n ttmlParser = config.ttmlParser;\n }\n\n // create config for source buffer\n textSourceBuffer.setConfig({\n errHandler: errHandler,\n dashManifestModel: dashManifestModel,\n manifestModel: manifestModel,\n mediaController: mediaController,\n videoModel: videoModel,\n streamController: streamController,\n textTracks: textTracks,\n vttParser: vttParser,\n ttmlParser: ttmlParser\n });\n }\n\n function getTextSourceBuffer() {\n return textSourceBuffer;\n }\n\n function getAllTracksAreDisabled() {\n return allTracksAreDisabled;\n }\n\n function addEmbeddedTrack(mediaInfo) {\n textSourceBuffer.addEmbeddedTrack(mediaInfo);\n }\n\n function setTextTrack(idx) {\n //For external time text file, the only action needed to change a track is marking the track mode to showing.\n // Fragmented text tracks need the additional step of calling TextController.setTextTrack();\n\n let config = textSourceBuffer.getConfig();\n let fragmentModel = config.fragmentModel;\n let fragmentedTracks = config.fragmentedTracks;\n\n let oldTrackIdx = textTracks.getCurrentTrackIdx();\n if (oldTrackIdx !== idx) {\n textTracks.setModeForTrackIdx(oldTrackIdx, Constants.TEXT_HIDDEN);\n textTracks.setCurrentTrackIdx(idx);\n textTracks.setModeForTrackIdx(idx, Constants.TEXT_SHOWING);\n\n let currentTrackInfo = textTracks.getCurrentTrackInfo();\n\n if (currentTrackInfo && currentTrackInfo.isFragmented && !currentTrackInfo.isEmbedded) {\n for (let i = 0; i < fragmentedTracks.length; i++) {\n let mediaInfo = fragmentedTracks[i];\n if (currentTrackInfo.lang === mediaInfo.lang && currentTrackInfo.index === mediaInfo.index &&\n (currentTrackInfo.label ? currentTrackInfo.label === mediaInfo.id : true)) {\n let currentFragTrack = mediaController.getCurrentTrackFor(Constants.FRAGMENTED_TEXT, streamController.getActiveStreamInfo());\n if (mediaInfo !== currentFragTrack) {\n fragmentModel.abortRequests();\n textTracks.deleteCuesFromTrackIdx(oldTrackIdx);\n mediaController.setTrack(mediaInfo);\n textSourceBuffer.setCurrentFragmentedTrackIdx(i);\n }\n }\n }\n }\n }\n\n allTracksAreDisabled = idx === -1 ? true : false;\n }\n\n function getCurrentTrackIdx() {\n let textTracks = textSourceBuffer.getConfig().textTracks;\n return textTracks.getCurrentTrackIdx();\n }\n\n function resetInitialSettings() {\n allTracksAreDisabled = false;\n }\n\n function reset() {\n resetInitialSettings();\n textSourceBuffer.resetEmbedded();\n }\n\n instance = {\n setConfig: setConfig,\n getTextSourceBuffer: getTextSourceBuffer,\n getAllTracksAreDisabled: getAllTracksAreDisabled,\n addEmbeddedTrack: addEmbeddedTrack,\n setTextTrack: setTextTrack,\n getCurrentTrackIdx: getCurrentTrackIdx,\n reset: reset\n };\n setup();\n return instance;\n}\n\nTextController.__dashjs_factory_name = 'TextController';\nexport default FactoryMaker.getSingletonFactory(TextController);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport {HTTPRequest} from '../vo/metrics/HTTPRequest';\nimport TextTrackInfo from '../vo/TextTrackInfo';\nimport FragmentedTextBoxParser from '../../dash/utils/FragmentedTextBoxParser';\nimport BoxParser from '../utils/BoxParser';\nimport CustomTimeRanges from '../utils/CustomTimeRanges';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\nimport TextTracks from './TextTracks';\nimport EmbeddedTextHtmlRender from './EmbeddedTextHtmlRender';\nimport ISOBoxer from 'codem-isoboxer';\nimport cea608parser from '../../../externals/cea608-parser';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\n\nfunction TextSourceBuffer() {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n const eventBus = EventBus(context).getInstance();\n let embeddedInitialized = false;\n\n let instance,\n boxParser,\n errHandler,\n dashManifestModel,\n manifestModel,\n mediaController,\n parser,\n vttParser,\n ttmlParser,\n fragmentedTextBoxParser,\n mediaInfos,\n textTracks,\n isFragmented,\n fragmentModel,\n initializationSegmentReceived,\n timescale,\n fragmentedTracks,\n videoModel,\n streamController,\n firstSubtitleStart,\n currFragmentedTrackIdx,\n embeddedTracks,\n embeddedInitializationSegmentReceived,\n embeddedTimescale,\n embeddedLastSequenceNumber,\n embeddedSequenceNumbers,\n embeddedCea608FieldParsers,\n embeddedTextHtmlRender;\n\n function initialize(type, streamProcessor) {\n parser = null;\n fragmentModel = null;\n initializationSegmentReceived = false;\n timescale = NaN;\n fragmentedTracks = [];\n firstSubtitleStart = null;\n\n if (!embeddedInitialized) {\n initEmbedded();\n }\n\n mediaInfos = streamProcessor.getMediaInfoArr();\n textTracks.setConfig({\n videoModel: videoModel\n });\n textTracks.initialize();\n isFragmented = !dashManifestModel.getIsTextTrack(type);\n boxParser = BoxParser(context).getInstance();\n fragmentedTextBoxParser = FragmentedTextBoxParser(context).getInstance();\n fragmentedTextBoxParser.setConfig({\n boxParser: boxParser\n });\n\n if (isFragmented) {\n fragmentModel = streamProcessor.getFragmentModel();\n this.buffered = CustomTimeRanges(context).create();\n fragmentedTracks = mediaController.getTracksFor(Constants.FRAGMENTED_TEXT, streamController.getActiveStreamInfo());\n const currFragTrack = mediaController.getCurrentTrackFor(Constants.FRAGMENTED_TEXT, streamController.getActiveStreamInfo());\n for (let i = 0; i < fragmentedTracks.length; i++) {\n if (fragmentedTracks[i] === currFragTrack) {\n currFragmentedTrackIdx = i;\n break;\n }\n }\n }\n }\n\n function abort() {\n textTracks.deleteAllTextTracks();\n parser = null;\n fragmentedTextBoxParser = null;\n mediaInfos = null;\n textTracks = null;\n isFragmented = false;\n fragmentModel = null;\n initializationSegmentReceived = false;\n timescale = NaN;\n fragmentedTracks = [];\n videoModel = null;\n streamController = null;\n embeddedInitialized = false;\n embeddedTracks = null;\n }\n\n\n function onVideoChunkReceived(e) {\n const chunk = e.chunk;\n\n if (chunk.mediaInfo.embeddedCaptions) {\n append(chunk.bytes, chunk);\n }\n }\n\n function initEmbedded() {\n embeddedTracks = [];\n mediaInfos = [];\n textTracks = TextTracks(context).getInstance();\n textTracks.setConfig({\n videoModel: videoModel\n });\n textTracks.initialize();\n boxParser = BoxParser(context).getInstance();\n fragmentedTextBoxParser = FragmentedTextBoxParser(context).getInstance();\n fragmentedTextBoxParser.setConfig({\n boxParser: boxParser\n });\n isFragmented = false;\n currFragmentedTrackIdx = null;\n embeddedInitializationSegmentReceived = false;\n embeddedTimescale = 0;\n embeddedCea608FieldParsers = [];\n embeddedSequenceNumbers = [];\n embeddedLastSequenceNumber = null;\n embeddedInitialized = true;\n embeddedTextHtmlRender = EmbeddedTextHtmlRender(context).getInstance();\n\n eventBus.on(Events.VIDEO_CHUNK_RECEIVED, onVideoChunkReceived, this);\n }\n\n function resetEmbedded() {\n eventBus.off(Events.VIDEO_CHUNK_RECEIVED, onVideoChunkReceived, this);\n if (textTracks) {\n textTracks.deleteAllTextTracks();\n }\n embeddedInitialized = false;\n embeddedTracks = [];\n embeddedCea608FieldParsers = [null, null];\n embeddedSequenceNumbers = [];\n embeddedLastSequenceNumber = null;\n }\n\n function addEmbeddedTrack(mediaInfo) {\n if (!embeddedInitialized) {\n initEmbedded();\n }\n if (mediaInfo.id === Constants.CC1 || mediaInfo.id === Constants.CC3) {\n embeddedTracks.push(mediaInfo);\n } else {\n log('Warning: Embedded track ' + mediaInfo.id + ' not supported!');\n }\n }\n\n function setConfig(config) {\n if (!config) {\n return;\n }\n if (config.errHandler) {\n errHandler = config.errHandler;\n }\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n if (config.mediaController) {\n mediaController = config.mediaController;\n }\n if (config.videoModel) {\n videoModel = config.videoModel;\n }\n if (config.streamController) {\n streamController = config.streamController;\n }\n if (config.textTracks) {\n textTracks = config.textTracks;\n }\n if (config.vttParser) {\n vttParser = config.vttParser;\n }\n if (config.ttmlParser) {\n ttmlParser = config.ttmlParser;\n }\n }\n\n function getConfig() {\n let config = {\n errHandler: errHandler,\n dashManifestModel: dashManifestModel,\n mediaController: mediaController,\n videoModel: videoModel,\n fragmentModel: fragmentModel,\n streamController: streamController,\n textTracks: textTracks,\n isFragmented: isFragmented,\n embeddedTracks: embeddedTracks,\n fragmentedTracks: fragmentedTracks\n };\n\n return config;\n }\n\n function setCurrentFragmentedTrackIdx(idx) {\n currFragmentedTrackIdx = idx;\n }\n\n function append(bytes, chunk) {\n let result,\n sampleList,\n i, j, k,\n samplesInfo,\n ccContent;\n let mediaInfo = chunk.mediaInfo;\n let mediaType = mediaInfo.type;\n let mimeType = mediaInfo.mimeType;\n let codecType = mediaInfo.codec || mimeType;\n if (!codecType) {\n log('No text type defined');\n return;\n }\n\n function createTextTrackFromMediaInfo(captionData, mediaInfo) {\n let textTrackInfo = new TextTrackInfo();\n let trackKindMap = { subtitle: 'subtitles', caption: 'captions' }; //Dash Spec has no \"s\" on end of KIND but HTML needs plural.\n const getKind = function () {\n let kind = (mediaInfo.roles.length > 0) ? trackKindMap[mediaInfo.roles[0]] : trackKindMap.caption;\n kind = (kind === trackKindMap.caption || kind === trackKindMap.subtitle) ? kind : trackKindMap.caption;\n return kind;\n };\n\n const checkTTML = function () {\n let ttml = false;\n if (mediaInfo.codec && mediaInfo.codec.search(Constants.STPP) >= 0) {\n ttml = true;\n }\n if (mediaInfo.mimeType && mediaInfo.mimeType.search(Constants.TTML) >= 0) {\n ttml = true;\n }\n return ttml;\n };\n\n textTrackInfo.captionData = captionData;\n textTrackInfo.lang = mediaInfo.lang;\n textTrackInfo.label = mediaInfo.id; // AdaptationSet id (an unsigned int)\n textTrackInfo.index = mediaInfo.index; // AdaptationSet index in manifest\n textTrackInfo.isTTML = checkTTML();\n textTrackInfo.defaultTrack = getIsDefault(mediaInfo);\n textTrackInfo.isFragmented = isFragmented;\n textTrackInfo.isEmbedded = mediaInfo.isEmbedded ? true : false;\n textTrackInfo.kind = getKind();\n textTrackInfo.roles = mediaInfo.roles;\n let totalNrTracks = (mediaInfos ? mediaInfos.length : 0) + embeddedTracks.length;\n textTracks.addTextTrack(textTrackInfo, totalNrTracks);\n }\n\n if (mediaType === Constants.FRAGMENTED_TEXT) {\n if (!initializationSegmentReceived) {\n initializationSegmentReceived = true;\n for (i = 0; i < mediaInfos.length; i++) {\n createTextTrackFromMediaInfo(null, mediaInfos[i]);\n }\n timescale = fragmentedTextBoxParser.getMediaTimescaleFromMoov(bytes);\n } else {\n samplesInfo = fragmentedTextBoxParser.getSamplesInfo(bytes);\n sampleList = samplesInfo.sampleList;\n if (!firstSubtitleStart && sampleList.length > 0) {\n firstSubtitleStart = sampleList[0].cts - chunk.start * timescale;\n }\n if (codecType.search(Constants.STPP) >= 0) {\n parser = parser !== null ? parser : getParser(codecType);\n for (i = 0; i < sampleList.length; i++) {\n let sample = sampleList[i];\n let sampleStart = sample.cts;\n let sampleRelStart = sampleStart - firstSubtitleStart;\n this.buffered.add(sampleRelStart / timescale, (sampleRelStart + sample.duration) / timescale);\n let dataView = new DataView(bytes, sample.offset, sample.subSizes[0]);\n ccContent = ISOBoxer.Utils.dataViewToString(dataView, Constants.UTF8);\n let images = [];\n let subOffset = sample.offset + sample.subSizes[0];\n for (j = 1; j < sample.subSizes.length; j++) {\n let inData = new Uint8Array(bytes, subOffset, sample.subSizes[j]);\n let raw = String.fromCharCode.apply(null, inData);\n images.push(raw);\n subOffset += sample.subSizes[j];\n }\n try {\n // Only used for Miscrosoft Smooth Streaming support - caption time is relative to sample time. In this case, we apply an offset.\n let manifest = manifestModel.getValue();\n let offsetTime = manifest.ttmlTimeIsRelative ? sampleStart / timescale : 0;\n result = parser.parse(ccContent, offsetTime, sampleStart / timescale, (sampleStart + sample.duration) / timescale, images);\n textTracks.addCaptions(currFragmentedTrackIdx, firstSubtitleStart / timescale, result);\n } catch (e) {\n log('TTML parser error: ' + e.message);\n }\n }\n } else {\n // WebVTT case\n let captionArray = [];\n for (i = 0 ; i < sampleList.length; i++) {\n let sample = sampleList[i];\n sample.cts -= firstSubtitleStart;\n this.buffered.add(sample.cts / timescale, (sample.cts + sample.duration) / timescale);\n let sampleData = bytes.slice(sample.offset, sample.offset + sample.size);\n // There are boxes inside the sampleData, so we need a ISOBoxer to get at it.\n let sampleBoxes = ISOBoxer.parseBuffer(sampleData);\n\n for (j = 0 ; j < sampleBoxes.boxes.length; j++) {\n let box1 = sampleBoxes.boxes[j];\n log('VTT box1: ' + box1.type);\n if (box1.type === 'vtte') {\n continue; //Empty box\n }\n if (box1.type === 'vttc') {\n log('VTT vttc boxes.length = ' + box1.boxes.length);\n for (k = 0 ; k < box1.boxes.length; k++) {\n let box2 = box1.boxes[k];\n log('VTT box2: ' + box2.type);\n if (box2.type === 'payl') {\n let cue_text = box2.cue_text;\n log('VTT cue_text = ' + cue_text);\n let start_time = sample.cts / timescale;\n let end_time = (sample.cts + sample.duration) / timescale;\n captionArray.push({\n start: start_time,\n end: end_time,\n data: cue_text,\n styles: {}\n });\n log('VTT ' + start_time + '-' + end_time + ' : ' + cue_text);\n }\n }\n }\n }\n }\n if (captionArray.length > 0) {\n textTracks.addCaptions(currFragmentedTrackIdx, 0, captionArray);\n }\n }\n }\n } else if (mediaType === Constants.TEXT) {\n let dataView = new DataView(bytes, 0, bytes.byteLength);\n ccContent = ISOBoxer.Utils.dataViewToString(dataView, Constants.UTF8);\n\n try {\n result = getParser(codecType).parse(ccContent, 0);\n createTextTrackFromMediaInfo(result, mediaInfo);\n } catch (e) {\n errHandler.timedTextError(e, 'parse', ccContent);\n }\n } else if (mediaType === Constants.VIDEO) { //embedded text\n if (chunk.segmentType === HTTPRequest.INIT_SEGMENT_TYPE) {\n if (embeddedTimescale === 0) {\n embeddedTimescale = fragmentedTextBoxParser.getMediaTimescaleFromMoov(bytes);\n for (i = 0; i < embeddedTracks.length; i++) {\n createTextTrackFromMediaInfo(null, embeddedTracks[i]);\n }\n }\n } else { // MediaSegment\n if (embeddedTimescale === 0) {\n log('CEA-608: No timescale for embeddedTextTrack yet');\n return;\n }\n const makeCueAdderForIndex = function (self, trackIndex) {\n function newCue(startTime, endTime, captionScreen) {\n let captionsArray = null;\n if (videoModel.getTTMLRenderingDiv()) {\n captionsArray = embeddedTextHtmlRender.createHTMLCaptionsFromScreen(videoModel.getElement(), startTime, endTime, captionScreen);\n } else {\n let text = captionScreen.getDisplayText();\n //log(\"CEA text: \" + startTime + \"-\" + endTime + \" '\" + text + \"'\");\n captionsArray = [{\n start: startTime,\n end: endTime,\n data: text,\n styles: {}\n }];\n }\n if (captionsArray) {\n textTracks.addCaptions(trackIndex, 0, captionsArray);\n }\n }\n return newCue;\n };\n\n\n samplesInfo = fragmentedTextBoxParser.getSamplesInfo(bytes);\n\n let sequenceNumber = samplesInfo.lastSequenceNumber;\n\n if (!embeddedCea608FieldParsers[0] && !embeddedCea608FieldParsers[1]) {\n // Time to setup the CEA-608 parsing\n let field, handler, trackIdx;\n for (i = 0; i < embeddedTracks.length; i++) {\n if (embeddedTracks[i].id === Constants.CC1) {\n field = 0;\n trackIdx = textTracks.getTrackIdxForId(Constants.CC1);\n } else if (embeddedTracks[i].id === Constants.CC3) {\n field = 1;\n trackIdx = textTracks.getTrackIdxForId(Constants.CC3);\n }\n if (trackIdx === -1) {\n log('CEA-608: data before track is ready.');\n return;\n }\n handler = makeCueAdderForIndex(this, trackIdx);\n embeddedCea608FieldParsers[i] = new cea608parser.Cea608Parser(i, {\n 'newCue': handler\n }, null);\n }\n }\n\n if (embeddedTimescale && embeddedSequenceNumbers.indexOf(sequenceNumber) == -1) {\n if (embeddedLastSequenceNumber !== null && sequenceNumber !== embeddedLastSequenceNumber + samplesInfo.numSequences) {\n for (i = 0; i < embeddedCea608FieldParsers.length; i++) {\n if (embeddedCea608FieldParsers[i]) {\n embeddedCea608FieldParsers[i].reset();\n }\n }\n }\n\n let allCcData = extractCea608Data(bytes, samplesInfo.sampleList);\n\n for (let fieldNr = 0; fieldNr < embeddedCea608FieldParsers.length; fieldNr++) {\n let ccData = allCcData.fields[fieldNr];\n let fieldParser = embeddedCea608FieldParsers[fieldNr];\n if (fieldParser) {\n /*if (ccData.length > 0 ) {\n log(\"CEA-608 adding Data to field \" + fieldNr + \" \" + ccData.length + \"bytes\");\n }*/\n for (i = 0; i < ccData.length; i++) {\n fieldParser.addData(ccData[i][0] / embeddedTimescale, ccData[i][1]);\n }\n }\n }\n embeddedLastSequenceNumber = sequenceNumber;\n embeddedSequenceNumbers.push(sequenceNumber);\n }\n }\n }\n }\n /**\n * Extract CEA-608 data from a buffer of data.\n * @param {ArrayBuffer} data\n * @param {Array} samples cue information\n * @returns {Object|null} ccData corresponding to one segment.\n */\n function extractCea608Data(data, samples) {\n\n if (samples.length === 0) {\n return null;\n }\n\n let allCcData = {\n splits: [],\n fields: [[], []]\n };\n let raw = new DataView(data);\n for (let i = 0; i < samples.length; i++) {\n let sample = samples[i];\n let cea608Ranges = cea608parser.findCea608Nalus(raw, sample.offset, sample.size);\n let lastSampleTime = null;\n let idx = 0;\n for (let j = 0; j < cea608Ranges.length; j++) {\n let ccData = cea608parser.extractCea608DataFromRange(raw, cea608Ranges[j]);\n for (let k = 0; k < 2; k++) {\n if (ccData[k].length > 0) {\n if (sample.cts !== lastSampleTime) {\n idx = 0;\n } else {\n idx += 1;\n }\n allCcData.fields[k].push([sample.cts, ccData[k], idx]);\n lastSampleTime = sample.cts;\n }\n }\n }\n }\n\n // Sort by sampleTime ascending order\n // If two packets have the same sampleTime, use them in the order\n // they were received\n allCcData.fields.forEach(function sortField(field) {\n field.sort(function (a, b) {\n if (a[0] === b[0]) {\n return a[2] - b[2];\n }\n return a[0] - b[0];\n });\n });\n\n return allCcData;\n }\n\n function getIsDefault(mediaInfo) {\n //TODO How to tag default. currently same order as listed in manifest.\n // Is there a way to mark a text adaptation set as the default one? DASHIF meeting talk about using role which is being used for track KIND\n // Eg subtitles etc. You can have multiple role tags per adaptation Not defined in the spec yet.\n let isDefault = false;\n if (embeddedTracks.length > 1 && mediaInfo.isEmbedded) {\n isDefault = (mediaInfo.id && mediaInfo.id === Constants.CC1); // CC1 if both CC1 and CC3 exist\n } else if (embeddedTracks.length === 1) {\n if (mediaInfo.id && mediaInfo.id.substring(0, 2) === 'CC') { // Either CC1 or CC3\n isDefault = true;\n }\n } else if (embeddedTracks.length === 0) {\n isDefault = (mediaInfo.index === mediaInfos[0].index);\n }\n return isDefault;\n }\n\n function getParser(codecType) {\n let parser;\n if (codecType.search(Constants.VTT) >= 0) {\n parser = vttParser;\n } else if (codecType.search(Constants.TTML) >= 0 || codecType.search(Constants.STPP) >= 0) {\n parser = ttmlParser;\n }\n return parser;\n }\n\n instance = {\n initialize: initialize,\n append: append,\n abort: abort,\n addEmbeddedTrack: addEmbeddedTrack,\n resetEmbedded: resetEmbedded,\n setConfig: setConfig,\n getConfig: getConfig,\n setCurrentFragmentedTrackIdx: setCurrentFragmentedTrackIdx\n };\n\n return instance;\n}\n\nTextSourceBuffer.__dashjs_factory_name = 'TextSourceBuffer';\nexport default FactoryMaker.getSingletonFactory(TextSourceBuffer);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\nimport { renderHTML } from 'imsc';\n\nfunction TextTracks() {\n\n const context = this.context;\n const eventBus = EventBus(context).getInstance();\n const log = Debug(context).getInstance().log;\n\n let instance,\n Cue,\n videoModel,\n textTrackQueue,\n trackElementArr,\n currentTrackIdx,\n actualVideoLeft,\n actualVideoTop,\n actualVideoWidth,\n actualVideoHeight,\n captionContainer,\n videoSizeCheckInterval,\n isChrome,\n fullscreenAttribute,\n displayCCOnTop,\n topZIndex;\n\n function initialize() {\n if (typeof window === 'undefined' || typeof navigator === 'undefined') {\n return;\n }\n\n Cue = window.VTTCue || window.TextTrackCue;\n textTrackQueue = [];\n trackElementArr = [];\n currentTrackIdx = -1;\n actualVideoLeft = 0;\n actualVideoTop = 0;\n actualVideoWidth = 0;\n actualVideoHeight = 0;\n captionContainer = null;\n videoSizeCheckInterval = null;\n displayCCOnTop = false;\n topZIndex = 2147483647;\n\n //TODO Check if IE has resolved issues: Then revert to not using the addTextTrack API for all browsers.\n // https://connect.microsoft.com/IE/feedbackdetail/view/1660701/text-tracks-do-not-fire-change-addtrack-or-removetrack-events\n // https://connect.microsoft.com/IE/feedback/details/1573380/htmltrackelement-track-addcue-throws-invalidstateerror-when-adding-new-cue\n // Same issue with Firefox.\n //isIE11orEdge = !!navigator.userAgent.match(/Trident.*rv[ :]*11\\./) || navigator.userAgent.match(/Edge/);\n //isFirefox = !!navigator.userAgent.match(/Firefox/);\n isChrome = !!navigator.userAgent.match(/Chrome/) && !navigator.userAgent.match(/Edge/);\n if (document.fullscreenElement !== undefined) {\n fullscreenAttribute = 'fullscreenElement'; // Standard and Edge\n } else if (document.webkitIsFullScreen !== undefined) {\n fullscreenAttribute = 'webkitIsFullScreen'; // Chrome and Safari (and Edge)\n } else if (document.msFullscreenElement) { // IE11\n fullscreenAttribute = 'msFullscreenElement';\n } else if (document.mozFullScreen) { // Firefox\n fullscreenAttribute = 'mozFullScreen';\n }\n\n }\n\n function createTrackForUserAgent (i) {\n const kind = textTrackQueue[i].kind;\n const label = textTrackQueue[i].label !== undefined ? textTrackQueue[i].label : textTrackQueue[i].lang;\n const lang = textTrackQueue[i].lang;\n const track = isChrome ? document.createElement('track') : videoModel.addTextTrack(kind, label, lang);\n\n if (isChrome) {\n track.kind = kind;\n track.label = label;\n track.srclang = lang;\n }\n\n return track;\n }\n\n function displayCConTop(value) {\n displayCCOnTop = value;\n if (!captionContainer || document[fullscreenAttribute]) {\n return;\n }\n captionContainer.style.zIndex = value ? topZIndex : null;\n }\n\n function addTextTrack(textTrackInfoVO, totalTextTracks) {\n if (textTrackQueue.length === totalTextTracks) {\n log('Trying to add too many tracks.');\n return;\n }\n\n textTrackQueue.push(textTrackInfoVO);\n\n if (textTrackQueue.length === totalTextTracks) {\n textTrackQueue.sort(function (a, b) { //Sort in same order as in manifest\n return a.index - b.index;\n });\n captionContainer = videoModel.getTTMLRenderingDiv();\n let defaultIndex = -1;\n for (let i = 0 ; i < textTrackQueue.length; i++) {\n const track = createTrackForUserAgent.call(this, i);\n trackElementArr.push(track); //used to remove tracks from video element when added manually\n\n if (textTrackQueue[i].defaultTrack) {\n // track.default is an object property identifier that is a reserved word\n // The following jshint directive is used to suppressed the warning \"Expected an identifier and instead saw 'default' (a reserved word)\"\n /*jshint -W024 */\n track.default = true;\n defaultIndex = i;\n }\n if (isChrome) {\n videoModel.appendChild(track);\n }\n\n const textTrack = getTrackByIdx(i);\n if (textTrack) {\n //each time a track is created, its mode should be showing by default\n //sometime, it's not on Chrome\n textTrack.mode = Constants.TEXT_SHOWING;\n if (captionContainer && (textTrackQueue[i].isTTML || textTrackQueue[i].isEmbedded)) {\n textTrack.renderingType = 'html';\n } else {\n textTrack.renderingType = 'default';\n }\n }\n this.addCaptions(i, 0, textTrackQueue[i].captionData);\n eventBus.trigger(Events.TEXT_TRACK_ADDED);\n }\n\n //set current track index in textTrackQueue array\n setCurrentTrackIdx.call(this, defaultIndex);\n\n if (defaultIndex >= 0) {\n for (let idx = 0; idx < textTrackQueue.length; idx++) {\n const videoTextTrack = getTrackByIdx(idx);\n if (videoTextTrack) {\n videoTextTrack.mode = (idx === defaultIndex) ? Constants.TEXT_SHOWING : Constants.TEXT_HIDDEN;\n }\n }\n }\n\n eventBus.trigger(Events.TEXT_TRACKS_ADDED, {\n index: currentTrackIdx,\n tracks: textTrackQueue\n }); //send default idx.\n }\n }\n\n function getVideoVisibleVideoSize(viewWidth, viewHeight, videoWidth, videoHeight, aspectRatio, use80Percent) {\n const viewAspectRatio = viewWidth / viewHeight;\n const videoAspectRatio = videoWidth / videoHeight;\n\n let videoPictureWidth = 0;\n let videoPictureHeight = 0;\n\n if (viewAspectRatio > videoAspectRatio) {\n videoPictureHeight = viewHeight;\n videoPictureWidth = (videoPictureHeight / videoHeight) * videoWidth;\n } else {\n videoPictureWidth = viewWidth;\n videoPictureHeight = (videoPictureWidth / videoWidth) * videoHeight;\n }\n\n let videoPictureXAspect = 0;\n let videoPictureYAspect = 0;\n let videoPictureWidthAspect = 0;\n let videoPictureHeightAspect = 0;\n const videoPictureAspect = videoPictureWidth / videoPictureHeight;\n\n if (videoPictureAspect > aspectRatio) {\n videoPictureHeightAspect = videoPictureHeight;\n videoPictureWidthAspect = videoPictureHeight / (1 / aspectRatio);\n videoPictureXAspect = (viewWidth - videoPictureWidthAspect) / 2;\n videoPictureYAspect = 0;\n } else {\n videoPictureWidthAspect = videoPictureWidth;\n videoPictureHeightAspect = videoPictureWidth / aspectRatio;\n videoPictureXAspect = 0;\n videoPictureYAspect = (viewHeight - videoPictureHeightAspect) / 2;\n }\n\n if (use80Percent) {\n return {\n x: videoPictureXAspect + (videoPictureWidthAspect * 0.1),\n y: videoPictureYAspect + (videoPictureHeightAspect * 0.1),\n w: videoPictureWidthAspect * 0.8,\n h: videoPictureHeightAspect * 0.8\n }; /* Maximal picture size in videos aspect ratio */\n } else {\n return {\n x: videoPictureXAspect,\n y: videoPictureYAspect,\n w: videoPictureWidthAspect,\n h: videoPictureHeightAspect\n }; /* Maximal picture size in videos aspect ratio */\n }\n }\n\n function checkVideoSize(track) {\n const clientWidth = videoModel.getClientWidth();\n const clientHeight = videoModel.getClientHeight();\n const videoWidth = videoModel.getVideoWidth();\n const videoHeight = videoModel.getVideoHeight();\n let aspectRatio = clientWidth / clientHeight;\n let use80Percent = false;\n if (track.isFromCEA608) {\n // If this is CEA608 then use predefined aspect ratio\n aspectRatio = 3.5 / 3.0;\n use80Percent = true;\n }\n\n const realVideoSize = getVideoVisibleVideoSize.call(this, clientWidth, clientHeight, videoWidth, videoHeight, aspectRatio, use80Percent);\n\n const newVideoWidth = realVideoSize.w;\n const newVideoHeight = realVideoSize.h;\n\n if (newVideoWidth != actualVideoWidth || newVideoHeight != actualVideoHeight) {\n actualVideoLeft = realVideoSize.x;\n actualVideoTop = realVideoSize.y;\n actualVideoWidth = newVideoWidth;\n actualVideoHeight = newVideoHeight;\n captionContainer.style.left = actualVideoLeft + 'px';\n captionContainer.style.top = actualVideoTop + 'px';\n captionContainer.style.width = actualVideoWidth + 'px';\n captionContainer.style.height = actualVideoHeight + 'px';\n\n // Video view has changed size, so resize any active cues\n for (let i = 0; track.activeCues && i < track.activeCues.length; ++i) {\n const cue = track.activeCues[i];\n cue.scaleCue(cue);\n }\n\n if ((fullscreenAttribute && document[fullscreenAttribute]) || displayCCOnTop) {\n captionContainer.style.zIndex = topZIndex;\n } else {\n captionContainer.style.zIndex = null;\n }\n }\n }\n\n function scaleCue(activeCue) {\n const videoWidth = actualVideoWidth;\n const videoHeight = actualVideoHeight;\n let key,\n replaceValue,\n valueFontSize,\n valueLineHeight,\n elements;\n\n if (activeCue.cellResolution) {\n const cellUnit = [videoWidth / activeCue.cellResolution[0], videoHeight / activeCue.cellResolution[1]];\n if (activeCue.linePadding) {\n for (key in activeCue.linePadding) {\n if (activeCue.linePadding.hasOwnProperty(key)) {\n const valueLinePadding = activeCue.linePadding[key];\n replaceValue = (valueLinePadding * cellUnit[0]).toString();\n // Compute the CellResolution unit in order to process properties using sizing (fontSize, linePadding, etc).\n const elementsSpan = document.getElementsByClassName('spanPadding');\n for (let i = 0; i < elementsSpan.length; i++) {\n elementsSpan[i].style.cssText = elementsSpan[i].style.cssText.replace(/(padding-left\\s*:\\s*)[\\d.,]+(?=\\s*px)/gi, '$1' + replaceValue);\n elementsSpan[i].style.cssText = elementsSpan[i].style.cssText.replace(/(padding-right\\s*:\\s*)[\\d.,]+(?=\\s*px)/gi, '$1' + replaceValue);\n }\n }\n }\n }\n\n if (activeCue.fontSize) {\n for (key in activeCue.fontSize) {\n if (activeCue.fontSize.hasOwnProperty(key)) {\n if (activeCue.fontSize[key][0] === '%') {\n valueFontSize = activeCue.fontSize[key][1] / 100;\n } else if (activeCue.fontSize[key][0] === 'c') {\n valueFontSize = activeCue.fontSize[key][1];\n }\n\n replaceValue = (valueFontSize * cellUnit[1]).toString();\n\n if (key !== 'defaultFontSize') {\n elements = document.getElementsByClassName(key);\n } else {\n elements = document.getElementsByClassName('paragraph');\n }\n\n for (let j = 0; j < elements.length; j++) {\n elements[j].style.cssText = elements[j].style.cssText.replace(/(font-size\\s*:\\s*)[\\d.,]+(?=\\s*px)/gi, '$1' + replaceValue);\n }\n }\n }\n\n if (activeCue.lineHeight) {\n for (key in activeCue.lineHeight) {\n if (activeCue.lineHeight.hasOwnProperty(key)) {\n if (activeCue.lineHeight[key][0] === '%') {\n valueLineHeight = activeCue.lineHeight[key][1] / 100;\n } else if (activeCue.fontSize[key][0] === 'c') {\n valueLineHeight = activeCue.lineHeight[key][1];\n }\n\n replaceValue = (valueLineHeight * cellUnit[1]).toString();\n elements = document.getElementsByClassName(key);\n for (let k = 0; k < elements.length; k++) {\n elements[k].style.cssText = elements[k].style.cssText.replace(/(line-height\\s*:\\s*)[\\d.,]+(?=\\s*px)/gi, '$1' + replaceValue);\n }\n }\n }\n }\n }\n }\n }\n\n /*\n * Add captions to track, store for later adding, or add captions added before\n */\n function addCaptions(trackIdx, timeOffset, captionData) {\n const track = getTrackByIdx(trackIdx);\n const self = this;\n\n if (!track) {\n return;\n }\n\n if (!captionData || captionData.length === 0) {\n return;\n }\n\n for (let item in captionData) {\n let cue;\n const currentItem = captionData[item];\n\n track.cellResolution = currentItem.cellResolution;\n track.isFromCEA608 = currentItem.isFromCEA608;\n\n if (currentItem.type === 'html') {\n cue = new Cue(currentItem.start - timeOffset, currentItem.end - timeOffset, '');\n cue.cueHTMLElement = currentItem.cueHTMLElement;\n cue.isd = currentItem.isd;\n cue.images = currentItem.images;\n cue.embeddedImages = currentItem.embeddedImages;\n cue.cueID = currentItem.cueID;\n cue.scaleCue = scaleCue.bind(self);\n //useful parameters for cea608 subtitles, not for TTML one.\n cue.cellResolution = currentItem.cellResolution;\n cue.lineHeight = currentItem.lineHeight;\n cue.linePadding = currentItem.linePadding;\n cue.fontSize = currentItem.fontSize;\n\n captionContainer.style.left = actualVideoLeft + 'px';\n captionContainer.style.top = actualVideoTop + 'px';\n captionContainer.style.width = actualVideoWidth + 'px';\n captionContainer.style.height = actualVideoHeight + 'px';\n\n cue.onenter = function () {\n if (track.mode === Constants.TEXT_SHOWING) {\n if (this.isd) {\n const finalCue = document.createElement('div');\n log('Cue enter id:' + this.cueID);\n captionContainer.appendChild(finalCue);\n renderHTML(this.isd, finalCue, function (uri) {\n const imsc1ImgUrnTester = /^(urn:)(mpeg:[a-z0-9][a-z0-9-]{0,31}:)(subs:)([0-9])$/;\n const smpteImgUrnTester = /^#(.*)$/;\n if (imsc1ImgUrnTester.test(uri)) {\n const match = imsc1ImgUrnTester.exec(uri);\n const imageId = parseInt(match[4], 10) - 1;\n const imageData = btoa(cue.images[imageId]);\n const dataUrl = 'data:image/png;base64,' + imageData;\n return dataUrl;\n } else if (smpteImgUrnTester.test(uri)) {\n const match = smpteImgUrnTester.exec(uri);\n const imageId = match[1];\n const dataUrl = 'data:image/png;base64,' + cue.embeddedImages[imageId];\n return dataUrl;\n } else {\n return null;\n }\n }, captionContainer.clientHeight, captionContainer.clientWidth);\n finalCue.id = this.cueID;\n } else {\n captionContainer.appendChild(this.cueHTMLElement);\n scaleCue.call(self, this);\n }\n }\n };\n\n cue.onexit = function () {\n const divs = captionContainer.childNodes;\n for (let i = 0; i < divs.length; ++i) {\n if (divs[i].id === this.cueID) {\n log('Cue exit id:' + divs[i].id);\n captionContainer.removeChild(divs[i]);\n }\n }\n };\n } else {\n cue = new Cue(currentItem.start - timeOffset, currentItem.end - timeOffset, currentItem.data);\n if (currentItem.styles) {\n if (currentItem.styles.align !== undefined && 'align' in cue) {\n cue.align = currentItem.styles.align;\n }\n if (currentItem.styles.line !== undefined && 'line' in cue) {\n cue.line = currentItem.styles.line;\n }\n if (currentItem.styles.position !== undefined && 'position' in cue) {\n cue.position = currentItem.styles.position;\n }\n if (currentItem.styles.size !== undefined && 'size' in cue) {\n cue.size = currentItem.styles.size;\n }\n }\n }\n\n track.addCue(cue);\n }\n }\n\n function getTrackByIdx(idx) {\n return idx >= 0 && textTrackQueue[idx] ?\n videoModel.getTextTrack(textTrackQueue[idx].kind, textTrackQueue[idx].label, textTrackQueue[idx].lang) : null;\n }\n\n function getCurrentTrackIdx() {\n return currentTrackIdx;\n }\n\n function getTrackIdxForId(trackId) {\n let idx = -1;\n for (let i = 0; i < textTrackQueue.length; i++) {\n if (textTrackQueue[i].label === trackId) {\n idx = i;\n break;\n }\n }\n\n return idx;\n }\n\n function setCurrentTrackIdx(idx) {\n if (idx === currentTrackIdx) {\n return;\n }\n currentTrackIdx = idx;\n const track = getTrackByIdx(currentTrackIdx);\n setCueStyleOnTrack.call(this, track);\n\n if (videoSizeCheckInterval) {\n clearInterval(videoSizeCheckInterval);\n videoSizeCheckInterval = null;\n }\n\n if (track && track.renderingType === 'html') {\n checkVideoSize.call(this, track);\n videoSizeCheckInterval = setInterval(checkVideoSize.bind(this, track), 500);\n }\n }\n\n function setCueStyleOnTrack(track) {\n clearCaptionContainer.call(this);\n if (track) {\n if (track.renderingType === 'html') {\n setNativeCueStyle.call(this);\n } else {\n removeNativeCueStyle.call(this);\n }\n } else {\n removeNativeCueStyle.call(this);\n }\n }\n\n function deleteTrackCues(track) {\n if (track.cues) {\n const cues = track.cues;\n const lastIdx = cues.length - 1;\n\n for (let r = lastIdx; r >= 0 ; r--) {\n track.removeCue(cues[r]);\n }\n }\n }\n\n function deleteCuesFromTrackIdx(trackIdx) {\n const track = getTrackByIdx(trackIdx);\n if (track) {\n deleteTrackCues(track);\n }\n }\n\n function deleteAllTextTracks() {\n const ln = trackElementArr ? trackElementArr.length : 0;\n for (let i = 0; i < ln; i++) {\n if (isChrome) {\n videoModel.removeChild(trackElementArr[i]);\n } else {\n const track = getTrackByIdx(i);\n if (track) {\n deleteTrackCues.call(this, track);\n track.mode = 'disabled';\n }\n }\n }\n trackElementArr = [];\n textTrackQueue = [];\n if (videoSizeCheckInterval) {\n clearInterval(videoSizeCheckInterval);\n videoSizeCheckInterval = null;\n }\n currentTrackIdx = -1;\n clearCaptionContainer.call(this);\n }\n\n function deleteTextTrack(idx) {\n videoModel.removeChild(trackElementArr[idx]);\n trackElementArr.splice(idx, 1);\n }\n\n /* Set native cue style to transparent background to avoid it being displayed. */\n function setNativeCueStyle() {\n if (!isChrome) {\n return;\n }\n let styleElement = document.getElementById('native-cue-style');\n if (styleElement) {\n return; //Already set\n }\n\n styleElement = document.createElement('style');\n styleElement.id = 'native-cue-style';\n document.head.appendChild(styleElement);\n const stylesheet = styleElement.sheet;\n const video = videoModel.getElement();\n if (video) {\n if (video.id) {\n stylesheet.insertRule('#' + video.id + '::cue {background: transparent}', 0);\n } else if (video.classList.length !== 0) {\n stylesheet.insertRule('.' + video.className + '::cue {background: transparent}', 0);\n } else {\n stylesheet.insertRule('video::cue {background: transparent}', 0);\n }\n }\n }\n\n /* Remove the extra cue style with transparent background for native cues. */\n function removeNativeCueStyle() {\n if (!isChrome) {\n return;\n }\n const styleElement = document.getElementById('native-cue-style');\n if (styleElement) {\n document.head.removeChild(styleElement);\n }\n }\n\n function clearCaptionContainer() {\n if (captionContainer) {\n while (captionContainer.firstChild) {\n captionContainer.removeChild(captionContainer.firstChild);\n }\n }\n }\n\n function setConfig(config) {\n if (!config) {\n return;\n }\n if (config.videoModel) {\n videoModel = config.videoModel;\n }\n }\n\n function setModeForTrackIdx(idx, mode) {\n const track = getTrackByIdx(idx);\n if (track && track.mode !== mode) {\n track.mode = mode;\n }\n }\n\n function getCurrentTrackInfo() {\n return textTrackQueue[currentTrackIdx];\n }\n\n instance = {\n initialize: initialize,\n displayCConTop: displayCConTop,\n addTextTrack: addTextTrack,\n addCaptions: addCaptions,\n getCurrentTrackIdx: getCurrentTrackIdx,\n setCurrentTrackIdx: setCurrentTrackIdx,\n getTrackIdxForId: getTrackIdxForId,\n getCurrentTrackInfo: getCurrentTrackInfo,\n setModeForTrackIdx: setModeForTrackIdx,\n deleteCuesFromTrackIdx: deleteCuesFromTrackIdx,\n deleteAllTextTracks: deleteAllTextTracks,\n deleteTextTrack: deleteTextTrack,\n setConfig: setConfig\n };\n\n return instance;\n}\n\nTextTracks.__dashjs_factory_name = 'TextTracks';\nexport default FactoryMaker.getSingletonFactory(TextTracks);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport InitCache from '../utils/InitCache';\n\nconst BUFFER_CONTROLLER_TYPE = 'NotFragmentedTextBufferController';\nfunction NotFragmentedTextBufferController(config) {\n\n config = config || {};\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n let sourceBufferController = config.sourceBufferController;\n let errHandler = config.errHandler;\n let type = config.type;\n let streamProcessor = config.streamProcessor;\n\n let instance,\n isBufferingCompleted,\n initialized,\n mediaSource,\n buffer,\n seekStartTime,\n representationController,\n initCache;\n\n function setup() {\n\n initialized = false;\n mediaSource = null;\n buffer = null;\n representationController = null;\n isBufferingCompleted = false;\n\n eventBus.on(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.on(Events.INIT_FRAGMENT_LOADED, onInitFragmentLoaded, this);\n }\n\n function getBufferControllerType() {\n return BUFFER_CONTROLLER_TYPE;\n }\n\n function initialize(source) {\n setMediaSource(source);\n representationController = streamProcessor.getRepresentationController();\n initCache = InitCache(context).getInstance();\n }\n\n /**\n * @param {MediaInfo }mediaInfo\n * @returns {Object} SourceBuffer object\n * @memberof BufferController#\n */\n function createBuffer(mediaInfo) {\n try {\n buffer = sourceBufferController.createSourceBuffer(mediaSource, mediaInfo);\n\n if (!initialized) {\n if (buffer.hasOwnProperty(Constants.INITIALIZE)) {\n buffer.initialize(type, streamProcessor);\n }\n initialized = true;\n }\n } catch (e) {\n errHandler.mediaSourceError('Error creating ' + type + ' source buffer.');\n }\n\n return buffer;\n }\n\n function getType() {\n return type;\n }\n\n function getBuffer() {\n return buffer;\n }\n\n function setBuffer(value) {\n buffer = value;\n }\n\n function setMediaSource(value) {\n mediaSource = value;\n }\n\n function getMediaSource() {\n return mediaSource;\n }\n\n function getStreamProcessor() {\n return streamProcessor;\n }\n\n function setSeekStartTime(value) {\n seekStartTime = value;\n }\n\n function getSeekStartTime() {\n return seekStartTime;\n }\n\n function getBufferLevel() {\n return 0;\n }\n\n function getIsBufferingCompleted() {\n return isBufferingCompleted;\n }\n\n function reset(errored) {\n\n eventBus.off(Events.DATA_UPDATE_COMPLETED, onDataUpdateCompleted, this);\n eventBus.off(Events.INIT_FRAGMENT_LOADED, onInitFragmentLoaded, this);\n\n if (!errored) {\n sourceBufferController.abort(mediaSource, buffer);\n sourceBufferController.removeSourceBuffer(mediaSource, buffer);\n }\n }\n\n function onDataUpdateCompleted(e) {\n if (e.sender.getStreamProcessor() !== streamProcessor) {\n return;\n }\n\n eventBus.trigger(Events.TIMED_TEXT_REQUESTED, {\n index: 0,\n sender: e.sender\n }); //TODO make index dynamic if referring to MP?\n }\n\n function onInitFragmentLoaded(e) {\n if (e.fragmentModel !== streamProcessor.getFragmentModel() || (!e.chunk.bytes)) {\n return;\n }\n initCache.save(e.chunk);\n sourceBufferController.append(buffer, e.chunk);\n }\n\n function switchInitData(streamId, representationId) {\n const chunk = initCache.extract(streamId, representationId);\n if (chunk) {\n sourceBufferController.append(buffer, chunk);\n } else {\n eventBus.trigger(Events.INIT_REQUESTED, {\n sender: instance\n });\n }\n }\n\n instance = {\n getBufferControllerType: getBufferControllerType,\n initialize: initialize,\n createBuffer: createBuffer,\n getType: getType,\n getStreamProcessor: getStreamProcessor,\n setSeekStartTime: setSeekStartTime,\n getSeekStartTime: getSeekStartTime,\n getBuffer: getBuffer,\n setBuffer: setBuffer,\n getBufferLevel: getBufferLevel,\n setMediaSource: setMediaSource,\n getMediaSource: getMediaSource,\n getIsBufferingCompleted: getIsBufferingCompleted,\n switchInitData: switchInitData,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nNotFragmentedTextBufferController.__dashjs_factory_name = BUFFER_CONTROLLER_TYPE;\nexport default FactoryMaker.getClassFactory(NotFragmentedTextBufferController);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport BufferController from './../controllers/BufferController';\nimport NotFragmentedTextBufferController from './NotFragmentedTextBufferController';\n\nfunction TextBufferController(config) {\n\n config = config || {};\n let context = this.context;\n\n let _BufferControllerImpl;\n\n let instance;\n\n function setup() {\n\n // according to text type, we create corresponding buffer controller\n if (config.type === Constants.FRAGMENTED_TEXT) {\n\n // in this case, internal buffer ocntroller is a classical BufferController object\n _BufferControllerImpl = BufferController(context).create({\n type: config.type,\n metricsModel: config.metricsModel,\n mediaPlayerModel: config.mediaPlayerModel,\n manifestModel: config.manifestModel,\n sourceBufferController: config.sourceBufferController,\n errHandler: config.errHandler,\n streamController: config.streamController,\n mediaController: config.mediaController,\n adapter: config.adapter,\n textController: config.textController,\n abrController: config.abrController,\n playbackController: config.playbackController,\n streamProcessor: config.streamProcessor\n });\n } else {\n\n // in this case, internal buffer controller is a not fragmented text controller object\n _BufferControllerImpl = NotFragmentedTextBufferController(context).create({\n type: config.type,\n errHandler: config.errHandler,\n sourceBufferController: config.sourceBufferController,\n streamProcessor: config.streamProcessor\n });\n }\n }\n\n function getBufferControllerType() {\n return _BufferControllerImpl.getBufferControllerType();\n }\n\n function initialize(source, StreamProcessor) {\n return _BufferControllerImpl.initialize(source, StreamProcessor);\n }\n\n /**\n * @param {MediaInfo }mediaInfo\n * @returns {Object} SourceBuffer object\n * @memberof BufferController#\n */\n function createBuffer(mediaInfo) {\n return _BufferControllerImpl.createBuffer(mediaInfo);\n }\n\n function getType() {\n return _BufferControllerImpl.getType();\n }\n\n function getBuffer() {\n return _BufferControllerImpl.getBuffer();\n }\n\n function setBuffer(value) {\n _BufferControllerImpl.setBuffer(value);\n }\n\n function getMediaSource() {\n return _BufferControllerImpl.getMediaSource();\n }\n\n function setMediaSource(value) {\n _BufferControllerImpl.setMediaSource(value);\n }\n\n function getStreamProcessor() {\n _BufferControllerImpl.getStreamProcessor();\n }\n\n function setSeekStartTime(value) {\n _BufferControllerImpl.setSeekStartTime(value);\n }\n\n function getBufferLevel() {\n return _BufferControllerImpl.getBufferLevel();\n }\n\n function reset(errored) {\n _BufferControllerImpl.reset(errored);\n }\n\n function getIsBufferingCompleted() {\n return _BufferControllerImpl.getIsBufferingCompleted();\n }\n\n function switchInitData(streamId, representationId) {\n _BufferControllerImpl.switchInitData(streamId, representationId);\n }\n\n instance = {\n getBufferControllerType: getBufferControllerType,\n initialize: initialize,\n createBuffer: createBuffer,\n getType: getType,\n getStreamProcessor: getStreamProcessor,\n setSeekStartTime: setSeekStartTime,\n getBuffer: getBuffer,\n setBuffer: setBuffer,\n getBufferLevel: getBufferLevel,\n setMediaSource: setMediaSource,\n getMediaSource: getMediaSource,\n getIsBufferingCompleted: getIsBufferingCompleted,\n switchInitData: switchInitData,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nTextBufferController.__dashjs_factory_name = 'TextBufferController';\nexport default FactoryMaker.getClassFactory(TextBufferController);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport TextSourceBuffer from './TextSourceBuffer';\nimport TextTracks from './TextTracks';\nimport VTTParser from '../utils/VTTParser';\nimport TTMLParser from '../utils/TTMLParser';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\n\nfunction TextController() {\n\n let context = this.context;\n let instance;\n let textSourceBuffer;\n\n let errHandler,\n dashManifestModel,\n manifestModel,\n mediaController,\n videoModel,\n streamController,\n textTracks,\n vttParser,\n ttmlParser,\n eventBus,\n defaultLanguage,\n lastEnabledIndex,\n textDefaultEnabled, // this is used for default settings (each time a file is loaded, we check value of this settings )\n allTracksAreDisabled; // this is used for one session (when a file has been loaded, we use this settings to enable/disable text)\n\n function setup() {\n\n defaultLanguage = '';\n lastEnabledIndex = -1;\n textDefaultEnabled = true;\n textTracks = TextTracks(context).getInstance();\n vttParser = VTTParser(context).getInstance();\n ttmlParser = TTMLParser(context).getInstance();\n textSourceBuffer = TextSourceBuffer(context).getInstance();\n eventBus = EventBus(context).getInstance();\n\n textTracks.initialize();\n eventBus.on(Events.TEXT_TRACKS_QUEUE_INITIALIZED, onTextTracksAdded, instance);\n\n resetInitialSettings();\n }\n\n function setConfig(config) {\n if (!config) {\n return;\n }\n if (config.errHandler) {\n errHandler = config.errHandler;\n }\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n if (config.mediaController) {\n mediaController = config.mediaController;\n }\n if (config.videoModel) {\n videoModel = config.videoModel;\n }\n if (config.streamController) {\n streamController = config.streamController;\n }\n if (config.textTracks) {\n textTracks = config.textTracks;\n }\n if (config.vttParser) {\n vttParser = config.vttParser;\n }\n if (config.ttmlParser) {\n ttmlParser = config.ttmlParser;\n }\n\n // create config for source buffer\n textSourceBuffer.setConfig({\n errHandler: errHandler,\n dashManifestModel: dashManifestModel,\n manifestModel: manifestModel,\n mediaController: mediaController,\n videoModel: videoModel,\n streamController: streamController,\n textTracks: textTracks,\n vttParser: vttParser,\n ttmlParser: ttmlParser\n });\n }\n\n function getTextSourceBuffer() {\n return textSourceBuffer;\n }\n\n function getAllTracksAreDisabled() {\n return allTracksAreDisabled;\n }\n\n function addEmbeddedTrack(mediaInfo) {\n textSourceBuffer.addEmbeddedTrack(mediaInfo);\n }\n\n function setTextDefaultLanguage(lang) {\n if (typeof lang !== 'string') {\n return;\n }\n\n defaultLanguage = lang;\n }\n\n function getTextDefaultLanguage() {\n return defaultLanguage;\n }\n\n function onTextTracksAdded(e) {\n let tracks = e.tracks;\n let index = e.index;\n // find track corresponding to default subtitle and apply it\n let defaultLanguageIndex = tracks.findIndex((item) => {\n return (item.lang === defaultLanguage);\n });\n\n if (defaultLanguageIndex !== -1) {\n this.setTextTrack(defaultLanguageIndex);\n index = defaultLanguageIndex;\n }\n\n if (!textDefaultEnabled) {\n // disable text at startup\n this.setTextTrack(-1);\n }\n\n lastEnabledIndex = index;\n eventBus.trigger(Events.TEXT_TRACKS_ADDED, {\n enabled: !allTracksAreDisabled,\n index: index,\n tracks: tracks\n });\n }\n\n function setTextDefaultEnabled(enable) {\n if (typeof enable !== 'boolean') {\n return;\n }\n textDefaultEnabled = enable;\n }\n\n function getTextDefaultEnabled() {\n return textDefaultEnabled;\n }\n\n function enableText(enable) {\n if (typeof enable !== 'boolean') {\n return;\n }\n let isTextEnabled = (!allTracksAreDisabled);\n if (isTextEnabled !== enable) {\n // change track selection\n if (enable) {\n // apply last enabled tractk\n this.setTextTrack(lastEnabledIndex);\n }\n\n if (!enable) {\n // keep last index and disable text track\n lastEnabledIndex = this.getCurrentTrackIdx();\n this.setTextTrack(-1);\n }\n }\n }\n\n function isTextEnabled() {\n return !allTracksAreDisabled;\n }\n\n function setTextTrack(idx) {\n //For external time text file, the only action needed to change a track is marking the track mode to showing.\n // Fragmented text tracks need the additional step of calling TextController.setTextTrack();\n\n let config = textSourceBuffer.getConfig();\n let fragmentModel = config.fragmentModel;\n let fragmentedTracks = config.fragmentedTracks;\n\n let oldTrackIdx = textTracks.getCurrentTrackIdx();\n if (oldTrackIdx !== idx) {\n textTracks.setModeForTrackIdx(oldTrackIdx, Constants.TEXT_HIDDEN);\n textTracks.setCurrentTrackIdx(idx);\n textTracks.setModeForTrackIdx(idx, Constants.TEXT_SHOWING);\n\n let currentTrackInfo = textTracks.getCurrentTrackInfo();\n\n if (currentTrackInfo && currentTrackInfo.isFragmented && !currentTrackInfo.isEmbedded) {\n for (let i = 0; i < fragmentedTracks.length; i++) {\n let mediaInfo = fragmentedTracks[i];\n if (currentTrackInfo.lang === mediaInfo.lang && currentTrackInfo.index === mediaInfo.index &&\n (currentTrackInfo.label ? currentTrackInfo.label === mediaInfo.id : true)) {\n let currentFragTrack = mediaController.getCurrentTrackFor(Constants.FRAGMENTED_TEXT, streamController.getActiveStreamInfo());\n if (mediaInfo !== currentFragTrack) {\n fragmentModel.abortRequests();\n fragmentModel.removeExecutedRequestsBeforeTime();\n textSourceBuffer.remove();\n textTracks.deleteCuesFromTrackIdx(oldTrackIdx);\n mediaController.setTrack(mediaInfo);\n textSourceBuffer.setCurrentFragmentedTrackIdx(i);\n }\n }\n }\n }\n }\n\n allTracksAreDisabled = idx === -1 ? true : false;\n }\n\n function getCurrentTrackIdx() {\n return textTracks.getCurrentTrackIdx();\n }\n\n function resetInitialSettings() {\n allTracksAreDisabled = false;\n }\n\n function reset() {\n resetInitialSettings();\n textSourceBuffer.resetEmbedded();\n }\n\n instance = {\n setConfig: setConfig,\n getTextSourceBuffer: getTextSourceBuffer,\n getAllTracksAreDisabled: getAllTracksAreDisabled,\n addEmbeddedTrack: addEmbeddedTrack,\n getTextDefaultLanguage: getTextDefaultLanguage,\n setTextDefaultLanguage: setTextDefaultLanguage,\n setTextDefaultEnabled: setTextDefaultEnabled,\n getTextDefaultEnabled: getTextDefaultEnabled,\n enableText: enableText,\n isTextEnabled: isTextEnabled,\n setTextTrack: setTextTrack,\n getCurrentTrackIdx: getCurrentTrackIdx,\n reset: reset\n };\n setup();\n return instance;\n}\n\nTextController.__dashjs_factory_name = 'TextController';\nexport default FactoryMaker.getSingletonFactory(TextController);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport {HTTPRequest} from '../vo/metrics/HTTPRequest';\nimport TextTrackInfo from '../vo/TextTrackInfo';\nimport FragmentedTextBoxParser from '../../dash/utils/FragmentedTextBoxParser';\nimport BoxParser from '../utils/BoxParser';\nimport CustomTimeRanges from '../utils/CustomTimeRanges';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\nimport TextTracks from './TextTracks';\nimport EmbeddedTextHtmlRender from './EmbeddedTextHtmlRender';\nimport ISOBoxer from 'codem-isoboxer';\nimport cea608parser from '../../../externals/cea608-parser';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\n\nfunction TextSourceBuffer() {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n const eventBus = EventBus(context).getInstance();\n let embeddedInitialized = false;\n\n let instance,\n boxParser,\n errHandler,\n dashManifestModel,\n manifestModel,\n mediaController,\n parser,\n vttParser,\n ttmlParser,\n fragmentedTextBoxParser,\n mediaInfos,\n textTracks,\n isFragmented,\n fragmentModel,\n initializationSegmentReceived,\n timescale,\n fragmentedTracks,\n videoModel,\n streamController,\n firstSubtitleStart,\n currFragmentedTrackIdx,\n embeddedTracks,\n embeddedInitializationSegmentReceived,\n embeddedTimescale,\n embeddedLastSequenceNumber,\n embeddedSequenceNumbers,\n embeddedCea608FieldParsers,\n embeddedTextHtmlRender;\n\n function initialize(type, streamProcessor) {\n parser = null;\n fragmentModel = null;\n initializationSegmentReceived = false;\n timescale = NaN;\n fragmentedTracks = [];\n firstSubtitleStart = null;\n\n if (!embeddedInitialized) {\n initEmbedded();\n }\n\n mediaInfos = streamProcessor.getMediaInfoArr();\n textTracks.setConfig({\n videoModel: videoModel\n });\n textTracks.initialize();\n isFragmented = !dashManifestModel.getIsTextTrack(type);\n boxParser = BoxParser(context).getInstance();\n fragmentedTextBoxParser = FragmentedTextBoxParser(context).getInstance();\n fragmentedTextBoxParser.setConfig({\n boxParser: boxParser\n });\n\n if (isFragmented) {\n fragmentModel = streamProcessor.getFragmentModel();\n this.buffered = CustomTimeRanges(context).create();\n fragmentedTracks = mediaController.getTracksFor(Constants.FRAGMENTED_TEXT, streamController.getActiveStreamInfo());\n const currFragTrack = mediaController.getCurrentTrackFor(Constants.FRAGMENTED_TEXT, streamController.getActiveStreamInfo());\n for (let i = 0; i < fragmentedTracks.length; i++) {\n if (fragmentedTracks[i] === currFragTrack) {\n currFragmentedTrackIdx = i;\n break;\n }\n }\n }\n }\n\n function abort() {\n textTracks.deleteAllTextTracks();\n parser = null;\n fragmentedTextBoxParser = null;\n mediaInfos = null;\n textTracks = null;\n isFragmented = false;\n fragmentModel = null;\n initializationSegmentReceived = false;\n timescale = NaN;\n fragmentedTracks = [];\n videoModel = null;\n streamController = null;\n embeddedInitialized = false;\n embeddedTracks = null;\n }\n\n\n function onVideoChunkReceived(e) {\n const chunk = e.chunk;\n\n if (chunk.mediaInfo.embeddedCaptions) {\n append(chunk.bytes, chunk);\n }\n }\n\n function initEmbedded() {\n embeddedTracks = [];\n mediaInfos = [];\n textTracks = TextTracks(context).getInstance();\n textTracks.setConfig({\n videoModel: videoModel\n });\n textTracks.initialize();\n boxParser = BoxParser(context).getInstance();\n fragmentedTextBoxParser = FragmentedTextBoxParser(context).getInstance();\n fragmentedTextBoxParser.setConfig({\n boxParser: boxParser\n });\n isFragmented = false;\n currFragmentedTrackIdx = null;\n embeddedInitializationSegmentReceived = false;\n embeddedTimescale = 0;\n embeddedCea608FieldParsers = [];\n embeddedSequenceNumbers = [];\n embeddedLastSequenceNumber = null;\n embeddedInitialized = true;\n embeddedTextHtmlRender = EmbeddedTextHtmlRender(context).getInstance();\n\n eventBus.on(Events.VIDEO_CHUNK_RECEIVED, onVideoChunkReceived, this);\n }\n\n function resetEmbedded() {\n eventBus.off(Events.VIDEO_CHUNK_RECEIVED, onVideoChunkReceived, this);\n if (textTracks) {\n textTracks.deleteAllTextTracks();\n }\n embeddedInitialized = false;\n embeddedTracks = [];\n embeddedCea608FieldParsers = [null, null];\n embeddedSequenceNumbers = [];\n embeddedLastSequenceNumber = null;\n }\n\n function addEmbeddedTrack(mediaInfo) {\n if (!embeddedInitialized) {\n initEmbedded();\n }\n if (mediaInfo.id === Constants.CC1 || mediaInfo.id === Constants.CC3) {\n embeddedTracks.push(mediaInfo);\n } else {\n log('Warning: Embedded track ' + mediaInfo.id + ' not supported!');\n }\n }\n\n function setConfig(config) {\n if (!config) {\n return;\n }\n if (config.errHandler) {\n errHandler = config.errHandler;\n }\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n if (config.manifestModel) {\n manifestModel = config.manifestModel;\n }\n if (config.mediaController) {\n mediaController = config.mediaController;\n }\n if (config.videoModel) {\n videoModel = config.videoModel;\n }\n if (config.streamController) {\n streamController = config.streamController;\n }\n if (config.textTracks) {\n textTracks = config.textTracks;\n }\n if (config.vttParser) {\n vttParser = config.vttParser;\n }\n if (config.ttmlParser) {\n ttmlParser = config.ttmlParser;\n }\n }\n\n function getConfig() {\n let config = {\n errHandler: errHandler,\n dashManifestModel: dashManifestModel,\n mediaController: mediaController,\n videoModel: videoModel,\n fragmentModel: fragmentModel,\n streamController: streamController,\n textTracks: textTracks,\n isFragmented: isFragmented,\n embeddedTracks: embeddedTracks,\n fragmentedTracks: fragmentedTracks\n };\n\n return config;\n }\n\n function setCurrentFragmentedTrackIdx(idx) {\n currFragmentedTrackIdx = idx;\n }\n\n function append(bytes, chunk) {\n let result,\n sampleList,\n i, j, k,\n samplesInfo,\n ccContent;\n let mediaInfo = chunk.mediaInfo;\n let mediaType = mediaInfo.type;\n let mimeType = mediaInfo.mimeType;\n let codecType = mediaInfo.codec || mimeType;\n if (!codecType) {\n log('No text type defined');\n return;\n }\n\n function createTextTrackFromMediaInfo(captionData, mediaInfo) {\n let textTrackInfo = new TextTrackInfo();\n let trackKindMap = { subtitle: 'subtitles', caption: 'captions' }; //Dash Spec has no \"s\" on end of KIND but HTML needs plural.\n const getKind = function () {\n let kind = (mediaInfo.roles.length > 0) ? trackKindMap[mediaInfo.roles[0]] : trackKindMap.caption;\n kind = (kind === trackKindMap.caption || kind === trackKindMap.subtitle) ? kind : trackKindMap.caption;\n return kind;\n };\n\n const checkTTML = function () {\n let ttml = false;\n if (mediaInfo.codec && mediaInfo.codec.search(Constants.STPP) >= 0) {\n ttml = true;\n }\n if (mediaInfo.mimeType && mediaInfo.mimeType.search(Constants.TTML) >= 0) {\n ttml = true;\n }\n return ttml;\n };\n\n textTrackInfo.captionData = captionData;\n textTrackInfo.lang = mediaInfo.lang;\n textTrackInfo.label = mediaInfo.id; // AdaptationSet id (an unsigned int)\n textTrackInfo.index = mediaInfo.index; // AdaptationSet index in manifest\n textTrackInfo.isTTML = checkTTML();\n textTrackInfo.defaultTrack = getIsDefault(mediaInfo);\n textTrackInfo.isFragmented = isFragmented;\n textTrackInfo.isEmbedded = mediaInfo.isEmbedded ? true : false;\n textTrackInfo.kind = getKind();\n textTrackInfo.roles = mediaInfo.roles;\n let totalNrTracks = (mediaInfos ? mediaInfos.length : 0) + embeddedTracks.length;\n textTracks.addTextTrack(textTrackInfo, totalNrTracks);\n }\n\n if (mediaType === Constants.FRAGMENTED_TEXT) {\n if (!initializationSegmentReceived) {\n initializationSegmentReceived = true;\n for (i = 0; i < mediaInfos.length; i++) {\n createTextTrackFromMediaInfo(null, mediaInfos[i]);\n }\n timescale = fragmentedTextBoxParser.getMediaTimescaleFromMoov(bytes);\n } else {\n samplesInfo = fragmentedTextBoxParser.getSamplesInfo(bytes);\n sampleList = samplesInfo.sampleList;\n if (!firstSubtitleStart && sampleList.length > 0) {\n firstSubtitleStart = sampleList[0].cts - chunk.start * timescale;\n }\n if (codecType.search(Constants.STPP) >= 0) {\n parser = parser !== null ? parser : getParser(codecType);\n for (i = 0; i < sampleList.length; i++) {\n let sample = sampleList[i];\n let sampleStart = sample.cts;\n let sampleRelStart = sampleStart - firstSubtitleStart;\n this.buffered.add(sampleRelStart / timescale, (sampleRelStart + sample.duration) / timescale);\n let dataView = new DataView(bytes, sample.offset, sample.subSizes[0]);\n ccContent = ISOBoxer.Utils.dataViewToString(dataView, Constants.UTF8);\n let images = [];\n let subOffset = sample.offset + sample.subSizes[0];\n for (j = 1; j < sample.subSizes.length; j++) {\n let inData = new Uint8Array(bytes, subOffset, sample.subSizes[j]);\n let raw = String.fromCharCode.apply(null, inData);\n images.push(raw);\n subOffset += sample.subSizes[j];\n }\n try {\n // Only used for Miscrosoft Smooth Streaming support - caption time is relative to sample time. In this case, we apply an offset.\n let manifest = manifestModel.getValue();\n let offsetTime = manifest.ttmlTimeIsRelative ? sampleStart / timescale : 0;\n result = parser.parse(ccContent, offsetTime, sampleStart / timescale, (sampleStart + sample.duration) / timescale, images);\n textTracks.addCaptions(currFragmentedTrackIdx, firstSubtitleStart / timescale, result);\n } catch (e) {\n log('TTML parser error: ' + e.message);\n }\n }\n } else {\n // WebVTT case\n let captionArray = [];\n for (i = 0 ; i < sampleList.length; i++) {\n let sample = sampleList[i];\n sample.cts -= firstSubtitleStart;\n this.buffered.add(sample.cts / timescale, (sample.cts + sample.duration) / timescale);\n let sampleData = bytes.slice(sample.offset, sample.offset + sample.size);\n // There are boxes inside the sampleData, so we need a ISOBoxer to get at it.\n let sampleBoxes = ISOBoxer.parseBuffer(sampleData);\n\n for (j = 0 ; j < sampleBoxes.boxes.length; j++) {\n let box1 = sampleBoxes.boxes[j];\n log('VTT box1: ' + box1.type);\n if (box1.type === 'vtte') {\n continue; //Empty box\n }\n if (box1.type === 'vttc') {\n log('VTT vttc boxes.length = ' + box1.boxes.length);\n for (k = 0 ; k < box1.boxes.length; k++) {\n let box2 = box1.boxes[k];\n log('VTT box2: ' + box2.type);\n if (box2.type === 'payl') {\n let cue_text = box2.cue_text;\n log('VTT cue_text = ' + cue_text);\n let start_time = sample.cts / timescale;\n let end_time = (sample.cts + sample.duration) / timescale;\n captionArray.push({\n start: start_time,\n end: end_time,\n data: cue_text,\n styles: {}\n });\n log('VTT ' + start_time + '-' + end_time + ' : ' + cue_text);\n }\n }\n }\n }\n }\n if (captionArray.length > 0) {\n textTracks.addCaptions(currFragmentedTrackIdx, 0, captionArray);\n }\n }\n }\n } else if (mediaType === Constants.TEXT) {\n let dataView = new DataView(bytes, 0, bytes.byteLength);\n ccContent = ISOBoxer.Utils.dataViewToString(dataView, Constants.UTF8);\n\n try {\n result = getParser(codecType).parse(ccContent, 0);\n createTextTrackFromMediaInfo(result, mediaInfo);\n } catch (e) {\n errHandler.timedTextError(e, 'parse', ccContent);\n }\n } else if (mediaType === Constants.VIDEO) { //embedded text\n if (chunk.segmentType === HTTPRequest.INIT_SEGMENT_TYPE) {\n if (embeddedTimescale === 0) {\n embeddedTimescale = fragmentedTextBoxParser.getMediaTimescaleFromMoov(bytes);\n for (i = 0; i < embeddedTracks.length; i++) {\n createTextTrackFromMediaInfo(null, embeddedTracks[i]);\n }\n }\n } else { // MediaSegment\n if (embeddedTimescale === 0) {\n log('CEA-608: No timescale for embeddedTextTrack yet');\n return;\n }\n const makeCueAdderForIndex = function (self, trackIndex) {\n function newCue(startTime, endTime, captionScreen) {\n let captionsArray = null;\n if (videoModel.getTTMLRenderingDiv()) {\n captionsArray = embeddedTextHtmlRender.createHTMLCaptionsFromScreen(videoModel.getElement(), startTime, endTime, captionScreen);\n } else {\n let text = captionScreen.getDisplayText();\n //log(\"CEA text: \" + startTime + \"-\" + endTime + \" '\" + text + \"'\");\n captionsArray = [{\n start: startTime,\n end: endTime,\n data: text,\n styles: {}\n }];\n }\n if (captionsArray) {\n textTracks.addCaptions(trackIndex, 0, captionsArray);\n }\n }\n return newCue;\n };\n\n\n samplesInfo = fragmentedTextBoxParser.getSamplesInfo(bytes);\n\n let sequenceNumber = samplesInfo.lastSequenceNumber;\n\n if (!embeddedCea608FieldParsers[0] && !embeddedCea608FieldParsers[1]) {\n // Time to setup the CEA-608 parsing\n let field, handler, trackIdx;\n for (i = 0; i < embeddedTracks.length; i++) {\n if (embeddedTracks[i].id === Constants.CC1) {\n field = 0;\n trackIdx = textTracks.getTrackIdxForId(Constants.CC1);\n } else if (embeddedTracks[i].id === Constants.CC3) {\n field = 1;\n trackIdx = textTracks.getTrackIdxForId(Constants.CC3);\n }\n if (trackIdx === -1) {\n log('CEA-608: data before track is ready.');\n return;\n }\n handler = makeCueAdderForIndex(this, trackIdx);\n embeddedCea608FieldParsers[i] = new cea608parser.Cea608Parser(i, {\n 'newCue': handler\n }, null);\n }\n }\n\n if (embeddedTimescale && embeddedSequenceNumbers.indexOf(sequenceNumber) == -1) {\n if (embeddedLastSequenceNumber !== null && sequenceNumber !== embeddedLastSequenceNumber + samplesInfo.numSequences) {\n for (i = 0; i < embeddedCea608FieldParsers.length; i++) {\n if (embeddedCea608FieldParsers[i]) {\n embeddedCea608FieldParsers[i].reset();\n }\n }\n }\n\n let allCcData = extractCea608Data(bytes, samplesInfo.sampleList);\n\n for (let fieldNr = 0; fieldNr < embeddedCea608FieldParsers.length; fieldNr++) {\n let ccData = allCcData.fields[fieldNr];\n let fieldParser = embeddedCea608FieldParsers[fieldNr];\n if (fieldParser) {\n /*if (ccData.length > 0 ) {\n log(\"CEA-608 adding Data to field \" + fieldNr + \" \" + ccData.length + \"bytes\");\n }*/\n for (i = 0; i < ccData.length; i++) {\n fieldParser.addData(ccData[i][0] / embeddedTimescale, ccData[i][1]);\n }\n }\n }\n embeddedLastSequenceNumber = sequenceNumber;\n embeddedSequenceNumbers.push(sequenceNumber);\n }\n }\n }\n }\n /**\n * Extract CEA-608 data from a buffer of data.\n * @param {ArrayBuffer} data\n * @param {Array} samples cue information\n * @returns {Object|null} ccData corresponding to one segment.\n */\n function extractCea608Data(data, samples) {\n\n if (samples.length === 0) {\n return null;\n }\n\n let allCcData = {\n splits: [],\n fields: [[], []]\n };\n let raw = new DataView(data);\n for (let i = 0; i < samples.length; i++) {\n let sample = samples[i];\n let cea608Ranges = cea608parser.findCea608Nalus(raw, sample.offset, sample.size);\n let lastSampleTime = null;\n let idx = 0;\n for (let j = 0; j < cea608Ranges.length; j++) {\n let ccData = cea608parser.extractCea608DataFromRange(raw, cea608Ranges[j]);\n for (let k = 0; k < 2; k++) {\n if (ccData[k].length > 0) {\n if (sample.cts !== lastSampleTime) {\n idx = 0;\n } else {\n idx += 1;\n }\n allCcData.fields[k].push([sample.cts, ccData[k], idx]);\n lastSampleTime = sample.cts;\n }\n }\n }\n }\n\n // Sort by sampleTime ascending order\n // If two packets have the same sampleTime, use them in the order\n // they were received\n allCcData.fields.forEach(function sortField(field) {\n field.sort(function (a, b) {\n if (a[0] === b[0]) {\n return a[2] - b[2];\n }\n return a[0] - b[0];\n });\n });\n\n return allCcData;\n }\n\n function getIsDefault(mediaInfo) {\n //TODO How to tag default. currently same order as listed in manifest.\n // Is there a way to mark a text adaptation set as the default one? DASHIF meeting talk about using role which is being used for track KIND\n // Eg subtitles etc. You can have multiple role tags per adaptation Not defined in the spec yet.\n let isDefault = false;\n if (embeddedTracks.length > 1 && mediaInfo.isEmbedded) {\n isDefault = (mediaInfo.id && mediaInfo.id === Constants.CC1); // CC1 if both CC1 and CC3 exist\n } else if (embeddedTracks.length === 1) {\n if (mediaInfo.id && mediaInfo.id.substring(0, 2) === 'CC') { // Either CC1 or CC3\n isDefault = true;\n }\n } else if (embeddedTracks.length === 0) {\n isDefault = (mediaInfo.index === mediaInfos[0].index);\n }\n return isDefault;\n }\n\n function getParser(codecType) {\n let parser;\n if (codecType.search(Constants.VTT) >= 0) {\n parser = vttParser;\n } else if (codecType.search(Constants.TTML) >= 0 || codecType.search(Constants.STPP) >= 0) {\n parser = ttmlParser;\n }\n return parser;\n }\n\n function remove(start, end) {\n //if start and end are not defined, remove all\n if ((start === undefined) && (start === end)) {\n start = this.buffered.start(0);\n end = this.buffered.end(this.buffered.length - 1);\n }\n this.buffered.remove(start, end);\n }\n\n instance = {\n initialize: initialize,\n append: append,\n abort: abort,\n addEmbeddedTrack: addEmbeddedTrack,\n resetEmbedded: resetEmbedded,\n setConfig: setConfig,\n getConfig: getConfig,\n setCurrentFragmentedTrackIdx: setCurrentFragmentedTrackIdx,\n remove: remove\n };\n\n return instance;\n}\n\nTextSourceBuffer.__dashjs_factory_name = 'TextSourceBuffer';\nexport default FactoryMaker.getSingletonFactory(TextSourceBuffer);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport Constants from '../constants/Constants';\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\nimport { renderHTML } from 'imsc';\n\nfunction TextTracks() {\n\n const context = this.context;\n const eventBus = EventBus(context).getInstance();\n const log = Debug(context).getInstance().log;\n\n let instance,\n Cue,\n videoModel,\n textTrackQueue,\n trackElementArr,\n currentTrackIdx,\n actualVideoLeft,\n actualVideoTop,\n actualVideoWidth,\n actualVideoHeight,\n captionContainer,\n videoSizeCheckInterval,\n isChrome,\n fullscreenAttribute,\n displayCCOnTop,\n topZIndex;\n\n function initialize() {\n if (typeof window === 'undefined' || typeof navigator === 'undefined') {\n return;\n }\n\n Cue = window.VTTCue || window.TextTrackCue;\n textTrackQueue = [];\n trackElementArr = [];\n currentTrackIdx = -1;\n actualVideoLeft = 0;\n actualVideoTop = 0;\n actualVideoWidth = 0;\n actualVideoHeight = 0;\n captionContainer = null;\n videoSizeCheckInterval = null;\n displayCCOnTop = false;\n topZIndex = 2147483647;\n\n //TODO Check if IE has resolved issues: Then revert to not using the addTextTrack API for all browsers.\n // https://connect.microsoft.com/IE/feedbackdetail/view/1660701/text-tracks-do-not-fire-change-addtrack-or-removetrack-events\n // https://connect.microsoft.com/IE/feedback/details/1573380/htmltrackelement-track-addcue-throws-invalidstateerror-when-adding-new-cue\n // Same issue with Firefox.\n //isIE11orEdge = !!navigator.userAgent.match(/Trident.*rv[ :]*11\\./) || navigator.userAgent.match(/Edge/);\n //isFirefox = !!navigator.userAgent.match(/Firefox/);\n isChrome = !!navigator.userAgent.match(/Chrome/) && !navigator.userAgent.match(/Edge/);\n if (document.fullscreenElement !== undefined) {\n fullscreenAttribute = 'fullscreenElement'; // Standard and Edge\n } else if (document.webkitIsFullScreen !== undefined) {\n fullscreenAttribute = 'webkitIsFullScreen'; // Chrome and Safari (and Edge)\n } else if (document.msFullscreenElement) { // IE11\n fullscreenAttribute = 'msFullscreenElement';\n } else if (document.mozFullScreen) { // Firefox\n fullscreenAttribute = 'mozFullScreen';\n }\n\n }\n\n function createTrackForUserAgent (i) {\n const kind = textTrackQueue[i].kind;\n const label = textTrackQueue[i].label !== undefined ? textTrackQueue[i].label : textTrackQueue[i].lang;\n const lang = textTrackQueue[i].lang;\n const isTTML = textTrackQueue[i].isTTML;\n const isEmbedded = textTrackQueue[i].isEmbedded;\n const track = isChrome ? document.createElement('track') : videoModel.addTextTrack(kind, label, lang);\n\n if (isChrome) {\n track.kind = kind;\n track.label = label;\n track.srclang = lang;\n }\n\n track.isEmbedded = isEmbedded;\n track.isTTML = isTTML;\n\n return track;\n }\n\n function displayCConTop(value) {\n displayCCOnTop = value;\n if (!captionContainer || document[fullscreenAttribute]) {\n return;\n }\n captionContainer.style.zIndex = value ? topZIndex : null;\n }\n\n function addTextTrack(textTrackInfoVO, totalTextTracks) {\n if (textTrackQueue.length === totalTextTracks) {\n log('Trying to add too many tracks.');\n return;\n }\n\n textTrackQueue.push(textTrackInfoVO);\n\n if (textTrackQueue.length === totalTextTracks) {\n textTrackQueue.sort(function (a, b) { //Sort in same order as in manifest\n return a.index - b.index;\n });\n captionContainer = videoModel.getTTMLRenderingDiv();\n let defaultIndex = -1;\n for (let i = 0 ; i < textTrackQueue.length; i++) {\n const track = createTrackForUserAgent.call(this, i);\n trackElementArr.push(track); //used to remove tracks from video element when added manually\n\n if (textTrackQueue[i].defaultTrack) {\n // track.default is an object property identifier that is a reserved word\n // The following jshint directive is used to suppressed the warning \"Expected an identifier and instead saw 'default' (a reserved word)\"\n /*jshint -W024 */\n track.default = true;\n defaultIndex = i;\n }\n if (isChrome) {\n videoModel.appendChild(track);\n }\n\n const textTrack = getTrackByIdx(i);\n if (textTrack) {\n //each time a track is created, its mode should be showing by default\n //sometime, it's not on Chrome\n textTrack.mode = Constants.TEXT_SHOWING;\n if (captionContainer && (textTrackQueue[i].isTTML || textTrackQueue[i].isEmbedded)) {\n textTrack.renderingType = 'html';\n } else {\n textTrack.renderingType = 'default';\n }\n }\n this.addCaptions(i, 0, textTrackQueue[i].captionData);\n eventBus.trigger(Events.TEXT_TRACK_ADDED);\n }\n\n //set current track index in textTrackQueue array\n setCurrentTrackIdx.call(this, defaultIndex);\n\n if (defaultIndex >= 0) {\n for (let idx = 0; idx < textTrackQueue.length; idx++) {\n const videoTextTrack = getTrackByIdx(idx);\n if (videoTextTrack) {\n videoTextTrack.mode = (idx === defaultIndex) ? Constants.TEXT_SHOWING : Constants.TEXT_HIDDEN;\n }\n }\n }\n\n eventBus.trigger(Events.TEXT_TRACKS_QUEUE_INITIALIZED, {\n index: currentTrackIdx,\n tracks: textTrackQueue\n }); //send default idx.\n }\n }\n\n function getVideoVisibleVideoSize(viewWidth, viewHeight, videoWidth, videoHeight, aspectRatio, use80Percent) {\n const viewAspectRatio = viewWidth / viewHeight;\n const videoAspectRatio = videoWidth / videoHeight;\n\n let videoPictureWidth = 0;\n let videoPictureHeight = 0;\n\n if (viewAspectRatio > videoAspectRatio) {\n videoPictureHeight = viewHeight;\n videoPictureWidth = (videoPictureHeight / videoHeight) * videoWidth;\n } else {\n videoPictureWidth = viewWidth;\n videoPictureHeight = (videoPictureWidth / videoWidth) * videoHeight;\n }\n\n let videoPictureXAspect = 0;\n let videoPictureYAspect = 0;\n let videoPictureWidthAspect = 0;\n let videoPictureHeightAspect = 0;\n const videoPictureAspect = videoPictureWidth / videoPictureHeight;\n\n if (videoPictureAspect > aspectRatio) {\n videoPictureHeightAspect = videoPictureHeight;\n videoPictureWidthAspect = videoPictureHeight * aspectRatio;\n } else {\n videoPictureWidthAspect = videoPictureWidth;\n videoPictureHeightAspect = videoPictureWidth / aspectRatio;\n }\n videoPictureXAspect = (viewWidth - videoPictureWidthAspect) / 2;\n videoPictureYAspect = (viewHeight - videoPictureHeightAspect) / 2;\n\n if (use80Percent) {\n return {\n x: videoPictureXAspect + (videoPictureWidthAspect * 0.1),\n y: videoPictureYAspect + (videoPictureHeightAspect * 0.1),\n w: videoPictureWidthAspect * 0.8,\n h: videoPictureHeightAspect * 0.8\n }; /* Maximal picture size in videos aspect ratio */\n } else {\n return {\n x: videoPictureXAspect,\n y: videoPictureYAspect,\n w: videoPictureWidthAspect,\n h: videoPictureHeightAspect\n }; /* Maximal picture size in videos aspect ratio */\n }\n }\n\n function checkVideoSize(track) {\n const clientWidth = videoModel.getClientWidth();\n const clientHeight = videoModel.getClientHeight();\n const videoWidth = videoModel.getVideoWidth();\n const videoHeight = videoModel.getVideoHeight();\n const videoOffsetTop = videoModel.getVideoRelativeOffsetTop();\n const videoOffsetLeft = videoModel.getVideoRelativeOffsetLeft();\n let aspectRatio = videoWidth / videoHeight;\n let use80Percent = false;\n if (track.isFromCEA608) {\n // If this is CEA608 then use predefined aspect ratio\n aspectRatio = 3.5 / 3.0;\n use80Percent = true;\n }\n\n const realVideoSize = getVideoVisibleVideoSize.call(this, clientWidth, clientHeight, videoWidth, videoHeight, aspectRatio, use80Percent);\n\n const newVideoWidth = realVideoSize.w;\n const newVideoHeight = realVideoSize.h;\n const newVideoLeft = realVideoSize.x;\n const newVideoTop = realVideoSize.y;\n\n if (newVideoWidth != actualVideoWidth || newVideoHeight != actualVideoHeight || newVideoLeft != actualVideoLeft || newVideoTop != actualVideoTop) {\n actualVideoLeft = newVideoLeft + videoOffsetLeft;\n actualVideoTop = newVideoTop + videoOffsetTop;\n actualVideoWidth = newVideoWidth;\n actualVideoHeight = newVideoHeight;\n captionContainer.style.left = actualVideoLeft + 'px';\n captionContainer.style.top = actualVideoTop + 'px';\n captionContainer.style.width = actualVideoWidth + 'px';\n captionContainer.style.height = actualVideoHeight + 'px';\n\n // Video view has changed size, so resize any active cues\n for (let i = 0; track.activeCues && i < track.activeCues.length; ++i) {\n const cue = track.activeCues[i];\n cue.scaleCue(cue);\n }\n\n if ((fullscreenAttribute && document[fullscreenAttribute]) || displayCCOnTop) {\n captionContainer.style.zIndex = topZIndex;\n } else {\n captionContainer.style.zIndex = null;\n }\n }\n }\n\n function scaleCue(activeCue) {\n const videoWidth = actualVideoWidth;\n const videoHeight = actualVideoHeight;\n let key,\n replaceValue,\n valueFontSize,\n valueLineHeight,\n elements;\n\n if (activeCue.cellResolution) {\n const cellUnit = [videoWidth / activeCue.cellResolution[0], videoHeight / activeCue.cellResolution[1]];\n if (activeCue.linePadding) {\n for (key in activeCue.linePadding) {\n if (activeCue.linePadding.hasOwnProperty(key)) {\n const valueLinePadding = activeCue.linePadding[key];\n replaceValue = (valueLinePadding * cellUnit[0]).toString();\n // Compute the CellResolution unit in order to process properties using sizing (fontSize, linePadding, etc).\n const elementsSpan = document.getElementsByClassName('spanPadding');\n for (let i = 0; i < elementsSpan.length; i++) {\n elementsSpan[i].style.cssText = elementsSpan[i].style.cssText.replace(/(padding-left\\s*:\\s*)[\\d.,]+(?=\\s*px)/gi, '$1' + replaceValue);\n elementsSpan[i].style.cssText = elementsSpan[i].style.cssText.replace(/(padding-right\\s*:\\s*)[\\d.,]+(?=\\s*px)/gi, '$1' + replaceValue);\n }\n }\n }\n }\n\n if (activeCue.fontSize) {\n for (key in activeCue.fontSize) {\n if (activeCue.fontSize.hasOwnProperty(key)) {\n if (activeCue.fontSize[key][0] === '%') {\n valueFontSize = activeCue.fontSize[key][1] / 100;\n } else if (activeCue.fontSize[key][0] === 'c') {\n valueFontSize = activeCue.fontSize[key][1];\n }\n\n replaceValue = (valueFontSize * cellUnit[1]).toString();\n\n if (key !== 'defaultFontSize') {\n elements = document.getElementsByClassName(key);\n } else {\n elements = document.getElementsByClassName('paragraph');\n }\n\n for (let j = 0; j < elements.length; j++) {\n elements[j].style.cssText = elements[j].style.cssText.replace(/(font-size\\s*:\\s*)[\\d.,]+(?=\\s*px)/gi, '$1' + replaceValue);\n }\n }\n }\n\n if (activeCue.lineHeight) {\n for (key in activeCue.lineHeight) {\n if (activeCue.lineHeight.hasOwnProperty(key)) {\n if (activeCue.lineHeight[key][0] === '%') {\n valueLineHeight = activeCue.lineHeight[key][1] / 100;\n } else if (activeCue.fontSize[key][0] === 'c') {\n valueLineHeight = activeCue.lineHeight[key][1];\n }\n\n replaceValue = (valueLineHeight * cellUnit[1]).toString();\n elements = document.getElementsByClassName(key);\n for (let k = 0; k < elements.length; k++) {\n elements[k].style.cssText = elements[k].style.cssText.replace(/(line-height\\s*:\\s*)[\\d.,]+(?=\\s*px)/gi, '$1' + replaceValue);\n }\n }\n }\n }\n }\n }\n\n if (activeCue.isd) {\n let htmlCaptionDiv = document.getElementById(activeCue.cueID);\n if (htmlCaptionDiv) {\n captionContainer.removeChild(htmlCaptionDiv);\n renderCaption(activeCue);\n }\n }\n }\n\n function renderCaption(cue) {\n const finalCue = document.createElement('div');\n captionContainer.appendChild(finalCue);\n renderHTML(cue.isd, finalCue, function (uri) {\n const imsc1ImgUrnTester = /^(urn:)(mpeg:[a-z0-9][a-z0-9-]{0,31}:)(subs:)([0-9])$/;\n const smpteImgUrnTester = /^#(.*)$/;\n if (imsc1ImgUrnTester.test(uri)) {\n const match = imsc1ImgUrnTester.exec(uri);\n const imageId = parseInt(match[4], 10) - 1;\n const imageData = btoa(cue.images[imageId]);\n const dataUrl = 'data:image/png;base64,' + imageData;\n return dataUrl;\n } else if (smpteImgUrnTester.test(uri)) {\n const match = smpteImgUrnTester.exec(uri);\n const imageId = match[1];\n const dataUrl = 'data:image/png;base64,' + cue.embeddedImages[imageId];\n return dataUrl;\n } else {\n return null;\n }\n }, captionContainer.clientHeight, captionContainer.clientWidth);\n finalCue.id = cue.cueID;\n }\n\n /*\n * Add captions to track, store for later adding, or add captions added before\n */\n function addCaptions(trackIdx, timeOffset, captionData) {\n const track = getTrackByIdx(trackIdx);\n const self = this;\n\n if (!track) {\n return;\n }\n\n if (!captionData || captionData.length === 0) {\n return;\n }\n\n for (let item in captionData) {\n let cue;\n const currentItem = captionData[item];\n\n track.cellResolution = currentItem.cellResolution;\n track.isFromCEA608 = currentItem.isFromCEA608;\n\n if (currentItem.type === 'html') {\n cue = new Cue(currentItem.start - timeOffset, currentItem.end - timeOffset, '');\n cue.cueHTMLElement = currentItem.cueHTMLElement;\n cue.isd = currentItem.isd;\n cue.images = currentItem.images;\n cue.embeddedImages = currentItem.embeddedImages;\n cue.cueID = currentItem.cueID;\n cue.scaleCue = scaleCue.bind(self);\n //useful parameters for cea608 subtitles, not for TTML one.\n cue.cellResolution = currentItem.cellResolution;\n cue.lineHeight = currentItem.lineHeight;\n cue.linePadding = currentItem.linePadding;\n cue.fontSize = currentItem.fontSize;\n\n captionContainer.style.left = actualVideoLeft + 'px';\n captionContainer.style.top = actualVideoTop + 'px';\n captionContainer.style.width = actualVideoWidth + 'px';\n captionContainer.style.height = actualVideoHeight + 'px';\n\n cue.onenter = function () {\n if (track.mode === Constants.TEXT_SHOWING) {\n if (this.isd) {\n renderCaption(this);\n log('Cue enter id:' + this.cueID);\n } else {\n captionContainer.appendChild(this.cueHTMLElement);\n scaleCue.call(self, this);\n }\n }\n };\n\n cue.onexit = function () {\n const divs = captionContainer.childNodes;\n for (let i = 0; i < divs.length; ++i) {\n if (divs[i].id === this.cueID) {\n log('Cue exit id:' + divs[i].id);\n captionContainer.removeChild(divs[i]);\n }\n }\n };\n } else {\n cue = new Cue(currentItem.start - timeOffset, currentItem.end - timeOffset, currentItem.data);\n if (currentItem.styles) {\n if (currentItem.styles.align !== undefined && 'align' in cue) {\n cue.align = currentItem.styles.align;\n }\n if (currentItem.styles.line !== undefined && 'line' in cue) {\n cue.line = currentItem.styles.line;\n }\n if (currentItem.styles.position !== undefined && 'position' in cue) {\n cue.position = currentItem.styles.position;\n }\n if (currentItem.styles.size !== undefined && 'size' in cue) {\n cue.size = currentItem.styles.size;\n }\n }\n }\n\n track.addCue(cue);\n }\n }\n\n function getTrackByIdx(idx) {\n return idx >= 0 && textTrackQueue[idx] ?\n videoModel.getTextTrack(textTrackQueue[idx].kind, textTrackQueue[idx].label, textTrackQueue[idx].lang, textTrackQueue[idx].isTTML, textTrackQueue[idx].isEmbedded) : null;\n }\n\n function getCurrentTrackIdx() {\n return currentTrackIdx;\n }\n\n function getTrackIdxForId(trackId) {\n let idx = -1;\n for (let i = 0; i < textTrackQueue.length; i++) {\n if (textTrackQueue[i].label === trackId) {\n idx = i;\n break;\n }\n }\n\n return idx;\n }\n\n function setCurrentTrackIdx(idx) {\n if (idx === currentTrackIdx) {\n return;\n }\n currentTrackIdx = idx;\n const track = getTrackByIdx(currentTrackIdx);\n setCueStyleOnTrack.call(this, track);\n\n if (videoSizeCheckInterval) {\n clearInterval(videoSizeCheckInterval);\n videoSizeCheckInterval = null;\n }\n\n if (track && track.renderingType === 'html') {\n checkVideoSize.call(this, track);\n videoSizeCheckInterval = setInterval(checkVideoSize.bind(this, track), 500);\n }\n }\n\n function setCueStyleOnTrack(track) {\n clearCaptionContainer.call(this);\n if (track) {\n if (track.renderingType === 'html') {\n setNativeCueStyle.call(this);\n } else {\n removeNativeCueStyle.call(this);\n }\n } else {\n removeNativeCueStyle.call(this);\n }\n }\n\n function deleteTrackCues(track) {\n if (track.cues) {\n const cues = track.cues;\n const lastIdx = cues.length - 1;\n\n for (let r = lastIdx; r >= 0 ; r--) {\n track.removeCue(cues[r]);\n }\n }\n }\n\n function deleteCuesFromTrackIdx(trackIdx) {\n const track = getTrackByIdx(trackIdx);\n if (track) {\n deleteTrackCues(track);\n }\n }\n\n function deleteAllTextTracks() {\n const ln = trackElementArr ? trackElementArr.length : 0;\n for (let i = 0; i < ln; i++) {\n if (isChrome) {\n videoModel.removeChild(trackElementArr[i]);\n } else {\n const track = getTrackByIdx(i);\n if (track) {\n deleteTrackCues.call(this, track);\n track.mode = 'disabled';\n }\n }\n }\n trackElementArr = [];\n textTrackQueue = [];\n if (videoSizeCheckInterval) {\n clearInterval(videoSizeCheckInterval);\n videoSizeCheckInterval = null;\n }\n currentTrackIdx = -1;\n clearCaptionContainer.call(this);\n }\n\n function deleteTextTrack(idx) {\n videoModel.removeChild(trackElementArr[idx]);\n trackElementArr.splice(idx, 1);\n }\n\n /* Set native cue style to transparent background to avoid it being displayed. */\n function setNativeCueStyle() {\n if (!isChrome) {\n return;\n }\n let styleElement = document.getElementById('native-cue-style');\n if (styleElement) {\n return; //Already set\n }\n\n styleElement = document.createElement('style');\n styleElement.id = 'native-cue-style';\n document.head.appendChild(styleElement);\n const stylesheet = styleElement.sheet;\n const video = videoModel.getElement();\n if (video) {\n if (video.id) {\n stylesheet.insertRule('#' + video.id + '::cue {background: transparent}', 0);\n } else if (video.classList.length !== 0) {\n stylesheet.insertRule('.' + video.className + '::cue {background: transparent}', 0);\n } else {\n stylesheet.insertRule('video::cue {background: transparent}', 0);\n }\n }\n }\n\n /* Remove the extra cue style with transparent background for native cues. */\n function removeNativeCueStyle() {\n if (!isChrome) {\n return;\n }\n const styleElement = document.getElementById('native-cue-style');\n if (styleElement) {\n document.head.removeChild(styleElement);\n }\n }\n\n function clearCaptionContainer() {\n if (captionContainer) {\n while (captionContainer.firstChild) {\n captionContainer.removeChild(captionContainer.firstChild);\n }\n }\n }\n\n function setConfig(config) {\n if (!config) {\n return;\n }\n if (config.videoModel) {\n videoModel = config.videoModel;\n }\n }\n\n function setModeForTrackIdx(idx, mode) {\n const track = getTrackByIdx(idx);\n if (track && track.mode !== mode) {\n track.mode = mode;\n }\n }\n\n function getCurrentTrackInfo() {\n return textTrackQueue[currentTrackIdx];\n }\n\n instance = {\n initialize: initialize,\n displayCConTop: displayCConTop,\n addTextTrack: addTextTrack,\n addCaptions: addCaptions,\n getCurrentTrackIdx: getCurrentTrackIdx,\n setCurrentTrackIdx: setCurrentTrackIdx,\n getTrackIdxForId: getTrackIdxForId,\n getCurrentTrackInfo: getCurrentTrackInfo,\n setModeForTrackIdx: setModeForTrackIdx,\n deleteCuesFromTrackIdx: deleteCuesFromTrackIdx,\n deleteAllTextTracks: deleteAllTextTracks,\n deleteTextTrack: deleteTextTrack,\n setConfig: setConfig\n };\n\n return instance;\n}\n\nTextTracks.__dashjs_factory_name = 'TextTracks';\nexport default FactoryMaker.getSingletonFactory(TextTracks);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport BlacklistController from '../controllers/BlacklistController';\nimport DVBSelector from './baseUrlResolution/DVBSelector';\nimport BasicSelector from './baseUrlResolution/BasicSelector';\nimport FactoryMaker from '../../core/FactoryMaker';\n\nconst URL_RESOLUTION_FAILED_GENERIC_ERROR_CODE = 1;\nconst URL_RESOLUTION_FAILED_GENERIC_ERROR_MESSAGE = 'Failed to resolve a valid URL';\n\nfunction BaseURLSelector() {\n\n const context = this.context;\n const eventBus = EventBus(context).getInstance();\n let dashManifestModel;\n\n let instance,\n serviceLocationBlacklistController,\n basicSelector,\n dvbSelector,\n selector;\n\n function setup() {\n serviceLocationBlacklistController = BlacklistController(context).create({\n updateEventName: Events.SERVICE_LOCATION_BLACKLIST_CHANGED,\n addBlacklistEventName: Events.SERVICE_LOCATION_BLACKLIST_ADD\n });\n\n basicSelector = BasicSelector(context).create({\n blacklistController: serviceLocationBlacklistController\n });\n\n dvbSelector = DVBSelector(context).create({\n blacklistController: serviceLocationBlacklistController\n });\n\n selector = basicSelector;\n }\n\n function setConfig(config) {\n if (config.selector) {\n selector = config.selector;\n }\n if (config.dashManifestModel) {\n dashManifestModel = config.dashManifestModel;\n }\n }\n\n function checkConfig() {\n if (!dashManifestModel || !dashManifestModel.hasOwnProperty('getIsDVB')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n function chooseSelectorFromManifest(manifest) {\n checkConfig();\n if (dashManifestModel.getIsDVB(manifest)) {\n selector = dvbSelector;\n } else {\n selector = basicSelector;\n }\n }\n\n function select(data) {\n const baseUrls = data.baseUrls;\n const selectedIdx = data.selectedIdx;\n\n // Once a random selection has been carried out amongst a group of BaseURLs with the same\n // @priority attribute value, then that choice should be re-used if the selection needs to be made again\n // unless the blacklist has been modified or the available BaseURLs have changed.\n if (!isNaN(selectedIdx)) {\n return baseUrls[selectedIdx];\n }\n\n let selectedBaseUrl = selector.select(baseUrls);\n\n if (!selectedBaseUrl) {\n eventBus.trigger(\n Events.URL_RESOLUTION_FAILED, {\n error: new Error(\n URL_RESOLUTION_FAILED_GENERIC_ERROR_CODE,\n URL_RESOLUTION_FAILED_GENERIC_ERROR_MESSAGE\n )\n }\n );\n\n return;\n }\n\n data.selectedIdx = baseUrls.indexOf(selectedBaseUrl);\n\n return selectedBaseUrl;\n }\n\n function reset() {\n serviceLocationBlacklistController.reset();\n }\n\n instance = {\n chooseSelectorFromManifest: chooseSelectorFromManifest,\n select: select,\n reset: reset,\n setConfig: setConfig\n };\n\n setup();\n\n return instance;\n}\n\nBaseURLSelector.__dashjs_factory_name = 'BaseURLSelector';\nlet factory = FactoryMaker.getClassFactory(BaseURLSelector);\nfactory.URL_RESOLUTION_FAILED_GENERIC_ERROR_CODE = URL_RESOLUTION_FAILED_GENERIC_ERROR_CODE;\nfactory.URL_RESOLUTION_FAILED_GENERIC_ERROR_MESSAGE = URL_RESOLUTION_FAILED_GENERIC_ERROR_MESSAGE;\nFactoryMaker.updateClassFactory(BaseURLSelector.__dashjs_factory_name, factory);\nexport default factory;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport IsoFile from './IsoFile';\nimport FactoryMaker from '../../core/FactoryMaker';\nimport ISOBoxer from 'codem-isoboxer';\n\nfunction BoxParser(/*config*/) {\n\n let instance;\n let context = this.context;\n\n /**\n * @param {ArrayBuffer} data\n * @returns {IsoFile|null}\n * @memberof BoxParser#\n */\n function parse(data) {\n if (!data) return null;\n\n if (data.fileStart === undefined) {\n data.fileStart = 0;\n }\n\n let parsedFile = ISOBoxer.parseBuffer(data);\n let dashIsoFile = IsoFile(context).create();\n\n dashIsoFile.setData(parsedFile);\n\n return dashIsoFile;\n }\n\n instance = {\n parse: parse\n };\n\n return instance;\n}\nBoxParser.__dashjs_factory_name = 'BoxParser';\nexport default FactoryMaker.getSingletonFactory(BoxParser);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker';\n\nfunction Capabilities() {\n\n let instance,\n encryptedMediaSupported;\n\n function setup() {\n encryptedMediaSupported = false;\n }\n\n function supportsMediaSource() {\n let hasWebKit = ('WebKitMediaSource' in window);\n let hasMediaSource = ('MediaSource' in window);\n\n return (hasWebKit || hasMediaSource);\n }\n\n /**\n * Returns whether Encrypted Media Extensions are supported on this\n * user agent\n *\n * @return {boolean} true if EME is supported, false otherwise\n */\n function supportsEncryptedMedia() {\n return encryptedMediaSupported;\n }\n\n function setEncryptedMediaSupported(value) {\n encryptedMediaSupported = value;\n }\n\n function supportsCodec(codec) {\n if ('MediaSource' in window && MediaSource.isTypeSupported(codec)) {\n return true;\n }\n\n if ('WebKitMediaSource' in window && WebKitMediaSource.isTypeSupported(codec)) {\n return true;\n }\n\n return false;\n }\n\n instance = {\n supportsMediaSource: supportsMediaSource,\n supportsEncryptedMedia: supportsEncryptedMedia,\n supportsCodec: supportsCodec,\n setEncryptedMediaSupported: setEncryptedMediaSupported\n };\n\n setup();\n\n return instance;\n}\nCapabilities.__dashjs_factory_name = 'Capabilities';\nexport default FactoryMaker.getSingletonFactory(Capabilities);", "/**\n* The copyright in this software is being made available under the BSD License,\n* included below. This software may be subject to other third party and contributor\n* rights, including patent rights, and no such rights are granted under this license.\n*\n* Copyright (c) 2013, Dash Industry Forum.\n* All rights reserved.\n*\n* Redistribution and use in source and binary forms, with or without modification,\n* are permitted provided that the following conditions are met:\n* * Redistributions of source code must retain the above copyright notice, this\n* list of conditions and the following disclaimer.\n* * Redistributions in binary form must reproduce the above copyright notice,\n* this list of conditions and the following disclaimer in the documentation and/or\n* other materials provided with the distribution.\n* * Neither the name of Dash Industry Forum nor the names of its\n* contributors may be used to endorse or promote products derived from this software\n* without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n*/\nimport FactoryMaker from '../../core/FactoryMaker';\n\nfunction CustomTimeRanges(/*config*/) {\n let customTimeRangeArray = [];\n let length = 0;\n\n function add(start, end) {\n let i = 0;\n\n for (i = 0; (i < this.customTimeRangeArray.length) && (start > this.customTimeRangeArray[i].start); i++);\n\n this.customTimeRangeArray.splice(i, 0, {start: start,end: end});\n\n for (i = 0; i < this.customTimeRangeArray.length - 1; i++) {\n if (this.mergeRanges(i,i + 1)) {\n i--;\n }\n }\n this.length = this.customTimeRangeArray.length;\n }\n\n function clear() {\n this.customTimeRangeArray = [];\n this.length = 0;\n }\n\n function remove(start, end) {\n for (let i = 0; i < this.customTimeRangeArray.length; i++) {\n if (start <= this.customTimeRangeArray[i].start && end >= this.customTimeRangeArray[i].end) {\n // |--------------Range i-------|\n //|---------------Range to remove ---------------|\n // or\n //|--------------Range i-------|\n //|--------------Range to remove ---------------|\n // or\n // |--------------Range i-------|\n //|--------------Range to remove ---------------|\n this.customTimeRangeArray.splice(i,1);\n i--;\n\n }else if (start > this.customTimeRangeArray[i].start && end < this.customTimeRangeArray[i].end) {\n //|-----------------Range i----------------|\n // |-------Range to remove -----|\n this.customTimeRangeArray.splice(i + 1, 0, {start: end,end: this.customTimeRangeArray[i].end});\n this.customTimeRangeArray[i].end = start;\n break;\n }else if ( start > this.customTimeRangeArray[i].start && start < this.customTimeRangeArray[i].end) {\n //|-----------Range i----------|\n // |---------Range to remove --------|\n // or\n //|-----------------Range i----------------|\n // |-------Range to remove -----|\n this.customTimeRangeArray[i].end = start;\n }else if ( end > this.customTimeRangeArray[i].start && end < this.customTimeRangeArray[i].end) {\n // |-----------Range i----------|\n //|---------Range to remove --------|\n // or\n //|-----------------Range i----------------|\n //|-------Range to remove -----|\n this.customTimeRangeArray[i].start = end;\n }\n }\n\n this.length = this.customTimeRangeArray.length;\n }\n\n function mergeRanges(rangeIndex1, rangeIndex2) {\n let range1 = this.customTimeRangeArray[rangeIndex1];\n let range2 = this.customTimeRangeArray[rangeIndex2];\n\n if (range1.start <= range2.start && range2.start <= range1.end && range1.end <= range2.end) {\n //|-----------Range1----------|\n // |-----------Range2----------|\n range1.end = range2.end;\n this.customTimeRangeArray.splice(rangeIndex2,1);\n return true;\n\n } else if (range2.start <= range1.start && range1.start <= range2.end && range2.end <= range1.end) {\n // |-----------Range1----------|\n //|-----------Range2----------|\n range1.start = range2.start;\n this.customTimeRangeArray.splice(rangeIndex2,1);\n return true;\n } else if (range2.start <= range1.start && range1.start <= range2.end && range1.end <= range2.end) {\n // |--------Range1-------|\n //|---------------Range2--------------|\n this.customTimeRangeArray.splice(rangeIndex1,1);\n return true;\n } else if (range1.start <= range2.start && range2.start <= range1.end && range2.end <= range1.end) {\n //|-----------------Range1--------------|\n // |-----------Range2----------|\n this.customTimeRangeArray.splice(rangeIndex2,1);\n return true;\n }\n return false;\n }\n\n function checkIndex(index) {\n const isInt = index !== null && !isNaN(index) && (index % 1 === 0);\n\n if (!isInt) {\n throw new Error('index argument is not an integer');\n }\n }\n\n function start(index) {\n checkIndex(index);\n\n if (index >= this.customTimeRangeArray.length || index < 0) {\n return NaN;\n }\n\n return this.customTimeRangeArray[index].start;\n }\n\n function end(index) {\n checkIndex(index);\n\n if (index >= this.customTimeRangeArray.length || index < 0) {\n return NaN;\n }\n\n return this.customTimeRangeArray[index].end;\n }\n\n return {\n customTimeRangeArray: customTimeRangeArray,\n length: length,\n add: add,\n clear: clear,\n remove: remove,\n mergeRanges: mergeRanges,\n start: start,\n end: end\n };\n}\nCustomTimeRanges.__dashjs_factory_name = 'CustomTimeRanges';\nexport default FactoryMaker.getClassFactory(CustomTimeRanges);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\n\nconst legacyKeysAndReplacements = [\n { oldKey: 'dashjs_vbitrate', newKey: 'dashjs_video_bitrate' },\n { oldKey: 'dashjs_abitrate', newKey: 'dashjs_audio_bitrate' },\n { oldKey: 'dashjs_vsettings', newKey: 'dashjs_video_settings' },\n { oldKey: 'dashjs_asettings', newKey: 'dashjs_audio_settings' }\n];\n\nconst LOCAL_STORAGE_BITRATE_KEY_TEMPLATE = 'dashjs_?_bitrate';\nconst LOCAL_STORAGE_SETTINGS_KEY_TEMPLATE = 'dashjs_?_settings';\n\nconst STORAGE_TYPE_LOCAL = 'localStorage';\nconst STORAGE_TYPE_SESSION = 'sessionStorage';\nconst LAST_BITRATE = 'LastBitrate';\nconst LAST_MEDIA_SETTINGS = 'LastMediaSettings';\n\nfunction DOMStorage(config) {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let mediaPlayerModel = config.mediaPlayerModel;\n\n let instance,\n supported;\n\n //type can be local, session\n function isSupported(type) {\n if (supported !== undefined) return supported;\n\n supported = false;\n\n let testKey = '1';\n let testValue = '1';\n let storage;\n\n try {\n if (typeof window !== 'undefined') {\n storage = window[type];\n }\n } catch (error) {\n log('Warning: DOMStorage access denied: ' + error.message);\n return supported;\n }\n\n if (!storage || (type !== STORAGE_TYPE_LOCAL && type !== STORAGE_TYPE_SESSION)) {\n return supported;\n }\n\n /* When Safari (OS X or iOS) is in private browsing mode, it appears as though localStorage is available, but trying to call setItem throws an exception.\n http://stackoverflow.com/questions/14555347/html5-localstorage-error-with-safari-quota-exceeded-err-dom-exception-22-an\n\n Check if the storage can be used\n */\n try {\n storage.setItem(testKey, testValue);\n storage.removeItem(testKey);\n supported = true;\n } catch (error) {\n log('Warning: DOMStorage is supported, but cannot be used: ' + error.message);\n }\n\n return supported;\n }\n\n function translateLegacyKeys() {\n if (isSupported(STORAGE_TYPE_LOCAL)) {\n legacyKeysAndReplacements.forEach(entry => {\n const value = localStorage.getItem(entry.oldKey);\n\n if (value) {\n localStorage.removeItem(entry.oldKey);\n\n try {\n localStorage.setItem(entry.newKey, value);\n } catch (e) {\n log(e.message);\n }\n }\n });\n }\n }\n\n function setup() {\n translateLegacyKeys();\n }\n\n // Return current epoch time, ms, rounded to the nearest 10m to avoid fingerprinting user\n function getTimestamp() {\n let ten_minutes_ms = 60 * 1000 * 10;\n return Math.round(new Date().getTime() / ten_minutes_ms) * ten_minutes_ms;\n }\n\n function canStore(storageType, key) {\n return isSupported(storageType) && mediaPlayerModel['get' + key + 'CachingInfo']().enabled;\n }\n\n function checkConfig() {\n if (!mediaPlayerModel || !mediaPlayerModel.hasOwnProperty('getLastMediaSettingsCachingInfo')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n function getSavedMediaSettings(type) {\n checkConfig();\n //Checks local storage to see if there is valid, non-expired media settings\n if (!canStore(STORAGE_TYPE_LOCAL, LAST_MEDIA_SETTINGS)) return null;\n\n let settings = null;\n const key = LOCAL_STORAGE_SETTINGS_KEY_TEMPLATE.replace(/\\?/, type);\n try {\n const obj = JSON.parse(localStorage.getItem(key)) || {};\n const isExpired = (new Date().getTime() - parseInt(obj.timestamp, 10)) >= mediaPlayerModel.getLastMediaSettingsCachingInfo().ttl || false;\n settings = obj.settings;\n\n if (isExpired) {\n localStorage.removeItem(key);\n settings = null;\n }\n } catch (e) {\n return null;\n }\n return settings;\n }\n\n function getSavedBitrateSettings(type) {\n let savedBitrate = NaN;\n\n checkConfig();\n\n //Checks local storage to see if there is valid, non-expired bit rate\n //hinting from the last play session to use as a starting bit rate.\n if (canStore(STORAGE_TYPE_LOCAL, LAST_BITRATE)) {\n const key = LOCAL_STORAGE_BITRATE_KEY_TEMPLATE.replace(/\\?/, type);\n try {\n const obj = JSON.parse(localStorage.getItem(key)) || {};\n const isExpired = (new Date().getTime() - parseInt(obj.timestamp, 10)) >= mediaPlayerModel.getLastMediaSettingsCachingInfo().ttl || false;\n const bitrate = parseFloat(obj.bitrate);\n\n if (!isNaN(bitrate) && !isExpired) {\n savedBitrate = bitrate;\n log('Last saved bitrate for ' + type + ' was ' + bitrate);\n } else if (isExpired) {\n localStorage.removeItem(key);\n }\n } catch (e) {\n return null;\n }\n }\n return savedBitrate;\n }\n\n function setSavedMediaSettings(type, value) {\n if (canStore(STORAGE_TYPE_LOCAL, LAST_MEDIA_SETTINGS)) {\n let key = LOCAL_STORAGE_SETTINGS_KEY_TEMPLATE.replace(/\\?/, type);\n try {\n localStorage.setItem(key, JSON.stringify({settings: value, timestamp: getTimestamp()}));\n } catch (e) {\n log(e.message);\n }\n }\n }\n\n function setSavedBitrateSettings(type, bitrate) {\n if (canStore(STORAGE_TYPE_LOCAL, LAST_BITRATE) && bitrate) {\n let key = LOCAL_STORAGE_BITRATE_KEY_TEMPLATE.replace(/\\?/, type);\n try {\n localStorage.setItem(key, JSON.stringify({bitrate: bitrate.toFixed(3), timestamp: getTimestamp()}));\n } catch (e) {\n log(e.message);\n }\n }\n }\n\n instance = {\n getSavedBitrateSettings: getSavedBitrateSettings,\n setSavedBitrateSettings: setSavedBitrateSettings,\n getSavedMediaSettings: getSavedMediaSettings,\n setSavedMediaSettings: setSavedMediaSettings\n };\n\n setup();\n return instance;\n}\n\nDOMStorage.__dashjs_factory_name = 'DOMStorage';\nlet factory = FactoryMaker.getSingletonFactory(DOMStorage);\nexport default factory;\n", - "import FactoryMaker from '../../core/FactoryMaker';\n\n/**\n * Creates an instance of an EBMLParser class which implements a large subset\n * of the functionality required to parse Matroska EBML\n *\n * @param {Object} config object with data member which is the buffer to parse\n */\nfunction EBMLParser(config) {\n\n let instance;\n\n let data = new DataView(config.data);\n let pos = 0;\n\n function getPos() {\n return pos;\n }\n\n function setPos(value) {\n pos = value;\n }\n\n /**\n * Consumes an EBML tag from the data stream.\n *\n * @param {Object} tag to parse, A tag is an object with at least a {number} tag and\n * {boolean} required flag.\n * @param {boolean} test whether or not the function should throw if a required\n * tag is not found\n * @return {boolean} whether or not the tag was found\n * @throws will throw an exception if a required tag is not found and test\n * param is false or undefined, or if the stream is malformed.\n * @memberof EBMLParser\n */\n function consumeTag(tag, test) {\n let found = true;\n let bytesConsumed = 0;\n let p1,\n p2;\n\n if (test === undefined) {\n test = false;\n }\n\n if (tag.tag > 0xFFFFFF) {\n if (data.getUint32(pos) !== tag.tag) {\n found = false;\n }\n bytesConsumed = 4;\n } else if (tag.tag > 0xFFFF) {\n // 3 bytes\n p1 = data.getUint16(pos);\n p2 = data.getUint8(pos + 2);\n\n // shift p1 over a byte and add p2\n if (p1 * 256 + p2 !== tag.tag) {\n found = false;\n }\n bytesConsumed = 3;\n } else if (tag.tag > 0xFF) {\n if (data.getUint16(pos) !== tag.tag) {\n found = false;\n }\n bytesConsumed = 2;\n } else {\n if (data.getUint8(pos) !== tag.tag) {\n found = false;\n }\n bytesConsumed = 1;\n }\n\n if (!found && tag.required && !test) {\n throw new Error('required tag not found');\n }\n\n if (found) {\n pos += bytesConsumed;\n }\n\n return found;\n }\n\n /**\n * Consumes an EBML tag from the data stream. If the tag is found then this\n * function will also remove the size field which follows the tag from the\n * data stream.\n *\n * @param {Object} tag to parse, A tag is an object with at least a {number} tag and\n * {boolean} required flag.\n * @param {boolean} test whether or not the function should throw if a required\n * tag is not found\n * @return {boolean} whether or not the tag was found\n * @throws will throw an exception if a required tag is not found and test\n * param is false or undefined, or if the stream is malformedata.\n * @memberof EBMLParser\n */\n function consumeTagAndSize(tag, test) {\n let found = consumeTag(tag, test);\n\n if (found) {\n getMatroskaCodedNum();\n }\n\n return found;\n }\n\n /**\n * Consumes an EBML tag from the data stream. If the tag is found then this\n * function will also remove the size field which follows the tag from the\n * data stream. It will use the value of the size field to parse a binary\n * field, using a parser defined in the tag itself\n *\n * @param {Object} tag to parse, A tag is an object with at least a {number} tag,\n * {boolean} required flag, and a parse function which takes a size parameter\n * @return {boolean} whether or not the tag was found\n * @throws will throw an exception if a required tag is not found,\n * or if the stream is malformed\n * @memberof EBMLParser\n */\n function parseTag(tag) {\n let size;\n\n consumeTag(tag);\n size = getMatroskaCodedNum();\n return instance[tag.parse](size);\n }\n\n /**\n * Consumes an EBML tag from the data stream. If the tag is found then this\n * function will also remove the size field which follows the tag from the\n * data stream. It will use the value of the size field to skip over the\n * entire section of EBML encapsulated by the tag.\n *\n * @param {Object} tag to parse, A tag is an object with at least a {number} tag, and\n * {boolean} required flag\n * @param {boolean} test a flag to indicate if an exception should be thrown\n * if a required tag is not found\n * @return {boolean} whether or not the tag was found\n * @throws will throw an exception if a required tag is not found and test is\n * false or undefined or if the stream is malformed\n * @memberof EBMLParser\n */\n function skipOverElement(tag, test) {\n let found = consumeTag(tag, test);\n let headerSize;\n\n if (found) {\n headerSize = getMatroskaCodedNum();\n pos += headerSize;\n }\n\n return found;\n }\n\n /**\n * Returns and consumes a number encoded according to the Matroska EBML\n * specification from the bitstream.\n *\n * @param {boolean} retainMSB whether or not to retain the Most Significant Bit (the\n * first 1). this is usually true when reading Tag IDs.\n * @return {number} the decoded number\n * @throws will throw an exception if the bit stream is malformed or there is\n * not enough data\n * @memberof EBMLParser\n */\n function getMatroskaCodedNum(retainMSB) {\n let bytesUsed = 1;\n let mask = 0x80;\n let maxBytes = 8;\n let extraBytes = -1;\n let num = 0;\n let ch = data.getUint8(pos);\n let i = 0;\n\n for (i = 0; i < maxBytes; i += 1) {\n if ((ch & mask) === mask) {\n num = (retainMSB === undefined) ? ch & ~mask : ch;\n extraBytes = i;\n break;\n }\n mask >>= 1;\n }\n\n for (i = 0; i < extraBytes; i += 1, bytesUsed += 1) {\n num = (num << 8) | (0xff & data.getUint8(pos + bytesUsed));\n }\n\n pos += bytesUsed;\n\n return num;\n }\n\n /**\n * Returns and consumes a float from the bitstream.\n *\n * @param {number} size 4 or 8 byte floats are supported\n * @return {number} the decoded number\n * @throws will throw an exception if the bit stream is malformed or there is\n * not enough data\n * @memberof EBMLParser\n */\n function getMatroskaFloat(size) {\n let outFloat;\n\n switch (size) {\n case 4:\n outFloat = data.getFloat32(pos);\n pos += 4;\n break;\n case 8:\n outFloat = data.getFloat64(pos);\n pos += 8;\n break;\n }\n return outFloat;\n }\n\n /**\n * Consumes and returns an unsigned int from the bitstream.\n *\n * @param {number} size 1 to 8 bytes\n * @return {number} the decoded number\n * @throws will throw an exception if the bit stream is malformed or there is\n * not enough data\n * @memberof EBMLParser\n */\n function getMatroskaUint(size) {\n let val = 0;\n\n for (let i = 0; i < size; i += 1) {\n val <<= 8;\n val |= data.getUint8(pos + i) & 0xff;\n }\n\n pos += size;\n return val;\n }\n\n /**\n * Tests whether there is more data in the bitstream for parsing\n *\n * @return {boolean} whether there is more data to parse\n * @memberof EBMLParser\n */\n function moreData() {\n return pos < data.byteLength;\n }\n\n instance = {\n getPos: getPos,\n setPos: setPos,\n consumeTag: consumeTag,\n consumeTagAndSize: consumeTagAndSize,\n parseTag: parseTag,\n skipOverElement: skipOverElement,\n getMatroskaCodedNum: getMatroskaCodedNum,\n getMatroskaFloat: getMatroskaFloat,\n getMatroskaUint: getMatroskaUint,\n moreData: moreData\n };\n\n return instance;\n}\n\nEBMLParser.__dashjs_factory_name = 'EBMLParser';\nexport default FactoryMaker.getClassFactory(EBMLParser);", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\n\nconst legacyKeysAndReplacements = [\n { oldKey: 'dashjs_vbitrate', newKey: 'dashjs_video_bitrate' },\n { oldKey: 'dashjs_abitrate', newKey: 'dashjs_audio_bitrate' },\n { oldKey: 'dashjs_vsettings', newKey: 'dashjs_video_settings' },\n { oldKey: 'dashjs_asettings', newKey: 'dashjs_audio_settings' }\n];\n\nconst LOCAL_STORAGE_BITRATE_KEY_TEMPLATE = 'dashjs_?_bitrate';\nconst LOCAL_STORAGE_SETTINGS_KEY_TEMPLATE = 'dashjs_?_settings';\n\nconst STORAGE_TYPE_LOCAL = 'localStorage';\nconst STORAGE_TYPE_SESSION = 'sessionStorage';\nconst LAST_BITRATE = 'LastBitrate';\nconst LAST_MEDIA_SETTINGS = 'LastMediaSettings';\n\nfunction DOMStorage(config) {\n\n config = config || {};\n let context = this.context;\n let log = Debug(context).getInstance().log;\n let mediaPlayerModel = config.mediaPlayerModel;\n\n let instance,\n supported;\n\n //type can be local, session\n function isSupported(type) {\n if (supported !== undefined) return supported;\n\n supported = false;\n\n let testKey = '1';\n let testValue = '1';\n let storage;\n\n try {\n if (typeof window !== 'undefined') {\n storage = window[type];\n }\n } catch (error) {\n log('Warning: DOMStorage access denied: ' + error.message);\n return supported;\n }\n\n if (!storage || (type !== STORAGE_TYPE_LOCAL && type !== STORAGE_TYPE_SESSION)) {\n return supported;\n }\n\n /* When Safari (OS X or iOS) is in private browsing mode, it appears as though localStorage is available, but trying to call setItem throws an exception.\n http://stackoverflow.com/questions/14555347/html5-localstorage-error-with-safari-quota-exceeded-err-dom-exception-22-an\n\n Check if the storage can be used\n */\n try {\n storage.setItem(testKey, testValue);\n storage.removeItem(testKey);\n supported = true;\n } catch (error) {\n log('Warning: DOMStorage is supported, but cannot be used: ' + error.message);\n }\n\n return supported;\n }\n\n function translateLegacyKeys() {\n if (isSupported(STORAGE_TYPE_LOCAL)) {\n legacyKeysAndReplacements.forEach(entry => {\n const value = localStorage.getItem(entry.oldKey);\n\n if (value) {\n localStorage.removeItem(entry.oldKey);\n\n try {\n localStorage.setItem(entry.newKey, value);\n } catch (e) {\n log(e.message);\n }\n }\n });\n }\n }\n\n function setup() {\n translateLegacyKeys();\n }\n\n // Return current epoch time, ms, rounded to the nearest 10m to avoid fingerprinting user\n function getTimestamp() {\n let ten_minutes_ms = 60 * 1000 * 10;\n return Math.round(new Date().getTime() / ten_minutes_ms) * ten_minutes_ms;\n }\n\n function canStore(storageType, key) {\n return isSupported(storageType) && mediaPlayerModel['get' + key + 'CachingInfo']().enabled;\n }\n\n function checkConfig() {\n if (!mediaPlayerModel || !mediaPlayerModel.hasOwnProperty('getLastMediaSettingsCachingInfo')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n function getSavedMediaSettings(type) {\n checkConfig();\n //Checks local storage to see if there is valid, non-expired media settings\n if (!canStore(STORAGE_TYPE_LOCAL, LAST_MEDIA_SETTINGS)) return null;\n\n let settings = null;\n const key = LOCAL_STORAGE_SETTINGS_KEY_TEMPLATE.replace(/\\?/, type);\n try {\n const obj = JSON.parse(localStorage.getItem(key)) || {};\n const isExpired = (new Date().getTime() - parseInt(obj.timestamp, 10)) >= mediaPlayerModel.getLastMediaSettingsCachingInfo().ttl || false;\n settings = obj.settings;\n\n if (isExpired) {\n localStorage.removeItem(key);\n settings = null;\n }\n } catch (e) {\n return null;\n }\n return settings;\n }\n\n function getSavedBitrateSettings(type) {\n let savedBitrate = NaN;\n\n checkConfig();\n\n //Checks local storage to see if there is valid, non-expired bit rate\n //hinting from the last play session to use as a starting bit rate.\n if (canStore(STORAGE_TYPE_LOCAL, LAST_BITRATE)) {\n const key = LOCAL_STORAGE_BITRATE_KEY_TEMPLATE.replace(/\\?/, type);\n try {\n const obj = JSON.parse(localStorage.getItem(key)) || {};\n const isExpired = (new Date().getTime() - parseInt(obj.timestamp, 10)) >= mediaPlayerModel.getLastMediaSettingsCachingInfo().ttl || false;\n const bitrate = parseFloat(obj.bitrate);\n\n if (!isNaN(bitrate) && !isExpired) {\n savedBitrate = bitrate;\n log('Last saved bitrate for ' + type + ' was ' + bitrate);\n } else if (isExpired) {\n localStorage.removeItem(key);\n }\n } catch (e) {\n return null;\n }\n }\n return savedBitrate;\n }\n\n function setSavedMediaSettings(type, value) {\n if (canStore(STORAGE_TYPE_LOCAL, LAST_MEDIA_SETTINGS)) {\n let key = LOCAL_STORAGE_SETTINGS_KEY_TEMPLATE.replace(/\\?/, type);\n try {\n localStorage.setItem(key, JSON.stringify({settings: value, timestamp: getTimestamp()}));\n } catch (e) {\n log(e.message);\n }\n }\n }\n\n function setSavedBitrateSettings(type, bitrate) {\n if (canStore(STORAGE_TYPE_LOCAL, LAST_BITRATE) && bitrate) {\n let key = LOCAL_STORAGE_BITRATE_KEY_TEMPLATE.replace(/\\?/, type);\n try {\n localStorage.setItem(key, JSON.stringify({bitrate: bitrate.toFixed(3), timestamp: getTimestamp()}));\n } catch (e) {\n log(e.message);\n }\n }\n }\n\n instance = {\n getSavedBitrateSettings: getSavedBitrateSettings,\n setSavedBitrateSettings: setSavedBitrateSettings,\n getSavedMediaSettings: getSavedMediaSettings,\n setSavedMediaSettings: setSavedMediaSettings\n };\n\n setup();\n return instance;\n}\n\nDOMStorage.__dashjs_factory_name = 'DOMStorage';\nlet factory = FactoryMaker.getSingletonFactory(DOMStorage);\nexport default factory;\n", + "import FactoryMaker from '../../core/FactoryMaker';\n\n/**\n * Creates an instance of an EBMLParser class which implements a large subset\n * of the functionality required to parse Matroska EBML\n *\n * @param {Object} config object with data member which is the buffer to parse\n */\nfunction EBMLParser(config) {\n\n config = config || {};\n let instance;\n\n let data = new DataView(config.data);\n let pos = 0;\n\n function getPos() {\n return pos;\n }\n\n function setPos(value) {\n pos = value;\n }\n\n /**\n * Consumes an EBML tag from the data stream.\n *\n * @param {Object} tag to parse, A tag is an object with at least a {number} tag and\n * {boolean} required flag.\n * @param {boolean} test whether or not the function should throw if a required\n * tag is not found\n * @return {boolean} whether or not the tag was found\n * @throws will throw an exception if a required tag is not found and test\n * param is false or undefined, or if the stream is malformed.\n * @memberof EBMLParser\n */\n function consumeTag(tag, test) {\n let found = true;\n let bytesConsumed = 0;\n let p1,\n p2;\n\n if (test === undefined) {\n test = false;\n }\n\n if (tag.tag > 0xFFFFFF) {\n if (data.getUint32(pos) !== tag.tag) {\n found = false;\n }\n bytesConsumed = 4;\n } else if (tag.tag > 0xFFFF) {\n // 3 bytes\n p1 = data.getUint16(pos);\n p2 = data.getUint8(pos + 2);\n\n // shift p1 over a byte and add p2\n if (p1 * 256 + p2 !== tag.tag) {\n found = false;\n }\n bytesConsumed = 3;\n } else if (tag.tag > 0xFF) {\n if (data.getUint16(pos) !== tag.tag) {\n found = false;\n }\n bytesConsumed = 2;\n } else {\n if (data.getUint8(pos) !== tag.tag) {\n found = false;\n }\n bytesConsumed = 1;\n }\n\n if (!found && tag.required && !test) {\n throw new Error('required tag not found');\n }\n\n if (found) {\n pos += bytesConsumed;\n }\n\n return found;\n }\n\n /**\n * Consumes an EBML tag from the data stream. If the tag is found then this\n * function will also remove the size field which follows the tag from the\n * data stream.\n *\n * @param {Object} tag to parse, A tag is an object with at least a {number} tag and\n * {boolean} required flag.\n * @param {boolean} test whether or not the function should throw if a required\n * tag is not found\n * @return {boolean} whether or not the tag was found\n * @throws will throw an exception if a required tag is not found and test\n * param is false or undefined, or if the stream is malformedata.\n * @memberof EBMLParser\n */\n function consumeTagAndSize(tag, test) {\n let found = consumeTag(tag, test);\n\n if (found) {\n getMatroskaCodedNum();\n }\n\n return found;\n }\n\n /**\n * Consumes an EBML tag from the data stream. If the tag is found then this\n * function will also remove the size field which follows the tag from the\n * data stream. It will use the value of the size field to parse a binary\n * field, using a parser defined in the tag itself\n *\n * @param {Object} tag to parse, A tag is an object with at least a {number} tag,\n * {boolean} required flag, and a parse function which takes a size parameter\n * @return {boolean} whether or not the tag was found\n * @throws will throw an exception if a required tag is not found,\n * or if the stream is malformed\n * @memberof EBMLParser\n */\n function parseTag(tag) {\n let size;\n\n consumeTag(tag);\n size = getMatroskaCodedNum();\n return instance[tag.parse](size);\n }\n\n /**\n * Consumes an EBML tag from the data stream. If the tag is found then this\n * function will also remove the size field which follows the tag from the\n * data stream. It will use the value of the size field to skip over the\n * entire section of EBML encapsulated by the tag.\n *\n * @param {Object} tag to parse, A tag is an object with at least a {number} tag, and\n * {boolean} required flag\n * @param {boolean} test a flag to indicate if an exception should be thrown\n * if a required tag is not found\n * @return {boolean} whether or not the tag was found\n * @throws will throw an exception if a required tag is not found and test is\n * false or undefined or if the stream is malformed\n * @memberof EBMLParser\n */\n function skipOverElement(tag, test) {\n let found = consumeTag(tag, test);\n let headerSize;\n\n if (found) {\n headerSize = getMatroskaCodedNum();\n pos += headerSize;\n }\n\n return found;\n }\n\n /**\n * Returns and consumes a number encoded according to the Matroska EBML\n * specification from the bitstream.\n *\n * @param {boolean} retainMSB whether or not to retain the Most Significant Bit (the\n * first 1). this is usually true when reading Tag IDs.\n * @return {number} the decoded number\n * @throws will throw an exception if the bit stream is malformed or there is\n * not enough data\n * @memberof EBMLParser\n */\n function getMatroskaCodedNum(retainMSB) {\n let bytesUsed = 1;\n let mask = 0x80;\n let maxBytes = 8;\n let extraBytes = -1;\n let num = 0;\n let ch = data.getUint8(pos);\n let i = 0;\n\n for (i = 0; i < maxBytes; i += 1) {\n if ((ch & mask) === mask) {\n num = (retainMSB === undefined) ? ch & ~mask : ch;\n extraBytes = i;\n break;\n }\n mask >>= 1;\n }\n\n for (i = 0; i < extraBytes; i += 1, bytesUsed += 1) {\n num = (num << 8) | (0xff & data.getUint8(pos + bytesUsed));\n }\n\n pos += bytesUsed;\n\n return num;\n }\n\n /**\n * Returns and consumes a float from the bitstream.\n *\n * @param {number} size 4 or 8 byte floats are supported\n * @return {number} the decoded number\n * @throws will throw an exception if the bit stream is malformed or there is\n * not enough data\n * @memberof EBMLParser\n */\n function getMatroskaFloat(size) {\n let outFloat;\n\n switch (size) {\n case 4:\n outFloat = data.getFloat32(pos);\n pos += 4;\n break;\n case 8:\n outFloat = data.getFloat64(pos);\n pos += 8;\n break;\n }\n return outFloat;\n }\n\n /**\n * Consumes and returns an unsigned int from the bitstream.\n *\n * @param {number} size 1 to 8 bytes\n * @return {number} the decoded number\n * @throws will throw an exception if the bit stream is malformed or there is\n * not enough data\n * @memberof EBMLParser\n */\n function getMatroskaUint(size) {\n let val = 0;\n\n for (let i = 0; i < size; i += 1) {\n val <<= 8;\n val |= data.getUint8(pos + i) & 0xff;\n }\n\n pos += size;\n return val;\n }\n\n /**\n * Tests whether there is more data in the bitstream for parsing\n *\n * @return {boolean} whether there is more data to parse\n * @memberof EBMLParser\n */\n function moreData() {\n return pos < data.byteLength;\n }\n\n instance = {\n getPos: getPos,\n setPos: setPos,\n consumeTag: consumeTag,\n consumeTagAndSize: consumeTagAndSize,\n parseTag: parseTag,\n skipOverElement: skipOverElement,\n getMatroskaCodedNum: getMatroskaCodedNum,\n getMatroskaFloat: getMatroskaFloat,\n getMatroskaUint: getMatroskaUint,\n moreData: moreData\n };\n\n return instance;\n}\n\nEBMLParser.__dashjs_factory_name = 'EBMLParser';\nexport default FactoryMaker.getClassFactory(EBMLParser);", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport EventBus from '../../core/EventBus';\nimport Events from '../../core/events/Events';\nimport FactoryMaker from '../../core/FactoryMaker';\n\nconst CAPABILITY_ERROR_MEDIASOURCE = 'mediasource';\nconst CAPABILITY_ERROR_MEDIAKEYS = 'mediakeys';\n\nconst DOWNLOAD_ERROR_ID_MANIFEST = 'manifest';\nconst DOWNLOAD_ERROR_ID_SIDX = 'SIDX';\nconst DOWNLOAD_ERROR_ID_CONTENT = 'content';\nconst DOWNLOAD_ERROR_ID_INITIALIZATION = 'initialization';\nconst DOWNLOAD_ERROR_ID_XLINK = 'xlink';\n\nconst MANIFEST_ERROR_ID_CODEC = 'codec';\nconst MANIFEST_ERROR_ID_PARSE = 'parse';\nconst MANIFEST_ERROR_ID_NOSTREAMS = 'nostreams';\n\nconst TIMED_TEXT_ERROR_ID_PARSE = 'parse';\n\nfunction ErrorHandler() {\n\n let instance;\n let context = this.context;\n let eventBus = EventBus(context).getInstance();\n\n // \"mediasource\"|\"mediakeys\"\n function capabilityError(err) {\n eventBus.trigger(Events.ERROR, {error: 'capability', event: err});\n }\n\n // {id: \"manifest\"|\"SIDX\"|\"content\"|\"initialization\"|\"xlink\", url: \"\", request: {XMLHttpRequest instance}}\n function downloadError(id, url, request) {\n eventBus.trigger(Events.ERROR, {error: 'download', event: {id: id, url: url, request: request}});\n }\n\n // {message: \"\", id: \"codec\"|\"parse\"|\"nostreams\", manifest: {parsed manifest}}\n function manifestError(message, id, manifest, err) {\n eventBus.trigger(Events.ERROR, {error: 'manifestError', event: {message: message, id: id, manifest: manifest, event: err}});\n }\n\n // {message: '', id: 'parse', cc: ''}\n function timedTextError(message, id, ccContent) {\n eventBus.trigger(Events.ERROR, {error: 'cc', event: {message: message, id: id, cc: ccContent}});\n }\n\n function mediaSourceError(err) {\n eventBus.trigger(Events.ERROR, {error: 'mediasource', event: err});\n }\n\n function mediaKeySessionError(err) {\n eventBus.trigger(Events.ERROR, {error: 'key_session', event: err});\n }\n\n function mediaKeyMessageError(err) {\n eventBus.trigger(Events.ERROR, {error: 'key_message', event: err});\n }\n\n instance = {\n capabilityError: capabilityError,\n downloadError: downloadError,\n manifestError: manifestError,\n timedTextError: timedTextError,\n mediaSourceError: mediaSourceError,\n mediaKeySessionError: mediaKeySessionError,\n mediaKeyMessageError: mediaKeyMessageError\n };\n\n return instance;\n}\n\nErrorHandler.__dashjs_factory_name = 'ErrorHandler';\n\nconst factory = FactoryMaker.getSingletonFactory(ErrorHandler);\n\nfactory.CAPABILITY_ERROR_MEDIASOURCE = CAPABILITY_ERROR_MEDIASOURCE;\nfactory.CAPABILITY_ERROR_MEDIAKEYS = CAPABILITY_ERROR_MEDIAKEYS;\nfactory.DOWNLOAD_ERROR_ID_MANIFEST = DOWNLOAD_ERROR_ID_MANIFEST;\nfactory.DOWNLOAD_ERROR_ID_SIDX = DOWNLOAD_ERROR_ID_SIDX;\nfactory.DOWNLOAD_ERROR_ID_CONTENT = DOWNLOAD_ERROR_ID_CONTENT;\nfactory.DOWNLOAD_ERROR_ID_INITIALIZATION = DOWNLOAD_ERROR_ID_INITIALIZATION;\nfactory.DOWNLOAD_ERROR_ID_XLINK = DOWNLOAD_ERROR_ID_XLINK;\nfactory.MANIFEST_ERROR_ID_CODEC = MANIFEST_ERROR_ID_CODEC;\nfactory.MANIFEST_ERROR_ID_PARSE = MANIFEST_ERROR_ID_PARSE;\nfactory.MANIFEST_ERROR_ID_NOSTREAMS = MANIFEST_ERROR_ID_NOSTREAMS;\nfactory.TIMED_TEXT_ERROR_ID_PARSE = TIMED_TEXT_ERROR_ID_PARSE;\n\nFactoryMaker.updateSingletonFactory(ErrorHandler.__dashjs_factory_name, factory);\n\nexport default factory;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Represents data structure to keep and drive {DataChunk}\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\n\nfunction InitCache() {\n\n let data = {};\n\n function save (chunk) {\n const id = chunk.streamId;\n const representationId = chunk.representationId;\n\n data[id] = data[id] || {};\n data[id][representationId] = chunk;\n }\n\n function extract (streamId, representationId) {\n if (data && data[streamId] && data[streamId][representationId]) {\n return data[streamId][representationId];\n } else {\n return null;\n }\n }\n\n\n function reset () {\n data = {};\n }\n\n const instance = {\n save: save,\n extract: extract,\n reset: reset\n };\n\n return instance;\n}\n\nInitCache.__dashjs_factory_name = 'InitCache';\nexport default FactoryMaker.getSingletonFactory(InitCache);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport IsoBox from '../vo/IsoBox';\nimport FactoryMaker from '../../core/FactoryMaker';\n\nfunction IsoFile() {\n\n let instance,\n parsedIsoFile;\n\n /**\n * @param {string} type\n * @returns {IsoBox|null}\n * @memberof IsoFile#\n */\n function getBox(type) {\n if (!type || !parsedIsoFile || !parsedIsoFile.boxes || (parsedIsoFile.boxes.length === 0) || typeof parsedIsoFile.fetch !== 'function') return null;\n\n return convertToDashIsoBox(parsedIsoFile.fetch(type));\n }\n\n /**\n * @param {string} type\n * @returns {Array|null} array of {@link IsoBox}\n * @memberof IsoFile#\n */\n function getBoxes(type) {\n let boxes = [];\n\n if (!type || !parsedIsoFile || typeof parsedIsoFile.fetchAll !== 'function') {\n return boxes;\n }\n\n let boxData = parsedIsoFile.fetchAll(type);\n let box;\n\n for (let i = 0, ln = boxData.length; i < ln; i++) {\n box = convertToDashIsoBox(boxData[i]);\n\n if (box) {\n boxes.push(box);\n }\n }\n\n return boxes;\n }\n\n /**\n * @param {string} value\n * @memberof IsoFile#\n */\n function setData(value) {\n parsedIsoFile = value;\n }\n\n /**\n * @returns {IsoBox|null}\n * @memberof IsoFile#\n */\n function getLastBox() {\n if (!parsedIsoFile || !parsedIsoFile.boxes || !parsedIsoFile.boxes.length) return null;\n\n let type = parsedIsoFile.boxes[parsedIsoFile.boxes.length - 1].type;\n let boxes = getBoxes(type);\n\n return boxes.length > 0 ? boxes[boxes.length - 1] : null;\n }\n\n function convertToDashIsoBox(boxData) {\n if (!boxData) return null;\n\n let box = new IsoBox(boxData);\n\n if (boxData.hasOwnProperty('_incomplete')) {\n box.isComplete = !boxData._incomplete;\n }\n\n return box;\n }\n\n instance = {\n getBox: getBox,\n getBoxes: getBoxes,\n setData: setData,\n getLastBox: getLastBox\n };\n\n return instance;\n}\nIsoFile.__dashjs_factory_name = 'IsoFile';\nexport default FactoryMaker.getClassFactory(IsoFile);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker';\n\n/**\n * @param {Object} config\n * @returns {{initialize: initialize, getLiveEdge: getLiveEdge, reset: reset}|*}\n * @constructor\n */\nfunction LiveEdgeFinder(config) {\n\n let instance;\n let timelineConverter = config.timelineConverter;\n let streamProcessor = config.streamProcessor;\n\n function checkConfig() {\n if (!timelineConverter || !timelineConverter.hasOwnProperty('getExpectedLiveEdge') || !streamProcessor || !streamProcessor.hasOwnProperty('getCurrentRepresentationInfo')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n function getLiveEdge() {\n checkConfig();\n const representationInfo = streamProcessor.getCurrentRepresentationInfo();\n let liveEdge = representationInfo.DVRWindow.end;\n if (representationInfo.useCalculatedLiveEdgeTime) {\n liveEdge = timelineConverter.getExpectedLiveEdge();\n timelineConverter.setClientTimeOffset(liveEdge - representationInfo.DVRWindow.end);\n }\n return liveEdge;\n }\n\n function reset() {\n timelineConverter = null;\n streamProcessor = null;\n }\n\n instance = {\n getLiveEdge: getLiveEdge,\n reset: reset\n };\n\n return instance;\n}\n\nLiveEdgeFinder.__dashjs_factory_name = 'LiveEdgeFinder';\nexport default FactoryMaker.getClassFactory(LiveEdgeFinder);", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker';\n\n/**\n * @param {Object} config\n * @returns {{initialize: initialize, getLiveEdge: getLiveEdge, reset: reset}|*}\n * @constructor\n */\nfunction LiveEdgeFinder(config) {\n\n config = config || {};\n let instance;\n let timelineConverter = config.timelineConverter;\n let streamProcessor = config.streamProcessor;\n\n function checkConfig() {\n if (!timelineConverter || !timelineConverter.hasOwnProperty('getExpectedLiveEdge') || !streamProcessor || !streamProcessor.hasOwnProperty('getCurrentRepresentationInfo')) {\n throw new Error('Missing config parameter(s)');\n }\n }\n\n function getLiveEdge() {\n checkConfig();\n const representationInfo = streamProcessor.getCurrentRepresentationInfo();\n let liveEdge = representationInfo.DVRWindow.end;\n if (representationInfo.useCalculatedLiveEdgeTime) {\n liveEdge = timelineConverter.getExpectedLiveEdge();\n timelineConverter.setClientTimeOffset(liveEdge - representationInfo.DVRWindow.end);\n }\n return liveEdge;\n }\n\n function reset() {\n timelineConverter = null;\n streamProcessor = null;\n }\n\n instance = {\n getLiveEdge: getLiveEdge,\n reset: reset\n };\n\n return instance;\n}\n\nLiveEdgeFinder.__dashjs_factory_name = 'LiveEdgeFinder';\nexport default FactoryMaker.getClassFactory(LiveEdgeFinder);", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\nimport deepEqual from 'deep-equal';\n\n/**\n * @module ObjectUtils\n * @description Provides utility functions for objects\n */\nfunction ObjectUtils() {\n\n let instance;\n\n /**\n * Returns true if objects are equal\n * @return {boolean}\n * @param {object} obj1\n * @param {object} obj2\n * @memberof module:ObjectUtils\n * @instance\n */\n function areEqual(obj1, obj2) {\n return deepEqual(obj1, obj2);\n }\n\n instance = {\n areEqual: areEqual\n };\n\n return instance;\n}\n\nObjectUtils.__dashjs_factory_name = 'ObjectUtils';\nexport default FactoryMaker.getSingletonFactory(ObjectUtils);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\n\nfunction RequestModifier() {\n\n let instance;\n\n function modifyRequestURL(url) {\n return url;\n }\n\n function modifyRequestHeader(request) {\n return request;\n }\n\n instance = {\n modifyRequestURL: modifyRequestURL,\n modifyRequestHeader: modifyRequestHeader\n };\n\n return instance;\n}\n\nRequestModifier.__dashjs_factory_name = 'RequestModifier';\nexport default FactoryMaker.getSingletonFactory(RequestModifier);", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\nimport { fromXML, generateISD } from 'imsc';\n\nfunction TTMLParser() {\n\n let context = this.context;\n let log = Debug(context).getInstance().log;\n\n /*\n * This TTML parser follows \"EBU-TT-D SUBTITLING DISTRIBUTION FORMAT - tech3380\" spec - https://tech.ebu.ch/docs/tech/tech3380.pdf.\n * */\n let instance;\n\n let cueCounter = 0; // Used to give every cue a unique ID.\n\n function getCueID() {\n let id = 'cue_TTML_' + cueCounter;\n cueCounter++;\n return id;\n }\n\n\n /**\n * Parse the raw data and process it to return the HTML element representing the cue.\n * Return the region to be processed and controlled (hide/show) by the caption controller.\n * @param {string} data - raw data received from the TextSourceBuffer\n * @param {number} offsetTime - offset time to apply to cue time\n * @param {integer} startTimeSegment - startTime for the current segment\n * @param {integer} endTimeSegment - endTime for the current segment\n * @param {Array} images - images array referenced by subs MP4 box\n */\n function parse(data, offsetTime, startTimeSegment, endTimeSegment, images) {\n let i,\n j;\n\n let errorMsg = '';\n let captionArray = [];\n let startTime,\n endTime;\n\n let embeddedImages = {};\n let currentImageId = '';\n let accumulated_image_data = '';\n let metadataHandler = {\n\n onOpenTag: function (ns, name, attrs) {\n if (name === 'image' && ns === 'http://www.smpte-ra.org/schemas/2052-1/2010/smpte-tt') {\n if (!attrs[' imagetype'] || attrs[' imagetype'].value !== 'PNG') {\n log('Warning: smpte-tt imagetype != PNG. Discarded');\n return;\n }\n currentImageId = attrs['http://www.w3.org/XML/1998/namespace id'].value;\n }\n },\n\n onCloseTag: function () {\n if (currentImageId) {\n embeddedImages[currentImageId] = accumulated_image_data.trim();\n }\n accumulated_image_data = '';\n currentImageId = '';\n },\n\n onText: function (contents) {\n if (currentImageId) {\n accumulated_image_data = accumulated_image_data + contents;\n }\n }\n };\n\n if (!data) {\n errorMsg = 'no ttml data to parse';\n throw new Error(errorMsg);\n }\n\n let imsc1doc = fromXML(data, function (msg) {\n errorMsg = msg;\n },\n metadataHandler);\n let mediaTimeEvents = imsc1doc.getMediaTimeEvents();\n\n for (i = 0; i < mediaTimeEvents.length; i++) {\n let isd = generateISD(imsc1doc, mediaTimeEvents[i], function (error) {\n errorMsg = error;\n });\n for (j = 0; j < isd.contents.length; j++) {\n if (isd.contents[j].contents.length >= 1) {\n //be sure that mediaTimeEvents values are in the mp4 segment time ranges.\n startTime = (mediaTimeEvents[i] + offsetTime) < startTimeSegment ? startTimeSegment : (mediaTimeEvents[i] + offsetTime);\n endTime = (mediaTimeEvents[i + 1] + offsetTime) > endTimeSegment ? endTimeSegment : (mediaTimeEvents[i + 1] + offsetTime);\n\n if (startTime < endTime) {\n captionArray.push({\n start: startTime,\n end: endTime,\n type: 'html',\n cueID: getCueID(),\n isd: isd,\n images: images,\n embeddedImages: embeddedImages\n });\n }\n }\n }\n }\n\n if (errorMsg !== '') {\n log(errorMsg);\n }\n\n if (captionArray.length > 0) {\n return captionArray;\n } else { // This seems too strong given that there are segments with no TTML subtitles\n throw new Error(errorMsg);\n }\n }\n\n function setup() {\n }\n\n instance = {\n parse: parse\n };\n\n setup();\n return instance;\n}\nTTMLParser.__dashjs_factory_name = 'TTMLParser';\nexport\ndefault FactoryMaker.getSingletonFactory(TTMLParser);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../core/FactoryMaker';\n\n/**\n * @module URLUtils\n * @description Provides utility functions for operating on URLs.\n * Initially this is simply a method to determine the Base URL of a URL, but\n * should probably include other things provided all over the place such as\n * determining whether a URL is relative/absolute, resolving two paths etc.\n */\nfunction URLUtils() {\n\n let resolveFunction;\n\n const schemeRegex = /^[a-z][a-z0-9+\\-.]*:/i;\n const httpUrlRegex = /^https?:\\/\\//i;\n const httpsUrlRegex = /^https:\\/\\//i;\n const originRegex = /^([a-z][a-z0-9+\\-.]*:\\/\\/[^\\/]+)\\/?/i;\n\n /**\n * Resolves a url given an optional base url\n * Uses window.URL to do the resolution.\n *\n * @param {string} url\n * @param {string} [baseUrl]\n * @return {string}\n * @memberof module:URLUtils\n * @instance\n * @private\n */\n const nativeURLResolver = (url, baseUrl) => {\n try {\n // this will throw if baseurl is undefined, invalid etc\n return new window.URL(url, baseUrl).toString();\n } catch (e) {\n return url;\n }\n };\n\n /**\n * Resolves a url given an optional base url\n * Does not resolve ./, ../ etc but will do enough to construct something\n * which will satisfy XHR etc when window.URL is not available ie\n * IE11/node etc.\n *\n * @param {string} url\n * @param {string} [baseUrl]\n * @return {string}\n * @memberof module:URLUtils\n * @instance\n * @private\n */\n const dumbURLResolver = (url, baseUrl) => {\n let baseUrlParseFunc = parseBaseUrl;\n\n if (!baseUrl) {\n return url;\n }\n\n if (!isRelative(url)) {\n return url;\n }\n\n if (isPathAbsolute(url)) {\n baseUrlParseFunc = parseOrigin;\n }\n\n if (isSchemeRelative(url)) {\n baseUrlParseFunc = parseScheme;\n }\n\n const base = baseUrlParseFunc(baseUrl);\n const joinChar =\n base.charAt(base.length - 1) !== '/' &&\n url.charAt(0) !== '/' ?\n '/' : '';\n\n return [base, url].join(joinChar);\n };\n\n function setup() {\n try {\n const u = new window.URL('x', 'http://y'); //jshint ignore:line\n resolveFunction = nativeURLResolver;\n } catch (e) {\n // must be IE11/Node etc\n } finally {\n resolveFunction = resolveFunction || dumbURLResolver;\n }\n }\n\n /**\n * Returns a string that contains the Base URL of a URL, if determinable.\n * @param {string} url - full url\n * @return {string}\n * @memberof module:URLUtils\n * @instance\n */\n function parseBaseUrl(url) {\n const slashIndex = url.indexOf('/');\n const lastSlashIndex = url.lastIndexOf('/');\n\n if (slashIndex !== -1) {\n // if there is only '//'\n if (lastSlashIndex === slashIndex + 1) {\n return url;\n }\n\n if (url.indexOf('?') !== -1) {\n url = url.substring(0, url.indexOf('?'));\n }\n\n return url.substring(0, lastSlashIndex + 1);\n }\n\n return '';\n }\n\n /**\n * Returns a string that contains the scheme and origin of a URL,\n * if determinable.\n * @param {string} url - full url\n * @return {string}\n * @memberof module:URLUtils\n * @instance\n */\n function parseOrigin(url) {\n const matches = url.match(originRegex);\n\n if (matches) {\n return matches[1];\n }\n\n return '';\n }\n\n /**\n * Returns a string that contains the scheme of a URL, if determinable.\n * @param {string} url - full url\n * @return {string}\n * @memberof module:URLUtils\n * @instance\n */\n function parseScheme(url) {\n const matches = url.match(schemeRegex);\n\n if (matches) {\n return matches[0];\n }\n\n return '';\n }\n\n /**\n * Determines whether the url is relative.\n * @return {bool}\n * @param {string} url\n * @memberof module:URLUtils\n * @instance\n */\n function isRelative(url) {\n return !schemeRegex.test(url);\n }\n\n /**\n * Determines whether the url is path-absolute.\n * @return {bool}\n * @param {string} url\n * @memberof module:URLUtils\n * @instance\n */\n function isPathAbsolute(url) {\n return isRelative(url) && url.charAt(0) === '/';\n }\n\n /**\n * Determines whether the url is scheme-relative.\n * @return {bool}\n * @param {string} url\n * @memberof module:URLUtils\n * @instance\n */\n function isSchemeRelative(url) {\n return url.indexOf('//') === 0;\n }\n\n /**\n * Determines whether the url is an HTTP-URL as defined in ISO/IEC\n * 23009-1:2014 3.1.15. ie URL with a fixed scheme of http or https\n * @return {bool}\n * @param {string} url\n * @memberof module:URLUtils\n * @instance\n */\n function isHTTPURL(url) {\n return httpUrlRegex.test(url);\n }\n\n /**\n * Determines whether the supplied url has https scheme\n * @return {bool}\n * @param {string} url\n * @memberof module:URLUtils\n * @instance\n */\n function isHTTPS(url) {\n return httpsUrlRegex.test(url);\n }\n\n /**\n * Resolves a url given an optional base url\n * @return {string}\n * @param {string} url\n * @param {string} [baseUrl]\n * @memberof module:URLUtils\n * @instance\n */\n function resolve(url, baseUrl) {\n return resolveFunction(url, baseUrl);\n }\n\n setup();\n\n const instance = {\n parseBaseUrl: parseBaseUrl,\n parseOrigin: parseOrigin,\n parseScheme: parseScheme,\n isRelative: isRelative,\n isPathAbsolute: isPathAbsolute,\n isSchemeRelative: isSchemeRelative,\n isHTTPURL: isHTTPURL,\n isHTTPS: isHTTPS,\n resolve: resolve\n };\n\n return instance;\n}\n\nURLUtils.__dashjs_factory_name = 'URLUtils';\nexport default FactoryMaker.getSingletonFactory(URLUtils);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../core/FactoryMaker';\nimport Debug from '../../core/Debug';\n\nconst WEBVTT = 'WEBVTT';\n\nfunction VTTParser() {\n let context = this.context;\n let log = Debug(context).getInstance().log;\n\n let instance,\n regExNewLine,\n regExToken,\n regExWhiteSpace,\n regExWhiteSpaceWordBoundary;\n\n function setup() {\n regExNewLine = /(?:\\r\\n|\\r|\\n)/gm;\n regExToken = /-->/;\n regExWhiteSpace = /(^[\\s]+|[\\s]+$)/g;\n regExWhiteSpaceWordBoundary = /\\s\\b/g;\n }\n\n function parse(data) {\n let captionArray = [];\n let len,\n lastStartTime;\n\n if (!data) {\n return captionArray;\n }\n\n data = data.split( regExNewLine );\n len = data.length;\n lastStartTime = -1;\n\n for (let i = 0 ; i < len; i++)\n {\n let item = data[i];\n\n if (item.length > 0 && item !== WEBVTT)\n {\n if (item.match(regExToken))\n {\n let attributes = parseItemAttributes(item);\n let cuePoints = attributes.cuePoints;\n let styles = attributes.styles;\n let text = getSublines(data, i + 1);\n let startTime = convertCuePointTimes(cuePoints[0].replace(regExWhiteSpace, ''));\n let endTime = convertCuePointTimes(cuePoints[1].replace(regExWhiteSpace, ''));\n\n if ((!isNaN(startTime) && !isNaN(endTime)) && startTime >= lastStartTime && endTime > startTime) {\n if (text !== '') {\n lastStartTime = startTime;\n //TODO Make VO external so other parsers can use.\n captionArray.push({\n start: startTime,\n end: endTime,\n data: text,\n styles: styles\n });\n }\n else {\n log('Skipping cue due to empty/malformed cue text');\n }\n }\n else {\n log('Skipping cue due to incorrect cue timing');\n }\n }\n }\n }\n\n return captionArray;\n }\n\n function convertCuePointTimes(time) {\n let timeArray = time.split(':');\n const len = timeArray.length - 1;\n\n time = parseInt( timeArray[len - 1], 10 ) * 60 + parseFloat( timeArray[len]);\n\n if ( len === 2 ) {\n time += parseInt( timeArray[0], 10 ) * 3600;\n }\n\n return time;\n }\n\n function parseItemAttributes(data) {\n let vttCuePoints = data.split(regExToken);\n let arr = vttCuePoints[1].split(regExWhiteSpaceWordBoundary);\n arr.shift(); //remove first array index it is empty...\n vttCuePoints[1] = arr[0];\n arr.shift();\n return {cuePoints: vttCuePoints, styles: getCaptionStyles(arr)};\n }\n\n function getCaptionStyles(arr) {\n let styleObject = {};\n arr.forEach(function (element) {\n if (element.split(/:/).length > 1) {\n let val = element.split(/:/)[1];\n if (val && val.search(/%/) != -1) {\n val = parseInt(val.replace(/%/, ''), 10);\n }\n if (element.match(/align/) || element.match(/A/)) {\n styleObject.align = val;\n }\n if (element.match(/line/) || element.match(/L/) ) {\n styleObject.line = val;\n }\n if (element.match(/position/) || element.match(/P/) ) {\n styleObject.position = val;\n }\n if (element.match(/size/) || element.match(/S/)) {\n styleObject.size = val;\n }\n }\n });\n\n return styleObject;\n }\n\n /*\n * VTT can have multiple lines to display per cuepoint.\n */\n function getSublines(data, idx) {\n let i = idx;\n\n let subline = '';\n let lineData = '';\n let lineCount;\n\n while (data[i] !== '' && i < data.length) {\n i++;\n }\n\n lineCount = i - idx;\n if (lineCount > 1) {\n for (let j = 0; j < lineCount; j++) {\n lineData = data[(idx + j)];\n if (!lineData.match(regExToken)) {\n subline += lineData;\n if (j !== lineCount - 1) {\n subline += '\\n';\n }\n }\n else {\n // caption text should not have '-->' in it\n subline = '';\n break;\n }\n }\n } else {\n lineData = data[idx];\n if (!lineData.match(regExToken))\n subline = lineData;\n }\n return subline;\n }\n\n instance = {\n parse: parse\n };\n\n setup();\n return instance;\n}\nVTTParser.__dashjs_factory_name = 'VTTParser';\nexport default FactoryMaker.getSingletonFactory(VTTParser);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../../core/FactoryMaker';\n\nfunction BasicSelector(config) {\n\n let instance;\n\n const blacklistController = config.blacklistController;\n\n function select(baseUrls) {\n let index = 0;\n let selectedBaseUrl;\n\n if (baseUrls && baseUrls.some((baseUrl, idx) => {\n index = idx;\n\n return (!blacklistController.contains(baseUrl.serviceLocation));\n })) {\n selectedBaseUrl = baseUrls[index];\n }\n\n return selectedBaseUrl;\n }\n\n instance = {\n select: select\n };\n\n return instance;\n}\n\nBasicSelector.__dashjs_factory_name = 'BasicSelector';\nexport default FactoryMaker.getClassFactory(BasicSelector);\n", - "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../../core/FactoryMaker';\n\nfunction DVBSelector(config) {\n\n let instance;\n\n const blacklistController = config.blacklistController;\n\n function getNonBlacklistedBaseUrls(urls) {\n let removedPriorities = [];\n\n const samePrioritiesFilter = function (el) {\n if (removedPriorities.length) {\n if ((el.dvb_priority) &&\n (removedPriorities.indexOf(el.dvb_priority) !== -1)) {\n return false;\n }\n }\n\n return true;\n };\n\n const serviceLocationFilter = function (baseUrl) {\n if (blacklistController.contains(baseUrl.serviceLocation)) {\n // whenever a BaseURL is removed from the available list of\n // BaseURLs, any other BaseURL with the same @priority\n // value as the BaseURL being removed shall also be removed\n if (baseUrl.dvb_priority) {\n removedPriorities.push(baseUrl.dvb_priority);\n }\n\n // all URLs in the list which have a @serviceLocation\n // attribute matching an entry in the blacklist shall be\n // removed from the available list of BaseURLs\n return false;\n }\n\n return true;\n };\n\n return urls.filter(serviceLocationFilter).filter(samePrioritiesFilter);\n }\n\n function selectByWeight(availableUrls) {\n const prioritySorter = function (a, b) {\n let diff = a.dvb_priority - b.dvb_priority;\n return isNaN(diff) ? 0 : diff;\n };\n\n const topPriorityFilter = function (baseUrl, idx, arr) {\n return !idx || (\n (arr[0].dvb_priority && baseUrl.dvb_priority) &&\n (arr[0].dvb_priority === baseUrl.dvb_priority)\n );\n };\n\n let totalWeight = 0;\n let cumulWeights = [];\n let idx = 0;\n let rn,\n urls;\n\n // It shall begin by taking the set of resolved BaseURLs present or inherited at the current\n // position in the MPD, resolved and filtered as described in 10.8.2.1, that have the lowest\n // @priority attribute value.\n urls = availableUrls.sort(prioritySorter).filter(topPriorityFilter);\n\n if (urls.length) {\n if (urls.length > 1) {\n // If there is more than one BaseURL with this lowest @priority attribute value then the Player\n // shall select one of them at random such that the probability of each BaseURL being chosen\n // is proportional to the value of its @weight attribute. The method described in RFC 2782\n // [26] or picking from a number of weighted entries is suitable for this, but there may be other\n // algorithms which achieve the same effect.\n\n // add all the weights together, storing the accumulated weight per entry\n urls.forEach(baseUrl => {\n totalWeight += baseUrl.dvb_weight;\n cumulWeights.push(totalWeight);\n });\n\n // pick a random number between zero and totalWeight\n rn = Math.floor(Math.random() * (totalWeight - 1));\n\n // select the index for the range rn falls within\n cumulWeights.every((limit, index) => {\n idx = index;\n\n if (rn < limit) {\n return false;\n }\n\n return true;\n });\n }\n\n return urls[idx];\n }\n }\n\n function select(baseUrls) {\n return baseUrls && selectByWeight(\n getNonBlacklistedBaseUrls(\n baseUrls\n )\n );\n }\n\n instance = {\n select: select\n };\n\n return instance;\n}\n\nDVBSelector.__dashjs_factory_name = 'DVBSelector';\nexport default FactoryMaker.getClassFactory(DVBSelector);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FactoryMaker from '../../../core/FactoryMaker';\n\nfunction BasicSelector(config) {\n\n config = config || {};\n let instance;\n\n const blacklistController = config.blacklistController;\n\n function select(baseUrls) {\n let index = 0;\n let selectedBaseUrl;\n\n if (baseUrls && baseUrls.some((baseUrl, idx) => {\n index = idx;\n\n return (!blacklistController.contains(baseUrl.serviceLocation));\n })) {\n selectedBaseUrl = baseUrls[index];\n }\n\n return selectedBaseUrl;\n }\n\n instance = {\n select: select\n };\n\n return instance;\n}\n\nBasicSelector.__dashjs_factory_name = 'BasicSelector';\nexport default FactoryMaker.getClassFactory(BasicSelector);\n", + "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport FactoryMaker from '../../../core/FactoryMaker';\n\nfunction DVBSelector(config) {\n\n config = config || {};\n let instance;\n\n const blacklistController = config.blacklistController;\n\n function getNonBlacklistedBaseUrls(urls) {\n let removedPriorities = [];\n\n const samePrioritiesFilter = function (el) {\n if (removedPriorities.length) {\n if ((el.dvb_priority) &&\n (removedPriorities.indexOf(el.dvb_priority) !== -1)) {\n return false;\n }\n }\n\n return true;\n };\n\n const serviceLocationFilter = function (baseUrl) {\n if (blacklistController.contains(baseUrl.serviceLocation)) {\n // whenever a BaseURL is removed from the available list of\n // BaseURLs, any other BaseURL with the same @priority\n // value as the BaseURL being removed shall also be removed\n if (baseUrl.dvb_priority) {\n removedPriorities.push(baseUrl.dvb_priority);\n }\n\n // all URLs in the list which have a @serviceLocation\n // attribute matching an entry in the blacklist shall be\n // removed from the available list of BaseURLs\n return false;\n }\n\n return true;\n };\n\n return urls.filter(serviceLocationFilter).filter(samePrioritiesFilter);\n }\n\n function selectByWeight(availableUrls) {\n const prioritySorter = function (a, b) {\n let diff = a.dvb_priority - b.dvb_priority;\n return isNaN(diff) ? 0 : diff;\n };\n\n const topPriorityFilter = function (baseUrl, idx, arr) {\n return !idx || (\n (arr[0].dvb_priority && baseUrl.dvb_priority) &&\n (arr[0].dvb_priority === baseUrl.dvb_priority)\n );\n };\n\n let totalWeight = 0;\n let cumulWeights = [];\n let idx = 0;\n let rn,\n urls;\n\n // It shall begin by taking the set of resolved BaseURLs present or inherited at the current\n // position in the MPD, resolved and filtered as described in 10.8.2.1, that have the lowest\n // @priority attribute value.\n urls = availableUrls.sort(prioritySorter).filter(topPriorityFilter);\n\n if (urls.length) {\n if (urls.length > 1) {\n // If there is more than one BaseURL with this lowest @priority attribute value then the Player\n // shall select one of them at random such that the probability of each BaseURL being chosen\n // is proportional to the value of its @weight attribute. The method described in RFC 2782\n // [26] or picking from a number of weighted entries is suitable for this, but there may be other\n // algorithms which achieve the same effect.\n\n // add all the weights together, storing the accumulated weight per entry\n urls.forEach(baseUrl => {\n totalWeight += baseUrl.dvb_weight;\n cumulWeights.push(totalWeight);\n });\n\n // pick a random number between zero and totalWeight\n rn = Math.floor(Math.random() * (totalWeight - 1));\n\n // select the index for the range rn falls within\n cumulWeights.every((limit, index) => {\n idx = index;\n\n if (rn < limit) {\n return false;\n }\n\n return true;\n });\n }\n\n return urls[idx];\n }\n }\n\n function select(baseUrls) {\n return baseUrls && selectByWeight(\n getNonBlacklistedBaseUrls(\n baseUrls\n )\n );\n }\n\n instance = {\n select: select\n };\n\n return instance;\n}\n\nDVBSelector.__dashjs_factory_name = 'DVBSelector';\nexport default FactoryMaker.getClassFactory(DVBSelector);\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass BitrateInfo {\n constructor() {\n this.mediaType = null;\n this.bitrate = null;\n this.width = null;\n this.height = null;\n this.scanType = null;\n this.qualityIndex = NaN;\n }\n}\n\nexport default BitrateInfo;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass DashJSError {\n constructor(code, message, data) {\n this.code = code || null;\n this.message = message || null;\n this.data = data || null;\n }\n}\n\nexport default DashJSError;", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * @class\n * @ignore\n */\nclass DataChunk {\n //Represents a data structure that keep all the necessary info about a single init/media segment\n constructor() {\n this.streamId = null;\n this.mediaInfo = null;\n this.segmentType = null;\n this.quality = NaN;\n this.index = NaN;\n this.bytes = null;\n this.start = NaN;\n this.end = NaN;\n this.duration = NaN;\n this.representationId = null;\n }\n}\n\nexport default DataChunk;", diff --git a/dist/dash.all.min.js b/dist/dash.all.min.js index 194e9e9132..fc7a2b8cee 100644 --- a/dist/dash.all.min.js +++ b/dist/dash.all.min.js @@ -1,5 +1,5 @@ -/*! v2.6.3-2af44f8, 2017-11-08T19:16:10Z */ -!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c||a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g>6),b.push(128|63&d)):d<65536?(b.push(224|d>>12),b.push(128|63&d>>6),b.push(128|63&d)):(b.push(240|d>>18),b.push(128|63&d>>12),b.push(128|63&d>>6),b.push(128|63&d))}return b},e.decode=function(a){for(var b=[],c=0;c>18)),d.push(b.charAt(63&f>>12)),d.push(b.charAt(63&f>>6)),d.push(b.charAt(63&f))}if(2==a.length-c){var f=(a[c]<<16)+(a[c+1]<<8);d.push(b.charAt(63&f>>18)),d.push(b.charAt(63&f>>12)),d.push(b.charAt(63&f>>6)),d.push("=")}else if(1==a.length-c){var f=a[c]<<16;d.push(b.charAt(63&f>>18)),d.push(b.charAt(63&f>>12)),d.push("==")}return d.join("")},d=function(){for(var a=[],c=0;c=c&&console.log(this.time+" ["+a+"] "+b)}},l=function(a){for(var b=[],c=0;ce&&(k.log("ERROR","Too large cursor position "+this.pos),this.pos=e)},moveCursor:function(a){var b=this.pos+a;if(a>1)for(var c=this.pos+1;c=144&&this.backSpace();var b=c(a);if(this.pos>=e)return void k.log("ERROR","Cannot insert "+a.toString(16)+" ("+b+") at position "+this.pos+". Skipping it!");this.chars[this.pos].setChar(b,this.currPenState),this.moveCursor(1)},clearFromPos:function(a){var b;for(b=a;b0&&(c=a?"["+b.join(" | ")+"]":b.join("\n")),c},getTextAndFormat:function(){return this.rows}};var q=function(a,b){this.chNr=a,this.outputFilter=b,this.mode=null,this.verbose=0,this.displayedMemory=new p,this.nonDisplayedMemory=new p,this.lastOutputScreen=new p,this.currRollUpRow=this.displayedMemory.rows[d-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null};q.prototype={modes:["MODE_ROLL-UP","MODE_POP-ON","MODE_PAINT-ON","MODE_TEXT"],reset:function(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.currRollUpRow=this.displayedMemory.rows[d-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.lastCueEndTime=null},getHandler:function(){return this.outputFilter},setHandler:function(a){this.outputFilter=a},setPAC:function(a){this.writeScreen.setPAC(a)},setBkgData:function(a){this.writeScreen.setBkgData(a)},setMode:function(a){a!==this.mode&&(this.mode=a,k.log("INFO","MODE="+a),"MODE_POP-ON"==this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=a)},insertChars:function(a){for(var b=0;b=46,b.italics)b.foreground="white";else{var c=Math.floor(a/2)-16,d=["white","green","blue","cyan","red","yellow","magenta"];b.foreground=d[c]}k.log("INFO","MIDROW: "+JSON.stringify(b)),this.writeScreen.setPen(b)},outputDataUpdate:function(){var a=k.time;null!==a&&this.outputFilter&&(this.outputFilter.updateData&&this.outputFilter.updateData(a,this.displayedMemory),null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,a,this.lastOutputScreen),this.cueStartTime=this.displayedMemory.isEmpty()?null:a):this.cueStartTime=a,this.lastOutputScreen.copy(this.displayedMemory))},cueSplitAtTime:function(a){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,a,this.displayedMemory),this.cueStartTime=a))}};var r=function(a,b,c){this.field=a||1,this.outputs=[b,c],this.channels=[new q(1,b),new q(2,c)],this.currChNr=-1,this.lastCmdA=null,this.lastCmdB=null,this.bufferedData=[],this.startTime=null,this.lastTime=null,this.dataCounters={padding:0,char:0,cmd:0,other:0}};r.prototype={getHandler:function(a){return this.channels[a].getHandler()},setHandler:function(a,b){this.channels[a].setHandler(b)},addData:function(a,b){var c,d,e,f=!1;this.lastTime=a,k.setTime(a);for(var g=0;g=16&&d<=31&&d===this.lastCmdA&&e===this.lastCmdB)this.lastCmdA=null,this.lastCmdB=null,k.log("DEBUG","Repeated command ("+l([d,e])+") is dropped");else if(0!==d||0!==e){if(k.log("DATA","["+l([b[g],b[g+1]])+"] -> ("+l([d,e])+")"),c=this.parseCmd(d,e),c||(c=this.parseMidrow(d,e)),c||(c=this.parsePAC(d,e)),c||(c=this.parseBackgroundAttributes(d,e)),!c&&(f=this.parseChars(d,e)))if(this.currChNr&&this.currChNr>=0){var h=this.channels[this.currChNr-1];h.insertChars(f)}else k.log("WARNING","No channel found yet. TEXT-MODE?");c?this.dataCounters.cmd+=2:f?this.dataCounters.char+=2:(this.dataCounters.other+=2,k.log("WARNING","Couldn't parse cleaned data "+l([d,e])+" orig: "+l([b[g],b[g+1]])))}else this.dataCounters.padding+=2},parseCmd:function(a,b){var c=null,d=(20===a||21===a||28===a||29===a)&&32<=b&&b<=47,e=(23===a||31===a)&&33<=b&&b<=35;if(!d&&!e)return!1;c=20===a||21===a||23===a?1:2;var f=this.channels[c-1];return 20===a||21===a||28===a||29===a?32===b?f.cc_RCL():33===b?f.cc_BS():34===b?f.cc_AOF():35===b?f.cc_AON():36===b?f.cc_DER():37===b?f.cc_RU(2):38===b?f.cc_RU(3):39===b?f.cc_RU(4):40===b?f.cc_FON():41===b?f.cc_RDC():42===b?f.cc_TR():43===b?f.cc_RTD():44===b?f.cc_EDM():45===b?f.cc_CR():46===b?f.cc_ENM():47===b&&f.cc_EOC():f.cc_TO(b-32),this.lastCmdA=a,this.lastCmdB=b,this.currChNr=c,!0},parseMidrow:function(a,b){var c=null;if((17===a||25===a)&&32<=b&&b<=47){if((c=17===a?1:2)!==this.currChNr)return k.log("ERROR","Mismatch channel in midrow parsing"),!1;var d=this.channels[c-1];return d.insertChars([32]),d.cc_MIDROW(b),k.log("DEBUG","MIDROW ("+l([a,b])+")"),this.lastCmdA=a,this.lastCmdB=b,!0}return!1},parsePAC:function(a,b){var c=null,d=null,e=(17<=a&&a<=23||25<=a&&a<=31)&&64<=b&&b<=127,j=(16===a||24===a)&&64<=b&&b<=95;if(!e&&!j)return!1;c=a<=23?1:2,d=64<=b&&b<=95?1===c?f[a]:h[a]:1===c?g[a]:i[a];var k=this.interpretPAC(d,b);return this.channels[c-1].setPAC(k),this.lastCmdA=a,this.lastCmdB=b,this.currChNr=c,!0},interpretPAC:function(a,b){var c=b,d={color:null,italics:!1,indent:null,underline:!1,row:a};return c=b>95?b-96:b-64,d.underline=1==(1&c),c<=13?d.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(c/2)]:c<=15?(d.italics=!0,d.color="white"):d.indent=4*Math.floor((c-16)/2),d},parseChars:function(a,b){var d=null,e=null,f=null;if(a>=25?(d=2,f=a-8):(d=1,f=a),17<=f&&f<=19){var g=b;g=17===f?b+80:18===f?b+112:b+144,k.log("INFO","Special char '"+c(g)+"' in channel "+d),e=[g],this.lastCmdA=a,this.lastCmdB=b}else 32<=a&&a<=127&&(e=0===b?[a]:[a,b],this.lastCmdA=null,this.lastCmdB=null);if(e){var h=l(e);k.log("DEBUG","Char codes = "+h.join(","))}return e},parseBackgroundAttributes:function(a,b){var c,d,e,f,g=(16===a||24===a)&&32<=b&&b<=47,h=(23===a||31===a)&&45<=b&&b<=47;return!(!g&&!h)&&(c={},16===a||24===a?(d=Math.floor((b-32)/2),c.background=j[d],b%2==1&&(c.background=c.background+"_semi")):45===b?c.background="transparent":(c.foreground="black",47===b&&(c.underline=!0)),e=a<24?1:2,f=this.channels[e-1],f.setBkgData(c),this.lastCmdA=a,this.lastCmdB=b,!0)},reset:function(){for(var a=0;a/g,">").replace(/"/g,""").replace(/'/g,"'"):a}function g(a,b,c,d){for(var e=0;e0&&g(a.arrayAccessFormPaths,b,c,d)&&(b[c]=[b[c]])}function i(a){var b=a.split(/[-T:+Z]/g),c=new Date(b[0],b[1]-1,b[2]),d=b[5].split(".");if(c.setHours(b[3],b[4],d[0]),d.length>1&&c.setMilliseconds(d[1]),b[6]&&b[7]){var e=60*b[6]+Number(b[7]);e=0+("-"==(/\d\d-\d\d:\d\d$/.test(a)?"-":"+")?-1*e:e),c.setMinutes(c.getMinutes()-e-c.getTimezoneOffset())}else-1!==a.indexOf("Z",a.length-1)&&(c=new Date(Date.UTC(c.getFullYear(),c.getMonth(),c.getDate(),c.getHours(),c.getMinutes(),c.getSeconds(),c.getMilliseconds())));return c}function j(b,c,d){if(a.datetimeAccessFormPaths.length>0){var e=d.split(".#")[0];return g(a.datetimeAccessFormPaths,b,c,e)?i(b):b}return b}function k(b,c,d,e){return!(c==z.ELEMENT_NODE&&a.xmlElementsFilter.length>0)||g(a.xmlElementsFilter,b,d,e)}function l(b,c){if(b.nodeType==z.DOCUMENT_NODE){for(var f=new Object,g=b.childNodes,i=0;i1&&null!=f.__text&&a.skipEmptyTextNodesForObj&&(a.stripWhitespaces&&""==f.__text||""==f.__text.trim())&&delete f.__text:f=f.__cdata,delete f.__cnt,!a.enableToStringFunc||null==f.__text&&null==f.__cdata||(f.toString=function(){return(null!=this.__text?this.__text:"")+(null!=this.__cdata?this.__cdata:"")}),f}if(b.nodeType==z.TEXT_NODE||b.nodeType==z.CDATA_SECTION_NODE)return b.nodeValue}function m(b,c,d,e){var g="<"+(null!=b&&null!=b.__prefix?b.__prefix+":":"")+c;if(null!=d)for(var h=0;h":">"}function n(a,b){return""}function o(a,b){return-1!==a.indexOf(b,a.length-b.length)}function p(b,c){return!!("property"==a.arrayAccessForm&&o(c.toString(),"_asArray")||0==c.toString().indexOf(a.attributePrefix)||0==c.toString().indexOf("__")||b[c]instanceof Function)}function q(a){var b=0;if(a instanceof Object)for(var c in a)p(a,c)||b++;return b}function r(b,c,d){return 0==a.jsonPropertiesFilter.length||""==d||g(a.jsonPropertiesFilter,b,c,d)}function s(b){var c=[];if(b instanceof Object)for(var d in b)-1==d.toString().indexOf("__")&&0==d.toString().indexOf(a.attributePrefix)&&c.push(d);return c}function t(b){var c="";return null!=b.__cdata&&(c+=""),null!=b.__text&&(a.escapeMode?c+=f(b.__text):c+=b.__text),c}function u(b){var c="";return b instanceof Object?c+=t(b):null!=b&&(a.escapeMode?c+=f(b):c+=b),c}function v(a,b){return""===a?b:a+"."+b}function w(a,b,c,d){var e="";if(0==a.length)e+=m(a,b,c,!0);else for(var f=0;f0)for(var d in a)if(!p(a,d)&&(""==b||r(a,d,v(b,d)))){var e=a[d],f=s(e);if(null==e||void 0==e)c+=m(e,d,f,!0);else if(e instanceof Object)if(e instanceof Array)c+=w(e,d,f,b);else if(e instanceof Date)c+=m(e,d,f,!1),c+=e.toISOString(),c+=n(e,d);else{var g=q(e);g>0||null!=e.__text||null!=e.__cdata?(c+=m(e,d,f,!1),c+=x(e,v(b,d)),c+=n(e,d)):c+=m(e,d,f,!0)}else c+=m(e,d,f,!1),c+=u(e),c+=n(e,d)}return c+=u(a)}var y="1.2.0";a=a||{},b(),c();var z={ELEMENT_NODE:1,TEXT_NODE:3,CDATA_SECTION_NODE:4,COMMENT_NODE:8,DOCUMENT_NODE:9};this.parseXmlString=function(a){window.ActiveXObject||window;if(void 0===a)return null;var b;if(window.DOMParser){var c=new window.DOMParser;try{b=c.parseFromString(a,"text/xml"),b.getElementsByTagNameNS("*","parseerror").length>0&&(b=null)}catch(d){b=null}}else 0==a.indexOf("")+2)),b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a);return b},this.asArray=function(a){return void 0===a||null==a?[]:a instanceof Array?a:[a]},this.toXmlDateTime=function(a){return a instanceof Date?a.toISOString():"number"==typeof a?new Date(a).toISOString():null},this.asDateTime=function(a){return"string"==typeof a?i(a):a},this.xml2json=function(a){return l(a)},this.xml_str2json=function(a){var b=this.parseXmlString(a);return null!=b?this.xml2json(b):null},this.json2xml_str=function(a){return x(a,"")},this.json2xml=function(a){var b=this.json2xml_str(a);return this.parseXmlString(b)},this.getVersion=function(){return y}}Object.defineProperty(c,"__esModule",{value:!0}),c.default=d,b.exports=c.default},{}],5:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}Object.defineProperty(c,"__esModule",{value:!0}),a(6);var e=a(116),f=d(e),g=a(147),h=d(g),i=a(95),j=d(i);dashjs.Protection=h.default,dashjs.MetricsReporting=f.default,dashjs.MediaPlayerFactory=j.default,c.default=dashjs,c.Protection=h.default,c.MetricsReporting=f.default,c.MediaPlayerFactory=j.default},{116:116,147:147,6:6,95:95}],6:[function(a,b,c){(function(b){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}Object.defineProperty(c,"__esModule",{value:!0});var e=a(93),f=d(e),g=a(51),h=d(g),i=a(52),j="undefined"!=typeof window&&window||b,k=j.dashjs;k||(k=j.dashjs={}),k.MediaPlayer=f.default,k.FactoryMaker=h.default,k.Version=(0,i.getVersionString)(),c.default=k,c.MediaPlayer=f.default,c.FactoryMaker=h.default}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{51:51,52:52,93:93}],7:[function(a,b,c){!function(a){"use strict";function b(a){var b=a.charCodeAt(0);return b===f||b===k?62:b===g||b===l?63:b0)throw new Error("Invalid string. Length must be a multiple of 4");var k=a.length;i="="===a.charAt(k-2)?2:"="===a.charAt(k-1)?1:0,j=new e(3*a.length/4-i),g=i>0?a.length-4:a.length;var l=0;for(d=0,f=0;d>16),c((65280&h)>>8),c(255&h);return 2===i?(h=b(a.charAt(d))<<2|b(a.charAt(d+1))>>4,c(255&h)):1===i&&(h=b(a.charAt(d))<<10|b(a.charAt(d+1))<<4|b(a.charAt(d+2))>>2,c(h>>8&255),c(255&h)),j}function d(a){function b(a){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(a)}function c(a){return b(a>>18&63)+b(a>>12&63)+b(a>>6&63)+b(63&a)}var d,e,f,g=a.length%3,h="";for(d=0,f=a.length-g;d>2),h+=b(e<<4&63),h+="==";break;case 2:e=(a[a.length-2]<<8)+a[a.length-1],h+=b(e>>10),h+=b(e>>4&63),h+=b(e<<2&63),h+="="}return h}var e="undefined"!=typeof Uint8Array?Uint8Array:Array,f="+".charCodeAt(0),g="/".charCodeAt(0),h="0".charCodeAt(0),i="a".charCodeAt(0),j="A".charCodeAt(0),k="-".charCodeAt(0),l="_".charCodeAt(0);a.toByteArray=c,a.fromByteArray=d}(void 0===c?this.base64js={}:c)},{}],8:[function(a,b,c){},{}],9:[function(a,b,c){function d(a){if(a&&!i(a))throw new Error("Unknown encoding: "+a)}function e(a){return a.toString(this.encoding)}function f(a){this.charReceived=a.length%2,this.charLength=this.charReceived?2:0}function g(a){this.charReceived=a.length%3,this.charLength=this.charReceived?3:0}var h=a(10).Buffer,i=h.isEncoding||function(a){switch(a&&a.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},j=c.StringDecoder=function(a){switch(this.encoding=(a||"utf8").toLowerCase().replace(/[-_]/,""),d(a),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=f;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=g;break;default:return void(this.write=e)}this.charBuffer=new h(6),this.charReceived=0,this.charLength=0};j.prototype.write=function(a){for(var b="";this.charLength;){var c=a.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:a.length;if(a.copy(this.charBuffer,this.charReceived,0,c),this.charReceived+=c,this.charReceived=55296&&d<=56319)){if(this.charReceived=this.charLength=0,0===a.length)return b;break}this.charLength+=this.surrogateSize,b=""}this.detectIncompleteChar(a);var e=a.length;this.charLength&&(a.copy(this.charBuffer,0,a.length-this.charReceived,e),e-=this.charReceived),b+=a.toString(this.encoding,0,e);var e=b.length-1,d=b.charCodeAt(e);if(d>=55296&&d<=56319){var f=this.surrogateSize;return this.charLength+=f,this.charReceived+=f,this.charBuffer.copy(this.charBuffer,f,0,f),a.copy(this.charBuffer,0,0,f),b.substring(0,e)}return b},j.prototype.detectIncompleteChar=function(a){for(var b=a.length>=3?3:a.length;b>0;b--){var c=a[a.length-b];if(1==b&&c>>5==6){this.charLength=2;break}if(b<=2&&c>>4==14){this.charLength=3;break}if(b<=3&&c>>3==30){this.charLength=4;break}}this.charReceived=b},j.prototype.end=function(a){var b="";if(a&&a.length&&(b=this.write(a)),this.charReceived){var c=this.charReceived,d=this.charBuffer,e=this.encoding;b+=d.slice(0,c).toString(e)}return b}},{10:10}],10:[function(a,b,c){(function(b){/*! +/*! v2.6.4-a337075, 2017-12-06T20:01:07Z */ +!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c||a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g>6),b.push(128|63&d)):d<65536?(b.push(224|d>>12),b.push(128|63&d>>6),b.push(128|63&d)):(b.push(240|d>>18),b.push(128|63&d>>12),b.push(128|63&d>>6),b.push(128|63&d))}return b},e.decode=function(a){for(var b=[],c=0;c>18)),d.push(b.charAt(63&f>>12)),d.push(b.charAt(63&f>>6)),d.push(b.charAt(63&f))}if(2==a.length-c){var f=(a[c]<<16)+(a[c+1]<<8);d.push(b.charAt(63&f>>18)),d.push(b.charAt(63&f>>12)),d.push(b.charAt(63&f>>6)),d.push("=")}else if(1==a.length-c){var f=a[c]<<16;d.push(b.charAt(63&f>>18)),d.push(b.charAt(63&f>>12)),d.push("==")}return d.join("")},d=function(){for(var a=[],c=0;c=c&&console.log(this.time+" ["+a+"] "+b)}},l=function(a){for(var b=[],c=0;ce&&(k.log("ERROR","Too large cursor position "+this.pos),this.pos=e)},moveCursor:function(a){var b=this.pos+a;if(a>1)for(var c=this.pos+1;c=144&&this.backSpace();var b=c(a);if(this.pos>=e)return void k.log("ERROR","Cannot insert "+a.toString(16)+" ("+b+") at position "+this.pos+". Skipping it!");this.chars[this.pos].setChar(b,this.currPenState),this.moveCursor(1)},clearFromPos:function(a){var b;for(b=a;b0&&(c=a?"["+b.join(" | ")+"]":b.join("\n")),c},getTextAndFormat:function(){return this.rows}};var q=function(a,b){this.chNr=a,this.outputFilter=b,this.mode=null,this.verbose=0,this.displayedMemory=new p,this.nonDisplayedMemory=new p,this.lastOutputScreen=new p,this.currRollUpRow=this.displayedMemory.rows[d-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null};q.prototype={modes:["MODE_ROLL-UP","MODE_POP-ON","MODE_PAINT-ON","MODE_TEXT"],reset:function(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.currRollUpRow=this.displayedMemory.rows[d-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.lastCueEndTime=null},getHandler:function(){return this.outputFilter},setHandler:function(a){this.outputFilter=a},setPAC:function(a){this.writeScreen.setPAC(a)},setBkgData:function(a){this.writeScreen.setBkgData(a)},setMode:function(a){a!==this.mode&&(this.mode=a,k.log("INFO","MODE="+a),"MODE_POP-ON"==this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=a)},insertChars:function(a){for(var b=0;b=46,b.italics)b.foreground="white";else{var c=Math.floor(a/2)-16,d=["white","green","blue","cyan","red","yellow","magenta"];b.foreground=d[c]}k.log("INFO","MIDROW: "+JSON.stringify(b)),this.writeScreen.setPen(b)},outputDataUpdate:function(){var a=k.time;null!==a&&this.outputFilter&&(this.outputFilter.updateData&&this.outputFilter.updateData(a,this.displayedMemory),null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,a,this.lastOutputScreen),this.cueStartTime=this.displayedMemory.isEmpty()?null:a):this.cueStartTime=a,this.lastOutputScreen.copy(this.displayedMemory))},cueSplitAtTime:function(a){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,a,this.displayedMemory),this.cueStartTime=a))}};var r=function(a,b,c){this.field=a||1,this.outputs=[b,c],this.channels=[new q(1,b),new q(2,c)],this.currChNr=-1,this.lastCmdA=null,this.lastCmdB=null,this.bufferedData=[],this.startTime=null,this.lastTime=null,this.dataCounters={padding:0,char:0,cmd:0,other:0}};r.prototype={getHandler:function(a){return this.channels[a].getHandler()},setHandler:function(a,b){this.channels[a].setHandler(b)},addData:function(a,b){var c,d,e,f=!1;this.lastTime=a,k.setTime(a);for(var g=0;g=16&&d<=31&&d===this.lastCmdA&&e===this.lastCmdB)this.lastCmdA=null,this.lastCmdB=null,k.log("DEBUG","Repeated command ("+l([d,e])+") is dropped");else if(0!==d||0!==e){if(k.log("DATA","["+l([b[g],b[g+1]])+"] -> ("+l([d,e])+")"),c=this.parseCmd(d,e),c||(c=this.parseMidrow(d,e)),c||(c=this.parsePAC(d,e)),c||(c=this.parseBackgroundAttributes(d,e)),!c&&(f=this.parseChars(d,e)))if(this.currChNr&&this.currChNr>=0){var h=this.channels[this.currChNr-1];h.insertChars(f)}else k.log("WARNING","No channel found yet. TEXT-MODE?");c?this.dataCounters.cmd+=2:f?this.dataCounters.char+=2:(this.dataCounters.other+=2,k.log("WARNING","Couldn't parse cleaned data "+l([d,e])+" orig: "+l([b[g],b[g+1]])))}else this.dataCounters.padding+=2},parseCmd:function(a,b){var c=null,d=(20===a||21===a||28===a||29===a)&&32<=b&&b<=47,e=(23===a||31===a)&&33<=b&&b<=35;if(!d&&!e)return!1;c=20===a||21===a||23===a?1:2;var f=this.channels[c-1];return 20===a||21===a||28===a||29===a?32===b?f.cc_RCL():33===b?f.cc_BS():34===b?f.cc_AOF():35===b?f.cc_AON():36===b?f.cc_DER():37===b?f.cc_RU(2):38===b?f.cc_RU(3):39===b?f.cc_RU(4):40===b?f.cc_FON():41===b?f.cc_RDC():42===b?f.cc_TR():43===b?f.cc_RTD():44===b?f.cc_EDM():45===b?f.cc_CR():46===b?f.cc_ENM():47===b&&f.cc_EOC():f.cc_TO(b-32),this.lastCmdA=a,this.lastCmdB=b,this.currChNr=c,!0},parseMidrow:function(a,b){var c=null;if((17===a||25===a)&&32<=b&&b<=47){if((c=17===a?1:2)!==this.currChNr)return k.log("ERROR","Mismatch channel in midrow parsing"),!1;var d=this.channels[c-1];return d.insertChars([32]),d.cc_MIDROW(b),k.log("DEBUG","MIDROW ("+l([a,b])+")"),this.lastCmdA=a,this.lastCmdB=b,!0}return!1},parsePAC:function(a,b){var c=null,d=null,e=(17<=a&&a<=23||25<=a&&a<=31)&&64<=b&&b<=127,j=(16===a||24===a)&&64<=b&&b<=95;if(!e&&!j)return!1;c=a<=23?1:2,d=64<=b&&b<=95?1===c?f[a]:h[a]:1===c?g[a]:i[a];var k=this.interpretPAC(d,b);return this.channels[c-1].setPAC(k),this.lastCmdA=a,this.lastCmdB=b,this.currChNr=c,!0},interpretPAC:function(a,b){var c=b,d={color:null,italics:!1,indent:null,underline:!1,row:a};return c=b>95?b-96:b-64,d.underline=1==(1&c),c<=13?d.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(c/2)]:c<=15?(d.italics=!0,d.color="white"):d.indent=4*Math.floor((c-16)/2),d},parseChars:function(a,b){var d=null,e=null,f=null;if(a>=25?(d=2,f=a-8):(d=1,f=a),17<=f&&f<=19){var g=b;g=17===f?b+80:18===f?b+112:b+144,k.log("INFO","Special char '"+c(g)+"' in channel "+d),e=[g],this.lastCmdA=a,this.lastCmdB=b}else 32<=a&&a<=127&&(e=0===b?[a]:[a,b],this.lastCmdA=null,this.lastCmdB=null);if(e){var h=l(e);k.log("DEBUG","Char codes = "+h.join(","))}return e},parseBackgroundAttributes:function(a,b){var c,d,e,f,g=(16===a||24===a)&&32<=b&&b<=47,h=(23===a||31===a)&&45<=b&&b<=47;return!(!g&&!h)&&(c={},16===a||24===a?(d=Math.floor((b-32)/2),c.background=j[d],b%2==1&&(c.background=c.background+"_semi")):45===b?c.background="transparent":(c.foreground="black",47===b&&(c.underline=!0)),e=a<24?1:2,f=this.channels[e-1],f.setBkgData(c),this.lastCmdA=a,this.lastCmdB=b,!0)},reset:function(){for(var a=0;a/g,">").replace(/"/g,""").replace(/'/g,"'"):a}function g(a,b,c,d){for(var e=0;e0&&g(a.arrayAccessFormPaths,b,c,d)&&(b[c]=[b[c]])}function i(a){var b=a.split(/[-T:+Z]/g),c=new Date(b[0],b[1]-1,b[2]),d=b[5].split(".");if(c.setHours(b[3],b[4],d[0]),d.length>1&&c.setMilliseconds(d[1]),b[6]&&b[7]){var e=60*b[6]+Number(b[7]);e=0+("-"==(/\d\d-\d\d:\d\d$/.test(a)?"-":"+")?-1*e:e),c.setMinutes(c.getMinutes()-e-c.getTimezoneOffset())}else-1!==a.indexOf("Z",a.length-1)&&(c=new Date(Date.UTC(c.getFullYear(),c.getMonth(),c.getDate(),c.getHours(),c.getMinutes(),c.getSeconds(),c.getMilliseconds())));return c}function j(b,c,d){if(a.datetimeAccessFormPaths.length>0){var e=d.split(".#")[0];return g(a.datetimeAccessFormPaths,b,c,e)?i(b):b}return b}function k(b,c,d,e){return!(c==z.ELEMENT_NODE&&a.xmlElementsFilter.length>0)||g(a.xmlElementsFilter,b,d,e)}function l(b,c){if(b.nodeType==z.DOCUMENT_NODE){for(var f=new Object,g=b.childNodes,i=0;i1&&null!=f.__text&&a.skipEmptyTextNodesForObj&&(a.stripWhitespaces&&""==f.__text||""==f.__text.trim())&&delete f.__text:f=f.__cdata,delete f.__cnt,!a.enableToStringFunc||null==f.__text&&null==f.__cdata||(f.toString=function(){return(null!=this.__text?this.__text:"")+(null!=this.__cdata?this.__cdata:"")}),f}if(b.nodeType==z.TEXT_NODE||b.nodeType==z.CDATA_SECTION_NODE)return b.nodeValue}function m(b,c,d,e){var g="<"+(null!=b&&null!=b.__prefix?b.__prefix+":":"")+c;if(null!=d)for(var h=0;h":">"}function n(a,b){return""}function o(a,b){return-1!==a.indexOf(b,a.length-b.length)}function p(b,c){return!!("property"==a.arrayAccessForm&&o(c.toString(),"_asArray")||0==c.toString().indexOf(a.attributePrefix)||0==c.toString().indexOf("__")||b[c]instanceof Function)}function q(a){var b=0;if(a instanceof Object)for(var c in a)p(a,c)||b++;return b}function r(b,c,d){return 0==a.jsonPropertiesFilter.length||""==d||g(a.jsonPropertiesFilter,b,c,d)}function s(b){var c=[];if(b instanceof Object)for(var d in b)-1==d.toString().indexOf("__")&&0==d.toString().indexOf(a.attributePrefix)&&c.push(d);return c}function t(b){var c="";return null!=b.__cdata&&(c+=""),null!=b.__text&&(a.escapeMode?c+=f(b.__text):c+=b.__text),c}function u(b){var c="";return b instanceof Object?c+=t(b):null!=b&&(a.escapeMode?c+=f(b):c+=b),c}function v(a,b){return""===a?b:a+"."+b}function w(a,b,c,d){var e="";if(0==a.length)e+=m(a,b,c,!0);else for(var f=0;f0)for(var d in a)if(!p(a,d)&&(""==b||r(a,d,v(b,d)))){var e=a[d],f=s(e);if(null==e||void 0==e)c+=m(e,d,f,!0);else if(e instanceof Object)if(e instanceof Array)c+=w(e,d,f,b);else if(e instanceof Date)c+=m(e,d,f,!1),c+=e.toISOString(),c+=n(e,d);else{var g=q(e);g>0||null!=e.__text||null!=e.__cdata?(c+=m(e,d,f,!1),c+=x(e,v(b,d)),c+=n(e,d)):c+=m(e,d,f,!0)}else c+=m(e,d,f,!1),c+=u(e),c+=n(e,d)}return c+=u(a)}var y="1.2.0";a=a||{},b(),c();var z={ELEMENT_NODE:1,TEXT_NODE:3,CDATA_SECTION_NODE:4,COMMENT_NODE:8,DOCUMENT_NODE:9};this.parseXmlString=function(a){window.ActiveXObject||window;if(void 0===a)return null;var b;if(window.DOMParser){var c=new window.DOMParser;try{b=c.parseFromString(a,"text/xml"),b.getElementsByTagNameNS("*","parseerror").length>0&&(b=null)}catch(d){b=null}}else 0==a.indexOf("")+2)),b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a);return b},this.asArray=function(a){return void 0===a||null==a?[]:a instanceof Array?a:[a]},this.toXmlDateTime=function(a){return a instanceof Date?a.toISOString():"number"==typeof a?new Date(a).toISOString():null},this.asDateTime=function(a){return"string"==typeof a?i(a):a},this.xml2json=function(a){return l(a)},this.xml_str2json=function(a){var b=this.parseXmlString(a);return null!=b?this.xml2json(b):null},this.json2xml_str=function(a){return x(a,"")},this.json2xml=function(a){var b=this.json2xml_str(a);return this.parseXmlString(b)},this.getVersion=function(){return y}}Object.defineProperty(c,"__esModule",{value:!0}),c.default=d,b.exports=c.default},{}],5:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}Object.defineProperty(c,"__esModule",{value:!0});var e=a(6),f=a(117),g=d(f),h=a(148),i=d(h),j=a(95),k=d(j);dashjs.Protection=i.default,dashjs.MetricsReporting=g.default,dashjs.MediaPlayerFactory=k.default,c.default=dashjs,c.MediaPlayer=e.MediaPlayer,c.Protection=i.default,c.MetricsReporting=g.default,c.MediaPlayerFactory=k.default},{117:117,148:148,6:6,95:95}],6:[function(a,b,c){(function(b){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}Object.defineProperty(c,"__esModule",{value:!0});var e=a(93),f=d(e),g=a(51),h=d(g),i=a(52),j="undefined"!=typeof window&&window||b,k=j.dashjs;k||(k=j.dashjs={}),k.MediaPlayer=f.default,k.FactoryMaker=h.default,k.Version=(0,i.getVersionString)(),c.default=k,c.MediaPlayer=f.default,c.FactoryMaker=h.default}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{51:51,52:52,93:93}],7:[function(a,b,c){!function(a){"use strict";function b(a){var b=a.charCodeAt(0);return b===f||b===k?62:b===g||b===l?63:b0)throw new Error("Invalid string. Length must be a multiple of 4");var k=a.length;i="="===a.charAt(k-2)?2:"="===a.charAt(k-1)?1:0,j=new e(3*a.length/4-i),g=i>0?a.length-4:a.length;var l=0;for(d=0,f=0;d>16),c((65280&h)>>8),c(255&h);return 2===i?(h=b(a.charAt(d))<<2|b(a.charAt(d+1))>>4,c(255&h)):1===i&&(h=b(a.charAt(d))<<10|b(a.charAt(d+1))<<4|b(a.charAt(d+2))>>2,c(h>>8&255),c(255&h)),j}function d(a){function b(a){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(a)}function c(a){return b(a>>18&63)+b(a>>12&63)+b(a>>6&63)+b(63&a)}var d,e,f,g=a.length%3,h="";for(d=0,f=a.length-g;d>2),h+=b(e<<4&63),h+="==";break;case 2:e=(a[a.length-2]<<8)+a[a.length-1],h+=b(e>>10),h+=b(e>>4&63),h+=b(e<<2&63),h+="="}return h}var e="undefined"!=typeof Uint8Array?Uint8Array:Array,f="+".charCodeAt(0),g="/".charCodeAt(0),h="0".charCodeAt(0),i="a".charCodeAt(0),j="A".charCodeAt(0),k="-".charCodeAt(0),l="_".charCodeAt(0);a.toByteArray=c,a.fromByteArray=d}(void 0===c?this.base64js={}:c)},{}],8:[function(a,b,c){},{}],9:[function(a,b,c){function d(a){if(a&&!i(a))throw new Error("Unknown encoding: "+a)}function e(a){return a.toString(this.encoding)}function f(a){this.charReceived=a.length%2,this.charLength=this.charReceived?2:0}function g(a){this.charReceived=a.length%3,this.charLength=this.charReceived?3:0}var h=a(10).Buffer,i=h.isEncoding||function(a){switch(a&&a.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},j=c.StringDecoder=function(a){switch(this.encoding=(a||"utf8").toLowerCase().replace(/[-_]/,""),d(a),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=f;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=g;break;default:return void(this.write=e)}this.charBuffer=new h(6),this.charReceived=0,this.charLength=0};j.prototype.write=function(a){for(var b="";this.charLength;){var c=a.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:a.length;if(a.copy(this.charBuffer,this.charReceived,0,c),this.charReceived+=c,this.charReceived=55296&&d<=56319)){if(this.charReceived=this.charLength=0,0===a.length)return b;break}this.charLength+=this.surrogateSize,b=""}this.detectIncompleteChar(a);var e=a.length;this.charLength&&(a.copy(this.charBuffer,0,a.length-this.charReceived,e),e-=this.charReceived),b+=a.toString(this.encoding,0,e);var e=b.length-1,d=b.charCodeAt(e);if(d>=55296&&d<=56319){var f=this.surrogateSize;return this.charLength+=f,this.charReceived+=f,this.charBuffer.copy(this.charBuffer,f,0,f),a.copy(this.charBuffer,0,0,f),b.substring(0,e)}return b},j.prototype.detectIncompleteChar=function(a){for(var b=a.length>=3?3:a.length;b>0;b--){var c=a[a.length-b];if(1==b&&c>>5==6){this.charLength=2;break}if(b<=2&&c>>4==14){this.charLength=3;break}if(b<=3&&c>>3==30){this.charLength=4;break}}this.charReceived=b},j.prototype.end=function(a){var b="";if(a&&a.length&&(b=this.write(a)),this.charReceived){var c=this.charReceived,d=this.charBuffer,e=this.encoding;b+=d.slice(0,c).toString(e)}return b}},{10:10}],10:[function(a,b,c){(function(b){/*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh @@ -15,16 +15,16 @@ d=/(\d+) (\d+)/.exec(g),null!==d?h=parseInt(d[1])/parseInt(d[2]):J(b,"Malformed */ b.exports=function(a){return null!=a&&(d(a)||e(a)||!!a._isBuffer)}},{}],27:[function(a,b,c){var d={}.toString;b.exports=Array.isArray||function(a){return"[object Array]"==d.call(a)}},{}],28:[function(a,b,c){(function(a){"use strict";function c(b,c,d,e){if("function"!=typeof b)throw new TypeError('"callback" argument must be a function');var f,g,h=arguments.length;switch(h){case 0:case 1:return a.nextTick(b);case 2:return a.nextTick(function(){b.call(null,c)});case 3:return a.nextTick(function(){b.call(null,c,d)});case 4:return a.nextTick(function(){b.call(null,c,d,e)});default:for(f=new Array(h-1),g=0;g1)for(var c=1;c0?("string"==typeof b||g.objectMode||Object.getPrototypeOf(b)===L.prototype||(b=e(b)),d?g.endEmitted?a.emit("error",new Error("stream.unshift() after end event")):k(a,g,b,!0):g.ended?a.emit("error",new Error("stream.push() after EOF")):(g.reading=!1,g.decoder&&!c?(b=g.decoder.write(b),g.objectMode||0!==b.length?k(a,g,b,!1):s(a,g)):k(a,g,b,!1))):d||(g.reading=!1)}return m(g)}function k(a,b,c,d){b.flowing&&0===b.length&&!b.sync?(a.emit("data",c),a.read(0)):(b.length+=b.objectMode?1:c.length,d?b.buffer.unshift(c):b.buffer.push(c),b.needReadable&&q(a)),s(a,b)}function l(a,b){var c;return f(b)||"string"==typeof b||void 0===b||a.objectMode||(c=new TypeError("Invalid non-string/buffer chunk")),c}function m(a){return!a.ended&&(a.needReadable||a.length=U?a=U:(a--,a|=a>>>1,a|=a>>>2,a|=a>>>4,a|=a>>>8,a|=a>>>16,a++),a}function o(a,b){return a<=0||0===b.length&&b.ended?0:b.objectMode?1:a!==a?b.flowing&&b.length?b.buffer.head.data.length:b.length:(a>b.highWaterMark&&(b.highWaterMark=n(a)),a<=b.length?a:b.ended?b.length:(b.needReadable=!0,0))}function p(a,b){if(!b.ended){if(b.decoder){var c=b.decoder.end();c&&c.length&&(b.buffer.push(c),b.length+=b.objectMode?1:c.length)}b.ended=!0,q(a)}}function q(a){var b=a._readableState;b.needReadable=!1,b.emittedReadable||(P("emitReadable",b.flowing),b.emittedReadable=!0,b.sync?G(r,a):r(a))}function r(a){P("emit readable"),a.emit("readable"),y(a)}function s(a,b){b.readingMore||(b.readingMore=!0,G(t,a,b))}function t(a,b){for(var c=b.length;!b.reading&&!b.flowing&&!b.ended&&b.length=b.length?(c=b.decoder?b.buffer.join(""):1===b.buffer.length?b.buffer.head.data:b.buffer.concat(b.length),b.buffer.clear()):c=A(a,b.buffer,b.decoder),c}function A(a,b,c){var d;return af.length?f.length:a;if(g===f.length?e+=f:e+=f.slice(0,a),0===(a-=g)){g===f.length?(++d,c.next?b.head=c.next:b.head=b.tail=null):(b.head=c,c.data=f.slice(g));break}++d}return b.length-=d,e}function C(a,b){var c=L.allocUnsafe(a),d=b.head,e=1;for(d.data.copy(c),a-=d.data.length;d=d.next;){var f=d.data,g=a>f.length?f.length:a;if(f.copy(c,c.length-a,0,g),0===(a-=g)){g===f.length?(++e,d.next?b.head=d.next:b.head=b.tail=null):(b.head=d,d.data=f.slice(g));break}++e}return b.length-=e,c}function D(a){var b=a._readableState;if(b.length>0)throw new Error('"endReadable()" called on non-empty stream');b.endEmitted||(b.ended=!0,G(E,b,a))}function E(a,b){a.endEmitted||0!==a.length||(a.endEmitted=!0,b.readable=!1,b.emit("end"))}function F(a,b){for(var c=0,d=a.length;c=b.highWaterMark||b.ended))return P("read: emitReadable",b.length,b.ended),0===b.length&&b.ended?D(this):q(this),null;if(0===(a=o(a,b))&&b.ended)return 0===b.length&&D(this),null;var d=b.needReadable;P("need readable",d),(0===b.length||b.length-a0?z(a,b):null,null===e?(b.needReadable=!0,a=0):b.length-=a,0===b.length&&(b.ended||(b.needReadable=!0),c!==a&&b.ended&&D(this)),null!==e&&this.emit("data",e),e},i.prototype._read=function(a){this.emit("error",new Error("_read() is not implemented"))},i.prototype.pipe=function(a,b){function d(a,b){P("onunpipe"),a===m&&b&&!1===b.hasUnpiped&&(b.hasUnpiped=!0,f())}function e(){P("onend"),a.end()}function f(){P("cleanup"),a.removeListener("close",j),a.removeListener("finish",k),a.removeListener("drain",q),a.removeListener("error",i),a.removeListener("unpipe",d),m.removeListener("end",e),m.removeListener("end",l),m.removeListener("data",h),r=!0,!n.awaitDrain||a._writableState&&!a._writableState.needDrain||q()}function h(b){P("ondata"),s=!1,!1!==a.write(b)||s||((1===n.pipesCount&&n.pipes===a||n.pipesCount>1&&-1!==F(n.pipes,a))&&!r&&(P("false write response, pause",m._readableState.awaitDrain),m._readableState.awaitDrain++,s=!0),m.pause())}function i(b){P("onerror",b),l(),a.removeListener("error",i),0===J(a,"error")&&a.emit("error",b)}function j(){a.removeListener("finish",k),l()}function k(){P("onfinish"),a.removeListener("close",j),l()}function l(){P("unpipe"),m.unpipe(a)}var m=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=a;break;case 1:n.pipes=[n.pipes,a];break;default:n.pipes.push(a)}n.pipesCount+=1,P("pipe count=%d opts=%j",n.pipesCount,b);var o=(!b||!1!==b.end)&&a!==c.stdout&&a!==c.stderr,p=o?e:l;n.endEmitted?G(p):m.once("end",p),a.on("unpipe",d);var q=u(m);a.on("drain",q);var r=!1,s=!1;return m.on("data",h),g(a,"error",i),a.once("close",j),a.once("finish",k),a.emit("pipe",m),n.flowing||(P("pipe resume"),m.resume()),a},i.prototype.unpipe=function(a){var b=this._readableState,c={hasUnpiped:!1};if(0===b.pipesCount)return this;if(1===b.pipesCount)return a&&a!==b.pipes?this:(a||(a=b.pipes),b.pipes=null,b.pipesCount=0,b.flowing=!1,a&&a.emit("unpipe",this,c),this);if(!a){var d=b.pipes,e=b.pipesCount;b.pipes=null,b.pipesCount=0,b.flowing=!1;for(var f=0;f-1?setImmediate:B;j.WritableState=i;var E=a(12);E.inherits=a(25);var F={deprecate:a(48)},G=a(38),H=a(44).Buffer,I=d.Uint8Array||function(){},J=a(37);E.inherits(j,G),i.prototype.getBuffer=function(){for(var a=this.bufferedRequest,b=[];a;)b.push(a),a=a.next;return b},function(){try{Object.defineProperty(i.prototype,"buffer",{get:F.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(a){}}();var K;"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(K=Function.prototype[Symbol.hasInstance],Object.defineProperty(j,Symbol.hasInstance,{value:function(a){return!!K.call(this,a)||a&&a._writableState instanceof i}})):K=function(a){return a instanceof this},j.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},j.prototype.write=function(a,b,c){var d=this._writableState,e=!1,i=g(a)&&!d.objectMode;return i&&!H.isBuffer(a)&&(a=f(a)),"function"==typeof b&&(c=b,b=null),i?b="buffer":b||(b=d.defaultEncoding),"function"!=typeof c&&(c=h),d.ended?k(this,c):(i||l(this,d,a,c))&&(d.pendingcb++,e=n(this,d,i,a,b,c)),e},j.prototype.cork=function(){this._writableState.corked++},j.prototype.uncork=function(){var a=this._writableState;a.corked&&(a.corked--,a.writing||a.corked||a.finished||a.bufferProcessing||!a.bufferedRequest||u(this,a))},j.prototype.setDefaultEncoding=function(a){if("string"==typeof a&&(a=a.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((a+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+a);return this._writableState.defaultEncoding=a,this},j.prototype._write=function(a,b,c){c(new Error("_write() is not implemented"))},j.prototype._writev=null,j.prototype.end=function(a,b,c){var d=this._writableState;"function"==typeof a?(c=a,a=null,b=null):"function"==typeof b&&(c=b,b=null),null!==a&&void 0!==a&&this.write(a,b),d.corked&&(d.corked=1,this.uncork()),d.ending||d.finished||z(this,d,c)},Object.defineProperty(j.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(a){this._writableState&&(this._writableState.destroyed=a)}}),j.prototype.destroy=J.destroy,j.prototype._undestroy=J.undestroy,j.prototype._destroy=function(a,b){this.end(),b(a)}}).call(this,a(29),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{12:12,25:25,28:28,29:29,31:31,37:37,38:38,44:44,48:48}],36:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function e(a,b,c){a.copy(b,c)}var f=a(44).Buffer;b.exports=function(){function a(){d(this,a),this.head=null,this.tail=null,this.length=0}return a.prototype.push=function(a){var b={data:a,next:null};this.length>0?this.tail.next=b:this.head=b,this.tail=b,++this.length},a.prototype.unshift=function(a){var b={data:a,next:this.head};0===this.length&&(this.tail=b),this.head=b,++this.length},a.prototype.shift=function(){if(0!==this.length){var a=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,a}},a.prototype.clear=function(){this.head=this.tail=null,this.length=0},a.prototype.join=function(a){if(0===this.length)return"";for(var b=this.head,c=""+b.data;b=b.next;)c+=a+b.data;return c},a.prototype.concat=function(a){if(0===this.length)return f.alloc(0);if(1===this.length)return this.head.data;for(var b=f.allocUnsafe(a>>>0),c=this.head,d=0;c;)e(c.data,b,d),d+=c.data.length,c=c.next;return b},a}()},{44:44}],37:[function(a,b,c){"use strict";function d(a,b){var c=this,d=this._readableState&&this._readableState.destroyed,e=this._writableState&&this._writableState.destroyed;if(d||e)return void(b?b(a):!a||this._writableState&&this._writableState.errorEmitted||g(f,this,a));this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(a||null,function(a){!b&&a?(g(f,c,a),c._writableState&&(c._writableState.errorEmitted=!0)):b&&b(a)})}function e(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function f(a,b){a.emit("error",b)}var g=a(28);b.exports={destroy:d,undestroy:e}},{28:28}],38:[function(a,b,c){b.exports=a(16).EventEmitter},{16:16}],39:[function(a,b,c){b.exports=a(40).PassThrough},{40:40}],40:[function(a,b,c){c=b.exports=a(33),c.Stream=c,c.Readable=c,c.Writable=a(35),c.Duplex=a(31),c.Transform=a(34),c.PassThrough=a(32)},{31:31,32:32,33:33,34:34,35:35}],41:[function(a,b,c){b.exports=a(40).Transform},{40:40}],42:[function(a,b,c){b.exports=a(35)},{35:35}],43:[function(a,b,c){var d=c.decimalAdjust=function(a,b,c){return void 0===c||0==+c?Math[a](b):(b=+b,c=+c,isNaN(b)||"number"!=typeof c||c%1!=0?NaN:(b=b.toString().split("e"),b=Math[a](+(b[0]+"e"+(b[1]?+b[1]-c:-c))),b=b.toString().split("e"),+(b[0]+"e"+(b[1]?+b[1]+c:c))))};b.exports={round10:function(a,b){return d("round",a,b)},floor10:function(a,b){return d("floor",a,b)},ceil10:function(a,b){return d("ceil",a,b)}},b.exports.polyfill=function(){Math.round10||(Math.round10=b.exports.round10),Math.floor10||(Math.floor10=b.exports.floor10),Math.ceil10||(Math.ceil10=b.exports.ceil10)}},{}],44:[function(a,b,c){function d(a,b){for(var c in a)b[c]=a[c]}function e(a,b,c){return g(a,b,c)}var f=a(10),g=f.Buffer;g.from&&g.alloc&&g.allocUnsafe&&g.allocUnsafeSlow?b.exports=f:(d(f,c),c.Buffer=e),d(g,e),e.from=function(a,b,c){if("number"==typeof a)throw new TypeError("Argument must not be a number");return g(a,b,c)},e.alloc=function(a,b,c){if("number"!=typeof a)throw new TypeError("Argument must be a number");var d=g(a);return void 0!==b?"string"==typeof c?d.fill(b,c):d.fill(b):d.fill(0),d},e.allocUnsafe=function(a){if("number"!=typeof a)throw new TypeError("Argument must be a number");return g(a)},e.allocUnsafeSlow=function(a){if("number"!=typeof a)throw new TypeError("Argument must be a number");return f.SlowBuffer(a)}},{10:10}],45:[function(a,b,c){(function(b){!function(c){function d(a,b){if(!(this instanceof d))return new d(a,b);var e=this;f(e),e.q=e.c="",e.bufferCheckPosition=c.MAX_BUFFER_LENGTH,e.opt=b||{},e.opt.lowercase=e.opt.lowercase||e.opt.lowercasetags,e.looseCase=e.opt.lowercase?"toLowerCase":"toUpperCase",e.tags=[],e.closed=e.closedRoot=e.sawRoot=!1,e.tag=e.error=null,e.strict=!!a,e.noscript=!(!a&&!e.opt.noscript),e.state=U.BEGIN,e.strictEntities=e.opt.strictEntities,e.ENTITIES=e.strictEntities?Object.create(c.XML_ENTITIES):Object.create(c.ENTITIES),e.attribList=[],e.opt.xmlns&&(e.ns=Object.create(P)),e.trackPosition=!1!==e.opt.position,e.trackPosition&&(e.position=e.line=e.column=0),n(e,"onready")}function e(a){for(var b=Math.max(c.MAX_BUFFER_LENGTH,10),d=0,e=0,f=D.length;eb)switch(D[e]){case"textNode":p(a);break;case"cdata":o(a,"oncdata",a.cdata),a.cdata="";break;case"script":o(a,"onscript",a.script),a.script="";break;default:r(a,"Max buffer length exceeded: "+D[e])}d=Math.max(d,g)}var h=c.MAX_BUFFER_LENGTH-d;a.bufferCheckPosition=h+a.position}function f(a){for(var b=0,c=D.length;b",a.tagName="",void(a.state=U.SCRIPT);o(a,"onscript",a.script),a.script=""}var b=a.tags.length,c=a.tagName;a.strict||(c=c[a.looseCase]());for(var d=c;b--;){if(a.tags[b].name===d)break;t(a,"Unexpected close tag")}if(b<0)return t(a,"Unmatched closing tag: "+a.tagName),a.textNode+="",void(a.state=U.TEXT);a.tagName=c;for(var e=a.tags.length;e-- >b;){var f=a.tag=a.tags.pop();a.tagName=a.tag.name,o(a,"onclosetag",a.tagName);var g={};for(var h in f.ns)g[h]=f.ns[h];var i=a.tags[a.tags.length-1]||a;a.opt.xmlns&&f.ns!==i.ns&&Object.keys(f.ns).forEach(function(b){var c=f.ns[b];o(a,"onclosenamespace",{prefix:b,uri:c})})}0===b&&(a.closedRoot=!0),a.tagName=a.attribValue=a.attribName="",a.attribList.length=0,a.state=U.TEXT}function z(a){var b,c=a.entity,d=c.toLowerCase(),e="";return a.ENTITIES[c]?a.ENTITIES[c]:a.ENTITIES[d]?a.ENTITIES[d]:(c=d,"#"===c.charAt(0)&&("x"===c.charAt(1)?(c=c.slice(2),b=parseInt(c,16),e=b.toString(16)):(c=c.slice(1),b=parseInt(c,10),e=b.toString(10))),c=c.replace(/^0+/,""),e.toLowerCase()!==c?(t(a,"Invalid character entity"),"&"+a.entity+";"):String.fromCodePoint(b))}function A(a,b){"<"===b?(a.state=U.OPEN_WAKA,a.startTagPosition=a.position):m(G,b)&&(t(a,"Non-whitespace before first tag."),a.textNode=b,a.state=U.TEXT)}function B(a,b){var c="";return b"===d?(o(b,"onsgmldeclaration",b.sgmlDecl),b.sgmlDecl="",b.state=U.TEXT):l(J,d)?(b.state=U.SGML_DECL_QUOTED,b.sgmlDecl+=d):b.sgmlDecl+=d;continue;case U.SGML_DECL_QUOTED:d===b.q&&(b.state=U.SGML_DECL,b.q=""),b.sgmlDecl+=d;continue;case U.DOCTYPE:">"===d?(b.state=U.TEXT,o(b,"ondoctype",b.doctype),b.doctype=!0):(b.doctype+=d,"["===d?b.state=U.DOCTYPE_DTD:l(J,d)&&(b.state=U.DOCTYPE_QUOTED,b.q=d));continue;case U.DOCTYPE_QUOTED:b.doctype+=d,d===b.q&&(b.q="",b.state=U.DOCTYPE);continue;case U.DOCTYPE_DTD:b.doctype+=d,"]"===d?b.state=U.DOCTYPE:l(J,d)&&(b.state=U.DOCTYPE_DTD_QUOTED,b.q=d);continue;case U.DOCTYPE_DTD_QUOTED:b.doctype+=d,d===b.q&&(b.state=U.DOCTYPE_DTD,b.q="");continue;case U.COMMENT:"-"===d?b.state=U.COMMENT_ENDING:b.comment+=d;continue;case U.COMMENT_ENDING:"-"===d?(b.state=U.COMMENT_ENDED,b.comment=q(b.opt,b.comment),b.comment&&o(b,"oncomment",b.comment),b.comment=""):(b.comment+="-"+d,b.state=U.COMMENT);continue;case U.COMMENT_ENDED:">"!==d?(t(b,"Malformed comment"),b.comment+="--"+d,b.state=U.COMMENT):b.state=U.TEXT;continue;case U.CDATA:"]"===d?b.state=U.CDATA_ENDING:b.cdata+=d;continue;case U.CDATA_ENDING:"]"===d?b.state=U.CDATA_ENDING_2:(b.cdata+="]"+d,b.state=U.CDATA);continue;case U.CDATA_ENDING_2:">"===d?(b.cdata&&o(b,"oncdata",b.cdata),o(b,"onclosecdata"),b.cdata="",b.state=U.TEXT):"]"===d?b.cdata+="]":(b.cdata+="]]"+d,b.state=U.CDATA);continue;case U.PROC_INST:"?"===d?b.state=U.PROC_INST_ENDING:l(G,d)?b.state=U.PROC_INST_BODY:b.procInstName+=d;continue;case U.PROC_INST_BODY:if(!b.procInstBody&&l(G,d))continue;"?"===d?b.state=U.PROC_INST_ENDING:b.procInstBody+=d;continue;case U.PROC_INST_ENDING:">"===d?(o(b,"onprocessinginstruction",{name:b.procInstName,body:b.procInstBody}),b.procInstName=b.procInstBody="",b.state=U.TEXT):(b.procInstBody+="?"+d,b.state=U.PROC_INST_BODY);continue;case U.OPEN_TAG:l(R,d)?b.tagName+=d:(u(b),">"===d?x(b):"/"===d?b.state=U.OPEN_TAG_SLASH:(m(G,d)&&t(b,"Invalid character in tag name"),b.state=U.ATTRIB));continue;case U.OPEN_TAG_SLASH:">"===d?(x(b,!0),y(b)):(t(b,"Forward-slash in opening tag not followed by >"),b.state=U.ATTRIB);continue;case U.ATTRIB:if(l(G,d))continue;">"===d?x(b):"/"===d?b.state=U.OPEN_TAG_SLASH:l(Q,d)?(b.attribName=d,b.attribValue="",b.state=U.ATTRIB_NAME):t(b,"Invalid attribute name");continue;case U.ATTRIB_NAME:"="===d?b.state=U.ATTRIB_VALUE:">"===d?(t(b,"Attribute without value"),b.attribValue=b.attribName,w(b),x(b)):l(G,d)?b.state=U.ATTRIB_NAME_SAW_WHITE:l(R,d)?b.attribName+=d:t(b,"Invalid attribute name");continue;case U.ATTRIB_NAME_SAW_WHITE:if("="===d)b.state=U.ATTRIB_VALUE;else{if(l(G,d))continue;t(b,"Attribute without value"),b.tag.attributes[b.attribName]="",b.attribValue="",o(b,"onattribute",{name:b.attribName,value:""}),b.attribName="",">"===d?x(b):l(Q,d)?(b.attribName=d,b.state=U.ATTRIB_NAME):(t(b,"Invalid attribute name"),b.state=U.ATTRIB)}continue;case U.ATTRIB_VALUE:if(l(G,d))continue;l(J,d)?(b.q=d,b.state=U.ATTRIB_VALUE_QUOTED):(t(b,"Unquoted attribute value"),b.state=U.ATTRIB_VALUE_UNQUOTED,b.attribValue=d);continue;case U.ATTRIB_VALUE_QUOTED:if(d!==b.q){"&"===d?b.state=U.ATTRIB_VALUE_ENTITY_Q:b.attribValue+=d;continue}w(b),b.q="",b.state=U.ATTRIB_VALUE_CLOSED;continue;case U.ATTRIB_VALUE_CLOSED:l(G,d)?b.state=U.ATTRIB:">"===d?x(b):"/"===d?b.state=U.OPEN_TAG_SLASH:l(Q,d)?(t(b,"No whitespace between attributes"),b.attribName=d,b.attribValue="",b.state=U.ATTRIB_NAME):t(b,"Invalid attribute name");continue;case U.ATTRIB_VALUE_UNQUOTED:if(m(K,d)){"&"===d?b.state=U.ATTRIB_VALUE_ENTITY_U:b.attribValue+=d;continue}w(b),">"===d?x(b):b.state=U.ATTRIB;continue;case U.CLOSE_TAG:if(b.tagName)">"===d?y(b):l(R,d)?b.tagName+=d:b.script?(b.script+=""===d?y(b):t(b,"Invalid characters in closing tag");continue;case U.TEXT_ENTITY:case U.ATTRIB_VALUE_ENTITY_Q:case U.ATTRIB_VALUE_ENTITY_U:var h,i;switch(b.state){case U.TEXT_ENTITY:h=U.TEXT,i="textNode";break;case U.ATTRIB_VALUE_ENTITY_Q:h=U.ATTRIB_VALUE_QUOTED,i="attribValue";break;case U.ATTRIB_VALUE_ENTITY_U:h=U.ATTRIB_VALUE_UNQUOTED,i="attribValue"}";"===d?(b[i]+=z(b),b.entity="",b.state=h):l(b.entity.length?T:S,d)?b.entity+=d:(t(b,"Invalid character in entity name"),b[i]+="&"+b.entity+d,b.entity="",b.state=h);continue;default:throw new Error(b,"Unknown state: "+b.state)}}return b.position>=b.bufferCheckPosition&&e(b),b}c.parser=function(a,b){return new d(a,b)},c.SAXParser=d,c.SAXStream=i,c.createStream=h,c.MAX_BUFFER_LENGTH=65536;var D=["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"];c.EVENTS=["text","processinginstruction","sgmldeclaration","doctype","comment","opentagstart","attribute","opentag","closetag","opencdata","cdata","closecdata","error","end","ready","script","opennamespace","closenamespace"],Object.create||(Object.create=function(a){function b(){}return b.prototype=a,new b}),Object.keys||(Object.keys=function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b}),d.prototype={end:function(){s(this)},write:C,resume:function(){return this.error=null,this},close:function(){return this.write(null)},flush:function(){g(this)}};var E;try{E=a(46).Stream}catch(W){E=function(){}}var F=c.EVENTS.filter(function(a){return"error"!==a&&"end"!==a});i.prototype=Object.create(E.prototype,{constructor:{value:i}}),i.prototype.write=function(c){if("function"==typeof b&&"function"==typeof b.isBuffer&&b.isBuffer(c)){if(!this._decoder){var d=a(9).StringDecoder;this._decoder=new d("utf8")}c=this._decoder.write(c)}return this._parser.write(c.toString()),this.emit("data",c),!0},i.prototype.end=function(a){return a&&a.length&&this.write(a),this._parser.end(),!0},i.prototype.on=function(a,b){var c=this;return c._parser["on"+a]||-1===F.indexOf(a)||(c._parser["on"+a]=function(){var b=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);b.splice(0,0,a),c.emit.apply(c,b)}),E.prototype.on.call(c,a,b)};var G="\r\n\t ",H="0124356789",I="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",J="'\"",K=G+">",L="[CDATA[",M="DOCTYPE",N="http://www.w3.org/XML/1998/namespace",O="http://www.w3.org/2000/xmlns/",P={xml:N,xmlns:O};G=j(G),H=j(H),I=j(I);var Q=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,R=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/,S=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,T=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/;J=j(J),K=j(K);var U=0;c.STATE={BEGIN:U++,BEGIN_WHITESPACE:U++,TEXT:U++,TEXT_ENTITY:U++,OPEN_WAKA:U++,SGML_DECL:U++,SGML_DECL_QUOTED:U++,DOCTYPE:U++,DOCTYPE_QUOTED:U++,DOCTYPE_DTD:U++,DOCTYPE_DTD_QUOTED:U++,COMMENT_STARTING:U++,COMMENT:U++,COMMENT_ENDING:U++,COMMENT_ENDED:U++,CDATA:U++,CDATA_ENDING:U++,CDATA_ENDING_2:U++,PROC_INST:U++,PROC_INST_BODY:U++,PROC_INST_ENDING:U++,OPEN_TAG:U++,OPEN_TAG_SLASH:U++,ATTRIB:U++,ATTRIB_NAME:U++,ATTRIB_NAME_SAW_WHITE:U++,ATTRIB_VALUE:U++,ATTRIB_VALUE_QUOTED:U++,ATTRIB_VALUE_CLOSED:U++,ATTRIB_VALUE_UNQUOTED:U++,ATTRIB_VALUE_ENTITY_Q:U++,ATTRIB_VALUE_ENTITY_U:U++,CLOSE_TAG:U++,CLOSE_TAG_SAW_WHITE:U++,SCRIPT:U++,SCRIPT_ENDING:U++},c.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},c.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys(c.ENTITIES).forEach(function(a){var b=c.ENTITIES[a],d="number"==typeof b?String.fromCharCode(b):b;c.ENTITIES[a]=d});for(var V in c.STATE)c.STATE[c.STATE[V]]=V;U=c.STATE,/*! http://mths.be/fromcodepoint v0.1.0 by @mathias */ -String.fromCodePoint||function(){var a=String.fromCharCode,b=Math.floor,c=function(){var c,d,e=16384,f=[],g=-1,h=arguments.length;if(!h)return"";for(var i="";++g1114111||b(j)!==j)throw RangeError("Invalid code point: "+j);j<=65535?f.push(j):(j-=65536,c=55296+(j>>10),d=j%1024+56320,f.push(c,d)),(g+1===h||f.length>e)&&(i+=a.apply(null,f),f.length=0)}return i};Object.defineProperty?Object.defineProperty(String,"fromCodePoint",{value:c,configurable:!0,writable:!0}):String.fromCodePoint=c}()}(void 0===c?this.sax={}:c)}).call(this,a(10).Buffer)},{10:10,46:46,9:9}],46:[function(a,b,c){function d(){e.call(this)}b.exports=d;var e=a(16).EventEmitter;a(25)(d,e),d.Readable=a(40),d.Writable=a(42),d.Duplex=a(30),d.Transform=a(41),d.PassThrough=a(39),d.Stream=d,d.prototype.pipe=function(a,b){function c(b){a.writable&&!1===a.write(b)&&j.pause&&j.pause()}function d(){j.readable&&j.resume&&j.resume()}function f(){k||(k=!0,a.end())}function g(){k||(k=!0,"function"==typeof a.destroy&&a.destroy())}function h(a){if(i(),0===e.listenerCount(this,"error"))throw a}function i(){j.removeListener("data",c),a.removeListener("drain",d),j.removeListener("end",f),j.removeListener("close",g),j.removeListener("error",h),a.removeListener("error",h),j.removeListener("end",i),j.removeListener("close",i),a.removeListener("close",i)}var j=this;j.on("data",c),a.on("drain",d),a._isStdio||b&&!1===b.end||(j.on("end",f),j.on("close",g));var k=!1;return j.on("error",h),a.on("error",h),j.on("end",i),j.on("close",i),a.on("close",i),a.emit("pipe",j),a}},{16:16,25:25,30:30,39:39,40:40,41:41,42:42}],47:[function(a,b,c){"use strict";function d(a){if(!a)return"utf8";for(var b;;)switch(a){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return a;default:if(b)return;a=(""+a).toLowerCase(),b=!0}}function e(a){var b=d(a);if("string"!=typeof b&&(s.isEncoding===t||!t(a)))throw new Error("Unknown encoding: "+a);return b||a}function f(a){this.encoding=e(a);var b;switch(this.encoding){case"utf16le":this.text=m,this.end=n,b=4;break;case"utf8":this.fillLast=j,b=4;break;case"base64":this.text=o,this.end=p,b=3;break;default:return this.write=q,void(this.end=r)}this.lastNeed=0,this.lastTotal=0,this.lastChar=s.allocUnsafe(b)}function g(a){return a<=127?0:a>>5==6?2:a>>4==14?3:a>>3==30?4:-1}function h(a,b,c){var d=b.length-1;if(d=0?(e>0&&(a.lastNeed=e-1),e):--d=0?(e>0&&(a.lastNeed=e-2),e):--d=0?(e>0&&(2===e?e=0:a.lastNeed=e-3),e):0)}function i(a,b,c){if(128!=(192&b[0]))return a.lastNeed=0,"�".repeat(c);if(a.lastNeed>1&&b.length>1){if(128!=(192&b[1]))return a.lastNeed=1,"�".repeat(c+1);if(a.lastNeed>2&&b.length>2&&128!=(192&b[2]))return a.lastNeed=2,"�".repeat(c+2)}}function j(a){var b=this.lastTotal-this.lastNeed,c=i(this,a,b);return void 0!==c?c:this.lastNeed<=a.length?(a.copy(this.lastChar,b,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(a.copy(this.lastChar,b,0,a.length),void(this.lastNeed-=a.length))}function k(a,b){var c=h(this,a,b);if(!this.lastNeed)return a.toString("utf8",b);this.lastTotal=c;var d=a.length-(c-this.lastNeed);return a.copy(this.lastChar,0,d),a.toString("utf8",b,d)}function l(a){var b=a&&a.length?this.write(a):"";return this.lastNeed?b+"�".repeat(this.lastTotal-this.lastNeed):b}function m(a,b){if((a.length-b)%2==0){var c=a.toString("utf16le",b);if(c){var d=c.charCodeAt(c.length-1);if(d>=55296&&d<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=a[a.length-2],this.lastChar[1]=a[a.length-1],c.slice(0,-1)}return c}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=a[a.length-1],a.toString("utf16le",b,a.length-1)}function n(a){var b=a&&a.length?this.write(a):"";if(this.lastNeed){var c=this.lastTotal-this.lastNeed;return b+this.lastChar.toString("utf16le",0,c)}return b}function o(a,b){var c=(a.length-b)%3;return 0===c?a.toString("base64",b):(this.lastNeed=3-c,this.lastTotal=3,1===c?this.lastChar[0]=a[a.length-1]:(this.lastChar[0]=a[a.length-2],this.lastChar[1]=a[a.length-1]),a.toString("base64",b,a.length-c))}function p(a){var b=a&&a.length?this.write(a):"";return this.lastNeed?b+this.lastChar.toString("base64",0,3-this.lastNeed):b}function q(a){return a.toString(this.encoding)}function r(a){return a&&a.length?this.write(a):""}var s=a(44).Buffer,t=s.isEncoding||function(a){switch((a=""+a)&&a.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};c.StringDecoder=f,f.prototype.write=function(a){if(0===a.length)return"";var b,c;if(this.lastNeed){if(void 0===(b=this.fillLast(a)))return"";c=this.lastNeed,this.lastNeed=0}else c=0;return c0&&(a+=" "),Array.apply(null,arguments).forEach(function(b){a+=b+" "}),l&&console.log(a),j.trigger(i.default.LOG,{message:a})}var h=this.context,j=(0,g.default)(h).getInstance(),k=void 0,l=void 0,m=void 0,n=void 0,o=void 0;return k={log:f,setLogTimestampVisible:b,setCalleeNameVisible:c,setLogToBrowserConsole:d,getLogToBrowserConsole:e},a(),k}Object.defineProperty(c,"__esModule",{value:!0});var f=a(50),g=d(f),h=a(54),i=d(h),j=a(51),k=d(j);e.__dashjs_factory_name="Debug",c.default=k.default.getSingletonFactory(e),b.exports=c.default},{50:50,51:51,54:54}],50:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b,c){var e=arguments.length<=3||void 0===arguments[3]?h:arguments[3];if(!a)throw new Error("event type cannot be null or undefined");if(!b||"function"!=typeof b)throw new Error("listener must be a function: "+b);if(!(d(a,b,c)>=0)){f[a]=f[a]||[];var g={callback:b,scope:c,priority:e};f[a].some(function(b,c){if(b&&e>b.priority)return f[a].splice(c,0,g),!0})||f[a].push(g)}}function b(a,b,c){if(a&&b&&f[a]){var e=d(a,b,c);e<0||(f[a][e]=null)}}function c(a,b){if(a&&f[a]){if(b=b||{},b.hasOwnProperty("type"))throw new Error("'type' is a reserved word for event dispatching");b.type=a,f[a]=f[a].filter(function(a){return a}),f[a].forEach(function(a){return a&&a.callback.call(a.scope,b)})}}function d(a,b,c){var d=-1;return f[a]?(f[a].some(function(a,e){if(a&&a.callback===b&&(!c||c===a.scope))return d=e,!0}),d):d}function e(){f={}}var f={};return{on:a,off:b,trigger:c,reset:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=0,i=5e3;e.__dashjs_factory_name="EventBus";var j=g.default.getSingletonFactory(e);j.EVENT_PRIORITY_LOW=h,j.EVENT_PRIORITY_HIGH=i,g.default.updateSingletonFactory(e.__dashjs_factory_name,j),c.default=j,b.exports=c.default},{51:51}],51:[function(a,b,c){"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d=function(){function a(a,b,c,d){var e=n(d);!e[a]&&b&&(e[a]={instance:b,override:c})}function b(a,b){for(var c in q){var d=q[c];if(d.context===a&&d.name===b)return d.instance}return null}function c(a,b,c){for(var d in q){var e=q[d];if(e.context===a&&e.name===b)return void(q[d].instance=c)}q.push({name:b,context:a,instance:c})}function d(a,b,c){for(var d in c){if(c[d].name===a)return void(c[d].factory=b)}c.push({name:a,factory:b})}function e(a,b){for(var c in b){if(b[c].name===a)return b[c].factory}return null}function f(a,b,c){for(var d in c){if(c[d].name===a)return void(c[d].factory=b)}}function g(a,b){f(a,b,s)}function h(a){return e(a,s)}function i(a){var b=e(a.__dashjs_factory_name,s);return b||(b=function(b){return void 0===b&&(b={}),{create:function(){return m(a.__dashjs_factory_name,a.apply({context:b},arguments),b,arguments)}}},d(a.__dashjs_factory_name,b,s)),b}function j(a,b){f(a,b,r)}function k(a){return e(a,r)}function l(a){var c=e(a.__dashjs_factory_name,r);return c||(c=function(c){var d=void 0;return void 0===c&&(c={}),{getInstance:function(){return d||(d=b(c,a.__dashjs_factory_name)),d||(d=m(a.__dashjs_factory_name,a.apply({context:c},arguments),c,arguments),q.push({name:a.__dashjs_factory_name,context:c,instance:d})),d}}},d(a.__dashjs_factory_name,c,r)),c}function m(a,b,c,d){b.getClassName=function(){return a};var e=n(c),f=e[a];if(f){var g=f.instance;if(!f.override)return g.apply({context:c,factory:o},d);g=g.apply({context:c,factory:o,parent:b},d);for(var h in g)b.hasOwnProperty(h)&&(b[h]=g[h])}return b}function n(a){var b=void 0;return p.forEach(function(c){c===a&&(b=c)}),b||(p.push(a),b=a),b}var o=void 0,p=[],q=[],r=[],s=[];return o={extend:a,getSingletonInstance:b,setSingletonInstance:c,getSingletonFactory:l,getSingletonFactoryByName:k,updateSingletonFactory:j,getClassFactory:i,getClassFactoryByName:h,updateClassFactory:g}}();c.default=d,b.exports=c.default},{}],52:[function(a,b,c){"use strict";function d(){return e}Object.defineProperty(c,"__esModule",{value:!0}),c.getVersionString=d;var e="2.6.3"},{}],53:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(55),i=d(h),j=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this),this.BUFFERING_COMPLETED="bufferingCompleted",this.BUFFER_CLEARED="bufferCleared",this.BUFFER_LEVEL_UPDATED="bufferLevelUpdated",this.BYTES_APPENDED="bytesAppended",this.CHECK_FOR_EXISTENCE_COMPLETED="checkForExistenceCompleted",this.CURRENT_TRACK_CHANGED="currentTrackChanged",this.DATA_UPDATE_COMPLETED="dataUpdateCompleted",this.DATA_UPDATE_STARTED="dataUpdateStarted",this.INITIALIZATION_LOADED="initializationLoaded",this.INIT_FRAGMENT_LOADED="initFragmentLoaded",this.INIT_REQUESTED="initRequested",this.INTERNAL_MANIFEST_LOADED="internalManifestLoaded",this.LIVE_EDGE_SEARCH_COMPLETED="liveEdgeSearchCompleted",this.LOADING_COMPLETED="loadingCompleted",this.LOADING_PROGRESS="loadingProgress",this.LOADING_ABANDONED="loadingAborted",this.MANIFEST_UPDATED="manifestUpdated",this.MEDIA_FRAGMENT_LOADED="mediaFragmentLoaded",this.QUOTA_EXCEEDED="quotaExceeded",this.REPRESENTATION_UPDATED="representationUpdated",this.SEGMENTS_LOADED="segmentsLoaded",this.SERVICE_LOCATION_BLACKLIST_ADD="serviceLocationBlacklistAdd",this.SERVICE_LOCATION_BLACKLIST_CHANGED="serviceLocationBlacklistChanged",this.SOURCEBUFFER_APPEND_COMPLETED="sourceBufferAppendCompleted",this.SOURCEBUFFER_REMOVE_COMPLETED="sourceBufferRemoveCompleted",this.STREAMS_COMPOSED="streamsComposed",this.STREAM_BUFFERING_COMPLETED="streamBufferingCompleted",this.STREAM_COMPLETED="streamCompleted",this.TIMED_TEXT_REQUESTED="timedTextRequested",this.TIME_SYNCHRONIZATION_COMPLETED="timeSynchronizationComplete",this.URL_RESOLUTION_FAILED="urlResolutionFailed",this.VIDEO_CHUNK_RECEIVED="videoChunkReceived",this.WALLCLOCK_TIME_UPDATED="wallclockTimeUpdated",this.XLINK_ELEMENT_LOADED="xlinkElementLoaded",this.XLINK_READY="xlinkReady"}return f(b,a),b}(i.default);c.default=j,b.exports=c.default},{55:55}],54:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(53),i=d(h),j=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).apply(this,arguments)}return f(b,a),b}(i.default),k=new j;c.default=k,b.exports=c.default},{53:53}],55:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c0?a.segments[0].duration:NaN),b.MSETimeOffset=a.MSETimeOffset,b.useCalculatedLiveEdgeTime=a.useCalculatedLiveEdgeTime,b.mediaInfo=h(a.adaptation),b}function h(a){var b=new k.default,c=a.period.mpd.manifest.Period_asArray[a.period.index].AdaptationSet_asArray[a.index],d=void 0;return b.id=a.id,b.index=a.index,b.type=a.type,b.streamInfo=l(a.period),b.representationCount=M.getRepresentationCount(c),b.lang=M.getLanguageForAdaptation(c),d=M.getViewpointForAdaptation(c),b.viewpoint=d?d.value:void 0,b.accessibility=M.getAccessibilityForAdaptation(c).map(function(a){var c=a.value,d=c;return a.schemeIdUri&&a.schemeIdUri.search("cea-608")>=0&&void 0!==u.default&&(d=c?"cea-608:"+c:"cea-608",b.embeddedCaptions=!0),d}),b.audioChannelConfiguration=M.getAudioChannelConfigurationForAdaptation(c).map(function(a){return a.value}),b.roles=M.getRolesForAdaptation(c).map(function(a){return a.value}),b.codec=M.getCodec(c),b.mimeType=M.getMimeType(c),b.contentProtection=M.getContentProtectionData(c),b.bitrateList=M.getBitrateListForAdaptation(c),b.contentProtection&&b.contentProtection.forEach(function(a){a.KID=M.getKID(a)}),b.isText=M.getIsTextTrack(b.mimeType),b}function j(a,b,c){a.id=b,a.index=100+parseInt(b.substring(2,3)),a.type=g.default.EMBEDDED_TEXT,a.codec="cea-608-in-SEI",a.isText=!0,a.isEmbedded=!0,a.lang=b+" "+c,a.roles=["caption"]}function l(a){var b=new m.default;return b.id=a.id,b.index=a.index,b.start=a.start,b.duration=a.duration,b.manifestInfo=n(a.mpd),b.isLast=1===a.mpd.manifest.Period_asArray.length||Math.abs(b.start+b.duration-b.manifestInfo.duration)<1,b}function n(a){var b=new o.default;return b.DVRWindowSize=a.timeShiftBufferDepth,b.loadedTime=a.manifest.loadedTime,b.availableFrom=a.availabilityStartTime,b.minBufferTime=a.manifest.minBufferTime,b.maxFragmentDuration=a.maxSegmentDuration,b.duration=M.getDuration(a.manifest),b.isDynamic=M.getIsDynamic(a.manifest),b}function p(a,b){if(0===N.length)return null;var c=N[0].mpd.manifest,d=M.getAdaptationForType(c,a.index,b,a);if(!d)return null;var f=e(a,N),g=f.id,i=M.getIndexForAdaptation(d,c,a.index);return O[g]=O[g]||M.getAdaptationsForPeriod(f),h(O[g][i])}function r(a,b,c){var d=N,f=c,i=[],k=void 0,l=void 0,m=void 0,n=void 0,o=void 0,p=void 0;if(f){s();var q=M.getMpd(f);d=M.getRegularPeriods(q)}else{if(!(N.length>0))return i;f=N[0].mpd.manifest}var r=e(a,d),t=r.id,u=M.getAdaptationsForType(f,a.index,b!==g.default.EMBEDDED_TEXT?b:g.default.VIDEO);if(!u)return i;for(O[t]=O[t]||M.getAdaptationsForPeriod(r),n=0,p=u.length;n0&&(i=h?M.getAdaptationForId(h,N[0].mpd.manifest,b.index):M.getAdaptationForIndex(c.index,N[0].mpd.manifest,b.index),a.getRepresentationController().updateData(i,f,g))}function G(a,b){x(a),y(b);var c=a.getRepresentationForQuality(b);return c?f(c):null}function H(a){x(a);var b=a.getCurrentRepresentation();return b?f(b):null}function I(a,b,c){if(!a||!b)return null;var d=new q.default,e=a.scheme_id_uri,f=a.value,g=a.timescale,h=a.presentation_time_delta,i=a.event_duration,j=a.id,k=a.message_data,l=c*g+h;return b[e]?(d.eventStream=b[e],d.eventStream.value=f,d.eventStream.timescale=g,d.duration=i,d.id=j,d.presentationTime=l,d.messageData=k,d.presentationTimeDelta=h,d):null}function J(a,b){var f=[];if(0===N.length)return f;var g=N[0].mpd.manifest;return a instanceof m.default?f=M.getEventsForPeriod(e(a,N)):a instanceof k.default?f=M.getEventStreamForAdaptationSet(g,d(a)):a instanceof i.default&&(f=M.getEventStreamForRepresentation(g,c(a,b.getRepresentationController()))),f}function K(){N=[],O={}}var L=void 0,M=void 0,N=void 0,O=void 0;return L={convertDataToRepresentationInfo:f,getDataForMedia:d,getStreamsInfo:v,getMediaInfoForType:p,getAllMediaInfoForType:r,getCurrentRepresentationInfo:H,getRepresentationInfoForQuality:G,updateData:F,getInitRequest:z,getNextFragmentRequest:A,getFragmentRequestForTime:B,generateFragmentRequestForTime:C,getIndexHandlerTime:D,setIndexHandlerTime:E,getEventsFor:J,getEvent:I,setConfig:b,updatePeriods:t,reset:K},a(),L}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(215),i=d(h),j=a(213),k=d(j),l=a(216),m=d(l),n=a(212),o=d(n),p=a(83),q=d(p),r=a(51),s=d(r),t=a(2),u=d(t);e.__dashjs_factory_name="DashAdapter",c.default=s.default.getSingletonFactory(e),b.exports=c.default},{100:100,2:2,212:212,213:213,215:215,216:216,51:51,83:83}],57:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){_=(0,v.default)(Q).getInstance().log.bind($),l(),T=c(a.mimeType)?(0,G.default)(Q).getInstance():(0,E.default)(Q).getInstance(),T.setConfig({baseURLController:Z,metricsModel:W,mediaPlayerModel:X,errHandler:Y}),R.on(p.default.INITIALIZATION_LOADED,O,$),R.on(p.default.SEGMENTS_LOADED,P,$)}function c(a){return"webm"===a.split("/")[1].toLowerCase()}function d(b){ea=b;var c=ea?ea.getStreamInfo().manifestInfo.isDynamic:null;T.initialize(),fa=(0,C.default)(Q).create(a,c)}function e(){return ea}function f(a){ca=a}function h(){return ca}function j(){return da}function l(){aa=-1,ca=0,da=NaN,ba=null,ea=null,fa=null}function o(){l(),R.off(p.default.INITIALIZATION_LOADED,O,$),R.off(p.default.SEGMENTS_LOADED,P,$)}function q(a){return a?a.split("$$").join("$"):a}function s(a,b){if(null===b||null===a||-1===a.indexOf("$RepresentationID$"))return a;var c=b.toString();return a.split("$RepresentationID$").join(c)}function t(a,b,c){var d=Z.resolve(c.path),e=void 0,f=void 0;return d&&b!==d.url&&S.isRelative(b)?(e=d.url,f=d.serviceLocation,b&&(e=S.resolve(b,e))):e=b,!S.isRelative(e)&&(a.url=e,a.serviceLocation=f,!0)}function u(a,b){var c=new k.default,d=a.adaptation.period,e=d.start,f=ea?ea.getStreamInfo().manifestInfo.isDynamic:null;if(c.mediaType=b,c.type=n.HTTPRequest.INIT_SEGMENT_TYPE,c.range=a.range,c.availabilityStartTime=U.calcAvailabilityStartTimeFromPresentationTime(e,d.mpd,f),c.availabilityEndTime=U.calcAvailabilityEndTimeFromPresentationTime(e+d.duration,d.mpd,f),c.quality=a.index,c.mediaInfo=ea?ea.getMediaInfo():null,c.representationId=a.id,t(c,a.initialization,a))return c}function w(a){var b=ea?ea.getType():null;return a?u(a,b):null}function y(a){var b=!1,c=ea?ea.getStreamInfo().manifestInfo.isDynamic:null;if(c||aa!==a.availableSegmentsNumber){var d=(0,A.getSegmentByIndex)(aa,a);if(d){var e=d.presentationStartTime-a.adaptation.period.start,f=a.adaptation.period.duration;_(a.segmentInfoType+": "+e+" / "+f),b=(a.segmentInfoType!==i.default.SEGMENT_TIMELINE||!c)&&e>=f}else _("isMediaFinished - no segment found")}else b=!0;return b}function B(a){fa.getSegments(a,ba,aa,D)}function D(a,b){var c=ea?ea.getStreamInfo().manifestInfo.isDynamic:null;if(a.segments=b,b&&b.length>0&&(da=isNaN(da)?b[0].presentationStartTime:Math.min(b[0].presentationStartTime,da),c&&isNaN(U.getExpectedLiveEdge()))){var d=b[b.length-1],e=d.presentationStartTime,f=W.getMetricsFor(g.default.STREAM);U.setExpectedLiveEdge(e),W.updateManifestUpdateInfo(V.getCurrentManifestUpdate(f),{presentationStartTime:e})}}function F(a){if(!a)throw new Error("no representation");a.segments=null,B(a)}function I(a,b){var c=z.default.hasInitialization(a),d=z.default.hasSegments(a),e=ea?ea.getType():null,f=ea?ea.getStreamInfo().manifestInfo.isDynamic:null,g=void 0;if(a.segmentDuration||a.segments||F(a),a.segmentAvailabilityRange=null,a.segmentAvailabilityRange=U.calcSegmentAvailabilityRange(a,f),a.segmentAvailabilityRange.end0)for(k=0;k=i&&a-g0&&_("Index for "+g+" time "+b+" is "+aa),f=!n&&y(a),f?(d=new k.default,d.action=k.default.ACTION_COMPLETE,d.index=aa,d.mediaType=g,d.mediaInfo=ea.getMediaInfo(),_("Signal complete.",d)):(e=(0,A.getSegmentByIndex)(aa,a),d=K(e)),l&&j>=0&&(aa=a.segmentInfoType===i.default.SEGMENT_TIMELINE&&h?aa:j),d):null}function M(a,b){var c=(a.segmentAvailabilityRange.end-a.segmentAvailabilityRange.start)/2;return a.segments=null,a.segmentAvailabilityRange={start:b-c,end:b+c},L(a,b,{keepIdx:!1,ignoreIsFinished:!0})}function N(a){var b=void 0,c=void 0,d=void 0,e=ea?ea.getType():null,f=ea?ea.getStreamInfo().manifestInfo.isDynamic:null;return a&&-1!==aa?(ba=null,aa++,_("Getting the next request at index: "+aa),!(0,A.getSegmentByIndex)(aa,a)&&f?(_("No segment found at index: "+aa+". Wait for next loop"),B(a),aa--,null):(d=y(a),d?(b=new k.default,b.action=k.default.ACTION_COMPLETE,b.index=aa,b.mediaType=e,b.mediaInfo=ea.getMediaInfo(),_("Signal complete.")):(B(a),c=(0,A.getSegmentByIndex)(aa,a),b=K(c),!c&&f&&aa--),b)):null}function O(a){var b=a.representation;b.segments&&R.trigger(p.default.REPRESENTATION_UPDATED,{sender:this,representation:b})}function P(a){var b=ea?ea.getType():null,c=ea?ea.getStreamInfo().manifestInfo.isDynamic:null;if(!a.error&&b===a.mediaType){var d=a.segments,e=a.representation,f=[],g=0,h=void 0,i=void 0,j=void 0,k=void 0;for(h=0,i=d.length;h=0;){if(b[e].responsecode){c=b[e];break}e--}return c}function m(a){return a&&a.HttpList?a.HttpList:[]}function n(a,b){if(!a)return null;var c=a[b];if(!c)return null;var d=c.length;return d<=0?null:c[d-1]}function o(a){return n(a,j.default.DROPPED_FRAMES)}function p(a){return n(a,j.default.SCHEDULING_INFO)}function q(a){return n(a,j.default.MANIFEST_UPDATE)}function r(a){return n(a,j.default.DVR_INFO)}function s(a,b){var c={},d=void 0,e=void 0,g=void 0;for(d=m(a),g=d.length-1;g>=0;g--)if(e=d[g],e.type===f.HTTPRequest.MPD_TYPE){c=u(e._responseHeaders);break}return void 0===c[b]?null:c[b]}function t(a,b){var c={},d=l(a);return d&&(c=u(d._responseHeaders)),void 0===c[b]?null:c[b]}function u(a){var b={};if(!a)return b;for(var c=a.trim().split("\r\n"),d=0,e=c.length;d0&&(b[f.substring(0,g)]=f.substring(g+2))}return b}function v(a,b){var c=w(a,b,!0);return null!==c?c:-1}function w(a,b,c){var d=void 0,e=void 0,f=void 0,g=void 0,h=void 0,i=void 0;if(a)for(e=a.AdaptationSet_asArray,h=0;h0&&(l=1===i[0].reference_type),l?function(){r("Initiate multiple SIDX load."),p.range.end=p.range.start+k.size;var c=void 0,d=void 0,f=void 0,h=void 0,j=void 0,l=[],m=0,n=(k.offset||p.range.start)+k.size,o=function(c){c?(l=l.concat(c),++m>=d&&g(l,a,b)):g(null,a,b)};for(c=0,d=i.length;cd||!f.consumeTag(z.Segment.Cues.CuePoint.CueTrackPositions.CueBlockNumber,!0)?c.CueTracks.push(e):(g=f.getMatroskaCodedNum(),e.BlockNumber=f.getMatroskaUint(g),c.CueTracks.push(e))}if(0===c.CueTracks.length)throw new Error("Mandatory cuetrack not found");b.push(c)}if(0===b.length)throw new Error("mandatory cuepoint not found");return b}function e(a,b,c,e){var f=void 0,g=void 0,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0,m=void 0;for(g=d(a),h=[],j=0,k=g.length;je&&(h=e),N=t(h),J=a,c!==g.default.VIDEO&&c!==g.default.AUDIO&&c!==g.default.FRAGMENTED_TEXT)return L=!1,void H.trigger(o.default.DATA_UPDATE_COMPLETED,{sender:this,data:J,currentRepresentation:N});for(var k=0;k0)return s(),A(l),n=new k.default(F,"Segments update failed",null),void H.trigger(o.default.DATA_UPDATE_COMPLETED,{sender:this,data:J,currentRepresentation:N,error:n});if(e){for(var t=0;t0&&a.Representation_asArray[0].hasOwnProperty(i.default.CODECS)&&(j=a.Representation_asArray[0].codecs,0===j.search(g.default.STPP)||0===j.search(g.default.WVTT)))return b===g.default.FRAGMENTED_TEXT;if(f){if(f.length>1)return b===g.default.MUXED;f[0]&&f[0].contentType===b&&(k=!0,l=!0)}if(a.hasOwnProperty(i.default.MIME_TYPE)&&(k=h.test(a.mimeType),l=!0),!l)for(c=0,d=a.Representation_asArray&&a.Representation_asArray.length?a.Representation_asArray.length:0;!l&&c1&&d){for(var f=ha.getCurrentTrackFor(c,d),g=ja.getAllMediaInfoForType(d,c),h=0,i=e.length;h0){var c=la(b)&&b>=0&&b0?a.Representation_asArray[0].mimeType:null}function J(a){return a&&a.hasOwnProperty(i.default.CENC_DEFAULT_KID)?a[i.default.CENC_DEFAULT_KID]:null}function K(a){return a&&a.hasOwnProperty(i.default.CONTENTPROTECTION_ASARRAY)&&0!==a.ContentProtection_asArray.length?a.ContentProtection_asArray:null}function L(a){var b=!1;return a&&a.hasOwnProperty("type")&&(b=a.type===i.default.DYNAMIC),b}function M(a,b){var c=!1;return a&&a.profiles&&a.profiles.length>0&&(c=-1!==a.profiles.indexOf(b)),c}function N(a){return M(a,ka)}function O(a){return a&&a.hasOwnProperty(i.default.MEDIA_PRESENTATION_DURATION)?a.mediaPresentationDuration:Number.MAX_SAFE_INTEGER||Number.MAX_VALUE}function P(a){return a&&a.bandwidth?a.bandwidth:NaN}function Q(a){var b=arguments.length<=1||void 0===arguments[1]?0:arguments[1],c=NaN;return a&&a.hasOwnProperty(i.default.MINIMUM_UPDATE_PERIOD)&&(c=a.minimumUpdatePeriod),isNaN(c)?c:Math.max(c-b,1)}function R(a){return a&&a.Representation_asArray&&a.Representation_asArray.length?a.Representation_asArray.length:0}function S(a){if(!a||!a.Representation_asArray||!a.Representation_asArray.length)return null;var b=z(a),c=b.Representation_asArray,d=c.length,e=[],f=0;for(f=0;f0&&la(a)?b.Representation_asArray[a]:null}function U(a){var b=[],c=void 0,d=void 0,e=void 0,f=void 0,g=void 0,h=void 0,l=void 0;if(a&&a.period&&la(a.period.index)){var m=a.period.mpd.manifest.Period_asArray[a.period.index];m&&m.AdaptationSet_asArray&&la(a.index)&&(f=z(m.AdaptationSet_asArray[a.index]))}for(h=0;f&&h=0)&&(c.useCalculatedLiveEdgeTime=!0)):(c.segmentInfoType=i.default.SEGMENT_LIST,c.useCalculatedLiveEdgeTime=!0)):g.hasOwnProperty(i.default.SEGMENT_TEMPLATE)?(e=g.SegmentTemplate,e.hasOwnProperty(i.default.SEGMENT_TIMELINE)?(c.segmentInfoType=i.default.SEGMENT_TIMELINE,l=e.SegmentTimeline.S_asArray[e.SegmentTimeline.S_asArray.length-1],(!l.hasOwnProperty("r")||l.r>=0)&&(c.useCalculatedLiveEdgeTime=!0)):c.segmentInfoType=i.default.SEGMENT_TEMPLATE,e.hasOwnProperty(i.default.INITIALIZATION_MINUS)&&(c.initialization=e.initialization.split("$Bandwidth$").join(g.bandwidth).split("$RepresentationID$").join(g.id))):c.segmentInfoType=i.default.BASE_URL,e&&(e.hasOwnProperty(i.default.INITIALIZATION)?(d=e.Initialization,d.hasOwnProperty(i.default.SOURCE_URL)?c.initialization=d.sourceURL:d.hasOwnProperty(i.default.RANGE)&&(c.range=d.range)):g.hasOwnProperty(i.default.MIME_TYPE)&&j(g.mimeType)&&(c.range=0),e.hasOwnProperty(i.default.TIMESCALE)&&(c.timescale=e.timescale),e.hasOwnProperty(i.default.DURATION)&&(c.segmentDuration=e.duration/c.timescale),e.hasOwnProperty(i.default.START_NUMBER)&&(c.startNumber=e.startNumber),e.hasOwnProperty(i.default.INDEX_RANGE)&&(c.indexRange=e.indexRange),e.hasOwnProperty(i.default.PRESENTATION_TIME_OFFSET)&&(c.presentationTimeOffset=e.presentationTimeOffset/c.timescale)),c.MSETimeOffset=ia.calcMSETimeOffset(c),c.path=[a.period.index,a.index,h],b.push(c);return b}function V(a){var b=a&&la(a.index)?a.mpd.manifest.Period_asArray[a.index]:null,f=[],j=void 0,k=void 0,l=void 0;if(b&&b.AdaptationSet_asArray)for(l=0;l0&&"__proto__"!==a.id&&(c=a.id),c}function Y(a){var b=new q.default;return a&&(b.manifest=a,a.hasOwnProperty(i.default.AVAILABILITY_START_TIME)?b.availabilityStartTime=new Date(a.availabilityStartTime.getTime()):b.availabilityStartTime=new Date(a.loadedTime.getTime()),a.hasOwnProperty(i.default.AVAILABILITY_END_TIME)&&(b.availabilityEndTime=new Date(a.availabilityEndTime.getTime())),a.hasOwnProperty(i.default.MINIMUM_UPDATE_PERIOD)&&(b.minimumUpdatePeriod=a.minimumUpdatePeriod),a.hasOwnProperty(i.default.MEDIA_PRESENTATION_DURATION)&&(b.mediaPresentationDuration=a.mediaPresentationDuration),a.hasOwnProperty(g.default.SUGGESTED_PRESENTATION_DELAY)&&(b.suggestedPresentationDelay=a.suggestedPresentationDelay),a.hasOwnProperty(i.default.TIMESHIFT_BUFFER_DEPTH)&&(b.timeShiftBufferDepth=a.timeShiftBufferDepth),a.hasOwnProperty(i.default.MAX_SEGMENT_DURATION)&&(b.maxSegmentDuration=a.maxSegmentDuration)),b}function Z(a){var b=L(a.mpd.manifest),c=void 0;if(a.mpd.manifest.mediaPresentationDuration)c=a.mpd.manifest.mediaPresentationDuration;else if(a.duration)c=a.duration;else{if(!b)throw new Error("Must have @mediaPresentationDuratio on MPD or an explicit @duration on the last period.");c=Number.POSITIVE_INFINITY}return c}function $(a){var b=a&&a.mpd&&a.mpd.manifest?a.mpd.manifest:null,c=b?b.Period_asArray:null,d=c&&a&&la(a.index)?c[a.index].EventStream_asArray:null,e=[],f=void 0,h=void 0;if(d)for(f=0;f=0}return!1},function(a){return String(a)})}return g(b,a),b}(j.default);c.default=m,b.exports=c.default},{61:61,69:69}],74:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){a&&a.boxParser&&(d=a.boxParser)}function b(a){if(!d)throw new Error("boxParser is undefined");if(!a)return{sampleList:[],lastSequenceNumber:NaN,totalDuration:NaN,numSequences:NaN};var b=d.parse(a),c=b.getBoxes("moof"),e=b.getBoxes("mfhd"),f=void 0,g=void 0,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0,m=void 0,n=void 0,o=void 0,p=void 0,q=void 0,r=void 0,s=void 0,t=void 0,u=void 0,v=void 0;u=b.getBoxes("moof").length,t=e[e.length-1].sequence_number,h=0,k=[];var w=-1,x=-1;for(p=0;px&&(w++,x+=H.entries[w].sample_delta),m==x){G.subSizes=[];var I=H.entries[w];for(r=0;re):d=!0,d}var f=this.context,h=void 0,i=void 0,j=void 0,l=void 0;return h={getSegments:d},c(),h}Object.defineProperty(c,"__esModule",{value:!0});var f=a(61),g=d(f),h=a(51),i=d(h),j=a(80),k=d(j),l=a(78),m=d(l),n=a(75),o=d(n);e.__dashjs_factory_name="SegmentsGetter";var p=i.default.getClassFactory(e);c.default=p,b.exports=c.default},{51:51,61:61,75:75,78:78,80:80}],77:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){for(;a.lengthf&&h0?(p=j(e,c),o=p?a.calcPeriodRelativeTimeFromMpdRelativeTime(c,p.presentationStartTime):e>0?e*g:a.calcPeriodRelativeTimeFromMpdRelativeTime(c,d)):o=e>0?e*g:b?k.end:k.start,q=Math.floor(Math.max(o-m,k.start)/g),r=Math.floor(Math.min(q+n/g,k.end/g)),{start:q,end:r})}Object.defineProperty(c,"__esModule",{value:!0}),c.replaceTokenForTemplate=g,c.getIndexBasedSegment=h,c.getTimeBasedSegment=i,c.getSegmentByIndex=j,c.decideSegmentListRangeForTemplate=k;var l=a(88),m=d(l)},{88:88}],78:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){function c(a,c,e){var f=a.adaptation.period.mpd.manifest.Period_asArray[a.adaptation.period.index].AdaptationSet_asArray[a.adaptation.index].Representation_asArray[a.index].SegmentTemplate,g=a.segmentDuration,i=a.segmentAvailabilityRange,j=[],k=null,l=null,m=void 0,n=void 0,o=void 0,p=void 0,q=void 0;for(q=a.startNumber,m=isNaN(g)&&!b?{start:q,end:q}:(0,h.decideSegmentListRangeForTemplate)(d,b,a,c,e),o=m.start,p=m.end,n=o;n<=p;n++)l=(0,h.getIndexBasedSegment)(d,b,a,n),l.replacementTime=(q+n-1)*a.segmentDuration,k=f.media,k=(0,h.replaceTokenForTemplate)(k,"Number",l.replacementNumber),k=(0,h.replaceTokenForTemplate)(k,"Time",l.replacementTime),l.media=k,j.push(l),l=null;return isNaN(g)?a.availableSegmentsNumber=1:a.availableSegmentsNumber=Math.ceil((i.end-i.start)/g),j}var d=a.timelineConverter;return{getSegments:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(77);e.__dashjs_factory_name="TemplateSegmentsGetter";var i=g.default.getClassFactory(e);c.default=i,b.exports=c.default},{51:51,77:77}],79:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){u(),x.on(i.default.TIME_SYNCHRONIZATION_COMPLETED,s,this)}function b(){return z}function c(a){z=a}function d(){return y}function e(a){y=a}function f(){return A}function h(a){A=a}function j(a,b,c,d){return d?c&&b.timeShiftBufferDepth!=Number.POSITIVE_INFINITY?new Date(b.availabilityStartTime.getTime()+1e3*(a+b.timeShiftBufferDepth)):b.availabilityEndTime:c?new Date(b.availabilityStartTime.getTime()+1e3*(a-y)):b.availabilityStartTime}function k(a,b,c){return j.call(this,a,b,c)}function l(a,b,c){return j.call(this,a,b,c,!0)}function m(a,b){return(a.getTime()-b.mpd.availabilityStartTime.getTime()+1e3*y)/1e3}function n(a,b){return a+(b.adaptation.period.start-b.presentationTimeOffset)}function o(a,b){return a-b.adaptation.period.start+b.presentationTimeOffset}function p(a,b){var c=void 0,d=void 0,e=void 0;return b&&(c=a.representation.adaptation.period.mpd.suggestedPresentationDelay,d=a.presentationStartTime+c,e=new Date(a.availabilityStartTime.getTime()+1e3*d)),e}function q(a,b){var c=a.adaptation.period,d={start:c.start,end:c.start+c.duration};if(!b)return d;if(!z&&a.segmentAvailabilityRange)return a.segmentAvailabilityRange;var e=a.segmentDuration||(a.segments&&a.segments.length?a.segments[a.segments.length-1].duration:0),f=m(new Date,c),g=c.start+c.duration;return d.start=Math.max(f-c.mpd.timeShiftBufferDepth,c.start),d.end=f>=g&&f-e0,l=void 0;l=f>-1||null!==d?10:1/0;var m=0,n=0,o=-1,p=[],q=null,r=void 0,s=void 0,t=void 0,u=void 0,v=void 0,w=void 0,x=void 0,y=void 0,z=void 0,A=void 0,B=void 0,C=function(c,d){var f=g.media,i=c.mediaRange;return j&&(f=j[d].media||"",i=j[d].mediaRange),(0,h.getTimeBasedSegment)(e,b,a,m,c.d,B,f,i,o,c.tManifest)};for(B=a.timescale,r=i.S_asArray,A=f,null!==d&&(q=e.calcMediaTimeFromPresentationTime(d,a)),t=0,u=r.length;tl){if(z=!0,k)break}else null!==q?n>=q-s.d/B*1.5&&p.push(C(s,o)):o>=A&&p.push(C(s,o)),m+=s.d,n=m/B}return k||(a.availableSegmentsNumber=o+1),p}var e=a.timelineConverter;return{getSegments:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(77);e.__dashjs_factory_name="TimelineSegmentsGetter";var i=g.default.getClassFactory(e);c.default=i,b.exports=c.default},{51:51,77:77}],81:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.period=null,this.index=-1,this.type=null};c.default=e,b.exports=c.default},{}],82:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=1,f=1,g=function a(b,c,g,h){d(this,a),this.url=b||"",this.serviceLocation=c||b||"",this.dvb_priority=g||e,this.dvb_weight=h||f};g.DEFAULT_DVB_PRIORITY=e,g.DEFAULT_DVB_WEIGHT=f,c.default=g,b.exports=c.default},{}],83:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.duration=NaN,this.presentationTime=NaN,this.id=NaN,this.messageData="",this.eventStream=null,this.presentationTimeDelta=NaN};c.default=e,b.exports=c.default},{}],84:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.adaptionSet=null,this.representation=null,this.period=null,this.timescale=1,this.value="",this.schemeIdUri=""};c.default=e,b.exports=c.default},{}],85:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.manifest=null,this.suggestedPresentationDelay=0,this.availabilityStartTime=null,this.availabilityEndTime=Number.POSITIVE_INFINITY,this.timeShiftBufferDepth=Number.POSITIVE_INFINITY,this.maxSegmentDuration=Number.POSITIVE_INFINITY,this.minimumUpdatePeriod=NaN,this.mediaPresentationDuration=NaN};c.default=e,b.exports=c.default},{}],86:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.id=null,this.index=-1,this.duration=NaN,this.start=NaN,this.mpd=null};e.DEFAULT_ID="defaultId",c.default=e,b.exports=c.default},{}],87:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){ -if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=function(){function a(a,b){for(var c=0;c-1?(y?(b=y.createMssParser(),y.registerEvents()):A.manifestError("manifest type unsupported","createParser"),b):a.indexOf("MPD")>-1?(0,z.default)(h).create({errorHandler:A}):b}function e(a){var b=new o.default(a,r.HTTPRequest.MPD_TYPE);u.load({request:b,success:function(b,c,e){var f=void 0,h=void 0;if(e.responseURL&&e.responseURL!==a?(h=l.parseBaseUrl(e.responseURL),f=e.responseURL):(l.isRelative(a)&&(a=l.resolve(a,window.location.href)),h=l.parseBaseUrl(a)),null===x&&(x=d(b)),null===x)return void j.trigger(v.default.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new q.default(C,"Failed detecting manifest type: "+a)});w.setMatchers(x.getMatchers()),w.setIron(x.getIron());var i=x.parse(b);i?(i.url=f||a,i.originalUrl||(i.originalUrl=i.url),i.hasOwnProperty(g.default.LOCATION)&&(h=l.parseBaseUrl(i.Location_asArray[0]),p("BaseURI set by Location to: "+h)),i.baseUri=h,i.loadedTime=new Date,w.resolveManifestOnLoad(i)):j.trigger(v.default.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new q.default(C,E)})},error:function(b,c,d){j.trigger(v.default.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new q.default(D,"Failed loading manifest: "+a+", "+d)})}})}function f(){j.off(v.default.XLINK_READY,c,s),w&&(w.reset(),w=null),u&&(u.abort(),u=null),y&&y.reset()}var h=this.context,j=(0,t.default)(h).getInstance(),l=(0,m.default)(h).getInstance(),n=(0,B.default)(h).getInstance(),p=n.log,s=void 0,u=void 0,w=void 0,x=void 0,y=a.mssHandler,A=a.errHandler;return s={load:e,reset:f},b(),s}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(115),i=d(h),j=a(98),k=d(j),l=a(202),m=d(l),n=a(217),o=d(n),p=a(207),q=d(p),r=a(224),s=a(50),t=d(s),u=a(54),v=d(u),w=a(51),x=d(w),y=a(64),z=d(y),A=a(49),B=d(A),C=1,D=2,E="parsing failed";e.__dashjs_factory_name="ManifestLoader";var F=x.default.getClassFactory(e);F.MANIFEST_LOADER_ERROR_PARSING_FAILURE=C,F.MANIFEST_LOADER_ERROR_LOADING_FAILURE=D,x.default.updateClassFactory(e.__dashjs_factory_name,F),c.default=F,b.exports=c.default},{100:100,115:115,202:202,207:207,217:217,224:224,49:49,50:50,51:51,54:54,64:64,98:98}],92:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){a&&(a.manifestModel&&(z=a.manifestModel),a.dashManifestModel&&(A=a.dashManifestModel),a.mediaPlayerModel&&(B=a.mediaPlayerModel),a.manifestLoader&&(y=a.manifestLoader))}function b(){d(),t.on(i.default.STREAMS_COMPOSED,q,this),t.on(i.default.PLAYBACK_STARTED,o,this),t.on(i.default.PLAYBACK_PAUSED,p,this),t.on(i.default.INTERNAL_MANIFEST_LOADED,n,this)}function c(a){k(a)}function d(){u=NaN,x=!1,w=!0,f()}function e(){t.off(i.default.PLAYBACK_STARTED,o,this),t.off(i.default.PLAYBACK_PAUSED,p,this),t.off(i.default.STREAMS_COMPOSED,q,this),t.off(i.default.INTERNAL_MANIFEST_LOADED,n,this),d()}function f(){null!==v&&(clearInterval(v),v=null)}function h(){f(),isNaN(u)||(s("Refresh manifest in "+u+" seconds."),v=setTimeout(l,1e3*u))}function j(){x=!0;var a=z.getValue(),b=a.url,c=A.getLocation(a);c&&(b=c),y.load(b)}function k(a){z.setValue(a);var b=new Date,c=(b.getTime()-a.loadedTime.getTime())/1e3;u=A.getManifestUpdatePeriod(a,c),t.trigger(i.default.MANIFEST_UPDATED,{manifest:a}),s("Manifest has been refreshed at "+b+"["+b.getTime()/1e3+"] "),w||h()}function l(){w&&!B.getScheduleWhilePaused()||x||j()}function n(a){a.error||k(a.manifest)}function o(){w=!1,h()}function p(){w=!0,f()}function q(){x=!1}var r=this.context,s=(0,m.default)(r).getInstance().log,t=(0,g.default)(r).getInstance(),u=void 0,v=void 0,w=void 0,x=void 0,y=void 0,z=void 0,A=void 0,B=void 0;return{initialize:b,setManifest:c,refreshManifest:j,setConfig:a,reset:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(50),g=d(f),h=a(54),i=d(h),j=a(51),k=d(j),l=a(49),m=d(l);e.__dashjs_factory_name="ManifestUpdater",c.default=k.default.getClassFactory(e),b.exports=c.default},{49:49,50:50,51:51,54:54}],93:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){xc=!1,yc=!1,zc=!0,Dc=null,wc=null,Gc=null,Y.default.extend($.default),Ic=(0,I.default)(qc).getInstance()}function b(a){a&&(a.capabilities&&(Kc=a.capabilities),a.streamController&&(Lc=a.streamController),a.playbackController&&(Mc=a.playbackController),a.mediaPlayerModel&&(Ic=a.mediaPlayerModel),a.abrController&&(Ac=a.abrController),a.mediaController&&(Cc=a.mediaController))}function c(a,b,c){if(Kc||(Kc=(0,w.default)(qc).getInstance()),Jc=(0,u.default)(qc).getInstance(),!Kc.supportsMediaSource())return void Jc.capabilityError("mediasource");xc||(xc=!0,Bc=(0,ja.default)(qc).getInstance(),Ac||(Ac=(0,M.default)(qc).getInstance()),Mc||(Mc=(0,m.default)(qc).getInstance()),Cc||(Cc=(0,q.default)(qc).getInstance()),Gc=(0,da.default)(qc).getInstance(),Oc=(0,fa.default)(qc).getInstance({mediaController:Cc,timelineConverter:Bc,adapter:Gc}),Pc=(0,G.default)(qc).getInstance(),Nc=(0,ha.default)(qc).getInstance({manifestModel:Pc,dashManifestModel:Oc}),Hc=(0,K.default)(qc).getInstance(),Rc=(0,C.default)(qc).getInstance(),Sc=(0,S.default)(qc).getInstance({mediaPlayerModel:Ic}),Gc.setConfig({dashManifestModel:Oc}),Hc.setConfig({adapter:Gc}),$a(),Ca(void 0===c||c),a&&Cb(a),b&&Wb(b),tc("[dash.js "+j()+"] MediaPlayer has been initialized"))}function d(){Wb(null),Cb(null),wc=null,Dc&&(Dc.reset(),Dc=null),Ec&&(Ec.reset(),Ec=null)}function e(){return!!Qc&&!!vc}function f(a,b,c){rc.on(a,b,c)}function h(a,b,c){rc.off(a,b,c)}function j(){return(0,ba.getVersionString)()}function l(){return sc}function n(){if(!yc)throw mc;(!zc||r()&&yc)&&Mc.play()}function p(){if(!yc)throw mc;Mc.pause()}function r(){if(!yc)throw mc;return Mc.isPaused()}function t(a){if(!yc)throw mc;var b=Mc.getIsDynamic()?P(a):a;Mc.seek(b)}function v(){if(!yc)throw mc;return Mc.isSeeking()}function x(){if(!yc)throw mc;return Mc.getIsDynamic()}function z(a){if(!Qc)throw nc;zb().playbackRate=a}function B(){if(!Qc)throw nc;return zb().playbackRate}function D(a){if(!Qc)throw nc;zb().muted=a}function F(){if(!Qc)throw nc;return zb().muted}function H(a){if(!Qc)throw nc;zb().volume=a}function J(){if(!Qc)throw nc;return zb().volume}function L(a){var b=[g.default.VIDEO,g.default.AUDIO,g.default.FRAGMENTED_TEXT];if(a){if(-1!==b.indexOf(a)){var c=ub().getCurrentBufferLevel(vb(a));return c||NaN}return tc("Warning - getBufferLength requested for invalid type"),NaN}var c=b.map(function(a){return Hb(a).length>0?ub().getCurrentBufferLevel(vb(a)):Number.MAX_VALUE}).reduce(function(a,b){return Math.min(a,b)});return c===Number.MAX_VALUE?NaN:c}function N(){var a=ic();return a?a.manifestInfo.DVRWindowSize:0}function P(a){var b=ic();if(!b)return 0;var c=b.range.start+a;return c>b.range.end&&(c=b.range.end),c}function R(a){if(!yc)throw mc;var b=zb().currentTime;if(void 0!==a)b=Lc.getTimeRelativeToStreamId(b,a);else if(Mc.getIsDynamic()){var c=ic();b=null===c?0:T()-(c.range.end-c.time)}return b}function T(){if(!yc)throw mc;var a=zb().duration;if(Mc.getIsDynamic()){var b=ic(),c=void 0;if(!b)return 0;c=b.range.end-b.range.start,a=c0?(b--,p.push(setTimeout(function(){c(a,b)},j.getRetryIntervalForType(d.type)))):(h.downloadError(q[d.type],d.url,d),a.error&&a.error(d,"error",e.statusText),a.complete&&a.complete(d,e.statusText))))},w=function(b){var c=new Date;k&&(k=!1,(!b.lengthComputable||b.lengthComputable&&b.total!==b.loaded)&&(d.firstByteDate=c)),b.lengthComputable&&(d.bytesLoaded=b.loaded,d.bytesTotal=b.total),f.push({s:s,d:c.getTime()-s.getTime(),b:[b.loaded?b.loaded-t:0]}),s=c,t=b.loaded,a.progress&&a.progress()},x=function(){e.status>=200&&e.status<=299&&(u(!0),a.success&&a.success(e.response,e.statusText,e),a.complete&&a.complete(d,e.statusText))},y=function(){a.abort&&a.abort(d,e.status)};if(!l||!i||!h)throw new Error("config object is not correct or missing");try{var z=l.modifyRequestURL(d.url),A=d.checkExistenceOnly?g.HTTPRequest.HEAD:g.HTTPRequest.GET;e.open(A,z,!0),d.responseType&&(e.responseType=d.responseType),d.range&&e.setRequestHeader("Range","bytes="+d.range),d.requestStartDate||(d.requestStartDate=r),e=l.modifyRequestHeader(e),e.withCredentials=j.getXHRWithCredentialsForType(d.type),e.onload=x,e.onloadend=v,e.onerror=v,e.onprogress=w,e.onabort=y;var B=(new Date).getTime();isNaN(d.delayLoadingTime)||B>=d.delayLoadingTime?(n.push(e),e.send()):function(){var a={xhr:e};o.push(a),a.delayTimeout=setTimeout(function(){if(-1!==o.indexOf(a)){o.splice(o.indexOf(a),1);try{r=new Date,s=r,n.push(a.xhr),a.xhr.send()}catch(b){a.xhr.onerror()}}},d.delayLoadingTime-B)}()}catch(C){e.onerror()}}function d(a){a.request&&c(a,j.getRetryAttemptsForType(a.request.type))}function f(){p.forEach(function(a){return clearTimeout(a)}),p=[],o.forEach(function(a){return clearTimeout(a.delayTimeout)}),o=[],n.forEach(function(a){a.onloadend=a.onerror=a.onprogress=void 0,a.abort()}),n=[]}var h=a.errHandler,i=a.metricsModel,j=a.mediaPlayerModel,l=a.requestModifier,m=void 0,n=void 0,o=void 0,p=void 0,q=void 0;return m={load:d,abort:f},b(),m}Object.defineProperty(c,"__esModule",{value:!0});var g=a(224),h=a(51),i=d(h),j=a(195),k=d(j);f.__dashjs_factory_name="XHRLoader";var l=i.default.getClassFactory(f);c.default=l,b.exports=c.default},{195:195,224:224,51:51}],99:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b,c){var e=function(d,e){b.resolved=!0,b.resolvedContent=d||null,f.trigger(p.default.XLINK_ELEMENT_LOADED,{element:b,resolveObject:c,error:d||e?null:new g.default(s,"Failed loading Xlink element: "+a)})};if(a===d)e(null,!0);else{var i=new l.default(a,j.HTTPRequest.XLINK_TYPE);h.load({request:i,success:function(a){e(a)},error:function(){e(null)}})}}function c(){h&&(h.abort(),h=null)}var d="urn:mpeg:dash:resolve-to-zero:2013",e=this.context,f=(0,n.default)(e).getInstance(),h=(0,i.default)(e).create({errHandler:a.errHandler,metricsModel:a.metricsModel,mediaPlayerModel:a.mediaPlayerModel,requestModifier:a.requestModifier});return{load:b,reset:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(207),g=d(f),h=a(98),i=d(h),j=a(224),k=a(217),l=d(k),m=a(50),n=d(m),o=a(54),p=d(o),q=a(51),r=d(q),s=1;e.__dashjs_factory_name="XlinkLoader";var t=r.default.getClassFactory(e);t.XLINK_LOADER_ERROR_LOADING_FAILURE=s,r.default.updateClassFactory(e.__dashjs_factory_name,t),c.default=t,b.exports=c.default},{207:207,217:217,224:224,50:50,51:51,54:54,98:98}],100:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;cg&&(i=g),Ra[a].push({oldValue:d,newValue:i}),i>y.default.NO_CHANGE&&i!=d)(Da[a].state===J||i>d)&&Z(a,d,i,g,h.reason);else if(ra.getLogToBrowserConsole()){var j=Wa.getCurrentBufferLevel(Va.getReadOnlyMetricsFor(a));ua("AbrController ("+a+") stay on "+d+"/"+g+" (buffer: "+j+")")}}}}function Y(a,b,c,d){var e=b.id,f=ha(a);if(null===c||isNaN(c)||c%1!=0)throw new Error("argument is not an integer");var g=n(a,e);c!==f&&c>=0&&c<=g&&Z(a,f,c,g,d)}function Z(a,b,c,d,e){if(a&&Ca[a]){var f=Ca[a].getStreamInfo(),g=f?f.id:null;if(ra.getLogToBrowserConsole()){var h=Wa.getCurrentBufferLevel(Va.getReadOnlyMetricsFor(a));ua("AbrController ("+a+") switch from "+b+" to "+c+"/"+d+" (buffer: "+h+") "+(e?JSON.stringify(e):"."))}ia(a,g,c),sa.trigger(s.default.QUALITY_CHANGE_REQUESTED,{mediaType:a,streamInfo:f,oldQuality:b,newQuality:c,reason:e})}}function $(a,b){Da[a].state=b}function _(a){return Da[a]?Da[a].state:null}function aa(a,b,c){if(Xa&&c&&Ca[a.type].getCurrentRepresentationInfo()&&Ca[a.type].getCurrentRepresentationInfo().fragmentDuration){c/=1e3;var d=Ca[a.type].getCurrentRepresentationInfo().fragmentDuration;if(c>d)return 0;b*=1-c/d}var e=ba(a);if(!e||0===e.length)return M;for(var f=e.length-1;f>=0;f--){if(1e3*b>=e[f].bitrate)return f}return 0}function ba(a){if(!a||!a.bitrateList)return null;for(var b=a.bitrateList,c=a.type,d=[],e=void 0,f=0,g=b.length;f(g?f:e);Ua[a]=h,h!==g&&ua(h?"AbrController ("+a+") switching from throughput to buffer occupancy ABR rule (buffer: "+b.toFixed(3)+").":"AbrController ("+a+") switching from buffer occupancy to throughput ABR rule (buffer: "+b.toFixed(3)+").")}function da(a){return Ua[a]}function ea(){return Ta}function fa(a){var b=a.type,c=a.streamInfo.id,d=a.representationCount-1;return ja(b,c,d),d}function ga(a){var b=a.id,c=ha(i.default.AUDIO),d=ha(i.default.VIDEO);return c===n(i.default.AUDIO,b)&&d===n(i.default.VIDEO,b)}function ha(a){if(a&&Ca[a]){var b=Ca[a].getStreamInfo(),c=b?b.id:null;if(c)return za[c]=za[c]||{},za[c].hasOwnProperty(a)||(za[c][a]=M),za[c][a]}return M}function ia(a,b,c){za[b]=za[b]||{},za[b][a]=c}function ja(a,b,c){ya[b]=ya[b]||{},ya[b][a]=c}function ka(a,b){var c=a;if(!Ca[b])return c;var d=G(b);void 0!==d&&(c=Math.max(a,d));var e=D(b);return void 0!==e&&(c=Math.min(c,e)),c}function la(a,b,c){var d=N(b);return isNaN(d)||d>=1||d<0?a:Math.min(a,Math.round(c*d))}function ma(a){Ha=a}function na(){var a=Ga&&window.hasOwnProperty("devicePixelRatio"),b=a?window.devicePixelRatio:1;Ia=Na.getClientWidth()*b,Ja=Na.getClientHeight()*b}function oa(a,b){if(b!==i.default.VIDEO||!Fa||!Ca[b])return a;Ha||na();var c=Ka.getValue(),d=La.getAdaptationForType(c,0,b).Representation,e=a;if(Ia>0&&Ja>0){for(;e>0&&d[e]&&Ia=e&&d[e].width===d[e+1].width&&(e=Math.min(a,e+1))}return e}function pa(a){var b=a.request.mediaType;if(P(b)){var c=Ca[b];if(!c)return;var d=(0,w.default)(qa).create({abrController:ta,streamProcessor:c,currentRequest:a.request,useBufferOccupancyABR:da(b)}),e=va.shouldAbandonFragment(d);if(e.quality>y.default.NO_CHANGE){var f=c.getFragmentModel();f.getRequests({state:o.default.FRAGMENT_MODEL_LOADING,index:a.request.index})[0]&&(f.abortRequests(),$(b,I),Ra[b].reset(),Ra[b].push({oldValue:ha(b,wa.getActiveStreamInfo()),newValue:e.quality,confidence:1,reason:e.reason}),Y(b,wa.getActiveStreamInfo(),e.quality,e.reason),clearTimeout(Ea),Ea=setTimeout(function(){$(b,J),Ea=null},Oa.getAbandonLoadTimeout()))}}}var qa=this.context,ra=(0,H.default)(qa).getInstance(),sa=(0,q.default)(qa).getInstance(),ta=void 0,ua=void 0,va=void 0,wa=void 0,xa=void 0,ya=void 0,za=void 0,Aa=void 0,Ba=void 0,Ca=void 0,Da=void 0,Ea=void 0,Fa=void 0,Ga=void 0,Ha=void 0,Ia=void 0,Ja=void 0,Ka=void 0,La=void 0,Ma=void 0,Na=void 0,Oa=void 0,Pa=void 0,Qa=void 0,Ra=void 0,Sa=void 0,Ta=void 0,Ua=void 0,Va=void 0,Wa=void 0,Xa=void 0;return ta={isPlayingAtTopQuality:ga,updateTopQualityIndex:fa,getThroughputHistory:ea,getBitrateList:ba,getQualityForBitrate:aa,getMaxAllowedBitrateFor:v,getMinAllowedBitrateFor:x,setMaxAllowedBitrateFor:z,setMinAllowedBitrateFor:B,getMaxAllowedIndexFor:D,getMinAllowedIndexFor:G,getMaxAllowedRepresentationRatioFor:N,setMaxAllowedRepresentationRatioFor:O,getInitialBitrateFor:p,setInitialBitrateFor:r,getInitialRepresentationRatioFor:t,setInitialRepresentationRatioFor:u,setAutoSwitchBitrateFor:Q,getAutoSwitchBitrateFor:P,getUseDeadTimeLatency:V,setUseDeadTimeLatency:W,setLimitBitrateByPortal:S,getLimitBitrateByPortal:R,getUsePixelRatioInLimitBitrateByPortal:T,setUsePixelRatioInLimitBitrateByPortal:U,getQualityFor:ha,getAbandonmentStateFor:_,setPlaybackQuality:Y,checkPlaybackQuality:X,getTopQualityIndexFor:n,setElementSize:na,setWindowResizeEventCalled:ma,createAbrRulesCollection:d,registerStreamType:b,unRegisterStreamType:c,setConfig:h,reset:f},a(),ta}Object.defineProperty(c,"__esModule",{value:!0});var f=a(174),g=d(f),h=a(100),i=d(h),j=a(101),k=d(j),l=a(206),m=d(l),n=a(140),o=d(n),p=a(50),q=d(p),r=a(54),s=d(r),t=a(51),u=d(t),v=a(170),w=d(v),x=a(171),y=d(x),z=a(172),A=d(z),B=a(169),C=d(B),D=a(173),E=d(D),F=a(224),G=a(49),H=d(G),I="abandonload",J="allowload",K=1e3,L=100,M=0;e.__dashjs_factory_name="AbrController";var N=u.default.getSingletonFactory(e);N.ABANDON_LOAD=I,N.QUALITY_DEFAULT=M,u.default.updateSingletonFactory(e.__dashjs_factory_name,N),c.default=N,b.exports=c.default},{100:100,101:101,140:140,169:169,170:170,171:171,172:172,173:173,174:174,206:206,224:224,49:49,50:50,51:51,54:54}],103:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){r.invalidateSelectedIndexes(a.entry)}function b(){r=(0,g.default)(n).create(),t=(0,i.default)(n).create(),o.on(s.default.SERVICE_LOCATION_BLACKLIST_CHANGED,a,j)}function c(a){a.baseURLTreeModel&&(r=a.baseURLTreeModel),a.baseURLSelector&&(t=a.baseURLSelector),a.dashManifestModel&&(l=a.dashManifestModel)}function d(a){r.update(a),t.chooseSelectorFromManifest(a)}function e(a){var b=r.getForPath(a),c=b.reduce(function(a,b){var c=t.select(b);return c?(p.isRelative(c.url)?a.url=p.resolve(c.url,a.url):(a.url=c.url,a.serviceLocation=c.serviceLocation),a):new m.default},new m.default);if(!p.isRelative(c.url))return c}function f(){r.reset(),t.reset()}function h(a){r.setConfig({dashManifestModel:l}),t.setConfig({dashManifestModel:l}),d(a)}var j=void 0,l=void 0,n=this.context,o=(0,q.default)(n).getInstance(),p=(0,k.default)(n).getInstance(),r=void 0,t=void 0;return j={reset:f,initialize:h,resolve:e,setConfig:c},b(),j}Object.defineProperty(c,"__esModule",{value:!0});var f=a(139),g=d(f),h=a(189),i=d(h),j=a(202),k=d(j),l=a(82),m=d(l),n=a(51),o=d(n),p=a(50),q=d(p),r=a(54),s=d(r);e.__dashjs_factory_name="BaseURLController",c.default=o.default.getSingletonFactory(e),b.exports=c.default},{139:139,189:189,202:202,50:50,51:51,54:54,82:82}],104:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){return!!(g.length&&a&&a.length)&&-1!==g.indexOf(a)}function c(a){-1===g.indexOf(a)&&(g.push(a),h.trigger(j,{entry:a}))}function d(a){c(a.entry)}function e(){k&&h.on(k,d,this)}function f(){g=[]}var g=[],h=(0,i.default)(this.context).getInstance(),j=a.updateEventName,k=a.addBlacklistEventName;return e(),{add:c,contains:b,reset:f}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(50),i=d(h);e.__dashjs_factory_name="BlackListController",c.default=g.default.getClassFactory(e),b.exports=c.default},{50:50,51:51}],105:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){ua=(0,y.default)(fa).getInstance().log.bind(ta),Ja=(0,A.default)(fa).getInstance(),da()}function c(){return E}function d(a){aa(a),va=pa.getQualityFor(ra,sa.getStreamInfo());var b=navigator.userAgent.toLowerCase();Ma=/safari/.test(b)&&/mac/.test(b)&&!/chrome/.test(b)&&!/windows phone/.test(b),ga.on(s.default.DATA_UPDATE_COMPLETED,P,this),ga.on(s.default.INIT_FRAGMENT_LOADED,h,this),ga.on(s.default.MEDIA_FRAGMENT_LOADED,l,this),ga.on(s.default.QUALITY_CHANGE_REQUESTED,r,this),ga.on(s.default.STREAM_COMPLETED,Q,this),ga.on(s.default.PLAYBACK_PROGRESS,w,this),ga.on(s.default.PLAYBACK_TIME_UPDATED,w,this),ga.on(s.default.PLAYBACK_RATE_CHANGED,V,this),ga.on(s.default.PLAYBACK_SEEKING,t,this),ga.on(s.default.WALLCLOCK_TIME_UPDATED,S,this),ga.on(s.default.CURRENT_TRACK_CHANGED,R,this,q.default.EVENT_PRIORITY_HIGH),ga.on(s.default.SOURCEBUFFER_APPEND_COMPLETED,p,this),ga.on(s.default.SOURCEBUFFER_REMOVE_COMPLETED,N,this),Ma&&ga.on(s.default.PLAYBACK_SEEKED,T,this)}function e(a){if(!a||!za||!sa)return null;var b=null;try{b=ja.createSourceBuffer(za,a),b&&b.hasOwnProperty(g.default.INITIALIZE)&&b.initialize(ra,sa)}catch(c){ka.mediaSourceError("Error creating "+ra+" source buffer.")}return $(b),O(sa.getRepresentationInfoForQuality(va).MSETimeOffset),b}function f(){return!(!sa||!la)&&sa.getStreamInfo().id===la.getActiveStreamInfo().id}function h(a){a.fragmentModel===sa.getFragmentModel()&&(ua("Init fragment finished loading saving to",ra+"'s init cache"),Ja.save(a.chunk),n(a.chunk))}function j(a,b){var c=Ja.extract(a,b);c?n(c):ga.trigger(s.default.INIT_REQUESTED,{sender:ta})}function l(a){if(a.fragmentModel===sa.getFragmentModel()){var b=a.chunk,c=b.bytes,d=b.quality,e=sa.getRepresentationInfoForQuality(d),f=na.getEventsFor(e.mediaInfo,sa),g=na.getEventsFor(e,sa);if(f&&f.length>0||g&&g.length>0){var h=sa.getFragmentModel().getRequests({state:i.default.FRAGMENT_MODEL_EXECUTED,quality:d,index:b.index})[0],j=I(c,h,f,g);sa.getEventController().addInbandEvents(j)}n(b)}}function n(a){Ha=!0,Ea=a,ja.append(Ca,a),a.mediaInfo.type===g.default.VIDEO&&ga.trigger(s.default.VIDEO_CHUNK_RECEIVED,{chunk:a})}function p(a){if(Ca===a.buffer){if(a.error)return a.error.code===k.default.QUOTA_EXCEEDED_ERROR_CODE&&(ya=.8*ja.getTotalBufferedTime(Ca)),void(a.error.code!==k.default.QUOTA_EXCEEDED_ERROR_CODE&&J()||(ga.trigger(s.default.QUOTA_EXCEEDED,{sender:ta,criticalBufferLevel:ya}),M(L())));Ea&&!isNaN(Ea.index)&&(Aa=Math.max(Ea.index,Aa),F());var b=ja.getAllRanges(Ca);if(b&&b.length>0)for(var c=0,d=b.length;c=Ba-1&&!wa&&(wa=!0,ga.trigger(s.default.BUFFERING_COMPLETED,{sender:ta,streamInfo:sa.getStreamInfo()}))}function G(){"audio"!==ra&&"video"!==ra||(La&&!wa&&qa&&qa.getTimeToStreamEnd()-xa0&&(ua("pruning buffer: "+b+" seconds."),Ia=!0,ja.remove(Ca,0,Math.round(a+b),za))}}function L(a){if(!Ca)return null;var b=qa.getTime(),c=sa.getFragmentModel().getRequests({state:i.default.FRAGMENT_MODEL_EXECUTED,time:b,threshold:a})[0],d=ja.getBufferRange(Ca,b),e=c&&!isNaN(c.startTime)?c.startTime:Math.floor(b);return null===d&&Ca.buffered.length>0&&(e=Ca.buffered.end(Ca.buffered.length-1)),{start:Ca.buffered.start(0),end:e}}function M(a){a&&Ca&&ja.remove(Ca,a.start,a.end,za)}function N(a){Ca===a.buffer&&(Ia&&(Ia=!1),x(),ga.trigger(s.default.BUFFER_CLEARED,{sender:ta,from:a.from,to:a.to,hasEnoughSpaceToAppend:J()}))}function O(a){Ca&&Ca.timestampOffset!==a&&!isNaN(a)&&(Ca.timestampOffset=a)}function P(a){a.sender.getStreamProcessor()!==sa||a.error||O(a.currentRepresentation.MSETimeOffset)}function Q(a){a.fragmentModel===sa.getFragmentModel()&&(Ba=a.request.index,F())}function R(a){Ca&&a.newMediaInfo.type===ra&&a.newMediaInfo.streamInfo.id===sa.getStreamInfo().id&&ma.getSwitchMode(ra)===o.default.TRACK_SWITCH_MODE_ALWAYS_REPLACE&&M(L(0))}function S(){++Fa*(ia.getWallclockTimeUpdateInterval()/1e3)>=ia.getBufferPruningInterval()&&!Ha&&(Fa=0,K())}function T(){U(qa.getTime())}function U(a){for(var b=ja.getAllRanges(Ca),c=0;ca&&(ua("Removing buffer from: "+b.start(c)+"-"+b.end(c)),ja.remove(Ca,b.start(c),b.end(c),za))}function V(){G()}function W(){return ra}function X(){return sa}function Y(a){Ka=a}function Z(){return Ca}function $(a){Ca=a}function _(){return xa}function aa(a){za=a}function ba(){return za}function ca(){return wa}function da(){ya=Number.POSITIVE_INFINITY,Da=C,va=m.default.QUALITY_DEFAULT,Ba=Number.POSITIVE_INFINITY,Aa=0,Ea=null,Ga=!1,wa=!1,Ha=!1,Ia=!1,La=!1,xa=0,Fa=0}function ea(a){ga.off(s.default.DATA_UPDATE_COMPLETED,P,this),ga.off(s.default.QUALITY_CHANGE_REQUESTED,r,this),ga.off(s.default.INIT_FRAGMENT_LOADED,h,this),ga.off(s.default.MEDIA_FRAGMENT_LOADED,l,this),ga.off(s.default.STREAM_COMPLETED,Q,this),ga.off(s.default.CURRENT_TRACK_CHANGED,R,this),ga.off(s.default.PLAYBACK_PROGRESS,w,this),ga.off(s.default.PLAYBACK_TIME_UPDATED,w,this),ga.off(s.default.PLAYBACK_RATE_CHANGED,V,this),ga.off(s.default.PLAYBACK_SEEKING,t,this),ga.off(s.default.WALLCLOCK_TIME_UPDATED,S,this),ga.off(s.default.SOURCEBUFFER_APPEND_COMPLETED,p,this),ga.off(s.default.SOURCEBUFFER_REMOVE_COMPLETED,N,this),Ma&&ga.off(s.default.PLAYBACK_SEEKED,T,this),da(),a||(ja.abort(za,Ca),ja.removeSourceBuffer(za,Ca)),Ca=null}var fa=this.context,ga=(0,q.default)(fa).getInstance(),ha=a.metricsModel,ia=a.mediaPlayerModel,ja=a.sourceBufferController,ka=a.errHandler,la=a.streamController,ma=a.mediaController,na=a.adapter,oa=a.textController,pa=a.abrController,qa=a.playbackController,ra=a.type,sa=a.streamProcessor,ta=void 0,ua=void 0,va=void 0,wa=void 0,xa=void 0,ya=void 0,za=void 0,Aa=void 0,Ba=void 0,Ca=void 0,Da=void 0,Ea=void 0,Fa=void 0,Ga=void 0,Ha=void 0,Ia=void 0,Ja=void 0,Ka=void 0,La=void 0,Ma=void 0;return ta={getBufferControllerType:c,initialize:d,createBuffer:e,getType:W,getStreamProcessor:X,setSeekStartTime:Y,getBuffer:Z,setBuffer:$,getBufferLevel:_,setMediaSource:aa,getMediaSource:ba,getIsBufferingCompleted:ca,switchInitData:j,reset:ea},b(),ta}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(140),i=d(h),j=a(112),k=d(j),l=a(102),m=d(l),n=a(108),o=d(n),p=a(50),q=d(p),r=a(54),s=d(r),t=a(190),u=d(t),v=a(51),w=d(v),x=a(49),y=d(x),z=a(196),A=d(z),B="bufferLoaded",C="bufferStalled",D=.5,E="BufferController";e.__dashjs_factory_name=E;var F=w.default.getClassFactory(e);F.BUFFER_LOADED=B,F.BUFFER_EMPTY=C,w.default.updateClassFactory(e.__dashjs_factory_name,F),c.default=F,b.exports=c.default},{100:100,102:102,108:108,112:112,140:140,190:190,196:196,49:49,50:50,51:51,54:54}],106:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){b()}function b(){E=!1,v={},w={},x={},y=null,z=100,A=z/1e3}function c(){if(!B||!C||!D)throw new Error("setConfig function has to be called previously")}function d(){null!==y&&E&&(clearInterval(y),y=null,E=!1)}function e(){c(),s("Start Event Controller"),E||isNaN(z)||(E=!0,y=setInterval(j,z))}function f(a){if(c(),v={},a)for(var b=0;bc)&&(s("Start Event "+f+" at "+c),g.duration>0&&(x[f]=g),g.eventStream.schemeIdUri==p&&g.eventStream.value==q?l():t.trigger(g.eventStream.schemeIdUri,{event:g}),delete a[f])}}function n(a){a&&(a.manifestModel&&(B=a.manifestModel),a.manifestUpdater&&(C=a.manifestUpdater),a.playbackController&&(D=a.playbackController))}function o(){d(),b()}var p="urn:mpeg:dash:event:2012",q=1,r=this.context,s=(0,i.default)(r).getInstance().log,t=(0,k.default)(r).getInstance(),u=void 0,v=void 0,w=void 0,x=void 0,y=void 0,z=void 0,A=void 0,B=void 0,C=void 0,D=void 0,E=void 0;return u={addInlineEvents:f,addInbandEvents:g,clear:d,start:e,setConfig:n,reset:o},a(),u}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(49),i=d(h),j=a(50),k=d(j);e.__dashjs_factory_name="EventController",c.default=g.default.getClassFactory(e),b.exports=c.default},{49:49,50:50,51:51}],107:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){e(),q.on(t.default.FRAGMENT_LOADING_COMPLETED,k,w)}function c(a){var b=y[a];return b||(b=(0,l.default)(m).create({metricsModel:v,fragmentLoader:(0,n.default)(m).create({metricsModel:v,mediaPlayerModel:u,errHandler:s,requestModifier:(0,p.default)(m).getInstance()})}),y[a]=b),b}function d(a){return a&&a.type&&a.type===h.HTTPRequest.INIT_SEGMENT_TYPE}function e(){for(var a in y)y[a].reset();y={}}function f(){q.off(t.default.FRAGMENT_LOADING_COMPLETED,k,this),e()}function i(a,b,c){var d=new j.default;return d.streamId=c,d.mediaInfo=b.mediaInfo,d.segmentType=b.type,d.start=b.startTime,d.duration=b.duration,d.end=d.start+d.duration,d.bytes=a,d.index=b.index,d.quality=b.quality,d.representationId=b.representationId,d}function k(a){if(y[a.request.mediaType]===a.sender){var b=a.request,c=a.response,e=d(b),f=b.mediaInfo.streamInfo;if(a.error&&(a.request.mediaType!==g.default.AUDIO&&a.request.mediaType!==g.default.VIDEO||q.trigger(t.default.SERVICE_LOCATION_BLACKLIST_ADD,{entry:a.request.serviceLocation})),!c||!f)return void o("No "+b.mediaType+" bytes to push or stream is inactive.");var h=i(c,b,f.id);q.trigger(e?t.default.INIT_FRAGMENT_LOADED:t.default.MEDIA_FRAGMENT_LOADED,{chunk:h,fragmentModel:a.sender})}}var m=this.context,o=(0,x.default)(m).getInstance().log,q=(0,r.default)(m).getInstance(),s=a.errHandler,u=a.mediaPlayerModel,v=a.metricsModel,w=void 0,y=void 0;return w={getModel:c,isInitializationRequest:d,reset:f},b(),w}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(224),i=a(208),j=d(i),k=a(140),l=d(k),m=a(90),n=d(m),o=a(200),p=d(o),q=a(50),r=d(q),s=a(54),t=d(s),u=a(51),v=d(u),w=a(49),x=d(w);e.__dashjs_factory_name="FragmentController",c.default=v.default.getClassFactory(e),b.exports=c.default},{100:100,140:140,200:200,208:208,224:224,49:49,50:50,51:51,54:54,90:90}],108:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){z()}function b(a,b){var c=l(a),e=d(a,b),f=[];if(a===g.default.FRAGMENTED_TEXT)return void h(e[0]);c||(c=P.getSavedMediaSettings(a),j(a,c)),e&&0!==e.length&&(c&&e.forEach(function(a){B(c,a)&&f.push(a)}),h(0===f.length?E(e):f.length>1?E(f):f[0]))}function c(a){var b=a?a.type:null,c=a?a.streamInfo.id:null,d=l(b);a&&w(b)&&(K[c]=K[c]||F(),K[c][b].list.indexOf(a)>=0||(K[c][b].list.push(a),d&&B(d,a)&&!e(b,a.streamInfo)&&h(a)))}function d(a,b){if(!a||!b)return[];var c=b.id;return K[c]&&K[c][a]?K[c][a].list:[]}function e(a,b){return!a||!b||b&&!K[b.id]?null:K[b.id][a].current}function f(a){var b=a.type,c=a.streamInfo.id;return K[c]&&K[c][b]&&x(K[c][b].current,a)}function h(a){if(a){var b=a.type,c=a.streamInfo,d=c.id,f=e(b,c);if(K[d]&&K[d][b]&&(!f||!x(a,f))){K[d][b].current=a,f&&I.trigger(i.default.CURRENT_TRACK_CHANGED,{oldMediaInfo:f,newMediaInfo:a,switchMode:N[b]});var g=A(a);g&&K[d][b].storeLastSettings&&(g.roles&&(g.role=g.roles[0],delete g.roles),g.accessibility&&(g.accessibility=g.accessibility[0]),g.audioChannelConfiguration&&(g.audioChannelConfiguration=g.audioChannelConfiguration[0]),P.setSavedMediaSettings(b,g))}}}function j(a,b){a&&b&&(L[a]=b)}function l(a){return a?L[a]:null}function m(a,b){if(-1===Q.indexOf(b))return void H("track switch mode is not supported: "+b);N[a]=b}function n(a){return N[a]}function u(a){if(-1===R.indexOf(a))return void H("track selection mode is not supported: "+a);M=a}function v(){return M||t}function w(a){return a===g.default.AUDIO||a===g.default.VIDEO||a===g.default.TEXT||a===g.default.FRAGMENTED_TEXT}function x(a,b){var c=a.id===b.id,d=a.viewpoint===b.viewpoint,e=a.lang===b.lang,f=a.roles.toString()===b.roles.toString(),g=a.accessibility.toString()===b.accessibility.toString(),h=a.audioChannelConfiguration.toString()===b.audioChannelConfiguration.toString();return c&&d&&e&&f&&g&&h}function y(a){a&&(a.errHandler&&(O=a.errHandler),a.domStorage&&(P=a.domStorage))}function z(){K={},D(),C()}function A(a){var b={lang:a.lang,viewpoint:a.viewpoint,roles:a.roles,accessibility:a.accessibility,audioChannelConfiguration:a.audioChannelConfiguration};return b.lang||b.viewpoint||b.role&&b.role.length>0||b.accessibility&&b.accessibility.length>0||b.audioChannelConfiguration&&b.audioChannelConfiguration.length>0?b:null}function B(a,b){var c=!a.lang||a.lang===b.lang,d=!a.viewpoint||a.viewpoint===b.viewpoint,e=!a.role||!!b.roles.filter(function(b){return b===a.role})[0],f=!a.accessibility||!!b.accessibility.filter(function(b){return b===a.accessibility})[0],g=!a.audioChannelConfiguration||!!b.audioChannelConfiguration.filter(function(b){return b===a.audioChannelConfiguration})[0];return c&&d&&e&&f&&g}function C(){N={audio:q,video:p}}function D(){L={audio:null,video:null}}function E(a){var b=v(),c=[],d=function(a){var b=0,c=[],d=void 0;return a.forEach(function(a){d=Math.max.apply(Math,a.bitrateList.map(function(a){return a.bandwidth})),d>b?(b=d,c=[a]):d===b&&c.push(a)}),c},e=function(a){var b=0,c=[],d=void 0;return a.forEach(function(a){d=a.representationCount,d>b?(b=d,c=[a]):d===b&&c.push(a)}),c};switch(b){case r:c=d(a),c.length>1&&(c=e(c));break;case s:c=e(a),c.length>1&&(c=d(a));break;default:H("track selection mode is not supported: "+b)}return c[0]}function F(){return{audio:{list:[],storeLastSettings:!0,current:null},video:{list:[],storeLastSettings:!0,current:null},text:{list:[],storeLastSettings:!0,current:null},fragmentedText:{list:[],storeLastSettings:!0,current:null}}}var G=this.context,H=(0,o.default)(G).getInstance().log,I=(0,k.default)(G).getInstance(),J=void 0,K=void 0,L=void 0,M=void 0,N=void 0,O=void 0,P=void 0,Q=[q,p],R=[r,s];return J={checkInitialMediaSettingsForType:b,addTrack:c,getTracksFor:d,getCurrentTrackFor:e,isCurrentTrack:f,setTrack:h,setInitialSettings:j,getInitialSettings:l,setSwitchMode:m,getSwitchMode:n,setSelectionModeForInitialTrack:u,getSelectionModeForInitialTrack:v,isMultiTrackSupportedByType:w,isTracksEqual:x,setConfig:y,reset:z},a(),J}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(54),i=d(h),j=a(50),k=d(j),l=a(51),m=d(l),n=a(49),o=d(n),p="neverReplace",q="alwaysReplace",r="highestBitrate",s="widestRange",t=r;e.__dashjs_factory_name="MediaController";var u=m.default.getSingletonFactory(e);u.TRACK_SWITCH_MODE_NEVER_REPLACE=p,u.TRACK_SWITCH_MODE_ALWAYS_REPLACE=q,u.TRACK_SELECTION_MODE_HIGHEST_BITRATE=r,u.TRACK_SELECTION_MODE_WIDEST_RANGE=s,u.DEFAULT_INIT_TRACK_SELECTION_MODE=t,m.default.updateSingletonFactory(e.__dashjs_factory_name,u),c.default=u,b.exports=c.default},{100:100,49:49,50:50,51:51,54:54}],109:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){var a="WebKitMediaSource"in window;return"MediaSource"in window?new MediaSource:a?new WebKitMediaSource:null}function b(a,b){var c=window.URL.createObjectURL(a);return b.setSource(c),c}function c(a){a.setSource(null)}function d(a,b){return a.duration!=b&&(a.duration=b),a.duration}function e(a,b,c){"function"==typeof a.setLiveSeekableRange&&"function"==typeof a.clearLiveSeekableRange&&"open"===a.readyState&&b>=0&&b0){var e=Math.max(b-10,b/2);return Math.min(d,e)}return d}function y(){ha=0,ia=NaN,ja=null,pa=!1,ka={},la={},ga&&($.off(o.default.DATA_UPDATE_COMPLETED,F,this),$.off(o.default.BUFFER_LEVEL_STATE_CHANGED,V,this),$.off(o.default.BYTES_APPENDED,U,this),D(),X()),ga=null,ma=null,na=null}function z(a){a&&(a.streamController&&(aa=a.streamController),a.metricsModel&&(ba=a.metricsModel),a.dashMetrics&&(ca=a.dashMetrics),a.manifestModel&&(da=a.manifestModel),a.dashManifestModel&&(ea=a.dashManifestModel),a.mediaPlayerModel&&(oa=a.mediaPlayerModel),a.adapter&&(fa=a.adapter),a.videoModel&&(ga=a.videoModel))}function A(a,b){var c=void 0,d=(0,k.default)(Y).getInstance().getURIFragmentData(),e=NaN;if(d){var f=parseInt(d.s,10),g=parseInt(d.t,10);a||(e=isNaN(f)?g:f)}else e=0;if(na)isNaN(e)||((c=e-ma.manifestInfo.availableFrom.getTime()/1e3)>ia||c<(isNaN(b)?NaN:b-ma.manifestInfo.DVRWindowSize))&&(c=null),c=c||ia;else if(!isNaN(e)&&e=0)c=e;else{var h=ka[ma.id];void 0===h&&(h=aa.getActiveStreamCommonEarliestTime()),c=Math.max(h,ma.start)}return c}function B(a){var b=ba.getReadOnlyMetricsFor(g.default.VIDEO)||ba.getReadOnlyMetricsFor(g.default.AUDIO),c=ca.getCurrentDVRInfo(b),d=c?c.range:null,e=void 0;if(!d)return NaN;if(a>d.end)e=Math.max(d.end-2*ma.manifestInfo.minBufferTime,d.start);else{if(!(a0)for(var c=0,d=b.length;c=b.start(c)&&ac?ka[ma.id].video:c,d=la[ma.id].audio):(b=ka[ma.id].audio>c?ka[ma.id].audio:c,d=la[ma.id].video),T(b,d)&&(l(b),ka[ma.id]=!1)):ka[ma.id][e]&&(b=ka[ma.id][e]>c?ka[ma.id][e]:c,l(b),ka[ma.id]=!1)}}function V(a){a.streamInfo.id===ma.id&&ga.setStallState(a.mediaType,a.state===i.default.BUFFER_EMPTY)}function W(){ga.addEventListener("canplay",G),ga.addEventListener("play",H),ga.addEventListener("playing",I),ga.addEventListener("pause",J),ga.addEventListener("error",R),ga.addEventListener("seeking",K),ga.addEventListener("seeked",L),ga.addEventListener("timeupdate",M),ga.addEventListener("progress",N),ga.addEventListener("ratechange",O),ga.addEventListener("loadedmetadata",P),ga.addEventListener("ended",Q)}function X(){ga.removeEventListener("canplay",G),ga.removeEventListener("play",H),ga.removeEventListener("playing",I),ga.removeEventListener("pause",J),ga.removeEventListener("error",R),ga.removeEventListener("seeking",K),ga.removeEventListener("seeked",L),ga.removeEventListener("timeupdate",M),ga.removeEventListener("progress",N),ga.removeEventListener("ratechange",O),ga.removeEventListener("loadedmetadata",P),ga.removeEventListener("ended",Q)}var Y=this.context,Z=(0,s.default)(Y).getInstance().log,$=(0,m.default)(Y).getInstance(),_=void 0,aa=void 0,ba=void 0,ca=void 0,da=void 0,ea=void 0,fa=void 0,ga=void 0,ha=void 0,ia=void 0,ja=void 0,ka=void 0,la=void 0,ma=void 0,na=void 0,oa=void 0,pa=void 0;return _={initialize:b,setConfig:z,getStreamStartTime:A,getTimeToStreamEnd:d,getTime:n,getPlaybackRate:p,getPlayedRanges:q,getEnded:r,getIsDynamic:t,getStreamController:u,setLiveStartTime:v,getLiveStartTime:w,computeLiveDelay:x,play:e,isPaused:f,pause:h,isSeeking:j,seek:l,reset:y},a(),_}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(105),i=d(h),j=a(144),k=d(j),l=a(50),m=d(l),n=a(54),o=d(n),p=a(51),q=d(p),r=a(49),s=d(r);e.__dashjs_factory_name="PlaybackController",c.default=q.default.getSingletonFactory(e),b.exports=c.default},{100:100,105:105,144:144,49:49,50:50,51:51,54:54}],111:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){ra=(0,z.default)(ba).getInstance().log.bind(qa),_()}function c(){sa=pa.getFragmentModel(),Fa=ia.getScheduleWhilePaused(),Da=(0,n.default)(ba).create({abrController:ja,dashMetrics:fa,metricsModel:da,mediaPlayerModel:ia,textController:ma}),Ea=(0,p.default)(ba).create({adapter:ea,sourceBufferController:na,textController:ma}),ga.getIsTextTrack(oa)&&ca.on(v.default.TIMED_TEXT_REQUESTED,N,this),ca.on(v.default.QUALITY_CHANGE_REQUESTED,x,this),ca.on(v.default.DATA_UPDATE_STARTED,I,this),ca.on(v.default.DATA_UPDATE_COMPLETED,A,this),ca.on(v.default.FRAGMENT_LOADING_COMPLETED,E,this),ca.on(v.default.STREAM_COMPLETED,D,this),ca.on(v.default.STREAM_INITIALIZED,B,this),ca.on(v.default.BUFFER_LEVEL_STATE_CHANGED,K,this),ca.on(v.default.BUFFER_CLEARED,J,this),ca.on(v.default.BYTES_APPENDED,G,this),ca.on(v.default.INIT_REQUESTED,q,this),ca.on(v.default.QUOTA_EXCEEDED,L,this),ca.on(v.default.PLAYBACK_SEEKING,P,this),ca.on(v.default.PLAYBACK_STARTED,O,this),ca.on(v.default.PLAYBACK_RATE_CHANGED,Q,this),ca.on(v.default.PLAYBACK_TIME_UPDATED,F,this),ca.on(v.default.URL_RESOLUTION_FAILED,M,this),ca.on(v.default.FRAGMENT_LOADING_ABANDONED,H,this)}function d(){return!1===va}function e(){ta&&!pa.isBufferingCompleted()&&($(),va=!1,ua&&(ua=!1),o(0),ra("Schedule controller starting for "+oa))}function f(){va||(va=!0,clearTimeout(Ba),ra("Schedule controller stopping for "+oa))}function i(a,b){Ha[b]=Ha[b]||{};var c=ja.getTopQualityIndexFor(a,b);return Ha[b][a]!=c&&(ra("Top quality "+a+" index has changed from "+Ha[b][a]+" to "+c),Ha[b][a]=c,!0)}function k(){if(!(va||za||!pa.getBufferController()||ka.isPaused()&&!Fa)){m();var a=Ja.length>0;if(Ka||a||i(ta.mediaInfo.type,pa.getStreamInfo().id)||Da.execute(pa,oa,la.isVideoTrackPresent())){var b=function(){ra("ScheduleController "+oa+"- getNextFragment");var a=pa.getFragmentController();if(Ka)ra("ScheduleController "+oa+"- switch track has been asked, get init request for "+oa+" with representationid = "+ta.id),pa.switchInitData(ta.id),Ia=ta.quality,Ka=!1;else if(ta.quality!==Ia)ra("ScheduleController "+oa+"- quality has changed, get init request"),Ia=ta.quality,pa.switchInitData(ta.id);else{var b=Ja.shift();if(a.isInitializationRequest(b))pa.switchInitData(b.representationId);else{var c=Ea.execute(pa,b);c?(ra("ScheduleController "+oa+"- getNextFragment - request is "+c.url),sa.executeRequest(c)):(ra("getNextFragment "+oa+"- Playing at the bleeding live edge and frag is not available yet"),za=!1,o(500))}}};za=!0,a||Ka?b():(ja.checkPlaybackQuality(oa),b())}else o(500)}}function m(){var a=1.5*ta.fragmentDuration,b=sa.getRequests({state:r.default.FRAGMENT_MODEL_EXECUTED,time:ka.getTime()+a,threshold:0})[0];if(b&&-1===Ja.indexOf(b)&&!ga.getIsTextTrack(oa)){var c=ia.getFastSwitchEnabled(),d=pa.getBufferLevel(),e=ja.getAbandonmentStateFor(oa);c&&b.quality=a&&e!==j.default.ABANDON_LOAD?(w(b),ra("Reloading outdated fragment at index: ",b.index)):b.quality>ta.quality&&S(ka.getTime()+pa.getBufferLevel())}}function o(a){clearTimeout(Ba),Ba=setTimeout(k,a)}function q(a){a.sender&&a.sender.getStreamProcessor()===pa&&s(ta.quality)}function s(a){var b=ea.getInitRequest(pa,a);b&&(za=!0,sa.executeRequest(b))}function u(){Ka=!0}function w(a){Ja.push(a)}function x(a){if(oa===a.mediaType&&pa.getStreamInfo().id===a.streamInfo.id){if(null===(ta=pa.getRepresentationInfoForQuality(a.newQuality))||void 0===ta)throw new Error("Unexpected error! - currentRepresentationInfo is null or undefined");Z(new Date,h.PlayListTrace.REPRESENTATION_SWITCH_STOP_REASON),$()}}function y(a){if(ka&&sa){var b=sa.getRequests({state:r.default.FRAGMENT_MODEL_EXECUTED,time:ka.getTime(),threshold:0})[0];b&&ka.getTime()>=b.startTime&&(b.quality===Ga.quality&&b.adaptationIndex===Ga.adaptationIndex||!a||ca.trigger(v.default.QUALITY_CHANGE_RENDERED,{mediaType:oa,oldQuality:Ga.quality,newQuality:b.quality}),Ga={quality:b.quality,adaptationIndex:b.adaptationIndex})}}function A(a){a.error||a.sender.getStreamProcessor()!==pa||(ta=ea.convertDataToRepresentationInfo(a.currentRepresentation))}function B(a){a.error||pa.getStreamInfo().id!==a.streamInfo.id||(ta=pa.getCurrentRepresentationInfo(),ua&&(ka.getIsDynamic()?(ha.setTimeSyncCompleted(!0),C()):(Ca=ka.getStreamStartTime(!1),pa.getBufferController().setSeekStartTime(Ca))),va&&e())}function C(){var a=pa.getLiveEdgeFinder();if(a){var b=a.getLiveEdge(),c=ta.mediaInfo.streamInfo.manifestInfo.DVRWindowSize/2,d=b-ka.computeLiveDelay(ta.fragmentDuration,c),e=ea.getFragmentRequestForTime(pa,ta,d,{ignoreIsFinished:!0});ka.setLiveStartTime(e.startTime),Ca=ka.getStreamStartTime(!1,b),Ca>ta.mediaInfo.streamInfo.start+ta.mediaInfo.streamInfo.duration&&ka.seek(Ca);var f=fa.getCurrentManifestUpdate(da.getMetricsFor(g.default.STREAM));da.updateManifestUpdateInfo(f,{currentTime:Ca,presentationStartTime:b,latency:b-Ca,clientTimeOffset:ha.getClientTimeOffset()})}}function D(a){a.fragmentModel===sa&&(f(),za=!1,ra("Stream is complete"))}function E(a){a.sender===sa&&(ga.getIsTextTrack(oa)&&(za=!1),a.error&&a.request.serviceLocation&&!va&&(w(a.request),za=!1,o(0)))}function F(){y(!0)}function G(a){a.sender.getStreamProcessor()===pa&&(za=!1,o(0))}function H(a){a.streamProcessor===pa&&(ra("[ScheduleController]["+oa+"] Request "+a.request.url+" has been aborted"),w(a.request),za=!1,o(0))}function I(a){a.sender.getStreamProcessor()===pa&&f()}function J(a){a.sender.getStreamProcessor()===pa&&(sa.removeExecutedRequestsBeforeTime(a.to),a.hasEnoughSpaceToAppend&&va&&e())}function K(a){a.sender.getStreamProcessor()!==pa||a.state!==l.default.BUFFER_EMPTY||ka.isSeeking()||(ra("Buffer is empty! Stalling!"),Z(new Date,h.PlayListTrace.REBUFFERING_REASON))}function L(a){a.sender.getStreamProcessor()===pa&&(f(),za=!1)}function M(){sa.abortRequests(),f()}function N(a){a.sender.getStreamProcessor()===pa&&s(a.index)}function O(){!va&&Fa||e()}function P(a){Ca=a.seekTime,T(0),va&&e();var b=fa.getCurrentManifestUpdate(da.getMetricsFor(g.default.STREAM)),c=ta.DVRWindow&&ka?ta.DVRWindow.end-ka.getTime():NaN;da.updateManifestUpdateInfo(b,{latency:c}),za||o(0)}function Q(a){xa&&(xa.playbackspeed=a.playbackRate.toString())}function R(){return Ca}function S(a){Ca=a}function T(a){Aa=a}function U(){return Aa}function V(){return Da.getBufferTarget(pa,oa,la.isVideoTrackPresent())}function W(){return oa}function X(a){wa=a}function Y(a,b){Z(a,b),wa=null}function Z(a,b){if(wa&&!1===ya){var c=xa.start,d=a.getTime()-c.getTime();xa.duration=d,xa.stopreason=b,wa.trace.push(xa),ya=!0}}function $(){wa&&!0===ya&&ta&&(ya=!1,xa=new h.PlayListTrace,xa.representationid=ta.id,xa.start=new Date,xa.mstart=1e3*ka.getTime(),xa.playbackspeed=ka.getPlaybackRate().toString())}function _(){za=!1,Aa=0,Ca=NaN,wa=null,xa=null,ya=!0,ua=!0,Ia=NaN,Ga={quality:NaN,adaptationIndex:NaN},Ha={},Ja=[],va=!0,Ka=!0}function aa(){ca.off(v.default.DATA_UPDATE_STARTED,I,this),ca.off(v.default.DATA_UPDATE_COMPLETED,A,this),ca.off(v.default.BUFFER_LEVEL_STATE_CHANGED,K,this),ca.off(v.default.QUALITY_CHANGE_REQUESTED,x,this),ca.off(v.default.FRAGMENT_LOADING_COMPLETED,E,this),ca.off(v.default.STREAM_COMPLETED,D,this),ca.off(v.default.STREAM_INITIALIZED,B,this),ca.off(v.default.QUOTA_EXCEEDED,L,this),ca.off(v.default.BYTES_APPENDED,G,this),ca.off(v.default.BUFFER_CLEARED,J,this),ca.off(v.default.INIT_REQUESTED,q,this),ca.off(v.default.PLAYBACK_RATE_CHANGED,Q,this),ca.off(v.default.PLAYBACK_SEEKING,P,this),ca.off(v.default.PLAYBACK_STARTED,O,this),ca.off(v.default.PLAYBACK_TIME_UPDATED,F,this),ca.off(v.default.URL_RESOLUTION_FAILED,M,this),ca.off(v.default.FRAGMENT_LOADING_ABANDONED,H,this),ga.getIsTextTrack(oa)&&ca.off(v.default.TIMED_TEXT_REQUESTED,N,this),f(),y(!1),_()}var ba=this.context,ca=(0,t.default)(ba).getInstance(),da=a.metricsModel,ea=a.adapter,fa=a.dashMetrics,ga=a.dashManifestModel,ha=a.timelineConverter,ia=a.mediaPlayerModel,ja=a.abrController,ka=a.playbackController,la=a.streamController,ma=a.textController,na=a.sourceBufferController,oa=a.type,pa=a.streamProcessor,qa=void 0,ra=void 0,sa=void 0,ta=void 0,ua=void 0,va=void 0,wa=void 0,xa=void 0,ya=void 0,za=void 0,Aa=void 0,Ba=void 0,Ca=void 0,Da=void 0,Ea=void 0,Fa=void 0,Ga=void 0,Ha=void 0,Ia=void 0,Ja=void 0,Ka=void 0;return qa={initialize:c,getType:W,getSeekTarget:R,setSeekTarget:S,setTimeToLoadDelay:T,getTimeToLoadDelay:U,replaceRequest:w,switchTrackAsked:u,isStarted:d,start:e,stop:f,reset:aa,setPlayList:X,getBufferTarget:V,finalisePlayList:Y},b(),qa}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(226),i=a(102),j=d(i),k=a(105),l=d(k),m=a(181),n=d(m),o=a(182),p=d(o),q=a(140),r=d(q),s=a(50),t=d(s),u=a(54),v=d(u),w=a(51),x=d(w),y=a(49),z=d(y);e.__dashjs_factory_name="ScheduleController",c.default=x.default.getClassFactory(e),b.exports=c.default},{100:100,102:102,105:105,140:140,181:181,182:182,226:226,49:49,50:50,51:51,54:54}],112:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c=b.codec,d=null;try{if(c.match(/application\/mp4;\s*codecs="(stpp|wvtt).*"/i))throw new Error("not really supported");d=a.addSourceBuffer(c)}catch(e){if(!b.isText&&-1===c.indexOf('codecs="stpp')&&-1===c.indexOf('codecs="wvtt'))throw e;d=v.getTextSourceBuffer()}return d}function c(a,b){try{a.removeSourceBuffer(b)}catch(c){}}function d(a,b,c){var d=null,e=0,f=0,g=null,h=null,i=0,j=void 0,k=void 0,l=c||.15;try{d=a.buffered}catch(m){return null}if(null!==d&&void 0!==d){for(k=0,j=d.length;k=e&&bn,i=l?{start:a.start(n),end:a.end(n)}:null,d=c.start(n),f=c.end(n),!i)return m={start:d,end:f};if(g=i.start===d,h=i.end===f,!g||!h){if(g)m={start:i.end,end:f};else{if(!h)return m={start:d,end:f};m={start:d,end:i.start}}return j=a.length>n+1?{start:a.start(n+1),end:a.end(n+1)}:null,k=n+1=0&&c>b&&"ended"!==d.readyState&&a.remove(b,c),s(a,function(){u.trigger(k.default.SOURCEBUFFER_REMOVE_COMPLETED,{buffer:a,from:b,to:c})})}catch(e){u.trigger(k.default.SOURCEBUFFER_REMOVE_COMPLETED,{buffer:a,from:b,to:c,error:new g.default(e.code,e.message,null)})}})}function n(a,b){try{"open"===a.readyState?b.abort():b.resetEmbedded&&"ended"===a.readyState&&b.abort()}catch(c){}}function s(a,b){var c=void 0,d=50,e=function(){a.updating||(clearInterval(c),b())},f=function c(){a.updating||(a.removeEventListener("updateend",c,!1),b())};if(!a.updating)return void b();if("function"==typeof a.addEventListener)try{a.addEventListener("updateend",f,!1)}catch(g){c=setInterval(e,d)}else c=setInterval(e,d)}var t=this.context,u=(0,i.default)(t).getInstance(),v=a.textController;return{append:l,remove:m,abort:n,createSourceBuffer:b,removeSourceBuffer:c,getBufferRange:d,getAllRanges:e,getTotalBufferedTime:f,getBufferLength:h,getRangeDifference:j}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(207),g=d(f),h=a(50),i=d(h),j=a(54),k=d(j),l=a(51),m=d(l),n=22,o=1,p=2,q="buffer or chunk is not defined",r="buffer is not defined";e.__dashjs_factory_name="SourceBufferController";var s=m.default.getSingletonFactory(e);s.QUOTA_EXCEEDED_ERROR_CODE=n,m.default.updateSingletonFactory(e.__dashjs_factory_name,s),c.default=s,b.exports=c.default},{207:207,50:50,51:51,54:54}],113:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){na=(0,F.default)(aa).getInstance(),oa=(0,H.default)(aa).getInstance(),ma=(0,J.default)(aa).getInstance(),ua=(0,z.default)(aa).getInstance(),va=(0,B.default)(aa).getInstance(),X()}function b(a,b){S(),Ca=a,Ba=b,xa.initialize(),fa=(0,m.default)(aa).create(),fa.setConfig({manifestModel:ha,dashManifestModel:ia,mediaPlayerModel:Ja,manifestLoader:ga}),fa.initialize(),oa.setConfig({dashManifestModel:ia}),ca.on(q.default.TIME_SYNCHRONIZATION_COMPLETED,G,this),ca.on(q.default.PLAYBACK_SEEKING,d,this),ca.on(q.default.PLAYBACK_TIME_UPDATED,c,this),ca.on(q.default.PLAYBACK_ENDED,r,this),ca.on(q.default.PLAYBACK_ERROR,P,this),ca.on(q.default.PLAYBACK_STARTED,e,this),ca.on(q.default.PLAYBACK_PAUSED,f,this),ca.on(q.default.MANIFEST_UPDATED,I,this),ca.on(q.default.STREAM_BUFFERING_COMPLETED,h,this),ca.on(D.default.METRIC_ADDED,Z,this)}function c(a){if(L()){var b=Ha.getPlaybackQuality();b&&ka.addDroppedFrames(g.default.VIDEO,b)}Ia.isSeeking()||a.timeToEnd<=$&&(Pa&&(clearTimeout(Pa),Pa=void 0),Pa=setTimeout(function(){Pa=void 0,ca.trigger(q.default.PLAYBACK_ENDED)},1e3*(a.timeToEnd+_)))}function d(a){var b=j(a.seekTime);b&&b!==za?(N(v.PlayListTrace.END_OF_PERIOD_STOP_REASON),u(za,b,a.seekTime)):N(v.PlayListTrace.USER_REQUEST_STOP_REASON),O(v.PlayList.SEEK_START_REASON)}function e(){La?(La=!1,O(v.PlayList.INITIAL_PLAYOUT_START_REASON)):Ka&&(Ka=!1,O(v.PlayList.RESUME_FROM_PAUSE_START_REASON))}function f(a){a.ended||(Ka=!0,N(v.PlayListTrace.USER_REQUEST_STOP_REASON))}function h(){var a=Q().isLast;Ga&&a&&ma.signalEndOfStream(Ga)}function j(a){var b=0,c=null,d=ya.length;d>0&&(b+=ya[0].getStartTime());for(var e=0;e>>0).toString(16).toUpperCase()+")"),ba("Video Element Error: "+b),a.error&&ba(a.error),wa.mediaSourceError(b),Y()}}function Q(){return za?za.getStreamInfo():null}function R(a){return ya.filter(function(b){return b.getId()===a})[0]}function S(){if(!(ga&&ga.hasOwnProperty("load")&&xa&&xa.hasOwnProperty("initialize")&&xa.hasOwnProperty("reset")&&xa.hasOwnProperty("getClientTimeOffset")))throw new Error("setConfig function has to be called previously")}function T(){if(!fa||!fa.hasOwnProperty("setManifest"))throw new Error("initialize function has to be called previously")}function U(a){S(),ga.load(a)}function V(a){T(),fa.setManifest(a)}function W(a){a&&(a.capabilities&&(ea=a.capabilities),a.manifestLoader&&(ga=a.manifestLoader),a.manifestModel&&(ha=a.manifestModel),a.dashManifestModel&&(ia=a.dashManifestModel),a.mediaPlayerModel&&(Ja=a.mediaPlayerModel),a.protectionController&&(Aa=a.protectionController),a.adapter&&(ja=a.adapter),a.metricsModel&&(ka=a.metricsModel),a.dashMetrics&&(la=a.dashMetrics),a.errHandler&&(wa=a.errHandler),a.timelineConverter&&(xa=a.timelineConverter),a.videoModel&&(Ha=a.videoModel),a.playbackController&&(Ia=a.playbackController),a.domStorage&&(pa=a.domStorage),a.abrController&&(qa=a.abrController),a.mediaController&&(ra=a.mediaController),a.textController&&(sa=a.textController),a.sourceBufferController&&(ta=a.sourceBufferController))}function X(){ya=[],Aa=null,Da=!1,za=null,Ea=!1,Fa=!1,Na=void 0,La=!0,Ka=!1,Ca=!0,Ma=null}function Y(){S(),na.reset(),N(Ea||Fa?v.PlayListTrace.FAILURE_STOP_REASON:v.PlayListTrace.USER_REQUEST_STOP_REASON);for(var a=0,b=ya?ya.length:0;a")+2),d=b.resolvedContent.substr(0,e)+""+b.resolvedContent.substr(e)+"",b.resolvedContent=G.xml_str2json(d)}x(c)&&l(c)}function l(a){var b=[],c=void 0,d=void 0;if(n(a),a.resolveType===s&&A.trigger(k.default.XLINK_READY,{manifest:F}),a.resolveType===r)switch(a.type){case t:for(c=0;c=0;g--)f=a[g],f.hasOwnProperty("xlink:href")&&f["xlink:href"]===w&&a.splice(g,1);for(g=0;g=0;f--){if(c=a.elements[f],d=c.type+"_asArray",!c.resolvedContent||y())delete c.originalContent["xlink:actuate"],delete c.originalContent["xlink:href"],b.push(c.originalContent);else if(c.resolvedContent)for(g=0;g0&&E.run(F)}function p(a,b,c,d,e,f){return{url:a,parentElement:b,type:c,index:d,resolveType:e,originalContent:f,resolvedContent:null,resolved:!1}}function x(a){var b=void 0,c=void 0;for(b=0;b=200&&d.status<300?b&&b():c&&c())};q.push(d);try{d.open("GET",a),d.onloadend=e,d.onerror=e,d.send()}catch(f){d.onerror()}}function c(a,c){Array.isArray(c)||(c=[c]),l&&o.isEnabled()&&c.forEach(function(c){var d=h.serialise(c);k&&a!==r.DVB_ERRORS&&(d="metricname="+a+"&"+d),d=n+"?"+d,b(d,null,function(){l=!1})})}function d(a,b){var c=void 0;if(o=b,!(n=a["dvb:reportingUrl"]))throw new Error("required parameter missing (dvb:reportingUrl)");m||(c=a["dvb:probability"]||a["dvb:priority"]||0,c&&(1e3===c||c/1e3>=j.random())&&(l=!0),m=!0)}function e(){p||(q.forEach(function(a){return a.abort()}),q=[]),m=!1,l=!1,n=null,o=null}var f=this.context,h=(0,g.default)(f).getInstance(),j=(0,i.default)(f).getInstance(),k=!0,l=!1,m=!1,n=null,o=null,p=!0,q=[],r=a.metricsConstants;return{report:c,initialize:d,reset:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(133),g=d(f),h=a(134),i=d(h);e.__dashjs_factory_name="DVBReporting",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{133:133,134:134}],130:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){var b=new g.default;if(p){for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);b.mpdurl||(b.mpdurl=p.originalUrl||p.url),b.terror||(b.terror=new Date),o.addDVBErrors(b)}}function c(a){a.error||(p=a.manifest)}function d(a){b({errorcode:g.default.BASE_URL_CHANGED,servicelocation:a.entry})}function e(){b({errorcode:g.default.BECAME_REPORTER})}function f(a){(0===a.responsecode||a.responsecode>=400||a.responsecode<100||a.responsecode>=600)&&b({errorcode:a.responsecode||g.default.CONNECTION_ERROR,url:a.url,terror:a.tresponse,servicelocation:a._serviceLocation})}function h(a){switch(a.metric){case q.HTTP_REQUEST:f(a.value)}}function j(a){var c=a.error?a.error.code:0,d=void 0;switch(c){case MediaError.MEDIA_ERR_NETWORK:d=g.default.CONNECTION_ERROR;break;case MediaError.MEDIA_ERR_DECODE:d=g.default.CORRUPT_MEDIA_OTHER;break;default:return}b({errorcode:d})}function k(){n.on(r.MANIFEST_UPDATED,c,m),n.on(r.SERVICE_LOCATION_BLACKLIST_CHANGED,d,m),n.on(r.METRIC_ADDED,h,m),n.on(r.METRIC_UPDATED,h,m),n.on(r.PLAYBACK_ERROR,j,m),n.on(i.default.BECAME_REPORTING_PLAYER,e,m)}function l(){n.off(r.MANIFEST_UPDATED,c,m),n.off(r.SERVICE_LOCATION_BLACKLIST_CHANGED,d,m),n.off(r.METRIC_ADDED,h,m),n.off(r.METRIC_UPDATED,h,m),n.off(r.PLAYBACK_ERROR,j,m),n.off(i.default.BECAME_REPORTING_PLAYER,e,m)} -var m=void 0,n=a.eventBus,o=a.metricsModel,p=void 0,q=a.metricsConstants,r=a.events;return m={initialise:k,reset:l},k(),m}Object.defineProperty(c,"__esModule",{value:!0});var f=a(135),g=d(f),h=a(117),i=d(h);e.__dashjs_factory_name="DVBErrorsTranslator",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{117:117,135:135}],131:[function(a,b,c){"use strict";function d(){return{reconstructFullMetricName:function(a,b,c){var d=a;return b&&(d+="("+b,c&&c.length&&(d+=","+c),d+=")"),d},validateN:function(a){if(!a)throw new Error("missing n");if(isNaN(a))throw new Error("n is NaN");if(a<0)throw new Error("n must be positive");return a}}}Object.defineProperty(c,"__esModule",{value:!0}),d.__dashjs_factory_name="HandlerHelpers",c.default=dashjs.FactoryMaker.getSingletonFactory(d),b.exports=c.default},{}],132:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b,c){var f,g,h=d.getMpd(a),i=0;return b?i=h.availabilityStartTime.getTime()/1e3:(f=this.getRegularPeriods(h),f.length&&(i=f[0].start)),g=i,c&&c.hasOwnProperty(e.START_TIME)&&(g+=c.starttime),g}function c(a){var c=[];return a.Metrics_asArray&&a.Metrics_asArray.forEach(function(f){var h=new g.default,j=d.getIsDynamic(a);f.hasOwnProperty("metrics")&&(h.metrics=f.metrics,f.Range_asArray&&f.Range_asArray.forEach(function(c){var e=new i.default;e.starttime=b(a,j,c),c.hasOwnProperty("duration")?e.duration=c.duration:e.duration=d.getDuration(a),e._useWallClockTime=j,h.Range.push(e)}),f.Reporting_asArray&&(f.Reporting_asArray.forEach(function(a){var b=new k.default;if(a.hasOwnProperty(e.SCHEME_ID_URI)){b.schemeIdUri=a.schemeIdUri;for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);h.Reporting.push(b)}}),c.push(h)))}),c}var d=a.dashManifestModel,e=a.constants;return{getMetrics:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(136),g=d(f),h=a(137),i=d(h),j=a(138),k=d(j);e.__dashjs_factory_name="ManifestParsing",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{136:136,137:137,138:138}],133:[function(a,b,c){"use strict";function d(){function a(b){var c=[],d=[],e=void 0,f=void 0;for(e in b)if(b.hasOwnProperty(e)&&0!==e.indexOf("_")){if(f=b[e],void 0!==f&&null!==f||(f=""),Array.isArray(f)){if(!f.length)continue;d=[],f.forEach(function(b){var c="Object"!==Object.prototype.toString.call(b).slice(8,-1);d.push(c?b:a(b))}),f=d.map(encodeURIComponent).join(",")}else"string"==typeof f?f=encodeURIComponent(f):f instanceof Date?f=f.toISOString():"number"==typeof f&&(f=Math.round(f));c.push(e+"="+f)}return c.join("&")}return{serialise:a}}Object.defineProperty(c,"__esModule",{value:!0}),d.__dashjs_factory_name="MetricSerialiser",c.default=dashjs.FactoryMaker.getSingletonFactory(d),b.exports=c.default},{}],134:[function(a,b,c){"use strict";function d(){function a(){c&&(g||(g=new d(f)),c.getRandomValues(g),h=0)}function b(b,d){var f=void 0;return b||(b=0),d||(d=1),c?(h===g.length&&a(),f=g[h]/e,h+=1):f=Math.random(),f*(d-b)+b}var c=window.crypto||window.msCrypto,d=Uint32Array,e=Math.pow(2,8*d.BYTES_PER_ELEMENT)-1,f=10,g=void 0,h=void 0,i=void 0;return i={random:b},a(),i}Object.defineProperty(c,"__esModule",{value:!0}),d.__dashjs_factory_name="RNG",c.default=dashjs.FactoryMaker.getSingletonFactory(d),b.exports=c.default},{}],135:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.mpdurl=null,this.errorcode=null,this.terror=null,this.url=null,this.ipaddress=null,this.servicelocation=null};e.SSL_CONNECTION_FAILED_PREFIX="SSL",e.DNS_RESOLUTION_FAILED="C00",e.HOST_UNREACHABLE="C01",e.CONNECTION_REFUSED="C02",e.CONNECTION_ERROR="C03",e.CORRUPT_MEDIA_ISOBMFF="M00",e.CORRUPT_MEDIA_OTHER="M01",e.BASE_URL_CHANGED="F00",e.BECAME_REPORTER="S00",c.default=e,b.exports=c.default},{}],136:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.metrics="",this.Range=[],this.Reporting=[]};c.default=e,b.exports=c.default},{}],137:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.starttime=0,this.duration=1/0,this._useWallClockTime=!1};c.default=e,b.exports=c.default},{}],138:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.schemeIdUri="",this.value=""};c.default=e,b.exports=c.default},{}],139:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(){function a(){i()}function b(a){a.dashManifestModel&&(o=a.dashManifestModel)}function c(a,b,c){var d=o.getBaseURLsFromElement(c);a[b]?q.areEqual(d,a[b].data.baseUrls)||(a[b].data.baseUrls=d,a[b].data.selectedIdx=k):a[b]=new l(d)}function d(a){var b=o.getBaseURLsFromElement(a);q.areEqual(b,n.data.baseUrls)||(n.data.baseUrls=b,n.data.selectedIdx=k),a.Period_asArray&&a.Period_asArray.forEach(function(a,b){c(n.children,b,a),a.AdaptationSet_asArray&&a.AdaptationSet_asArray.forEach(function(a,d){c(n.children[b].children,d,a),a.Representation_asArray&&a.Representation_asArray.sort(o.getRepresentationSortFunction()).forEach(function(a,e){c(n.children[b].children[d].children,e,a)})})})}function e(a,b){var c=b||n;a(c.data),c.children&&c.children.forEach(function(b){return e(a,b)})}function f(a){e(function(b){isNaN(b.selectedIdx)||a===b.baseUrls[b.selectedIdx].serviceLocation&&(b.selectedIdx=k)})}function g(a){d(a)}function i(){n=new l}function j(a){var b=n,c=[b.data];return a.forEach(function(a){(b=b.children[a])&&c.push(b.data)}),c.filter(function(a){return a.baseUrls.length})}var m=void 0,n=void 0,o=void 0,p=this.context,q=(0,h.default)(p).getInstance();return m={reset:i,update:g,getForPath:j,invalidateSelectedIndexes:f,setConfig:b},a(),m}Object.defineProperty(c,"__esModule",{value:!0});var g=a(199),h=d(g),i=a(51),j=d(i),k=NaN,l=function a(b,c){e(this,a),this.data={baseUrls:b||null,selectedIdx:c||k},this.children=[]};f.__dashjs_factory_name="BaseURLTreeModel",c.default=j.default.getClassFactory(f),b.exports=c.default},{199:199,51:51}],140:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){y(),C.on(i.default.LOADING_COMPLETED,w,F),C.on(i.default.LOADING_ABANDONED,x,F)}function c(a){G=a}function d(){return G}function e(a){var b=function(a,b){return a.action===m.default.ACTION_COMPLETE&&a.action===b.action},c=function(a,b){return!isNaN(a.index)&&a.startTime===b.startTime&&a.adaptationIndex===b.adaptationIndex},d=function(a,b){return isNaN(a.index)&&isNaN(b.index)&&a.quality===b.quality},e=function(e){var f=!1;return e.some(function(e){if(c(a,e)||d(a,e)||b(a,e))return f=!0}),f};return!!a&&e(H)}function f(a){var b=!1,c=0,d=void 0;if(!(b=e(a)))for(c=0;c=a})}function k(){E.abort(),I=[]}function l(a){switch(a.action){case m.default.ACTION_COMPLETE:H.push(a),v(a,q),C.trigger(i.default.STREAM_COMPLETED,{request:a,fragmentModel:this});break;case m.default.ACTION_DOWNLOAD:v(a,p),I.push(a),n(a);break;default:B("Unknown request action.")}}function n(a){C.trigger(i.default.FRAGMENT_LOADING_STARTED,{sender:F,request:a}),E.load(a)}function r(a,b,c){for(var d=a.length-1,e=d;e>=0;e--){var f=a[e],g=f.startTime,h=g+f.duration;if(c=void 0!==c?c:f.duration/2,!isNaN(g)&&!isNaN(h)&&b+c>=g&&b-cR&&d[b].shift()}function s(a,b,c,d,e,f){var g=new m.default;return g.tcpid=b,g.dest=c,g.topen=d,g.tclose=e,g.tconnect=f,B(a,i.default.TCP_CONNECTION,g),g}function u(a,b,c,d){var e=new n.HTTPRequestTrace;return e.s=b,e.d=c,e.b=d,a.trace.push(e),a.interval||(a.interval=0),a.interval+=c,e}function w(a,b,c,d,e,f,g,h,j,k,l,m,o,p){var q=new n.HTTPRequest;return e&&e!==d&&(w(a,null,c,d,null,null,g,h,null,null,null,m,null,null),q.actualurl=e),q.tcpid=b,q.type=c,q.url=d,q.range=g,q.trequest=h,q.tresponse=j,q.responsecode=l,q._tfinish=k,q._stream=a,q._mediaduration=m,q._responseHeaders=o,q._serviceLocation=f,p?p.forEach(function(a){u(q,a.s,a.d,a.b)}):(delete q.interval,delete q.trace),B(a,i.default.HTTP_REQUEST,q),q}function z(a,b,c,d,e){var f=new p.default;return f.t=b,f.mt=c,f.to=d,e?f.lto=e:delete f.lto,B(a,i.default.TRACK_SWITCH,f),f}function B(a,b,c){q(a,b,c),f(a,b,c)}function D(a,b,c){var d=new r.default;return d.t=b,d.level=c,B(a,i.default.BUFFER_LEVEL,d),d}function F(a,b,c){var d=new t.default;return d.target=c,d.state=b,B(a,i.default.BUFFER_STATE,d),d}function H(a,b,c,d){var e=new v.default;return e.time=b,e.range=d,e.manifestInfo=c,B(a,i.default.DVR_INFO,e),e}function I(a,b){var c=new x.default,d=o(a).DroppedFrames;return c.time=b.creationTime,c.droppedFrames=b.droppedVideoFrames,d.length>0&&d[d.length-1]==c?d[d.length-1]:(B(a,i.default.DROPPED_FRAMES,c),c)}function J(a,b,c,d,e,f,g,h,j){var k=new A.default;return k.mediaType=a,k.t=b,k.type=c,k.startTime=d,k.availabilityStartTime=e,k.duration=f,k.quality=g,k.range=h,k.state=j,B(a,i.default.SCHEDULING_INFO,k),k}function K(a,b,c){var d=new E.default;d.loadingRequests=b,d.executedRequests=c,o(a).RequestsQueue=d,f(a,i.default.REQUESTS_QUEUE,d)}function L(a,b,c,d,e,h,j,k,l,m){var n=new y.ManifestUpdate;return n.mediaType=a,n.type=b,n.requestTime=c,n.fetchTime=d,n.availabilityStartTime=e,n.presentationStartTime=h,n.clientTimeOffset=j,n.currentTime=k,n.buffered=l,n.latency=m,q(g.default.STREAM,i.default.MANIFEST_UPDATE,n),f(a,i.default.MANIFEST_UPDATE,n),n}function M(a,b){if(a){for(var c in b)a[c]=b[c];e(a.mediaType,i.default.MANIFEST_UPDATE,a)}}function N(a,b,c,d,f){if(a){var g=new y.ManifestUpdateStreamInfo;return g.id=b,g.index=c,g.start=d,g.duration=f,a.streamInfo.push(g),e(a.mediaType,i.default.MANIFEST_UPDATE_STREAM_INFO,a),g}return null}function O(a,b,c,d,f,g,h,j){if(a){var k=new y.ManifestUpdateRepresentationInfo;return k.id=b,k.index=c,k.streamIndex=d,k.mediaType=f,k.startNumber=h,k.fragmentInfoType=j,k.presentationTimeOffset=g,a.representationInfo.push(k),e(a.mediaType,i.default.MANIFEST_UPDATE_TRACK_INFO,a),k}return null}function P(a){var b=g.default.STREAM;return a.trace&&Array.isArray(a.trace)?a.trace.forEach(function(a){a.hasOwnProperty("subreplevel")&&!a.subreplevel&&delete a.subreplevel}):delete a.trace,B(b,i.default.PLAY_LIST,a),a}function Q(a){return B(g.default.STREAM,i.default.DVB_ERRORS,a),a}var R=1e3,S=this.context,T=(0,C.default)(S).getInstance(),U=void 0,V=void 0,W=void 0;return U={clearCurrentMetricsForType:h,clearAllCurrentMetrics:j,getReadOnlyMetricsFor:l,getMetricsFor:o,addTcpConnection:s,addHttpRequest:w,addRepresentationSwitch:z,addBufferLevel:D,addBufferState:F,addDVRInfo:H,addDroppedFrames:I,addSchedulingInfo:J,addRequestsQueue:K,addManifestUpdate:L,updateManifestUpdateInfo:M,addManifestUpdateStreamInfo:N,addManifestUpdateRepresentationInfo:O,addPlayList:P,addDVBErrors:Q,setConfig:b},a(),U}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(101),i=d(h),j=a(214),k=d(j),l=a(230),m=d(l),n=a(224),o=a(227),p=d(o),q=a(220),r=d(q),s=a(221),t=d(s),u=a(222),v=d(u),w=a(223),x=d(w),y=a(225),z=a(229),A=d(z),B=a(50),C=d(B),D=a(228),E=d(D),F=a(54),G=d(F),H=a(51),I=d(H);e.__dashjs_factory_name="MetricsModel",c.default=I.default.getSingletonFactory(e),b.exports=c.default},{100:100,101:101,214:214,220:220,221:221,222:222,223:223,224:224,225:225,227:227,228:228,229:229,230:230,50:50,51:51,54:54}],144:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){f=new g.default,h=[],i=!1}function b(){return f}function c(){return h}function d(){return i}function e(a){function b(a,b,c,d){var e=d[0].split(/[=]/);return d.push({key:e[0],value:e[1]}),d.shift(),d}function c(a,b,c){return b>0&&(k&&0===h.length?h=c[b].split(/[&]/):l&&(d=c[b].split(/[&]/))),c}if(!a)return null;var d=[],e=new RegExp(/[?]/),g=new RegExp(/[#]/),j=new RegExp(/^(https:)?\/\//i),k=e.test(a),l=g.test(a);return i=j.test(a),a.split(/[?#]/).map(c),h.length>0&&(h=h.reduce(b,null)),d.length>0&&(d=d.reduce(b,null),d.forEach(function(a){f[a.key]=a.value})),a}var f=void 0,h=void 0,i=void 0;return{initialize:a,parseURI:e,getURIFragmentData:b,getURIQueryData:c,isManifestHTTPS:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(219),g=d(f),h=a(51),i=d(h);e.__dashjs_factory_name="URIQueryAndFragmentModel",c.default=i.default.getSingletonFactory(e),b.exports=c.default},{219:219,51:51}],145:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){T=[]}function b(){Q.playbackRate=U||1,Q.removeEventListener("canplay",b)}function c(a){Q&&(Q.readyState<=2&&a>0?Q.addEventListener("canplay",b):Q.playbackRate=a)}function d(a){if(Q.currentTime!=a)try{Q.currentTime=a}catch(b){0===Q.readyState&&b.code===b.INVALID_STATE_ERR&&setTimeout(function(){Q.currentTime=a},400)}}function e(){return Q}function f(a){Q=a,Q.preload="auto"}function g(a){a?Q.src=a:(Q.removeAttribute("src"),Q.load())}function h(){return Q.src}function j(){return S}function l(a){S=a}function n(){return R}function o(a){R=a,R.style.position="absolute",R.style.display="flex",R.style.overflow="hidden",R.style.pointerEvents="none",R.style.top=0,R.style.left=0}function p(a,b){t(a,b)}function q(){return T.length>0}function r(a){var b=void 0;null===a||Q.seeking||-1!==T.indexOf(a)||(T.push(a),1===T.length&&(b=document.createEvent("Event"),b.initEvent("waiting",!0,!1),U=Q.playbackRate,c(0),Q.dispatchEvent(b)))}function s(a){var b=T.indexOf(a),d=void 0;null!==a&&(-1!==b&&T.splice(b,1),!1===q()&&0===Q.playbackRate&&(c(U||1),Q.paused||(d=document.createEvent("Event"),d.initEvent("playing",!0,!1),Q.dispatchEvent(d))))}function t(a,b){b?r(a):s(a)}function u(){var a="webkitDroppedFrameCount"in Q&&"webkitDecodedFrameCount"in Q,b="getVideoPlaybackQuality"in Q,c=null;return b?c=Q.getVideoPlaybackQuality():a&&(c={droppedVideoFrames:Q.webkitDroppedFrameCount,totalVideoFrames:Q.webkitDroppedFrameCount+Q.webkitDecodedFrameCount,creationTime:new Date}),c}function v(){if(Q){Q.autoplay=!0;var a=Q.play();a&&"undefined"!=typeof Promise&&a instanceof Promise&&a.catch(function(a){"NotAllowedError"===a.name&&X.trigger(k.default.PLAYBACK_NOT_ALLOWED),W("Caught pending play exception - continuing ("+a+")")})}}function w(){return Q?Q.paused:null}function x(){Q&&(Q.pause(),Q.autoplay=!1)}function y(){return Q?Q.seeking:null}function z(){return Q?Q.currentTime:null}function A(){return Q?Q.playbackRate:null}function B(){return Q?Q.played:null}function C(){return Q?Q.ended:null}function D(a,b){Q&&Q.addEventListener(a,b)}function E(a,b){Q&&Q.removeEventListener(a,b)}function F(){return Q?Q.readyState:NaN}function G(){return Q?Q.buffered:null}function H(){return Q?Q.clientWidth:NaN}function I(){return Q?Q.clientHeight:NaN}function J(){return Q?Q.videoWidth:NaN}function K(){return Q?Q.videoHeight:NaN}function L(){return Q?Q.textTracks:[]}function M(a,b,c){if(Q)for(var d=0;d0&&(b+=4+16*c.getUint32(b)),b+=4,a.slice(b)}},{key:"getPSSHForKeySystem",value:function(b,c){var d=a.parsePSSHList(c);return d.hasOwnProperty(b.uuid.toLowerCase())?d[b.uuid.toLowerCase()]:null}},{key:"parseInitDataFromContentProtection",value:function(a,b){return"pssh"in a?b.decodeArray(a.pssh.__text).buffer:null}},{key:"parsePSSHList",value:function(a){if(null===a)return[];for(var b=new DataView(a),c=!1,d={},e=0;!c;){var f=void 0,g=void 0,h=void 0,i=void 0,j=e;if(e>=b.buffer.byteLength)break;if(f=b.getUint32(e),g=e+f,e+=4,1886614376===b.getUint32(e))if(e+=4,0===(h=b.getUint8(e))||1===h){e++,e+=3,i="";var k=void 0,l=void 0;for(k=0;k<4;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;for(e+=4,i+="-",k=0;k<2;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;for(e+=2,i+="-",k=0;k<2;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;for(e+=2,i+="-",k=0;k<2;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;for(e+=2,i+="-",k=0;k<6;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;e+=6,i=i.toLowerCase(),b.getUint32(e),e+=4,d[i]=b.buffer.slice(j,g),e=g}else e=g;else e=g}return d}}]),a}();c.default=f,b.exports=c.default},{}],147:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){var c=null,e=(0,i.default)(d).getInstance();e.setConfig({log:a.log,BASE64:a.BASE64}),e.initialize();var f=b(a);return!c&&f&&(c=(0,g.default)(d).create({protectionModel:f,protectionKeyController:e,adapter:a.adapter,eventBus:a.eventBus,log:a.log,events:a.events,BASE64:a.BASE64,Constants:a.Constants}),a.capabilities.setEncryptedMediaSupported(!0)),c}function b(a){var b=a.log,e=a.eventBus,f=a.errHandler,g=a.videoModel.getElement();return void 0!==g.onencrypted&&void 0!==g.mediaKeys&&void 0!==navigator.requestMediaKeySystemAccess&&"function"==typeof navigator.requestMediaKeySystemAccess?(b("EME detected on this user agent! (ProtectionModel_21Jan2015)"),(0,m.default)(d).create({log:b,eventBus:e,events:a.events})):c(g,s)?(b("EME detected on this user agent! (ProtectionModel_3Feb2014)"),(0,o.default)(d).create({log:b,eventBus:e,events:a.events,api:c(g,s)})):c(g,r)?(b("EME detected on this user agent! (ProtectionModel_01b)"),(0,q.default)(d).create({log:b,eventBus:e,errHandler:f,events:a.events,api:c(g,r)})):(b("No supported version of EME detected on this user agent! - Attempts to play encrypted content will fail!"),null)}function c(a,b){for(var c=0;c0&&t(f,!0),L=!0}}function d(a){return y.getSupportedKeySystemsFromContentProtection(a)}function e(a,b){var c=g.default.getPSSHForKeySystem(O,a);if(c){for(var d=z.getAllInitData(),e=0;e0?b.audioRobustness:N,f=b&&b.videoRobustness&&b.videoRobustness.length>0?b.videoRobustness:N;return I&&c.push(new i.default(I.codec,e)),J&&d.push(new i.default(J.codec,f)),new k.default(c,d,"optional","temporary"===M?"optional":"required",[M])}function t(a,b){var c=this,d=[],f=void 0;if(O){for(f=0;f0&&z.setServerCertificate(E.decodeArray(g.serverCertificate).buffer);for(var h=0;h%CUSTOMDATA%',l=void 0;e.__dashjs_factory_name="KeySystemPlayReady",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{146:146}],153:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){a&&(m=a)}function c(a,b){var c=void 0,d=!0,e=16,f=void 0,g=void 0,h=void 0;for(c=new Uint8Array(a),g=0;g<=c.length-(e+2);g++)if(18===c[g]&&16===c[g+1]){for(f=g+2,h=f;h0&&(b=H.shift(),I.push(b),b.sessionID=a.sessionId):H.length>0&&(b=H.shift(),I.push(b),0!==H.length&&C.mediaKeyMessageError("Multiple key sessions were creates with a user-agent that does not support sessionIDs!! Unpredictable behavior ahead!")),b){var e=ArrayBuffer.isView(a.message)?a.message.buffer:a.message;b.keyMessage=e,y.trigger(z.INTERNAL_KEY_MESSAGE,{data:new m.default(b,e,a.defaultURL)})}else A("No session token found for key message")}}}}function v(a,b){if(b&&a){for(var c=a.length,d=0;d0&&(d=G.ksConfiguration.videoCapabilities[0]),null===d&&null!==G.ksConfiguration.audioCapabilities&&G.ksConfiguration.audioCapabilities.length>0&&(d=G.ksConfiguration.audioCapabilities[0]),null===d)throw new Error("Can not create sessions for unknown content types.");var e=d.contentType,f=F.createSession(e,new Uint8Array(a),c?new Uint8Array(c):null),g=w(f,a);f.addEventListener(B.error,g),f.addEventListener(B.message,g),f.addEventListener(B.ready,g),f.addEventListener(B.close,g),H.push(g),A("DRM: Session created. SessionID = "+g.getSessionID()),y.trigger(z.KEY_SESSION_CREATED,{data:g})}function n(a,b){var c=a.session;J.isClearKey(E)?c.update(new Uint8Array(b.toJWK())):c.update(new Uint8Array(b))}function p(a){var b=a.session;b.removeEventListener(B.error,a),b.removeEventListener(B.message,a),b.removeEventListener(B.ready,a),b.removeEventListener(B.close,a);for(var c=0;c=1?b():(a=b.bind(this),D.addEventListener("loadedmetadata",a))}function w(a,b){return{session:a,initData:b,getSessionID:function(){return this.session.sessionId},getExpirationTime:function(){return NaN},getSessionType:function(){return"temporary"},handleEvent:function(a){switch(a.type){case B.error:y.trigger(z.KEY_ERROR,{data:new k.default(this,"KeyError")});break;case B.message:var b=ArrayBuffer.isView(a.message)?a.message.buffer:a.message;y.trigger(z.INTERNAL_KEY_MESSAGE,{data:new m.default(this,b,a.destinationURL)});break;case B.ready:A("DRM: Key added."),y.trigger(z.KEY_ADDED);break;case B.close:A("DRM: Session closed. SessionID = "+this.getSessionID()),y.trigger(z.KEY_SESSION_CLOSED,{data:this.getSessionID()})}}}}var x=this.context,y=a.eventBus,z=a.events,A=a.log,B=a.api,C=void 0,D=void 0,E=void 0,F=void 0,G=void 0,H=void 0,I=void 0,J=void 0;return C={getAllInitData:e,requestKeySystemAccess:f,getKeySystem:d,selectKeySystem:h,setMediaElement:j,createKeySession:l,updateKeySession:n,closeKeySession:p,setServerCertificate:r,loadKeySession:s,removeKeySession:t,reset:c},b(),C}Object.defineProperty(c,"__esModule",{value:!0});var f=a(150),g=d(f),h=a(168),i=d(h),j=a(162),k=d(j),l=a(163),m=d(l),n=a(166),o=d(n),p=a(165),q=d(p);e.__dashjs_factory_name="ProtectionModel_3Feb2014",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{150:150,162:162,163:163,165:165,166:166,168:168}],157:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){var c=JSON.parse(String.fromCharCode.apply(null,new Uint8Array(b)));a+="/?";for(var d=0;dj){var h=e.shift();d[h.idx].drops-=h.drop,d[h.idx].dropSize-=h.dropSize,d[h.idx].noDrops-=h.noDrop}}function b(){return d}function c(){d=[],e=[]}var d=[],e=[];return{push:a,getSwitchRequests:b,reset:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(171),i=d(h),j=8;e.__dashjs_factory_name="SwitchRequestHistory";var k=g.default.getClassFactory(e);c.default=k,b.exports=c.default},{171:171,51:51}],173:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){H={throughputHalfLife:{fast:x,slow:w},latencyHalfLife:{fast:z,slow:y}},p()}function c(a,b,c){return a===g.default.VIDEO?c0&&!D[a].hasCachedEntries)return;D[a].hasCachedEntries=!0}else D[a]&&D[a].hasCachedEntries&&o(a);D[a].push(j),D[a].length>q&&D[a].shift(),E[a].push(f),E[a].length>q&&E[a].shift(),e(F[a],j,.001*g,H.throughputHalfLife),e(G[a],f,1,H.latencyHalfLife)}}function e(a,b,c,d){var e=Math.pow(.5,c/d.fast);a.fastEstimate=(1-e)*b+e*a.fastEstimate;var f=Math.pow(.5,c/d.slow);a.slowEstimate=(1-f)*b+f*a.slowEstimate,a.totalWeight+=c}function f(a,b,c){var d=void 0,e=void 0;if(a?(d=D[b],e=c?r:s):(d=E[b],e=t),d){if(e>=d.length)e=d.length;else if(a)for(var f=1;f=v||g<=1/u)&&(e+=1)===d.length)break}}else e=0;return e}function h(a,b,c){return C.getMovingAverageMethod()!==g.default.MOVING_AVERAGE_SLIDING_WINDOW?j(a,b):i(a,b,c)}function i(a,b,c){var d=f(a,b,c),e=a?D:E,g=e[b];return 0!==d&&g&&0!==g.length?(g=g.slice(-d),g.reduce(function(a,b){return a+b})/g.length):NaN}function j(a,b){var c=a?H.throughputHalfLife:H.latencyHalfLife,d=a?F[b]:G[b];if(!d||d.totalWeight<=0)return NaN;var e=d.fastEstimate/(1-Math.pow(.5,d.totalWeight/c.fast)),f=d.slowEstimate/(1-Math.pow(.5,d.totalWeight/c.slow));return a?Math.min(e,f):Math.max(e,f)}function k(a,b){return h(!0,a,b)}function l(a,b){var c=k(a,b);return isNaN(c)||(c*=C.getBandwidthSafetyFactor()),c}function m(a){return h(!1,a)}function n(a){D[a]=D[a]||[],E[a]=E[a]||[],F[a]=F[a]||{fastEstimate:0,slowEstimate:0,totalWeight:0},G[a]=G[a]||{fastEstimate:0,slowEstimate:0,totalWeight:0}}function o(a){delete D[a],delete E[a],delete F[a],delete G[a],n(a)}function p(){D={},E={},F={},G={}}var q=20,r=3,s=4,t=4,u=1.3,v=1.3,w=8,x=3,y=2,z=1,A=50,B=5,C=a.mediaPlayerModel,D=void 0,E=void 0,F=void 0,G=void 0,H=void 0,I={push:d,getAverageThroughput:k,getSafeAverageThroughput:l,getAverageLatency:m,reset:p};return b(),I}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(51),i=d(h);e.__dashjs_factory_name="ThroughputHistory",c.default=i.default.getClassFactory(e),b.exports=c.default},{100:100,51:51}],174:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){r=[],s=[],l.getUseDefaultABRRules()&&(r.push((0,q.default)(j).create({metricsModel:n,dashMetrics:p,mediaPlayerModel:l})),r.push((0,g.default)(j).create({metricsModel:n,dashMetrics:p})),r.push((0,i.default)(j).create({metricsModel:n,dashMetrics:p})),r.push((0,o.default)(j).create()),r.push((0,m.default)(j).create()),s.push((0,k.default)(j).create({metricsModel:n,dashMetrics:p,mediaPlayerModel:l}))),l.getABRCustomRules().forEach(function(a){a.type===v&&r.push(a.rule(j).create()),a.type===w&&s.push(a.rule(j).create())})}function c(a){return a.filter(function(a){return a.quality>u.default.NO_CHANGE})}function d(a){var b={},c=void 0,d=void 0,e=void 0,f=void 0,g=void 0;if(0!==a.length){for(b[u.default.PRIORITY.STRONG]=u.default.NO_CHANGE,b[u.default.PRIORITY.WEAK]=u.default.NO_CHANGE,b[u.default.PRIORITY.DEFAULT]=u.default.NO_CHANGE,c=0,d=a.length;cu.default.NO_CHANGE?Math.min(b[e.priority],e.quality):e.quality);return b[u.default.PRIORITY.WEAK]!==u.default.NO_CHANGE&&(f=b[u.default.PRIORITY.WEAK]),b[u.default.PRIORITY.DEFAULT]!==u.default.NO_CHANGE&&(f=b[u.default.PRIORITY.DEFAULT]),b[u.default.PRIORITY.STRONG]!==u.default.NO_CHANGE&&(f=b[u.default.PRIORITY.STRONG]),f!==u.default.NO_CHANGE&&(g=f),(0,u.default)(j).create(g)}}function e(a){return d(c(r.map(function(b){return b.getMaxIndex(a)})))||(0,u.default)(j).create()}function f(a){return d(c(s.map(function(b){return b.shouldAbandon(a)})))||(0,u.default)(j).create()}function h(){[r,s].forEach(function(a){a&&a.length&&a.forEach(function(a){return a.reset&&a.reset()})}),r=[],s=[]}var j=this.context,l=a.mediaPlayerModel,n=a.metricsModel,p=a.dashMetrics,r=void 0,s=void 0;return{initialize:b,reset:h,getMaxQuality:e,shouldAbandonFragment:f}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(180),g=d(f),h=a(178),i=d(h),j=a(175),k=d(j),l=a(177),m=d(l),n=a(179),o=d(n),p=a(176),q=d(p),r=a(51),s=d(r),t=a(171),u=d(t),v="qualitySwitchRules",w="abandonFragmentRules";e.__dashjs_factory_name="ABRRulesCollection";var x=s.default.getClassFactory(e);x.QUALITY_SWITCH_RULES=v,x.ABANDON_FRAGMENT_RULES=w,s.default.updateSingletonFactory(e.__dashjs_factory_name,x),c.default=x,b.exports=c.default},{171:171,175:175,176:176,177:177,178:178,179:179,180:180,51:51}],175:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){h()}function c(a,b){r[a]=r[a]||{},r[a][b]=r[a][b]||{}}function d(a,b){t[a]=t[a]||[],t[a].push(b)}function f(a){var b=(0,g.default)(m).create(g.default.NO_CHANGE,{name:e.__dashjs_factory_name});if(!(a&&a.hasOwnProperty("getMediaInfo")&&a.hasOwnProperty("getMediaType")&&a.hasOwnProperty("getCurrentRequest")&&a.hasOwnProperty("getRepresentationInfo")&&a.hasOwnProperty("getAbrController")))return b;var f=a.getMediaInfo(),h=a.getMediaType(),k=a.getCurrentRequest();if(!isNaN(k.index)){c(h,k.index);var u=o.getStableBufferTime();if(q.getCurrentBufferLevel(p.getReadOnlyMetricsFor(h))>u)return b;var v=r[h][k.index];if(null===v||null===k.firstByteDate||s.hasOwnProperty(v.id))return b;if(void 0===v.firstByteTime&&(t[h]=[],v.firstByteTime=k.firstByteDate.getTime(),v.segmentDuration=k.duration,v.bytesTotal=k.bytesTotal,v.id=k.index),v.bytesLoaded=k.bytesLoaded,v.elapsedTime=(new Date).getTime()-v.firstByteTime,v.bytesLoaded>0&&v.elapsedTime>0&&d(h,Math.round(8*v.bytesLoaded/v.elapsedTime)),t[h].length>=l&&v.elapsedTime>j&&v.bytesLoadedv.bytesTotal*z[A].bitrate/z[x.getQualityFor(h,f.streamInfo)].bitrate&&(b.quality=A,b.reason.throughput=v.measuredBandwidthInKbps,b.reason.fragmentID=v.id,s[v.id]=v,n("AbandonRequestsRule ( ",h,"frag id",v.id,") is asking to abandon and switch to quality to ",A," measured bandwidth was",v.measuredBandwidthInKbps),delete r[h][v.id])}}else v.bytesLoaded===v.bytesTotal&&delete r[h][v.id]}return b}function h(){r={},s={},t=[]}var i=1.8,j=500,l=5,m=this.context,n=(0,k.default)(m).getInstance().log,o=a.mediaPlayerModel,p=a.metricsModel,q=a.dashMetrics,r=void 0,s=void 0,t=void 0,u={shouldAbandon:f,reset:h};return b(),u}Object.defineProperty(c,"__esModule",{value:!0});var f=a(171),g=d(f),h=a(51),i=d(h),j=a(49),k=d(j);e.__dashjs_factory_name="AbandonRequestsRule",c.default=i.default.getClassFactory(e),b.exports=c.default},{171:171,49:49,51:51}],176:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){H(),O.on(p.default.BUFFER_EMPTY,y,P),O.on(p.default.PLAYBACK_SEEKING,z,P),O.on(p.default.PERIOD_SWITCH_STARTED,A,P),O.on(p.default.MEDIA_FRAGMENT_LOADED,B,P),O.on(p.default.METRIC_ADDED,C,P),O.on(p.default.QUALITY_CHANGE_REQUESTED,E,P),O.on(p.default.FRAGMENT_LOADING_ABANDONED,F,P)}function c(a){return a.map(function(a){return Math.log(a)})}function d(a,b,c){var d=c.reduce(function(a,b,d){return b>c[a]?d:a},0);if(0===d)return null;var e=Math.max(a,v+w*b.length),f=(c[d]-1)/(e/v-1);return{gp:f,Vp:v/f}}function e(a){var b={},e=a.getMediaInfo(),g=e.bitrateList.map(function(a){return a.bandwidth}),h=c(g);h=h.map(function(a){return a-h[0]+1});var i=N.getStableBufferTime(),j=d(i,g,h);return j?(b.state=t,b.bitrates=g,b.utilities=h,b.stableBufferTime=i,b.Vp=j.Vp,b.gp=j.gp,b.lastQuality=0,f(b)):b.state=s,b}function f(a){a.placeholderBuffer=0,a.mostAdvancedSegmentStart=NaN,a.lastSegmentWasReplacement=!1,a.lastSegmentStart=NaN,a.lastSegmentDurationS=NaN,a.lastSegmentRequestTimeMs=NaN,a.lastSegmentFinishTimeMs=NaN}function h(a,b){var c=N.getStableBufferTime();if(a.stableBufferTime!==c){var e=d(c,a.bitrates,a.utilities);if(e.Vp!==a.Vp||e.gp!==a.gp){var f=L.getCurrentBufferLevel(M.getReadOnlyMetricsFor(b)),g=f+a.placeholderBuffer;g-=v,g*=e.Vp/a.Vp,g+=v,a.stableBufferTime=c,a.Vp=e.Vp,a.gp=e.gp,a.placeholderBuffer=Math.max(0,g-f)}}}function j(a){var b=a.getMediaType(),c=Q[b];return c?c.state!==s&&h(c,b):(c=e(a),Q[b]=c),c}function k(a,b){for(var c=a.bitrates.length,d=NaN,e=NaN,f=0;f=e)&&(e=g,d=f)}return d}function m(a,b){return a.Vp*(a.utilities[b]+a.gp)}function o(a,b){for(var c=a.bitrates[b],d=a.utilities[b],e=0,f=b-1;f>=0;--f)if(a.utilities[f]b.mostAdvancedSegmentStart?(b.mostAdvancedSegmentStart=c,b.lastSegmentWasReplacement=!1):b.lastSegmentWasReplacement=!0,b.lastSegmentStart=c,b.lastSegmentDurationS=a.chunk.duration,b.lastQuality=a.chunk.quality,D(b,a.chunk.mediaInfo.type)}}}function C(a){if(a&&a.metric===g.default.HTTP_REQUEST&&a.value&&a.value.type===l.HTTPRequest.MEDIA_SEGMENT_TYPE&&a.value.trace&&a.value.trace.length){var b=Q[a.mediaType];b&&b.state!==s&&(b.lastSegmentRequestTimeMs=a.value.trequest.getTime(),b.lastSegmentFinishTimeMs=a.value._tfinish.getTime(),D(b,a.mediaType))}}function D(a,b){if(!isNaN(a.lastSegmentStart)&&!isNaN(a.lastSegmentRequestTimeMs)&&!isNaN(a.placeholderBuffer)){if(a.placeholderBuffer*=x,!isNaN(a.lastSegmentFinishTimeMs)){var c=L.getCurrentBufferLevel(M.getReadOnlyMetricsFor(b)),d=c+.001*(a.lastSegmentFinishTimeMs-a.lastSegmentRequestTimeMs),e=m(a,a.lastQuality),f=Math.max(0,e-d);a.placeholderBuffer=Math.min(f,a.placeholderBuffer)}a.lastSegmentWasReplacement&&!isNaN(a.lastSegmentDurationS)&&(a.placeholderBuffer+=a.lastSegmentDurationS),a.lastSegmentStart=NaN,a.lastSegmentRequestTimeMs=NaN}}function E(a){if(a){var b=Q[a.mediaType];b&&b.state!==s&&(b.abrQuality=a.newQuality)}}function F(a){if(a){var b=Q[a.mediaType];if(b&&b.state!==s){var c=L.getCurrentBufferLevel(M.getReadOnlyMetricsFor(a.mediaType)),d=void 0;d=b.abrQuality>0?o(b,b.abrQuality):v;var e=Math.max(0,d-c);b.placeholderBuffer=Math.min(b.placeholderBuffer,e)}}}function G(a){var b=a.getMediaInfo(),c=a.getMediaType(),d=M.getReadOnlyMetricsFor(c),e=a.getStreamProcessor(),g=a.getStreamInfo(),h=a.getAbrController(),l=h.getThroughputHistory(),n=g?g.id:null,p=g&&g.manifestInfo&&g.manifestInfo.isDynamic,r=a.useBufferOccupancyABR(),v=(0,i.default)(J).create();if(v.reason=v.reason||{},!r)return v;e.getScheduleController().setTimeToLoadDelay(0);var w=j(a);if(w.state===s)return K("BOLA ABR rule invoked for media type '"+c+"' with only one bitrate."),v;var x=L.getCurrentBufferLevel(d),y=l.getAverageThroughput(c,p),z=l.getSafeAverageThroughput(c,p),A=l.getAverageLatency(c),B=void 0;if(v.reason.state=w.state,v.reason.throughput=y,v.reason.latency=A,isNaN(y))return v;switch(w.state){case t:B=h.getQualityForBitrate(b,z,A),v.quality=B,v.reason.throughput=z,w.placeholderBuffer=Math.max(0,o(w,B)-x),w.lastQuality=B,!isNaN(w.lastSegmentDurationS)&&x>=w.lastSegmentDurationS&&(w.state=u);break;case u:q(w,c),B=k(w,x+w.placeholderBuffer);var C=h.getQualityForBitrate(b,z,A);B>w.lastQuality&&B>C&&(B=Math.max(C,w.lastQuality));var D=Math.max(0,x+w.placeholderBuffer-m(w,B));D<=w.placeholderBuffer?(w.placeholderBuffer-=D,D=0):(D-=w.placeholderBuffer,w.placeholderBuffer=0,Be&&h/j>d)){k=l-1,c("DroppedFramesRule, index: "+k+" Dropped Frames: "+h+" Total Frames: "+j);break}return(0,i.default)(b).create(k,{droppedFrames:h})}return(0,i.default)(b).create()}var b=this.context,c=(0,k.default)(b).getInstance().log,d=.15,e=375;return{getMaxIndex:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(171),i=d(h),j=a(49),k=d(j);e.__dashjs_factory_name="DroppedFramesRule",c.default=g.default.getClassFactory(e),b.exports=c.default},{171:171,49:49,51:51}],178:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){f(),p.on(k.default.PLAYBACK_SEEKING,h,t)}function c(){if(!(r&&r.hasOwnProperty("getReadOnlyMetricsFor")&&s&&s.hasOwnProperty("getCurrentBufferLevel")))throw new Error("Missing config parameter(s)")}function d(a){var b=(0,q.default)(m).create();if(!a||!a.hasOwnProperty("getMediaType"))return b;c();var d=a.getMediaType(),f=r.getReadOnlyMetricsFor(d),h=f.BufferState.length>0?f.BufferState[f.BufferState.length-1]:null,i=a.getRepresentationInfo(),j=i.fragmentDuration;if(!h||!e(d,h)||!j)return b;if(h.state===g.default.BUFFER_EMPTY)n("Switch to index 0; buffer is empty."),b.quality=0,b.reason="InsufficientBufferRule: Buffer is empty";else{var k=a.getMediaInfo(),o=a.getAbrController(),p=o.getThroughputHistory(),t=s.getCurrentBufferLevel(f),u=p.getAverageThroughput(d),v=p.getAverageLatency(d),w=u*(t/j)*l;b.quality=o.getQualityForBitrate(k,w,v),b.reason="InsufficientBufferRule: being conservative to avoid immediate rebuffering"}return b}function e(a,b){u[a]=u[a]||{};var c=!1;return u[a].firstBufferLoadedEvent?c=!0:b&&b.state===g.default.BUFFER_LOADED&&(u[a].firstBufferLoadedEvent=!0,c=!0),c}function f(){u={}}function h(){f()}function j(){f(),p.off(k.default.PLAYBACK_SEEKING,h,t)}var l=.5,m=this.context,n=(0,o.default)(m).getInstance().log,p=(0,i.default)(m).getInstance(),r=a.metricsModel,s=a.dashMetrics,t=void 0,u=void 0;return t={getMaxIndex:d,reset:j},b(),t}Object.defineProperty(c,"__esModule",{value:!0});var f=a(105),g=d(f),h=a(50),i=d(h),j=a(54),k=d(j),l=a(51),m=d(l),n=a(49),o=d(n),p=a(171),q=d(p);e.__dashjs_factory_name="InsufficientBufferRule",c.default=m.default.getClassFactory(e),b.exports=c.default},{105:105,171:171,49:49,50:50,51:51,54:54}],179:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){for(var f=a?a.getSwitchHistory():null,g=f?f.getSwitchRequests():[],h=0,i=0,j=0,l=(0,k.default)(b).create(),m=0;m=e&&h/i>d)){l.quality=m>0&&g[m].drops>0?m-1:m,l.reason={index:l.quality,drops:h,noDrops:i,dropSize:j},c("Switch history rule index: "+l.quality+" samples: "+(h+i)+" drops: "+h);break}return l}var b=this.context,c=(0,i.default)(b).getInstance().log,d=.075,e=6;return{getMaxIndex:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(49),i=d(h),j=a(171),k=d(j);e.__dashjs_factory_name="SwitchHistoryRule",c.default=g.default.getClassFactory(e),b.exports=c.default},{171:171,49:49,51:51}],180:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){if(!h||!h.hasOwnProperty("getReadOnlyMetricsFor"))throw new Error("Missing config parameter(s)")}function c(a){var c=(0,o.default)(e).create();if(!(a&&a.hasOwnProperty("getMediaInfo")&&a.hasOwnProperty("getMediaType")&&a.hasOwnProperty("useBufferOccupancyABR")&&a.hasOwnProperty("getAbrController")&&a.hasOwnProperty("getStreamProcessor")))return c;b();var d=a.getMediaInfo(),j=a.getMediaType(),k=h.getReadOnlyMetricsFor(j),l=a.getStreamProcessor(),m=a.getAbrController(),n=a.getStreamInfo(),p=n&&n.manifestInfo?n.manifestInfo.isDynamic:null,q=m.getThroughputHistory(),r=q.getSafeAverageThroughput(j,p),s=q.getAverageLatency(j),t=k.BufferState.length>0?k.BufferState[k.BufferState.length-1]:null,u=a.useBufferOccupancyABR();return!k||isNaN(r)||!t||u?c:(m.getAbandonmentStateFor(j)!==i.default.ABANDON_LOAD&&(t.state===g.default.BUFFER_LOADED||p)&&(c.quality=m.getQualityForBitrate(d,r,s),l.getScheduleController().setTimeToLoadDelay(0),f("ThroughputRule requesting switch to index: ",c.quality,"type: ",j,"Average throughput",Math.round(r),"kbps"),c.reason={throughput:r,latency:s}),c)}function d(){}var e=this.context,f=(0,m.default)(e).getInstance().log,h=a.metricsModel;return{getMaxIndex:c,reset:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(105),g=d(f),h=a(102),i=d(h),j=a(51),k=d(j),l=a(49),m=d(l),n=a(171),o=d(n);e.__dashjs_factory_name="ThroughputRule",c.default=k.default.getClassFactory(e),b.exports=c.default},{102:102,105:105,171:171,49:49,51:51}],181:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){}function c(a,b,c){return e.getCurrentBufferLevel(f.getReadOnlyMetricsFor(b))=h.getLongFormContentDurationThreshold();d=n?h.getBufferTimeAtTopQualityLongForm():h.getBufferTimeAtTopQuality()}else d=h.getStableBufferTime()}return d}var e=a.dashMetrics,f=a.metricsModel,h=a.mediaPlayerModel,i=a.textController,j=a.abrController,k={execute:c,getBufferTarget:d};return b(),k}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(51),i=d(h);e.__dashjs_factory_name="BufferLevelRule",c.default=i.default.getClassFactory(e),b.exports=c.default},{100:100,51:51}],182:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c=a.getCurrentRepresentationInfo(),i=c.mediaInfo,j=i.type,k=a.getScheduleController(),l=k.getSeekTarget(),m=!isNaN(l),n=a.getBuffer(),o=m?l:e.getIndexHandlerTime(a);if(isNaN(o)||j===g.default.FRAGMENTED_TEXT&&h.getAllTracksAreDisabled())return null;if(m&&k.setSeekTarget(NaN),n){var p=f.getBufferRange(n,o);null!==p&&(d("Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end.",o," was changed to ",p.end),o=p.end)}var q=void 0;if(b)o=b.startTime+b.duration/2,q=e.getFragmentRequestForTime(a,c,o,{timeThreshold:0,ignoreIsFinished:!0});else{for(q=e.getFragmentRequestForTime(a,c,o,{keepIdx:!m});a.getFragmentModel().isFragmentLoaded(q);)q=e.getNextFragmentRequest(a,c);q&&(e.setIndexHandlerTime(a,q.startTime+q.duration),q.delayLoadingTime=(new Date).getTime()+k.getTimeToLoadDelay(),k.setTimeToLoadDelay(0))}return q}var c=this.context,d=(0,i.default)(c).getInstance().log,e=a.adapter,f=a.sourceBufferController,h=a.textController;return{execute:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(49),i=d(h),j=a(51),k=d(j);e.__dashjs_factory_name="NextFragmentRequestRule",c.default=k.default.getClassFactory(e),b.exports=c.default},{100:100,49:49,51:51}],183:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){for(var b="",c=0;c0&&(o.spans.push({name:p,line:w,row:t}),w="");var C="style_cea608_"+B.foreground+"_"+B.background;B.underline&&(C+="_underline"),B.italics&&(C+="_italics"),r.hasOwnProperty(C)||(r[C]=JSON.parse(JSON.stringify(B))),x=B,p=C}w+=A.uchar}w.trim().length>0&&o.spans.push({name:p,line:w,row:t}),m=!0,n=y}else m=!1,n=-1,k&&(k.p.push(o),o={start:g,end:i,spans:[]},k.y2=t,k.name="region_"+k.x+"_"+k.y1+"_"+k.y2,!1===q.hasOwnProperty(k.name)?(s.push(k),q[k.name]=k):(l=q[k.name],l.p.contat(k.p)),k=null)}k&&(k.p.push(o),k.y2=t+1,k.name="region_"+k.x+"_"+k.y1+"_"+k.y2,!1===q.hasOwnProperty(k.name)?(s.push(k),q[k.name]=k):(l=q[k.name], -l.p.contat(k.p)),k=null);var D=[];for(t=0;t0){if(0!==u&&M!=N.row){var O=document.createElement("br");O.className="lineBreak",J.appendChild(O)}var P=!1;M===N.row&&(P=!0),M=N.row;var Q=r[N.name],R=document.createElement("span");R.className="spanPadding "+N.name+" customSpanColor",R.style.cssText=d(c,Q),0!==u&&P?u===L.spans.length-1?R.textContent=f(N.line):R.textContent=N.line:L.spans.length>1&&u0?d[b.roles[0]]:d.caption;return a=a===d.caption||a===d.subtitle?a:d.caption},f=function(){var a=!1;return b.codec&&b.codec.search(g.default.STPP)>=0&&(a=!0),b.mimeType&&b.mimeType.search(g.default.TTML)>=0&&(a=!0),a};c.captionData=a,c.lang=b.lang,c.label=b.id,c.index=b.index,c.isTTML=f(),c.defaultTrack=r(b),c.isFragmented=P,c.isEmbedded=!!b.isEmbedded,c.kind=e(),c.roles=b.roles;var h=(N?N.length:0)+Y.length;O.addTextTrack(c,h)}var d=void 0,e=void 0,f=void 0,i=void 0,k=void 0,l=void 0,m=void 0,n=b.mediaInfo,o=n.type,p=n.mimeType,t=n.codec||p;if(!t)return void w("No text type defined");if(o===g.default.FRAGMENTED_TEXT)if(R)if(l=M.getSamplesInfo(a),e=l.sampleList,!W&&e.length>0&&(W=e[0].cts-b.start*S),t.search(g.default.STPP)>=0)for(J=null!==J?J:s(t),f=0;f0&&O.addCaptions(X,0,K)}else{for(R=!0,f=0;f0&&(f.cts!==h?i=0:i+=1,c.fields[l].push([f.cts,k[l],i]),h=f.cts);return c.fields.forEach(function(a){a.sort(function(a,b){return a[0]===b[0]?a[2]-b[2]:a[0]-b[0]})}),c}function r(a){var b=!1;return Y.length>1&&a.isEmbedded?b=a.id&&a.id===g.default.CC1:1===Y.length?a.id&&"CC"===a.id.substring(0,2)&&(b=!0):0===Y.length&&(b=a.index===N[0].index),b}function s(a){var b=void 0;return a.search(g.default.VTT)>=0?b=K:(a.search(g.default.TTML)>=0||a.search(g.default.STPP)>=0)&&(b=L),b}var u=this.context,w=(0,t.default)(u).getInstance().log,y=(0,D.default)(u).getInstance(),A=!1,C=void 0,E=void 0,G=void 0,H=void 0,I=void 0,J=void 0,K=void 0,L=void 0,M=void 0,N=void 0,O=void 0,P=void 0,Q=void 0,R=void 0,S=void 0,T=void 0,U=void 0,V=void 0,W=void 0,X=void 0,Y=void 0,Z=void 0,$=void 0,_=void 0,aa=void 0,ba=void 0,ca=void 0;return{initialize:a,append:o,abort:b,addEmbeddedTrack:f,resetEmbedded:e,setConfig:i,getConfig:k,setCurrentFragmentedTrackIdx:m}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(224),i=a(218),j=d(i),k=a(74),l=d(k),m=a(190),n=d(m),o=a(192),p=d(o),q=a(51),r=d(q),s=a(49),t=d(s),u=a(188),v=d(u),w=a(183),x=d(w),y=a(11),z=d(y),A=a(2),B=d(A),C=a(50),D=d(C),E=a(54),F=d(E);e.__dashjs_factory_name="TextSourceBuffer",c.default=r.default.getSingletonFactory(e),b.exports=c.default},{100:100,11:11,183:183,188:188,190:190,192:192,2:2,218:218,224:224,49:49,50:50,51:51,54:54,74:74}],188:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){"undefined"!=typeof window&&"undefined"!=typeof navigator&&(F=window.VTTCue||window.TextTrackCue,H=[],I=[],J=-1,K=0,L=0,M=0,N=0,O=null,P=null,S=!1,T=2147483647,Q=!!navigator.userAgent.match(/Chrome/)&&!navigator.userAgent.match(/Edge/),void 0!==document.fullscreenElement?R="fullscreenElement":void 0!==document.webkitIsFullScreen?R="webkitIsFullScreen":document.msFullscreenElement?R="msFullscreenElement":document.mozFullScreen&&(R="mozFullScreen"))}function b(a){var b=H[a].kind,c=void 0!==H[a].label?H[a].label:H[a].lang,d=H[a].lang,e=Q?document.createElement("track"):G.addTextTrack(b,c,d);return Q&&(e.kind=b,e.label=c,e.srclang=d),e}function c(a){S=a,O&&!document[R]&&(O.style.zIndex=a?T:null)}function d(a,c){if(H.length===c)return void E("Trying to add too many tracks.");if(H.push(a),H.length===c){H.sort(function(a,b){return a.index-b.index}),O=G.getTTMLRenderingDiv();for(var d=-1,e=0;e=0)for(var i=0;ih?(j=b,i=j/d*c):(i=a,j=i/c*d);var k=0,l=0,m=0,n=0;return i/j>e?(n=j,m=j/(1/e),k=(a-m)/2,l=0):(m=i,n=i/e,k=0,l=(b-n)/2),f?{x:k+.1*m,y:l+.1*n,w:.8*m,h:.8*n}:{x:k,y:l,w:m,h:n}}function f(a){var b=G.getClientWidth(),c=G.getClientHeight(),d=G.getVideoWidth(),f=G.getVideoHeight(),g=b/c,h=!1;a.isFromCEA608&&(g=3.5/3,h=!0);var i=e.call(this,b,c,d,f,g,h),j=i.w,k=i.h;if(j!=M||k!=N){K=i.x,L=i.y,M=j,N=k,O.style.left=K+"px",O.style.top=L+"px",O.style.width=M+"px",O.style.height=N+"px";for(var l=0;a.activeCues&&l=0&&H[a]?G.getTextTrack(H[a].kind,H[a].label,H[a].lang):null}function m(){return J}function n(a){for(var b=-1,c=0;c=0;d--)a.removeCue(b[d])}function t(a){var b=l(a);b&&s(b)}function u(){for(var a=I?I.length:0,b=0;bthis.customTimeRangeArray[c].start;c++);for(this.customTimeRangeArray.splice(c,0,{start:a,end:b}),c=0;c=this.customTimeRangeArray[c].end)this.customTimeRangeArray.splice(c,1),c--;else{if(a>this.customTimeRangeArray[c].start&&bthis.customTimeRangeArray[c].start&&athis.customTimeRangeArray[c].start&&b=this.customTimeRangeArray.length||a<0?NaN:this.customTimeRangeArray[a].start}function g(a){return e(a),a>=this.customTimeRangeArray.length||a<0?NaN:this.customTimeRangeArray[a].end}return{customTimeRangeArray:[],length:0,add:a,clear:b,remove:c,mergeRanges:d,start:f,end:g}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="CustomTimeRanges",c.default=g.default.getClassFactory(e),b.exports=c.default},{51:51}],193:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){if(void 0!==x)return x;x=!1;var b="1",c="1",d=void 0;try{"undefined"!=typeof window&&(d=window[a])}catch(e){return u("Warning: DOMStorage access denied: "+e.message),x}if(!d||a!==m&&a!==n)return x;try{d.setItem(b,c),d.removeItem(b),x=!0}catch(e){u("Warning: DOMStorage is supported, but cannot be used: "+e.message)}return x}function c(){b(m)&&j.forEach(function(a){var b=localStorage.getItem(a.oldKey);if(b){localStorage.removeItem(a.oldKey);try{localStorage.setItem(a.newKey,b)}catch(c){u(c.message)}}})}function d(){c()}function e(){var a=6e5;return Math.round((new Date).getTime()/a)*a}function f(a,c){return b(a)&&v["get"+c+"CachingInfo"]().enabled}function g(){if(!v||!v.hasOwnProperty("getLastMediaSettingsCachingInfo"))throw new Error("Missing config parameter(s)")}function h(a){if(g(),!f(m,p))return null;var b=null,c=l.replace(/\?/,a);try{var d=JSON.parse(localStorage.getItem(c))||{},e=(new Date).getTime()-parseInt(d.timestamp,10)>=v.getLastMediaSettingsCachingInfo().ttl||!1;b=d.settings,e&&(localStorage.removeItem(c),b=null)}catch(h){return null}return b}function q(a){var b=NaN;if(g(),f(m,o)){var c=k.replace(/\?/,a);try{var d=JSON.parse(localStorage.getItem(c))||{},e=(new Date).getTime()-parseInt(d.timestamp,10)>=v.getLastMediaSettingsCachingInfo().ttl||!1,h=parseFloat(d.bitrate);isNaN(h)||e?e&&localStorage.removeItem(c):(b=h,u("Last saved bitrate for "+a+" was "+h))}catch(i){return null}}return b}function r(a,b){if(f(m,p)){var c=l.replace(/\?/,a);try{localStorage.setItem(c,JSON.stringify({settings:b,timestamp:e()}))}catch(d){u(d.message)}}}function s(a,b){if(f(m,o)&&b){var c=k.replace(/\?/,a);try{localStorage.setItem(c,JSON.stringify({bitrate:b.toFixed(3),timestamp:e()}))}catch(d){u(d.message)}}}var t=this.context,u=(0,i.default)(t).getInstance().log,v=a.mediaPlayerModel,w=void 0,x=void 0;return w={getSavedBitrateSettings:q,setSavedBitrateSettings:s,getSavedMediaSettings:h,setSavedMediaSettings:r},d(),w}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(49),i=d(h),j=[{oldKey:"dashjs_vbitrate",newKey:"dashjs_video_bitrate"},{oldKey:"dashjs_abitrate",newKey:"dashjs_audio_bitrate"},{oldKey:"dashjs_vsettings",newKey:"dashjs_video_settings"},{oldKey:"dashjs_asettings",newKey:"dashjs_audio_settings"}],k="dashjs_?_bitrate",l="dashjs_?_settings",m="localStorage",n="sessionStorage",o="LastBitrate",p="LastMediaSettings";e.__dashjs_factory_name="DOMStorage";var q=g.default.getSingletonFactory(e);c.default=q,b.exports=c.default},{49:49,51:51}],194:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){return n}function c(a){n=a}function d(a,b){var c=!0,d=0,e=void 0,f=void 0;if(void 0===b&&(b=!1),a.tag>16777215?(m.getUint32(n)!==a.tag&&(c=!1),d=4):a.tag>65535?(e=m.getUint16(n),f=m.getUint8(n+2),256*e+f!==a.tag&&(c=!1),d=3):a.tag>255?(m.getUint16(n)!==a.tag&&(c=!1),d=2):(m.getUint8(n)!==a.tag&&(c=!1),d=1),!c&&a.required&&!b)throw new Error("required tag not found");return c&&(n+=d),c}function e(a,b){var c=d(a,b);return c&&h(),c}function f(a){var b=void 0;return d(a),b=h(),l[a.parse](b)}function g(a,b){var c=d(a,b),e=void 0;return c&&(e=h(),n+=e),c}function h(a){var b=1,c=128,d=8,e=-1,f=0,g=m.getUint8(n),h=0;for(h=0;h>=1}for(h=0;h0?c[c.length-1]:null}function e(a){if(!a)return null;var b=new g.default(a);return a.hasOwnProperty("_incomplete")&&(b.isComplete=!a._incomplete),b}var f=void 0;return{getBox:a,getBoxes:b,setData:c,getLastBox:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(211),g=d(f),h=a(51),i=d(h);e.__dashjs_factory_name="IsoFile",c.default=i.default.getClassFactory(e),b.exports=c.default},{211:211,51:51}],198:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){if(!(e&&e.hasOwnProperty("getExpectedLiveEdge")&&f&&f.hasOwnProperty("getCurrentRepresentationInfo")))throw new Error("Missing config parameter(s)")}function c(){b();var a=f.getCurrentRepresentationInfo(),c=a.DVRWindow.end;return a.useCalculatedLiveEdgeTime&&(c=e.getExpectedLiveEdge(),e.setClientTimeOffset(c-a.DVRWindow.end)),c}function d(){e=null,f=null}var e=a.timelineConverter,f=a.streamProcessor;return{getLiveEdge:c,reset:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="LiveEdgeFinder",c.default=g.default.getClassFactory(e),b.exports=c.default},{51:51}],199:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){return(0,i.default)(a,b)}return{areEqual:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(13),i=d(h);e.__dashjs_factory_name="ObjectUtils",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{13:13,51:51}],200:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){return a}function b(a){return a}return{modifyRequestURL:a,modifyRequestHeader:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="RequestModifier",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{51:51}],201:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){var a="cue_TTML_"+g;return g++,a}function b(b,c,d,f,g){var h=void 0,i=void 0,k="",l=[],m=void 0,n=void 0,o={},p="",q="",r={onOpenTag:function(a,b,c){if("image"===b&&"http://www.smpte-ra.org/schemas/2052-1/2010/smpte-tt"===a){if(!c[" imagetype"]||"PNG"!==c[" imagetype"].value)return void e("Warning: smpte-tt imagetype != PNG. Discarded");p=c["http://www.w3.org/XML/1998/namespace id"].value}},onCloseTag:function(){p&&(o[p]=q.trim()),q="",p=""},onText:function(a){p&&(q+=a)}};if(!b)throw k="no ttml data to parse",new Error(k);var s=(0,j.fromXML)(b,function(a){k=a},r),t=s.getMediaTimeEvents();for(h=0;h=1&&(m=t[h]+cf?f:t[h+1]+c,m0)return l;throw new Error(k)}function c(){}var d=this.context,e=(0,i.default)(d).getInstance().log,f=void 0,g=0;return f={parse:b},c(),f}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(49),i=d(h),j=a(21);e.__dashjs_factory_name="TTMLParser",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{21:21,49:49,51:51}],202:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){try{new window.URL("x","http://y");k=p}catch(a){}finally{k=k||q}}function b(a){var b=a.indexOf("/"),c=a.lastIndexOf("/");return-1!==b?c===b+1?a:(-1!==a.indexOf("?")&&(a=a.substring(0,a.indexOf("?"))),a.substring(0,c+1)):""}function c(a){var b=a.match(o);return b?b[1]:""}function d(a){var b=a.match(l);return b?b[0]:""}function e(a){return!l.test(a)}function f(a){return e(a)&&"/"===a.charAt(0)}function g(a){return 0===a.indexOf("//")}function h(a){return m.test(a)}function i(a){return n.test(a)}function j(a,b){return k(a,b)}var k=void 0,l=/^[a-z][a-z0-9+\-.]*:/i,m=/^https?:\/\//i,n=/^https:\/\//i,o=/^([a-z][a-z0-9+\-.]*:\/\/[^\/]+)\/?/i,p=function(a,b){try{return new window.URL(a,b).toString()}catch(c){return a}},q=function(a,h){var i=b;if(!h)return a;if(!e(a))return a;f(a)&&(i=c),g(a)&&(i=d);var j=i(h);return[j,a].join("/"!==j.charAt(j.length-1)&&"/"!==a.charAt(0)?"/":"")};return a(),{parseBaseUrl:b,parseOrigin:c,parseScheme:d,isRelative:e,isPathAbsolute:f,isSchemeRelative:g,isHTTPURL:h,isHTTPS:i,resolve:j}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="URLUtils",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{51:51}],203:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){l=/(?:\r\n|\r|\n)/gm,m=/-->/,n=/(^[\s]+|[\s]+$)/g,o=/\s\b/g}function b(a){var b=[],e=void 0,g=void 0;if(!a)return b;a=a.split(l),e=a.length,g=-1;for(var i=0;i0&&k!==j&&k.match(m)){var o=d(k),p=o.cuePoints,q=o.styles,r=f(a,i+1),s=c(p[0].replace(n,"")),t=c(p[1].replace(n,""));!isNaN(s)&&!isNaN(t)&&s>=g&&t>s?""!==r?(g=s,b.push({start:s,end:t,data:r,styles:q})):h("Skipping cue due to empty/malformed cue text"):h("Skipping cue due to incorrect cue timing")}}return b}function c(a){var b=a.split(":"),c=b.length-1;return a=60*parseInt(b[c-1],10)+parseFloat(b[c]),2===c&&(a+=3600*parseInt(b[0],10)),a}function d(a){var b=a.split(m),c=b[1].split(o);return c.shift(),b[1]=c[0],c.shift(),{cuePoints:b,styles:e(c)}}function e(a){var b={};return a.forEach(function(a){if(a.split(/:/).length>1){var c=a.split(/:/)[1];c&&-1!=c.search(/%/)&&(c=parseInt(c.replace(/%/,""),10)),(a.match(/align/)||a.match(/A/))&&(b.align=c),(a.match(/line/)||a.match(/L/))&&(b.line=c),(a.match(/position/)||a.match(/P/))&&(b.position=c),(a.match(/size/)||a.match(/S/))&&(b.size=c)}}),b}function f(a,b){for(var c=b,d="",e="",f=void 0;""!==a[c]&&c1)for(var g=0;g1&&(h.forEach(function(a){d+=a.dvb_weight,e.push(d)}),g=Math.floor(Math.random()*(d-1)),e.every(function(a,b){return f=b,!(g1114111||b(j)!==j)throw RangeError("Invalid code point: "+j);j<=65535?f.push(j):(j-=65536,c=55296+(j>>10),d=j%1024+56320,f.push(c,d)),(g+1===h||f.length>e)&&(i+=a.apply(null,f),f.length=0)}return i};Object.defineProperty?Object.defineProperty(String,"fromCodePoint",{value:c,configurable:!0,writable:!0}):String.fromCodePoint=c}()}(void 0===c?this.sax={}:c)}).call(this,a(10).Buffer)},{10:10,46:46,9:9}],46:[function(a,b,c){function d(){e.call(this)}b.exports=d;var e=a(16).EventEmitter;a(25)(d,e),d.Readable=a(40),d.Writable=a(42),d.Duplex=a(30),d.Transform=a(41),d.PassThrough=a(39),d.Stream=d,d.prototype.pipe=function(a,b){function c(b){a.writable&&!1===a.write(b)&&j.pause&&j.pause()}function d(){j.readable&&j.resume&&j.resume()}function f(){k||(k=!0,a.end())}function g(){k||(k=!0,"function"==typeof a.destroy&&a.destroy())}function h(a){if(i(),0===e.listenerCount(this,"error"))throw a}function i(){j.removeListener("data",c),a.removeListener("drain",d),j.removeListener("end",f),j.removeListener("close",g),j.removeListener("error",h),a.removeListener("error",h),j.removeListener("end",i),j.removeListener("close",i),a.removeListener("close",i)}var j=this;j.on("data",c),a.on("drain",d),a._isStdio||b&&!1===b.end||(j.on("end",f),j.on("close",g));var k=!1;return j.on("error",h),a.on("error",h),j.on("end",i),j.on("close",i),a.on("close",i),a.emit("pipe",j),a}},{16:16,25:25,30:30,39:39,40:40,41:41,42:42}],47:[function(a,b,c){"use strict";function d(a){if(!a)return"utf8";for(var b;;)switch(a){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return a;default:if(b)return;a=(""+a).toLowerCase(),b=!0}}function e(a){var b=d(a);if("string"!=typeof b&&(s.isEncoding===t||!t(a)))throw new Error("Unknown encoding: "+a);return b||a}function f(a){this.encoding=e(a);var b;switch(this.encoding){case"utf16le":this.text=m,this.end=n,b=4;break;case"utf8":this.fillLast=j,b=4;break;case"base64":this.text=o,this.end=p,b=3;break;default:return this.write=q,void(this.end=r)}this.lastNeed=0,this.lastTotal=0,this.lastChar=s.allocUnsafe(b)}function g(a){return a<=127?0:a>>5==6?2:a>>4==14?3:a>>3==30?4:-1}function h(a,b,c){var d=b.length-1;if(d=0?(e>0&&(a.lastNeed=e-1),e):--d=0?(e>0&&(a.lastNeed=e-2),e):--d=0?(e>0&&(2===e?e=0:a.lastNeed=e-3),e):0)}function i(a,b,c){if(128!=(192&b[0]))return a.lastNeed=0,"�".repeat(c);if(a.lastNeed>1&&b.length>1){if(128!=(192&b[1]))return a.lastNeed=1,"�".repeat(c+1);if(a.lastNeed>2&&b.length>2&&128!=(192&b[2]))return a.lastNeed=2,"�".repeat(c+2)}}function j(a){var b=this.lastTotal-this.lastNeed,c=i(this,a,b);return void 0!==c?c:this.lastNeed<=a.length?(a.copy(this.lastChar,b,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(a.copy(this.lastChar,b,0,a.length),void(this.lastNeed-=a.length))}function k(a,b){var c=h(this,a,b);if(!this.lastNeed)return a.toString("utf8",b);this.lastTotal=c;var d=a.length-(c-this.lastNeed);return a.copy(this.lastChar,0,d),a.toString("utf8",b,d)}function l(a){var b=a&&a.length?this.write(a):"";return this.lastNeed?b+"�".repeat(this.lastTotal-this.lastNeed):b}function m(a,b){if((a.length-b)%2==0){var c=a.toString("utf16le",b);if(c){var d=c.charCodeAt(c.length-1);if(d>=55296&&d<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=a[a.length-2],this.lastChar[1]=a[a.length-1],c.slice(0,-1)}return c}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=a[a.length-1],a.toString("utf16le",b,a.length-1)}function n(a){var b=a&&a.length?this.write(a):"";if(this.lastNeed){var c=this.lastTotal-this.lastNeed;return b+this.lastChar.toString("utf16le",0,c)}return b}function o(a,b){var c=(a.length-b)%3;return 0===c?a.toString("base64",b):(this.lastNeed=3-c,this.lastTotal=3,1===c?this.lastChar[0]=a[a.length-1]:(this.lastChar[0]=a[a.length-2],this.lastChar[1]=a[a.length-1]),a.toString("base64",b,a.length-c))}function p(a){var b=a&&a.length?this.write(a):"";return this.lastNeed?b+this.lastChar.toString("base64",0,3-this.lastNeed):b}function q(a){return a.toString(this.encoding)}function r(a){return a&&a.length?this.write(a):""}var s=a(44).Buffer,t=s.isEncoding||function(a){switch((a=""+a)&&a.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};c.StringDecoder=f,f.prototype.write=function(a){if(0===a.length)return"";var b,c;if(this.lastNeed){if(void 0===(b=this.fillLast(a)))return"";c=this.lastNeed,this.lastNeed=0}else c=0;return c0&&(a+=" "),Array.apply(null,arguments).forEach(function(b){a+=b+" "}),l&&console.log(a),j.trigger(i.default.LOG,{message:a})}var h=this.context,j=(0,g.default)(h).getInstance(),k=void 0,l=void 0,m=void 0,n=void 0,o=void 0;return k={log:f,setLogTimestampVisible:b,setCalleeNameVisible:c,setLogToBrowserConsole:d,getLogToBrowserConsole:e},a(),k}Object.defineProperty(c,"__esModule",{value:!0});var f=a(50),g=d(f),h=a(54),i=d(h),j=a(51),k=d(j);e.__dashjs_factory_name="Debug",c.default=k.default.getSingletonFactory(e),b.exports=c.default},{50:50,51:51,54:54}],50:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b,c){var e=arguments.length<=3||void 0===arguments[3]?h:arguments[3];if(!a)throw new Error("event type cannot be null or undefined");if(!b||"function"!=typeof b)throw new Error("listener must be a function: "+b);if(!(d(a,b,c)>=0)){f[a]=f[a]||[];var g={callback:b,scope:c,priority:e};f[a].some(function(b,c){if(b&&e>b.priority)return f[a].splice(c,0,g),!0})||f[a].push(g)}}function b(a,b,c){if(a&&b&&f[a]){var e=d(a,b,c);e<0||(f[a][e]=null)}}function c(a,b){if(a&&f[a]){if(b=b||{},b.hasOwnProperty("type"))throw new Error("'type' is a reserved word for event dispatching");b.type=a,f[a]=f[a].filter(function(a){return a}),f[a].forEach(function(a){return a&&a.callback.call(a.scope,b)})}}function d(a,b,c){var d=-1;return f[a]?(f[a].some(function(a,e){if(a&&a.callback===b&&(!c||c===a.scope))return d=e,!0}),d):d}function e(){f={}}var f={};return{on:a,off:b,trigger:c,reset:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=0,i=5e3;e.__dashjs_factory_name="EventBus";var j=g.default.getSingletonFactory(e);j.EVENT_PRIORITY_LOW=h,j.EVENT_PRIORITY_HIGH=i,g.default.updateSingletonFactory(e.__dashjs_factory_name,j),c.default=j,b.exports=c.default},{51:51}],51:[function(a,b,c){"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d=function(){function a(a,b,c,d){var e=n(d);!e[a]&&b&&(e[a]={instance:b,override:c})}function b(a,b){for(var c in q){var d=q[c];if(d.context===a&&d.name===b)return d.instance}return null}function c(a,b,c){for(var d in q){var e=q[d];if(e.context===a&&e.name===b)return void(q[d].instance=c)}q.push({name:b,context:a,instance:c})}function d(a,b,c){for(var d in c){if(c[d].name===a)return void(c[d].factory=b)}c.push({name:a,factory:b})}function e(a,b){for(var c in b){if(b[c].name===a)return b[c].factory}return null}function f(a,b,c){for(var d in c){if(c[d].name===a)return void(c[d].factory=b)}}function g(a,b){f(a,b,s)}function h(a){return e(a,s)}function i(a){var b=e(a.__dashjs_factory_name,s);return b||(b=function(b){return void 0===b&&(b={}),{create:function(){return m(a.__dashjs_factory_name,a.apply({context:b},arguments),b,arguments)}}},d(a.__dashjs_factory_name,b,s)),b}function j(a,b){f(a,b,r)}function k(a){return e(a,r)}function l(a){var c=e(a.__dashjs_factory_name,r);return c||(c=function(c){var d=void 0;return void 0===c&&(c={}),{getInstance:function(){return d||(d=b(c,a.__dashjs_factory_name)),d||(d=m(a.__dashjs_factory_name,a.apply({context:c},arguments),c,arguments),q.push({name:a.__dashjs_factory_name,context:c,instance:d})),d}}},d(a.__dashjs_factory_name,c,r)),c}function m(a,b,c,d){b.getClassName=function(){return a};var e=n(c),f=e[a];if(f){var g=f.instance;if(!f.override)return g.apply({context:c,factory:o},d);g=g.apply({context:c,factory:o,parent:b},d);for(var h in g)b.hasOwnProperty(h)&&(b[h]=g[h])}return b}function n(a){var b=void 0;return p.forEach(function(c){c===a&&(b=c)}),b||(p.push(a),b=a),b}var o=void 0,p=[],q=[],r=[],s=[];return o={extend:a,getSingletonInstance:b,setSingletonInstance:c,getSingletonFactory:l,getSingletonFactoryByName:k,updateSingletonFactory:j,getClassFactory:i,getClassFactoryByName:h,updateClassFactory:g}}();c.default=d,b.exports=c.default},{}],52:[function(a,b,c){"use strict";function d(){return e}Object.defineProperty(c,"__esModule",{value:!0}),c.getVersionString=d;var e="2.6.4"},{}],53:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(55),i=d(h),j=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this),this.BUFFERING_COMPLETED="bufferingCompleted",this.BUFFER_CLEARED="bufferCleared",this.BUFFER_LEVEL_UPDATED="bufferLevelUpdated",this.BYTES_APPENDED="bytesAppended",this.CHECK_FOR_EXISTENCE_COMPLETED="checkForExistenceCompleted",this.CURRENT_TRACK_CHANGED="currentTrackChanged",this.DATA_UPDATE_COMPLETED="dataUpdateCompleted",this.DATA_UPDATE_STARTED="dataUpdateStarted",this.INITIALIZATION_LOADED="initializationLoaded",this.INIT_FRAGMENT_LOADED="initFragmentLoaded",this.INIT_REQUESTED="initRequested",this.INTERNAL_MANIFEST_LOADED="internalManifestLoaded",this.LIVE_EDGE_SEARCH_COMPLETED="liveEdgeSearchCompleted",this.LOADING_COMPLETED="loadingCompleted",this.LOADING_PROGRESS="loadingProgress",this.LOADING_ABANDONED="loadingAborted",this.MANIFEST_UPDATED="manifestUpdated",this.MEDIA_FRAGMENT_LOADED="mediaFragmentLoaded",this.QUOTA_EXCEEDED="quotaExceeded",this.REPRESENTATION_UPDATED="representationUpdated",this.SEGMENTS_LOADED="segmentsLoaded",this.SERVICE_LOCATION_BLACKLIST_ADD="serviceLocationBlacklistAdd",this.SERVICE_LOCATION_BLACKLIST_CHANGED="serviceLocationBlacklistChanged",this.SOURCEBUFFER_APPEND_COMPLETED="sourceBufferAppendCompleted",this.SOURCEBUFFER_REMOVE_COMPLETED="sourceBufferRemoveCompleted",this.STREAMS_COMPOSED="streamsComposed",this.STREAM_BUFFERING_COMPLETED="streamBufferingCompleted",this.STREAM_COMPLETED="streamCompleted",this.TEXT_TRACKS_QUEUE_INITIALIZED="textTracksQueueInitialized",this.TIMED_TEXT_REQUESTED="timedTextRequested",this.TIME_SYNCHRONIZATION_COMPLETED="timeSynchronizationComplete",this.URL_RESOLUTION_FAILED="urlResolutionFailed",this.VIDEO_CHUNK_RECEIVED="videoChunkReceived",this.WALLCLOCK_TIME_UPDATED="wallclockTimeUpdated",this.XLINK_ELEMENT_LOADED="xlinkElementLoaded",this.XLINK_READY="xlinkReady"}return f(b,a),b}(i.default);c.default=j,b.exports=c.default},{55:55}],54:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(53),i=d(h),j=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).apply(this,arguments)}return f(b,a),b}(i.default),k=new j;c.default=k,b.exports=c.default},{53:53}],55:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c0?a.segments[0].duration:NaN),b.MSETimeOffset=a.MSETimeOffset,b.useCalculatedLiveEdgeTime=a.useCalculatedLiveEdgeTime,b.mediaInfo=h(a.adaptation),b}function h(a){var b=new k.default,c=a.period.mpd.manifest.Period_asArray[a.period.index].AdaptationSet_asArray[a.index],d=void 0;return b.id=a.id,b.index=a.index,b.type=a.type,b.streamInfo=l(a.period),b.representationCount=M.getRepresentationCount(c),b.lang=M.getLanguageForAdaptation(c),d=M.getViewpointForAdaptation(c),b.viewpoint=d?d.value:void 0,b.accessibility=M.getAccessibilityForAdaptation(c).map(function(a){var c=a.value,d=c;return a.schemeIdUri&&a.schemeIdUri.search("cea-608")>=0&&void 0!==u.default&&(d=c?"cea-608:"+c:"cea-608",b.embeddedCaptions=!0),d}),b.audioChannelConfiguration=M.getAudioChannelConfigurationForAdaptation(c).map(function(a){return a.value}),b.roles=M.getRolesForAdaptation(c).map(function(a){return a.value}),b.codec=M.getCodec(c),b.mimeType=M.getMimeType(c),b.contentProtection=M.getContentProtectionData(c),b.bitrateList=M.getBitrateListForAdaptation(c),b.contentProtection&&b.contentProtection.forEach(function(a){a.KID=M.getKID(a)}),b.isText=M.getIsTextTrack(b.mimeType),b}function j(a,b,c){a.id=b,a.index=100+parseInt(b.substring(2,3)),a.type=g.default.EMBEDDED_TEXT,a.codec="cea-608-in-SEI",a.isText=!0,a.isEmbedded=!0,a.lang=b+" "+c,a.roles=["caption"]}function l(a){var b=new m.default;return b.id=a.id,b.index=a.index,b.start=a.start,b.duration=a.duration,b.manifestInfo=n(a.mpd),b.isLast=1===a.mpd.manifest.Period_asArray.length||Math.abs(b.start+b.duration-b.manifestInfo.duration)<1,b}function n(a){var b=new o.default;return b.DVRWindowSize=a.timeShiftBufferDepth,b.loadedTime=a.manifest.loadedTime,b.availableFrom=a.availabilityStartTime,b.minBufferTime=a.manifest.minBufferTime,b.maxFragmentDuration=a.maxSegmentDuration,b.duration=M.getDuration(a.manifest),b.isDynamic=M.getIsDynamic(a.manifest),b}function p(a,b){if(0===N.length)return null;var c=N[0].mpd.manifest,d=M.getAdaptationForType(c,a.index,b,a);if(!d)return null;var f=e(a,N),g=f.id,i=M.getIndexForAdaptation(d,c,a.index);return O[g]=O[g]||M.getAdaptationsForPeriod(f),h(O[g][i])}function r(a,b,c){var d=N,f=c,i=[],k=void 0,l=void 0,m=void 0,n=void 0,o=void 0,p=void 0;if(f){s();var q=M.getMpd(f);d=M.getRegularPeriods(q)}else{if(!(N.length>0))return i;f=N[0].mpd.manifest}var r=e(a,d),t=r.id,u=M.getAdaptationsForType(f,a.index,b!==g.default.EMBEDDED_TEXT?b:g.default.VIDEO);if(!u)return i;for(O[t]=O[t]||M.getAdaptationsForPeriod(r),n=0,p=u.length;n0&&(i=h?M.getAdaptationForId(h,N[0].mpd.manifest,b.index):M.getAdaptationForIndex(c.index,N[0].mpd.manifest,b.index),a.getRepresentationController().updateData(i,f,g))}function G(a,b){x(a),y(b);var c=a.getRepresentationForQuality(b);return c?f(c):null}function H(a){x(a);var b=a.getCurrentRepresentation();return b?f(b):null}function I(a,b,c){if(!a||!b)return null;var d=new q.default,e=a.scheme_id_uri,f=a.value,g=a.timescale,h=a.presentation_time_delta,i=a.event_duration,j=a.id,k=a.message_data,l=c*g+h;return b[e]?(d.eventStream=b[e],d.eventStream.value=f,d.eventStream.timescale=g,d.duration=i,d.id=j,d.presentationTime=l,d.messageData=k,d.presentationTimeDelta=h,d):null}function J(a,b){var f=[];if(0===N.length)return f;var g=N[0].mpd.manifest;return a instanceof m.default?f=M.getEventsForPeriod(e(a,N)):a instanceof k.default?f=M.getEventStreamForAdaptationSet(g,d(a)):a instanceof i.default&&(f=M.getEventStreamForRepresentation(g,c(a,b.getRepresentationController()))),f}function K(){N=[],O={}}var L=void 0,M=void 0,N=void 0,O=void 0;return L={convertDataToRepresentationInfo:f,getDataForMedia:d,getStreamsInfo:v,getMediaInfoForType:p,getAllMediaInfoForType:r,getCurrentRepresentationInfo:H,getRepresentationInfoForQuality:G,updateData:F,getInitRequest:z,getNextFragmentRequest:A,getFragmentRequestForTime:B,generateFragmentRequestForTime:C,getIndexHandlerTime:D,setIndexHandlerTime:E,getEventsFor:J,getEvent:I,setConfig:b,updatePeriods:t,reset:K},a(),L}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(217),i=d(h),j=a(215),k=d(j),l=a(218),m=d(l),n=a(214),o=d(n),p=a(83),q=d(p),r=a(51),s=d(r),t=a(2),u=d(t);e.__dashjs_factory_name="DashAdapter",c.default=s.default.getSingletonFactory(e),b.exports=c.default},{100:100,2:2,214:214,215:215,217:217,218:218,51:51,83:83}],57:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){_=(0,v.default)(Q).getInstance().log.bind($),l(),T=c(a.mimeType)?(0,G.default)(Q).getInstance():(0,E.default)(Q).getInstance(),T.setConfig({baseURLController:Z,metricsModel:W,mediaPlayerModel:X,errHandler:Y}),R.on(p.default.INITIALIZATION_LOADED,O,$),R.on(p.default.SEGMENTS_LOADED,P,$)}function c(a){return"webm"===a.split("/")[1].toLowerCase()}function d(b){ea=b;var c=ea?ea.getStreamInfo().manifestInfo.isDynamic:null;T.initialize(),fa=(0,C.default)(Q).create(a,c)}function e(){return ea}function f(a){ca=a}function h(){return ca}function j(){return da}function l(){aa=-1,ca=0,da=NaN,ba=null,ea=null,fa=null}function o(){l(),R.off(p.default.INITIALIZATION_LOADED,O,$),R.off(p.default.SEGMENTS_LOADED,P,$)}function q(a){return a?a.split("$$").join("$"):a}function s(a,b){if(null===b||null===a||-1===a.indexOf("$RepresentationID$"))return a;var c=b.toString();return a.split("$RepresentationID$").join(c)}function t(a,b,c){var d=Z.resolve(c.path),e=void 0,f=void 0;return d&&b!==d.url&&S.isRelative(b)?(e=d.url,f=d.serviceLocation,b&&(e=S.resolve(b,e))):e=b,!S.isRelative(e)&&(a.url=e,a.serviceLocation=f,!0)}function u(a,b){var c=new k.default,d=a.adaptation.period,e=d.start,f=ea?ea.getStreamInfo().manifestInfo.isDynamic:null;if(c.mediaType=b,c.type=n.HTTPRequest.INIT_SEGMENT_TYPE,c.range=a.range,c.availabilityStartTime=U.calcAvailabilityStartTimeFromPresentationTime(e,d.mpd,f),c.availabilityEndTime=U.calcAvailabilityEndTimeFromPresentationTime(e+d.duration,d.mpd,f),c.quality=a.index,c.mediaInfo=ea?ea.getMediaInfo():null,c.representationId=a.id,t(c,a.initialization,a))return c}function w(a){var b=ea?ea.getType():null;return a?u(a,b):null}function y(a){var b=!1,c=ea?ea.getStreamInfo().manifestInfo.isDynamic:null;if(c||aa!==a.availableSegmentsNumber){var d=(0,A.getSegmentByIndex)(aa,a);if(d){var e=parseFloat((d.presentationStartTime-a.adaptation.period.start).toFixed(5)),f=a.adaptation.period.duration;_(a.segmentInfoType+": "+e+" / "+f),b=(a.segmentInfoType!==i.default.SEGMENT_TIMELINE||!c)&&e>=f}else _("isMediaFinished - no segment found")}else b=!0;return b}function B(a){fa.getSegments(a,ba,aa,D)}function D(a,b){var c=ea?ea.getStreamInfo().manifestInfo.isDynamic:null;if(a.segments=b,b&&b.length>0&&(da=isNaN(da)?b[0].presentationStartTime:Math.min(b[0].presentationStartTime,da),c&&isNaN(U.getExpectedLiveEdge()))){var d=b[b.length-1],e=d.presentationStartTime,f=W.getMetricsFor(g.default.STREAM);U.setExpectedLiveEdge(e),W.updateManifestUpdateInfo(V.getCurrentManifestUpdate(f),{presentationStartTime:e})}}function F(a){if(!a)throw new Error("no representation");a.segments=null,B(a)}function I(a,b){var c=z.default.hasInitialization(a),d=z.default.hasSegments(a),e=ea?ea.getType():null,f=ea?ea.getStreamInfo().manifestInfo.isDynamic:null,g=void 0;if(a.segmentDuration||a.segments||F(a),a.segmentAvailabilityRange=null,a.segmentAvailabilityRange=U.calcSegmentAvailabilityRange(a,f),a.segmentAvailabilityRange.end0)for(k=0;k=i&&a-g0&&_("Index for "+g+" time "+b+" is "+aa),f=!n&&y(a),f?(d=new k.default,d.action=k.default.ACTION_COMPLETE,d.index=aa,d.mediaType=g,d.mediaInfo=ea.getMediaInfo(),_("Signal complete.",d)):(e=(0,A.getSegmentByIndex)(aa,a),d=K(e)),l&&j>=0&&(aa=a.segmentInfoType===i.default.SEGMENT_TIMELINE&&h?aa:j),d):null}function M(a,b){var c=(a.segmentAvailabilityRange.end-a.segmentAvailabilityRange.start)/2;return a.segments=null,a.segmentAvailabilityRange={start:b-c,end:b+c},L(a,b,{keepIdx:!1,ignoreIsFinished:!0})}function N(a){var b=void 0,c=void 0,d=void 0,e=ea?ea.getType():null,f=ea?ea.getStreamInfo().manifestInfo.isDynamic:null;return a&&-1!==aa?(ba=null,aa++,_("Getting the next request at index: "+aa),!(0,A.getSegmentByIndex)(aa,a)&&f?(_("No segment found at index: "+aa+". Wait for next loop"),B(a),aa--,null):(d=y(a),d?(b=new k.default,b.action=k.default.ACTION_COMPLETE,b.index=aa,b.mediaType=e,b.mediaInfo=ea.getMediaInfo(),_("Signal complete.")):(B(a),c=(0,A.getSegmentByIndex)(aa,a),b=K(c),!c&&f&&aa--),b)):null}function O(a){var b=a.representation;b.segments&&R.trigger(p.default.REPRESENTATION_UPDATED,{sender:this,representation:b})}function P(a){var b=ea?ea.getType():null,c=ea?ea.getStreamInfo().manifestInfo.isDynamic:null;if(!a.error&&b===a.mediaType){var d=a.segments,e=a.representation,f=[],g=0,h=void 0,i=void 0,j=void 0,k=void 0;for(h=0,i=d.length;h=0;){if(b[e].responsecode){c=b[e];break}e--}return c}function m(a){return a&&a.HttpList?a.HttpList:[]}function n(a,b){if(!a)return null;var c=a[b];if(!c)return null;var d=c.length;return d<=0?null:c[d-1]}function o(a){return n(a,j.default.DROPPED_FRAMES)}function p(a){return n(a,j.default.SCHEDULING_INFO)}function q(a){return n(a,j.default.MANIFEST_UPDATE)}function r(a){return n(a,j.default.DVR_INFO)}function s(a,b){var c={},d=void 0,e=void 0,g=void 0;for(d=m(a),g=d.length-1;g>=0;g--)if(e=d[g],e.type===f.HTTPRequest.MPD_TYPE){c=u(e._responseHeaders);break}return void 0===c[b]?null:c[b]}function t(a,b){var c={},d=l(a);return d&&(c=u(d._responseHeaders)),void 0===c[b]?null:c[b]}function u(a){var b={};if(!a)return b;for(var c=a.trim().split("\r\n"),d=0,e=c.length;d0&&(b[f.substring(0,g)]=f.substring(g+2))}return b}function v(a,b){var c=w(a,b,!0);return null!==c?c:-1}function w(a,b,c){var d=void 0,e=void 0,f=void 0,g=void 0,h=void 0,i=void 0;if(a)for(e=a.AdaptationSet_asArray,h=0;h0&&(l=1===i[0].reference_type),l?function(){r("Initiate multiple SIDX load."),p.range.end=p.range.start+k.size;var c=void 0,d=void 0,f=void 0,h=void 0,j=void 0,l=[],m=0,n=(k.offset||p.range.start)+k.size,o=function(c){c?(l=l.concat(c),++m>=d&&g(l,a,b)):g(null,a,b)};for(c=0,d=i.length;ce&&(h=e),N=t(h),J=a,c!==g.default.VIDEO&&c!==g.default.AUDIO&&c!==g.default.FRAGMENTED_TEXT)return L=!1,void H.trigger(o.default.DATA_UPDATE_COMPLETED,{sender:this,data:J,currentRepresentation:N});for(var k=0;k0)return s(),A(l),n=new k.default(F,"Segments update failed",null),void H.trigger(o.default.DATA_UPDATE_COMPLETED,{sender:this,data:J,currentRepresentation:N,error:n});if(e){for(var t=0;t0&&a.Representation_asArray[0].hasOwnProperty(i.default.CODECS)&&(j=a.Representation_asArray[0].codecs,0===j.search(g.default.STPP)||0===j.search(g.default.WVTT)))return b===g.default.FRAGMENTED_TEXT;if(f){if(f.length>1)return b===g.default.MUXED;f[0]&&f[0].contentType===b&&(k=!0,l=!0)}if(a.hasOwnProperty(i.default.MIME_TYPE)&&(k=h.test(a.mimeType),l=!0),!l)for(c=0,d=a.Representation_asArray&&a.Representation_asArray.length?a.Representation_asArray.length:0;!l&&c1&&d){for(var f=ha.getCurrentTrackFor(c,d),g=ja.getAllMediaInfoForType(d,c),h=0,i=e.length;h0){var c=la(b)&&b>=0&&b0?a.Representation_asArray[0].mimeType:null}function J(a){return a&&a.hasOwnProperty(i.default.CENC_DEFAULT_KID)?a[i.default.CENC_DEFAULT_KID]:null}function K(a){return a&&a.hasOwnProperty(i.default.CONTENTPROTECTION_ASARRAY)&&0!==a.ContentProtection_asArray.length?a.ContentProtection_asArray:null}function L(a){var b=!1;return a&&a.hasOwnProperty("type")&&(b=a.type===i.default.DYNAMIC),b}function M(a,b){var c=!1;return a&&a.profiles&&a.profiles.length>0&&(c=-1!==a.profiles.indexOf(b)),c}function N(a){return M(a,ka)}function O(a){return a&&a.hasOwnProperty(i.default.MEDIA_PRESENTATION_DURATION)?a.mediaPresentationDuration:Number.MAX_SAFE_INTEGER||Number.MAX_VALUE}function P(a){return a&&a.bandwidth?a.bandwidth:NaN}function Q(a){var b=arguments.length<=1||void 0===arguments[1]?0:arguments[1],c=NaN;return a&&a.hasOwnProperty(i.default.MINIMUM_UPDATE_PERIOD)&&(c=a.minimumUpdatePeriod),isNaN(c)?c:Math.max(c-b,1)}function R(a){return a&&a.Representation_asArray&&a.Representation_asArray.length?a.Representation_asArray.length:0}function S(a){if(!a||!a.Representation_asArray||!a.Representation_asArray.length)return null;var b=z(a),c=b.Representation_asArray,d=c.length,e=[],f=0;for(f=0;f0&&la(a)?b.Representation_asArray[a]:null}function U(a){var b=[],c=void 0,d=void 0,e=void 0,f=void 0,g=void 0,h=void 0,l=void 0;if(a&&a.period&&la(a.period.index)){var m=a.period.mpd.manifest.Period_asArray[a.period.index];m&&m.AdaptationSet_asArray&&la(a.index)&&(f=z(m.AdaptationSet_asArray[a.index]))}for(h=0;f&&h=0)&&(c.useCalculatedLiveEdgeTime=!0)):(c.segmentInfoType=i.default.SEGMENT_LIST,c.useCalculatedLiveEdgeTime=!0)):g.hasOwnProperty(i.default.SEGMENT_TEMPLATE)?(e=g.SegmentTemplate,e.hasOwnProperty(i.default.SEGMENT_TIMELINE)?(c.segmentInfoType=i.default.SEGMENT_TIMELINE,l=e.SegmentTimeline.S_asArray[e.SegmentTimeline.S_asArray.length-1],(!l.hasOwnProperty("r")||l.r>=0)&&(c.useCalculatedLiveEdgeTime=!0)):c.segmentInfoType=i.default.SEGMENT_TEMPLATE,e.hasOwnProperty(i.default.INITIALIZATION_MINUS)&&(c.initialization=e.initialization.split("$Bandwidth$").join(g.bandwidth).split("$RepresentationID$").join(g.id))):c.segmentInfoType=i.default.BASE_URL,e&&(e.hasOwnProperty(i.default.INITIALIZATION)?(d=e.Initialization,d.hasOwnProperty(i.default.SOURCE_URL)?c.initialization=d.sourceURL:d.hasOwnProperty(i.default.RANGE)&&(c.range=d.range)):g.hasOwnProperty(i.default.MIME_TYPE)&&j(g.mimeType)&&(c.range=0),e.hasOwnProperty(i.default.TIMESCALE)&&(c.timescale=e.timescale),e.hasOwnProperty(i.default.DURATION)&&(c.segmentDuration=e.duration/c.timescale),e.hasOwnProperty(i.default.START_NUMBER)&&(c.startNumber=e.startNumber),e.hasOwnProperty(i.default.INDEX_RANGE)&&(c.indexRange=e.indexRange),e.hasOwnProperty(i.default.PRESENTATION_TIME_OFFSET)&&(c.presentationTimeOffset=e.presentationTimeOffset/c.timescale)),c.MSETimeOffset=ia.calcMSETimeOffset(c),c.path=[a.period.index,a.index,h],b.push(c);return b}function V(a){var b=a&&la(a.index)?a.mpd.manifest.Period_asArray[a.index]:null,f=[],j=void 0,k=void 0,l=void 0;if(b&&b.AdaptationSet_asArray)for(l=0;l0&&"__proto__"!==a.id&&(c=a.id),c}function Y(a){var b=new q.default;return a&&(b.manifest=a,a.hasOwnProperty(i.default.AVAILABILITY_START_TIME)?b.availabilityStartTime=new Date(a.availabilityStartTime.getTime()):b.availabilityStartTime=new Date(a.loadedTime.getTime()),a.hasOwnProperty(i.default.AVAILABILITY_END_TIME)&&(b.availabilityEndTime=new Date(a.availabilityEndTime.getTime())),a.hasOwnProperty(i.default.MINIMUM_UPDATE_PERIOD)&&(b.minimumUpdatePeriod=a.minimumUpdatePeriod),a.hasOwnProperty(i.default.MEDIA_PRESENTATION_DURATION)&&(b.mediaPresentationDuration=a.mediaPresentationDuration),a.hasOwnProperty(g.default.SUGGESTED_PRESENTATION_DELAY)&&(b.suggestedPresentationDelay=a.suggestedPresentationDelay),a.hasOwnProperty(i.default.TIMESHIFT_BUFFER_DEPTH)&&(b.timeShiftBufferDepth=a.timeShiftBufferDepth),a.hasOwnProperty(i.default.MAX_SEGMENT_DURATION)&&(b.maxSegmentDuration=a.maxSegmentDuration)),b}function Z(a){var b=L(a.mpd.manifest),c=void 0;if(a.mpd.manifest.mediaPresentationDuration)c=a.mpd.manifest.mediaPresentationDuration;else if(a.duration)c=a.duration;else{if(!b)throw new Error("Must have @mediaPresentationDuratio on MPD or an explicit @duration on the last period.");c=Number.POSITIVE_INFINITY}return c}function $(a){var b=a&&a.mpd&&a.mpd.manifest?a.mpd.manifest:null,c=b?b.Period_asArray:null,d=c&&a&&la(a.index)?c[a.index].EventStream_asArray:null,e=[],f=void 0,h=void 0;if(d)for(f=0;f=0}return!1},function(a){return String(a)})}return g(b,a),b}(j.default);c.default=m,b.exports=c.default},{61:61,69:69}],74:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){a&&a.boxParser&&(d=a.boxParser)}function b(a){if(!d)throw new Error("boxParser is undefined");if(!a)return{sampleList:[],lastSequenceNumber:NaN,totalDuration:NaN,numSequences:NaN};var b=d.parse(a),c=b.getBoxes("moof"),e=b.getBoxes("mfhd"),f=void 0,g=void 0,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0,m=void 0,n=void 0,o=void 0,p=void 0,q=void 0,r=void 0,s=void 0,t=void 0,u=void 0,v=void 0;u=b.getBoxes("moof").length,t=e[e.length-1].sequence_number,h=0,k=[];var w=-1,x=-1;for(p=0;px&&(w++,x+=H.entries[w].sample_delta),m==x){G.subSizes=[];var I=H.entries[w];for(r=0;re):d=!0,d}var f=this.context,h=void 0,i=void 0,j=void 0,l=void 0;return h={getSegments:d},c(),h}Object.defineProperty(c,"__esModule",{value:!0});var f=a(61),g=d(f),h=a(51),i=d(h),j=a(80),k=d(j),l=a(78),m=d(l),n=a(75),o=d(n);e.__dashjs_factory_name="SegmentsGetter";var p=i.default.getClassFactory(e);c.default=p,b.exports=c.default},{51:51,61:61,75:75,78:78,80:80}],77:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){for(;a.lengthf&&h0?(p=j(e,c),o=p?a.calcPeriodRelativeTimeFromMpdRelativeTime(c,p.presentationStartTime):e>0?e*g:a.calcPeriodRelativeTimeFromMpdRelativeTime(c,d)):o=e>0?e*g:b?k.end:k.start,q=Math.floor(Math.max(o-m,k.start)/g),r=Math.floor(Math.min(q+n/g,k.end/g)),{start:q,end:r})}Object.defineProperty(c,"__esModule",{value:!0}),c.replaceTokenForTemplate=g,c.getIndexBasedSegment=h,c.getTimeBasedSegment=i,c.getSegmentByIndex=j,c.decideSegmentListRangeForTemplate=k;var l=a(88),m=d(l)},{88:88}],78:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){function c(a,c,e,f){var g=a.adaptation.period.mpd.manifest.Period_asArray[a.adaptation.period.index].AdaptationSet_asArray[a.adaptation.index].Representation_asArray[a.index].SegmentTemplate,i=a.segmentDuration,j=a.segmentAvailabilityRange,k=[],l=null,m=null,n=void 0,o=void 0,p=void 0,q=void 0,r=void 0;for(r=a.startNumber,n=isNaN(i)&&!b?{start:r,end:r}:(0,h.decideSegmentListRangeForTemplate)(d,b,a,c,e,f),p=n.start,q=n.end,o=p;o<=q;o++)m=(0,h.getIndexBasedSegment)(d,b,a,o),m.replacementTime=(r+o-1)*a.segmentDuration,l=g.media,l=(0,h.replaceTokenForTemplate)(l,"Number",m.replacementNumber),l=(0,h.replaceTokenForTemplate)(l,"Time",m.replacementTime),m.media=l,k.push(m),m=null;return isNaN(i)?a.availableSegmentsNumber=1:a.availableSegmentsNumber=Math.ceil((j.end-j.start)/i),k}var d=a.timelineConverter;return{getSegments:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(77);e.__dashjs_factory_name="TemplateSegmentsGetter";var i=g.default.getClassFactory(e);c.default=i,b.exports=c.default},{51:51,77:77}],79:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){u(),x.on(i.default.TIME_SYNCHRONIZATION_COMPLETED,s,this)}function b(){return z}function c(a){z=a}function d(){return y}function e(a){y=a}function f(){return A}function h(a){A=a}function j(a,b,c,d){return d?c&&b.timeShiftBufferDepth!=Number.POSITIVE_INFINITY?new Date(b.availabilityStartTime.getTime()+1e3*(a+b.timeShiftBufferDepth)):b.availabilityEndTime:c?new Date(b.availabilityStartTime.getTime()+1e3*(a-y)):b.availabilityStartTime}function k(a,b,c){return j.call(this,a,b,c)}function l(a,b,c){return j.call(this,a,b,c,!0)}function m(a,b){return(a.getTime()-b.mpd.availabilityStartTime.getTime()+1e3*y)/1e3}function n(a,b){return a+(b.adaptation.period.start-b.presentationTimeOffset)}function o(a,b){return a-b.adaptation.period.start+b.presentationTimeOffset}function p(a,b){var c=void 0,d=void 0,e=void 0;return b&&(c=a.representation.adaptation.period.mpd.suggestedPresentationDelay,d=a.presentationStartTime+c,e=new Date(a.availabilityStartTime.getTime()+1e3*d)),e}function q(a,b){var c=a.adaptation.period,d={start:c.start,end:c.start+c.duration};if(!b)return d;if(!z&&a.segmentAvailabilityRange)return a.segmentAvailabilityRange;var e=a.segmentDuration||(a.segments&&a.segments.length?a.segments[a.segments.length-1].duration:0),f=m(new Date,c),g=c.start+c.duration;return d.start=Math.max(f-c.mpd.timeShiftBufferDepth,c.start),d.end=f>=g&&f-e0,m=void 0;m=g||(f>-1||null!==d?10:1/0);var n=0,o=0,p=-1,q=[],r=null,s=void 0,t=void 0,u=void 0,v=void 0,w=void 0,x=void 0,y=void 0,z=void 0,A=void 0,B=void 0,C=void 0,D=function(c,d){var f=i.media,g=c.mediaRange;return k&&(f=k[d].media||"",g=k[d].mediaRange),(0,h.getTimeBasedSegment)(e,b,a,n,c.d,C,f,g,p,c.tManifest)};for(C=a.timescale,s=j.S_asArray,B=f,null!==d&&(r=e.calcMediaTimeFromPresentationTime(d,a)),u=0,v=s.length;um){if(A=!0,l)break}else null!==r?o>=r-t.d/C*1.5&&q.push(D(t,p)):p>=B&&q.push(D(t,p)),n+=t.d,o=n/C}return l||(a.availableSegmentsNumber=p+1),q}a=a||{};var e=a.timelineConverter;return{getSegments:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(77);e.__dashjs_factory_name="TimelineSegmentsGetter";var i=g.default.getClassFactory(e);c.default=i,b.exports=c.default},{51:51,77:77}],81:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.period=null,this.index=-1,this.type=null};c.default=e,b.exports=c.default},{}],82:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=1,f=1,g=function a(b,c,g,h){d(this,a),this.url=b||"",this.serviceLocation=c||b||"",this.dvb_priority=g||e,this.dvb_weight=h||f};g.DEFAULT_DVB_PRIORITY=e,g.DEFAULT_DVB_WEIGHT=f,c.default=g,b.exports=c.default},{}],83:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.duration=NaN,this.presentationTime=NaN,this.id=NaN,this.messageData="",this.eventStream=null,this.presentationTimeDelta=NaN};c.default=e,b.exports=c.default},{}],84:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.adaptionSet=null,this.representation=null,this.period=null,this.timescale=1,this.value="",this.schemeIdUri=""};c.default=e,b.exports=c.default},{}],85:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.manifest=null,this.suggestedPresentationDelay=0,this.availabilityStartTime=null,this.availabilityEndTime=Number.POSITIVE_INFINITY,this.timeShiftBufferDepth=Number.POSITIVE_INFINITY,this.maxSegmentDuration=Number.POSITIVE_INFINITY,this.minimumUpdatePeriod=NaN,this.mediaPresentationDuration=NaN};c.default=e,b.exports=c.default},{}],86:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.id=null,this.index=-1,this.duration=NaN,this.start=NaN,this.mpd=null};e.DEFAULT_ID="defaultId",c.default=e,b.exports=c.default},{}],87:[function(a,b,c){"use strict";function d(a){ +return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=function(){function a(a,b){for(var c=0;c-1?(y?(b=y.createMssParser(),y.registerEvents()):A.manifestError("manifest type unsupported","createParser"),b):a.indexOf("MPD")>-1?(0,z.default)(h).create({errorHandler:A}):b}function e(a){var b=new o.default(a,r.HTTPRequest.MPD_TYPE);u.load({request:b,success:function(b,c,e){var f=void 0,h=void 0;if(e.responseURL&&e.responseURL!==a?(h=l.parseBaseUrl(e.responseURL),f=e.responseURL):(l.isRelative(a)&&(a=l.resolve(a,window.location.href)),h=l.parseBaseUrl(a)),null===x&&(x=d(b)),null===x)return void j.trigger(v.default.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new q.default(C,"Failed detecting manifest type: "+a)});w.setMatchers(x.getMatchers()),w.setIron(x.getIron());var i=x.parse(b);i?(i.url=f||a,i.originalUrl||(i.originalUrl=i.url),i.hasOwnProperty(g.default.LOCATION)&&(h=l.parseBaseUrl(i.Location_asArray[0]),p("BaseURI set by Location to: "+h)),i.baseUri=h,i.loadedTime=new Date,w.resolveManifestOnLoad(i)):j.trigger(v.default.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new q.default(C,E)})},error:function(b,c,d){j.trigger(v.default.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new q.default(D,"Failed loading manifest: "+a+", "+d)})}})}function f(){j.off(v.default.XLINK_READY,c,s),w&&(w.reset(),w=null),u&&(u.abort(),u=null),y&&y.reset()}a=a||{};var h=this.context,j=(0,t.default)(h).getInstance(),l=(0,m.default)(h).getInstance(),n=(0,B.default)(h).getInstance(),p=n.log,s=void 0,u=void 0,w=void 0,x=void 0,y=a.mssHandler,A=a.errHandler;return s={load:e,reset:f},b(),s}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(116),i=d(h),j=a(98),k=d(j),l=a(204),m=d(l),n=a(219),o=d(n),p=a(209),q=d(p),r=a(226),s=a(50),t=d(s),u=a(54),v=d(u),w=a(51),x=d(w),y=a(64),z=d(y),A=a(49),B=d(A),C=1,D=2,E="parsing failed";e.__dashjs_factory_name="ManifestLoader";var F=x.default.getClassFactory(e);F.MANIFEST_LOADER_ERROR_PARSING_FAILURE=C,F.MANIFEST_LOADER_ERROR_LOADING_FAILURE=D,x.default.updateClassFactory(e.__dashjs_factory_name,F),c.default=F,b.exports=c.default},{100:100,116:116,204:204,209:209,219:219,226:226,49:49,50:50,51:51,54:54,64:64,98:98}],92:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){a&&(a.manifestModel&&(z=a.manifestModel),a.dashManifestModel&&(A=a.dashManifestModel),a.mediaPlayerModel&&(B=a.mediaPlayerModel),a.manifestLoader&&(y=a.manifestLoader))}function b(){d(),t.on(i.default.STREAMS_COMPOSED,q,this),t.on(i.default.PLAYBACK_STARTED,o,this),t.on(i.default.PLAYBACK_PAUSED,p,this),t.on(i.default.INTERNAL_MANIFEST_LOADED,n,this)}function c(a){k(a)}function d(){u=NaN,x=!1,w=!0,f()}function e(){t.off(i.default.PLAYBACK_STARTED,o,this),t.off(i.default.PLAYBACK_PAUSED,p,this),t.off(i.default.STREAMS_COMPOSED,q,this),t.off(i.default.INTERNAL_MANIFEST_LOADED,n,this),d()}function f(){null!==v&&(clearInterval(v),v=null)}function h(){f(),isNaN(u)||(s("Refresh manifest in "+u+" seconds."),v=setTimeout(l,1e3*u))}function j(){x=!0;var a=z.getValue(),b=a.url,c=A.getLocation(a);c&&(b=c),y.load(b)}function k(a){z.setValue(a);var b=new Date,c=(b.getTime()-a.loadedTime.getTime())/1e3;u=A.getManifestUpdatePeriod(a,c),t.trigger(i.default.MANIFEST_UPDATED,{manifest:a}),s("Manifest has been refreshed at "+b+"["+b.getTime()/1e3+"] "),w||h()}function l(){w&&!B.getScheduleWhilePaused()||x||j()}function n(a){a.error||k(a.manifest)}function o(){w=!1,h()}function p(){w=!0,f()}function q(){x=!1}var r=this.context,s=(0,m.default)(r).getInstance().log,t=(0,g.default)(r).getInstance(),u=void 0,v=void 0,w=void 0,x=void 0,y=void 0,z=void 0,A=void 0,B=void 0;return{initialize:b,setManifest:c,refreshManifest:j,setConfig:a,reset:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(50),g=d(f),h=a(54),i=d(h),j=a(51),k=d(j),l=a(49),m=d(l);e.__dashjs_factory_name="ManifestUpdater",c.default=k.default.getClassFactory(e),b.exports=c.default},{49:49,50:50,51:51,54:54}],93:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){Dc=!1,Ec=!1,Fc=!0,Jc=null,Cc=null,Mc=null,Y.default.extend($.default),Oc=(0,I.default)(wc).getInstance()}function b(a){a&&(a.capabilities&&(Qc=a.capabilities),a.streamController&&(Rc=a.streamController),a.playbackController&&(Sc=a.playbackController),a.mediaPlayerModel&&(Oc=a.mediaPlayerModel),a.abrController&&(Gc=a.abrController),a.mediaController&&(Ic=a.mediaController))}function c(a,b,c){if(Qc||(Qc=(0,w.default)(wc).getInstance()),Pc=(0,u.default)(wc).getInstance(),!Qc.supportsMediaSource())return void Pc.capabilityError("mediasource");Dc||(Dc=!0,Hc=(0,ja.default)(wc).getInstance(),Gc||(Gc=(0,M.default)(wc).getInstance()),Sc||(Sc=(0,m.default)(wc).getInstance()),Ic||(Ic=(0,q.default)(wc).getInstance()),Mc=(0,da.default)(wc).getInstance(),Uc=(0,fa.default)(wc).getInstance({mediaController:Ic,timelineConverter:Hc,adapter:Mc}),Vc=(0,G.default)(wc).getInstance(),Tc=(0,ha.default)(wc).getInstance({manifestModel:Vc,dashManifestModel:Uc}),Nc=(0,K.default)(wc).getInstance(),Xc=(0,C.default)(wc).getInstance(),Yc=(0,S.default)(wc).getInstance({mediaPlayerModel:Oc}),Mc.setConfig({dashManifestModel:Uc}),Nc.setConfig({adapter:Mc}),$a(),Ca(void 0===c||c),a&&Ib(a),b&&ac(b),zc("[dash.js "+j()+"] MediaPlayer has been initialized"))}function d(){ac(null),Ib(null),Cc=null,Jc&&(Jc.reset(),Jc=null),Kc&&(Kc.reset(),Kc=null)}function e(){return!!Wc&&!!Bc}function f(a,b,c){xc.on(a,b,c)}function h(a,b,c){xc.off(a,b,c)}function j(){return(0,ba.getVersionString)()}function l(){return yc}function n(){if(!Ec)throw sc;(!Fc||r()&&Ec)&&Sc.play()}function p(){if(!Ec)throw sc;Sc.pause()}function r(){if(!Ec)throw sc;return Sc.isPaused()}function t(a){if(!Ec)throw sc;var b=Sc.getIsDynamic()?P(a):a;Sc.seek(b)}function v(){if(!Ec)throw sc;return Sc.isSeeking()}function x(){if(!Ec)throw sc;return Sc.getIsDynamic()}function z(a){if(!Wc)throw tc;Fb().playbackRate=a}function B(){if(!Wc)throw tc;return Fb().playbackRate}function D(a){if(!Wc)throw tc;Fb().muted=a}function F(){if(!Wc)throw tc;return Fb().muted}function H(a){if(!Wc)throw tc;Fb().volume=a}function J(){if(!Wc)throw tc;return Fb().volume}function L(a){var b=[g.default.VIDEO,g.default.AUDIO,g.default.FRAGMENTED_TEXT];if(a){if(-1!==b.indexOf(a)){var c=ub().getCurrentBufferLevel(vb(a));return c||NaN}return zc("Warning - getBufferLength requested for invalid type"),NaN}var c=b.map(function(a){return Nb(a).length>0?ub().getCurrentBufferLevel(vb(a)):Number.MAX_VALUE}).reduce(function(a,b){return Math.min(a,b)});return c===Number.MAX_VALUE?NaN:c}function N(){var a=oc();return a?a.manifestInfo.DVRWindowSize:0}function P(a){var b=oc(),c=Sc.getLiveDelay();if(!b)return 0;var d=b.range.start+a;return d>b.range.end-c&&(d=b.range.end-c),d}function R(a){if(!Ec)throw sc;var b=Fb().currentTime;if(void 0!==a)b=Rc.getTimeRelativeToStreamId(b,a);else if(Sc.getIsDynamic()){var c=oc();b=null===c?0:T()-(c.range.end-c.time)}return b}function T(){if(!Ec)throw sc;var a=Fb().duration;if(Sc.getIsDynamic()){var b=oc(),c=void 0;if(!b)return 0;c=b.range.end-b.range.start,a=c0?(b--,p.push(setTimeout(function(){c(a,b)},j.getRetryIntervalForType(d.type)))):(h.downloadError(q[d.type],d.url,d),a.error&&a.error(d,"error",e.statusText),a.complete&&a.complete(d,e.statusText))))},w=function(b){var c=new Date;k&&(k=!1,(!b.lengthComputable||b.lengthComputable&&b.total!==b.loaded)&&(d.firstByteDate=c)),b.lengthComputable&&(d.bytesLoaded=b.loaded,d.bytesTotal=b.total),f.push({s:s,d:c.getTime()-s.getTime(),b:[b.loaded?b.loaded-t:0]}),s=c,t=b.loaded,a.progress&&a.progress()},x=function(){e.status>=200&&e.status<=299&&(u(!0),a.success&&a.success(e.response,e.statusText,e),a.complete&&a.complete(d,e.statusText))},y=function(){a.abort&&a.abort(d,e.status)};if(!l||!i||!h)throw new Error("config object is not correct or missing");try{var z=l.modifyRequestURL(d.url),A=d.checkExistenceOnly?g.HTTPRequest.HEAD:g.HTTPRequest.GET;e.open(A,z,!0),d.responseType&&(e.responseType=d.responseType),d.range&&e.setRequestHeader("Range","bytes="+d.range),d.requestStartDate||(d.requestStartDate=r),e=l.modifyRequestHeader(e),e.withCredentials=j.getXHRWithCredentialsForType(d.type),e.onload=x,e.onloadend=v,e.onerror=v,e.onprogress=w,e.onabort=y;var B=(new Date).getTime();isNaN(d.delayLoadingTime)||B>=d.delayLoadingTime?(n.push(e),e.send()):function(){var a={xhr:e};o.push(a),a.delayTimeout=setTimeout(function(){if(-1!==o.indexOf(a)){o.splice(o.indexOf(a),1);try{r=new Date,s=r,n.push(a.xhr),a.xhr.send()}catch(b){a.xhr.onerror()}}},d.delayLoadingTime-B)}()}catch(C){e.onerror()}}function d(a){a.request&&c(a,j.getRetryAttemptsForType(a.request.type))}function f(){p.forEach(function(a){return clearTimeout(a)}),p=[],o.forEach(function(a){return clearTimeout(a.delayTimeout)}),o=[],n.forEach(function(a){a.onloadend=a.onerror=a.onprogress=void 0,a.abort()}),n=[]}a=a||{};var h=a.errHandler,i=a.metricsModel,j=a.mediaPlayerModel,l=a.requestModifier,m=void 0,n=void 0,o=void 0,p=void 0,q=void 0;return m={load:d,abort:f},b(),m}Object.defineProperty(c,"__esModule",{value:!0});var g=a(226),h=a(51),i=d(h),j=a(197),k=d(j);f.__dashjs_factory_name="XHRLoader";var l=i.default.getClassFactory(f);c.default=l,b.exports=c.default},{197:197,226:226,51:51}],99:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b,c){var e=function(d,e){b.resolved=!0,b.resolvedContent=d||null,f.trigger(p.default.XLINK_ELEMENT_LOADED,{element:b,resolveObject:c,error:d||e?null:new g.default(s,"Failed loading Xlink element: "+a)})};if(a===d)e(null,!0);else{var i=new l.default(a,j.HTTPRequest.XLINK_TYPE);h.load({request:i,success:function(a){e(a)},error:function(){e(null)}})}}function c(){h&&(h.abort(),h=null)}a=a||{};var d="urn:mpeg:dash:resolve-to-zero:2013",e=this.context,f=(0,n.default)(e).getInstance(),h=(0,i.default)(e).create({errHandler:a.errHandler,metricsModel:a.metricsModel,mediaPlayerModel:a.mediaPlayerModel,requestModifier:a.requestModifier});return{load:b,reset:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(209),g=d(f),h=a(98),i=d(h),j=a(226),k=a(219),l=d(k),m=a(50),n=d(m),o=a(54),p=d(o),q=a(51),r=d(q),s=1;e.__dashjs_factory_name="XlinkLoader";var t=r.default.getClassFactory(e);t.XLINK_LOADER_ERROR_LOADING_FAILURE=s,r.default.updateClassFactory(e.__dashjs_factory_name,t),c.default=t,b.exports=c.default},{209:209,219:219,226:226,50:50,51:51,54:54,98:98}],100:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;cg&&(i=g),Ra[a].push({oldValue:d,newValue:i}),i>y.default.NO_CHANGE&&i!=d)(Da[a].state===J||i>d)&&Z(a,d,i,g,h.reason);else if(ra.getLogToBrowserConsole()){var j=Wa.getCurrentBufferLevel(Va.getReadOnlyMetricsFor(a));ua("AbrController ("+a+") stay on "+d+"/"+g+" (buffer: "+j+")")}}}}function Y(a,b,c,d){var e=b.id,f=ha(a);if(null===c||isNaN(c)||c%1!=0)throw new Error("argument is not an integer");var g=n(a,e);c!==f&&c>=0&&c<=g&&Z(a,f,c,g,d)}function Z(a,b,c,d,e){if(a&&Ca[a]){var f=Ca[a].getStreamInfo(),g=f?f.id:null;if(ra.getLogToBrowserConsole()){var h=Wa.getCurrentBufferLevel(Va.getReadOnlyMetricsFor(a));ua("AbrController ("+a+") switch from "+b+" to "+c+"/"+d+" (buffer: "+h+") "+(e?JSON.stringify(e):"."))}ia(a,g,c),sa.trigger(s.default.QUALITY_CHANGE_REQUESTED,{mediaType:a,streamInfo:f,oldQuality:b,newQuality:c,reason:e})}}function $(a,b){Da[a].state=b}function _(a){return Da[a]?Da[a].state:null}function aa(a,b,c){if(Xa&&c&&Ca[a.type].getCurrentRepresentationInfo()&&Ca[a.type].getCurrentRepresentationInfo().fragmentDuration){c/=1e3;var d=Ca[a.type].getCurrentRepresentationInfo().fragmentDuration;if(c>d)return 0;b*=1-c/d}var e=ba(a);if(!e||0===e.length)return M;for(var f=e.length-1;f>=0;f--){if(1e3*b>=e[f].bitrate)return f}return 0}function ba(a){if(!a||!a.bitrateList)return null;for(var b=a.bitrateList,c=a.type,d=[],e=void 0,f=0,g=b.length;f(g?f:e);Ua[a]=h,h!==g&&ua(h?"AbrController ("+a+") switching from throughput to buffer occupancy ABR rule (buffer: "+b.toFixed(3)+").":"AbrController ("+a+") switching from buffer occupancy to throughput ABR rule (buffer: "+b.toFixed(3)+").")}function da(a){return Ua[a]}function ea(){return Ta}function fa(a){var b=a.type,c=a.streamInfo.id,d=a.representationCount-1;return ja(b,c,d),d}function ga(a){var b=a.id,c=ha(i.default.AUDIO),d=ha(i.default.VIDEO);return c===n(i.default.AUDIO,b)&&d===n(i.default.VIDEO,b)}function ha(a){if(a&&Ca[a]){var b=Ca[a].getStreamInfo(),c=b?b.id:null;if(c)return za[c]=za[c]||{},za[c].hasOwnProperty(a)||(za[c][a]=M),za[c][a]}return M}function ia(a,b,c){za[b]=za[b]||{},za[b][a]=c}function ja(a,b,c){ya[b]=ya[b]||{},ya[b][a]=c}function ka(a,b){var c=a;if(!Ca[b])return c;var d=G(b);void 0!==d&&(c=Math.max(a,d));var e=D(b);return void 0!==e&&(c=Math.min(c,e)),c}function la(a,b,c){var d=N(b);return isNaN(d)||d>=1||d<0?a:Math.min(a,Math.round(c*d))}function ma(a){Ha=a}function na(){var a=Ga&&window.hasOwnProperty("devicePixelRatio"),b=a?window.devicePixelRatio:1;Ia=Na.getClientWidth()*b,Ja=Na.getClientHeight()*b}function oa(a,b){if(b!==i.default.VIDEO||!Fa||!Ca[b])return a;Ha||na();var c=Ka.getValue(),d=La.getAdaptationForType(c,0,b).Representation,e=a;if(Ia>0&&Ja>0){for(;e>0&&d[e]&&Ia=e&&d[e].width===d[e+1].width&&(e=Math.min(a,e+1))}return e}function pa(a){var b=a.request.mediaType;if(P(b)){var c=Ca[b];if(!c)return;var d=(0,w.default)(qa).create({abrController:ta,streamProcessor:c,currentRequest:a.request,useBufferOccupancyABR:da(b)}),e=va.shouldAbandonFragment(d);if(e.quality>y.default.NO_CHANGE){var f=c.getFragmentModel();f.getRequests({state:o.default.FRAGMENT_MODEL_LOADING,index:a.request.index})[0]&&(f.abortRequests(),$(b,I),Ra[b].reset(),Ra[b].push({oldValue:ha(b,wa.getActiveStreamInfo()),newValue:e.quality,confidence:1,reason:e.reason}),Y(b,wa.getActiveStreamInfo(),e.quality,e.reason),clearTimeout(Ea),Ea=setTimeout(function(){$(b,J),Ea=null},Oa.getAbandonLoadTimeout()))}}}var qa=this.context,ra=(0,H.default)(qa).getInstance(),sa=(0,q.default)(qa).getInstance(),ta=void 0,ua=void 0,va=void 0,wa=void 0,xa=void 0,ya=void 0,za=void 0,Aa=void 0,Ba=void 0,Ca=void 0,Da=void 0,Ea=void 0,Fa=void 0,Ga=void 0,Ha=void 0,Ia=void 0,Ja=void 0,Ka=void 0,La=void 0,Ma=void 0,Na=void 0,Oa=void 0,Pa=void 0,Qa=void 0,Ra=void 0,Sa=void 0,Ta=void 0,Ua=void 0,Va=void 0,Wa=void 0,Xa=void 0;return ta={isPlayingAtTopQuality:ga,updateTopQualityIndex:fa,getThroughputHistory:ea,getBitrateList:ba,getQualityForBitrate:aa,getMaxAllowedBitrateFor:v,getMinAllowedBitrateFor:x,setMaxAllowedBitrateFor:z,setMinAllowedBitrateFor:B,getMaxAllowedIndexFor:D,getMinAllowedIndexFor:G,getMaxAllowedRepresentationRatioFor:N,setMaxAllowedRepresentationRatioFor:O,getInitialBitrateFor:p,setInitialBitrateFor:r,getInitialRepresentationRatioFor:t,setInitialRepresentationRatioFor:u,setAutoSwitchBitrateFor:Q,getAutoSwitchBitrateFor:P,getUseDeadTimeLatency:V,setUseDeadTimeLatency:W,setLimitBitrateByPortal:S,getLimitBitrateByPortal:R,getUsePixelRatioInLimitBitrateByPortal:T,setUsePixelRatioInLimitBitrateByPortal:U,getQualityFor:ha,getAbandonmentStateFor:_,setPlaybackQuality:Y,checkPlaybackQuality:X,getTopQualityIndexFor:n,setElementSize:na,setWindowResizeEventCalled:ma,createAbrRulesCollection:d,registerStreamType:b,unRegisterStreamType:c,setConfig:h,reset:f},a(),ta}Object.defineProperty(c,"__esModule",{value:!0});var f=a(176),g=d(f),h=a(100),i=d(h),j=a(101),k=d(j),l=a(208),m=d(l),n=a(141),o=d(n),p=a(50),q=d(p),r=a(54),s=d(r),t=a(51),u=d(t),v=a(172),w=d(v),x=a(173),y=d(x),z=a(174),A=d(z),B=a(171),C=d(B),D=a(175),E=d(D),F=a(226),G=a(49),H=d(G),I="abandonload",J="allowload",K=1e3,L=100,M=0;e.__dashjs_factory_name="AbrController";var N=u.default.getSingletonFactory(e);N.ABANDON_LOAD=I,N.QUALITY_DEFAULT=M,u.default.updateSingletonFactory(e.__dashjs_factory_name,N),c.default=N,b.exports=c.default},{100:100,101:101,141:141,171:171,172:172,173:173,174:174,175:175,176:176,208:208,226:226,49:49,50:50,51:51,54:54}],104:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){r.invalidateSelectedIndexes(a.entry)}function b(){r=(0,g.default)(n).create(),t=(0,i.default)(n).create(),o.on(s.default.SERVICE_LOCATION_BLACKLIST_CHANGED,a,j)}function c(a){a.baseURLTreeModel&&(r=a.baseURLTreeModel),a.baseURLSelector&&(t=a.baseURLSelector),a.dashManifestModel&&(l=a.dashManifestModel)}function d(a){r.update(a),t.chooseSelectorFromManifest(a)}function e(a){var b=r.getForPath(a),c=b.reduce(function(a,b){var c=t.select(b);return c?(p.isRelative(c.url)?a.url=p.resolve(c.url,a.url):(a.url=c.url,a.serviceLocation=c.serviceLocation),a):new m.default},new m.default);if(!p.isRelative(c.url))return c}function f(){r.reset(),t.reset()}function h(a){r.setConfig({dashManifestModel:l}),t.setConfig({dashManifestModel:l}),d(a)}var j=void 0,l=void 0,n=this.context,o=(0,q.default)(n).getInstance(),p=(0,k.default)(n).getInstance(),r=void 0,t=void 0;return j={reset:f,initialize:h,resolve:e,setConfig:c},b(),j}Object.defineProperty(c,"__esModule",{value:!0});var f=a(140),g=d(f),h=a(191),i=d(h),j=a(204),k=d(j),l=a(82),m=d(l),n=a(51),o=d(n),p=a(50),q=d(p),r=a(54),s=d(r);e.__dashjs_factory_name="BaseURLController",c.default=o.default.getSingletonFactory(e),b.exports=c.default},{140:140,191:191,204:204,50:50,51:51,54:54,82:82}],105:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){return!!(g.length&&a&&a.length)&&-1!==g.indexOf(a)}function c(a){-1===g.indexOf(a)&&(g.push(a),h.trigger(j,{entry:a}))}function d(a){c(a.entry)}function e(){k&&h.on(k,d,this)}function f(){g=[]}a=a||{};var g=[],h=(0,i.default)(this.context).getInstance(),j=a.updateEventName,k=a.addBlacklistEventName;return e(),{add:c,contains:b,reset:f}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(50),i=d(h);e.__dashjs_factory_name="BlackListController",c.default=g.default.getClassFactory(e),b.exports=c.default},{50:50,51:51}],106:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){ua=(0,y.default)(fa).getInstance().log.bind(ta),Ja=(0,A.default)(fa).getInstance(),da()}function c(){return E}function d(a){aa(a),va=pa.getQualityFor(ra,sa.getStreamInfo());var b=navigator.userAgent.toLowerCase();Ma=/safari/.test(b)&&/mac/.test(b)&&!/chrome/.test(b)&&!/windows phone/.test(b),ga.on(s.default.DATA_UPDATE_COMPLETED,P,this),ga.on(s.default.INIT_FRAGMENT_LOADED,h,this),ga.on(s.default.MEDIA_FRAGMENT_LOADED,l,this),ga.on(s.default.QUALITY_CHANGE_REQUESTED,r,this),ga.on(s.default.STREAM_COMPLETED,Q,this),ga.on(s.default.PLAYBACK_PROGRESS,w,this),ga.on(s.default.PLAYBACK_TIME_UPDATED,w,this),ga.on(s.default.PLAYBACK_RATE_CHANGED,V,this),ga.on(s.default.PLAYBACK_SEEKING,t,this),ga.on(s.default.WALLCLOCK_TIME_UPDATED,S,this),ga.on(s.default.CURRENT_TRACK_CHANGED,R,this,q.default.EVENT_PRIORITY_HIGH),ga.on(s.default.SOURCEBUFFER_APPEND_COMPLETED,p,this),ga.on(s.default.SOURCEBUFFER_REMOVE_COMPLETED,N,this),Ma&&ga.on(s.default.PLAYBACK_SEEKED,T,this)}function e(a){if(!a||!za||!sa)return null;var b=null;try{b=ja.createSourceBuffer(za,a),b&&b.hasOwnProperty(g.default.INITIALIZE)&&b.initialize(ra,sa)}catch(c){ka.mediaSourceError("Error creating "+ra+" source buffer.")}return $(b),O(sa.getRepresentationInfoForQuality(va).MSETimeOffset),b}function f(){return!(!sa||!la)&&sa.getStreamInfo().id===la.getActiveStreamInfo().id}function h(a){a.fragmentModel===sa.getFragmentModel()&&(ua("Init fragment finished loading saving to",ra+"'s init cache"),Ja.save(a.chunk),n(a.chunk))}function j(a,b){var c=Ja.extract(a,b);c?n(c):ga.trigger(s.default.INIT_REQUESTED,{sender:ta})}function l(a){if(a.fragmentModel===sa.getFragmentModel()){var b=a.chunk,c=b.bytes,d=b.quality,e=sa.getRepresentationInfoForQuality(d),f=na.getEventsFor(e.mediaInfo,sa),g=na.getEventsFor(e,sa);if(f&&f.length>0||g&&g.length>0){var h=sa.getFragmentModel().getRequests({state:i.default.FRAGMENT_MODEL_EXECUTED,quality:d,index:b.index})[0],j=I(c,h,f,g);sa.getEventController().addInbandEvents(j)}n(b)}}function n(a){Ha=!0,Ea=a,ja.append(Ca,a),a.mediaInfo.type===g.default.VIDEO&&ga.trigger(s.default.VIDEO_CHUNK_RECEIVED,{chunk:a})}function p(a){if(Ca===a.buffer){if(a.error)return a.error.code===k.default.QUOTA_EXCEEDED_ERROR_CODE&&(ya=.8*ja.getTotalBufferedTime(Ca)),void(a.error.code!==k.default.QUOTA_EXCEEDED_ERROR_CODE&&J()||(ga.trigger(s.default.QUOTA_EXCEEDED,{sender:ta,criticalBufferLevel:ya}),M(L())));Ea&&!isNaN(Ea.index)&&(Aa=Math.max(Ea.index,Aa),F());var b=ja.getAllRanges(Ca) +;if(b&&b.length>0)for(var c=0,d=b.length;c=Ba-1&&!wa&&(wa=!0,ga.trigger(s.default.BUFFERING_COMPLETED,{sender:ta,streamInfo:sa.getStreamInfo()}))}function G(){"audio"!==ra&&"video"!==ra||(La&&!wa&&qa&&qa.getTimeToStreamEnd()-xa0&&(ua("pruning buffer: "+b+" seconds."),Ia=!0,ja.remove(Ca,0,Math.round(a+b),za))}}function L(a){if(!Ca)return null;var b=qa.getTime(),c=sa.getFragmentModel().getRequests({state:i.default.FRAGMENT_MODEL_EXECUTED,time:b,threshold:a})[0],d=ja.getBufferRange(Ca,b),e=c&&!isNaN(c.startTime)?c.startTime:Math.floor(b);return null===d&&Ca.buffered.length>0&&(e=Ca.buffered.end(Ca.buffered.length-1)),{start:Ca.buffered.start(0),end:e}}function M(a){a&&Ca&&ja.remove(Ca,a.start,a.end,za)}function N(a){Ca===a.buffer&&(Ia&&(Ia=!1),x(),ga.trigger(s.default.BUFFER_CLEARED,{sender:ta,from:a.from,to:a.to,hasEnoughSpaceToAppend:J()}))}function O(a){Ca&&Ca.timestampOffset!==a&&!isNaN(a)&&(Ca.timestampOffset=a)}function P(a){a.sender.getStreamProcessor()!==sa||a.error||O(a.currentRepresentation.MSETimeOffset)}function Q(a){a.fragmentModel===sa.getFragmentModel()&&(Ba=a.request.index,F())}function R(a){Ca&&a.newMediaInfo.type===ra&&a.newMediaInfo.streamInfo.id===sa.getStreamInfo().id&&ma.getSwitchMode(ra)===o.default.TRACK_SWITCH_MODE_ALWAYS_REPLACE&&M(L(0))}function S(){++Fa*(ia.getWallclockTimeUpdateInterval()/1e3)>=ia.getBufferPruningInterval()&&!Ha&&(Fa=0,K())}function T(){U(qa.getTime())}function U(a){for(var b=ja.getAllRanges(Ca),c=0;ca&&(ua("Removing buffer from: "+b.start(c)+"-"+b.end(c)),ja.remove(Ca,b.start(c),b.end(c),za))}function V(){G()}function W(){return ra}function X(){return sa}function Y(a){Ka=a}function Z(){return Ca}function $(a){Ca=a}function _(){return xa}function aa(a){za=a}function ba(){return za}function ca(){return wa}function da(){ya=Number.POSITIVE_INFINITY,Da=C,va=m.default.QUALITY_DEFAULT,Ba=Number.POSITIVE_INFINITY,Aa=0,Ea=null,Ga=!1,wa=!1,Ha=!1,Ia=!1,La=!1,xa=0,Fa=0}function ea(a){ga.off(s.default.DATA_UPDATE_COMPLETED,P,this),ga.off(s.default.QUALITY_CHANGE_REQUESTED,r,this),ga.off(s.default.INIT_FRAGMENT_LOADED,h,this),ga.off(s.default.MEDIA_FRAGMENT_LOADED,l,this),ga.off(s.default.STREAM_COMPLETED,Q,this),ga.off(s.default.CURRENT_TRACK_CHANGED,R,this),ga.off(s.default.PLAYBACK_PROGRESS,w,this),ga.off(s.default.PLAYBACK_TIME_UPDATED,w,this),ga.off(s.default.PLAYBACK_RATE_CHANGED,V,this),ga.off(s.default.PLAYBACK_SEEKING,t,this),ga.off(s.default.WALLCLOCK_TIME_UPDATED,S,this),ga.off(s.default.SOURCEBUFFER_APPEND_COMPLETED,p,this),ga.off(s.default.SOURCEBUFFER_REMOVE_COMPLETED,N,this),Ma&&ga.off(s.default.PLAYBACK_SEEKED,T,this),da(),a||(ja.abort(za,Ca),ja.removeSourceBuffer(za,Ca)),Ca=null}a=a||{};var fa=this.context,ga=(0,q.default)(fa).getInstance(),ha=a.metricsModel,ia=a.mediaPlayerModel,ja=a.sourceBufferController,ka=a.errHandler,la=a.streamController,ma=a.mediaController,na=a.adapter,oa=a.textController,pa=a.abrController,qa=a.playbackController,ra=a.type,sa=a.streamProcessor,ta=void 0,ua=void 0,va=void 0,wa=void 0,xa=void 0,ya=void 0,za=void 0,Aa=void 0,Ba=void 0,Ca=void 0,Da=void 0,Ea=void 0,Fa=void 0,Ga=void 0,Ha=void 0,Ia=void 0,Ja=void 0,Ka=void 0,La=void 0,Ma=void 0;return ta={getBufferControllerType:c,initialize:d,createBuffer:e,getType:W,getStreamProcessor:X,setSeekStartTime:Y,getBuffer:Z,setBuffer:$,getBufferLevel:_,setMediaSource:aa,getMediaSource:ba,getIsBufferingCompleted:ca,switchInitData:j,reset:ea},b(),ta}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(141),i=d(h),j=a(113),k=d(j),l=a(103),m=d(l),n=a(109),o=d(n),p=a(50),q=d(p),r=a(54),s=d(r),t=a(192),u=d(t),v=a(51),w=d(v),x=a(49),y=d(x),z=a(198),A=d(z),B="bufferLoaded",C="bufferStalled",D=.5,E="BufferController";e.__dashjs_factory_name=E;var F=w.default.getClassFactory(e);F.BUFFER_LOADED=B,F.BUFFER_EMPTY=C,w.default.updateClassFactory(e.__dashjs_factory_name,F),c.default=F,b.exports=c.default},{100:100,103:103,109:109,113:113,141:141,192:192,198:198,49:49,50:50,51:51,54:54}],107:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){b()}function b(){E=!1,v={},w={},x={},y=null,z=100,A=z/1e3}function c(){if(!B||!C||!D)throw new Error("setConfig function has to be called previously")}function d(){null!==y&&E&&(clearInterval(y),y=null,E=!1)}function e(){c(),s("Start Event Controller"),E||isNaN(z)||(E=!0,y=setInterval(j,z))}function f(a){if(c(),v={},a)for(var b=0;bc)&&(s("Start Event "+f+" at "+c),g.duration>0&&(x[f]=g),g.eventStream.schemeIdUri==p&&g.eventStream.value==q?l():t.trigger(g.eventStream.schemeIdUri,{event:g}),delete a[f])}}function n(a){a&&(a.manifestModel&&(B=a.manifestModel),a.manifestUpdater&&(C=a.manifestUpdater),a.playbackController&&(D=a.playbackController))}function o(){d(),b()}var p="urn:mpeg:dash:event:2012",q=1,r=this.context,s=(0,i.default)(r).getInstance().log,t=(0,k.default)(r).getInstance(),u=void 0,v=void 0,w=void 0,x=void 0,y=void 0,z=void 0,A=void 0,B=void 0,C=void 0,D=void 0,E=void 0;return u={addInlineEvents:f,addInbandEvents:g,stop:d,start:e,setConfig:n,reset:o},a(),u}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(49),i=d(h),j=a(50),k=d(j);e.__dashjs_factory_name="EventController",c.default=g.default.getClassFactory(e),b.exports=c.default},{49:49,50:50,51:51}],108:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){e(),q.on(t.default.FRAGMENT_LOADING_COMPLETED,k,w)}function c(a){var b=y[a];return b||(b=(0,l.default)(m).create({metricsModel:v,fragmentLoader:(0,n.default)(m).create({metricsModel:v,mediaPlayerModel:u,errHandler:s,requestModifier:(0,p.default)(m).getInstance()})}),y[a]=b),b}function d(a){return a&&a.type&&a.type===h.HTTPRequest.INIT_SEGMENT_TYPE}function e(){for(var a in y)y[a].reset();y={}}function f(){q.off(t.default.FRAGMENT_LOADING_COMPLETED,k,this),e()}function i(a,b,c){var d=new j.default;return d.streamId=c,d.mediaInfo=b.mediaInfo,d.segmentType=b.type,d.start=b.startTime,d.duration=b.duration,d.end=d.start+d.duration,d.bytes=a,d.index=b.index,d.quality=b.quality,d.representationId=b.representationId,d}function k(a){if(y[a.request.mediaType]===a.sender){var b=a.request,c=a.response,e=d(b),f=b.mediaInfo.streamInfo;if(a.error&&(a.request.mediaType!==g.default.AUDIO&&a.request.mediaType!==g.default.VIDEO||q.trigger(t.default.SERVICE_LOCATION_BLACKLIST_ADD,{entry:a.request.serviceLocation})),!c||!f)return void o("No "+b.mediaType+" bytes to push or stream is inactive.");var h=i(c,b,f.id);q.trigger(e?t.default.INIT_FRAGMENT_LOADED:t.default.MEDIA_FRAGMENT_LOADED,{chunk:h,fragmentModel:a.sender})}}a=a||{};var m=this.context,o=(0,x.default)(m).getInstance().log,q=(0,r.default)(m).getInstance(),s=a.errHandler,u=a.mediaPlayerModel,v=a.metricsModel,w=void 0,y=void 0;return w={getModel:c,isInitializationRequest:d,reset:f},b(),w}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(226),i=a(210),j=d(i),k=a(141),l=d(k),m=a(90),n=d(m),o=a(202),p=d(o),q=a(50),r=d(q),s=a(54),t=d(s),u=a(51),v=d(u),w=a(49),x=d(w);e.__dashjs_factory_name="FragmentController",c.default=v.default.getClassFactory(e),b.exports=c.default},{100:100,141:141,202:202,210:210,226:226,49:49,50:50,51:51,54:54,90:90}],109:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){z()}function b(a,b){var c=l(a),e=d(a,b),f=[];if(a===g.default.FRAGMENTED_TEXT)return void h(e[0]);c||(c=P.getSavedMediaSettings(a),j(a,c)),e&&0!==e.length&&(c&&e.forEach(function(a){B(c,a)&&f.push(a)}),h(0===f.length?E(e):f.length>1?E(f):f[0]))}function c(a){var b=a?a.type:null,c=a?a.streamInfo.id:null,d=l(b);if(a&&w(b)){K[c]=K[c]||F();for(var f=K[c][b].list.length,g=0;g0||b.accessibility&&b.accessibility.length>0||b.audioChannelConfiguration&&b.audioChannelConfiguration.length>0?b:null}function B(a,b){var c=!a.lang||a.lang===b.lang,d=!a.viewpoint||a.viewpoint===b.viewpoint,e=!a.role||!!b.roles.filter(function(b){return b===a.role})[0],f=!a.accessibility||!!b.accessibility.filter(function(b){return b===a.accessibility})[0],g=!a.audioChannelConfiguration||!!b.audioChannelConfiguration.filter(function(b){return b===a.audioChannelConfiguration})[0];return c&&d&&e&&f&&g}function C(){N={audio:q,video:p}}function D(){L={audio:null,video:null}}function E(a){var b=v(),c=[],d=function(a){var b=0,c=[],d=void 0;return a.forEach(function(a){d=Math.max.apply(Math,a.bitrateList.map(function(a){return a.bandwidth})),d>b?(b=d,c=[a]):d===b&&c.push(a)}),c},e=function(a){var b=0,c=[],d=void 0;return a.forEach(function(a){d=a.representationCount,d>b?(b=d,c=[a]):d===b&&c.push(a)}),c};switch(b){case r:c=d(a),c.length>1&&(c=e(c));break;case s:c=e(a),c.length>1&&(c=d(a));break;default:H("track selection mode is not supported: "+b)}return c[0]}function F(){return{audio:{list:[],storeLastSettings:!0,current:null},video:{list:[],storeLastSettings:!0,current:null},text:{list:[],storeLastSettings:!0,current:null},fragmentedText:{list:[],storeLastSettings:!0,current:null}}}var G=this.context,H=(0,o.default)(G).getInstance().log,I=(0,k.default)(G).getInstance(),J=void 0,K=void 0,L=void 0,M=void 0,N=void 0,O=void 0,P=void 0,Q=[q,p],R=[r,s];return J={checkInitialMediaSettingsForType:b,addTrack:c,getTracksFor:d,getCurrentTrackFor:e,isCurrentTrack:f,setTrack:h,setInitialSettings:j,getInitialSettings:l,setSwitchMode:m,getSwitchMode:n,setSelectionModeForInitialTrack:u,getSelectionModeForInitialTrack:v,isMultiTrackSupportedByType:w,isTracksEqual:x,setConfig:y,reset:z},a(),J}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(54),i=d(h),j=a(50),k=d(j),l=a(51),m=d(l),n=a(49),o=d(n),p="neverReplace",q="alwaysReplace",r="highestBitrate",s="widestRange",t=r;e.__dashjs_factory_name="MediaController";var u=m.default.getSingletonFactory(e);u.TRACK_SWITCH_MODE_NEVER_REPLACE=p,u.TRACK_SWITCH_MODE_ALWAYS_REPLACE=q,u.TRACK_SELECTION_MODE_HIGHEST_BITRATE=r,u.TRACK_SELECTION_MODE_WIDEST_RANGE=s,u.DEFAULT_INIT_TRACK_SELECTION_MODE=t,m.default.updateSingletonFactory(e.__dashjs_factory_name,u),c.default=u,b.exports=c.default},{100:100,49:49,50:50,51:51,54:54}],110:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){var a="WebKitMediaSource"in window;return"MediaSource"in window?new MediaSource:a?new WebKitMediaSource:null}function b(a,b){var c=window.URL.createObjectURL(a);return b.setSource(c),c}function c(a){a.setSource(null)}function d(a,b){return a.duration!=b&&(a.duration=b),a.duration}function e(a,b,c){"function"==typeof a.setLiveSeekableRange&&"function"==typeof a.clearLiveSeekableRange&&"open"===a.readyState&&b>=0&&b0){var f=Math.max(b-10,b/2);e=Math.min(d,f)}else e=d;return oa=e,e}function z(){return oa}function A(){ka=0,la=NaN,ma=null,ta=!1,na={},oa=0,pa={},ja&&(ba.off(o.default.DATA_UPDATE_COMPLETED,H,this),ba.off(o.default.BUFFER_LEVEL_STATE_CHANGED,Y,this),ba.off(o.default.BYTES_APPENDED,X,this),F(),$()),ja=null,qa=null,ra=null}function B(a){a&&(a.streamController&&(da=a.streamController),a.metricsModel&&(ea=a.metricsModel),a.dashMetrics&&(fa=a.dashMetrics),a.manifestModel&&(ga=a.manifestModel),a.dashManifestModel&&(ha=a.dashManifestModel),a.mediaPlayerModel&&(sa=a.mediaPlayerModel),a.adapter&&(ia=a.adapter),a.videoModel&&(ja=a.videoModel))}function C(a,b){var c=void 0,d=(0,k.default)(_).getInstance().getURIFragmentData(),e=NaN;if(d){var f=parseInt(d.s,10),g=parseInt(d.t,10);a||(e=isNaN(f)?g:f)}else e=0;if(ra)isNaN(e)||((c=e-qa.manifestInfo.availableFrom.getTime()/1e3)>la||c<(isNaN(b)?NaN:b-qa.manifestInfo.DVRWindowSize))&&(c=null),c=c||la;else if(!isNaN(e)&&e=0)c=e;else{var h=na[qa.id];void 0===h&&(h=da.getActiveStreamCommonEarliestTime()),c=Math.max(h,qa.start)}return c}function D(a){var b=ea.getReadOnlyMetricsFor(g.default.VIDEO)||ea.getReadOnlyMetricsFor(g.default.AUDIO),c=fa.getCurrentDVRInfo(b),d=c?c.range:null,e=void 0;if(!d)return NaN;if(a>d.end)e=Math.max(d.end-2*qa.manifestInfo.minBufferTime,d.start);else{if(!(aua+t)&&(ua=a,O())}function Q(){ba.trigger(o.default.PLAYBACK_PROGRESS)}function R(){var a=p();aa("Native video element event: ratechange: ",a),ba.trigger(o.default.PLAYBACK_RATE_CHANGED,{playbackRate:a})}function S(){aa("Native video element event: loadedmetadata"),ba.trigger(o.default.PLAYBACK_METADATA_LOADED),E()}function T(){aa("Native video element event: ended"),h(),F(),ba.trigger(o.default.PLAYBACK_ENDED)}function U(a){var b=a.target||a.srcElement;ba.trigger(o.default.PLAYBACK_ERROR,{error:b.error})}function V(){ba.trigger(o.default.WALLCLOCK_TIME_UPDATED,{isDynamic:ra,time:new Date}),u()&&f()&&P()}function W(a,b){if(b&&b.length>0)for(var c=0,d=b.length;c=b.start(c)&&ac?na[qa.id].video:c,d=pa[qa.id].audio):(b=na[qa.id].audio>c?na[qa.id].audio:c,d=pa[qa.id].video),W(b,d)&&(l(b),na[qa.id]=!1)):na[qa.id][e]&&(b=na[qa.id][e]>c?na[qa.id][e]:c,l(b),na[qa.id]=!1)}}function Y(a){a.streamInfo.id===qa.id&&ja.setStallState(a.mediaType,a.state===i.default.BUFFER_EMPTY)}function Z(){ja.addEventListener("canplay",I),ja.addEventListener("play",J),ja.addEventListener("playing",K),ja.addEventListener("pause",L),ja.addEventListener("error",U),ja.addEventListener("seeking",M),ja.addEventListener("seeked",N),ja.addEventListener("timeupdate",O),ja.addEventListener("progress",Q),ja.addEventListener("ratechange",R),ja.addEventListener("loadedmetadata",S),ja.addEventListener("ended",T)}function $(){ja.removeEventListener("canplay",I),ja.removeEventListener("play",J),ja.removeEventListener("playing",K),ja.removeEventListener("pause",L),ja.removeEventListener("error",U),ja.removeEventListener("seeking",M),ja.removeEventListener("seeked",N),ja.removeEventListener("timeupdate",O),ja.removeEventListener("progress",Q),ja.removeEventListener("ratechange",R),ja.removeEventListener("loadedmetadata",S),ja.removeEventListener("ended",T)}var _=this.context,aa=(0,s.default)(_).getInstance().log,ba=(0,m.default)(_).getInstance(),ca=void 0,da=void 0,ea=void 0,fa=void 0,ga=void 0,ha=void 0,ia=void 0,ja=void 0,ka=void 0,la=void 0,ma=void 0,na=void 0,oa=void 0,pa=void 0,qa=void 0,ra=void 0,sa=void 0,ta=void 0,ua=void 0;return ca={initialize:b,setConfig:B,getStreamStartTime:C,getTimeToStreamEnd:d,getTime:n,getPlaybackRate:p,getPlayedRanges:q,getEnded:r,getIsDynamic:u,getStreamController:v,setLiveStartTime:w,getLiveStartTime:x,computeLiveDelay:y,getLiveDelay:z,play:e,isPaused:f,pause:h,isSeeking:j,seek:l,reset:A},a(),ca}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(106),i=d(h),j=a(145),k=d(j),l=a(50),m=d(l),n=a(54),o=d(n),p=a(51),q=d(p),r=a(49),s=d(r),t=500;e.__dashjs_factory_name="PlaybackController",c.default=q.default.getSingletonFactory(e),b.exports=c.default},{100:100,106:106,145:145,49:49,50:50,51:51,54:54}],112:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){ra=(0,z.default)(ba).getInstance().log.bind(qa),_()}function c(){sa=pa.getFragmentModel(),Fa=ia.getScheduleWhilePaused(),Da=(0,n.default)(ba).create({abrController:ja,dashMetrics:fa,metricsModel:da,mediaPlayerModel:ia,textController:ma}),Ea=(0,p.default)(ba).create({adapter:ea,sourceBufferController:na,textController:ma}),ga.getIsTextTrack(oa)&&ca.on(v.default.TIMED_TEXT_REQUESTED,N,this),ca.on(v.default.QUALITY_CHANGE_REQUESTED,x,this),ca.on(v.default.DATA_UPDATE_STARTED,I,this),ca.on(v.default.DATA_UPDATE_COMPLETED,A,this),ca.on(v.default.FRAGMENT_LOADING_COMPLETED,E,this),ca.on(v.default.STREAM_COMPLETED,D,this),ca.on(v.default.STREAM_INITIALIZED,B,this),ca.on(v.default.BUFFER_LEVEL_STATE_CHANGED,K,this),ca.on(v.default.BUFFER_CLEARED,J,this),ca.on(v.default.BYTES_APPENDED,G,this),ca.on(v.default.INIT_REQUESTED,q,this),ca.on(v.default.QUOTA_EXCEEDED,L,this),ca.on(v.default.PLAYBACK_SEEKING,P,this),ca.on(v.default.PLAYBACK_STARTED,O,this),ca.on(v.default.PLAYBACK_RATE_CHANGED,Q,this),ca.on(v.default.PLAYBACK_TIME_UPDATED,F,this),ca.on(v.default.URL_RESOLUTION_FAILED,M,this),ca.on(v.default.FRAGMENT_LOADING_ABANDONED,H,this)}function d(){return!1===va}function e(){ta&&!pa.isBufferingCompleted()&&($(),va=!1,ua&&(ua=!1),o(0),ra("Schedule controller starting for "+oa))}function f(){va||(va=!0,clearTimeout(Ba),ra("Schedule controller stopping for "+oa))}function i(a,b){Ha[b]=Ha[b]||{};var c=ja.getTopQualityIndexFor(a,b);return Ha[b][a]!=c&&(ra("Top quality "+a+" index has changed from "+Ha[b][a]+" to "+c),Ha[b][a]=c,!0)}function k(){if(va||za||!pa.getBufferController()||ka.isPaused()&&!Fa)return void ra("ScheduleController "+oa+"- schedule stop!");m();var a=Ja.length>0;if(Ka||a||i(ta.mediaInfo.type,pa.getStreamInfo().id)||Da.execute(pa,oa,la.isVideoTrackPresent())){var b=function(){ra("ScheduleController "+oa+"- getNextFragment");var a=pa.getFragmentController();if(Ka)ra("ScheduleController "+oa+"- switch track has been asked, get init request for "+oa+" with representationid = "+ta.id),pa.switchInitData(ta.id),Ia=ta.quality,Ka=!1;else if(ta.quality!==Ia)ra("ScheduleController "+oa+"- quality has changed, get init request"),Ia=ta.quality,pa.switchInitData(ta.id);else{var b=Ja.shift();if(a.isInitializationRequest(b))pa.switchInitData(b.representationId);else{var c=Ea.execute(pa,b);c?(ra("ScheduleController "+oa+"- getNextFragment - request is "+c.url),sa.executeRequest(c)):(ra("getNextFragment "+oa+"- Playing at the bleeding live edge and frag is not available yet"),za=!1,o(500))}}};za=!0,a||Ka?b():(ja.checkPlaybackQuality(oa),b())}else o(500)}function m(){var a=1.5*ta.fragmentDuration,b=sa.getRequests({state:r.default.FRAGMENT_MODEL_EXECUTED,time:ka.getTime()+a,threshold:0})[0];if(b&&-1===Ja.indexOf(b)&&!ga.getIsTextTrack(oa)){var c=ia.getFastSwitchEnabled(),d=pa.getBufferLevel(),e=ja.getAbandonmentStateFor(oa);c&&b.quality=a&&e!==j.default.ABANDON_LOAD?(w(b),ra("Reloading outdated fragment at index: ",b.index)):b.quality>ta.quality&&S(ka.getTime()+pa.getBufferLevel())}}function o(a){clearTimeout(Ba),Ba=setTimeout(k,a)}function q(a){a.sender&&a.sender.getStreamProcessor()===pa&&s(ta.quality)}function s(a){var b=ea.getInitRequest(pa,a);b&&(za=!0,sa.executeRequest(b))}function u(){Ka=!0}function w(a){Ja.push(a)}function x(a){if(oa===a.mediaType&&pa.getStreamInfo().id===a.streamInfo.id){if(null===(ta=pa.getRepresentationInfoForQuality(a.newQuality))||void 0===ta)throw new Error("Unexpected error! - currentRepresentationInfo is null or undefined");Z(new Date,h.PlayListTrace.REPRESENTATION_SWITCH_STOP_REASON),$()}}function y(a){if(ka&&sa){var b=sa.getRequests({state:r.default.FRAGMENT_MODEL_EXECUTED,time:ka.getTime(),threshold:0})[0];b&&ka.getTime()>=b.startTime&&(b.quality===Ga.quality&&b.adaptationIndex===Ga.adaptationIndex||!a||ca.trigger(v.default.QUALITY_CHANGE_RENDERED,{mediaType:oa,oldQuality:Ga.quality,newQuality:b.quality}),Ga={quality:b.quality,adaptationIndex:b.adaptationIndex})}}function A(a){a.error||a.sender.getStreamProcessor()!==pa||(ta=ea.convertDataToRepresentationInfo(a.currentRepresentation))}function B(a){a.error||pa.getStreamInfo().id!==a.streamInfo.id||(ta=pa.getCurrentRepresentationInfo(),ua&&(ka.getIsDynamic()?(ha.setTimeSyncCompleted(!0),C()):(Ca=ka.getStreamStartTime(!1),pa.getBufferController().setSeekStartTime(Ca))),va&&e())}function C(){var a=pa.getLiveEdgeFinder();if(a){var b=a.getLiveEdge(),c=ta.mediaInfo.streamInfo.manifestInfo.DVRWindowSize/2,d=b-ka.computeLiveDelay(ta.fragmentDuration,c),e=ea.getFragmentRequestForTime(pa,ta,d,{ignoreIsFinished:!0});ka.setLiveStartTime(e.startTime),Ca=ka.getStreamStartTime(!1,b),Ca>ta.mediaInfo.streamInfo.start+ta.mediaInfo.streamInfo.duration&&ka.seek(Ca);var f=fa.getCurrentManifestUpdate(da.getMetricsFor(g.default.STREAM));da.updateManifestUpdateInfo(f,{currentTime:Ca,presentationStartTime:b,latency:b-Ca,clientTimeOffset:ha.getClientTimeOffset()})}}function D(a){a.fragmentModel===sa&&(f(),za=!1,ra("Stream is complete"))}function E(a){a.sender===sa&&(ga.getIsTextTrack(oa)&&(za=!1),a.error&&a.request.serviceLocation&&!va&&(w(a.request),za=!1,o(0)))}function F(){y(!0)}function G(a){a.sender.getStreamProcessor()===pa&&(za=!1,o(0))}function H(a){a.streamProcessor===pa&&(ra("[ScheduleController]["+oa+"] Request "+a.request.url+" has been aborted"),w(a.request),za=!1,o(0))}function I(a){a.sender.getStreamProcessor()===pa&&f()}function J(a){a.sender.getStreamProcessor()===pa&&(sa.removeExecutedRequestsBeforeTime(a.to),a.hasEnoughSpaceToAppend&&va&&e())}function K(a){a.sender.getStreamProcessor()!==pa||a.state!==l.default.BUFFER_EMPTY||ka.isSeeking()||(ra("Buffer is empty! Stalling!"),Z(new Date,h.PlayListTrace.REBUFFERING_REASON))}function L(a){a.sender.getStreamProcessor()===pa&&(f(),za=!1)}function M(){sa.abortRequests(),f()}function N(a){a.sender.getStreamProcessor()===pa&&s(a.index)}function O(){!va&&Fa||e()}function P(a){Ca=a.seekTime,T(0),va&&e();var b=fa.getCurrentManifestUpdate(da.getMetricsFor(g.default.STREAM)),c=ta.DVRWindow&&ka?ta.DVRWindow.end-ka.getTime():NaN;da.updateManifestUpdateInfo(b,{latency:c}),za||o(0)}function Q(a){xa&&(xa.playbackspeed=a.playbackRate.toString())}function R(){return Ca}function S(a){Ca=a}function T(a){Aa=a}function U(){return Aa}function V(){return Da.getBufferTarget(pa,oa,la.isVideoTrackPresent())}function W(){return oa}function X(a){wa=a}function Y(a,b){Z(a,b),wa=null}function Z(a,b){if(wa&&!1===ya){var c=xa.start,d=a.getTime()-c.getTime();xa.duration=d,xa.stopreason=b,wa.trace.push(xa),ya=!0}}function $(){wa&&!0===ya&&ta&&(ya=!1,xa=new h.PlayListTrace,xa.representationid=ta.id,xa.start=new Date,xa.mstart=1e3*ka.getTime(),xa.playbackspeed=ka.getPlaybackRate().toString())}function _(){za=!1,Aa=0,Ca=NaN,wa=null,xa=null,ya=!0,ua=!0,Ia=NaN,Ga={quality:NaN,adaptationIndex:NaN},Ha={},Ja=[],va=!0,Ka=!0}function aa(){ca.off(v.default.DATA_UPDATE_STARTED,I,this),ca.off(v.default.DATA_UPDATE_COMPLETED,A,this),ca.off(v.default.BUFFER_LEVEL_STATE_CHANGED,K,this),ca.off(v.default.QUALITY_CHANGE_REQUESTED,x,this),ca.off(v.default.FRAGMENT_LOADING_COMPLETED,E,this),ca.off(v.default.STREAM_COMPLETED,D,this),ca.off(v.default.STREAM_INITIALIZED,B,this),ca.off(v.default.QUOTA_EXCEEDED,L,this),ca.off(v.default.BYTES_APPENDED,G,this),ca.off(v.default.BUFFER_CLEARED,J,this),ca.off(v.default.INIT_REQUESTED,q,this),ca.off(v.default.PLAYBACK_RATE_CHANGED,Q,this),ca.off(v.default.PLAYBACK_SEEKING,P,this),ca.off(v.default.PLAYBACK_STARTED,O,this),ca.off(v.default.PLAYBACK_TIME_UPDATED,F,this),ca.off(v.default.URL_RESOLUTION_FAILED,M,this),ca.off(v.default.FRAGMENT_LOADING_ABANDONED,H,this),ga.getIsTextTrack(oa)&&ca.off(v.default.TIMED_TEXT_REQUESTED,N,this),f(),y(!1),_()}a=a||{};var ba=this.context,ca=(0,t.default)(ba).getInstance(),da=a.metricsModel,ea=a.adapter,fa=a.dashMetrics,ga=a.dashManifestModel,ha=a.timelineConverter,ia=a.mediaPlayerModel,ja=a.abrController,ka=a.playbackController,la=a.streamController,ma=a.textController,na=a.sourceBufferController,oa=a.type,pa=a.streamProcessor,qa=void 0,ra=void 0,sa=void 0,ta=void 0,ua=void 0,va=void 0,wa=void 0,xa=void 0,ya=void 0,za=void 0,Aa=void 0,Ba=void 0,Ca=void 0,Da=void 0,Ea=void 0,Fa=void 0,Ga=void 0,Ha=void 0,Ia=void 0,Ja=void 0,Ka=void 0;return qa={initialize:c,getType:W,getSeekTarget:R,setSeekTarget:S,setTimeToLoadDelay:T,getTimeToLoadDelay:U,replaceRequest:w,switchTrackAsked:u,isStarted:d,start:e,stop:f,reset:aa,setPlayList:X,getBufferTarget:V,finalisePlayList:Y},b(),qa}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(228),i=a(103),j=d(i),k=a(106),l=d(k),m=a(183),n=d(m),o=a(184),p=d(o),q=a(141),r=d(q),s=a(50),t=d(s),u=a(54),v=d(u),w=a(51),x=d(w),y=a(49),z=d(y);e.__dashjs_factory_name="ScheduleController",c.default=x.default.getClassFactory(e),b.exports=c.default},{100:100,103:103,106:106,141:141,183:183,184:184,228:228,49:49,50:50,51:51,54:54}],113:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c=b.codec,d=null;try{if(c.match(/application\/mp4;\s*codecs="(stpp|wvtt).*"/i))throw new Error("not really supported");d=a.addSourceBuffer(c) +}catch(e){if(!b.isText&&-1===c.indexOf('codecs="stpp')&&-1===c.indexOf('codecs="wvtt'))throw e;d=v.getTextSourceBuffer()}return d}function c(a,b){try{a.removeSourceBuffer(b)}catch(c){}}function d(a,b,c){var d=null,e=0,f=0,g=null,h=null,i=0,j=void 0,k=void 0,l=c||.15;try{d=a.buffered}catch(m){return null}if(null!==d&&void 0!==d){for(k=0,j=d.length;k=e&&bn,i=l?{start:a.start(n),end:a.end(n)}:null,d=c.start(n),f=c.end(n),!i)return m={start:d,end:f};if(g=i.start===d,h=i.end===f,!g||!h){if(g)m={start:i.end,end:f};else{if(!h)return m={start:d,end:f};m={start:d,end:i.start}}return j=a.length>n+1?{start:a.start(n+1),end:a.end(n+1)}:null,k=n+1=0&&c>b&&"ended"!==d.readyState&&a.remove(b,c),s(a,function(){u.trigger(k.default.SOURCEBUFFER_REMOVE_COMPLETED,{buffer:a,from:b,to:c})})}catch(e){u.trigger(k.default.SOURCEBUFFER_REMOVE_COMPLETED,{buffer:a,from:b,to:c,error:new g.default(e.code,e.message,null)})}})}function n(a,b){try{"open"===a.readyState?b.abort():b.resetEmbedded&&"ended"===a.readyState&&b.abort()}catch(c){}}function s(a,b){var c=void 0,d=50,e=function(){a.updating||(clearInterval(c),b())},f=function c(){a.updating||(a.removeEventListener("updateend",c,!1),b())};if(!a.updating)return void b();if("function"==typeof a.addEventListener)try{a.addEventListener("updateend",f,!1)}catch(g){c=setInterval(e,d)}else c=setInterval(e,d)}var t=this.context,u=(0,i.default)(t).getInstance(),v=a.textController;return{append:l,remove:m,abort:n,createSourceBuffer:b,removeSourceBuffer:c,getBufferRange:d,getAllRanges:e,getTotalBufferedTime:f,getBufferLength:h,getRangeDifference:j}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(209),g=d(f),h=a(50),i=d(h),j=a(54),k=d(j),l=a(51),m=d(l),n=22,o=1,p=2,q="buffer or chunk is not defined",r="buffer is not defined";e.__dashjs_factory_name="SourceBufferController";var s=m.default.getSingletonFactory(e);s.QUOTA_EXCEEDED_ERROR_CODE=n,m.default.updateSingletonFactory(e.__dashjs_factory_name,s),c.default=s,b.exports=c.default},{209:209,50:50,51:51,54:54}],114:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){na=(0,F.default)(aa).getInstance(),oa=(0,H.default)(aa).getInstance(),ma=(0,J.default)(aa).getInstance(),ua=(0,z.default)(aa).getInstance(),va=(0,B.default)(aa).getInstance(),X()}function b(a,b){S(),Ca=a,Ba=b,xa.initialize(),fa=(0,m.default)(aa).create(),fa.setConfig({manifestModel:ha,dashManifestModel:ia,mediaPlayerModel:Ja,manifestLoader:ga}),fa.initialize(),oa.setConfig({dashManifestModel:ia}),ca.on(q.default.TIME_SYNCHRONIZATION_COMPLETED,G,this),ca.on(q.default.PLAYBACK_SEEKING,d,this),ca.on(q.default.PLAYBACK_TIME_UPDATED,c,this),ca.on(q.default.PLAYBACK_ENDED,r,this),ca.on(q.default.PLAYBACK_ERROR,P,this),ca.on(q.default.PLAYBACK_STARTED,e,this),ca.on(q.default.PLAYBACK_PAUSED,f,this),ca.on(q.default.MANIFEST_UPDATED,I,this),ca.on(q.default.STREAM_BUFFERING_COMPLETED,h,this),ca.on(D.default.METRIC_ADDED,Z,this)}function c(a){if(L()){var b=Ha.getPlaybackQuality();b&&ka.addDroppedFrames(g.default.VIDEO,b)}Ia.isSeeking()||a.timeToEnd<=$&&(ba("[StreamController][onPlaybackTimeUpdated] timeToEnd = "+a.timeToEnd+" PLAYBACK_ENDED need to be triggered"),Pa&&(clearTimeout(Pa),Pa=void 0),Pa=setTimeout(function(){Pa=void 0,ca.trigger(q.default.PLAYBACK_ENDED)},1e3*(a.timeToEnd+_)))}function d(a){var b=j(a.seekTime);b&&b!==za?(N(v.PlayListTrace.END_OF_PERIOD_STOP_REASON),u(za,b,a.seekTime)):N(v.PlayListTrace.USER_REQUEST_STOP_REASON),O(v.PlayList.SEEK_START_REASON)}function e(){La?(La=!1,O(v.PlayList.INITIAL_PLAYOUT_START_REASON)):Ka&&(Ka=!1,O(v.PlayList.RESUME_FROM_PAUSE_START_REASON))}function f(a){a.ended||(Ka=!0,N(v.PlayListTrace.USER_REQUEST_STOP_REASON))}function h(){var a=Q().isLast;Ga&&a&&ma.signalEndOfStream(Ga)}function j(a){var b=0,c=null,d=ya.length;d>0&&(b+=ya[0].getStartTime());for(var e=0;e>>0).toString(16).toUpperCase()+")"),ba("Video Element Error: "+b),a.error&&ba(a.error),wa.mediaSourceError(b),Y()}}function Q(){return za?za.getStreamInfo():null}function R(a){return ya.filter(function(b){return b.getId()===a})[0]}function S(){if(!(ga&&ga.hasOwnProperty("load")&&xa&&xa.hasOwnProperty("initialize")&&xa.hasOwnProperty("reset")&&xa.hasOwnProperty("getClientTimeOffset")))throw new Error("setConfig function has to be called previously")}function T(){if(!fa||!fa.hasOwnProperty("setManifest"))throw new Error("initialize function has to be called previously")}function U(a){S(),ga.load(a)}function V(a){T(),fa.setManifest(a)}function W(a){a&&(a.capabilities&&(ea=a.capabilities),a.manifestLoader&&(ga=a.manifestLoader),a.manifestModel&&(ha=a.manifestModel),a.dashManifestModel&&(ia=a.dashManifestModel),a.mediaPlayerModel&&(Ja=a.mediaPlayerModel),a.protectionController&&(Aa=a.protectionController),a.adapter&&(ja=a.adapter),a.metricsModel&&(ka=a.metricsModel),a.dashMetrics&&(la=a.dashMetrics),a.errHandler&&(wa=a.errHandler),a.timelineConverter&&(xa=a.timelineConverter),a.videoModel&&(Ha=a.videoModel),a.playbackController&&(Ia=a.playbackController),a.domStorage&&(pa=a.domStorage),a.abrController&&(qa=a.abrController),a.mediaController&&(ra=a.mediaController),a.textController&&(sa=a.textController),a.sourceBufferController&&(ta=a.sourceBufferController))}function X(){ya=[],Aa=null,Da=!1,za=null,Ea=!1,Fa=!1,Na=void 0,La=!0,Ka=!1,Ca=!0,Ma=null}function Y(){S(),na.reset(),N(Ea||Fa?v.PlayListTrace.FAILURE_STOP_REASON:v.PlayListTrace.USER_REQUEST_STOP_REASON);for(var a=0,b=ya?ya.length:0;a")+2),d=b.resolvedContent.substr(0,e)+""+b.resolvedContent.substr(e)+"",b.resolvedContent=G.xml_str2json(d)}x(c)&&l(c)}function l(a){var b=[],c=void 0,d=void 0;if(n(a),a.resolveType===s&&A.trigger(k.default.XLINK_READY,{manifest:F}),a.resolveType===r)switch(a.type){case t:for(c=0;c=0;g--)f=a[g],f.hasOwnProperty("xlink:href")&&f["xlink:href"]===w&&a.splice(g,1);for(g=0;g=0;f--){if(c=a.elements[f],d=c.type+"_asArray",!c.resolvedContent||y())delete c.originalContent["xlink:actuate"],delete c.originalContent["xlink:href"],b.push(c.originalContent);else if(c.resolvedContent)for(g=0;g0&&E.run(F)}function p(a,b,c,d,e,f){return{url:a,parentElement:b,type:c,index:d,resolveType:e,originalContent:f,resolvedContent:null,resolved:!1}}function x(a){var b=void 0,c=void 0;for(b=0;b=200&&d.status<300?b&&b():c&&c())};q.push(d);try{d.open("GET",a),d.onloadend=e,d.onerror=e,d.send()}catch(f){d.onerror()}}function c(a,c){Array.isArray(c)||(c=[c]),l&&o.isEnabled()&&c.forEach(function(c){ +var d=h.serialise(c);k&&a!==r.DVB_ERRORS&&(d="metricname="+a+"&"+d),d=n+"?"+d,b(d,null,function(){l=!1})})}function d(a,b){var c=void 0;if(o=b,!(n=a["dvb:reportingUrl"]))throw new Error("required parameter missing (dvb:reportingUrl)");m||(c=a["dvb:probability"]||a["dvb:priority"]||0,c&&(1e3===c||c/1e3>=j.random())&&(l=!0),m=!0)}function e(){p||(q.forEach(function(a){return a.abort()}),q=[]),m=!1,l=!1,n=null,o=null}a=a||{};var f=this.context,h=(0,g.default)(f).getInstance(),j=(0,i.default)(f).getInstance(),k=!0,l=!1,m=!1,n=null,o=null,p=!0,q=[],r=a.metricsConstants;return{report:c,initialize:d,reset:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(134),g=d(f),h=a(135),i=d(h);e.__dashjs_factory_name="DVBReporting",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{134:134,135:135}],131:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){var b=new g.default;if(p){for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);b.mpdurl||(b.mpdurl=p.originalUrl||p.url),b.terror||(b.terror=new Date),o.addDVBErrors(b)}}function c(a){a.error||(p=a.manifest)}function d(a){b({errorcode:g.default.BASE_URL_CHANGED,servicelocation:a.entry})}function e(){b({errorcode:g.default.BECAME_REPORTER})}function f(a){(0===a.responsecode||a.responsecode>=400||a.responsecode<100||a.responsecode>=600)&&b({errorcode:a.responsecode||g.default.CONNECTION_ERROR,url:a.url,terror:a.tresponse,servicelocation:a._serviceLocation})}function h(a){switch(a.metric){case q.HTTP_REQUEST:f(a.value)}}function j(a){var c=a.error?a.error.code:0,d=void 0;switch(c){case MediaError.MEDIA_ERR_NETWORK:d=g.default.CONNECTION_ERROR;break;case MediaError.MEDIA_ERR_DECODE:d=g.default.CORRUPT_MEDIA_OTHER;break;default:return}b({errorcode:d})}function k(){n.on(r.MANIFEST_UPDATED,c,m),n.on(r.SERVICE_LOCATION_BLACKLIST_CHANGED,d,m),n.on(r.METRIC_ADDED,h,m),n.on(r.METRIC_UPDATED,h,m),n.on(r.PLAYBACK_ERROR,j,m),n.on(i.default.BECAME_REPORTING_PLAYER,e,m)}function l(){n.off(r.MANIFEST_UPDATED,c,m),n.off(r.SERVICE_LOCATION_BLACKLIST_CHANGED,d,m),n.off(r.METRIC_ADDED,h,m),n.off(r.METRIC_UPDATED,h,m),n.off(r.PLAYBACK_ERROR,j,m),n.off(i.default.BECAME_REPORTING_PLAYER,e,m)}a=a||{};var m=void 0,n=a.eventBus,o=a.metricsModel,p=void 0,q=a.metricsConstants,r=a.events;return m={initialise:k,reset:l},k(),m}Object.defineProperty(c,"__esModule",{value:!0});var f=a(136),g=d(f),h=a(118),i=d(h);e.__dashjs_factory_name="DVBErrorsTranslator",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{118:118,136:136}],132:[function(a,b,c){"use strict";function d(){return{reconstructFullMetricName:function(a,b,c){var d=a;return b&&(d+="("+b,c&&c.length&&(d+=","+c),d+=")"),d},validateN:function(a){if(!a)throw new Error("missing n");if(isNaN(a))throw new Error("n is NaN");if(a<0)throw new Error("n must be positive");return a}}}Object.defineProperty(c,"__esModule",{value:!0}),d.__dashjs_factory_name="HandlerHelpers",c.default=dashjs.FactoryMaker.getSingletonFactory(d),b.exports=c.default},{}],133:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b,c){var f,g,h=d.getMpd(a),i=0;return b?i=h.availabilityStartTime.getTime()/1e3:(f=this.getRegularPeriods(h),f.length&&(i=f[0].start)),g=i,c&&c.hasOwnProperty(e.START_TIME)&&(g+=c.starttime),g}function c(a){var c=[];return a.Metrics_asArray&&a.Metrics_asArray.forEach(function(f){var h=new g.default,j=d.getIsDynamic(a);f.hasOwnProperty("metrics")&&(h.metrics=f.metrics,f.Range_asArray&&f.Range_asArray.forEach(function(c){var e=new i.default;e.starttime=b(a,j,c),c.hasOwnProperty("duration")?e.duration=c.duration:e.duration=d.getDuration(a),e._useWallClockTime=j,h.Range.push(e)}),f.Reporting_asArray&&(f.Reporting_asArray.forEach(function(a){var b=new k.default;if(a.hasOwnProperty(e.SCHEME_ID_URI)){b.schemeIdUri=a.schemeIdUri;for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);h.Reporting.push(b)}}),c.push(h)))}),c}a=a||{};var d=a.dashManifestModel,e=a.constants;return{getMetrics:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(137),g=d(f),h=a(138),i=d(h),j=a(139),k=d(j);e.__dashjs_factory_name="ManifestParsing",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{137:137,138:138,139:139}],134:[function(a,b,c){"use strict";function d(){function a(b){var c=[],d=[],e=void 0,f=void 0;for(e in b)if(b.hasOwnProperty(e)&&0!==e.indexOf("_")){if(f=b[e],void 0!==f&&null!==f||(f=""),Array.isArray(f)){if(!f.length)continue;d=[],f.forEach(function(b){var c="Object"!==Object.prototype.toString.call(b).slice(8,-1);d.push(c?b:a(b))}),f=d.map(encodeURIComponent).join(",")}else"string"==typeof f?f=encodeURIComponent(f):f instanceof Date?f=f.toISOString():"number"==typeof f&&(f=Math.round(f));c.push(e+"="+f)}return c.join("&")}return{serialise:a}}Object.defineProperty(c,"__esModule",{value:!0}),d.__dashjs_factory_name="MetricSerialiser",c.default=dashjs.FactoryMaker.getSingletonFactory(d),b.exports=c.default},{}],135:[function(a,b,c){"use strict";function d(){function a(){c&&(g||(g=new d(f)),c.getRandomValues(g),h=0)}function b(b,d){var f=void 0;return b||(b=0),d||(d=1),c?(h===g.length&&a(),f=g[h]/e,h+=1):f=Math.random(),f*(d-b)+b}var c=window.crypto||window.msCrypto,d=Uint32Array,e=Math.pow(2,8*d.BYTES_PER_ELEMENT)-1,f=10,g=void 0,h=void 0,i=void 0;return i={random:b},a(),i}Object.defineProperty(c,"__esModule",{value:!0}),d.__dashjs_factory_name="RNG",c.default=dashjs.FactoryMaker.getSingletonFactory(d),b.exports=c.default},{}],136:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.mpdurl=null,this.errorcode=null,this.terror=null,this.url=null,this.ipaddress=null,this.servicelocation=null};e.SSL_CONNECTION_FAILED_PREFIX="SSL",e.DNS_RESOLUTION_FAILED="C00",e.HOST_UNREACHABLE="C01",e.CONNECTION_REFUSED="C02",e.CONNECTION_ERROR="C03",e.CORRUPT_MEDIA_ISOBMFF="M00",e.CORRUPT_MEDIA_OTHER="M01",e.BASE_URL_CHANGED="F00",e.BECAME_REPORTER="S00",c.default=e,b.exports=c.default},{}],137:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.metrics="",this.Range=[],this.Reporting=[]};c.default=e,b.exports=c.default},{}],138:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.starttime=0,this.duration=1/0,this._useWallClockTime=!1};c.default=e,b.exports=c.default},{}],139:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.schemeIdUri="",this.value=""};c.default=e,b.exports=c.default},{}],140:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(){function a(){i()}function b(a){a.dashManifestModel&&(o=a.dashManifestModel)}function c(a,b,c){var d=o.getBaseURLsFromElement(c);a[b]?q.areEqual(d,a[b].data.baseUrls)||(a[b].data.baseUrls=d,a[b].data.selectedIdx=k):a[b]=new l(d)}function d(a){var b=o.getBaseURLsFromElement(a);q.areEqual(b,n.data.baseUrls)||(n.data.baseUrls=b,n.data.selectedIdx=k),a.Period_asArray&&a.Period_asArray.forEach(function(a,b){c(n.children,b,a),a.AdaptationSet_asArray&&a.AdaptationSet_asArray.forEach(function(a,d){c(n.children[b].children,d,a),a.Representation_asArray&&a.Representation_asArray.sort(o.getRepresentationSortFunction()).forEach(function(a,e){c(n.children[b].children[d].children,e,a)})})})}function e(a,b){var c=b||n;a(c.data),c.children&&c.children.forEach(function(b){return e(a,b)})}function f(a){e(function(b){isNaN(b.selectedIdx)||a===b.baseUrls[b.selectedIdx].serviceLocation&&(b.selectedIdx=k)})}function g(a){d(a)}function i(){n=new l}function j(a){var b=n,c=[b.data];return a.forEach(function(a){(b=b.children[a])&&c.push(b.data)}),c.filter(function(a){return a.baseUrls.length})}var m=void 0,n=void 0,o=void 0,p=this.context,q=(0,h.default)(p).getInstance();return m={reset:i,update:g,getForPath:j,invalidateSelectedIndexes:f,setConfig:b},a(),m}Object.defineProperty(c,"__esModule",{value:!0});var g=a(201),h=d(g),i=a(51),j=d(i),k=NaN,l=function a(b,c){e(this,a),this.data={baseUrls:b||null,selectedIdx:c||k},this.children=[]};f.__dashjs_factory_name="BaseURLTreeModel",c.default=j.default.getClassFactory(f),b.exports=c.default},{201:201,51:51}],141:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){y(),C.on(i.default.LOADING_COMPLETED,w,F),C.on(i.default.LOADING_ABANDONED,x,F)}function c(a){G=a}function d(){return G}function e(a){var b=function(a,b){return a.url===b.url},c=function(a,b){return a.action===m.default.ACTION_COMPLETE&&a.action===b.action},d=function(a,b){return!isNaN(a.index)&&a.startTime===b.startTime&&a.adaptationIndex===b.adaptationIndex},e=function(a,b){return isNaN(a.index)&&isNaN(b.index)&&a.quality===b.quality},f=function(f){var g=!1;return f.some(function(f){if(b(a,f)&&(d(a,f)||e(a,f)||c(a,f)))return g=!0}),g};return!!a&&f(H)}function f(a){var b=!1,c=0,d=void 0;if(!(b=e(a)))for(c=0;c=a})}function k(){E.abort(),I=[]}function l(a){switch(a.action){case m.default.ACTION_COMPLETE:H.push(a),v(a,q),C.trigger(i.default.STREAM_COMPLETED,{request:a,fragmentModel:this});break;case m.default.ACTION_DOWNLOAD:v(a,p),I.push(a),n(a);break;default:B("Unknown request action.")}}function n(a){C.trigger(i.default.FRAGMENT_LOADING_STARTED,{sender:F,request:a}),E.load(a)}function r(a,b,c){for(var d=a.length-1,e=d;e>=0;e--){var f=a[e],g=f.startTime,h=g+f.duration;if(c=void 0!==c?c:f.duration/2,!isNaN(g)&&!isNaN(h)&&b+c>=g&&b-cR&&d[b].shift()}function s(a,b,c,d,e,f){var g=new m.default;return g.tcpid=b,g.dest=c,g.topen=d,g.tclose=e,g.tconnect=f,B(a,i.default.TCP_CONNECTION,g),g}function u(a,b,c,d){var e=new n.HTTPRequestTrace;return e.s=b,e.d=c,e.b=d,a.trace.push(e),a.interval||(a.interval=0),a.interval+=c,e}function w(a,b,c,d,e,f,g,h,j,k,l,m,o,p){var q=new n.HTTPRequest;return e&&e!==d&&(w(a,null,c,d,null,null,g,h,null,null,null,m,null,null),q.actualurl=e),q.tcpid=b,q.type=c,q.url=d,q.range=g,q.trequest=h,q.tresponse=j,q.responsecode=l,q._tfinish=k,q._stream=a,q._mediaduration=m,q._responseHeaders=o,q._serviceLocation=f,p?p.forEach(function(a){u(q,a.s,a.d,a.b)}):(delete q.interval,delete q.trace),B(a,i.default.HTTP_REQUEST,q),q}function z(a,b,c,d,e){var f=new p.default;return f.t=b,f.mt=c,f.to=d,e?f.lto=e:delete f.lto,B(a,i.default.TRACK_SWITCH,f),f}function B(a,b,c){q(a,b,c),f(a,b,c)}function D(a,b,c){var d=new r.default;return d.t=b,d.level=c,B(a,i.default.BUFFER_LEVEL,d),d}function F(a,b,c){var d=new t.default;return d.target=c,d.state=b,B(a,i.default.BUFFER_STATE,d),d}function H(a,b,c,d){var e=new v.default;return e.time=b,e.range=d,e.manifestInfo=c,B(a,i.default.DVR_INFO,e),e}function I(a,b){var c=new x.default,d=o(a).DroppedFrames;return c.time=b.creationTime,c.droppedFrames=b.droppedVideoFrames,d.length>0&&d[d.length-1]==c?d[d.length-1]:(B(a,i.default.DROPPED_FRAMES,c),c)}function J(a,b,c,d,e,f,g,h,j){var k=new A.default;return k.mediaType=a,k.t=b,k.type=c,k.startTime=d,k.availabilityStartTime=e,k.duration=f,k.quality=g,k.range=h,k.state=j,B(a,i.default.SCHEDULING_INFO,k),k}function K(a,b,c){var d=new E.default;d.loadingRequests=b,d.executedRequests=c,o(a).RequestsQueue=d,f(a,i.default.REQUESTS_QUEUE,d)}function L(a,b,c,d,e,h,j,k,l,m){var n=new y.ManifestUpdate;return n.mediaType=a,n.type=b,n.requestTime=c,n.fetchTime=d,n.availabilityStartTime=e,n.presentationStartTime=h,n.clientTimeOffset=j,n.currentTime=k,n.buffered=l,n.latency=m,q(g.default.STREAM,i.default.MANIFEST_UPDATE,n),f(a,i.default.MANIFEST_UPDATE,n),n}function M(a,b){if(a){for(var c in b)a[c]=b[c];e(a.mediaType,i.default.MANIFEST_UPDATE,a)}}function N(a,b,c,d,f){if(a){var g=new y.ManifestUpdateStreamInfo;return g.id=b,g.index=c,g.start=d,g.duration=f,a.streamInfo.push(g),e(a.mediaType,i.default.MANIFEST_UPDATE_STREAM_INFO,a),g}return null}function O(a,b,c,d,f,g,h,j){if(a){var k=new y.ManifestUpdateRepresentationInfo;return k.id=b,k.index=c,k.streamIndex=d,k.mediaType=f,k.startNumber=h,k.fragmentInfoType=j,k.presentationTimeOffset=g,a.representationInfo.push(k),e(a.mediaType,i.default.MANIFEST_UPDATE_TRACK_INFO,a),k}return null}function P(a){var b=g.default.STREAM;return a.trace&&Array.isArray(a.trace)?a.trace.forEach(function(a){a.hasOwnProperty("subreplevel")&&!a.subreplevel&&delete a.subreplevel}):delete a.trace,B(b,i.default.PLAY_LIST,a),a}function Q(a){return B(g.default.STREAM,i.default.DVB_ERRORS,a),a}var R=1e3,S=this.context,T=(0,C.default)(S).getInstance(),U=void 0,V=void 0,W=void 0;return U={clearCurrentMetricsForType:h,clearAllCurrentMetrics:j,getReadOnlyMetricsFor:l,getMetricsFor:o,addTcpConnection:s,addHttpRequest:w,addRepresentationSwitch:z,addBufferLevel:D,addBufferState:F,addDVRInfo:H,addDroppedFrames:I,addSchedulingInfo:J,addRequestsQueue:K,addManifestUpdate:L,updateManifestUpdateInfo:M,addManifestUpdateStreamInfo:N,addManifestUpdateRepresentationInfo:O,addPlayList:P,addDVBErrors:Q,setConfig:b},a(),U}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(101),i=d(h),j=a(216),k=d(j),l=a(232),m=d(l),n=a(226),o=a(229),p=d(o),q=a(222),r=d(q),s=a(223),t=d(s),u=a(224),v=d(u),w=a(225),x=d(w),y=a(227),z=a(231),A=d(z),B=a(50),C=d(B),D=a(230),E=d(D),F=a(54),G=d(F),H=a(51),I=d(H);e.__dashjs_factory_name="MetricsModel",c.default=I.default.getSingletonFactory(e),b.exports=c.default},{100:100,101:101,216:216,222:222,223:223,224:224,225:225,226:226,227:227,229:229,230:230,231:231,232:232,50:50,51:51,54:54}],145:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){f=new g.default,h=[],i=!1}function b(){return f}function c(){return h}function d(){return i}function e(a){function b(a,b,c,d){var e=d[0].split(/[=]/);return d.push({key:e[0],value:e[1]}),d.shift(),d}function c(a,b,c){return b>0&&(k&&0===h.length?h=c[b].split(/[&]/):l&&(d=c[b].split(/[&]/))),c}if(!a)return null;var d=[],e=new RegExp(/[?]/),g=new RegExp(/[#]/),j=new RegExp(/^(https:)?\/\//i),k=e.test(a),l=g.test(a);return i=j.test(a),a.split(/[?#]/).map(c),h.length>0&&(h=h.reduce(b,null)),d.length>0&&(d=d.reduce(b,null),d.forEach(function(a){f[a.key]=a.value})),a}var f=void 0,h=void 0,i=void 0;return{initialize:a,parseURI:e,getURIFragmentData:b,getURIQueryData:c,isManifestHTTPS:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(221),g=d(f),h=a(51),i=d(h);e.__dashjs_factory_name="URIQueryAndFragmentModel",c.default=i.default.getSingletonFactory(e),b.exports=c.default},{221:221,51:51}],146:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){X=[],_.on(k.default.PLAYBACK_PLAYING,v,this)}function b(){_.off(k.default.PLAYBACK_PLAYING,v,this)}function c(){U.playbackRate=Y||1,U.removeEventListener("canplay",c)}function d(a){U&&(U.readyState<=2&&a>0?U.addEventListener("canplay",c):U.playbackRate=a)}function e(a){if(U.currentTime!=a)try{U.currentTime=a}catch(b){0===U.readyState&&b.code===b.INVALID_STATE_ERR&&setTimeout(function(){U.currentTime=a},400)}}function f(){return U}function g(a){U=a,U.preload="auto"}function h(a){a?U.src=a:(U.removeAttribute("src"),U.load())}function j(){return U.src}function l(){return W}function n(a){W=a}function o(){return V}function p(a){V=a,V.style.position="absolute",V.style.display="flex",V.style.overflow="hidden",V.style.pointerEvents="none",V.style.top=0,V.style.left=0}function q(a,b){u(a,b)}function r(){return X.length>0}function s(a){var b=void 0;null===a||U.seeking||-1!==X.indexOf(a)||(X.push(a),1===X.length&&(b=document.createEvent("Event"),b.initEvent("waiting",!0,!1),Y=U.playbackRate,d(0),U.dispatchEvent(b)))}function t(a){var b=X.indexOf(a),c=void 0;null!==a&&(-1!==b&&X.splice(b,1),!1===r()&&0===U.playbackRate&&(d(Y||1),U.paused||(c=document.createEvent("Event"),c.initEvent("playing",!0,!1),U.dispatchEvent(c))))}function u(a,b){b?s(a):t(a)}function v(){if(U&&r()&&0===U.playbackRate){var a=document.createEvent("Event");a.initEvent("waiting",!0,!1),U.dispatchEvent(a)}}function w(){var a="webkitDroppedFrameCount"in U&&"webkitDecodedFrameCount"in U,b="getVideoPlaybackQuality"in U,c=null;return b?c=U.getVideoPlaybackQuality():a&&(c={droppedVideoFrames:U.webkitDroppedFrameCount,totalVideoFrames:U.webkitDroppedFrameCount+U.webkitDecodedFrameCount,creationTime:new Date}),c}function x(){if(U){U.autoplay=!0;var a=U.play();a&&"undefined"!=typeof Promise&&a instanceof Promise&&a.catch(function(a){"NotAllowedError"===a.name&&_.trigger(k.default.PLAYBACK_NOT_ALLOWED),$("Caught pending play exception - continuing ("+a+")")})}}function y(){return U?U.paused:null}function z(){U&&(U.pause(),U.autoplay=!1)}function A(){return U?U.seeking:null}function B(){return U?U.currentTime:null}function C(){return U?U.playbackRate:null}function D(){return U?U.played:null}function E(){return U?U.ended:null}function F(a,b){U&&U.addEventListener(a,b)}function G(a,b){U&&U.removeEventListener(a,b)}function H(){return U?U.readyState:NaN}function I(){return U?U.buffered:null}function J(){return U?U.clientWidth:NaN}function K(){return U?U.clientHeight:NaN}function L(){return U?U.videoWidth:NaN}function M(){return U?U.videoHeight:NaN}function N(){return U&&U.parentNode?U.getBoundingClientRect().top-U.parentNode.getBoundingClientRect().top:NaN}function O(){return U&&U.parentNode?U.getBoundingClientRect().left-U.parentNode.getBoundingClientRect().left:NaN}function P(){return U?U.textTracks:[]}function Q(a,b,c,d,e){if(U)for(var f=0;f0&&(b+=4+16*c.getUint32(b)),b+=4,a.slice(b)}},{key:"getPSSHForKeySystem",value:function(b,c){var d=a.parsePSSHList(c);return d.hasOwnProperty(b.uuid.toLowerCase())?d[b.uuid.toLowerCase()]:null}},{key:"parseInitDataFromContentProtection",value:function(a,b){return"pssh"in a?b.decodeArray(a.pssh.__text).buffer:null}},{key:"parsePSSHList",value:function(a){if(null===a)return[];for(var b=new DataView(a.buffer||a),c=!1,d={},e=0;!c;){var f=void 0,g=void 0,h=void 0,i=void 0,j=e;if(e>=b.buffer.byteLength)break;if(f=b.getUint32(e),g=e+f,e+=4,1886614376===b.getUint32(e))if(e+=4,0===(h=b.getUint8(e))||1===h){e++,e+=3,i="";var k=void 0,l=void 0;for(k=0;k<4;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;for(e+=4,i+="-",k=0;k<2;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;for(e+=2,i+="-",k=0;k<2;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;for(e+=2,i+="-",k=0;k<2;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;for(e+=2,i+="-",k=0;k<6;k++)l=b.getUint8(e+k).toString(16),i+=1===l.length?"0"+l:l;e+=6,i=i.toLowerCase(),b.getUint32(e),e+=4,d[i]=b.buffer.slice(j,g),e=g}else e=g;else e=g}return d}}]),a}();c.default=f,b.exports=c.default},{}],148:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){var c=null,e=(0,i.default)(d).getInstance();e.setConfig({log:a.log,BASE64:a.BASE64}),e.initialize();var f=b(a);return!c&&f&&(c=(0,g.default)(d).create({protectionModel:f,protectionKeyController:e,adapter:a.adapter,eventBus:a.eventBus,log:a.log,events:a.events,BASE64:a.BASE64,Constants:a.Constants}),a.capabilities.setEncryptedMediaSupported(!0)),c}function b(a){var b=a.log,e=a.eventBus,f=a.errHandler,g=a.videoModel.getElement();return void 0!==g.onencrypted&&void 0!==g.mediaKeys&&void 0!==navigator.requestMediaKeySystemAccess&&"function"==typeof navigator.requestMediaKeySystemAccess?(b("EME detected on this user agent! (ProtectionModel_21Jan2015)"),(0,m.default)(d).create({log:b,eventBus:e,events:a.events})):c(g,s)?(b("EME detected on this user agent! (ProtectionModel_3Feb2014)"),(0,o.default)(d).create({log:b,eventBus:e,events:a.events,api:c(g,s)})):c(g,r)?(b("EME detected on this user agent! (ProtectionModel_01b)"),(0,q.default)(d).create({log:b,eventBus:e,errHandler:f,events:a.events,api:c(g,r)})):(b("No supported version of EME detected on this user agent! - Attempts to play encrypted content will fail!"),null)}function c(a,b){for(var c=0;c0&&t(f,!0),L=!0}}function d(a){return y.getSupportedKeySystemsFromContentProtection(a)}function e(a,b){var c=g.default.getPSSHForKeySystem(O,a),d=r(O);if(c){for(var e=z.getAllInitData(),f=0;f0?b.audioRobustness:N,f=b&&b.videoRobustness&&b.videoRobustness.length>0?b.videoRobustness:N;return I&&c.push(new i.default(I.codec,e)),J&&d.push(new i.default(J.codec,f)),new k.default(c,d,"optional","temporary"===M?"optional":"required",[M])}function t(a,b){var c=this,d=[],f=void 0;if(O){for(f=0;f0&&z.setServerCertificate(E.decodeArray(g.serverCertificate).buffer);for(var h=0;h%CUSTOMDATA%',n=void 0;e.__dashjs_factory_name="KeySystemPlayReady",c.default=dashjs.FactoryMaker.getSingletonFactory(e),b.exports=c.default},{102:102,147:147}],154:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c=null;if(a){for(var d=JSON.parse(String.fromCharCode.apply(null,new Uint8Array(b))),e=[],f=0;f0&&(b=H.shift(),I.push(b),b.sessionID=a.sessionId):H.length>0&&(b=H.shift(),I.push(b),0!==H.length&&C.mediaKeyMessageError("Multiple key sessions were creates with a user-agent that does not support sessionIDs!! Unpredictable behavior ahead!")),b){var e=ArrayBuffer.isView(a.message)?a.message.buffer:a.message;b.keyMessage=e,y.trigger(z.INTERNAL_KEY_MESSAGE,{data:new m.default(b,e,a.defaultURL)})}else A("No session token found for key message")}}}}function v(a,b){if(b&&a){for(var c=a.length,d=0;d0&&(e=G.ksConfiguration.videoCapabilities[0]),null===e&&null!==G.ksConfiguration.audioCapabilities&&G.ksConfiguration.audioCapabilities.length>0&&(e=G.ksConfiguration.audioCapabilities[0]),null===e)throw new Error("Can not create sessions for unknown content types.");var f=e.contentType,g=F.createSession(f,new Uint8Array(a),d?new Uint8Array(d):null),h=w(g,a);g.addEventListener(B.error,h),g.addEventListener(B.message,h),g.addEventListener(B.ready,h),g.addEventListener(B.close,h),H.push(h),A("DRM: Session created. SessionID = "+h.getSessionID()),y.trigger(z.KEY_SESSION_CREATED,{data:h})}function n(a,b){var c=a.session;J.isClearKey(E)?c.update(new Uint8Array(b.toJWK())):c.update(new Uint8Array(b))}function p(a){var b=a.session;b.removeEventListener(B.error,a),b.removeEventListener(B.message,a),b.removeEventListener(B.ready,a),b.removeEventListener(B.close,a);for(var c=0;c=1?b():(a=b.bind(this),D.addEventListener("loadedmetadata",a))}function w(a,b){return{session:a,initData:b,getSessionID:function(){return this.session.sessionId},getExpirationTime:function(){return NaN},getSessionType:function(){return"temporary"},handleEvent:function(a){switch(a.type){case B.error:y.trigger(z.KEY_ERROR,{data:new k.default(this,"KeyError")});break;case B.message:var b=ArrayBuffer.isView(a.message)?a.message.buffer:a.message;y.trigger(z.INTERNAL_KEY_MESSAGE,{data:new m.default(this,b,a.destinationURL)});break;case B.ready:A("DRM: Key added."),y.trigger(z.KEY_ADDED);break;case B.close:A("DRM: Session closed. SessionID = "+this.getSessionID()),y.trigger(z.KEY_SESSION_CLOSED,{data:this.getSessionID()})}}}}a=a||{};var x=this.context,y=a.eventBus,z=a.events,A=a.log,B=a.api,C=void 0,D=void 0,E=void 0,F=void 0,G=void 0,H=void 0,I=void 0,J=void 0;return C={getAllInitData:e,requestKeySystemAccess:f,getKeySystem:d,selectKeySystem:h,setMediaElement:j,createKeySession:l,updateKeySession:n,closeKeySession:p,setServerCertificate:r,loadKeySession:s,removeKeySession:t,reset:c},b(),C}Object.defineProperty(c,"__esModule",{value:!0});var f=a(151),g=d(f),h=a(170),i=d(h),j=a(164),k=d(j),l=a(165),m=d(l),n=a(168),o=d(n),p=a(167),q=d(p);e.__dashjs_factory_name="ProtectionModel_3Feb2014",c.default=dashjs.FactoryMaker.getClassFactory(e),b.exports=c.default},{151:151,164:164,165:165,167:167,168:168,170:170}],159:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){var c=JSON.parse(String.fromCharCode.apply(null,new Uint8Array(b)));a+="/?";for(var d=0;dj){var h=e.shift();d[h.idx].drops-=h.drop,d[h.idx].dropSize-=h.dropSize,d[h.idx].noDrops-=h.noDrop}}function b(){return d}function c(){d=[],e=[]}var d=[],e=[];return{push:a,getSwitchRequests:b,reset:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(173),i=d(h),j=8;e.__dashjs_factory_name="SwitchRequestHistory";var k=g.default.getClassFactory(e);c.default=k,b.exports=c.default},{173:173,51:51}],175:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){H={throughputHalfLife:{fast:x,slow:w},latencyHalfLife:{fast:z,slow:y}},p()}function c(a,b,c){return a===g.default.VIDEO?c0&&!D[a].hasCachedEntries)return;D[a].hasCachedEntries=!0}else D[a]&&D[a].hasCachedEntries&&o(a);D[a].push(j),D[a].length>q&&D[a].shift(),E[a].push(f),E[a].length>q&&E[a].shift(),e(F[a],j,.001*g,H.throughputHalfLife),e(G[a],f,1,H.latencyHalfLife)}}function e(a,b,c,d){var e=Math.pow(.5,c/d.fast);a.fastEstimate=(1-e)*b+e*a.fastEstimate;var f=Math.pow(.5,c/d.slow);a.slowEstimate=(1-f)*b+f*a.slowEstimate,a.totalWeight+=c}function f(a,b,c){var d=void 0,e=void 0;if(a?(d=D[b],e=c?r:s):(d=E[b],e=t),d){if(e>=d.length)e=d.length;else if(a)for(var f=1;f=v||g<=1/u)&&(e+=1)===d.length)break}}else e=0;return e}function h(a,b,c){return C.getMovingAverageMethod()!==g.default.MOVING_AVERAGE_SLIDING_WINDOW?j(a,b):i(a,b,c)}function i(a,b,c){var d=f(a,b,c),e=a?D:E,g=e[b];return 0!==d&&g&&0!==g.length?(g=g.slice(-d),g.reduce(function(a,b){return a+b})/g.length):NaN}function j(a,b){var c=a?H.throughputHalfLife:H.latencyHalfLife,d=a?F[b]:G[b];if(!d||d.totalWeight<=0)return NaN;var e=d.fastEstimate/(1-Math.pow(.5,d.totalWeight/c.fast)),f=d.slowEstimate/(1-Math.pow(.5,d.totalWeight/c.slow));return a?Math.min(e,f):Math.max(e,f)}function k(a,b){return h(!0,a,b)}function l(a,b){var c=k(a,b);return isNaN(c)||(c*=C.getBandwidthSafetyFactor()),c}function m(a){return h(!1,a)}function n(a){D[a]=D[a]||[],E[a]=E[a]||[],F[a]=F[a]||{fastEstimate:0,slowEstimate:0,totalWeight:0},G[a]=G[a]||{fastEstimate:0,slowEstimate:0,totalWeight:0}}function o(a){delete D[a],delete E[a],delete F[a],delete G[a],n(a)}function p(){D={},E={},F={},G={}}a=a||{};var q=20,r=3,s=4,t=4,u=1.3,v=1.3,w=8,x=3,y=2,z=1,A=50,B=5,C=a.mediaPlayerModel,D=void 0,E=void 0,F=void 0,G=void 0,H=void 0,I={push:d,getAverageThroughput:k,getSafeAverageThroughput:l,getAverageLatency:m,reset:p};return b(),I}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(51),i=d(h);e.__dashjs_factory_name="ThroughputHistory",c.default=i.default.getClassFactory(e),b.exports=c.default},{100:100,51:51}],176:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){r=[],s=[],l.getUseDefaultABRRules()&&(r.push((0,q.default)(j).create({metricsModel:n,dashMetrics:p,mediaPlayerModel:l})),r.push((0,g.default)(j).create({metricsModel:n,dashMetrics:p})),r.push((0,i.default)(j).create({metricsModel:n,dashMetrics:p})),r.push((0,o.default)(j).create()),r.push((0,m.default)(j).create()),s.push((0,k.default)(j).create({metricsModel:n,dashMetrics:p,mediaPlayerModel:l}))),l.getABRCustomRules().forEach(function(a){a.type===v&&r.push(a.rule(j).create()),a.type===w&&s.push(a.rule(j).create())})}function c(a){return a.filter(function(a){return a.quality>u.default.NO_CHANGE})}function d(a){var b={},c=void 0,d=void 0,e=void 0,f=void 0,g=void 0;if(0!==a.length){for(b[u.default.PRIORITY.STRONG]=u.default.NO_CHANGE,b[u.default.PRIORITY.WEAK]=u.default.NO_CHANGE,b[u.default.PRIORITY.DEFAULT]=u.default.NO_CHANGE,c=0,d=a.length;cu.default.NO_CHANGE?Math.min(b[e.priority],e.quality):e.quality);return b[u.default.PRIORITY.WEAK]!==u.default.NO_CHANGE&&(f=b[u.default.PRIORITY.WEAK]),b[u.default.PRIORITY.DEFAULT]!==u.default.NO_CHANGE&&(f=b[u.default.PRIORITY.DEFAULT]),b[u.default.PRIORITY.STRONG]!==u.default.NO_CHANGE&&(f=b[u.default.PRIORITY.STRONG]),f!==u.default.NO_CHANGE&&(g=f),(0,u.default)(j).create(g)}}function e(a){return d(c(r.map(function(b){return b.getMaxIndex(a)})))||(0,u.default)(j).create()}function f(a){return d(c(s.map(function(b){return b.shouldAbandon(a)})))||(0,u.default)(j).create()}function h(){[r,s].forEach(function(a){a&&a.length&&a.forEach(function(a){return a.reset&&a.reset()})}),r=[],s=[]}a=a||{};var j=this.context,l=a.mediaPlayerModel,n=a.metricsModel,p=a.dashMetrics,r=void 0,s=void 0;return{initialize:b,reset:h,getMaxQuality:e,shouldAbandonFragment:f}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(182),g=d(f),h=a(180),i=d(h),j=a(177),k=d(j),l=a(179),m=d(l),n=a(181),o=d(n),p=a(178),q=d(p),r=a(51),s=d(r),t=a(173),u=d(t),v="qualitySwitchRules",w="abandonFragmentRules";e.__dashjs_factory_name="ABRRulesCollection";var x=s.default.getClassFactory(e);x.QUALITY_SWITCH_RULES=v,x.ABANDON_FRAGMENT_RULES=w,s.default.updateSingletonFactory(e.__dashjs_factory_name,x),c.default=x,b.exports=c.default},{173:173,177:177,178:178,179:179,180:180,181:181,182:182,51:51}],177:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){h()}function c(a,b){r[a]=r[a]||{},r[a][b]=r[a][b]||{}}function d(a,b){t[a]=t[a]||[],t[a].push(b)}function f(a){var b=(0,g.default)(m).create(g.default.NO_CHANGE,{name:e.__dashjs_factory_name});if(!(a&&a.hasOwnProperty("getMediaInfo")&&a.hasOwnProperty("getMediaType")&&a.hasOwnProperty("getCurrentRequest")&&a.hasOwnProperty("getRepresentationInfo")&&a.hasOwnProperty("getAbrController")))return b;var f=a.getMediaInfo(),h=a.getMediaType(),k=a.getCurrentRequest();if(!isNaN(k.index)){c(h,k.index);var u=o.getStableBufferTime();if(q.getCurrentBufferLevel(p.getReadOnlyMetricsFor(h))>u)return b;var v=r[h][k.index];if(null===v||null===k.firstByteDate||s.hasOwnProperty(v.id))return b;if(void 0===v.firstByteTime&&(t[h]=[],v.firstByteTime=k.firstByteDate.getTime(),v.segmentDuration=k.duration,v.bytesTotal=k.bytesTotal,v.id=k.index),v.bytesLoaded=k.bytesLoaded,v.elapsedTime=(new Date).getTime()-v.firstByteTime,v.bytesLoaded>0&&v.elapsedTime>0&&d(h,Math.round(8*v.bytesLoaded/v.elapsedTime)),t[h].length>=l&&v.elapsedTime>j&&v.bytesLoadedv.bytesTotal*z[A].bitrate/z[x.getQualityFor(h,f.streamInfo)].bitrate&&(b.quality=A,b.reason.throughput=v.measuredBandwidthInKbps,b.reason.fragmentID=v.id,s[v.id]=v,n("AbandonRequestsRule ( ",h,"frag id",v.id,") is asking to abandon and switch to quality to ",A," measured bandwidth was",v.measuredBandwidthInKbps),delete r[h][v.id])}}else v.bytesLoaded===v.bytesTotal&&delete r[h][v.id]}return b}function h(){r={},s={},t=[]}a=a||{};var i=1.8,j=500,l=5,m=this.context,n=(0,k.default)(m).getInstance().log,o=a.mediaPlayerModel,p=a.metricsModel,q=a.dashMetrics,r=void 0,s=void 0,t=void 0,u={shouldAbandon:f,reset:h};return b(),u}Object.defineProperty(c,"__esModule",{value:!0});var f=a(173),g=d(f),h=a(51),i=d(h),j=a(49),k=d(j);e.__dashjs_factory_name="AbandonRequestsRule",c.default=i.default.getClassFactory(e),b.exports=c.default},{173:173,49:49,51:51}],178:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){H(),O.on(p.default.BUFFER_EMPTY,y,P),O.on(p.default.PLAYBACK_SEEKING,z,P),O.on(p.default.PERIOD_SWITCH_STARTED,A,P),O.on(p.default.MEDIA_FRAGMENT_LOADED,B,P),O.on(p.default.METRIC_ADDED,C,P),O.on(p.default.QUALITY_CHANGE_REQUESTED,E,P),O.on(p.default.FRAGMENT_LOADING_ABANDONED,F,P)}function c(a){return a.map(function(a){return Math.log(a)})}function d(a,b,c){var d=c.reduce(function(a,b,d){return b>c[a]?d:a},0);if(0===d)return null;var e=Math.max(a,v+w*b.length),f=(c[d]-1)/(e/v-1);return{gp:f,Vp:v/f}}function e(a){var b={},e=a.getMediaInfo(),g=e.bitrateList.map(function(a){return a.bandwidth}),h=c(g);h=h.map(function(a){return a-h[0]+1});var i=N.getStableBufferTime(),j=d(i,g,h);return j?(b.state=t,b.bitrates=g,b.utilities=h,b.stableBufferTime=i,b.Vp=j.Vp,b.gp=j.gp,b.lastQuality=0,f(b)):b.state=s,b}function f(a){a.placeholderBuffer=0,a.mostAdvancedSegmentStart=NaN,a.lastSegmentWasReplacement=!1,a.lastSegmentStart=NaN,a.lastSegmentDurationS=NaN,a.lastSegmentRequestTimeMs=NaN,a.lastSegmentFinishTimeMs=NaN}function h(a,b){var c=N.getStableBufferTime();if(a.stableBufferTime!==c){var e=d(c,a.bitrates,a.utilities);if(e.Vp!==a.Vp||e.gp!==a.gp){var f=L.getCurrentBufferLevel(M.getReadOnlyMetricsFor(b)),g=f+a.placeholderBuffer;g-=v,g*=e.Vp/a.Vp,g+=v,a.stableBufferTime=c,a.Vp=e.Vp,a.gp=e.gp,a.placeholderBuffer=Math.max(0,g-f)}}}function j(a){var b=a.getMediaType(),c=Q[b];return c?c.state!==s&&h(c,b):(c=e(a),Q[b]=c),c}function k(a,b){for(var c=a.bitrates.length,d=NaN,e=NaN,f=0;f=e)&&(e=g,d=f)}return d}function m(a,b){return a.Vp*(a.utilities[b]+a.gp)}function o(a,b){for(var c=a.bitrates[b],d=a.utilities[b],e=0,f=b-1;f>=0;--f)if(a.utilities[f]b.mostAdvancedSegmentStart?(b.mostAdvancedSegmentStart=c,b.lastSegmentWasReplacement=!1):b.lastSegmentWasReplacement=!0,b.lastSegmentStart=c,b.lastSegmentDurationS=a.chunk.duration,b.lastQuality=a.chunk.quality,D(b,a.chunk.mediaInfo.type)}}}function C(a){if(a&&a.metric===g.default.HTTP_REQUEST&&a.value&&a.value.type===l.HTTPRequest.MEDIA_SEGMENT_TYPE&&a.value.trace&&a.value.trace.length){var b=Q[a.mediaType];b&&b.state!==s&&(b.lastSegmentRequestTimeMs=a.value.trequest.getTime(),b.lastSegmentFinishTimeMs=a.value._tfinish.getTime(),D(b,a.mediaType))}}function D(a,b){if(!isNaN(a.lastSegmentStart)&&!isNaN(a.lastSegmentRequestTimeMs)&&!isNaN(a.placeholderBuffer)){if(a.placeholderBuffer*=x,!isNaN(a.lastSegmentFinishTimeMs)){var c=L.getCurrentBufferLevel(M.getReadOnlyMetricsFor(b)),d=c+.001*(a.lastSegmentFinishTimeMs-a.lastSegmentRequestTimeMs),e=m(a,a.lastQuality),f=Math.max(0,e-d);a.placeholderBuffer=Math.min(f,a.placeholderBuffer)}a.lastSegmentWasReplacement&&!isNaN(a.lastSegmentDurationS)&&(a.placeholderBuffer+=a.lastSegmentDurationS),a.lastSegmentStart=NaN,a.lastSegmentRequestTimeMs=NaN}}function E(a){if(a){var b=Q[a.mediaType];b&&b.state!==s&&(b.abrQuality=a.newQuality)}}function F(a){if(a){var b=Q[a.mediaType];if(b&&b.state!==s){var c=L.getCurrentBufferLevel(M.getReadOnlyMetricsFor(a.mediaType)),d=void 0;d=b.abrQuality>0?o(b,b.abrQuality):v;var e=Math.max(0,d-c);b.placeholderBuffer=Math.min(b.placeholderBuffer,e)}}}function G(a){var b=a.getMediaInfo(),c=a.getMediaType(),d=M.getReadOnlyMetricsFor(c),e=a.getStreamProcessor(),g=a.getStreamInfo(),h=a.getAbrController(),l=h.getThroughputHistory(),n=g?g.id:null,p=g&&g.manifestInfo&&g.manifestInfo.isDynamic,r=a.useBufferOccupancyABR(),v=(0,i.default)(J).create();if(v.reason=v.reason||{},!r)return v;e.getScheduleController().setTimeToLoadDelay(0);var w=j(a);if(w.state===s)return K("BOLA ABR rule invoked for media type '"+c+"' with only one bitrate."),v;var x=L.getCurrentBufferLevel(d),y=l.getAverageThroughput(c,p),z=l.getSafeAverageThroughput(c,p),A=l.getAverageLatency(c),B=void 0;if(v.reason.state=w.state,v.reason.throughput=y,v.reason.latency=A,isNaN(y))return v;switch(w.state){case t:B=h.getQualityForBitrate(b,z,A),v.quality=B,v.reason.throughput=z,w.placeholderBuffer=Math.max(0,o(w,B)-x),w.lastQuality=B,!isNaN(w.lastSegmentDurationS)&&x>=w.lastSegmentDurationS&&(w.state=u);break;case u:q(w,c),B=k(w,x+w.placeholderBuffer);var C=h.getQualityForBitrate(b,z,A);B>w.lastQuality&&B>C&&(B=Math.max(C,w.lastQuality));var D=Math.max(0,x+w.placeholderBuffer-m(w,B));D<=w.placeholderBuffer?(w.placeholderBuffer-=D,D=0):(D-=w.placeholderBuffer,w.placeholderBuffer=0,Be&&h/j>d)){k=l-1,c("DroppedFramesRule, index: "+k+" Dropped Frames: "+h+" Total Frames: "+j);break}return(0,i.default)(b).create(k,{droppedFrames:h})}return(0,i.default)(b).create()}var b=this.context,c=(0,k.default)(b).getInstance().log,d=.15,e=375;return{getMaxIndex:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(173),i=d(h),j=a(49),k=d(j);e.__dashjs_factory_name="DroppedFramesRule",c.default=g.default.getClassFactory(e),b.exports=c.default},{173:173,49:49,51:51}],180:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){f(),p.on(k.default.PLAYBACK_SEEKING,h,t)}function c(){if(!(r&&r.hasOwnProperty("getReadOnlyMetricsFor")&&s&&s.hasOwnProperty("getCurrentBufferLevel")))throw new Error("Missing config parameter(s)")}function d(a){var b=(0,q.default)(m).create();if(!a||!a.hasOwnProperty("getMediaType"))return b;c();var d=a.getMediaType(),f=r.getReadOnlyMetricsFor(d),h=f.BufferState.length>0?f.BufferState[f.BufferState.length-1]:null,i=a.getRepresentationInfo(),j=i.fragmentDuration;if(!h||!e(d,h)||!j)return b;if(h.state===g.default.BUFFER_EMPTY)n("Switch to index 0; buffer is empty."),b.quality=0,b.reason="InsufficientBufferRule: Buffer is empty";else{var k=a.getMediaInfo(),o=a.getAbrController(),p=o.getThroughputHistory(),t=s.getCurrentBufferLevel(f),u=p.getAverageThroughput(d),v=p.getAverageLatency(d),w=u*(t/j)*l;b.quality=o.getQualityForBitrate(k,w,v),b.reason="InsufficientBufferRule: being conservative to avoid immediate rebuffering"}return b}function e(a,b){u[a]=u[a]||{};var c=!1;return u[a].firstBufferLoadedEvent?c=!0:b&&b.state===g.default.BUFFER_LOADED&&(u[a].firstBufferLoadedEvent=!0,c=!0),c}function f(){u={}}function h(){f()}function j(){f(),p.off(k.default.PLAYBACK_SEEKING,h,t)}a=a||{};var l=.5,m=this.context,n=(0,o.default)(m).getInstance().log,p=(0,i.default)(m).getInstance(),r=a.metricsModel,s=a.dashMetrics,t=void 0,u=void 0;return t={getMaxIndex:d,reset:j},b(),t}Object.defineProperty(c,"__esModule",{value:!0});var f=a(106),g=d(f),h=a(50),i=d(h),j=a(54),k=d(j),l=a(51),m=d(l),n=a(49),o=d(n),p=a(173),q=d(p);e.__dashjs_factory_name="InsufficientBufferRule",c.default=m.default.getClassFactory(e),b.exports=c.default},{106:106,173:173,49:49,50:50,51:51,54:54}],181:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){for(var f=a?a.getSwitchHistory():null,g=f?f.getSwitchRequests():[],h=0,i=0,j=0,l=(0,k.default)(b).create(),m=0;m=e&&h/i>d)){l.quality=m>0&&g[m].drops>0?m-1:m,l.reason={index:l.quality,drops:h,noDrops:i,dropSize:j},c("Switch history rule index: "+l.quality+" samples: "+(h+i)+" drops: "+h);break}return l}var b=this.context,c=(0,i.default)(b).getInstance().log,d=.075,e=6;return{getMaxIndex:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(49),i=d(h),j=a(173),k=d(j);e.__dashjs_factory_name="SwitchHistoryRule",c.default=g.default.getClassFactory(e),b.exports=c.default},{173:173,49:49,51:51}],182:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){if(!h||!h.hasOwnProperty("getReadOnlyMetricsFor"))throw new Error("Missing config parameter(s)")}function c(a){var c=(0,o.default)(e).create();if(!(a&&a.hasOwnProperty("getMediaInfo")&&a.hasOwnProperty("getMediaType")&&a.hasOwnProperty("useBufferOccupancyABR")&&a.hasOwnProperty("getAbrController")&&a.hasOwnProperty("getStreamProcessor")))return c;b();var d=a.getMediaInfo(),j=a.getMediaType(),k=h.getReadOnlyMetricsFor(j),l=a.getStreamProcessor(),m=a.getAbrController(),n=a.getStreamInfo(),p=n&&n.manifestInfo?n.manifestInfo.isDynamic:null,q=m.getThroughputHistory(),r=q.getSafeAverageThroughput(j,p),s=q.getAverageLatency(j),t=k.BufferState.length>0?k.BufferState[k.BufferState.length-1]:null,u=a.useBufferOccupancyABR();return!k||isNaN(r)||!t||u?c:(m.getAbandonmentStateFor(j)!==i.default.ABANDON_LOAD&&(t.state===g.default.BUFFER_LOADED||p)&&(c.quality=m.getQualityForBitrate(d,r,s),l.getScheduleController().setTimeToLoadDelay(0),f("ThroughputRule requesting switch to index: ",c.quality,"type: ",j,"Average throughput",Math.round(r),"kbps"),c.reason={throughput:r,latency:s}),c)}function d(){}a=a||{};var e=this.context,f=(0,m.default)(e).getInstance().log,h=a.metricsModel;return{ +getMaxIndex:c,reset:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(106),g=d(f),h=a(103),i=d(h),j=a(51),k=d(j),l=a(49),m=d(l),n=a(173),o=d(n);e.__dashjs_factory_name="ThroughputRule",c.default=k.default.getClassFactory(e),b.exports=c.default},{103:103,106:106,173:173,49:49,51:51}],183:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){}function c(a,b,c){return e.getCurrentBufferLevel(f.getReadOnlyMetricsFor(b))=h.getLongFormContentDurationThreshold();d=n?h.getBufferTimeAtTopQualityLongForm():h.getBufferTimeAtTopQuality()}else d=h.getStableBufferTime()}return d}a=a||{};var e=a.dashMetrics,f=a.metricsModel,h=a.mediaPlayerModel,i=a.textController,j=a.abrController,k={execute:c,getBufferTarget:d};return b(),k}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(51),i=d(h);e.__dashjs_factory_name="BufferLevelRule",c.default=i.default.getClassFactory(e),b.exports=c.default},{100:100,51:51}],184:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c=a.getCurrentRepresentationInfo(),i=c.mediaInfo,j=i.type,k=a.getScheduleController(),l=k.getSeekTarget(),m=!isNaN(l),n=a.getBuffer(),o=m?l:e.getIndexHandlerTime(a);if(isNaN(o)||j===g.default.FRAGMENTED_TEXT&&h.getAllTracksAreDisabled())return null;if(m&&k.setSeekTarget(NaN),n){var p=f.getBufferRange(n,o);null!==p&&(d("Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end.",o," was changed to ",p.end),o=p.end)}var q=void 0;if(b)o=b.startTime+b.duration/2,q=e.getFragmentRequestForTime(a,c,o,{timeThreshold:0,ignoreIsFinished:!0});else{for(q=e.getFragmentRequestForTime(a,c,o,{keepIdx:!m});a.getFragmentModel().isFragmentLoaded(q);)q=e.getNextFragmentRequest(a,c);q&&(e.setIndexHandlerTime(a,q.startTime+q.duration),q.delayLoadingTime=(new Date).getTime()+k.getTimeToLoadDelay(),k.setTimeToLoadDelay(0))}return q}a=a||{};var c=this.context,d=(0,i.default)(c).getInstance().log,e=a.adapter,f=a.sourceBufferController,h=a.textController;return{execute:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(49),i=d(h),j=a(51),k=d(j);e.__dashjs_factory_name="NextFragmentRequestRule",c.default=k.default.getClassFactory(e),b.exports=c.default},{100:100,49:49,51:51}],185:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){for(var b="",c=0;c0&&(o.spans.push({name:p,line:w,row:t}),w="");var C="style_cea608_"+B.foreground+"_"+B.background;B.underline&&(C+="_underline"),B.italics&&(C+="_italics"),r.hasOwnProperty(C)||(r[C]=JSON.parse(JSON.stringify(B))),x=B,p=C}w+=A.uchar}w.trim().length>0&&o.spans.push({name:p,line:w,row:t}),m=!0,n=y}else m=!1,n=-1,k&&(k.p.push(o),o={start:g,end:i,spans:[]},k.y2=t,k.name="region_"+k.x+"_"+k.y1+"_"+k.y2,!1===q.hasOwnProperty(k.name)?(s.push(k),q[k.name]=k):(l=q[k.name],l.p.contat(k.p)),k=null)}k&&(k.p.push(o),k.y2=t+1,k.name="region_"+k.x+"_"+k.y1+"_"+k.y2,!1===q.hasOwnProperty(k.name)?(s.push(k),q[k.name]=k):(l=q[k.name],l.p.contat(k.p)),k=null);var D=[];for(t=0;t0){if(0!==u&&M!=N.row){var O=document.createElement("br");O.className="lineBreak",J.appendChild(O)}var P=!1;M===N.row&&(P=!0),M=N.row;var Q=r[N.name],R=document.createElement("span");R.className="spanPadding "+N.name+" customSpanColor",R.style.cssText=d(c,Q),0!==u&&P?u===L.spans.length-1?R.textContent=f(N.line):R.textContent=N.line:L.spans.length>1&&u0?d[b.roles[0]]:d.caption;return a=a===d.caption||a===d.subtitle?a:d.caption},f=function(){var a=!1;return b.codec&&b.codec.search(g.default.STPP)>=0&&(a=!0),b.mimeType&&b.mimeType.search(g.default.TTML)>=0&&(a=!0),a};c.captionData=a,c.lang=b.lang,c.label=b.id,c.index=b.index,c.isTTML=f(),c.defaultTrack=r(b),c.isFragmented=Q,c.isEmbedded=!!b.isEmbedded,c.kind=e(),c.roles=b.roles;var h=(O?O.length:0)+Z.length;P.addTextTrack(c,h)}var d=void 0,e=void 0,f=void 0,i=void 0,k=void 0,l=void 0,m=void 0,n=b.mediaInfo,o=n.type,p=n.mimeType,t=n.codec||p;if(!t)return void y("No text type defined");if(o===g.default.FRAGMENTED_TEXT)if(S)if(l=N.getSamplesInfo(a),e=l.sampleList,!X&&e.length>0&&(X=e[0].cts-b.start*T),t.search(g.default.STPP)>=0)for(K=null!==K?K:s(t),f=0;f0&&P.addCaptions(Y,0,J)}else{for(S=!0,f=0;f0&&(f.cts!==h?i=0:i+=1,c.fields[l].push([f.cts,k[l],i]),h=f.cts);return c.fields.forEach(function(a){a.sort(function(a,b){return a[0]===b[0]?a[2]-b[2]:a[0]-b[0]})}),c}function r(a){var b=!1;return Z.length>1&&a.isEmbedded?b=a.id&&a.id===g.default.CC1:1===Z.length?a.id&&"CC"===a.id.substring(0,2)&&(b=!0):0===Z.length&&(b=a.index===O[0].index),b}function s(a){var b=void 0;return a.search(g.default.VTT)>=0?b=L:(a.search(g.default.TTML)>=0||a.search(g.default.STPP)>=0)&&(b=M),b}function u(a,b){void 0===a&&a===b&&(a=this.buffered.start(0),b=this.buffered.end(this.buffered.length-1)),this.buffered.remove(a,b)}var w=this.context,y=(0,t.default)(w).getInstance().log,A=(0,D.default)(w).getInstance(),C=!1,E=void 0,G=void 0,H=void 0,I=void 0,J=void 0,K=void 0,L=void 0,M=void 0,N=void 0,O=void 0,P=void 0,Q=void 0,R=void 0,S=void 0,T=void 0,U=void 0,V=void 0,W=void 0,X=void 0,Y=void 0,Z=void 0,$=void 0,_=void 0,aa=void 0,ba=void 0,ca=void 0,da=void 0;return{initialize:a,append:o,abort:b,addEmbeddedTrack:f,resetEmbedded:e,setConfig:i,getConfig:k,setCurrentFragmentedTrackIdx:m,remove:u}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(100),g=d(f),h=a(226),i=a(220),j=d(i),k=a(74),l=d(k),m=a(192),n=d(m),o=a(194),p=d(o),q=a(51),r=d(q),s=a(49),t=d(s),u=a(190),v=d(u),w=a(185),x=d(w),y=a(11),z=d(y),A=a(2),B=d(A),C=a(50),D=d(C),E=a(54),F=d(E);e.__dashjs_factory_name="TextSourceBuffer",c.default=r.default.getSingletonFactory(e),b.exports=c.default},{100:100,11:11,185:185,190:190,192:192,194:194,2:2,220:220,226:226,49:49,50:50,51:51,54:54,74:74}],190:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){"undefined"!=typeof window&&"undefined"!=typeof navigator&&(G=window.VTTCue||window.TextTrackCue,I=[],J=[],K=-1,L=0,M=0,N=0,O=0,P=null,Q=null,T=!1,U=2147483647,R=!!navigator.userAgent.match(/Chrome/)&&!navigator.userAgent.match(/Edge/),void 0!==document.fullscreenElement?S="fullscreenElement":void 0!==document.webkitIsFullScreen?S="webkitIsFullScreen":document.msFullscreenElement?S="msFullscreenElement":document.mozFullScreen&&(S="mozFullScreen"))}function b(a){var b=I[a].kind,c=void 0!==I[a].label?I[a].label:I[a].lang,d=I[a].lang,e=I[a].isTTML,f=I[a].isEmbedded,g=R?document.createElement("track"):H.addTextTrack(b,c,d);return R&&(g.kind=b,g.label=c,g.srclang=d),g.isEmbedded=f,g.isTTML=e,g}function c(a){T=a,P&&!document[S]&&(P.style.zIndex=a?U:null)}function d(a,c){if(I.length===c)return void F("Trying to add too many tracks.");if(I.push(a),I.length===c){I.sort(function(a,b){return a.index-b.index}),P=H.getTTMLRenderingDiv();for(var d=-1,e=0;e=0)for(var i=0;ih?(j=b,i=j/d*c):(i=a,j=i/c*d);var k=0,l=0,m=0,n=0;return i/j>e?(n=j,m=j*e):(m=i,n=i/e),k=(a-m)/2,l=(b-n)/2,f?{x:k+.1*m,y:l+.1*n,w:.8*m,h:.8*n}:{x:k,y:l,w:m,h:n}}function f(a){var b=H.getClientWidth(),c=H.getClientHeight(),d=H.getVideoWidth(),f=H.getVideoHeight(),g=H.getVideoRelativeOffsetTop(),h=H.getVideoRelativeOffsetLeft(),i=d/f,j=!1;a.isFromCEA608&&(i=3.5/3,j=!0);var k=e.call(this,b,c,d,f,i,j),l=k.w,m=k.h,n=k.x,o=k.y;if(l!=N||m!=O||n!=L||o!=M){L=n+h,M=o+g,N=l,O=m,P.style.left=L+"px",P.style.top=M+"px",P.style.width=N+"px",P.style.height=O+"px";for(var p=0;a.activeCues&&p=0&&I[a]?H.getTextTrack(I[a].kind,I[a].label,I[a].lang,I[a].isTTML,I[a].isEmbedded):null}function n(){return K}function q(a){for(var b=-1,c=0;c=0;d--)a.removeCue(b[d])}function u(a){var b=m(a);b&&t(b)}function v(){for(var a=J?J.length:0,b=0;bthis.customTimeRangeArray[c].start;c++);for(this.customTimeRangeArray.splice(c,0,{start:a,end:b}),c=0;c=this.customTimeRangeArray[c].end)this.customTimeRangeArray.splice(c,1),c--;else{if(a>this.customTimeRangeArray[c].start&&bthis.customTimeRangeArray[c].start&&athis.customTimeRangeArray[c].start&&b=this.customTimeRangeArray.length||a<0?NaN:this.customTimeRangeArray[a].start}function g(a){return e(a),a>=this.customTimeRangeArray.length||a<0?NaN:this.customTimeRangeArray[a].end}return{customTimeRangeArray:[],length:0,add:a,clear:b,remove:c,mergeRanges:d,start:f,end:g}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="CustomTimeRanges",c.default=g.default.getClassFactory(e),b.exports=c.default},{51:51}],195:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){if(void 0!==x)return x;x=!1;var b="1",c="1",d=void 0;try{"undefined"!=typeof window&&(d=window[a])}catch(e){return u("Warning: DOMStorage access denied: "+e.message),x}if(!d||a!==m&&a!==n)return x;try{d.setItem(b,c),d.removeItem(b),x=!0}catch(e){u("Warning: DOMStorage is supported, but cannot be used: "+e.message)}return x}function c(){b(m)&&j.forEach(function(a){var b=localStorage.getItem(a.oldKey);if(b){localStorage.removeItem(a.oldKey);try{localStorage.setItem(a.newKey,b)}catch(c){u(c.message)}}})}function d(){c()}function e(){var a=6e5;return Math.round((new Date).getTime()/a)*a}function f(a,c){return b(a)&&v["get"+c+"CachingInfo"]().enabled}function g(){if(!v||!v.hasOwnProperty("getLastMediaSettingsCachingInfo"))throw new Error("Missing config parameter(s)")}function h(a){if(g(),!f(m,p))return null;var b=null,c=l.replace(/\?/,a);try{var d=JSON.parse(localStorage.getItem(c))||{},e=(new Date).getTime()-parseInt(d.timestamp,10)>=v.getLastMediaSettingsCachingInfo().ttl||!1;b=d.settings,e&&(localStorage.removeItem(c),b=null)}catch(h){return null}return b}function q(a){var b=NaN;if(g(),f(m,o)){var c=k.replace(/\?/,a);try{var d=JSON.parse(localStorage.getItem(c))||{},e=(new Date).getTime()-parseInt(d.timestamp,10)>=v.getLastMediaSettingsCachingInfo().ttl||!1,h=parseFloat(d.bitrate);isNaN(h)||e?e&&localStorage.removeItem(c):(b=h,u("Last saved bitrate for "+a+" was "+h))}catch(i){return null}}return b}function r(a,b){if(f(m,p)){var c=l.replace(/\?/,a);try{localStorage.setItem(c,JSON.stringify({settings:b,timestamp:e()}))}catch(d){u(d.message)}}}function s(a,b){if(f(m,o)&&b){var c=k.replace(/\?/,a);try{localStorage.setItem(c,JSON.stringify({bitrate:b.toFixed(3),timestamp:e()}))}catch(d){u(d.message)}}}a=a||{};var t=this.context,u=(0,i.default)(t).getInstance().log,v=a.mediaPlayerModel,w=void 0,x=void 0;return w={getSavedBitrateSettings:q,setSavedBitrateSettings:s,getSavedMediaSettings:h,setSavedMediaSettings:r},d(),w}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(49),i=d(h),j=[{oldKey:"dashjs_vbitrate",newKey:"dashjs_video_bitrate"},{oldKey:"dashjs_abitrate",newKey:"dashjs_audio_bitrate"},{oldKey:"dashjs_vsettings",newKey:"dashjs_video_settings"},{oldKey:"dashjs_asettings",newKey:"dashjs_audio_settings"}],k="dashjs_?_bitrate",l="dashjs_?_settings",m="localStorage",n="sessionStorage",o="LastBitrate",p="LastMediaSettings";e.__dashjs_factory_name="DOMStorage";var q=g.default.getSingletonFactory(e);c.default=q,b.exports=c.default},{49:49,51:51}],196:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){return n}function c(a){n=a}function d(a,b){var c=!0,d=0,e=void 0,f=void 0;if(void 0===b&&(b=!1),a.tag>16777215?(m.getUint32(n)!==a.tag&&(c=!1),d=4):a.tag>65535?(e=m.getUint16(n),f=m.getUint8(n+2),256*e+f!==a.tag&&(c=!1),d=3):a.tag>255?(m.getUint16(n)!==a.tag&&(c=!1),d=2):(m.getUint8(n)!==a.tag&&(c=!1),d=1),!c&&a.required&&!b)throw new Error("required tag not found");return c&&(n+=d),c}function e(a,b){var c=d(a,b);return c&&h(),c}function f(a){var b=void 0;return d(a),b=h(),l[a.parse](b)}function g(a,b){var c=d(a,b),e=void 0;return c&&(e=h(),n+=e),c}function h(a){var b=1,c=128,d=8,e=-1,f=0,g=m.getUint8(n),h=0;for(h=0;h>=1}for(h=0;h0?c[c.length-1]:null}function e(a){if(!a)return null;var b=new g.default(a);return a.hasOwnProperty("_incomplete")&&(b.isComplete=!a._incomplete),b}var f=void 0;return{getBox:a,getBoxes:b,setData:c,getLastBox:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(213),g=d(f),h=a(51),i=d(h);e.__dashjs_factory_name="IsoFile",c.default=i.default.getClassFactory(e),b.exports=c.default},{213:213,51:51}],200:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){if(!(e&&e.hasOwnProperty("getExpectedLiveEdge")&&f&&f.hasOwnProperty("getCurrentRepresentationInfo")))throw new Error("Missing config parameter(s)")}function c(){b();var a=f.getCurrentRepresentationInfo(),c=a.DVRWindow.end;return a.useCalculatedLiveEdgeTime&&(c=e.getExpectedLiveEdge(),e.setClientTimeOffset(c-a.DVRWindow.end)),c}function d(){e=null,f=null}a=a||{};var e=a.timelineConverter,f=a.streamProcessor;return{getLiveEdge:c,reset:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="LiveEdgeFinder",c.default=g.default.getClassFactory(e),b.exports=c.default},{51:51}],201:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){return(0,i.default)(a,b)}return{areEqual:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(13),i=d(h);e.__dashjs_factory_name="ObjectUtils",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{13:13,51:51}],202:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){return a}function b(a){return a}return{modifyRequestURL:a,modifyRequestHeader:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="RequestModifier",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{51:51}],203:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){var a="cue_TTML_"+g;return g++,a}function b(b,c,d,f,g){var h=void 0,i=void 0,k="",l=[],m=void 0,n=void 0,o={},p="",q="",r={onOpenTag:function(a,b,c){if("image"===b&&"http://www.smpte-ra.org/schemas/2052-1/2010/smpte-tt"===a){if(!c[" imagetype"]||"PNG"!==c[" imagetype"].value)return void e("Warning: smpte-tt imagetype != PNG. Discarded");p=c["http://www.w3.org/XML/1998/namespace id"].value}},onCloseTag:function(){p&&(o[p]=q.trim()),q="",p=""},onText:function(a){p&&(q+=a)}};if(!b)throw k="no ttml data to parse",new Error(k);var s=(0,j.fromXML)(b,function(a){k=a},r),t=s.getMediaTimeEvents();for(h=0;h=1&&(m=t[h]+cf?f:t[h+1]+c,m0)return l;throw new Error(k)}function c(){}var d=this.context,e=(0,i.default)(d).getInstance().log,f=void 0,g=0;return f={parse:b},c(),f}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f),h=a(49),i=d(h),j=a(21);e.__dashjs_factory_name="TTMLParser",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{21:21,49:49,51:51}],204:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){try{new window.URL("x","http://y");k=p}catch(a){}finally{k=k||q}}function b(a){var b=a.indexOf("/"),c=a.lastIndexOf("/");return-1!==b?c===b+1?a:(-1!==a.indexOf("?")&&(a=a.substring(0,a.indexOf("?"))),a.substring(0,c+1)):""}function c(a){var b=a.match(o);return b?b[1]:""}function d(a){var b=a.match(l);return b?b[0]:""}function e(a){return!l.test(a)}function f(a){return e(a)&&"/"===a.charAt(0)}function g(a){return 0===a.indexOf("//")}function h(a){return m.test(a)}function i(a){return n.test(a)}function j(a,b){return k(a,b)}var k=void 0,l=/^[a-z][a-z0-9+\-.]*:/i,m=/^https?:\/\//i,n=/^https:\/\//i,o=/^([a-z][a-z0-9+\-.]*:\/\/[^\/]+)\/?/i,p=function(a,b){try{return new window.URL(a,b).toString()}catch(c){return a}},q=function(a,h){var i=b;if(!h)return a;if(!e(a))return a;f(a)&&(i=c),g(a)&&(i=d);var j=i(h);return[j,a].join("/"!==j.charAt(j.length-1)&&"/"!==a.charAt(0)?"/":"")};return a(),{parseBaseUrl:b,parseOrigin:c,parseScheme:d,isRelative:e,isPathAbsolute:f,isSchemeRelative:g,isHTTPURL:h,isHTTPS:i,resolve:j}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(51),g=d(f);e.__dashjs_factory_name="URLUtils",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{51:51}],205:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){l=/(?:\r\n|\r|\n)/gm,m=/-->/,n=/(^[\s]+|[\s]+$)/g,o=/\s\b/g}function b(a){var b=[],e=void 0,g=void 0;if(!a)return b;a=a.split(l),e=a.length,g=-1;for(var i=0;i0&&k!==j&&k.match(m)){var o=d(k),p=o.cuePoints,q=o.styles,r=f(a,i+1),s=c(p[0].replace(n,"")),t=c(p[1].replace(n,""));!isNaN(s)&&!isNaN(t)&&s>=g&&t>s?""!==r?(g=s,b.push({start:s,end:t,data:r,styles:q})):h("Skipping cue due to empty/malformed cue text"):h("Skipping cue due to incorrect cue timing")}}return b}function c(a){var b=a.split(":"),c=b.length-1;return a=60*parseInt(b[c-1],10)+parseFloat(b[c]),2===c&&(a+=3600*parseInt(b[0],10)),a}function d(a){var b=a.split(m),c=b[1].split(o);return c.shift(),b[1]=c[0],c.shift(),{cuePoints:b,styles:e(c)}}function e(a){var b={};return a.forEach(function(a){if(a.split(/:/).length>1){var c=a.split(/:/)[1];c&&-1!=c.search(/%/)&&(c=parseInt(c.replace(/%/,""),10)),(a.match(/align/)||a.match(/A/))&&(b.align=c),(a.match(/line/)||a.match(/L/))&&(b.line=c),(a.match(/position/)||a.match(/P/))&&(b.position=c),(a.match(/size/)||a.match(/S/))&&(b.size=c)}}),b}function f(a,b){for(var c=b,d="",e="",f=void 0;""!==a[c]&&c1)for(var g=0;g1&&(h.forEach(function(a){d+=a.dvb_weight,e.push(d)}),g=Math.floor(Math.random()*(d-1)),e.every(function(a,b){return f=b,!(g> 6));\n u.push(0x80 | (63 & c));\n } else if (c < 0x10000) {\n u.push(0xE0 | (c >> 12));\n u.push(0x80 | (63 & (c >> 6)));\n u.push(0x80 | (63 & c));\n } else {\n u.push(0xF0 | (c >> 18));\n u.push(0x80 | (63 & (c >> 12)));\n u.push(0x80 | (63 & (c >> 6)));\n u.push(0x80 | (63 & c));\n }\n }\n return u;\n};\nUTF8.decode = function(u) {\n var a = [];\n var i = 0;\n while (i < u.length) {\n var v = u[i++];\n if (v < 0x80) {\n // no need to mask byte\n } else if (v < 0xE0) {\n v = (31 & v) << 6;\n v |= (63 & u[i++]);\n } else if (v < 0xF0) {\n v = (15 & v) << 12;\n v |= (63 & u[i++]) << 6;\n v |= (63 & u[i++]);\n } else {\n v = (7 & v) << 18;\n v |= (63 & u[i++]) << 12;\n v |= (63 & u[i++]) << 6;\n v |= (63 & u[i++]);\n }\n a.push(String.fromCharCode(v));\n }\n return a.join('');\n};\n\nvar BASE64 = {};\n(function(T){\n var encodeArray = function(u) {\n var i = 0;\n var a = [];\n var n = 0 | (u.length / 3);\n while (0 < n--) {\n var v = (u[i] << 16) + (u[i+1] << 8) + u[i+2];\n i += 3;\n a.push(T.charAt(63 & (v >> 18)));\n a.push(T.charAt(63 & (v >> 12)));\n a.push(T.charAt(63 & (v >> 6)));\n a.push(T.charAt(63 & v));\n }\n if (2 == (u.length - i)) {\n var v = (u[i] << 16) + (u[i+1] << 8);\n a.push(T.charAt(63 & (v >> 18)));\n a.push(T.charAt(63 & (v >> 12)));\n a.push(T.charAt(63 & (v >> 6)));\n a.push('=');\n } else if (1 == (u.length - i)) {\n var v = (u[i] << 16);\n a.push(T.charAt(63 & (v >> 18)));\n a.push(T.charAt(63 & (v >> 12)));\n a.push('==');\n }\n return a.join('');\n }\n var R = (function(){\n var a = [];\n for (var i=0; i= minLevel) {\n console.log(this.time + \" [\" + severity + \"] \" + msg);\n }\n }\n };\n\n var numArrayToHexArray = function(numArray) {\n var hexArray = [];\n for (var j = 0; j < numArray.length; j++) {\n hexArray.push(numArray[j].toString(16));\n }\n return hexArray;\n };\n\n /**\n * State of CEA-608 pen or character\n * @constructor\n */\n var PenState = function(foreground, underline, italics, background, flash) {\n this.foreground = foreground || \"white\";\n this.underline = underline || false;\n this.italics = italics || false;\n this.background = background || \"black\";\n this.flash = flash || false;\n };\n\n PenState.prototype = {\n \n reset : function() {\n this.foreground = \"white\";\n this.underline = false;\n this.italics = false;\n this.background = \"black\";\n this.flash = false;\n },\n \n setStyles : function(styles) {\n var attribs = [\"foreground\", \"underline\", \"italics\", \"background\", \"flash\"];\n for (var i = 0 ; i < attribs.length; i++) {\n var style = attribs[i];\n if (styles.hasOwnProperty(style)) {\n this[style] = styles[style];\n }\n }\n },\n \n isDefault : function() {\n return (this.foreground === \"white\" && !this.underline && !this.italics && \n this.background === \"black\" && !this.flash);\n },\n\n equals : function(other) {\n return ( (this.foreground === other.foreground) && \n (this.underline === other.underline) &&\n (this.italics === other.italics) &&\n (this.background === other.background) &&\n (this.flash === other.flash) );\n },\n\n copy : function(newPenState) {\n this.foreground = newPenState.foreground;\n this.underline = newPenState.underline;\n this.italics = newPenState.italics;\n this.background = newPenState.background;\n this.flash = newPenState.flash;\n },\n \n toString: function() {\n return (\"color=\" + this.foreground + \", underline=\" + this.underline + \", italics=\" + this.italics +\n \", background=\" + this.background + \", flash=\" + this.flash);\n }\n };\n\n /**\n * Unicode character with styling and background.\n * @constructor\n */\n var StyledUnicodeChar = function(uchar, foreground, underline, italics, background, flash) {\n this.uchar = uchar || ' '; // unicode character\n this.penState = new PenState(foreground, underline,italics, background, flash);\n };\n\n StyledUnicodeChar.prototype = {\n \n reset: function() {\n this.uchar = ' ';\n this.penState.reset();\n },\n \n setChar: function(uchar, newPenState) {\n this.uchar = uchar;\n this.penState.copy(newPenState);\n },\n \n setPenState: function(newPenState) {\n this.penState.copy(newPenState);\n },\n \n equals: function(other) {\n return this.uchar === other.uchar && this.penState.equals(other.penState);\n },\n \n copy: function(newChar) {\n this.uchar = newChar.uchar;\n this.penState.copy(newChar.penState);\n },\n \n isEmpty : function() {\n return this.uchar === ' ' && this.penState.isDefault();\n }\n };\n\n /**\n * CEA-608 row consisting of NR_COLS instances of StyledUnicodeChar.\n * @constructor\n */\n var Row = function() {\n this.chars = [];\n for (var i = 0 ; i < NR_COLS ; i++) {\n this.chars.push(new StyledUnicodeChar());\n }\n this.pos = 0;\n this.currPenState = new PenState();\n };\n\n Row.prototype = {\n \n equals: function(other) {\n var equal = true;\n for (var i = 0 ; i < NR_COLS; i ++) {\n if (!this.chars[i].equals(other.chars[i])) {\n equal = false;\n break;\n }\n }\n return equal;\n },\n \n copy: function(other) {\n for (var i = 0 ; i < NR_COLS; i ++) {\n this.chars[i].copy(other.chars[i]);\n }\n },\n \n isEmpty : function() {\n var empty = true;\n for (var i = 0 ; i < NR_COLS; i ++) {\n if (!this.chars[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n return empty;\n },\n\n /**\n * Set the cursor to a valid column.\n */\n setCursor : function(absPos) {\n if (this.pos !== absPos) {\n this.pos = absPos;\n }\n if (this.pos < 0) {\n logger.log(\"ERROR\", \"Negative cursor position \" + this.pos);\n this.pos = 0;\n } else if (this.pos > NR_COLS) {\n logger.log(\"ERROR\", \"Too large cursor position \" + this.pos);\n this.pos = NR_COLS;\n }\n },\n\n /** \n * Move the cursor relative to current position.\n */\n moveCursor : function(relPos) {\n var newPos = this.pos + relPos;\n if (relPos > 1) {\n for (var i = this.pos+1; i < newPos+1 ; i++) {\n this.chars[i].setPenState(this.currPenState);\n }\n }\n this.setCursor(newPos);\n },\n\n /**\n * Backspace, move one step back and clear character.\n */\n backSpace : function () {\n this.moveCursor(-1);\n this.chars[this.pos].setChar(' ', this.currPenState);\n },\n\n insertChar: function(byte) {\n if (byte >= 0x90) { //Extended char\n this.backSpace();\n }\n var char = getCharForByte(byte);\n if (this.pos >= NR_COLS) {\n logger.log(\"ERROR\", \"Cannot insert \" + byte.toString(16) + \n \" (\" + char + \") at position \" + this.pos + \". Skipping it!\");\n return;\n }\n this.chars[this.pos].setChar(char, this.currPenState);\n this.moveCursor(1);\n },\n\n clearFromPos : function(startPos) {\n var i;\n for (i = startPos ; i < NR_COLS ; i++) {\n this.chars[i].reset();\n }\n },\n\n clear : function() {\n this.clearFromPos(0);\n this.pos = 0;\n this.currPenState.reset();\n },\n\n clearToEndOfRow : function() {\n this.clearFromPos(this.pos);\n },\n\n getTextString: function() {\n var chars = [];\n var empty = true;\n for (var i = 0 ; i < NR_COLS ; i++) {\n var char = this.chars[i].uchar;\n if (char !== \" \") {\n empty = false;\n }\n chars.push(char);\n }\n if (empty) {\n return \"\";\n } else {\n return chars.join(\"\");\n }\n },\n\n setPenStyles: function(styles) {\n this.currPenState.setStyles(styles);\n var currChar = this.chars[this.pos];\n currChar.setPenState(this.currPenState);\n }\n };\n\n /**\n * Keep a CEA-608 screen of 32x15 styled characters\n * @constructor\n */\n var CaptionScreen = function() {\n\n this.rows = [];\n for (var i = 0 ; i < NR_ROWS; i++) {\n this.rows.push(new Row()); // Note that we use zero-based numbering (0-14)\n }\n this.currRow = NR_ROWS - 1;\n this.nrRollUpRows = null;\n this.reset();\n };\n\n CaptionScreen.prototype = {\n\n reset : function() {\n for (var i = 0 ; i < NR_ROWS ; i++) {\n this.rows[i].clear();\n }\n this.currRow = NR_ROWS - 1;\n },\n\n equals : function(other) {\n var equal = true;\n for (var i = 0 ; i < NR_ROWS ; i++) {\n if (!this.rows[i].equals(other.rows[i])) {\n equal = false;\n break;\n }\n }\n return equal;\n },\n\n copy : function(other) {\n for (var i = 0 ; i < NR_ROWS ; i++) {\n this.rows[i].copy(other.rows[i]);\n }\n },\n\n isEmpty : function() {\n var empty = true;\n for (var i = 0 ; i < NR_ROWS ; i++) {\n if (!this.rows[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n return empty;\n },\n\n backSpace : function() {\n var row = this.rows[this.currRow]; \n row.backSpace();\n },\n\n clearToEndOfRow : function() {\n var row = this.rows[this.currRow];\n row.clearToEndOfRow();\n },\n\n /**\n * Insert a character (without styling) in the current row.\n */\n insertChar : function(char) {\n var row = this.rows[this.currRow];\n row.insertChar(char);\n },\n\n setPen : function(styles) {\n var row = this.rows[this.currRow];\n row.setPenStyles(styles);\n },\n\n moveCursor : function(relPos) {\n var row = this.rows[this.currRow];\n row.moveCursor(relPos); \n },\n\n setCursor : function(absPos) {\n logger.log(\"INFO\", \"setCursor: \" + absPos);\n var row = this.rows[this.currRow];\n row.setCursor(absPos);\n },\n\n setPAC : function(pacData) {\n logger.log(\"INFO\", \"pacData = \" + JSON.stringify(pacData));\n var newRow = pacData.row - 1;\n if (this.nrRollUpRows && newRow < this.nrRollUpRows - 1) {\n newRow = this.nrRollUpRows-1;\n }\n this.currRow = newRow;\n var row = this.rows[this.currRow];\n if (pacData.indent !== null) {\n var indent = pacData.indent;\n var prevPos = Math.max(indent-1, 0);\n row.setCursor(pacData.indent);\n pacData.color = row.chars[prevPos].penState.foreground;\n }\n var styles = {foreground : pacData.color, underline : pacData.underline, italics : pacData.italics, background : 'black', flash : false};\n this.setPen(styles);\n },\n\n /**\n * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).\n */\n setBkgData : function(bkgData) {\n\n logger.log(\"INFO\", \"bkgData = \" + JSON.stringify(bkgData));\n this.backSpace();\n this.setPen(bkgData);\n this.insertChar(0x20); //Space\n },\n\n setRollUpRows : function(nrRows) {\n this.nrRollUpRows = nrRows;\n },\n\n rollUp : function() {\n if (this.nrRollUpRows === null) {\n logger.log(\"DEBUG\", \"roll_up but nrRollUpRows not set yet\");\n return; //Not properly setup\n }\n logger.log(\"TEXT\", this.getDisplayText());\n var topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n var topRow = this.rows.splice(topRowIndex, 1)[0];\n topRow.clear();\n this.rows.splice(this.currRow, 0, topRow);\n logger.log(\"INFO\", \"Rolling up\");\n //logger.log(\"TEXT\", this.get_display_text())\n },\n\n /**\n * Get all non-empty rows with as unicode text. \n */ \n getDisplayText : function(asOneRow) {\n asOneRow = asOneRow || false;\n var displayText = [];\n var text = \"\";\n var rowNr = -1;\n for (var i = 0 ; i < NR_ROWS ; i++) {\n var rowText = this.rows[i].getTextString();\n if (rowText) {\n rowNr = i+1;\n if (asOneRow) {\n displayText.push(\"Row \" + rowNr + ': \"' + rowText + '\"');\n } else {\n displayText.push(rowText.trim());\n }\n }\n }\n if (displayText.length > 0) {\n if (asOneRow) {\n text = \"[\" + displayText.join(\" | \") + \"]\";\n } else {\n text = displayText.join(\"\\n\");\n }\n }\n return text;\n },\n\n getTextAndFormat : function() {\n return this.rows;\n }\n };\n\n /**\n * Handle a CEA-608 channel and send decoded data to outputFilter\n * @constructor\n * @param {Number} channelNumber (1 or 2)\n * @param {CueHandler} outputFilter Output from channel1 newCue(startTime, endTime, captionScreen)\n */\n var Cea608Channel = function(channelNumber, outputFilter) {\n\n this.chNr = channelNumber;\n this.outputFilter = outputFilter;\n this.mode = null;\n this.verbose = 0;\n this.displayedMemory = new CaptionScreen();\n this.nonDisplayedMemory = new CaptionScreen();\n this.lastOutputScreen = new CaptionScreen();\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS-1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null; // Keeps track of where a cue started.\n };\n\n Cea608Channel.prototype = {\n \n modes : [\"MODE_ROLL-UP\", \"MODE_POP-ON\", \"MODE_PAINT-ON\", \"MODE_TEXT\"],\n \n reset : function() {\n this.mode = null;\n this.displayedMemory.reset();\n this.nonDisplayedMemory.reset();\n this.lastOutputScreen.reset();\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS-1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null;\n this.lastCueEndTime = null;\n },\n\n getHandler : function() {\n return this.outputFilter;\n },\n\n setHandler : function(newHandler) {\n this.outputFilter = newHandler;\n },\n\n setPAC : function(pacData) {\n this.writeScreen.setPAC(pacData);\n },\n\n setBkgData : function(bkgData) {\n this.writeScreen.setBkgData(bkgData);\n },\n\n setMode : function(newMode) {\n if (newMode === this.mode) {\n return;\n }\n this.mode = newMode;\n logger.log(\"INFO\", \"MODE=\" + newMode);\n if (this.mode == \"MODE_POP-ON\") {\n this.writeScreen = this.nonDisplayedMemory;\n } else {\n this.writeScreen = this.displayedMemory;\n this.writeScreen.reset();\n }\n if (this.mode !== \"MODE_ROLL-UP\") {\n this.displayedMemory.nrRollUpRows = null;\n this.nonDisplayedMemory.nrRollUpRows = null;\n }\n this.mode = newMode;\n },\n\n insertChars : function(chars) {\n for (var i = 0 ; i < chars.length ; i++) {\n this.writeScreen.insertChar(chars[i]);\n }\n var screen = this.writeScreen === this.displayedMemory ? \"DISP\" : \"NON_DISP\";\n logger.log(\"INFO\", screen + \": \" + this.writeScreen.getDisplayText(true));\n if (this.mode === \"MODE_PAINT-ON\" || this.mode === \"MODE_ROLL-UP\") {\n logger.log(\"TEXT\", \"DISPLAYED: \" + this.displayedMemory.getDisplayText(true));\n this.outputDataUpdate();\n }\n },\n\n cc_RCL: function() { // Resume Caption Loading (switch mode to Pop On)\n logger.log(\"INFO\", \"RCL - Resume Caption Loading\");\n this.setMode(\"MODE_POP-ON\");\n },\n cc_BS: function() { // BackSpace\n logger.log(\"INFO\", \"BS - BackSpace\");\n if (this.mode === \"MODE_TEXT\") {\n return;\n }\n this.writeScreen.backSpace();\n if (this.writeScreen === this.displayedMemory) {\n this.outputDataUpdate();\n }\n },\n cc_AOF : function() { // Reserved (formerly Alarm Off)\n return;\n },\n cc_AON: function() { // Reserved (formerly Alarm On)\n return;\n },\n cc_DER: function() { // Delete to End of Row\n logger.log(\"INFO\", \"DER- Delete to End of Row\");\n this.writeScreen.clearToEndOfRow();\n this.outputDataUpdate();\n },\n cc_RU: function(nrRows) { //Roll-Up Captions-2,3,or 4 Rows\n logger.log(\"INFO\", \"RU(\" + nrRows +\") - Roll Up\");\n this.writeScreen = this.displayedMemory;\n this.setMode(\"MODE_ROLL-UP\");\n this.writeScreen.setRollUpRows(nrRows);\n },\n cc_FON: function() { //Flash On\n logger.log(\"INFO\", \"FON - Flash On\");\n this.writeScreen.setPen({flash : true});\n },\n cc_RDC: function() { // Resume Direct Captioning (switch mode to PaintOn)\n logger.log(\"INFO\", \"RDC - Resume Direct Captioning\");\n this.setMode(\"MODE_PAINT-ON\");\n },\n cc_TR: function() { // Text Restart in text mode (not supported, however)\n logger.log(\"INFO\", \"TR\");\n this.setMode(\"MODE_TEXT\");\n },\n cc_RTD: function() { // Resume Text Display in Text mode (not supported, however)\n logger.log(\"INFO\", \"RTD\");\n this.setMode(\"MODE_TEXT\");\n },\n cc_EDM: function() { // Erase Displayed Memory\n logger.log(\"INFO\", \"EDM - Erase Displayed Memory\");\n this.displayedMemory.reset();\n this.outputDataUpdate();\n },\n cc_CR: function() { // Carriage Return\n logger.log(\"CR - Carriage Return\");\n this.writeScreen.rollUp();\n this.outputDataUpdate();\n },\n cc_ENM: function() { //Erase Non-Displayed Memory\n logger.log(\"INFO\", \"ENM - Erase Non-displayed Memory\");\n this.nonDisplayedMemory.reset();\n },\n cc_EOC: function() { //End of Caption (Flip Memories)\n logger.log(\"INFO\", \"EOC - End Of Caption\");\n if (this.mode === \"MODE_POP-ON\") {\n var tmp = this.displayedMemory;\n this.displayedMemory = this.nonDisplayedMemory;\n this.nonDisplayedMemory = tmp;\n this.writeScreen = this.nonDisplayedMemory;\n logger.log(\"TEXT\", \"DISP: \" + this.displayedMemory.getDisplayText());\n }\n this.outputDataUpdate();\n },\n cc_TO: function(nrCols) { // Tab Offset 1,2, or 3 columns\n logger.log(\"INFO\", \"TO(\" + nrCols + \") - Tab Offset\");\n this.writeScreen.moveCursor(nrCols);\n },\n cc_MIDROW: function(secondByte) { // Parse MIDROW command\n var styles = {flash : false};\n styles.underline = secondByte % 2 === 1;\n styles.italics = secondByte >= 0x2e;\n if (!styles.italics) {\n var colorIndex = Math.floor(secondByte/2) - 0x10;\n var colors = [\"white\", \"green\", \"blue\", \"cyan\", \"red\", \"yellow\", \"magenta\"];\n styles.foreground = colors[colorIndex];\n } else {\n styles.foreground = \"white\";\n }\n logger.log(\"INFO\", \"MIDROW: \" + JSON.stringify(styles));\n this.writeScreen.setPen(styles);\n },\n\n outputDataUpdate: function() {\n var t = logger.time;\n if (t === null) {\n return;\n }\n if (this.outputFilter) {\n if (this.outputFilter.updateData) {\n this.outputFilter.updateData(t, this.displayedMemory);\n }\n if (this.cueStartTime === null && !this.displayedMemory.isEmpty()) { // Start of a new cue\n this.cueStartTime = t;\n } else {\n if (!this.displayedMemory.equals(this.lastOutputScreen)) { \n if (this.outputFilter.newCue) {\n this.outputFilter.newCue(this.cueStartTime, t, this.lastOutputScreen);\n }\n this.cueStartTime = this.displayedMemory.isEmpty() ? null : t;\n }\n }\n this.lastOutputScreen.copy(this.displayedMemory);\n }\n },\n\n cueSplitAtTime : function(t) {\n if (this.outputFilter) {\n if (!this.displayedMemory.isEmpty()) {\n if (this.outputFilter.newCue) {\n this.outputFilter.newCue(this.cueStartTime, t, this.displayedMemory);\n }\n this.cueStartTime = t;\n }\n }\n }\n };\n\n /**\n * Parse CEA-608 data and send decoded data to out1 and out2.\n * @constructor\n * @param {Number} field CEA-608 field (1 or 2)\n * @param {CueHandler} out1 Output from channel1 newCue(startTime, endTime, captionScreen)\n * @param {CueHandler} out2 Output from channel2 newCue(startTime, endTime, captionScreen)\n */\n var Cea608Parser = function(field, out1, out2) {\n this.field = field || 1;\n this.outputs = [out1, out2];\n this.channels = [new Cea608Channel(1, out1), new Cea608Channel(2, out2)];\n this.currChNr = -1; // Will be 1 or 2\n this.lastCmdA = null; // First byte of last command\n this.lastCmdB = null; // Second byte of last command\n this.bufferedData = [];\n this.startTime = null;\n this.lastTime = null;\n this.dataCounters = {'padding' : 0, 'char' : 0, 'cmd' : 0, 'other' : 0};\n };\n\n Cea608Parser.prototype = {\n \n getHandler : function(index) {\n return this.channels[index].getHandler();\n },\n \n setHandler : function(index, newHandler) {\n this.channels[index].setHandler(newHandler);\n },\n\n /**\n * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs.\n */\n addData : function(t, byteList) {\n var cmdFound, a, b, \n charsFound = false;\n \n this.lastTime = t;\n logger.setTime(t);\n\n for (var i = 0 ; i < byteList.length ; i+=2) {\n a = byteList[i] & 0x7f;\n b = byteList[i+1] & 0x7f;\n\n if (a >= 0x10 && a <= 0x1f && a === this.lastCmdA && b === this.lastCmdB) {\n this.lastCmdA = null;\n this.lastCmdB = null;\n logger.log(\"DEBUG\", \"Repeated command (\" + numArrayToHexArray([a, b]) + \") is dropped\");\n continue; // Repeated commands are dropped (once)\n }\n\n if (a === 0 && b === 0) {\n this.dataCounters.padding += 2;\n continue;\n } else {\n logger.log(\"DATA\", \"[\" + numArrayToHexArray([byteList[i], byteList[i+1]]) +\"] -> (\" + numArrayToHexArray([a, b]) + \")\");\n }\n cmdFound = this.parseCmd(a, b);\n if (!cmdFound) {\n cmdFound = this.parseMidrow(a, b);\n }\n if (!cmdFound) {\n cmdFound = this.parsePAC(a, b);\n }\n if (!cmdFound) {\n cmdFound = this.parseBackgroundAttributes(a, b);\n }\n if (!cmdFound) {\n charsFound = this.parseChars(a, b);\n if (charsFound) {\n if (this.currChNr && this.currChNr >=0) {\n var channel = this.channels[this.currChNr-1];\n channel.insertChars(charsFound);\n } else {\n logger.log(\"WARNING\", \"No channel found yet. TEXT-MODE?\");\n }\n }\n }\n if (cmdFound) {\n this.dataCounters.cmd += 2;\n } else if (charsFound) {\n this.dataCounters.char += 2;\n } else {\n this.dataCounters.other += 2;\n logger.log(\"WARNING\", \"Couldn't parse cleaned data \" + numArrayToHexArray([a, b]) +\n \" orig: \" + numArrayToHexArray([byteList[i], byteList[i+1]]));\n }\n }\n },\n\n /**\n * Parse Command.\n * @returns {Boolean} Tells if a command was found\n */\n parseCmd: function(a, b) {\n var chNr = null;\n\n var cond1 = (a === 0x14 || a === 0x15 || a === 0x1C || a === 0x1D) && (0x20 <= b && b <= 0x2F);\n var cond2 = (a === 0x17 || a === 0x1F) && (0x21 <= b && b <= 0x23);\n if (!(cond1 || cond2)) {\n return false;\n }\n \n if (a === 0x14 || a === 0x15 || a === 0x17) {\n chNr = 1;\n } else {\n chNr = 2; // (a === 0x1C || a === 0x1D || a=== 0x1f)\n }\n\n var channel = this.channels[chNr - 1];\n\n if (a === 0x14 || a === 0x15 || a === 0x1C || a === 0x1D) {\n if (b === 0x20) {\n channel.cc_RCL();\n } else if (b === 0x21) {\n channel.cc_BS();\n } else if (b === 0x22) {\n channel.cc_AOF();\n } else if (b === 0x23) {\n channel.cc_AON();\n } else if (b === 0x24) {\n channel.cc_DER();\n } else if (b === 0x25) {\n channel.cc_RU(2);\n } else if (b === 0x26) {\n channel.cc_RU(3);\n } else if (b === 0x27) {\n channel.cc_RU(4);\n } else if (b === 0x28) {\n channel.cc_FON();\n } else if (b === 0x29) {\n channel.cc_RDC();\n } else if (b === 0x2A) {\n channel.cc_TR();\n } else if (b === 0x2B) {\n channel.cc_RTD();\n } else if (b === 0x2C) {\n channel.cc_EDM();\n } else if (b === 0x2D) {\n channel.cc_CR();\n } else if (b === 0x2E) {\n channel.cc_ENM();\n } else if (b === 0x2F) {\n channel.cc_EOC();\n }\n } else { //a == 0x17 || a == 0x1F\n channel.cc_TO(b - 0x20);\n }\n this.lastCmdA = a;\n this.lastCmdB = b;\n this.currChNr = chNr;\n return true;\n },\n\n /**\n * Parse midrow styling command\n * @returns {Boolean}\n */\n parseMidrow : function(a, b) {\n var chNr = null;\n \n if ( ((a === 0x11) || (a === 0x19)) && 0x20 <= b && b <= 0x2f) {\n if (a === 0x11) {\n chNr = 1;\n } else {\n chNr = 2;\n }\n if (chNr !== this.currChNr) {\n logger.log(\"ERROR\", \"Mismatch channel in midrow parsing\");\n return false;\n }\n var channel = this.channels[chNr-1];\n // cea608 spec says midrow codes should inject a space\n channel.insertChars([0x20]);\n channel.cc_MIDROW(b);\n logger.log(\"DEBUG\", \"MIDROW (\" + numArrayToHexArray([a, b]) + \")\");\n this.lastCmdA = a;\n this.lastCmdB = b;\n return true;\n }\n return false;\n },\n /**\n * Parse Preable Access Codes (Table 53).\n * @returns {Boolean} Tells if PAC found\n */\n parsePAC : function(a, b) {\n\n var chNr = null;\n var row = null;\n \n var case1 = ((0x11 <= a && a <= 0x17) || (0x19 <= a && a <= 0x1F)) && (0x40 <= b && b <= 0x7F);\n var case2 = (a === 0x10 || a === 0x18) && (0x40 <= b && b <= 0x5F);\n if (! (case1 || case2)) {\n return false;\n }\n\n chNr = (a <= 0x17) ? 1 : 2;\n\n if (0x40 <= b && b <= 0x5F) {\n row = (chNr === 1) ? rowsLowCh1[a] : rowsLowCh2[a];\n } else { // 0x60 <= b <= 0x7F\n row = (chNr === 1) ? rowsHighCh1[a] : rowsHighCh2[a];\n }\n var pacData = this.interpretPAC(row, b);\n var channel = this.channels[chNr-1];\n channel.setPAC(pacData);\n this.lastCmdA = a;\n this.lastCmdB = b;\n this.currChNr = chNr;\n return true;\n },\n\n /**\n * Interpret the second byte of the pac, and return the information.\n * @returns {Object} pacData with style parameters.\n */\n interpretPAC : function (row, byte) {\n var pacIndex = byte;\n var pacData = {color : null, italics : false, indent : null, underline : false, row : row};\n \n if (byte > 0x5F) {\n pacIndex = byte - 0x60;\n } else {\n pacIndex = byte - 0x40;\n }\n pacData.underline = (pacIndex & 1) === 1;\n if (pacIndex <= 0xd) {\n pacData.color = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'white'][Math.floor(pacIndex/2)];\n } else if (pacIndex <= 0xf) {\n pacData.italics = true;\n pacData.color = 'white';\n } else {\n pacData.indent = (Math.floor((pacIndex-0x10)/2))*4;\n }\n return pacData; // Note that row has zero offset. The spec uses 1.\n },\n\n /**\n * Parse characters.\n * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise.\n */\n parseChars : function(a, b) {\n\n var channelNr = null,\n charCodes = null,\n charCode1 = null,\n charCode2 = null;\n\n if (a >= 0x19) {\n channelNr = 2;\n charCode1 = a - 8;\n } else {\n channelNr = 1;\n charCode1 = a;\n }\n if (0x11 <= charCode1 && charCode1 <= 0x13) {\n // Special character\n var oneCode = b;\n if (charCode1 === 0x11) {\n oneCode = b + 0x50;\n } else if (charCode1 === 0x12) {\n oneCode = b + 0x70;\n } else {\n oneCode = b + 0x90;\n }\n logger.log(\"INFO\", \"Special char '\" + getCharForByte(oneCode) + \"' in channel \" + channelNr);\n charCodes = [oneCode];\n this.lastCmdA = a;\n this.lastCmdB = b;\n } else if (0x20 <= a && a <= 0x7f) {\n charCodes = (b === 0) ? [a] : [a, b];\n this.lastCmdA = null;\n this.lastCmdB = null;\n }\n if (charCodes) {\n var hexCodes = numArrayToHexArray(charCodes);\n logger.log(\"DEBUG\", \"Char codes = \" + hexCodes.join(\",\"));\n }\n return charCodes;\n },\n \n /**\n * Parse extended background attributes as well as new foreground color black.\n * @returns{Boolean} Tells if background attributes are found\n */\n parseBackgroundAttributes : function(a, b) {\n var bkgData,\n index,\n chNr,\n channel;\n\n var case1 = (a === 0x10 || a === 0x18) && (0x20 <= b && b <= 0x2f);\n var case2 = (a === 0x17 || a === 0x1f) && (0x2d <=b && b <= 0x2f);\n if (!(case1 || case2)) {\n return false;\n }\n bkgData = {};\n if (a === 0x10 || a === 0x18) {\n index = Math.floor((b-0x20)/2);\n bkgData.background = backgroundColors[index];\n if (b % 2 === 1) {\n bkgData.background = bkgData.background + \"_semi\";\n }\n } else if (b === 0x2d) {\n bkgData.background = \"transparent\";\n } else {\n bkgData.foreground = \"black\";\n if (b === 0x2f) {\n bkgData.underline = true;\n }\n }\n chNr = (a < 0x18) ? 1 : 2;\n channel = this.channels[chNr-1];\n channel.setBkgData(bkgData);\n this.lastCmdA = a;\n this.lastCmdB = b;\n return true;\n },\n\n /**\n * Reset state of parser and its channels.\n */\n reset : function() {\n for (var i=0 ; i < this.channels.length ; i++) {\n if (this.channels[i]) {\n this.channels[i].reset();\n }\n }\n this.lastCmdA = null;\n this.lastCmdB = null;\n },\n\n /**\n * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty.\n */\n cueSplitAtTime : function(t) {\n for (var i=0 ; i < this.channels.length ; i++) {\n if (this.channels[i]) {\n this.channels[i].cueSplitAtTime(t);\n }\n }\n },\n };\n\n /**\n * Find ranges corresponding to SEA CEA-608 NALUS in sizeprepended NALU array.\n * @param {raw} dataView of binary data\n * @param {startPos} start position in raw\n * @param {size} total size of data in raw to consider\n * @returns \n */\n var findCea608Nalus = function(raw, startPos, size) {\n var nalSize = 0,\n cursor = startPos,\n nalType = 0,\n cea608NaluRanges = [],\n // Check SEI data according to ANSI-SCTE 128\n isCEA608SEI = function (payloadType, payloadSize, raw, pos) {\n if (payloadType !== 4 || payloadSize < 8) {\n return null;\n }\n var countryCode = raw.getUint8(pos);\n var providerCode = raw.getUint16(pos + 1);\n var userIdentifier = raw.getUint32(pos + 3);\n var userDataTypeCode = raw.getUint8(pos + 7);\n return countryCode == 0xB5 && providerCode == 0x31 && userIdentifier == 0x47413934 && userDataTypeCode == 0x3;\n };\n while (cursor < startPos + size) {\n nalSize = raw.getUint32(cursor);\n nalType = raw.getUint8(cursor + 4) & 0x1F;\n //console.log(time + \" NAL \" + nalType);\n if (nalType === 6) {\n // SEI NAL Unit. The NAL header is the first byte\n //console.log(\"SEI NALU of size \" + nalSize + \" at time \" + time);\n var pos = cursor + 5;\n var payloadType = -1;\n while (pos < cursor + 4 + nalSize - 1) { // The last byte should be rbsp_trailing_bits\n payloadType = 0;\n var b = 0xFF;\n while (b === 0xFF) {\n b = raw.getUint8(pos);\n payloadType += b;\n pos++;\n }\n var payloadSize = 0;\n b = 0xFF;\n while (b === 0xFF) {\n b = raw.getUint8(pos);\n payloadSize += b;\n pos++;\n }\n if (isCEA608SEI(payloadType, payloadSize, raw, pos)) {\n //console.log(\"CEA608 SEI \" + time + \" \" + payloadSize);\n cea608NaluRanges.push([pos, payloadSize]);\n }\n pos += payloadSize;\n }\n }\n cursor += nalSize + 4;\n }\n return cea608NaluRanges;\n };\n \n var extractCea608DataFromRange = function(raw, cea608Range) {\n var pos = cea608Range[0];\n var fieldData = [[], []];\n\n pos += 8; // Skip the identifier up to userDataTypeCode\n var ccCount = raw.getUint8(pos) & 0x1f;\n pos += 2; // Advance 1 and skip reserved byte\n \n for (var i = 0; i < ccCount; i++) {\n var byte = raw.getUint8(pos);\n var ccValid = byte & 0x4;\n var ccType = byte & 0x3;\n pos++;\n var ccData1 = raw.getUint8(pos); // Keep parity bit\n pos++;\n var ccData2 = raw.getUint8(pos); // Keep parity bit\n pos++;\n if (ccValid && ((ccData1 & 0x7f) + (ccData2 & 0x7f) !== 0)) { //Check validity and non-empty data\n if (ccType === 0) {\n fieldData[0].push(ccData1);\n fieldData[0].push(ccData2);\n } else if (ccType === 1) {\n fieldData[1].push(ccData1);\n fieldData[1].push(ccData2);\n }\n }\n }\n return fieldData;\n };\n\n exports.logger = logger;\n exports.PenState = PenState;\n exports.CaptionScreen = CaptionScreen; \n exports.Cea608Parser = Cea608Parser;\n exports.findCea608Nalus = findCea608Nalus;\n exports.extractCea608DataFromRange = extractCea608DataFromRange;\n\n}(typeof exports === 'undefined' ? this.cea608parser = {} : exports));\n","/*\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * author Digital Primates\n * copyright dash-if 2012\n */\n\n/*\n * var parent,\n * child,\n * properties = [\n {\n name: 'profiles',\n merge: false\n }\n ];\n *\n * parent = {};\n * parent.name = \"ParentNode\";\n * parent.isRoor = false;\n * parent.isArray = false;\n * parent.children = [];\n * parent.properties = properties;\n *\n * child = {};\n * child.name = \"ChildNode\";\n * child.isRoor = false;\n * child.isArray = true;\n * child.children = null;\n * child.properties = properties;\n * parent.children.push(child);\n *\n */\n\nfunction ObjectIron(map) {\n\n var lookup,\n len,\n i;\n\n // create a list of top level items to search for\n lookup = [];\n for (i = 0, len = map.length; i < len; i += 1) {\n if (map[i].isRoot) {\n lookup.push(\"root\");\n } else {\n lookup.push(map[i].name);\n }\n }\n\n var mergeValues = function (parentItem, childItem) {\n var name,\n parentValue,\n childValue;\n\n if (parentItem === null || childItem === null) {\n return;\n }\n\n for (name in parentItem) {\n if (parentItem.hasOwnProperty(name)) {\n if (!childItem.hasOwnProperty(name)) {\n childItem[name] = parentItem[name];\n }\n }\n }\n },\n\n mapProperties = function (properties, parent, child) {\n var i,\n len,\n property,\n parentValue,\n childValue;\n\n if (properties === null || properties.length === 0) {\n return;\n }\n\n for (i = 0, len = properties.length; i < len; i += 1) {\n property = properties[i];\n\n if (parent.hasOwnProperty(property.name)) {\n if (child.hasOwnProperty(property.name)) {\n // check to see if we should merge\n if (property.merge) {\n parentValue = parent[property.name];\n childValue = child[property.name];\n\n // complex objects; merge properties\n if (typeof parentValue === 'object' && typeof childValue === 'object') {\n mergeValues(parentValue, childValue);\n }\n // simple objects; merge them together\n else {\n if (property.mergeFunction != null) {\n child[property.name] = property.mergeFunction(parentValue, childValue);\n } else {\n child[property.name] = parentValue + childValue;\n }\n }\n }\n } else {\n // just add the property\n child[property.name] = parent[property.name];\n }\n }\n }\n },\n\n mapItem = function (obj, node) {\n var item = obj,\n i,\n len,\n v,\n len2,\n array,\n childItem,\n childNode,\n property;\n\n if (item.children === null || item.children.length === 0) {\n return;\n }\n\n for (i = 0, len = item.children.length; i < len; i += 1) {\n childItem = item.children[i];\n\n if (node.hasOwnProperty(childItem.name)) {\n if (childItem.isArray) {\n array = node[childItem.name + \"_asArray\"];\n for (v = 0, len2 = array.length; v < len2; v += 1) {\n childNode = array[v];\n mapProperties(item.properties, node, childNode);\n mapItem(childItem, childNode);\n }\n } else {\n childNode = node[childItem.name];\n mapProperties(item.properties, node, childNode);\n mapItem(childItem, childNode);\n }\n }\n }\n },\n\n performMapping = function (source) {\n var i,\n len,\n pi,\n pp,\n item,\n node,\n array;\n\n if (source === null) {\n return source;\n }\n\n if (typeof source !== 'object') {\n return source;\n }\n\n // first look to see if anything cares about the root node\n for (i = 0, len = lookup.length; i < len; i += 1) {\n if (lookup[i] === \"root\") {\n item = map[i];\n node = source;\n mapItem(item, node);\n }\n }\n\n // iterate over the objects and look for any of the items we care about\n for (pp in source) {\n if (source.hasOwnProperty(pp) && pp != \"__children\") {\n pi = lookup.indexOf(pp);\n if (pi !== -1) {\n item = map[pi];\n\n if (item.isArray) {\n array = source[pp + \"_asArray\"];\n for (i = 0, len = array.length; i < len; i += 1) {\n node = array[i];\n mapItem(item, node);\n }\n } else {\n node = source[pp];\n mapItem(item, node);\n }\n }\n // now check this to see if he has any of the properties we care about\n performMapping(source[pp]);\n }\n }\n\n return source;\n };\n\n return {\n run: performMapping\n };\n}\n\nexport default ObjectIron;\n","/*\n Copyright 2011-2013 Abdulla Abdurakhmanov\n Original sources are available at https://code.google.com/p/x2js/\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/*\n Further modified for dashjs to:\n - keep track of children nodes in order in attribute __children.\n - add type conversion matchers\n - re-add ignoreRoot\n - allow zero-length attributePrefix\n - don't add white-space text nodes\n - remove explicit RequireJS support\n*/\n\nfunction X2JS(config) {\n 'use strict';\n\n var VERSION = \"1.2.0\";\n\n config = config || {};\n initConfigDefaults();\n initRequiredPolyfills();\n\n function initConfigDefaults() {\n if(config.escapeMode === undefined) {\n config.escapeMode = true;\n }\n\n if (config.attributePrefix === undefined) {\n config.attributePrefix = \"_\";\n }\n\n config.arrayAccessForm = config.arrayAccessForm || \"none\";\n config.emptyNodeForm = config.emptyNodeForm || \"text\";\n\n if(config.enableToStringFunc === undefined) {\n config.enableToStringFunc = true;\n }\n config.arrayAccessFormPaths = config.arrayAccessFormPaths || [];\n if(config.skipEmptyTextNodesForObj === undefined) {\n config.skipEmptyTextNodesForObj = true;\n }\n if(config.stripWhitespaces === undefined) {\n config.stripWhitespaces = true;\n }\n config.datetimeAccessFormPaths = config.datetimeAccessFormPaths || [];\n\n if(config.useDoubleQuotes === undefined) {\n config.useDoubleQuotes = false;\n }\n\n config.xmlElementsFilter = config.xmlElementsFilter || [];\n config.jsonPropertiesFilter = config.jsonPropertiesFilter || [];\n\n if(config.keepCData === undefined) {\n config.keepCData = false;\n }\n\n if (config.ignoreRoot === undefined) {\n config.ignoreRoot = false;\n }\n }\n\n var DOMNodeTypes = {\n ELEMENT_NODE \t : 1,\n TEXT_NODE \t : 3,\n CDATA_SECTION_NODE : 4,\n COMMENT_NODE\t : 8,\n DOCUMENT_NODE \t : 9\n };\n\n function initRequiredPolyfills() {\n }\n\n function getNodeLocalName( node ) {\n var nodeLocalName = node.localName;\n if(nodeLocalName == null) // Yeah, this is IE!!\n nodeLocalName = node.baseName;\n if(nodeLocalName == null || nodeLocalName==\"\") // ==\"\" is IE too\n nodeLocalName = node.nodeName;\n return nodeLocalName;\n }\n\n function getNodePrefix(node) {\n return node.prefix;\n }\n\n function escapeXmlChars(str) {\n if(typeof(str) == \"string\")\n return str.replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"').replace(/'/g, ''');\n else\n return str;\n }\n\n function unescapeXmlChars(str) {\n return str.replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '\"').replace(/'/g, \"'\").replace(/&/g, '&');\n }\n\n function checkInStdFiltersArrayForm(stdFiltersArrayForm, obj, name, path) {\n var idx = 0;\n for(; idx < stdFiltersArrayForm.length; idx++) {\n var filterPath = stdFiltersArrayForm[idx];\n if( typeof filterPath === \"string\" ) {\n if(filterPath == path)\n break;\n }\n else\n if( filterPath instanceof RegExp) {\n if(filterPath.test(path))\n break;\n }\n else\n if( typeof filterPath === \"function\") {\n if(filterPath(obj, name, path))\n break;\n }\n }\n return idx!=stdFiltersArrayForm.length;\n }\n\n function toArrayAccessForm(obj, childName, path) {\n switch(config.arrayAccessForm) {\n case \"property\":\n if(!(obj[childName] instanceof Array))\n obj[childName+\"_asArray\"] = [obj[childName]];\n else\n obj[childName+\"_asArray\"] = obj[childName];\n break;\n /*case \"none\":\n break;*/\n }\n\n if(!(obj[childName] instanceof Array) && config.arrayAccessFormPaths.length > 0) {\n if(checkInStdFiltersArrayForm(config.arrayAccessFormPaths, obj, childName, path)) {\n obj[childName] = [obj[childName]];\n }\n }\n }\n\n function fromXmlDateTime(prop) {\n // Implementation based up on http://stackoverflow.com/questions/8178598/xml-datetime-to-javascript-date-object\n // Improved to support full spec and optional parts\n var bits = prop.split(/[-T:+Z]/g);\n\n var d = new Date(bits[0], bits[1]-1, bits[2]);\n var secondBits = bits[5].split(\"\\.\");\n d.setHours(bits[3], bits[4], secondBits[0]);\n if(secondBits.length>1)\n d.setMilliseconds(secondBits[1]);\n\n // Get supplied time zone offset in minutes\n if(bits[6] && bits[7]) {\n var offsetMinutes = bits[6] * 60 + Number(bits[7]);\n var sign = /\\d\\d-\\d\\d:\\d\\d$/.test(prop)? '-' : '+';\n\n // Apply the sign\n offsetMinutes = 0 + (sign == '-'? -1 * offsetMinutes : offsetMinutes);\n\n // Apply offset and local timezone\n d.setMinutes(d.getMinutes() - offsetMinutes - d.getTimezoneOffset())\n }\n else\n if(prop.indexOf(\"Z\", prop.length - 1) !== -1) {\n d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds()));\n }\n\n // d is now a local time equivalent to the supplied time\n return d;\n }\n\n function checkFromXmlDateTimePaths(value, childName, fullPath) {\n if(config.datetimeAccessFormPaths.length > 0) {\n var path = fullPath.split(\"\\.#\")[0];\n if(checkInStdFiltersArrayForm(config.datetimeAccessFormPaths, value, childName, path)) {\n return fromXmlDateTime(value);\n }\n else\n return value;\n }\n else\n return value;\n }\n\n function checkXmlElementsFilter(obj, childType, childName, childPath) {\n if( childType == DOMNodeTypes.ELEMENT_NODE && config.xmlElementsFilter.length > 0) {\n return checkInStdFiltersArrayForm(config.xmlElementsFilter, obj, childName, childPath);\n }\n else\n return true;\n }\n\n function parseDOMChildren( node, path ) {\n if(node.nodeType == DOMNodeTypes.DOCUMENT_NODE) {\n var result = new Object;\n var nodeChildren = node.childNodes;\n // Alternative for firstElementChild which is not supported in some environments\n for(var cidx=0; cidx 1 && result.__text!=null && config.skipEmptyTextNodesForObj) {\n if( (config.stripWhitespaces && result.__text==\"\") || (result.__text.trim()==\"\")) {\n delete result.__text;\n }\n }\n delete result.__cnt;\n\n if( config.enableToStringFunc && (result.__text!=null || result.__cdata!=null )) {\n result.toString = function() {\n return (this.__text!=null? this.__text:'')+( this.__cdata!=null ? this.__cdata:'');\n };\n }\n\n return result;\n }\n else\n if(node.nodeType == DOMNodeTypes.TEXT_NODE || node.nodeType == DOMNodeTypes.CDATA_SECTION_NODE) {\n return node.nodeValue;\n }\n }\n\n function startTag(jsonObj, element, attrList, closed) {\n var resultStr = \"<\"+ ( (jsonObj!=null && jsonObj.__prefix!=null)? (jsonObj.__prefix+\":\"):\"\") + element;\n if(attrList!=null) {\n for(var aidx = 0; aidx < attrList.length; aidx++) {\n var attrName = attrList[aidx];\n var attrVal = jsonObj[attrName];\n if(config.escapeMode)\n attrVal=escapeXmlChars(attrVal);\n resultStr+=\" \"+attrName.substr(config.attributePrefix.length)+\"=\";\n if(config.useDoubleQuotes)\n resultStr+='\"'+attrVal+'\"';\n else\n resultStr+=\"'\"+attrVal+\"'\";\n }\n }\n if(!closed)\n resultStr+=\">\";\n else\n resultStr+=\"/>\";\n return resultStr;\n }\n\n function endTag(jsonObj,elementName) {\n return \"\";\n }\n\n function endsWith(str, suffix) {\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n }\n\n function jsonXmlSpecialElem ( jsonObj, jsonObjField ) {\n if((config.arrayAccessForm==\"property\" && endsWith(jsonObjField.toString(),(\"_asArray\")))\n || jsonObjField.toString().indexOf(config.attributePrefix)==0\n || jsonObjField.toString().indexOf(\"__\")==0\n || (jsonObj[jsonObjField] instanceof Function) )\n return true;\n else\n return false;\n }\n\n function jsonXmlElemCount ( jsonObj ) {\n var elementsCnt = 0;\n if(jsonObj instanceof Object ) {\n for( var it in jsonObj ) {\n if(jsonXmlSpecialElem ( jsonObj, it) )\n continue;\n elementsCnt++;\n }\n }\n return elementsCnt;\n }\n\n function checkJsonObjPropertiesFilter(jsonObj, propertyName, jsonObjPath) {\n return config.jsonPropertiesFilter.length == 0\n || jsonObjPath==\"\"\n || checkInStdFiltersArrayForm(config.jsonPropertiesFilter, jsonObj, propertyName, jsonObjPath);\n }\n\n function parseJSONAttributes ( jsonObj ) {\n var attrList = [];\n if(jsonObj instanceof Object ) {\n for( var ait in jsonObj ) {\n if(ait.toString().indexOf(\"__\")== -1 && ait.toString().indexOf(config.attributePrefix)==0) {\n attrList.push(ait);\n }\n }\n }\n return attrList;\n }\n\n function parseJSONTextAttrs ( jsonTxtObj ) {\n var result =\"\";\n\n if(jsonTxtObj.__cdata!=null) {\n result+=\"\";\n }\n\n if(jsonTxtObj.__text!=null) {\n if(config.escapeMode)\n result+=escapeXmlChars(jsonTxtObj.__text);\n else\n result+=jsonTxtObj.__text;\n }\n return result;\n }\n\n function parseJSONTextObject ( jsonTxtObj ) {\n var result =\"\";\n\n if( jsonTxtObj instanceof Object ) {\n result+=parseJSONTextAttrs ( jsonTxtObj );\n }\n else\n if(jsonTxtObj!=null) {\n if(config.escapeMode)\n result+=escapeXmlChars(jsonTxtObj);\n else\n result+=jsonTxtObj;\n }\n\n return result;\n }\n\n function getJsonPropertyPath(jsonObjPath, jsonPropName) {\n if (jsonObjPath===\"\") {\n return jsonPropName;\n }\n else\n return jsonObjPath+\".\"+jsonPropName;\n }\n\n function parseJSONArray ( jsonArrRoot, jsonArrObj, attrList, jsonObjPath ) {\n var result = \"\";\n if(jsonArrRoot.length == 0) {\n result+=startTag(jsonArrRoot, jsonArrObj, attrList, true);\n }\n else {\n for(var arIdx = 0; arIdx < jsonArrRoot.length; arIdx++) {\n result+=startTag(jsonArrRoot[arIdx], jsonArrObj, parseJSONAttributes(jsonArrRoot[arIdx]), false);\n result+=parseJSONObject(jsonArrRoot[arIdx], getJsonPropertyPath(jsonObjPath,jsonArrObj));\n result+=endTag(jsonArrRoot[arIdx],jsonArrObj);\n }\n }\n return result;\n }\n\n function parseJSONObject ( jsonObj, jsonObjPath ) {\n var result = \"\";\n\n var elementsCnt = jsonXmlElemCount ( jsonObj );\n\n if(elementsCnt > 0) {\n for( var it in jsonObj ) {\n\n if(jsonXmlSpecialElem ( jsonObj, it) || (jsonObjPath!=\"\" && !checkJsonObjPropertiesFilter(jsonObj, it, getJsonPropertyPath(jsonObjPath,it))) )\n continue;\n\n var subObj = jsonObj[it];\n\n var attrList = parseJSONAttributes( subObj )\n\n if(subObj == null || subObj == undefined) {\n result+=startTag(subObj, it, attrList, true);\n }\n else\n if(subObj instanceof Object) {\n\n if(subObj instanceof Array) {\n result+=parseJSONArray( subObj, it, attrList, jsonObjPath );\n }\n else if(subObj instanceof Date) {\n result+=startTag(subObj, it, attrList, false);\n result+=subObj.toISOString();\n result+=endTag(subObj,it);\n }\n else {\n var subObjElementsCnt = jsonXmlElemCount ( subObj );\n if(subObjElementsCnt > 0 || subObj.__text!=null || subObj.__cdata!=null) {\n result+=startTag(subObj, it, attrList, false);\n result+=parseJSONObject(subObj, getJsonPropertyPath(jsonObjPath,it));\n result+=endTag(subObj,it);\n }\n else {\n result+=startTag(subObj, it, attrList, true);\n }\n }\n }\n else {\n result+=startTag(subObj, it, attrList, false);\n result+=parseJSONTextObject(subObj);\n result+=endTag(subObj,it);\n }\n }\n }\n result+=parseJSONTextObject(jsonObj);\n\n return result;\n }\n\n this.parseXmlString = function(xmlDocStr) {\n var isIEParser = window.ActiveXObject || \"ActiveXObject\" in window;\n if (xmlDocStr === undefined) {\n return null;\n }\n var xmlDoc;\n if (window.DOMParser) {\n var parser=new window.DOMParser();\n var parsererrorNS = null;\n try {\n xmlDoc = parser.parseFromString( xmlDocStr, \"text/xml\" );\n if(xmlDoc.getElementsByTagNameNS(\"*\", \"parseerror\").length > 0) {\n xmlDoc = null;\n }\n }\n catch(err) {\n xmlDoc = null;\n }\n }\n else {\n // IE :(\n if(xmlDocStr.indexOf(\"\") + 2 );\n }\n xmlDoc=new ActiveXObject(\"Microsoft.XMLDOM\");\n xmlDoc.async=\"false\";\n xmlDoc.loadXML(xmlDocStr);\n }\n return xmlDoc;\n };\n\n this.asArray = function(prop) {\n if (prop === undefined || prop == null)\n return [];\n else\n if(prop instanceof Array)\n return prop;\n else\n return [prop];\n };\n\n this.toXmlDateTime = function(dt) {\n if(dt instanceof Date)\n return dt.toISOString();\n else\n if(typeof(dt) === 'number' )\n return new Date(dt).toISOString();\n else\n return null;\n };\n\n this.asDateTime = function(prop) {\n if(typeof(prop) == \"string\") {\n return fromXmlDateTime(prop);\n }\n else\n return prop;\n };\n\n this.xml2json = function (xmlDoc) {\n return parseDOMChildren ( xmlDoc );\n };\n\n this.xml_str2json = function (xmlDocStr) {\n var xmlDoc = this.parseXmlString(xmlDocStr);\n if(xmlDoc!=null)\n return this.xml2json(xmlDoc);\n else\n return null;\n };\n\n this.json2xml_str = function (jsonObj) {\n return parseJSONObject ( jsonObj, \"\" );\n };\n\n this.json2xml = function (jsonObj) {\n var xmlDocStr = this.json2xml_str (jsonObj);\n return this.parseXmlString(xmlDocStr);\n };\n\n this.getVersion = function () {\n return VERSION;\n };\n}\n\nexport default X2JS;\n","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport './index_mediaplayerOnly';\n\nimport MetricsReporting from './src/streaming/metrics/MetricsReporting';\nimport Protection from './src/streaming/protection/Protection';\nimport MediaPlayerFactory from './src/streaming/MediaPlayerFactory';\n\ndashjs.Protection = Protection;\ndashjs.MetricsReporting = MetricsReporting;\ndashjs.MediaPlayerFactory = MediaPlayerFactory;\n\nexport default dashjs;\nexport { Protection, MetricsReporting, MediaPlayerFactory};","/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MediaPlayer from './src/streaming/MediaPlayer';\nimport FactoryMaker from './src/core/FactoryMaker';\nimport {getVersionString} from './src/core/Version';\n\n// Shove both of these into the global scope\nvar context = (typeof window !== 'undefined' && window) || global;\n\nvar dashjs = context.dashjs;\nif (!dashjs) {\n dashjs = context.dashjs = {};\n}\n\ndashjs.MediaPlayer = MediaPlayer;\ndashjs.FactoryMaker = FactoryMaker;\ndashjs.Version = getVersionString();\n\nexport default dashjs;\nexport { MediaPlayer, FactoryMaker};\n","var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n;(function (exports) {\n\t'use strict';\n\n var Arr = (typeof Uint8Array !== 'undefined')\n ? Uint8Array\n : Array\n\n\tvar PLUS = '+'.charCodeAt(0)\n\tvar SLASH = '/'.charCodeAt(0)\n\tvar NUMBER = '0'.charCodeAt(0)\n\tvar LOWER = 'a'.charCodeAt(0)\n\tvar UPPER = 'A'.charCodeAt(0)\n\tvar PLUS_URL_SAFE = '-'.charCodeAt(0)\n\tvar SLASH_URL_SAFE = '_'.charCodeAt(0)\n\n\tfunction decode (elt) {\n\t\tvar code = elt.charCodeAt(0)\n\t\tif (code === PLUS ||\n\t\t code === PLUS_URL_SAFE)\n\t\t\treturn 62 // '+'\n\t\tif (code === SLASH ||\n\t\t code === SLASH_URL_SAFE)\n\t\t\treturn 63 // '/'\n\t\tif (code < NUMBER)\n\t\t\treturn -1 //no match\n\t\tif (code < NUMBER + 10)\n\t\t\treturn code - NUMBER + 26 + 26\n\t\tif (code < UPPER + 26)\n\t\t\treturn code - UPPER\n\t\tif (code < LOWER + 26)\n\t\t\treturn code - LOWER + 26\n\t}\n\n\tfunction b64ToByteArray (b64) {\n\t\tvar i, j, l, tmp, placeHolders, arr\n\n\t\tif (b64.length % 4 > 0) {\n\t\t\tthrow new Error('Invalid string. Length must be a multiple of 4')\n\t\t}\n\n\t\t// the number of equal signs (place holders)\n\t\t// if there are two placeholders, than the two characters before it\n\t\t// represent one byte\n\t\t// if there is only one, then the three characters before it represent 2 bytes\n\t\t// this is just a cheap hack to not do indexOf twice\n\t\tvar len = b64.length\n\t\tplaceHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0\n\n\t\t// base64 is 4/3 + up to two characters of the original data\n\t\tarr = new Arr(b64.length * 3 / 4 - placeHolders)\n\n\t\t// if there are placeholders, only get up to the last complete 4 chars\n\t\tl = placeHolders > 0 ? b64.length - 4 : b64.length\n\n\t\tvar L = 0\n\n\t\tfunction push (v) {\n\t\t\tarr[L++] = v\n\t\t}\n\n\t\tfor (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))\n\t\t\tpush((tmp & 0xFF0000) >> 16)\n\t\t\tpush((tmp & 0xFF00) >> 8)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\tif (placeHolders === 2) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)\n\t\t\tpush(tmp & 0xFF)\n\t\t} else if (placeHolders === 1) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)\n\t\t\tpush((tmp >> 8) & 0xFF)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\treturn arr\n\t}\n\n\tfunction uint8ToBase64 (uint8) {\n\t\tvar i,\n\t\t\textraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes\n\t\t\toutput = \"\",\n\t\t\ttemp, length\n\n\t\tfunction encode (num) {\n\t\t\treturn lookup.charAt(num)\n\t\t}\n\n\t\tfunction tripletToBase64 (num) {\n\t\t\treturn encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)\n\t\t}\n\n\t\t// go through the array every three bytes, we'll deal with trailing stuff later\n\t\tfor (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {\n\t\t\ttemp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t\t\toutput += tripletToBase64(temp)\n\t\t}\n\n\t\t// pad the end with zeros, but make sure to not forget the extra bytes\n\t\tswitch (extraBytes) {\n\t\t\tcase 1:\n\t\t\t\ttemp = uint8[uint8.length - 1]\n\t\t\t\toutput += encode(temp >> 2)\n\t\t\t\toutput += encode((temp << 4) & 0x3F)\n\t\t\t\toutput += '=='\n\t\t\t\tbreak\n\t\t\tcase 2:\n\t\t\t\ttemp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])\n\t\t\t\toutput += encode(temp >> 10)\n\t\t\t\toutput += encode((temp >> 4) & 0x3F)\n\t\t\t\toutput += encode((temp << 2) & 0x3F)\n\t\t\t\toutput += '='\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn output\n\t}\n\n\texports.toByteArray = b64ToByteArray\n\texports.fromByteArray = uint8ToBase64\n}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar Buffer = require(10).Buffer;\n\nvar isBufferEncoding = Buffer.isEncoding\n || function(encoding) {\n switch (encoding && encoding.toLowerCase()) {\n case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\n default: return false;\n }\n }\n\n\nfunction assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nvar StringDecoder = exports.StringDecoder = function(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n // CESU-8 represents each of Surrogate Pair by 3-bytes\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n // UTF-16 represents each of Surrogate Pair by 2-bytes\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n\n // Enough space to store all bytes of a single character. UTF-8 needs 4\n // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n this.charBuffer = new Buffer(6);\n // Number of bytes received for the current incomplete multi-byte character.\n this.charReceived = 0;\n // Number of bytes expected for the current incomplete multi-byte character.\n this.charLength = 0;\n};\n\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder.prototype.write = function(buffer) {\n var charStr = '';\n // if our last write ended with an incomplete multibyte character\n while (this.charLength) {\n // determine how many remaining bytes this buffer has to offer for this char\n var available = (buffer.length >= this.charLength - this.charReceived) ?\n this.charLength - this.charReceived :\n buffer.length;\n\n // add the new bytes to the char buffer\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n\n if (this.charReceived < this.charLength) {\n // still not enough chars in this buffer? wait for more ...\n return '';\n }\n\n // remove bytes belonging to the current character from the buffer\n buffer = buffer.slice(available, buffer.length);\n\n // get the character that was split\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n var charCode = charStr.charCodeAt(charStr.length - 1);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n this.charLength += this.surrogateSize;\n charStr = '';\n continue;\n }\n this.charReceived = this.charLength = 0;\n\n // if there are no more bytes in this buffer, just emit our char\n if (buffer.length === 0) {\n return charStr;\n }\n break;\n }\n\n // determine and set charLength / charReceived\n this.detectIncompleteChar(buffer);\n\n var end = buffer.length;\n if (this.charLength) {\n // buffer the incomplete character bytes we got\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n end -= this.charReceived;\n }\n\n charStr += buffer.toString(this.encoding, 0, end);\n\n var end = charStr.length - 1;\n var charCode = charStr.charCodeAt(end);\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n var size = this.surrogateSize;\n this.charLength += size;\n this.charReceived += size;\n this.charBuffer.copy(this.charBuffer, size, 0, size);\n buffer.copy(this.charBuffer, 0, 0, size);\n return charStr.substring(0, end);\n }\n\n // or just emit the charStr\n return charStr;\n};\n\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n// the end of the given buffer. If so, it sets this.charLength to the byte\n// length that character, and sets this.charReceived to the number of bytes\n// that are available for this character.\nStringDecoder.prototype.detectIncompleteChar = function(buffer) {\n // determine how many bytes we have to check at the end of this buffer\n var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n // Figure out if one of the last i bytes of our buffer announces an\n // incomplete char.\n for (; i > 0; i--) {\n var c = buffer[buffer.length - i];\n\n // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n // 110XXXXX\n if (i == 1 && c >> 5 == 0x06) {\n this.charLength = 2;\n break;\n }\n\n // 1110XXXX\n if (i <= 2 && c >> 4 == 0x0E) {\n this.charLength = 3;\n break;\n }\n\n // 11110XXX\n if (i <= 3 && c >> 3 == 0x1E) {\n this.charLength = 4;\n break;\n }\n }\n this.charReceived = i;\n};\n\nStringDecoder.prototype.end = function(buffer) {\n var res = '';\n if (buffer && buffer.length)\n res = this.write(buffer);\n\n if (this.charReceived) {\n var cr = this.charReceived;\n var buf = this.charBuffer;\n var enc = this.encoding;\n res += buf.slice(0, cr).toString(enc);\n }\n\n return res;\n};\n\nfunction passThroughWrite(buffer) {\n return buffer.toString(this.encoding);\n}\n\nfunction utf16DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 2;\n this.charLength = this.charReceived ? 2 : 0;\n}\n\nfunction base64DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 3;\n this.charLength = this.charReceived ? 3 : 0;\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\nBuffer.poolSize = 8192 // not used by this implementation\n\nvar rootParent = {}\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property\n * on objects.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\nfunction typedArraySupport () {\n function Bar () {}\n try {\n var arr = new Uint8Array(1)\n arr.foo = function () { return 42 }\n arr.constructor = Bar\n return arr.foo() === 42 && // typed array instances can be augmented\n arr.constructor === Bar && // constructor can be set\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\n/**\n * Class: Buffer\n * =============\n *\n * The Buffer constructor returns instances of `Uint8Array` that are augmented\n * with function properties for all the node `Buffer` API functions. We use\n * `Uint8Array` so that square bracket notation works as expected -- it returns\n * a single octet.\n *\n * By augmenting the instances, we can avoid modifying the `Uint8Array`\n * prototype.\n */\nfunction Buffer (arg) {\n if (!(this instanceof Buffer)) {\n // Avoid going through an ArgumentsAdaptorTrampoline in the common case.\n if (arguments.length > 1) return new Buffer(arg, arguments[1])\n return new Buffer(arg)\n }\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n this.length = 0\n this.parent = undefined\n }\n\n // Common case.\n if (typeof arg === 'number') {\n return fromNumber(this, arg)\n }\n\n // Slightly less common case.\n if (typeof arg === 'string') {\n return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')\n }\n\n // Unusual.\n return fromObject(this, arg)\n}\n\nfunction fromNumber (that, length) {\n that = allocate(that, length < 0 ? 0 : checked(length) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < length; i++) {\n that[i] = 0\n }\n }\n return that\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'\n\n // Assumption: byteLength() return value is always < kMaxLength.\n var length = byteLength(string, encoding) | 0\n that = allocate(that, length)\n\n that.write(string, encoding)\n return that\n}\n\nfunction fromObject (that, object) {\n if (Buffer.isBuffer(object)) return fromBuffer(that, object)\n\n if (isArray(object)) return fromArray(that, object)\n\n if (object == null) {\n throw new TypeError('must start with number, buffer, array or string')\n }\n\n if (typeof ArrayBuffer !== 'undefined') {\n if (object.buffer instanceof ArrayBuffer) {\n return fromTypedArray(that, object)\n }\n if (object instanceof ArrayBuffer) {\n return fromArrayBuffer(that, object)\n }\n }\n\n if (object.length) return fromArrayLike(that, object)\n\n return fromJsonObject(that, object)\n}\n\nfunction fromBuffer (that, buffer) {\n var length = checked(buffer.length) | 0\n that = allocate(that, length)\n buffer.copy(that, 0, 0, length)\n return that\n}\n\nfunction fromArray (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\n// Duplicate of fromArray() to keep fromArray() monomorphic.\nfunction fromTypedArray (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n // Truncating the elements is probably not what people expect from typed\n // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior\n // of the old Buffer constructor.\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array) {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n array.byteLength\n that = Buffer._augment(new Uint8Array(array))\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromTypedArray(that, new Uint8Array(array))\n }\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = checked(array.length) | 0\n that = allocate(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\n// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.\n// Returns a zero-length buffer for inputs that don't conform to the spec.\nfunction fromJsonObject (that, object) {\n var array\n var length = 0\n\n if (object.type === 'Buffer' && isArray(object.data)) {\n array = object.data\n length = checked(array.length) | 0\n }\n that = allocate(that, length)\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n} else {\n // pre-set for values that may exist in the future\n Buffer.prototype.length = undefined\n Buffer.prototype.parent = undefined\n}\n\nfunction allocate (that, length) {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = Buffer._augment(new Uint8Array(length))\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that.length = length\n that._isBuffer = true\n }\n\n var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1\n if (fromPool) that.parent = rootParent\n\n return that\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (subject, encoding) {\n if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)\n\n var buf = new Buffer(subject, encoding)\n delete buf.parent\n return buf\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n var i = 0\n var len = Math.min(x, y)\n while (i < len) {\n if (a[i] !== b[i]) break\n\n ++i\n }\n\n if (i !== len) {\n x = a[i]\n y = b[i]\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'raw':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')\n\n if (list.length === 0) {\n return new Buffer(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; i++) {\n length += list[i].length\n }\n }\n\n var buf = new Buffer(length)\n var pos = 0\n for (i = 0; i < list.length; i++) {\n var item = list[i]\n item.copy(buf, pos)\n pos += item.length\n }\n return buf\n}\n\nfunction byteLength (string, encoding) {\n if (typeof string !== 'string') string = '' + string\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'binary':\n // Deprecated\n case 'raw':\n case 'raws':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n start = start | 0\n end = end === undefined || end === Infinity ? this.length : end | 0\n\n if (!encoding) encoding = 'utf8'\n if (start < 0) start = 0\n if (end > this.length) end = this.length\n if (end <= start) return ''\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'binary':\n return binarySlice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return 0\n return Buffer.compare(this, b)\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset) {\n if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff\n else if (byteOffset < -0x80000000) byteOffset = -0x80000000\n byteOffset >>= 0\n\n if (this.length === 0) return -1\n if (byteOffset >= this.length) return -1\n\n // Negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)\n\n if (typeof val === 'string') {\n if (val.length === 0) return -1 // special case: looking for empty string always fails\n return String.prototype.indexOf.call(this, val, byteOffset)\n }\n if (Buffer.isBuffer(val)) {\n return arrayIndexOf(this, val, byteOffset)\n }\n if (typeof val === 'number') {\n if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {\n return Uint8Array.prototype.indexOf.call(this, val, byteOffset)\n }\n return arrayIndexOf(this, [ val ], byteOffset)\n }\n\n function arrayIndexOf (arr, val, byteOffset) {\n var foundIndex = -1\n for (var i = 0; byteOffset + i < arr.length; i++) {\n if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex\n } else {\n foundIndex = -1\n }\n }\n return -1\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\n// `get` is deprecated\nBuffer.prototype.get = function get (offset) {\n console.log('.get() is deprecated. Access using array indexes instead.')\n return this.readUInt8(offset)\n}\n\n// `set` is deprecated\nBuffer.prototype.set = function set (v, offset) {\n console.log('.set() is deprecated. Access using array indexes instead.')\n return this.writeUInt8(v, offset)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new Error('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; i++) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) throw new Error('Invalid hex string')\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction binaryWrite (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n var swap = encoding\n encoding = offset\n offset = length | 0\n length = swap\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'binary':\n return binaryWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; i++) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction binarySlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; i++) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; i++) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = Buffer._augment(this.subarray(start, end))\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; i++) {\n newBuf[i] = this[i + start]\n }\n }\n\n if (newBuf.length) newBuf.parent = this.parent || this\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('value is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = value < 0 ? 1 : 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = value < 0 ? 1 : 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (value > max || value < min) throw new RangeError('value is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('index out of range')\n if (offset < 0) throw new RangeError('index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; i--) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; i++) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n target._set(this.subarray(start, start + len), targetStart)\n }\n\n return len\n}\n\n// fill(value, start=0, end=buffer.length)\nBuffer.prototype.fill = function fill (value, start, end) {\n if (!value) value = 0\n if (!start) start = 0\n if (!end) end = this.length\n\n if (end < start) throw new RangeError('end < start')\n\n // Fill 0 bytes; we're done\n if (end === start) return\n if (this.length === 0) return\n\n if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')\n if (end < 0 || end > this.length) throw new RangeError('end out of bounds')\n\n var i\n if (typeof value === 'number') {\n for (i = start; i < end; i++) {\n this[i] = value\n }\n } else {\n var bytes = utf8ToBytes(value.toString())\n var len = bytes.length\n for (i = start; i < end; i++) {\n this[i] = bytes[i % len]\n }\n }\n\n return this\n}\n\n/**\n * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.\n * Added in Node 0.12. Only available in browsers that support ArrayBuffer.\n */\nBuffer.prototype.toArrayBuffer = function toArrayBuffer () {\n if (typeof Uint8Array !== 'undefined') {\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n return (new Buffer(this)).buffer\n } else {\n var buf = new Uint8Array(this.length)\n for (var i = 0, len = buf.length; i < len; i += 1) {\n buf[i] = this[i]\n }\n return buf.buffer\n }\n } else {\n throw new TypeError('Buffer.toArrayBuffer not supported in this browser')\n }\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar BP = Buffer.prototype\n\n/**\n * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods\n */\nBuffer._augment = function _augment (arr) {\n arr.constructor = Buffer\n arr._isBuffer = true\n\n // save reference to original Uint8Array set method before overwriting\n arr._set = arr.set\n\n // deprecated\n arr.get = BP.get\n arr.set = BP.set\n\n arr.write = BP.write\n arr.toString = BP.toString\n arr.toLocaleString = BP.toString\n arr.toJSON = BP.toJSON\n arr.equals = BP.equals\n arr.compare = BP.compare\n arr.indexOf = BP.indexOf\n arr.copy = BP.copy\n arr.slice = BP.slice\n arr.readUIntLE = BP.readUIntLE\n arr.readUIntBE = BP.readUIntBE\n arr.readUInt8 = BP.readUInt8\n arr.readUInt16LE = BP.readUInt16LE\n arr.readUInt16BE = BP.readUInt16BE\n arr.readUInt32LE = BP.readUInt32LE\n arr.readUInt32BE = BP.readUInt32BE\n arr.readIntLE = BP.readIntLE\n arr.readIntBE = BP.readIntBE\n arr.readInt8 = BP.readInt8\n arr.readInt16LE = BP.readInt16LE\n arr.readInt16BE = BP.readInt16BE\n arr.readInt32LE = BP.readInt32LE\n arr.readInt32BE = BP.readInt32BE\n arr.readFloatLE = BP.readFloatLE\n arr.readFloatBE = BP.readFloatBE\n arr.readDoubleLE = BP.readDoubleLE\n arr.readDoubleBE = BP.readDoubleBE\n arr.writeUInt8 = BP.writeUInt8\n arr.writeUIntLE = BP.writeUIntLE\n arr.writeUIntBE = BP.writeUIntBE\n arr.writeUInt16LE = BP.writeUInt16LE\n arr.writeUInt16BE = BP.writeUInt16BE\n arr.writeUInt32LE = BP.writeUInt32LE\n arr.writeUInt32BE = BP.writeUInt32BE\n arr.writeIntLE = BP.writeIntLE\n arr.writeIntBE = BP.writeIntBE\n arr.writeInt8 = BP.writeInt8\n arr.writeInt16LE = BP.writeInt16LE\n arr.writeInt16BE = BP.writeInt16BE\n arr.writeInt32LE = BP.writeInt32LE\n arr.writeInt32BE = BP.writeInt32BE\n arr.writeFloatLE = BP.writeFloatLE\n arr.writeFloatBE = BP.writeFloatBE\n arr.writeDoubleLE = BP.writeDoubleLE\n arr.writeDoubleBE = BP.writeDoubleBE\n arr.fill = BP.fill\n arr.inspect = BP.inspect\n arr.toArrayBuffer = BP.toArrayBuffer\n\n return arr\n}\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; i++) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; i++) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; i++) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; i++) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n","/*! codem-isoboxer v0.3.4 https://github.com/madebyhiro/codem-isoboxer/blob/master/LICENSE.txt */\nvar ISOBoxer = {};\n\nISOBoxer.parseBuffer = function(arrayBuffer) {\n return new ISOFile(arrayBuffer).parse();\n};\n\nISOBoxer.addBoxProcessor = function(type, parser) {\n if (typeof type !== 'string' || typeof parser !== 'function') {\n return;\n }\n ISOBox.prototype._boxProcessors[type] = parser;\n};\n\nISOBoxer.createFile = function() {\n return new ISOFile();\n};\n\n// See ISOBoxer.append() for 'pos' parameter syntax\nISOBoxer.createBox = function(type, parent, pos) {\n var newBox = ISOBox.create(type);\n if (parent) {\n parent.append(newBox, pos);\n }\n return newBox;\n};\n\n// See ISOBoxer.append() for 'pos' parameter syntax\nISOBoxer.createFullBox = function(type, parent, pos) {\n var newBox = ISOBoxer.createBox(type, parent, pos);\n newBox.version = 0;\n newBox.flags = 0;\n return newBox;\n};\n\nISOBoxer.Utils = {};\nISOBoxer.Utils.dataViewToString = function(dataView, encoding) {\n var impliedEncoding = encoding || 'utf-8';\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder(impliedEncoding).decode(dataView);\n }\n var a = [];\n var i = 0;\n\n if (impliedEncoding === 'utf-8') {\n /* The following algorithm is essentially a rewrite of the UTF8.decode at\n http://bannister.us/weblog/2007/simple-base64-encodedecode-javascript/\n */\n\n while (i < dataView.byteLength) {\n var c = dataView.getUint8(i++);\n if (c < 0x80) {\n // 1-byte character (7 bits)\n } else if (c < 0xe0) {\n // 2-byte character (11 bits)\n c = (c & 0x1f) << 6;\n c |= (dataView.getUint8(i++) & 0x3f);\n } else if (c < 0xf0) {\n // 3-byte character (16 bits)\n c = (c & 0xf) << 12;\n c |= (dataView.getUint8(i++) & 0x3f) << 6;\n c |= (dataView.getUint8(i++) & 0x3f);\n } else {\n // 4-byte character (21 bits)\n c = (c & 0x7) << 18;\n c |= (dataView.getUint8(i++) & 0x3f) << 12;\n c |= (dataView.getUint8(i++) & 0x3f) << 6;\n c |= (dataView.getUint8(i++) & 0x3f);\n }\n a.push(String.fromCharCode(c));\n }\n } else { // Just map byte-by-byte (probably wrong)\n while (i < dataView.byteLength) {\n a.push(String.fromCharCode(dataView.getUint8(i++)));\n }\n }\n return a.join('');\n};\n\nISOBoxer.Utils.utf8ToByteArray = function(string) {\n // Only UTF-8 encoding is supported by TextEncoder\n var u, i;\n if (typeof TextEncoder !== 'undefined') {\n u = new TextEncoder().encode(string);\n } else {\n u = [];\n for (i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n if (c < 0x80) {\n u.push(c);\n } else if (c < 0x800) {\n u.push(0xC0 | (c >> 6));\n u.push(0x80 | (63 & c));\n } else if (c < 0x10000) {\n u.push(0xE0 | (c >> 12));\n u.push(0x80 | (63 & (c >> 6)));\n u.push(0x80 | (63 & c));\n } else {\n u.push(0xF0 | (c >> 18));\n u.push(0x80 | (63 & (c >> 12)));\n u.push(0x80 | (63 & (c >> 6)));\n u.push(0x80 | (63 & c));\n }\n }\n }\n return u;\n};\n\n// Method to append a box in the list of child boxes\n// The 'pos' parameter can be either:\n// - (number) a position index at which to insert the new box\n// - (string) the type of the box after which to insert the new box\n// - (object) the box after which to insert the new box\nISOBoxer.Utils.appendBox = function(parent, box, pos) {\n box._offset = parent._cursor.offset;\n box._root = (parent._root ? parent._root : parent);\n box._raw = parent._raw;\n box._parent = parent;\n\n if (pos === -1) {\n // The new box is a sub-box of the parent but not added in boxes array,\n // for example when the new box is set as an entry (see dref and stsd for example)\n return;\n }\n\n if (pos === undefined || pos === null) {\n parent.boxes.push(box);\n return;\n }\n\n var index = -1,\n type;\n\n if (typeof pos === \"number\") {\n index = pos;\n } else {\n if (typeof pos === \"string\") {\n type = pos;\n } else if (typeof pos === \"object\" && pos.type) {\n type = pos.type;\n } else {\n parent.boxes.push(box);\n return;\n }\n\n for (var i = 0; i < parent.boxes.length; i++) {\n if (type === parent.boxes[i].type) {\n index = i + 1;\n break;\n }\n }\n }\n parent.boxes.splice(index, 0, box);\n};\n\nif (typeof exports !== 'undefined') {\n exports.parseBuffer = ISOBoxer.parseBuffer;\n exports.addBoxProcessor = ISOBoxer.addBoxProcessor;\n exports.createFile = ISOBoxer.createFile;\n exports.createBox = ISOBoxer.createBox;\n exports.createFullBox = ISOBoxer.createFullBox;\n exports.Utils = ISOBoxer.Utils;\n}\n\nISOBoxer.Cursor = function(initialOffset) {\n this.offset = (typeof initialOffset == 'undefined' ? 0 : initialOffset);\n};\n\nvar ISOFile = function(arrayBuffer) {\n this._cursor = new ISOBoxer.Cursor();\n this.boxes = [];\n if (arrayBuffer) {\n this._raw = new DataView(arrayBuffer);\n }\n};\n\nISOFile.prototype.fetch = function(type) {\n var result = this.fetchAll(type, true);\n return (result.length ? result[0] : null);\n};\n\nISOFile.prototype.fetchAll = function(type, returnEarly) {\n var result = [];\n ISOFile._sweep.call(this, type, result, returnEarly);\n return result;\n};\n\nISOFile.prototype.parse = function() {\n this._cursor.offset = 0;\n this.boxes = [];\n while (this._cursor.offset < this._raw.byteLength) {\n var box = ISOBox.parse(this);\n\n // Box could not be parsed\n if (typeof box.type === 'undefined') break;\n\n this.boxes.push(box);\n }\n return this;\n};\n\nISOFile._sweep = function(type, result, returnEarly) {\n if (this.type && this.type == type) result.push(this);\n for (var box in this.boxes) {\n if (result.length && returnEarly) return;\n ISOFile._sweep.call(this.boxes[box], type, result, returnEarly);\n }\n};\n\nISOFile.prototype.write = function() {\n\n var length = 0,\n i;\n\n for (i = 0; i < this.boxes.length; i++) {\n length += this.boxes[i].getLength(false);\n }\n\n var bytes = new Uint8Array(length);\n this._rawo = new DataView(bytes.buffer);\n this.bytes = bytes;\n this._cursor.offset = 0;\n\n for (i = 0; i < this.boxes.length; i++) {\n this.boxes[i].write();\n }\n\n return bytes.buffer;\n};\n\nISOFile.prototype.append = function(box, pos) {\n ISOBoxer.Utils.appendBox(this, box, pos);\n};\nvar ISOBox = function() {\n this._cursor = new ISOBoxer.Cursor();\n};\n\nISOBox.parse = function(parent) {\n var newBox = new ISOBox();\n newBox._offset = parent._cursor.offset;\n newBox._root = (parent._root ? parent._root : parent);\n newBox._raw = parent._raw;\n newBox._parent = parent;\n newBox._parseBox();\n parent._cursor.offset = newBox._raw.byteOffset + newBox._raw.byteLength;\n return newBox;\n};\n\nISOBox.create = function(type) {\n var newBox = new ISOBox();\n newBox.type = type;\n newBox.boxes = [];\n return newBox;\n};\n\nISOBox.prototype._boxContainers = ['dinf', 'edts', 'mdia', 'meco', 'mfra', 'minf', 'moof', 'moov', 'mvex', 'stbl', 'strk', 'traf', 'trak', 'tref', 'udta', 'vttc', 'sinf', 'schi', 'encv', 'enca'];\n\nISOBox.prototype._boxProcessors = {};\n\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Generic read/write functions\n\nISOBox.prototype._procField = function (name, type, size) {\n if (this._parsing) {\n this[name] = this._readField(type, size);\n }\n else {\n this._writeField(type, size, this[name]);\n }\n};\n\nISOBox.prototype._procFieldArray = function (name, length, type, size) {\n var i;\n if (this._parsing) {\n this[name] = [];\n for (i = 0; i < length; i++) {\n this[name][i] = this._readField(type, size);\n }\n }\n else {\n for (i = 0; i < this[name].length; i++) {\n this._writeField(type, size, this[name][i]);\n }\n }\n};\n\nISOBox.prototype._procFullBox = function() {\n this._procField('version', 'uint', 8);\n this._procField('flags', 'uint', 24);\n};\n\nISOBox.prototype._procEntries = function(name, length, fn) {\n var i;\n if (this._parsing) {\n this[name] = [];\n for (i = 0; i < length; i++) {\n this[name].push({});\n fn.call(this, this[name][i]);\n }\n }\n else {\n for (i = 0; i < length; i++) {\n fn.call(this, this[name][i]);\n }\n }\n};\n\nISOBox.prototype._procSubEntries = function(entry, name, length, fn) {\n var i;\n if (this._parsing) {\n entry[name] = [];\n for (i = 0; i < length; i++) {\n entry[name].push({});\n fn.call(this, entry[name][i]);\n }\n }\n else {\n for (i = 0; i < length; i++) {\n fn.call(this, entry[name][i]);\n }\n }\n};\n\nISOBox.prototype._procEntryField = function (entry, name, type, size) {\n if (this._parsing) {\n entry[name] = this._readField(type, size);\n }\n else {\n this._writeField(type, size, entry[name]);\n }\n};\n\nISOBox.prototype._procSubBoxes = function(name, length) {\n var i;\n if (this._parsing) {\n this[name] = [];\n for (i = 0; i < length; i++) {\n this[name].push(ISOBox.parse(this));\n }\n }\n else {\n for (i = 0; i < length; i++) {\n if (this._rawo) {\n this[name][i].write();\n } else {\n this.size += this[name][i].getLength();\n }\n }\n }\n};\n\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Read/parse functions\n\nISOBox.prototype._readField = function(type, size) {\n switch (type) {\n case 'uint':\n return this._readUint(size);\n case 'int':\n return this._readInt(size);\n case 'template':\n return this._readTemplate(size);\n case 'string':\n return (size === -1) ? this._readTerminatedString() : this._readString(size);\n case 'data':\n return this._readData(size);\n case 'utf8':\n return this._readUTF8String();\n default:\n return -1;\n }\n};\n\nISOBox.prototype._readInt = function(size) {\n var result = null,\n offset = this._cursor.offset - this._raw.byteOffset;\n switch(size) {\n case 8:\n result = this._raw.getInt8(offset);\n break;\n case 16:\n result = this._raw.getInt16(offset);\n break;\n case 32:\n result = this._raw.getInt32(offset);\n break;\n case 64:\n // Warning: JavaScript cannot handle 64-bit integers natively.\n // This will give unexpected results for integers >= 2^53\n var s1 = this._raw.getInt32(offset);\n var s2 = this._raw.getInt32(offset + 4);\n result = (s1 * Math.pow(2,32)) + s2;\n break;\n }\n this._cursor.offset += (size >> 3);\n return result;\n};\n\nISOBox.prototype._readUint = function(size) {\n var result = null,\n offset = this._cursor.offset - this._raw.byteOffset,\n s1, s2;\n switch(size) {\n case 8:\n result = this._raw.getUint8(offset);\n break;\n case 16:\n result = this._raw.getUint16(offset);\n break;\n case 24:\n s1 = this._raw.getUint16(offset);\n s2 = this._raw.getUint8(offset + 2);\n result = (s1 << 8) + s2;\n break;\n case 32:\n result = this._raw.getUint32(offset);\n break;\n case 64:\n // Warning: JavaScript cannot handle 64-bit integers natively.\n // This will give unexpected results for integers >= 2^53\n s1 = this._raw.getUint32(offset);\n s2 = this._raw.getUint32(offset + 4);\n result = (s1 * Math.pow(2,32)) + s2;\n break;\n }\n this._cursor.offset += (size >> 3);\n return result;\n};\n\nISOBox.prototype._readString = function(length) {\n var str = '';\n for (var c = 0; c < length; c++) {\n var char = this._readUint(8);\n str += String.fromCharCode(char);\n }\n return str;\n};\n\nISOBox.prototype._readTemplate = function(size) {\n var pre = this._readUint(size / 2);\n var post = this._readUint(size / 2);\n return pre + (post / Math.pow(2, size / 2));\n};\n\nISOBox.prototype._readTerminatedString = function() {\n var str = '';\n while (this._cursor.offset - this._offset < this._raw.byteLength) {\n var char = this._readUint(8);\n if (char === 0) break;\n str += String.fromCharCode(char);\n }\n return str;\n};\n\nISOBox.prototype._readData = function(size) {\n var length = (size > 0) ? size : (this._raw.byteLength - (this._cursor.offset - this._offset));\n var data = new DataView(this._raw.buffer, this._cursor.offset, length);\n this._cursor.offset += length;\n return data;\n};\n\nISOBox.prototype._readUTF8String = function() {\n var data = this._readData();\n return ISOBoxer.Utils.dataViewToString(data);\n};\n\nISOBox.prototype._parseBox = function() {\n this._parsing = true;\n this._cursor.offset = this._offset;\n\n // return immediately if there are not enough bytes to read the header\n if (this._offset + 8 > this._raw.buffer.byteLength) {\n this._root._incomplete = true;\n return;\n }\n\n this._procField('size', 'uint', 32);\n this._procField('type', 'string', 4);\n\n if (this.size === 1) { this._procField('largesize', 'uint', 64); }\n if (this.type === 'uuid') { this._procFieldArray('usertype', 16, 'uint', 8); }\n\n switch(this.size) {\n case 0:\n this._raw = new DataView(this._raw.buffer, this._offset, (this._raw.byteLength - this._cursor.offset + 8));\n break;\n case 1:\n if (this._offset + this.size > this._raw.buffer.byteLength) {\n this._incomplete = true;\n this._root._incomplete = true;\n } else {\n this._raw = new DataView(this._raw.buffer, this._offset, this.largesize);\n }\n break;\n default:\n if (this._offset + this.size > this._raw.buffer.byteLength) {\n this._incomplete = true;\n this._root._incomplete = true;\n } else {\n this._raw = new DataView(this._raw.buffer, this._offset, this.size);\n }\n }\n\n // additional parsing\n if (!this._incomplete) {\n if (this._boxProcessors[this.type]) {\n this._boxProcessors[this.type].call(this);\n }\n if (this._boxContainers.indexOf(this.type) !== -1) {\n this._parseContainerBox();\n } else{\n // Unknown box => read and store box content\n this._data = this._readData();\n }\n }\n};\n\nISOBox.prototype._parseFullBox = function() {\n this.version = this._readUint(8);\n this.flags = this._readUint(24);\n};\n\nISOBox.prototype._parseContainerBox = function() {\n this.boxes = [];\n while (this._cursor.offset - this._raw.byteOffset < this._raw.byteLength) {\n this.boxes.push(ISOBox.parse(this));\n }\n};\n\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Write functions\n\nISOBox.prototype.append = function(box, pos) {\n ISOBoxer.Utils.appendBox(this, box, pos);\n};\n\nISOBox.prototype.getLength = function() {\n this._parsing = false;\n this._rawo = null;\n\n this.size = 0;\n this._procField('size', 'uint', 32);\n this._procField('type', 'string', 4);\n\n if (this.size === 1) { this._procField('largesize', 'uint', 64); }\n if (this.type === 'uuid') { this._procFieldArray('usertype', 16, 'uint', 8); }\n\n if (this._boxProcessors[this.type]) {\n this._boxProcessors[this.type].call(this);\n }\n\n if (this._boxContainers.indexOf(this.type) !== -1) {\n for (var i = 0; i < this.boxes.length; i++) {\n this.size += this.boxes[i].getLength();\n }\n } \n\n if (this._data) {\n this._writeData(this._data);\n }\n\n return this.size;\n};\n\nISOBox.prototype.write = function() {\n this._parsing = false;\n this._cursor.offset = this._parent._cursor.offset;\n\n switch(this.size) {\n case 0:\n this._rawo = new DataView(this._parent._rawo.buffer, this._cursor.offset, (this.parent._rawo.byteLength - this._cursor.offset));\n break;\n case 1:\n this._rawo = new DataView(this._parent._rawo.buffer, this._cursor.offset, this.largesize);\n break;\n default:\n this._rawo = new DataView(this._parent._rawo.buffer, this._cursor.offset, this.size);\n }\n\n this._procField('size', 'uint', 32);\n this._procField('type', 'string', 4);\n\n if (this.size === 1) { this._procField('largesize', 'uint', 64); }\n if (this.type === 'uuid') { this._procFieldArray('usertype', 16, 'uint', 8); }\n\n if (this._boxProcessors[this.type]) {\n this._boxProcessors[this.type].call(this);\n }\n\n if (this._boxContainers.indexOf(this.type) !== -1) {\n for (var i = 0; i < this.boxes.length; i++) {\n this.boxes[i].write();\n }\n } \n\n if (this._data) {\n this._writeData(this._data);\n }\n\n this._parent._cursor.offset += this.size;\n\n return this.size;\n};\n\nISOBox.prototype._writeInt = function(size, value) {\n if (this._rawo) {\n var offset = this._cursor.offset - this._rawo.byteOffset;\n switch(size) {\n case 8:\n this._rawo.setInt8(offset, value);\n break;\n case 16:\n this._rawo.setInt16(offset, value);\n break;\n case 32:\n this._rawo.setInt32(offset, value);\n break;\n case 64:\n // Warning: JavaScript cannot handle 64-bit integers natively.\n // This will give unexpected results for integers >= 2^53\n var s1 = Math.floor(value / Math.pow(2,32));\n var s2 = value - (s1 * Math.pow(2,32));\n this._rawo.setUint32(offset, s1);\n this._rawo.setUint32(offset + 4, s2);\n break;\n }\n this._cursor.offset += (size >> 3);\n } else {\n this.size += (size >> 3);\n }\n};\n\nISOBox.prototype._writeUint = function(size, value) {\n\n if (this._rawo) {\n var offset = this._cursor.offset - this._rawo.byteOffset,\n s1, s2;\n switch(size) {\n case 8:\n this._rawo.setUint8(offset, value);\n break;\n case 16:\n this._rawo.setUint16(offset, value);\n break;\n case 24:\n s1 = (value & 0xFFFF00) >> 8;\n s2 = (value & 0x0000FF);\n this._rawo.setUint16(offset, s1);\n this._rawo.setUint8(offset + 2, s2);\n break;\n case 32:\n this._rawo.setUint32(offset, value);\n break;\n case 64:\n // Warning: JavaScript cannot handle 64-bit integers natively.\n // This will give unexpected results for integers >= 2^53\n s1 = Math.floor(value / Math.pow(2,32));\n s2 = value - (s1 * Math.pow(2,32));\n this._rawo.setUint32(offset, s1);\n this._rawo.setUint32(offset + 4, s2);\n break;\n }\n this._cursor.offset += (size >> 3);\n } else {\n this.size += (size >> 3);\n }\n};\n\nISOBox.prototype._writeString = function(size, str) {\n for (var c = 0; c < size; c++) {\n this._writeUint(8, str.charCodeAt(c));\n }\n};\n\nISOBox.prototype._writeTerminatedString = function(str) {\n if (str.length === 0) {\n return;\n }\n for (var c = 0; c < str.length; c++) {\n this._writeUint(8, str.charCodeAt(c));\n }\n this._writeUint(8, 0);\n};\n\nISOBox.prototype._writeTemplate = function(size, value) {\n var pre = Math.floor(value);\n var post = (value - pre) * Math.pow(2, size / 2);\n this._writeUint(size / 2, pre);\n this._writeUint(size / 2, post);\n};\n\nISOBox.prototype._writeData = function(data) {\n var i;\n if (data instanceof Array) {\n if (!Uint8Array.from) {\n var typedArray = new Uint8Array(data.length);\n for (i = 0; i < data.length; i++) {\n typedArray[i] = data[i];\n }\n data = new DataView(typedArray.buffer);\n } else {\n data = new DataView(Uint8Array.from(data).buffer);\n }\n }\n if (data instanceof Uint8Array) {\n data = new DataView(data.buffer);\n }\n if (this._rawo) {\n var offset = this._cursor.offset - this._rawo.byteOffset;\n for (i = 0; i < data.byteLength; i++) {\n this._rawo.setUint8(offset + i, data.getUint8(i));\n }\n this._cursor.offset += data.byteLength;\n } else {\n this.size += data.byteLength;\n }\n};\n\nISOBox.prototype._writeUTF8String = function(string) {\n var u = ISOBoxer.Utils.utf8ToByteArray(string);\n if (this._rawo) {\n var dataView = new DataView(this._rawo.buffer, this._cursor.offset, u.length);\n for (var i = 0; i < u.length; i++) {\n dataView.setUint8(i, u[i]);\n }\n } else {\n this.size += u.length;\n }\n};\n\nISOBox.prototype._writeField = function(type, size, value) {\n switch (type) {\n case 'uint':\n this._writeUint(size, value);\n break;\n case 'int':\n this._writeInt(size, value);\n break;\n case 'template':\n this._writeTemplate(size, value);\n break;\n case 'string':\n if (size == -1) {\n this._writeTerminatedString(value);\n } else {\n this._writeString(size, value);\n }\n break;\n case 'data':\n this._writeData(value);\n break;\n case 'utf8':\n this._writeUTF8String(value);\n break;\n default:\n break;\n }\n};\n\n// ISO/IEC 14496-15:2014 - avc1 box\nISOBox.prototype._boxProcessors['avc1'] = ISOBox.prototype._boxProcessors['encv'] = function() {\n // SampleEntry fields\n this._procFieldArray('reserved1', 6, 'uint', 8);\n this._procField('data_reference_index', 'uint', 16);\n // VisualSampleEntry fields\n this._procField('pre_defined1', 'uint', 16);\n this._procField('reserved2', 'uint', 16);\n this._procFieldArray('pre_defined2', 3, 'uint', 32);\n this._procField('width', 'uint', 16);\n this._procField('height', 'uint', 16);\n this._procField('horizresolution', 'template', 32);\n this._procField('vertresolution', 'template', 32);\n this._procField('reserved3', 'uint', 32);\n this._procField('frame_count', 'uint', 16);\n this._procFieldArray('compressorname', 32,'uint', 8);\n this._procField('depth', 'uint', 16);\n this._procField('pre_defined3', 'int', 16);\n // AVCSampleEntry fields\n this._procField('config', 'data', -1);\n};\n\n// ISO/IEC 14496-12:2012 - 8.7.2 Data Reference Box\nISOBox.prototype._boxProcessors['dref'] = function() {\n this._procFullBox();\n this._procField('entry_count', 'uint', 32);\n this._procSubBoxes('entries', this.entry_count);\n};\n\n// ISO/IEC 14496-12:2012 - 8.6.6 Edit List Box\nISOBox.prototype._boxProcessors['elst'] = function() {\n this._procFullBox();\n this._procField('entry_count', 'uint', 32);\n this._procEntries('entries', this.entry_count, function(entry) {\n this._procEntryField(entry, 'segment_duration', 'uint', (this.version === 1) ? 64 : 32);\n this._procEntryField(entry, 'media_time', 'int', (this.version === 1) ? 64 : 32);\n this._procEntryField(entry, 'media_rate_integer', 'int', 16);\n this._procEntryField(entry, 'media_rate_fraction', 'int', 16);\n });\n};\n\n// ISO/IEC 23009-1:2014 - 5.10.3.3 Event Message Box\nISOBox.prototype._boxProcessors['emsg'] = function() {\n this._procFullBox();\n this._procField('scheme_id_uri', 'string', -1);\n this._procField('value', 'string', -1);\n this._procField('timescale', 'uint', 32);\n this._procField('presentation_time_delta', 'uint', 32);\n this._procField('event_duration', 'uint', 32);\n this._procField('id', 'uint', 32);\n this._procField('message_data', 'data', -1);\n};\n\n// ISO/IEC 14496-12:2012 - 8.1.2 Free Space Box\nISOBox.prototype._boxProcessors['free'] = ISOBox.prototype._boxProcessors['skip'] = function() {\n this._procField('data', 'data', -1);\n};\n\n// ISO/IEC 14496-12:2012 - 8.12.2 Original Format Box\nISOBox.prototype._boxProcessors['frma'] = function() {\n this._procField('data_format', 'uint', 32);\n};\n// ISO/IEC 14496-12:2012 - 4.3 File Type Box / 8.16.2 Segment Type Box\nISOBox.prototype._boxProcessors['ftyp'] =\nISOBox.prototype._boxProcessors['styp'] = function() {\n this._procField('major_brand', 'string', 4);\n this._procField('minor_version', 'uint', 32);\n var nbCompatibleBrands = -1;\n if (this._parsing) {\n nbCompatibleBrands = (this._raw.byteLength - (this._cursor.offset - this._raw.byteOffset)) / 4;\n }\n this._procFieldArray('compatible_brands', nbCompatibleBrands, 'string', 4);\n};\n\n// ISO/IEC 14496-12:2012 - 8.4.3 Handler Reference Box\nISOBox.prototype._boxProcessors['hdlr'] = function() {\n this._procFullBox();\n this._procField('pre_defined', 'uint', 32);\n this._procField('handler_type', 'string', 4);\n this._procFieldArray('reserved', 3, 'uint', 32);\n this._procField('name', 'string', -1);\n};\n\n// ISO/IEC 14496-12:2012 - 8.1.1 Media Data Box\nISOBox.prototype._boxProcessors['mdat'] = function() {\n this._procField('data', 'data', -1);\n};\n\n// ISO/IEC 14496-12:2012 - 8.4.2 Media Header Box\nISOBox.prototype._boxProcessors['mdhd'] = function() {\n this._procFullBox();\n this._procField('creation_time', 'uint', (this.version == 1) ? 64 : 32);\n this._procField('modification_time', 'uint', (this.version == 1) ? 64 : 32);\n this._procField('timescale', 'uint', 32);\n this._procField('duration', 'uint', (this.version == 1) ? 64 : 32);\n if (!this._parsing && typeof this.language === 'string') {\n // In case of writing and language has been set as a string, then convert it into char codes array\n this.language = ((this.language.charCodeAt(0) - 0x60) << 10) |\n ((this.language.charCodeAt(1) - 0x60) << 5) |\n ((this.language.charCodeAt(2) - 0x60));\n }\n this._procField('language', 'uint', 16);\n if (this._parsing) {\n this.language = String.fromCharCode(((this.language >> 10) & 0x1F) + 0x60,\n ((this.language >> 5) & 0x1F) + 0x60,\n (this.language & 0x1F) + 0x60);\n }\n this._procField('pre_defined', 'uint', 16);\n};\n\n// ISO/IEC 14496-12:2012 - 8.8.2 Movie Extends Header Box\nISOBox.prototype._boxProcessors['mehd'] = function() {\n this._procFullBox();\n this._procField('fragment_duration', 'uint', (this.version == 1) ? 64 : 32);\n};\n\n// ISO/IEC 14496-12:2012 - 8.8.5 Movie Fragment Header Box\nISOBox.prototype._boxProcessors['mfhd'] = function() {\n this._procFullBox();\n this._procField('sequence_number', 'uint', 32);\n};\n\n// ISO/IEC 14496-12:2012 - 8.8.11 Movie Fragment Random Access Box\nISOBox.prototype._boxProcessors['mfro'] = function() {\n this._procFullBox();\n this._procField('mfra_size', 'uint', 32); // Called mfra_size to distinguish from the normal \"size\" attribute of a box\n};\n\n\n// ISO/IEC 14496-12:2012 - 8.5.2.2 mp4a box (use AudioSampleEntry definition and naming)\nISOBox.prototype._boxProcessors['mp4a'] = ISOBox.prototype._boxProcessors['enca'] = function() {\n // SampleEntry fields\n this._procFieldArray('reserved1', 6, 'uint', 8);\n this._procField('data_reference_index', 'uint', 16);\n // AudioSampleEntry fields\n this._procFieldArray('reserved2', 2, 'uint', 32);\n this._procField('channelcount', 'uint', 16);\n this._procField('samplesize', 'uint', 16);\n this._procField('pre_defined', 'uint', 16);\n this._procField('reserved3', 'uint', 16);\n this._procField('samplerate', 'template', 32);\n // ESDescriptor fields\n this._procField('esds', 'data', -1);\n};\n\n// ISO/IEC 14496-12:2012 - 8.2.2 Movie Header Box\nISOBox.prototype._boxProcessors['mvhd'] = function() {\n this._procFullBox();\n this._procField('creation_time', 'uint', (this.version == 1) ? 64 : 32);\n this._procField('modification_time', 'uint', (this.version == 1) ? 64 : 32);\n this._procField('timescale', 'uint', 32);\n this._procField('duration', 'uint', (this.version == 1) ? 64 : 32);\n this._procField('rate', 'template', 32);\n this._procField('volume', 'template', 16);\n this._procField('reserved1', 'uint', 16);\n this._procFieldArray('reserved2', 2, 'uint', 32);\n this._procFieldArray('matrix', 9, 'template', 32);\n this._procFieldArray('pre_defined', 6,'uint', 32);\n this._procField('next_track_ID', 'uint', 32);\n};\n\n// ISO/IEC 14496-30:2014 - WebVTT Cue Payload Box.\nISOBox.prototype._boxProcessors['payl'] = function() {\n this._procField('cue_text', 'utf8');\n};\n\n//ISO/IEC 23001-7:2011 - 8.1 Protection System Specific Header Box\nISOBox.prototype._boxProcessors['pssh'] = function() {\n this._procFullBox();\n \n this._procFieldArray('SystemID', 16, 'uint', 8);\n this._procField('DataSize', 'uint', 32);\n this._procFieldArray('Data', this.DataSize, 'uint', 8);\n};\n// ISO/IEC 14496-12:2012 - 8.12.5 Scheme Type Box\nISOBox.prototype._boxProcessors['schm'] = function() {\n this._procFullBox();\n \n this._procField('scheme_type', 'uint', 32);\n this._procField('scheme_version', 'uint', 32);\n\n if (this.flags & 0x000001) {\n this._procField('scheme_uri', 'string', -1);\n }\n};\n// ISO/IEC 14496-12:2012 - 8.6.4.1 sdtp box \nISOBox.prototype._boxProcessors['sdtp'] = function() {\n this._procFullBox();\n\n var sample_count = -1;\n if (this._parsing) {\n sample_count = (this._raw.byteLength - (this._cursor.offset - this._raw.byteOffset));\n }\n\n this._procFieldArray('sample_dependency_table', sample_count, 'uint', 8);\n};\n\n// ISO/IEC 14496-12:2012 - 8.16.3 Segment Index Box\nISOBox.prototype._boxProcessors['sidx'] = function() {\n this._procFullBox();\n this._procField('reference_ID', 'uint', 32);\n this._procField('timescale', 'uint', 32);\n this._procField('earliest_presentation_time', 'uint', (this.version == 1) ? 64 : 32);\n this._procField('first_offset', 'uint', (this.version == 1) ? 64 : 32);\n this._procField('reserved', 'uint', 16);\n this._procField('reference_count', 'uint', 16);\n this._procEntries('references', this.reference_count, function(entry) {\n if (!this._parsing) {\n entry.reference = (entry.reference_type & 0x00000001) << 31;\n entry.reference |= (entry.referenced_size & 0x7FFFFFFF);\n entry.sap = (entry.starts_with_SAP & 0x00000001) << 31;\n entry.sap |= (entry.SAP_type & 0x00000003) << 28;\n entry.sap |= (entry.SAP_delta_time & 0x0FFFFFFF);\n }\n this._procEntryField(entry, 'reference', 'uint', 32);\n this._procEntryField(entry, 'subsegment_duration', 'uint', 32);\n this._procEntryField(entry, 'sap', 'uint', 32);\n if (this._parsing) {\n entry.reference_type = (entry.reference >> 31) & 0x00000001;\n entry.referenced_size = entry.reference & 0x7FFFFFFF;\n entry.starts_with_SAP = (entry.sap >> 31) & 0x00000001;\n entry.SAP_type = (entry.sap >> 28) & 0x00000007;\n entry.SAP_delta_time = (entry.sap & 0x0FFFFFFF);\n }\n });\n};\n\n// ISO/IEC 14496-12:2012 - 8.4.5.3 Sound Media Header Box\nISOBox.prototype._boxProcessors['smhd'] = function() {\n this._procFullBox();\n this._procField('balance', 'uint', 16);\n this._procField('reserved', 'uint', 16);\n};\n\n// ISO/IEC 14496-12:2012 - 8.16.4 Subsegment Index Box\nISOBox.prototype._boxProcessors['ssix'] = function() {\n this._procFullBox();\n this._procField('subsegment_count', 'uint', 32);\n this._procEntries('subsegments', this.subsegment_count, function(subsegment) {\n this._procEntryField(subsegment, 'ranges_count', 'uint', 32);\n this._procSubEntries(subsegment, 'ranges', subsegment.ranges_count, function(range) {\n this._procEntryField(range, 'level', 'uint', 8);\n this._procEntryField(range, 'range_size', 'uint', 24);\n });\n });\n};\n\n// ISO/IEC 14496-12:2012 - 8.5.2 Sample Description Box\nISOBox.prototype._boxProcessors['stsd'] = function() {\n this._procFullBox();\n this._procField('entry_count', 'uint', 32);\n this._procSubBoxes('entries', this.entry_count);\n};\n\n// ISO/IEC 14496-12:2015 - 8.7.7 Sub-Sample Information Box\nISOBox.prototype._boxProcessors['subs'] = function () {\n this._procFullBox();\n this._procField('entry_count', 'uint', 32);\n this._procEntries('entries', this.entry_count, function(entry) {\n this._procEntryField(entry, 'sample_delta', 'uint', 32);\n this._procEntryField(entry, 'subsample_count', 'uint', 16);\n this._procSubEntries(entry, 'subsamples', entry.subsample_count, function(subsample) {\n this._procEntryField(subsample, 'subsample_size', 'uint', (this.version === 1) ? 32 : 16);\n this._procEntryField(subsample, 'subsample_priority', 'uint', 8);\n this._procEntryField(subsample, 'discardable', 'uint', 8);\n this._procEntryField(subsample, 'codec_specific_parameters', 'uint', 32);\n });\n });\n};\n\n//ISO/IEC 23001-7:2011 - 8.2 Track Encryption Box\nISOBox.prototype._boxProcessors['tenc'] = function() {\n this._procFullBox();\n\n this._procField('default_IsEncrypted', 'uint', 24);\n this._procField('default_IV_size', 'uint', 8);\n this._procFieldArray('default_KID', 16, 'uint', 8);\n };\n\n// ISO/IEC 14496-12:2012 - 8.8.12 Track Fragmnent Decode Time\nISOBox.prototype._boxProcessors['tfdt'] = function() {\n this._procFullBox();\n this._procField('baseMediaDecodeTime', 'uint', (this.version == 1) ? 64 : 32);\n};\n\n// ISO/IEC 14496-12:2012 - 8.8.7 Track Fragment Header Box\nISOBox.prototype._boxProcessors['tfhd'] = function() {\n this._procFullBox();\n this._procField('track_ID', 'uint', 32);\n if (this.flags & 0x01) this._procField('base_data_offset', 'uint', 64);\n if (this.flags & 0x02) this._procField('sample_description_offset', 'uint', 32);\n if (this.flags & 0x08) this._procField('default_sample_duration', 'uint', 32);\n if (this.flags & 0x10) this._procField('default_sample_size', 'uint', 32);\n if (this.flags & 0x20) this._procField('default_sample_flags', 'uint', 32);\n};\n\n// ISO/IEC 14496-12:2012 - 8.8.10 Track Fragment Random Access Box\nISOBox.prototype._boxProcessors['tfra'] = function() {\n this._procFullBox();\n this._procField('track_ID', 'uint', 32);\n if (!this._parsing) {\n this.reserved = 0;\n this.reserved |= (this.length_size_of_traf_num & 0x00000030) << 4;\n this.reserved |= (this.length_size_of_trun_num & 0x0000000C) << 2;\n this.reserved |= (this.length_size_of_sample_num & 0x00000003);\n }\n this._procField('reserved', 'uint', 32);\n if (this._parsing) {\n this.length_size_of_traf_num = (this.reserved & 0x00000030) >> 4;\n this.length_size_of_trun_num = (this.reserved & 0x0000000C) >> 2;\n this.length_size_of_sample_num = (this.reserved & 0x00000003);\n }\n this._procField('number_of_entry', 'uint', 32);\n this._procEntries('entries', this.number_of_entry, function(entry) {\n this._procEntryField(entry, 'time', 'uint', (this.version === 1) ? 64 : 32);\n this._procEntryField(entry, 'moof_offset', 'uint', (this.version === 1) ? 64 : 32);\n this._procEntryField(entry, 'traf_number', 'uint', (this.length_size_of_traf_num + 1) * 8);\n this._procEntryField(entry, 'trun_number', 'uint', (this.length_size_of_trun_num + 1) * 8);\n this._procEntryField(entry, 'sample_number', 'uint', (this.length_size_of_sample_num + 1) * 8);\n });\n};\n\n// ISO/IEC 14496-12:2012 - 8.3.2 Track Header Box\nISOBox.prototype._boxProcessors['tkhd'] = function() {\n this._procFullBox();\n this._procField('creation_time', 'uint', (this.version == 1) ? 64 : 32);\n this._procField('modification_time', 'uint', (this.version == 1) ? 64 : 32);\n this._procField('track_ID', 'uint', 32);\n this._procField('reserved1', 'uint', 32);\n this._procField('duration', 'uint', (this.version == 1) ? 64 : 32);\n this._procFieldArray('reserved2', 2, 'uint', 32);\n this._procField('layer', 'uint', 16);\n this._procField('alternate_group', 'uint', 16);\n this._procField('volume', 'template', 16);\n this._procField('reserved3', 'uint', 16);\n this._procFieldArray('matrix', 9, 'template', 32);\n this._procField('width', 'template', 32);\n this._procField('height', 'template', 32);\n};\n\n// ISO/IEC 14496-12:2012 - 8.8.3 Track Extends Box\nISOBox.prototype._boxProcessors['trex'] = function() {\n this._procFullBox();\n this._procField('track_ID', 'uint', 32);\n this._procField('default_sample_description_index', 'uint', 32);\n this._procField('default_sample_duration', 'uint', 32);\n this._procField('default_sample_size', 'uint', 32);\n this._procField('default_sample_flags', 'uint', 32);\n};\n\n// ISO/IEC 14496-12:2012 - 8.8.8 Track Run Box\n// Note: the 'trun' box has a direct relation to the 'tfhd' box for defaults.\n// These defaults are not set explicitly here, but are left to resolve for the user.\nISOBox.prototype._boxProcessors['trun'] = function() {\n this._procFullBox();\n this._procField('sample_count', 'uint', 32);\n if (this.flags & 0x1) this._procField('data_offset', 'int', 32);\n if (this.flags & 0x4) this._procField('first_sample_flags', 'uint', 32);\n this._procEntries('samples', this.sample_count, function(sample) {\n if (this.flags & 0x100) this._procEntryField(sample, 'sample_duration', 'uint', 32);\n if (this.flags & 0x200) this._procEntryField(sample, 'sample_size', 'uint', 32);\n if (this.flags & 0x400) this._procEntryField(sample, 'sample_flags', 'uint', 32);\n if (this.flags & 0x800) this._procEntryField(sample, 'sample_composition_time_offset', (this.version === 1) ? 'int' : 'uint', 32);\n });\n};\n\n// ISO/IEC 14496-12:2012 - 8.7.2 Data Reference Box\nISOBox.prototype._boxProcessors['url '] = ISOBox.prototype._boxProcessors['urn '] = function() {\n this._procFullBox();\n if (this.type === 'urn ') {\n this._procField('name', 'string', -1);\n }\n this._procField('location', 'string', -1);\n};\n\n// ISO/IEC 14496-30:2014 - WebVTT Source Label Box\nISOBox.prototype._boxProcessors['vlab'] = function() {\n this._procField('source_label', 'utf8');\n};\n\n// ISO/IEC 14496-12:2012 - 8.4.5.2 Video Media Header Box\nISOBox.prototype._boxProcessors['vmhd'] = function() {\n this._procFullBox();\n this._procField('graphicsmode', 'uint', 16);\n this._procFieldArray('opcolor', 3, 'uint', 16);\n};\n\n// ISO/IEC 14496-30:2014 - WebVTT Configuration Box\nISOBox.prototype._boxProcessors['vttC'] = function() {\n this._procField('config', 'utf8');\n};\n\n// ISO/IEC 14496-30:2014 - WebVTT Empty Sample Box\nISOBox.prototype._boxProcessors['vtte'] = function() {\n // Nothing should happen here.\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","var pSlice = Array.prototype.slice;\nvar objectKeys = require(15);\nvar isArguments = require(14);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n","var supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n","exports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n }\n throw TypeError('Uncaught, unspecified \"error\" event.');\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n len = arguments.length;\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n len = arguments.length;\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n var m;\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n var ret;\n if (!emitter._events || !emitter._events[type])\n ret = 0;\n else if (isFunction(emitter._events[type]))\n ret = 1;\n else\n ret = emitter._events[type].length;\n return ret;\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/* \r\n * Copyright (c) 2016, Pierre-Anthony Lemieux \r\n * All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * * Redistributions of source code must retain the above copyright notice, this\r\n * list of conditions and the following disclaimer.\r\n * * Redistributions in binary form must reproduce the above copyright notice,\r\n * this list of conditions and the following disclaimer in the documentation\r\n * and/or other materials provided with the distribution.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n */\r\n\r\n/**\r\n * @module imscDoc\r\n */\r\n\r\n;\r\n(function (imscDoc, sax, imscNames, imscStyles, imscUtils) {\r\n\r\n\r\n /**\r\n * Allows a client to provide callbacks to handle children of the element\r\n * @typedef {Object} MetadataHandler\r\n * @property {?OpenTagCallBack} onOpenTag\r\n * @property {?CloseTagCallBack} onCloseTag\r\n * @property {?TextCallBack} onText\r\n */\r\n\r\n /**\r\n * Called when the opening tag of an element node is encountered.\r\n * @callback OpenTagCallBack\r\n * @param {string} ns Namespace URI of the element\r\n * @param {string} name Local name of the element\r\n * @param {Object[]} attributes List of attributes, each consisting of a\r\n * `uri`, `name` and `value`\r\n */\r\n\r\n /**\r\n * Called when the closing tag of an element node is encountered.\r\n * @callback CloseTagCallBack\r\n */\r\n\r\n /**\r\n * Called when a text node is encountered.\r\n * @callback TextCallBack\r\n * @param {string} contents Contents of the text node\r\n */\r\n\r\n /**\r\n * Parses an IMSC1 document into an opaque in-memory representation that exposes\r\n * a single method
getMediaTimeEvents()
that returns a list of time\r\n * offsets (in seconds) of the ISD, i.e. the points in time where the visual\r\n * representation of the document change. `metadataHandler` allows the caller to\r\n * be called back when nodes are present in elements. \r\n * \r\n * @param {string} xmlstring XML document\r\n * @param {?module:imscUtils.ErrorHandler} errorHandler Error callback\r\n * @param {?MetadataHandler} metadataHandler Callback for elements\r\n * @returns {Object} Opaque in-memory representation of an IMSC1 document\r\n */\r\n\r\n imscDoc.fromXML = function (xmlstring, errorHandler, metadataHandler) {\r\n var p = sax.parser(true, {xmlns: true});\r\n var estack = [];\r\n var xmllangstack = [];\r\n var xmlspacestack = [];\r\n var metadata_depth = 0;\r\n var doc = null;\r\n\r\n p.onclosetag = function (node) {\r\n\r\n if (estack[0] instanceof Styling) {\r\n\r\n /* flatten chained referential styling */\r\n\r\n for (var sid in estack[0].styles) {\r\n\r\n mergeChainedStyles(estack[0], estack[0].styles[sid], errorHandler);\r\n\r\n }\r\n\r\n } else if (estack[0] instanceof P || estack[0] instanceof Span) {\r\n\r\n /* merge anonymous spans */\r\n\r\n if (estack[0].contents.length > 1) {\r\n\r\n var cs = [estack[0].contents[0]];\r\n\r\n var c;\r\n\r\n for (c = 1; c < estack[0].contents.length; c++) {\r\n\r\n if (estack[0].contents[c] instanceof AnonymousSpan &&\r\n cs[cs.length - 1] instanceof AnonymousSpan) {\r\n\r\n cs[cs.length - 1].text += estack[0].contents[c].text;\r\n\r\n } else {\r\n\r\n cs.push(estack[0].contents[c]);\r\n\r\n }\r\n\r\n }\r\n\r\n estack[0].contents = cs;\r\n\r\n }\r\n\r\n // remove redundant nested anonymous spans (9.3.3(1)(c))\r\n\r\n if (estack[0] instanceof Span &&\r\n estack[0].contents.length === 1 &&\r\n estack[0].contents[0] instanceof AnonymousSpan &&\r\n estack[0].text === null) {\r\n\r\n estack[0].text = estack[0].contents[0].text;\r\n delete estack[0].contents;\r\n\r\n }\r\n\r\n } else if (estack[0] instanceof ForeignElement) {\r\n\r\n if (estack[0].node.uri === imscNames.ns_tt &&\r\n estack[0].node.local === 'metadata') {\r\n\r\n /* leave the metadata element */\r\n\r\n metadata_depth--;\r\n\r\n } else if (metadata_depth > 0 &&\r\n metadataHandler &&\r\n 'onCloseTag' in metadataHandler) {\r\n\r\n /* end of child of metadata element */\r\n\r\n metadataHandler.onCloseTag();\r\n\r\n }\r\n\r\n }\r\n\r\n // TODO: delete stylerefs?\r\n\r\n // maintain the xml:space stack\r\n\r\n xmlspacestack.shift();\r\n\r\n // maintain the xml:lang stack\r\n\r\n xmllangstack.shift();\r\n\r\n // prepare for the next element\r\n\r\n estack.shift();\r\n };\r\n\r\n p.ontext = function (str) {\r\n\r\n if (estack[0] === undefined) {\r\n\r\n /* ignoring text outside of elements */\r\n\r\n } else if (estack[0] instanceof Span || estack[0] instanceof P) {\r\n\r\n /* create an anonymous span */\r\n \r\n var s = new AnonymousSpan();\r\n \r\n s.initFromText(doc, estack[0], str, xmlspacestack[0], errorHandler);\r\n\r\n estack[0].contents.push(s);\r\n\r\n } else if (estack[0] instanceof ForeignElement &&\r\n metadata_depth > 0 &&\r\n metadataHandler &&\r\n 'onText' in metadataHandler) {\r\n\r\n /* text node within a child of metadata element */\r\n\r\n metadataHandler.onText(str);\r\n\r\n }\r\n\r\n };\r\n\r\n\r\n p.onopentag = function (node) {\r\n\r\n // maintain the xml:space stack\r\n\r\n var xmlspace = node.attributes[\"xml:space\"];\r\n\r\n if (xmlspace) {\r\n\r\n xmlspacestack.unshift(xmlspace.value);\r\n\r\n } else {\r\n\r\n if (xmlspacestack.length === 0) {\r\n\r\n xmlspacestack.unshift(\"default\");\r\n\r\n } else {\r\n\r\n xmlspacestack.unshift(xmlspacestack[0]);\r\n\r\n }\r\n\r\n }\r\n\r\n /* maintain the xml:lang stack */\r\n\r\n\r\n var xmllang = node.attributes[\"xml:lang\"];\r\n\r\n if (xmllang) {\r\n\r\n xmllangstack.unshift(xmllang.value);\r\n\r\n } else {\r\n\r\n if (xmllangstack.length === 0) {\r\n\r\n xmllangstack.unshift(\"\");\r\n\r\n } else {\r\n\r\n xmllangstack.unshift(xmllangstack[0]);\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n /* process the element */\r\n\r\n if (node.uri === imscNames.ns_tt) {\r\n\r\n if (node.local === 'tt') {\r\n\r\n if (doc !== null) {\r\n\r\n reportFatal(\"Two elements at (\" + this.line + \",\" + this.column + \")\");\r\n\r\n }\r\n\r\n doc = new TT();\r\n\r\n doc.initFromNode(node, errorHandler);\r\n\r\n estack.unshift(doc);\r\n\r\n } else if (node.local === 'head') {\r\n\r\n if (!(estack[0] instanceof TT)) {\r\n reportFatal(\"Parent of element is not at (\" + this.line + \",\" + this.column + \")\");\r\n }\r\n\r\n if (doc.head !== null) {\r\n reportFatal(\"Second element at (\" + this.line + \",\" + this.column + \")\");\r\n }\r\n\r\n doc.head = new Head();\r\n\r\n estack.unshift(doc.head);\r\n\r\n } else if (node.local === 'styling') {\r\n\r\n if (!(estack[0] instanceof Head)) {\r\n reportFatal(\"Parent of element is not at (\" + this.line + \",\" + this.column + \")\");\r\n }\r\n\r\n if (doc.head.styling !== null) {\r\n reportFatal(\"Second element at (\" + this.line + \",\" + this.column + \")\");\r\n }\r\n\r\n doc.head.styling = new Styling();\r\n\r\n estack.unshift(doc.head.styling);\r\n\r\n } else if (node.local === 'style') {\r\n\r\n var s;\r\n\r\n if (estack[0] instanceof Styling) {\r\n\r\n s = new Style();\r\n\r\n s.initFromNode(node, errorHandler);\r\n\r\n /* ignore