{"version":3,"file":"js/chunk-vendors-f945abb9.0df06231.js","mappings":"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","sources":["webpack://rokk3rfuel/./node_modules/mpd-parser/dist/mpd-parser.es.js","webpack://rokk3rfuel/./node_modules/mux.js/lib/tools/parse-sidx.js","webpack://rokk3rfuel/./node_modules/mux.js/lib/utils/clock.js","webpack://rokk3rfuel/./node_modules/mux.js/lib/utils/numbers.js","webpack://rokk3rfuel/./node_modules/new-date/lib/index.js","webpack://rokk3rfuel/./node_modules/new-date/lib/milliseconds.js","webpack://rokk3rfuel/./node_modules/new-date/lib/seconds.js","webpack://rokk3rfuel/./node_modules/obj-case/index.js","webpack://rokk3rfuel/./node_modules/pdfjs-dist/web/pdf_viewer.js"],"sourcesContent":["/*! @name mpd-parser @version 0.21.1 @license Apache-2.0 */\nimport resolveUrl from '@videojs/vhs-utils/es/resolve-url';\nimport window from 'global/window';\nimport { forEachMediaGroup } from '@videojs/vhs-utils/es/media-groups';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array';\nimport { DOMParser } from '@xmldom/xmldom';\n\nvar version = \"0.21.1\";\n\nvar isObject = function isObject(obj) {\n return !!obj && typeof obj === 'object';\n};\n\nvar merge = function merge() {\n for (var _len = arguments.length, objects = new Array(_len), _key = 0; _key < _len; _key++) {\n objects[_key] = arguments[_key];\n }\n\n return objects.reduce(function (result, source) {\n if (typeof source !== 'object') {\n return result;\n }\n\n Object.keys(source).forEach(function (key) {\n if (Array.isArray(result[key]) && Array.isArray(source[key])) {\n result[key] = result[key].concat(source[key]);\n } else if (isObject(result[key]) && isObject(source[key])) {\n result[key] = merge(result[key], source[key]);\n } else {\n result[key] = source[key];\n }\n });\n return result;\n }, {});\n};\nvar values = function values(o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n};\n\nvar range = function range(start, end) {\n var result = [];\n\n for (var i = start; i < end; i++) {\n result.push(i);\n }\n\n return result;\n};\nvar flatten = function flatten(lists) {\n return lists.reduce(function (x, y) {\n return x.concat(y);\n }, []);\n};\nvar from = function from(list) {\n if (!list.length) {\n return [];\n }\n\n var result = [];\n\n for (var i = 0; i < list.length; i++) {\n result.push(list[i]);\n }\n\n return result;\n};\nvar findIndexes = function findIndexes(l, key) {\n return l.reduce(function (a, e, i) {\n if (e[key]) {\n a.push(i);\n }\n\n return a;\n }, []);\n};\n/**\n * Returns the first index that satisfies the matching function, or -1 if not found.\n *\n * Only necessary because of IE11 support.\n *\n * @param {Array} list - the list to search through\n * @param {Function} matchingFunction - the matching function\n *\n * @return {number} the matching index or -1 if not found\n */\n\nvar findIndex = function findIndex(list, matchingFunction) {\n for (var i = 0; i < list.length; i++) {\n if (matchingFunction(list[i])) {\n return i;\n }\n }\n\n return -1;\n};\n/**\n * Returns a union of the included lists provided each element can be identified by a key.\n *\n * @param {Array} list - list of lists to get the union of\n * @param {Function} keyFunction - the function to use as a key for each element\n *\n * @return {Array} the union of the arrays\n */\n\nvar union = function union(lists, keyFunction) {\n return values(lists.reduce(function (acc, list) {\n list.forEach(function (el) {\n acc[keyFunction(el)] = el;\n });\n return acc;\n }, {}));\n};\n\nvar errors = {\n INVALID_NUMBER_OF_PERIOD: 'INVALID_NUMBER_OF_PERIOD',\n DASH_EMPTY_MANIFEST: 'DASH_EMPTY_MANIFEST',\n DASH_INVALID_XML: 'DASH_INVALID_XML',\n NO_BASE_URL: 'NO_BASE_URL',\n MISSING_SEGMENT_INFORMATION: 'MISSING_SEGMENT_INFORMATION',\n SEGMENT_TIME_UNSPECIFIED: 'SEGMENT_TIME_UNSPECIFIED',\n UNSUPPORTED_UTC_TIMING_SCHEME: 'UNSUPPORTED_UTC_TIMING_SCHEME'\n};\n\n/**\n * @typedef {Object} SingleUri\n * @property {string} uri - relative location of segment\n * @property {string} resolvedUri - resolved location of segment\n * @property {Object} byterange - Object containing information on how to make byte range\n * requests following byte-range-spec per RFC2616.\n * @property {String} byterange.length - length of range request\n * @property {String} byterange.offset - byte offset of range request\n *\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.1\n */\n\n/**\n * Converts a URLType node (5.3.9.2.3 Table 13) to a segment object\n * that conforms to how m3u8-parser is structured\n *\n * @see https://github.com/videojs/m3u8-parser\n *\n * @param {string} baseUrl - baseUrl provided by nodes\n * @param {string} source - source url for segment\n * @param {string} range - optional range used for range calls,\n * follows RFC 2616, Clause 14.35.1\n * @return {SingleUri} full segment information transformed into a format similar\n * to m3u8-parser\n */\n\nvar urlTypeToSegment = function urlTypeToSegment(_ref) {\n var _ref$baseUrl = _ref.baseUrl,\n baseUrl = _ref$baseUrl === void 0 ? '' : _ref$baseUrl,\n _ref$source = _ref.source,\n source = _ref$source === void 0 ? '' : _ref$source,\n _ref$range = _ref.range,\n range = _ref$range === void 0 ? '' : _ref$range,\n _ref$indexRange = _ref.indexRange,\n indexRange = _ref$indexRange === void 0 ? '' : _ref$indexRange;\n var segment = {\n uri: source,\n resolvedUri: resolveUrl(baseUrl || '', source)\n };\n\n if (range || indexRange) {\n var rangeStr = range ? range : indexRange;\n var ranges = rangeStr.split('-'); // default to parsing this as a BigInt if possible\n\n var startRange = window.BigInt ? window.BigInt(ranges[0]) : parseInt(ranges[0], 10);\n var endRange = window.BigInt ? window.BigInt(ranges[1]) : parseInt(ranges[1], 10); // convert back to a number if less than MAX_SAFE_INTEGER\n\n if (startRange < Number.MAX_SAFE_INTEGER && typeof startRange === 'bigint') {\n startRange = Number(startRange);\n }\n\n if (endRange < Number.MAX_SAFE_INTEGER && typeof endRange === 'bigint') {\n endRange = Number(endRange);\n }\n\n var length;\n\n if (typeof endRange === 'bigint' || typeof startRange === 'bigint') {\n length = window.BigInt(endRange) - window.BigInt(startRange) + window.BigInt(1);\n } else {\n length = endRange - startRange + 1;\n }\n\n if (typeof length === 'bigint' && length < Number.MAX_SAFE_INTEGER) {\n length = Number(length);\n } // byterange should be inclusive according to\n // RFC 2616, Clause 14.35.1\n\n\n segment.byterange = {\n length: length,\n offset: startRange\n };\n }\n\n return segment;\n};\nvar byteRangeToString = function byteRangeToString(byterange) {\n // `endRange` is one less than `offset + length` because the HTTP range\n // header uses inclusive ranges\n var endRange;\n\n if (typeof byterange.offset === 'bigint' || typeof byterange.length === 'bigint') {\n endRange = window.BigInt(byterange.offset) + window.BigInt(byterange.length) - window.BigInt(1);\n } else {\n endRange = byterange.offset + byterange.length - 1;\n }\n\n return byterange.offset + \"-\" + endRange;\n};\n\n/**\n * parse the end number attribue that can be a string\n * number, or undefined.\n *\n * @param {string|number|undefined} endNumber\n * The end number attribute.\n *\n * @return {number|null}\n * The result of parsing the end number.\n */\n\nvar parseEndNumber = function parseEndNumber(endNumber) {\n if (endNumber && typeof endNumber !== 'number') {\n endNumber = parseInt(endNumber, 10);\n }\n\n if (isNaN(endNumber)) {\n return null;\n }\n\n return endNumber;\n};\n/**\n * Functions for calculating the range of available segments in static and dynamic\n * manifests.\n */\n\n\nvar segmentRange = {\n /**\n * Returns the entire range of available segments for a static MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n static: function _static(attributes) {\n var duration = attributes.duration,\n _attributes$timescale = attributes.timescale,\n timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale,\n sourceDuration = attributes.sourceDuration,\n periodDuration = attributes.periodDuration;\n var endNumber = parseEndNumber(attributes.endNumber);\n var segmentDuration = duration / timescale;\n\n if (typeof endNumber === 'number') {\n return {\n start: 0,\n end: endNumber\n };\n }\n\n if (typeof periodDuration === 'number') {\n return {\n start: 0,\n end: periodDuration / segmentDuration\n };\n }\n\n return {\n start: 0,\n end: sourceDuration / segmentDuration\n };\n },\n\n /**\n * Returns the current live window range of available segments for a dynamic MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n dynamic: function dynamic(attributes) {\n var NOW = attributes.NOW,\n clientOffset = attributes.clientOffset,\n availabilityStartTime = attributes.availabilityStartTime,\n _attributes$timescale2 = attributes.timescale,\n timescale = _attributes$timescale2 === void 0 ? 1 : _attributes$timescale2,\n duration = attributes.duration,\n _attributes$periodSta = attributes.periodStart,\n periodStart = _attributes$periodSta === void 0 ? 0 : _attributes$periodSta,\n _attributes$minimumUp = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp === void 0 ? 0 : _attributes$minimumUp,\n _attributes$timeShift = attributes.timeShiftBufferDepth,\n timeShiftBufferDepth = _attributes$timeShift === void 0 ? Infinity : _attributes$timeShift;\n var endNumber = parseEndNumber(attributes.endNumber); // clientOffset is passed in at the top level of mpd-parser and is an offset calculated\n // after retrieving UTC server time.\n\n var now = (NOW + clientOffset) / 1000; // WC stands for Wall Clock.\n // Convert the period start time to EPOCH.\n\n var periodStartWC = availabilityStartTime + periodStart; // Period end in EPOCH is manifest's retrieval time + time until next update.\n\n var periodEndWC = now + minimumUpdatePeriod;\n var periodDuration = periodEndWC - periodStartWC;\n var segmentCount = Math.ceil(periodDuration * timescale / duration);\n var availableStart = Math.floor((now - periodStartWC - timeShiftBufferDepth) * timescale / duration);\n var availableEnd = Math.floor((now - periodStartWC) * timescale / duration);\n return {\n start: Math.max(0, availableStart),\n end: typeof endNumber === 'number' ? endNumber : Math.min(segmentCount, availableEnd)\n };\n }\n};\n/**\n * Maps a range of numbers to objects with information needed to build the corresponding\n * segment list\n *\n * @name toSegmentsCallback\n * @function\n * @param {number} number\n * Number of the segment\n * @param {number} index\n * Index of the number in the range list\n * @return {{ number: Number, duration: Number, timeline: Number, time: Number }}\n * Object with segment timing and duration info\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping a range of numbers to\n * information needed to build the segment list.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {toSegmentsCallback}\n * Callback map function\n */\n\nvar toSegments = function toSegments(attributes) {\n return function (number) {\n var duration = attributes.duration,\n _attributes$timescale3 = attributes.timescale,\n timescale = _attributes$timescale3 === void 0 ? 1 : _attributes$timescale3,\n periodStart = attributes.periodStart,\n _attributes$startNumb = attributes.startNumber,\n startNumber = _attributes$startNumb === void 0 ? 1 : _attributes$startNumb;\n return {\n number: startNumber + number,\n duration: duration / timescale,\n timeline: periodStart,\n time: number * duration\n };\n };\n};\n/**\n * Returns a list of objects containing segment timing and duration info used for\n * building the list of segments. This uses the @duration attribute specified\n * in the MPD manifest to derive the range of segments.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\nvar parseByDuration = function parseByDuration(attributes) {\n var type = attributes.type,\n duration = attributes.duration,\n _attributes$timescale4 = attributes.timescale,\n timescale = _attributes$timescale4 === void 0 ? 1 : _attributes$timescale4,\n periodDuration = attributes.periodDuration,\n sourceDuration = attributes.sourceDuration;\n\n var _segmentRange$type = segmentRange[type](attributes),\n start = _segmentRange$type.start,\n end = _segmentRange$type.end;\n\n var segments = range(start, end).map(toSegments(attributes));\n\n if (type === 'static') {\n var index = segments.length - 1; // section is either a period or the full source\n\n var sectionDuration = typeof periodDuration === 'number' ? periodDuration : sourceDuration; // final segment may be less than full segment duration\n\n segments[index].duration = sectionDuration - duration / timescale * index;\n }\n\n return segments;\n};\n\n/**\n * Translates SegmentBase into a set of segments.\n * (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @return {Object.} list of segments\n */\n\nvar segmentsFromBase = function segmentsFromBase(attributes) {\n var baseUrl = attributes.baseUrl,\n _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {} : _attributes$initializ,\n sourceDuration = attributes.sourceDuration,\n _attributes$indexRang = attributes.indexRange,\n indexRange = _attributes$indexRang === void 0 ? '' : _attributes$indexRang,\n periodStart = attributes.periodStart,\n presentationTime = attributes.presentationTime,\n _attributes$number = attributes.number,\n number = _attributes$number === void 0 ? 0 : _attributes$number,\n duration = attributes.duration; // base url is required for SegmentBase to work, per spec (Section 5.3.9.2.1)\n\n if (!baseUrl) {\n throw new Error(errors.NO_BASE_URL);\n }\n\n var initSegment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n var segment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: baseUrl,\n indexRange: indexRange\n });\n segment.map = initSegment; // If there is a duration, use it, otherwise use the given duration of the source\n // (since SegmentBase is only for one total segment)\n\n if (duration) {\n var segmentTimeInfo = parseByDuration(attributes);\n\n if (segmentTimeInfo.length) {\n segment.duration = segmentTimeInfo[0].duration;\n segment.timeline = segmentTimeInfo[0].timeline;\n }\n } else if (sourceDuration) {\n segment.duration = sourceDuration;\n segment.timeline = periodStart;\n } // If presentation time is provided, these segments are being generated by SIDX\n // references, and should use the time provided. For the general case of SegmentBase,\n // there should only be one segment in the period, so its presentation time is the same\n // as its period start.\n\n\n segment.presentationTime = presentationTime || periodStart;\n segment.number = number;\n return [segment];\n};\n/**\n * Given a playlist, a sidx box, and a baseUrl, update the segment list of the playlist\n * according to the sidx information given.\n *\n * playlist.sidx has metadadata about the sidx where-as the sidx param\n * is the parsed sidx box itself.\n *\n * @param {Object} playlist the playlist to update the sidx information for\n * @param {Object} sidx the parsed sidx box\n * @return {Object} the playlist object with the updated sidx information\n */\n\nvar addSidxSegmentsToPlaylist$1 = function addSidxSegmentsToPlaylist(playlist, sidx, baseUrl) {\n // Retain init segment information\n var initSegment = playlist.sidx.map ? playlist.sidx.map : null; // Retain source duration from initial main manifest parsing\n\n var sourceDuration = playlist.sidx.duration; // Retain source timeline\n\n var timeline = playlist.timeline || 0;\n var sidxByteRange = playlist.sidx.byterange;\n var sidxEnd = sidxByteRange.offset + sidxByteRange.length; // Retain timescale of the parsed sidx\n\n var timescale = sidx.timescale; // referenceType 1 refers to other sidx boxes\n\n var mediaReferences = sidx.references.filter(function (r) {\n return r.referenceType !== 1;\n });\n var segments = [];\n var type = playlist.endList ? 'static' : 'dynamic';\n var periodStart = playlist.sidx.timeline;\n var presentationTime = periodStart;\n var number = playlist.mediaSequence || 0; // firstOffset is the offset from the end of the sidx box\n\n var startIndex; // eslint-disable-next-line\n\n if (typeof sidx.firstOffset === 'bigint') {\n startIndex = window.BigInt(sidxEnd) + sidx.firstOffset;\n } else {\n startIndex = sidxEnd + sidx.firstOffset;\n }\n\n for (var i = 0; i < mediaReferences.length; i++) {\n var reference = sidx.references[i]; // size of the referenced (sub)segment\n\n var size = reference.referencedSize; // duration of the referenced (sub)segment, in the timescale\n // this will be converted to seconds when generating segments\n\n var duration = reference.subsegmentDuration; // should be an inclusive range\n\n var endIndex = void 0; // eslint-disable-next-line\n\n if (typeof startIndex === 'bigint') {\n endIndex = startIndex + window.BigInt(size) - window.BigInt(1);\n } else {\n endIndex = startIndex + size - 1;\n }\n\n var indexRange = startIndex + \"-\" + endIndex;\n var attributes = {\n baseUrl: baseUrl,\n timescale: timescale,\n timeline: timeline,\n periodStart: periodStart,\n presentationTime: presentationTime,\n number: number,\n duration: duration,\n sourceDuration: sourceDuration,\n indexRange: indexRange,\n type: type\n };\n var segment = segmentsFromBase(attributes)[0];\n\n if (initSegment) {\n segment.map = initSegment;\n }\n\n segments.push(segment);\n\n if (typeof startIndex === 'bigint') {\n startIndex += window.BigInt(size);\n } else {\n startIndex += size;\n }\n\n presentationTime += duration / timescale;\n number++;\n }\n\n playlist.segments = segments;\n return playlist;\n};\n\nvar SUPPORTED_MEDIA_TYPES = ['AUDIO', 'SUBTITLES']; // allow one 60fps frame as leniency (arbitrarily chosen)\n\nvar TIME_FUDGE = 1 / 60;\n/**\n * Given a list of timelineStarts, combines, dedupes, and sorts them.\n *\n * @param {TimelineStart[]} timelineStarts - list of timeline starts\n *\n * @return {TimelineStart[]} the combined and deduped timeline starts\n */\n\nvar getUniqueTimelineStarts = function getUniqueTimelineStarts(timelineStarts) {\n return union(timelineStarts, function (_ref) {\n var timeline = _ref.timeline;\n return timeline;\n }).sort(function (a, b) {\n return a.timeline > b.timeline ? 1 : -1;\n });\n};\n/**\n * Finds the playlist with the matching NAME attribute.\n *\n * @param {Array} playlists - playlists to search through\n * @param {string} name - the NAME attribute to search for\n *\n * @return {Object|null} the matching playlist object, or null\n */\n\nvar findPlaylistWithName = function findPlaylistWithName(playlists, name) {\n for (var i = 0; i < playlists.length; i++) {\n if (playlists[i].attributes.NAME === name) {\n return playlists[i];\n }\n }\n\n return null;\n};\n/**\n * Gets a flattened array of media group playlists.\n *\n * @param {Object} manifest - the main manifest object\n *\n * @return {Array} the media group playlists\n */\n\nvar getMediaGroupPlaylists = function getMediaGroupPlaylists(manifest) {\n var mediaGroupPlaylists = [];\n forEachMediaGroup(manifest, SUPPORTED_MEDIA_TYPES, function (properties, type, group, label) {\n mediaGroupPlaylists = mediaGroupPlaylists.concat(properties.playlists || []);\n });\n return mediaGroupPlaylists;\n};\n/**\n * Updates the playlist's media sequence numbers.\n *\n * @param {Object} config - options object\n * @param {Object} config.playlist - the playlist to update\n * @param {number} config.mediaSequence - the mediaSequence number to start with\n */\n\nvar updateMediaSequenceForPlaylist = function updateMediaSequenceForPlaylist(_ref2) {\n var playlist = _ref2.playlist,\n mediaSequence = _ref2.mediaSequence;\n playlist.mediaSequence = mediaSequence;\n playlist.segments.forEach(function (segment, index) {\n segment.number = playlist.mediaSequence + index;\n });\n};\n/**\n * Updates the media and discontinuity sequence numbers of newPlaylists given oldPlaylists\n * and a complete list of timeline starts.\n *\n * If no matching playlist is found, only the discontinuity sequence number of the playlist\n * will be updated.\n *\n * Since early available timelines are not supported, at least one segment must be present.\n *\n * @param {Object} config - options object\n * @param {Object[]} oldPlaylists - the old playlists to use as a reference\n * @param {Object[]} newPlaylists - the new playlists to update\n * @param {Object} timelineStarts - all timelineStarts seen in the stream to this point\n */\n\nvar updateSequenceNumbers = function updateSequenceNumbers(_ref3) {\n var oldPlaylists = _ref3.oldPlaylists,\n newPlaylists = _ref3.newPlaylists,\n timelineStarts = _ref3.timelineStarts;\n newPlaylists.forEach(function (playlist) {\n playlist.discontinuitySequence = findIndex(timelineStarts, function (_ref4) {\n var timeline = _ref4.timeline;\n return timeline === playlist.timeline;\n }); // Playlists NAMEs come from DASH Representation IDs, which are mandatory\n // (see ISO_23009-1-2012 5.3.5.2).\n //\n // If the same Representation existed in a prior Period, it will retain the same NAME.\n\n var oldPlaylist = findPlaylistWithName(oldPlaylists, playlist.attributes.NAME);\n\n if (!oldPlaylist) {\n // Since this is a new playlist, the media sequence values can start from 0 without\n // consequence.\n return;\n } // TODO better support for live SIDX\n //\n // As of this writing, mpd-parser does not support multiperiod SIDX (in live or VOD).\n // This is evident by a playlist only having a single SIDX reference. In a multiperiod\n // playlist there would need to be multiple SIDX references. In addition, live SIDX is\n // not supported when the SIDX properties change on refreshes.\n //\n // In the future, if support needs to be added, the merging logic here can be called\n // after SIDX references are resolved. For now, exit early to prevent exceptions being\n // thrown due to undefined references.\n\n\n if (playlist.sidx) {\n return;\n } // Since we don't yet support early available timelines, we don't need to support\n // playlists with no segments.\n\n\n var firstNewSegment = playlist.segments[0];\n var oldMatchingSegmentIndex = findIndex(oldPlaylist.segments, function (oldSegment) {\n return Math.abs(oldSegment.presentationTime - firstNewSegment.presentationTime) < TIME_FUDGE;\n }); // No matching segment from the old playlist means the entire playlist was refreshed.\n // In this case the media sequence should account for this update, and the new segments\n // should be marked as discontinuous from the prior content, since the last prior\n // timeline was removed.\n\n if (oldMatchingSegmentIndex === -1) {\n updateMediaSequenceForPlaylist({\n playlist: playlist,\n mediaSequence: oldPlaylist.mediaSequence + oldPlaylist.segments.length\n });\n playlist.segments[0].discontinuity = true;\n playlist.discontinuityStarts.unshift(0); // No matching segment does not necessarily mean there's missing content.\n //\n // If the new playlist's timeline is the same as the last seen segment's timeline,\n // then a discontinuity can be added to identify that there's potentially missing\n // content. If there's no missing content, the discontinuity should still be rather\n // harmless. It's possible that if segment durations are accurate enough, that the\n // existence of a gap can be determined using the presentation times and durations,\n // but if the segment timing info is off, it may introduce more problems than simply\n // adding the discontinuity.\n //\n // If the new playlist's timeline is different from the last seen segment's timeline,\n // then a discontinuity can be added to identify that this is the first seen segment\n // of a new timeline. However, the logic at the start of this function that\n // determined the disconinuity sequence by timeline index is now off by one (the\n // discontinuity of the newest timeline hasn't yet fallen off the manifest...since\n // we added it), so the disconinuity sequence must be decremented.\n //\n // A period may also have a duration of zero, so the case of no segments is handled\n // here even though we don't yet support early available periods.\n\n if (!oldPlaylist.segments.length && playlist.timeline > oldPlaylist.timeline || oldPlaylist.segments.length && playlist.timeline > oldPlaylist.segments[oldPlaylist.segments.length - 1].timeline) {\n playlist.discontinuitySequence--;\n }\n\n return;\n } // If the first segment matched with a prior segment on a discontinuity (it's matching\n // on the first segment of a period), then the discontinuitySequence shouldn't be the\n // timeline's matching one, but instead should be the one prior, and the first segment\n // of the new manifest should be marked with a discontinuity.\n //\n // The reason for this special case is that discontinuity sequence shows how many\n // discontinuities have fallen off of the playlist, and discontinuities are marked on\n // the first segment of a new \"timeline.\" Because of this, while DASH will retain that\n // Period while the \"timeline\" exists, HLS keeps track of it via the discontinuity\n // sequence, and that first segment is an indicator, but can be removed before that\n // timeline is gone.\n\n\n var oldMatchingSegment = oldPlaylist.segments[oldMatchingSegmentIndex];\n\n if (oldMatchingSegment.discontinuity && !firstNewSegment.discontinuity) {\n firstNewSegment.discontinuity = true;\n playlist.discontinuityStarts.unshift(0);\n playlist.discontinuitySequence--;\n }\n\n updateMediaSequenceForPlaylist({\n playlist: playlist,\n mediaSequence: oldPlaylist.segments[oldMatchingSegmentIndex].number\n });\n });\n};\n/**\n * Given an old parsed manifest object and a new parsed manifest object, updates the\n * sequence and timing values within the new manifest to ensure that it lines up with the\n * old.\n *\n * @param {Array} oldManifest - the old main manifest object\n * @param {Array} newManifest - the new main manifest object\n *\n * @return {Object} the updated new manifest object\n */\n\nvar positionManifestOnTimeline = function positionManifestOnTimeline(_ref5) {\n var oldManifest = _ref5.oldManifest,\n newManifest = _ref5.newManifest;\n // Starting from v4.1.2 of the IOP, section 4.4.3.3 states:\n //\n // \"MPD@availabilityStartTime and Period@start shall not be changed over MPD updates.\"\n //\n // This was added from https://github.com/Dash-Industry-Forum/DASH-IF-IOP/issues/160\n //\n // Because of this change, and the difficulty of supporting periods with changing start\n // times, periods with changing start times are not supported. This makes the logic much\n // simpler, since periods with the same start time can be considerred the same period\n // across refreshes.\n //\n // To give an example as to the difficulty of handling periods where the start time may\n // change, if a single period manifest is refreshed with another manifest with a single\n // period, and both the start and end times are increased, then the only way to determine\n // if it's a new period or an old one that has changed is to look through the segments of\n // each playlist and determine the presentation time bounds to find a match. In addition,\n // if the period start changed to exceed the old period end, then there would be no\n // match, and it would not be possible to determine whether the refreshed period is a new\n // one or the old one.\n var oldPlaylists = oldManifest.playlists.concat(getMediaGroupPlaylists(oldManifest));\n var newPlaylists = newManifest.playlists.concat(getMediaGroupPlaylists(newManifest)); // Save all seen timelineStarts to the new manifest. Although this potentially means that\n // there's a \"memory leak\" in that it will never stop growing, in reality, only a couple\n // of properties are saved for each seen Period. Even long running live streams won't\n // generate too many Periods, unless the stream is watched for decades. In the future,\n // this can be optimized by mapping to discontinuity sequence numbers for each timeline,\n // but it may not become an issue, and the additional info can be useful for debugging.\n\n newManifest.timelineStarts = getUniqueTimelineStarts([oldManifest.timelineStarts, newManifest.timelineStarts]);\n updateSequenceNumbers({\n oldPlaylists: oldPlaylists,\n newPlaylists: newPlaylists,\n timelineStarts: newManifest.timelineStarts\n });\n return newManifest;\n};\n\nvar generateSidxKey = function generateSidxKey(sidx) {\n return sidx && sidx.uri + '-' + byteRangeToString(sidx.byterange);\n};\n\nvar mergeDiscontiguousPlaylists = function mergeDiscontiguousPlaylists(playlists) {\n var mergedPlaylists = values(playlists.reduce(function (acc, playlist) {\n // assuming playlist IDs are the same across periods\n // TODO: handle multiperiod where representation sets are not the same\n // across periods\n var name = playlist.attributes.id + (playlist.attributes.lang || '');\n\n if (!acc[name]) {\n // First Period\n acc[name] = playlist;\n acc[name].attributes.timelineStarts = [];\n } else {\n // Subsequent Periods\n if (playlist.segments) {\n var _acc$name$segments;\n\n // first segment of subsequent periods signal a discontinuity\n if (playlist.segments[0]) {\n playlist.segments[0].discontinuity = true;\n }\n\n (_acc$name$segments = acc[name].segments).push.apply(_acc$name$segments, playlist.segments);\n } // bubble up contentProtection, this assumes all DRM content\n // has the same contentProtection\n\n\n if (playlist.attributes.contentProtection) {\n acc[name].attributes.contentProtection = playlist.attributes.contentProtection;\n }\n }\n\n acc[name].attributes.timelineStarts.push({\n // Although they represent the same number, it's important to have both to make it\n // compatible with HLS potentially having a similar attribute.\n start: playlist.attributes.periodStart,\n timeline: playlist.attributes.periodStart\n });\n return acc;\n }, {}));\n return mergedPlaylists.map(function (playlist) {\n playlist.discontinuityStarts = findIndexes(playlist.segments || [], 'discontinuity');\n return playlist;\n });\n};\n\nvar addSidxSegmentsToPlaylist = function addSidxSegmentsToPlaylist(playlist, sidxMapping) {\n var sidxKey = generateSidxKey(playlist.sidx);\n var sidxMatch = sidxKey && sidxMapping[sidxKey] && sidxMapping[sidxKey].sidx;\n\n if (sidxMatch) {\n addSidxSegmentsToPlaylist$1(playlist, sidxMatch, playlist.sidx.resolvedUri);\n }\n\n return playlist;\n};\nvar addSidxSegmentsToPlaylists = function addSidxSegmentsToPlaylists(playlists, sidxMapping) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n if (!Object.keys(sidxMapping).length) {\n return playlists;\n }\n\n for (var i in playlists) {\n playlists[i] = addSidxSegmentsToPlaylist(playlists[i], sidxMapping);\n }\n\n return playlists;\n};\nvar formatAudioPlaylist = function formatAudioPlaylist(_ref, isAudioOnly) {\n var _attributes;\n\n var attributes = _ref.attributes,\n segments = _ref.segments,\n sidx = _ref.sidx,\n mediaSequence = _ref.mediaSequence,\n discontinuitySequence = _ref.discontinuitySequence,\n discontinuityStarts = _ref.discontinuityStarts;\n var playlist = {\n attributes: (_attributes = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth,\n CODECS: attributes.codecs\n }, _attributes['PROGRAM-ID'] = 1, _attributes),\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: '',\n targetDuration: attributes.duration,\n discontinuitySequence: discontinuitySequence,\n discontinuityStarts: discontinuityStarts,\n timelineStarts: attributes.timelineStarts,\n mediaSequence: mediaSequence,\n segments: segments\n };\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n if (isAudioOnly) {\n playlist.attributes.AUDIO = 'audio';\n playlist.attributes.SUBTITLES = 'subs';\n }\n\n return playlist;\n};\nvar formatVttPlaylist = function formatVttPlaylist(_ref2) {\n var _m3u8Attributes;\n\n var attributes = _ref2.attributes,\n segments = _ref2.segments,\n mediaSequence = _ref2.mediaSequence,\n discontinuityStarts = _ref2.discontinuityStarts,\n discontinuitySequence = _ref2.discontinuitySequence;\n\n if (typeof segments === 'undefined') {\n // vtt tracks may use single file in BaseURL\n segments = [{\n uri: attributes.baseUrl,\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n duration: attributes.sourceDuration,\n number: 0\n }]; // targetDuration should be the same duration as the only segment\n\n attributes.duration = attributes.sourceDuration;\n }\n\n var m3u8Attributes = (_m3u8Attributes = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth\n }, _m3u8Attributes['PROGRAM-ID'] = 1, _m3u8Attributes);\n\n if (attributes.codecs) {\n m3u8Attributes.CODECS = attributes.codecs;\n }\n\n return {\n attributes: m3u8Attributes,\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n targetDuration: attributes.duration,\n timelineStarts: attributes.timelineStarts,\n discontinuityStarts: discontinuityStarts,\n discontinuitySequence: discontinuitySequence,\n mediaSequence: mediaSequence,\n segments: segments\n };\n};\nvar organizeAudioPlaylists = function organizeAudioPlaylists(playlists, sidxMapping, isAudioOnly) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n if (isAudioOnly === void 0) {\n isAudioOnly = false;\n }\n\n var mainPlaylist;\n var formattedPlaylists = playlists.reduce(function (a, playlist) {\n var role = playlist.attributes.role && playlist.attributes.role.value || '';\n var language = playlist.attributes.lang || '';\n var label = playlist.attributes.label || 'main';\n\n if (language && !playlist.attributes.label) {\n var roleLabel = role ? \" (\" + role + \")\" : '';\n label = \"\" + playlist.attributes.lang + roleLabel;\n }\n\n if (!a[label]) {\n a[label] = {\n language: language,\n autoselect: true,\n default: role === 'main',\n playlists: [],\n uri: ''\n };\n }\n\n var formatted = addSidxSegmentsToPlaylist(formatAudioPlaylist(playlist, isAudioOnly), sidxMapping);\n a[label].playlists.push(formatted);\n\n if (typeof mainPlaylist === 'undefined' && role === 'main') {\n mainPlaylist = playlist;\n mainPlaylist.default = true;\n }\n\n return a;\n }, {}); // if no playlists have role \"main\", mark the first as main\n\n if (!mainPlaylist) {\n var firstLabel = Object.keys(formattedPlaylists)[0];\n formattedPlaylists[firstLabel].default = true;\n }\n\n return formattedPlaylists;\n};\nvar organizeVttPlaylists = function organizeVttPlaylists(playlists, sidxMapping) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n return playlists.reduce(function (a, playlist) {\n var label = playlist.attributes.lang || 'text';\n\n if (!a[label]) {\n a[label] = {\n language: label,\n default: false,\n autoselect: false,\n playlists: [],\n uri: ''\n };\n }\n\n a[label].playlists.push(addSidxSegmentsToPlaylist(formatVttPlaylist(playlist), sidxMapping));\n return a;\n }, {});\n};\n\nvar organizeCaptionServices = function organizeCaptionServices(captionServices) {\n return captionServices.reduce(function (svcObj, svc) {\n if (!svc) {\n return svcObj;\n }\n\n svc.forEach(function (service) {\n var channel = service.channel,\n language = service.language;\n svcObj[language] = {\n autoselect: false,\n default: false,\n instreamId: channel,\n language: language\n };\n\n if (service.hasOwnProperty('aspectRatio')) {\n svcObj[language].aspectRatio = service.aspectRatio;\n }\n\n if (service.hasOwnProperty('easyReader')) {\n svcObj[language].easyReader = service.easyReader;\n }\n\n if (service.hasOwnProperty('3D')) {\n svcObj[language]['3D'] = service['3D'];\n }\n });\n return svcObj;\n }, {});\n};\n\nvar formatVideoPlaylist = function formatVideoPlaylist(_ref3) {\n var _attributes2;\n\n var attributes = _ref3.attributes,\n segments = _ref3.segments,\n sidx = _ref3.sidx,\n discontinuityStarts = _ref3.discontinuityStarts;\n var playlist = {\n attributes: (_attributes2 = {\n NAME: attributes.id,\n AUDIO: 'audio',\n SUBTITLES: 'subs',\n RESOLUTION: {\n width: attributes.width,\n height: attributes.height\n },\n CODECS: attributes.codecs,\n BANDWIDTH: attributes.bandwidth\n }, _attributes2['PROGRAM-ID'] = 1, _attributes2),\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: '',\n targetDuration: attributes.duration,\n discontinuityStarts: discontinuityStarts,\n timelineStarts: attributes.timelineStarts,\n segments: segments\n };\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n return playlist;\n};\n\nvar videoOnly = function videoOnly(_ref4) {\n var attributes = _ref4.attributes;\n return attributes.mimeType === 'video/mp4' || attributes.mimeType === 'video/webm' || attributes.contentType === 'video';\n};\n\nvar audioOnly = function audioOnly(_ref5) {\n var attributes = _ref5.attributes;\n return attributes.mimeType === 'audio/mp4' || attributes.mimeType === 'audio/webm' || attributes.contentType === 'audio';\n};\n\nvar vttOnly = function vttOnly(_ref6) {\n var attributes = _ref6.attributes;\n return attributes.mimeType === 'text/vtt' || attributes.contentType === 'text';\n};\n/**\n * Contains start and timeline properties denoting a timeline start. For DASH, these will\n * be the same number.\n *\n * @typedef {Object} TimelineStart\n * @property {number} start - the start time of the timeline\n * @property {number} timeline - the timeline number\n */\n\n/**\n * Adds appropriate media and discontinuity sequence values to the segments and playlists.\n *\n * Throughout mpd-parser, the `number` attribute is used in relation to `startNumber`, a\n * DASH specific attribute used in constructing segment URI's from templates. However, from\n * an HLS perspective, the `number` attribute on a segment would be its `mediaSequence`\n * value, which should start at the original media sequence value (or 0) and increment by 1\n * for each segment thereafter. Since DASH's `startNumber` values are independent per\n * period, it doesn't make sense to use it for `number`. Instead, assume everything starts\n * from a 0 mediaSequence value and increment from there.\n *\n * Note that VHS currently doesn't use the `number` property, but it can be helpful for\n * debugging and making sense of the manifest.\n *\n * For live playlists, to account for values increasing in manifests when periods are\n * removed on refreshes, merging logic should be used to update the numbers to their\n * appropriate values (to ensure they're sequential and increasing).\n *\n * @param {Object[]} playlists - the playlists to update\n * @param {TimelineStart[]} timelineStarts - the timeline starts for the manifest\n */\n\n\nvar addMediaSequenceValues = function addMediaSequenceValues(playlists, timelineStarts) {\n // increment all segments sequentially\n playlists.forEach(function (playlist) {\n playlist.mediaSequence = 0;\n playlist.discontinuitySequence = findIndex(timelineStarts, function (_ref7) {\n var timeline = _ref7.timeline;\n return timeline === playlist.timeline;\n });\n\n if (!playlist.segments) {\n return;\n }\n\n playlist.segments.forEach(function (segment, index) {\n segment.number = index;\n });\n });\n};\n/**\n * Given a media group object, flattens all playlists within the media group into a single\n * array.\n *\n * @param {Object} mediaGroupObject - the media group object\n *\n * @return {Object[]}\n * The media group playlists\n */\n\nvar flattenMediaGroupPlaylists = function flattenMediaGroupPlaylists(mediaGroupObject) {\n if (!mediaGroupObject) {\n return [];\n }\n\n return Object.keys(mediaGroupObject).reduce(function (acc, label) {\n var labelContents = mediaGroupObject[label];\n return acc.concat(labelContents.playlists);\n }, []);\n};\nvar toM3u8 = function toM3u8(_ref8) {\n var _mediaGroups;\n\n var dashPlaylists = _ref8.dashPlaylists,\n locations = _ref8.locations,\n _ref8$sidxMapping = _ref8.sidxMapping,\n sidxMapping = _ref8$sidxMapping === void 0 ? {} : _ref8$sidxMapping,\n previousManifest = _ref8.previousManifest;\n\n if (!dashPlaylists.length) {\n return {};\n } // grab all main manifest attributes\n\n\n var _dashPlaylists$0$attr = dashPlaylists[0].attributes,\n duration = _dashPlaylists$0$attr.sourceDuration,\n type = _dashPlaylists$0$attr.type,\n suggestedPresentationDelay = _dashPlaylists$0$attr.suggestedPresentationDelay,\n minimumUpdatePeriod = _dashPlaylists$0$attr.minimumUpdatePeriod;\n var videoPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(videoOnly)).map(formatVideoPlaylist);\n var audioPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(audioOnly));\n var vttPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(vttOnly));\n var captions = dashPlaylists.map(function (playlist) {\n return playlist.attributes.captionServices;\n }).filter(Boolean);\n var manifest = {\n allowCache: true,\n discontinuityStarts: [],\n segments: [],\n endList: true,\n mediaGroups: (_mediaGroups = {\n AUDIO: {},\n VIDEO: {}\n }, _mediaGroups['CLOSED-CAPTIONS'] = {}, _mediaGroups.SUBTITLES = {}, _mediaGroups),\n uri: '',\n duration: duration,\n playlists: addSidxSegmentsToPlaylists(videoPlaylists, sidxMapping)\n };\n\n if (minimumUpdatePeriod >= 0) {\n manifest.minimumUpdatePeriod = minimumUpdatePeriod * 1000;\n }\n\n if (locations) {\n manifest.locations = locations;\n }\n\n if (type === 'dynamic') {\n manifest.suggestedPresentationDelay = suggestedPresentationDelay;\n }\n\n var isAudioOnly = manifest.playlists.length === 0;\n var organizedAudioGroup = audioPlaylists.length ? organizeAudioPlaylists(audioPlaylists, sidxMapping, isAudioOnly) : null;\n var organizedVttGroup = vttPlaylists.length ? organizeVttPlaylists(vttPlaylists, sidxMapping) : null;\n var formattedPlaylists = videoPlaylists.concat(flattenMediaGroupPlaylists(organizedAudioGroup), flattenMediaGroupPlaylists(organizedVttGroup));\n var playlistTimelineStarts = formattedPlaylists.map(function (_ref9) {\n var timelineStarts = _ref9.timelineStarts;\n return timelineStarts;\n });\n manifest.timelineStarts = getUniqueTimelineStarts(playlistTimelineStarts);\n addMediaSequenceValues(formattedPlaylists, manifest.timelineStarts);\n\n if (organizedAudioGroup) {\n manifest.mediaGroups.AUDIO.audio = organizedAudioGroup;\n }\n\n if (organizedVttGroup) {\n manifest.mediaGroups.SUBTITLES.subs = organizedVttGroup;\n }\n\n if (captions.length) {\n manifest.mediaGroups['CLOSED-CAPTIONS'].cc = organizeCaptionServices(captions);\n }\n\n if (previousManifest) {\n return positionManifestOnTimeline({\n oldManifest: previousManifest,\n newManifest: manifest\n });\n }\n\n return manifest;\n};\n\n/**\n * Calculates the R (repetition) value for a live stream (for the final segment\n * in a manifest where the r value is negative 1)\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {number} time\n * current time (typically the total time up until the final segment)\n * @param {number} duration\n * duration property for the given \n *\n * @return {number}\n * R value to reach the end of the given period\n */\nvar getLiveRValue = function getLiveRValue(attributes, time, duration) {\n var NOW = attributes.NOW,\n clientOffset = attributes.clientOffset,\n availabilityStartTime = attributes.availabilityStartTime,\n _attributes$timescale = attributes.timescale,\n timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale,\n _attributes$periodSta = attributes.periodStart,\n periodStart = _attributes$periodSta === void 0 ? 0 : _attributes$periodSta,\n _attributes$minimumUp = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp === void 0 ? 0 : _attributes$minimumUp;\n var now = (NOW + clientOffset) / 1000;\n var periodStartWC = availabilityStartTime + periodStart;\n var periodEndWC = now + minimumUpdatePeriod;\n var periodDuration = periodEndWC - periodStartWC;\n return Math.ceil((periodDuration * timescale - time) / duration);\n};\n/**\n * Uses information provided by SegmentTemplate.SegmentTimeline to determine segment\n * timing and duration\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n *\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\n\nvar parseByTimeline = function parseByTimeline(attributes, segmentTimeline) {\n var type = attributes.type,\n _attributes$minimumUp2 = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp2 === void 0 ? 0 : _attributes$minimumUp2,\n _attributes$media = attributes.media,\n media = _attributes$media === void 0 ? '' : _attributes$media,\n sourceDuration = attributes.sourceDuration,\n _attributes$timescale2 = attributes.timescale,\n timescale = _attributes$timescale2 === void 0 ? 1 : _attributes$timescale2,\n _attributes$startNumb = attributes.startNumber,\n startNumber = _attributes$startNumb === void 0 ? 1 : _attributes$startNumb,\n timeline = attributes.periodStart;\n var segments = [];\n var time = -1;\n\n for (var sIndex = 0; sIndex < segmentTimeline.length; sIndex++) {\n var S = segmentTimeline[sIndex];\n var duration = S.d;\n var repeat = S.r || 0;\n var segmentTime = S.t || 0;\n\n if (time < 0) {\n // first segment\n time = segmentTime;\n }\n\n if (segmentTime && segmentTime > time) {\n // discontinuity\n // TODO: How to handle this type of discontinuity\n // timeline++ here would treat it like HLS discontuity and content would\n // get appended without gap\n // E.G.\n // \n // \n // \n // \n // would have $Time$ values of [0, 1, 2, 5]\n // should this be appened at time positions [0, 1, 2, 3],(#EXT-X-DISCONTINUITY)\n // or [0, 1, 2, gap, gap, 5]? (#EXT-X-GAP)\n // does the value of sourceDuration consider this when calculating arbitrary\n // negative @r repeat value?\n // E.G. Same elements as above with this added at the end\n // \n // with a sourceDuration of 10\n // Would the 2 gaps be included in the time duration calculations resulting in\n // 8 segments with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9] or 10 segments\n // with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9, 10, 11] ?\n time = segmentTime;\n }\n\n var count = void 0;\n\n if (repeat < 0) {\n var nextS = sIndex + 1;\n\n if (nextS === segmentTimeline.length) {\n // last segment\n if (type === 'dynamic' && minimumUpdatePeriod > 0 && media.indexOf('$Number$') > 0) {\n count = getLiveRValue(attributes, time, duration);\n } else {\n // TODO: This may be incorrect depending on conclusion of TODO above\n count = (sourceDuration * timescale - time) / duration;\n }\n } else {\n count = (segmentTimeline[nextS].t - time) / duration;\n }\n } else {\n count = repeat + 1;\n }\n\n var end = startNumber + segments.length + count;\n var number = startNumber + segments.length;\n\n while (number < end) {\n segments.push({\n number: number,\n duration: duration / timescale,\n time: time,\n timeline: timeline\n });\n time += duration;\n number++;\n }\n }\n\n return segments;\n};\n\nvar identifierPattern = /\\$([A-z]*)(?:(%0)([0-9]+)d)?\\$/g;\n/**\n * Replaces template identifiers with corresponding values. To be used as the callback\n * for String.prototype.replace\n *\n * @name replaceCallback\n * @function\n * @param {string} match\n * Entire match of identifier\n * @param {string} identifier\n * Name of matched identifier\n * @param {string} format\n * Format tag string. Its presence indicates that padding is expected\n * @param {string} width\n * Desired length of the replaced value. Values less than this width shall be left\n * zero padded\n * @return {string}\n * Replacement for the matched identifier\n */\n\n/**\n * Returns a function to be used as a callback for String.prototype.replace to replace\n * template identifiers\n *\n * @param {Obect} values\n * Object containing values that shall be used to replace known identifiers\n * @param {number} values.RepresentationID\n * Value of the Representation@id attribute\n * @param {number} values.Number\n * Number of the corresponding segment\n * @param {number} values.Bandwidth\n * Value of the Representation@bandwidth attribute.\n * @param {number} values.Time\n * Timestamp value of the corresponding segment\n * @return {replaceCallback}\n * Callback to be used with String.prototype.replace to replace identifiers\n */\n\nvar identifierReplacement = function identifierReplacement(values) {\n return function (match, identifier, format, width) {\n if (match === '$$') {\n // escape sequence\n return '$';\n }\n\n if (typeof values[identifier] === 'undefined') {\n return match;\n }\n\n var value = '' + values[identifier];\n\n if (identifier === 'RepresentationID') {\n // Format tag shall not be present with RepresentationID\n return value;\n }\n\n if (!format) {\n width = 1;\n } else {\n width = parseInt(width, 10);\n }\n\n if (value.length >= width) {\n return value;\n }\n\n return \"\" + new Array(width - value.length + 1).join('0') + value;\n };\n};\n/**\n * Constructs a segment url from a template string\n *\n * @param {string} url\n * Template string to construct url from\n * @param {Obect} values\n * Object containing values that shall be used to replace known identifiers\n * @param {number} values.RepresentationID\n * Value of the Representation@id attribute\n * @param {number} values.Number\n * Number of the corresponding segment\n * @param {number} values.Bandwidth\n * Value of the Representation@bandwidth attribute.\n * @param {number} values.Time\n * Timestamp value of the corresponding segment\n * @return {string}\n * Segment url with identifiers replaced\n */\n\nvar constructTemplateUrl = function constructTemplateUrl(url, values) {\n return url.replace(identifierPattern, identifierReplacement(values));\n};\n/**\n * Generates a list of objects containing timing and duration information about each\n * segment needed to generate segment uris and the complete segment object\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\nvar parseTemplateInfo = function parseTemplateInfo(attributes, segmentTimeline) {\n if (!attributes.duration && !segmentTimeline) {\n // if neither @duration or SegmentTimeline are present, then there shall be exactly\n // one media segment\n return [{\n number: attributes.startNumber || 1,\n duration: attributes.sourceDuration,\n time: 0,\n timeline: attributes.periodStart\n }];\n }\n\n if (attributes.duration) {\n return parseByDuration(attributes);\n }\n\n return parseByTimeline(attributes, segmentTimeline);\n};\n/**\n * Generates a list of segments using information provided by the SegmentTemplate element\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object[]}\n * List of segment objects\n */\n\nvar segmentsFromTemplate = function segmentsFromTemplate(attributes, segmentTimeline) {\n var templateValues = {\n RepresentationID: attributes.id,\n Bandwidth: attributes.bandwidth || 0\n };\n var _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {\n sourceURL: '',\n range: ''\n } : _attributes$initializ;\n var mapSegment = urlTypeToSegment({\n baseUrl: attributes.baseUrl,\n source: constructTemplateUrl(initialization.sourceURL, templateValues),\n range: initialization.range\n });\n var segments = parseTemplateInfo(attributes, segmentTimeline);\n return segments.map(function (segment) {\n templateValues.Number = segment.number;\n templateValues.Time = segment.time;\n var uri = constructTemplateUrl(attributes.media || '', templateValues); // See DASH spec section 5.3.9.2.2\n // - if timescale isn't present on any level, default to 1.\n\n var timescale = attributes.timescale || 1; // - if presentationTimeOffset isn't present on any level, default to 0\n\n var presentationTimeOffset = attributes.presentationTimeOffset || 0;\n var presentationTime = // Even if the @t attribute is not specified for the segment, segment.time is\n // calculated in mpd-parser prior to this, so it's assumed to be available.\n attributes.periodStart + (segment.time - presentationTimeOffset) / timescale;\n var map = {\n uri: uri,\n timeline: segment.timeline,\n duration: segment.duration,\n resolvedUri: resolveUrl(attributes.baseUrl || '', uri),\n map: mapSegment,\n number: segment.number,\n presentationTime: presentationTime\n };\n return map;\n });\n};\n\n/**\n * Converts a (of type URLType from the DASH spec 5.3.9.2 Table 14)\n * to an object that matches the output of a segment in videojs/mpd-parser\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object} segmentUrl\n * node to translate into a segment object\n * @return {Object} translated segment object\n */\n\nvar SegmentURLToSegmentObject = function SegmentURLToSegmentObject(attributes, segmentUrl) {\n var baseUrl = attributes.baseUrl,\n _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {} : _attributes$initializ;\n var initSegment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n var segment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: segmentUrl.media,\n range: segmentUrl.mediaRange\n });\n segment.map = initSegment;\n return segment;\n};\n/**\n * Generates a list of segments using information provided by the SegmentList element\n * SegmentList (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object.} list of segments\n */\n\n\nvar segmentsFromList = function segmentsFromList(attributes, segmentTimeline) {\n var duration = attributes.duration,\n _attributes$segmentUr = attributes.segmentUrls,\n segmentUrls = _attributes$segmentUr === void 0 ? [] : _attributes$segmentUr,\n periodStart = attributes.periodStart; // Per spec (5.3.9.2.1) no way to determine segment duration OR\n // if both SegmentTimeline and @duration are defined, it is outside of spec.\n\n if (!duration && !segmentTimeline || duration && segmentTimeline) {\n throw new Error(errors.SEGMENT_TIME_UNSPECIFIED);\n }\n\n var segmentUrlMap = segmentUrls.map(function (segmentUrlObject) {\n return SegmentURLToSegmentObject(attributes, segmentUrlObject);\n });\n var segmentTimeInfo;\n\n if (duration) {\n segmentTimeInfo = parseByDuration(attributes);\n }\n\n if (segmentTimeline) {\n segmentTimeInfo = parseByTimeline(attributes, segmentTimeline);\n }\n\n var segments = segmentTimeInfo.map(function (segmentTime, index) {\n if (segmentUrlMap[index]) {\n var segment = segmentUrlMap[index]; // See DASH spec section 5.3.9.2.2\n // - if timescale isn't present on any level, default to 1.\n\n var timescale = attributes.timescale || 1; // - if presentationTimeOffset isn't present on any level, default to 0\n\n var presentationTimeOffset = attributes.presentationTimeOffset || 0;\n segment.timeline = segmentTime.timeline;\n segment.duration = segmentTime.duration;\n segment.number = segmentTime.number;\n segment.presentationTime = periodStart + (segmentTime.time - presentationTimeOffset) / timescale;\n return segment;\n } // Since we're mapping we should get rid of any blank segments (in case\n // the given SegmentTimeline is handling for more elements than we have\n // SegmentURLs for).\n\n }).filter(function (segment) {\n return segment;\n });\n return segments;\n};\n\nvar generateSegments = function generateSegments(_ref) {\n var attributes = _ref.attributes,\n segmentInfo = _ref.segmentInfo;\n var segmentAttributes;\n var segmentsFn;\n\n if (segmentInfo.template) {\n segmentsFn = segmentsFromTemplate;\n segmentAttributes = merge(attributes, segmentInfo.template);\n } else if (segmentInfo.base) {\n segmentsFn = segmentsFromBase;\n segmentAttributes = merge(attributes, segmentInfo.base);\n } else if (segmentInfo.list) {\n segmentsFn = segmentsFromList;\n segmentAttributes = merge(attributes, segmentInfo.list);\n }\n\n var segmentsInfo = {\n attributes: attributes\n };\n\n if (!segmentsFn) {\n return segmentsInfo;\n }\n\n var segments = segmentsFn(segmentAttributes, segmentInfo.segmentTimeline); // The @duration attribute will be used to determin the playlist's targetDuration which\n // must be in seconds. Since we've generated the segment list, we no longer need\n // @duration to be in @timescale units, so we can convert it here.\n\n if (segmentAttributes.duration) {\n var _segmentAttributes = segmentAttributes,\n duration = _segmentAttributes.duration,\n _segmentAttributes$ti = _segmentAttributes.timescale,\n timescale = _segmentAttributes$ti === void 0 ? 1 : _segmentAttributes$ti;\n segmentAttributes.duration = duration / timescale;\n } else if (segments.length) {\n // if there is no @duration attribute, use the largest segment duration as\n // as target duration\n segmentAttributes.duration = segments.reduce(function (max, segment) {\n return Math.max(max, Math.ceil(segment.duration));\n }, 0);\n } else {\n segmentAttributes.duration = 0;\n }\n\n segmentsInfo.attributes = segmentAttributes;\n segmentsInfo.segments = segments; // This is a sidx box without actual segment information\n\n if (segmentInfo.base && segmentAttributes.indexRange) {\n segmentsInfo.sidx = segments[0];\n segmentsInfo.segments = [];\n }\n\n return segmentsInfo;\n};\nvar toPlaylists = function toPlaylists(representations) {\n return representations.map(generateSegments);\n};\n\nvar findChildren = function findChildren(element, name) {\n return from(element.childNodes).filter(function (_ref) {\n var tagName = _ref.tagName;\n return tagName === name;\n });\n};\nvar getContent = function getContent(element) {\n return element.textContent.trim();\n};\n\nvar parseDuration = function parseDuration(str) {\n var SECONDS_IN_YEAR = 365 * 24 * 60 * 60;\n var SECONDS_IN_MONTH = 30 * 24 * 60 * 60;\n var SECONDS_IN_DAY = 24 * 60 * 60;\n var SECONDS_IN_HOUR = 60 * 60;\n var SECONDS_IN_MIN = 60; // P10Y10M10DT10H10M10.1S\n\n var durationRegex = /P(?:(\\d*)Y)?(?:(\\d*)M)?(?:(\\d*)D)?(?:T(?:(\\d*)H)?(?:(\\d*)M)?(?:([\\d.]*)S)?)?/;\n var match = durationRegex.exec(str);\n\n if (!match) {\n return 0;\n }\n\n var _match$slice = match.slice(1),\n year = _match$slice[0],\n month = _match$slice[1],\n day = _match$slice[2],\n hour = _match$slice[3],\n minute = _match$slice[4],\n second = _match$slice[5];\n\n return parseFloat(year || 0) * SECONDS_IN_YEAR + parseFloat(month || 0) * SECONDS_IN_MONTH + parseFloat(day || 0) * SECONDS_IN_DAY + parseFloat(hour || 0) * SECONDS_IN_HOUR + parseFloat(minute || 0) * SECONDS_IN_MIN + parseFloat(second || 0);\n};\nvar parseDate = function parseDate(str) {\n // Date format without timezone according to ISO 8601\n // YYY-MM-DDThh:mm:ss.ssssss\n var dateRegex = /^\\d+-\\d+-\\d+T\\d+:\\d+:\\d+(\\.\\d+)?$/; // If the date string does not specifiy a timezone, we must specifiy UTC. This is\n // expressed by ending with 'Z'\n\n if (dateRegex.test(str)) {\n str += 'Z';\n }\n\n return Date.parse(str);\n};\n\nvar parsers = {\n /**\n * Specifies the duration of the entire Media Presentation. Format is a duration string\n * as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n mediaPresentationDuration: function mediaPresentationDuration(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the Segment availability start time for all Segments referred to in this\n * MPD. For a dynamic manifest, it specifies the anchor for the earliest availability\n * time. Format is a date string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The date as seconds from unix epoch\n */\n availabilityStartTime: function availabilityStartTime(value) {\n return parseDate(value) / 1000;\n },\n\n /**\n * Specifies the smallest period between potential changes to the MPD. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n minimumUpdatePeriod: function minimumUpdatePeriod(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the suggested presentation delay. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n suggestedPresentationDelay: function suggestedPresentationDelay(value) {\n return parseDuration(value);\n },\n\n /**\n * specifices the type of mpd. Can be either \"static\" or \"dynamic\"\n *\n * @param {string} value\n * value of attribute as a string\n *\n * @return {string}\n * The type as a string\n */\n type: function type(value) {\n return value;\n },\n\n /**\n * Specifies the duration of the smallest time shifting buffer for any Representation\n * in the MPD. Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n timeShiftBufferDepth: function timeShiftBufferDepth(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the PeriodStart time of the Period relative to the availabilityStarttime.\n * Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n start: function start(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the width of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed width\n */\n width: function width(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the height of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed height\n */\n height: function height(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the bitrate of the representation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed bandwidth\n */\n bandwidth: function bandwidth(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the number of the first Media Segment in this Representation in the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n startNumber: function startNumber(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the timescale in units per seconds\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed timescale\n */\n timescale: function timescale(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the presentationTimeOffset.\n *\n * @param {string} value\n * value of the attribute as a string\n *\n * @return {number}\n * The parsed presentationTimeOffset\n */\n presentationTimeOffset: function presentationTimeOffset(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the constant approximate Segment duration\n * NOTE: The element also contains an @duration attribute. This duration\n * specifies the duration of the Period. This attribute is currently not\n * supported by the rest of the parser, however we still check for it to prevent\n * errors.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n duration: function duration(value) {\n var parsedValue = parseInt(value, 10);\n\n if (isNaN(parsedValue)) {\n return parseDuration(value);\n }\n\n return parsedValue;\n },\n\n /**\n * Specifies the Segment duration, in units of the value of the @timescale.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n d: function d(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the MPD start time, in @timescale units, the first Segment in the series\n * starts relative to the beginning of the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed time\n */\n t: function t(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the repeat count of the number of following contiguous Segments with the\n * same duration expressed by the value of @d\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n r: function r(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Default parser for all other attributes. Acts as a no-op and just returns the value\n * as a string\n *\n * @param {string} value\n * value of attribute as a string\n * @return {string}\n * Unparsed value\n */\n DEFAULT: function DEFAULT(value) {\n return value;\n }\n};\n/**\n * Gets all the attributes and values of the provided node, parses attributes with known\n * types, and returns an object with attribute names mapped to values.\n *\n * @param {Node} el\n * The node to parse attributes from\n * @return {Object}\n * Object with all attributes of el parsed\n */\n\nvar parseAttributes = function parseAttributes(el) {\n if (!(el && el.attributes)) {\n return {};\n }\n\n return from(el.attributes).reduce(function (a, e) {\n var parseFn = parsers[e.name] || parsers.DEFAULT;\n a[e.name] = parseFn(e.value);\n return a;\n }, {});\n};\n\nvar keySystemsMap = {\n 'urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b': 'org.w3.clearkey',\n 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed': 'com.widevine.alpha',\n 'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95': 'com.microsoft.playready',\n 'urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb': 'com.adobe.primetime'\n};\n/**\n * Builds a list of urls that is the product of the reference urls and BaseURL values\n *\n * @param {string[]} referenceUrls\n * List of reference urls to resolve to\n * @param {Node[]} baseUrlElements\n * List of BaseURL nodes from the mpd\n * @return {string[]}\n * List of resolved urls\n */\n\nvar buildBaseUrls = function buildBaseUrls(referenceUrls, baseUrlElements) {\n if (!baseUrlElements.length) {\n return referenceUrls;\n }\n\n return flatten(referenceUrls.map(function (reference) {\n return baseUrlElements.map(function (baseUrlElement) {\n return resolveUrl(reference, getContent(baseUrlElement));\n });\n }));\n};\n/**\n * Contains all Segment information for its containing AdaptationSet\n *\n * @typedef {Object} SegmentInformation\n * @property {Object|undefined} template\n * Contains the attributes for the SegmentTemplate node\n * @property {Object[]|undefined} segmentTimeline\n * Contains a list of atrributes for each S node within the SegmentTimeline node\n * @property {Object|undefined} list\n * Contains the attributes for the SegmentList node\n * @property {Object|undefined} base\n * Contains the attributes for the SegmentBase node\n */\n\n/**\n * Returns all available Segment information contained within the AdaptationSet node\n *\n * @param {Node} adaptationSet\n * The AdaptationSet node to get Segment information from\n * @return {SegmentInformation}\n * The Segment information contained within the provided AdaptationSet\n */\n\nvar getSegmentInformation = function getSegmentInformation(adaptationSet) {\n var segmentTemplate = findChildren(adaptationSet, 'SegmentTemplate')[0];\n var segmentList = findChildren(adaptationSet, 'SegmentList')[0];\n var segmentUrls = segmentList && findChildren(segmentList, 'SegmentURL').map(function (s) {\n return merge({\n tag: 'SegmentURL'\n }, parseAttributes(s));\n });\n var segmentBase = findChildren(adaptationSet, 'SegmentBase')[0];\n var segmentTimelineParentNode = segmentList || segmentTemplate;\n var segmentTimeline = segmentTimelineParentNode && findChildren(segmentTimelineParentNode, 'SegmentTimeline')[0];\n var segmentInitializationParentNode = segmentList || segmentBase || segmentTemplate;\n var segmentInitialization = segmentInitializationParentNode && findChildren(segmentInitializationParentNode, 'Initialization')[0]; // SegmentTemplate is handled slightly differently, since it can have both\n // @initialization and an node. @initialization can be templated,\n // while the node can have a url and range specified. If the has\n // both @initialization and an subelement we opt to override with\n // the node, as this interaction is not defined in the spec.\n\n var template = segmentTemplate && parseAttributes(segmentTemplate);\n\n if (template && segmentInitialization) {\n template.initialization = segmentInitialization && parseAttributes(segmentInitialization);\n } else if (template && template.initialization) {\n // If it is @initialization we convert it to an object since this is the format that\n // later functions will rely on for the initialization segment. This is only valid\n // for \n template.initialization = {\n sourceURL: template.initialization\n };\n }\n\n var segmentInfo = {\n template: template,\n segmentTimeline: segmentTimeline && findChildren(segmentTimeline, 'S').map(function (s) {\n return parseAttributes(s);\n }),\n list: segmentList && merge(parseAttributes(segmentList), {\n segmentUrls: segmentUrls,\n initialization: parseAttributes(segmentInitialization)\n }),\n base: segmentBase && merge(parseAttributes(segmentBase), {\n initialization: parseAttributes(segmentInitialization)\n })\n };\n Object.keys(segmentInfo).forEach(function (key) {\n if (!segmentInfo[key]) {\n delete segmentInfo[key];\n }\n });\n return segmentInfo;\n};\n/**\n * Contains Segment information and attributes needed to construct a Playlist object\n * from a Representation\n *\n * @typedef {Object} RepresentationInformation\n * @property {SegmentInformation} segmentInfo\n * Segment information for this Representation\n * @property {Object} attributes\n * Inherited attributes for this Representation\n */\n\n/**\n * Maps a Representation node to an object containing Segment information and attributes\n *\n * @name inheritBaseUrlsCallback\n * @function\n * @param {Node} representation\n * Representation node from the mpd\n * @return {RepresentationInformation}\n * Representation information needed to construct a Playlist object\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping Representation nodes to\n * Segment information and attributes using inherited BaseURL nodes.\n *\n * @param {Object} adaptationSetAttributes\n * Contains attributes inherited by the AdaptationSet\n * @param {string[]} adaptationSetBaseUrls\n * Contains list of resolved base urls inherited by the AdaptationSet\n * @param {SegmentInformation} adaptationSetSegmentInfo\n * Contains Segment information for the AdaptationSet\n * @return {inheritBaseUrlsCallback}\n * Callback map function\n */\n\nvar inheritBaseUrls = function inheritBaseUrls(adaptationSetAttributes, adaptationSetBaseUrls, adaptationSetSegmentInfo) {\n return function (representation) {\n var repBaseUrlElements = findChildren(representation, 'BaseURL');\n var repBaseUrls = buildBaseUrls(adaptationSetBaseUrls, repBaseUrlElements);\n var attributes = merge(adaptationSetAttributes, parseAttributes(representation));\n var representationSegmentInfo = getSegmentInformation(representation);\n return repBaseUrls.map(function (baseUrl) {\n return {\n segmentInfo: merge(adaptationSetSegmentInfo, representationSegmentInfo),\n attributes: merge(attributes, {\n baseUrl: baseUrl\n })\n };\n });\n };\n};\n/**\n * Tranforms a series of content protection nodes to\n * an object containing pssh data by key system\n *\n * @param {Node[]} contentProtectionNodes\n * Content protection nodes\n * @return {Object}\n * Object containing pssh data by key system\n */\n\nvar generateKeySystemInformation = function generateKeySystemInformation(contentProtectionNodes) {\n return contentProtectionNodes.reduce(function (acc, node) {\n var attributes = parseAttributes(node); // Although it could be argued that according to the UUID RFC spec the UUID string (a-f chars) should be generated\n // as a lowercase string it also mentions it should be treated as case-insensitive on input. Since the key system\n // UUIDs in the keySystemsMap are hardcoded as lowercase in the codebase there isn't any reason not to do\n // .toLowerCase() on the input UUID string from the manifest (at least I could not think of one).\n\n if (attributes.schemeIdUri) {\n attributes.schemeIdUri = attributes.schemeIdUri.toLowerCase();\n }\n\n var keySystem = keySystemsMap[attributes.schemeIdUri];\n\n if (keySystem) {\n acc[keySystem] = {\n attributes: attributes\n };\n var psshNode = findChildren(node, 'cenc:pssh')[0];\n\n if (psshNode) {\n var pssh = getContent(psshNode);\n acc[keySystem].pssh = pssh && decodeB64ToUint8Array(pssh);\n }\n }\n\n return acc;\n }, {});\n}; // defined in ANSI_SCTE 214-1 2016\n\n\nvar parseCaptionServiceMetadata = function parseCaptionServiceMetadata(service) {\n // 608 captions\n if (service.schemeIdUri === 'urn:scte:dash:cc:cea-608:2015') {\n var values = typeof service.value !== 'string' ? [] : service.value.split(';');\n return values.map(function (value) {\n var channel;\n var language; // default language to value\n\n language = value;\n\n if (/^CC\\d=/.test(value)) {\n var _value$split = value.split('=');\n\n channel = _value$split[0];\n language = _value$split[1];\n } else if (/^CC\\d$/.test(value)) {\n channel = value;\n }\n\n return {\n channel: channel,\n language: language\n };\n });\n } else if (service.schemeIdUri === 'urn:scte:dash:cc:cea-708:2015') {\n var _values = typeof service.value !== 'string' ? [] : service.value.split(';');\n\n return _values.map(function (value) {\n var flags = {\n // service or channel number 1-63\n 'channel': undefined,\n // language is a 3ALPHA per ISO 639.2/B\n // field is required\n 'language': undefined,\n // BIT 1/0 or ?\n // default value is 1, meaning 16:9 aspect ratio, 0 is 4:3, ? is unknown\n 'aspectRatio': 1,\n // BIT 1/0\n // easy reader flag indicated the text is tailed to the needs of beginning readers\n // default 0, or off\n 'easyReader': 0,\n // BIT 1/0\n // If 3d metadata is present (CEA-708.1) then 1\n // default 0\n '3D': 0\n };\n\n if (/=/.test(value)) {\n var _value$split2 = value.split('='),\n channel = _value$split2[0],\n _value$split2$ = _value$split2[1],\n opts = _value$split2$ === void 0 ? '' : _value$split2$;\n\n flags.channel = channel;\n flags.language = value;\n opts.split(',').forEach(function (opt) {\n var _opt$split = opt.split(':'),\n name = _opt$split[0],\n val = _opt$split[1];\n\n if (name === 'lang') {\n flags.language = val; // er for easyReadery\n } else if (name === 'er') {\n flags.easyReader = Number(val); // war for wide aspect ratio\n } else if (name === 'war') {\n flags.aspectRatio = Number(val);\n } else if (name === '3D') {\n flags['3D'] = Number(val);\n }\n });\n } else {\n flags.language = value;\n }\n\n if (flags.channel) {\n flags.channel = 'SERVICE' + flags.channel;\n }\n\n return flags;\n });\n }\n};\n/**\n * Maps an AdaptationSet node to a list of Representation information objects\n *\n * @name toRepresentationsCallback\n * @function\n * @param {Node} adaptationSet\n * AdaptationSet node from the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping AdaptationSet nodes to a list of\n * Representation information objects\n *\n * @param {Object} periodAttributes\n * Contains attributes inherited by the Period\n * @param {string[]} periodBaseUrls\n * Contains list of resolved base urls inherited by the Period\n * @param {string[]} periodSegmentInfo\n * Contains Segment Information at the period level\n * @return {toRepresentationsCallback}\n * Callback map function\n */\n\nvar toRepresentations = function toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo) {\n return function (adaptationSet) {\n var adaptationSetAttributes = parseAttributes(adaptationSet);\n var adaptationSetBaseUrls = buildBaseUrls(periodBaseUrls, findChildren(adaptationSet, 'BaseURL'));\n var role = findChildren(adaptationSet, 'Role')[0];\n var roleAttributes = {\n role: parseAttributes(role)\n };\n var attrs = merge(periodAttributes, adaptationSetAttributes, roleAttributes);\n var accessibility = findChildren(adaptationSet, 'Accessibility')[0];\n var captionServices = parseCaptionServiceMetadata(parseAttributes(accessibility));\n\n if (captionServices) {\n attrs = merge(attrs, {\n captionServices: captionServices\n });\n }\n\n var label = findChildren(adaptationSet, 'Label')[0];\n\n if (label && label.childNodes.length) {\n var labelVal = label.childNodes[0].nodeValue.trim();\n attrs = merge(attrs, {\n label: labelVal\n });\n }\n\n var contentProtection = generateKeySystemInformation(findChildren(adaptationSet, 'ContentProtection'));\n\n if (Object.keys(contentProtection).length) {\n attrs = merge(attrs, {\n contentProtection: contentProtection\n });\n }\n\n var segmentInfo = getSegmentInformation(adaptationSet);\n var representations = findChildren(adaptationSet, 'Representation');\n var adaptationSetSegmentInfo = merge(periodSegmentInfo, segmentInfo);\n return flatten(representations.map(inheritBaseUrls(attrs, adaptationSetBaseUrls, adaptationSetSegmentInfo)));\n };\n};\n/**\n * Contains all period information for mapping nodes onto adaptation sets.\n *\n * @typedef {Object} PeriodInformation\n * @property {Node} period.node\n * Period node from the mpd\n * @property {Object} period.attributes\n * Parsed period attributes from node plus any added\n */\n\n/**\n * Maps a PeriodInformation object to a list of Representation information objects for all\n * AdaptationSet nodes contained within the Period.\n *\n * @name toAdaptationSetsCallback\n * @function\n * @param {PeriodInformation} period\n * Period object containing necessary period information\n * @param {number} periodStart\n * Start time of the Period within the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping Period nodes to a list of\n * Representation information objects\n *\n * @param {Object} mpdAttributes\n * Contains attributes inherited by the mpd\n * @param {string[]} mpdBaseUrls\n * Contains list of resolved base urls inherited by the mpd\n * @return {toAdaptationSetsCallback}\n * Callback map function\n */\n\nvar toAdaptationSets = function toAdaptationSets(mpdAttributes, mpdBaseUrls) {\n return function (period, index) {\n var periodBaseUrls = buildBaseUrls(mpdBaseUrls, findChildren(period.node, 'BaseURL'));\n var periodAttributes = merge(mpdAttributes, {\n periodStart: period.attributes.start\n });\n\n if (typeof period.attributes.duration === 'number') {\n periodAttributes.periodDuration = period.attributes.duration;\n }\n\n var adaptationSets = findChildren(period.node, 'AdaptationSet');\n var periodSegmentInfo = getSegmentInformation(period.node);\n return flatten(adaptationSets.map(toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo)));\n };\n};\n/**\n * Gets Period@start property for a given period.\n *\n * @param {Object} options\n * Options object\n * @param {Object} options.attributes\n * Period attributes\n * @param {Object} [options.priorPeriodAttributes]\n * Prior period attributes (if prior period is available)\n * @param {string} options.mpdType\n * The MPD@type these periods came from\n * @return {number|null}\n * The period start, or null if it's an early available period or error\n */\n\nvar getPeriodStart = function getPeriodStart(_ref) {\n var attributes = _ref.attributes,\n priorPeriodAttributes = _ref.priorPeriodAttributes,\n mpdType = _ref.mpdType;\n\n // Summary of period start time calculation from DASH spec section 5.3.2.1\n //\n // A period's start is the first period's start + time elapsed after playing all\n // prior periods to this one. Periods continue one after the other in time (without\n // gaps) until the end of the presentation.\n //\n // The value of Period@start should be:\n // 1. if Period@start is present: value of Period@start\n // 2. if previous period exists and it has @duration: previous Period@start +\n // previous Period@duration\n // 3. if this is first period and MPD@type is 'static': 0\n // 4. in all other cases, consider the period an \"early available period\" (note: not\n // currently supported)\n // (1)\n if (typeof attributes.start === 'number') {\n return attributes.start;\n } // (2)\n\n\n if (priorPeriodAttributes && typeof priorPeriodAttributes.start === 'number' && typeof priorPeriodAttributes.duration === 'number') {\n return priorPeriodAttributes.start + priorPeriodAttributes.duration;\n } // (3)\n\n\n if (!priorPeriodAttributes && mpdType === 'static') {\n return 0;\n } // (4)\n // There is currently no logic for calculating the Period@start value if there is\n // no Period@start or prior Period@start and Period@duration available. This is not made\n // explicit by the DASH interop guidelines or the DASH spec, however, since there's\n // nothing about any other resolution strategies, it's implied. Thus, this case should\n // be considered an early available period, or error, and null should suffice for both\n // of those cases.\n\n\n return null;\n};\n/**\n * Traverses the mpd xml tree to generate a list of Representation information objects\n * that have inherited attributes from parent nodes\n *\n * @param {Node} mpd\n * The root node of the mpd\n * @param {Object} options\n * Available options for inheritAttributes\n * @param {string} options.manifestUri\n * The uri source of the mpd\n * @param {number} options.NOW\n * Current time per DASH IOP. Default is current time in ms since epoch\n * @param {number} options.clientOffset\n * Client time difference from NOW (in milliseconds)\n * @return {RepresentationInformation[]}\n * List of objects containing Representation information\n */\n\nvar inheritAttributes = function inheritAttributes(mpd, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$manifestUri = _options.manifestUri,\n manifestUri = _options$manifestUri === void 0 ? '' : _options$manifestUri,\n _options$NOW = _options.NOW,\n NOW = _options$NOW === void 0 ? Date.now() : _options$NOW,\n _options$clientOffset = _options.clientOffset,\n clientOffset = _options$clientOffset === void 0 ? 0 : _options$clientOffset;\n var periodNodes = findChildren(mpd, 'Period');\n\n if (!periodNodes.length) {\n throw new Error(errors.INVALID_NUMBER_OF_PERIOD);\n }\n\n var locations = findChildren(mpd, 'Location');\n var mpdAttributes = parseAttributes(mpd);\n var mpdBaseUrls = buildBaseUrls([manifestUri], findChildren(mpd, 'BaseURL')); // See DASH spec section 5.3.1.2, Semantics of MPD element. Default type to 'static'.\n\n mpdAttributes.type = mpdAttributes.type || 'static';\n mpdAttributes.sourceDuration = mpdAttributes.mediaPresentationDuration || 0;\n mpdAttributes.NOW = NOW;\n mpdAttributes.clientOffset = clientOffset;\n\n if (locations.length) {\n mpdAttributes.locations = locations.map(getContent);\n }\n\n var periods = []; // Since toAdaptationSets acts on individual periods right now, the simplest approach to\n // adding properties that require looking at prior periods is to parse attributes and add\n // missing ones before toAdaptationSets is called. If more such properties are added, it\n // may be better to refactor toAdaptationSets.\n\n periodNodes.forEach(function (node, index) {\n var attributes = parseAttributes(node); // Use the last modified prior period, as it may contain added information necessary\n // for this period.\n\n var priorPeriod = periods[index - 1];\n attributes.start = getPeriodStart({\n attributes: attributes,\n priorPeriodAttributes: priorPeriod ? priorPeriod.attributes : null,\n mpdType: mpdAttributes.type\n });\n periods.push({\n node: node,\n attributes: attributes\n });\n });\n return {\n locations: mpdAttributes.locations,\n representationInfo: flatten(periods.map(toAdaptationSets(mpdAttributes, mpdBaseUrls)))\n };\n};\n\nvar stringToMpdXml = function stringToMpdXml(manifestString) {\n if (manifestString === '') {\n throw new Error(errors.DASH_EMPTY_MANIFEST);\n }\n\n var parser = new DOMParser();\n var xml;\n var mpd;\n\n try {\n xml = parser.parseFromString(manifestString, 'application/xml');\n mpd = xml && xml.documentElement.tagName === 'MPD' ? xml.documentElement : null;\n } catch (e) {// ie 11 throwsw on invalid xml\n }\n\n if (!mpd || mpd && mpd.getElementsByTagName('parsererror').length > 0) {\n throw new Error(errors.DASH_INVALID_XML);\n }\n\n return mpd;\n};\n\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} mpd\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\nvar parseUTCTimingScheme = function parseUTCTimingScheme(mpd) {\n var UTCTimingNode = findChildren(mpd, 'UTCTiming')[0];\n\n if (!UTCTimingNode) {\n return null;\n }\n\n var attributes = parseAttributes(UTCTimingNode);\n\n switch (attributes.schemeIdUri) {\n case 'urn:mpeg:dash:utc:http-head:2014':\n case 'urn:mpeg:dash:utc:http-head:2012':\n attributes.method = 'HEAD';\n break;\n\n case 'urn:mpeg:dash:utc:http-xsdate:2014':\n case 'urn:mpeg:dash:utc:http-iso:2014':\n case 'urn:mpeg:dash:utc:http-xsdate:2012':\n case 'urn:mpeg:dash:utc:http-iso:2012':\n attributes.method = 'GET';\n break;\n\n case 'urn:mpeg:dash:utc:direct:2014':\n case 'urn:mpeg:dash:utc:direct:2012':\n attributes.method = 'DIRECT';\n attributes.value = Date.parse(attributes.value);\n break;\n\n case 'urn:mpeg:dash:utc:http-ntp:2014':\n case 'urn:mpeg:dash:utc:ntp:2014':\n case 'urn:mpeg:dash:utc:sntp:2014':\n default:\n throw new Error(errors.UNSUPPORTED_UTC_TIMING_SCHEME);\n }\n\n return attributes;\n};\n\nvar VERSION = version;\n/*\n * Given a DASH manifest string and options, parses the DASH manifest into an object in the\n * form outputed by m3u8-parser and accepted by videojs/http-streaming.\n *\n * For live DASH manifests, if `previousManifest` is provided in options, then the newly\n * parsed DASH manifest will have its media sequence and discontinuity sequence values\n * updated to reflect its position relative to the prior manifest.\n *\n * @param {string} manifestString - the DASH manifest as a string\n * @param {options} [options] - any options\n *\n * @return {Object} the manifest object\n */\n\nvar parse = function parse(manifestString, options) {\n if (options === void 0) {\n options = {};\n }\n\n var parsedManifestInfo = inheritAttributes(stringToMpdXml(manifestString), options);\n var playlists = toPlaylists(parsedManifestInfo.representationInfo);\n return toM3u8({\n dashPlaylists: playlists,\n locations: parsedManifestInfo.locations,\n sidxMapping: options.sidxMapping,\n previousManifest: options.previousManifest\n });\n};\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} manifestString\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\n\nvar parseUTCTiming = function parseUTCTiming(manifestString) {\n return parseUTCTimingScheme(stringToMpdXml(manifestString));\n};\n\nexport { VERSION, addSidxSegmentsToPlaylist$1 as addSidxSegmentsToPlaylist, generateSidxKey, inheritAttributes, parse, parseUTCTiming, stringToMpdXml, toM3u8, toPlaylists };\n","var getUint64 = require('../utils/numbers.js').getUint64;\n\nvar parseSidx = function(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n references: [],\n referenceId: view.getUint32(4),\n timescale: view.getUint32(8)\n },\n i = 12;\n\n if (result.version === 0) {\n result.earliestPresentationTime = view.getUint32(i);\n result.firstOffset = view.getUint32(i + 4);\n i += 8;\n } else {\n // read 64 bits\n result.earliestPresentationTime = getUint64(data.subarray(i));\n result.firstOffset = getUint64(data.subarray(i + 8));\n i += 16;\n }\n\n i += 2; // reserved\n\n var referenceCount = view.getUint16(i);\n\n i += 2; // start of references\n\n for (; referenceCount > 0; i += 12, referenceCount--) {\n result.references.push({\n referenceType: (data[i] & 0x80) >>> 7,\n referencedSize: view.getUint32(i) & 0x7FFFFFFF,\n subsegmentDuration: view.getUint32(i + 4),\n startsWithSap: !!(data[i + 8] & 0x80),\n sapType: (data[i + 8] & 0x70) >>> 4,\n sapDeltaTime: view.getUint32(i + 8) & 0x0FFFFFFF\n });\n }\n\n return result;\n};\n\n\nmodule.exports = parseSidx;\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\nvar\n ONE_SECOND_IN_TS = 90000, // 90kHz clock\n secondsToVideoTs,\n secondsToAudioTs,\n videoTsToSeconds,\n audioTsToSeconds,\n audioTsToVideoTs,\n videoTsToAudioTs,\n metadataTsToSeconds;\n\nsecondsToVideoTs = function(seconds) {\n return seconds * ONE_SECOND_IN_TS;\n};\n\nsecondsToAudioTs = function(seconds, sampleRate) {\n return seconds * sampleRate;\n};\n\nvideoTsToSeconds = function(timestamp) {\n return timestamp / ONE_SECOND_IN_TS;\n};\n\naudioTsToSeconds = function(timestamp, sampleRate) {\n return timestamp / sampleRate;\n};\n\naudioTsToVideoTs = function(timestamp, sampleRate) {\n return secondsToVideoTs(audioTsToSeconds(timestamp, sampleRate));\n};\n\nvideoTsToAudioTs = function(timestamp, sampleRate) {\n return secondsToAudioTs(videoTsToSeconds(timestamp), sampleRate);\n};\n\n/**\n * Adjust ID3 tag or caption timing information by the timeline pts values\n * (if keepOriginalTimestamps is false) and convert to seconds\n */\nmetadataTsToSeconds = function(timestamp, timelineStartPts, keepOriginalTimestamps) {\n return videoTsToSeconds(keepOriginalTimestamps ? timestamp : timestamp - timelineStartPts);\n};\n\nmodule.exports = {\n ONE_SECOND_IN_TS: ONE_SECOND_IN_TS,\n secondsToVideoTs: secondsToVideoTs,\n secondsToAudioTs: secondsToAudioTs,\n videoTsToSeconds: videoTsToSeconds,\n audioTsToSeconds: audioTsToSeconds,\n audioTsToVideoTs: audioTsToVideoTs,\n videoTsToAudioTs: videoTsToAudioTs,\n metadataTsToSeconds: metadataTsToSeconds\n};\n","var MAX_UINT32 = Math.pow(2, 32);\n\nvar getUint64 = function(uint8) {\n var dv = new DataView(uint8.buffer, uint8.byteOffset, uint8.byteLength);\n var value;\n\n if (dv.getBigUint64) {\n value = dv.getBigUint64(0);\n\n if (value < Number.MAX_SAFE_INTEGER) {\n return Number(value);\n }\n\n return value;\n }\n\n return (dv.getUint32(0) * MAX_UINT32) + dv.getUint32(4);\n};\n\nmodule.exports = {\n getUint64: getUint64,\n MAX_UINT32: MAX_UINT32\n};\n","\"use strict\";\n\nvar isodate = require(\"@segment/isodate\");\nvar milliseconds = require(\"./milliseconds\");\nvar seconds = require(\"./seconds\");\n\nvar objProto = Object.prototype;\nvar toStr = objProto.toString;\n\nfunction isDate(value) {\n return toStr.call(value) === \"[object Date]\";\n}\n\nfunction isNumber(value) {\n return toStr.call(value) === \"[object Number]\";\n}\n\n/**\n * Returns a new Javascript Date object, allowing a variety of extra input types\n * over the native Date constructor.\n *\n * @param {Date|string|number} val\n */\nmodule.exports = function newDate(val) {\n if (isDate(val)) return val;\n if (isNumber(val)) return new Date(toMs(val));\n\n // date strings\n if (isodate.is(val)) {\n return isodate.parse(val);\n }\n if (milliseconds.is(val)) {\n return milliseconds.parse(val);\n }\n if (seconds.is(val)) {\n return seconds.parse(val);\n }\n\n // fallback to Date.parse\n return new Date(val);\n};\n\n/**\n * If the number passed val is seconds from the epoch, turn it into milliseconds.\n * Milliseconds would be greater than 31557600000 (December 31, 1970).\n *\n * @param {number} num\n */\nfunction toMs(num) {\n if (num < 31557600000) return num * 1000;\n return num;\n}\n","\"use strict\";\n\n/**\n * Matcher.\n */\n\nvar matcher = /\\d{13}/;\n\n/**\n * Check whether a string is a millisecond date string.\n *\n * @param {string} string\n * @return {boolean}\n */\nexports.is = function (string) {\n return matcher.test(string);\n};\n\n/**\n * Convert a millisecond string to a date.\n *\n * @param {string} millis\n * @return {Date}\n */\nexports.parse = function (millis) {\n millis = parseInt(millis, 10);\n return new Date(millis);\n};\n","\"use strict\";\n\n/**\n * Matcher.\n */\n\nvar matcher = /\\d{10}/;\n\n/**\n * Check whether a string is a second date string.\n *\n * @param {string} string\n * @return {Boolean}\n */\nexports.is = function (string) {\n return matcher.test(string);\n};\n\n/**\n * Convert a second string to a date.\n *\n * @param {string} seconds\n * @return {Date}\n */\nexports.parse = function (seconds) {\n var millis = parseInt(seconds, 10) * 1000;\n return new Date(millis);\n};\n","\nvar identity = function(_){ return _; };\n\n\n/**\n * Module exports, export\n */\n\nmodule.exports = multiple(find);\nmodule.exports.find = module.exports;\n\n\n/**\n * Export the replacement function, return the modified object\n */\n\nmodule.exports.replace = function (obj, key, val, options) {\n multiple(replace).call(this, obj, key, val, options);\n return obj;\n};\n\n\n/**\n * Export the delete function, return the modified object\n */\n\nmodule.exports.del = function (obj, key, options) {\n multiple(del).call(this, obj, key, null, options);\n return obj;\n};\n\n\n/**\n * Compose applying the function to a nested key\n */\n\nfunction multiple (fn) {\n return function (obj, path, val, options) {\n var normalize = options && isFunction(options.normalizer) ? options.normalizer : defaultNormalize;\n path = normalize(path);\n\n var key;\n var finished = false;\n\n while (!finished) loop();\n\n function loop() {\n for (key in obj) {\n var normalizedKey = normalize(key);\n if (0 === path.indexOf(normalizedKey)) {\n var temp = path.substr(normalizedKey.length);\n if (temp.charAt(0) === '.' || temp.length === 0) {\n path = temp.substr(1);\n var child = obj[key];\n\n // we're at the end and there is nothing.\n if (null == child) {\n finished = true;\n return;\n }\n\n // we're at the end and there is something.\n if (!path.length) {\n finished = true;\n return;\n }\n\n // step into child\n obj = child;\n\n // but we're done here\n return;\n }\n }\n }\n\n key = undefined;\n // if we found no matching properties\n // on the current object, there's no match.\n finished = true;\n }\n\n if (!key) return;\n if (null == obj) return obj;\n\n // the `obj` and `key` is one above the leaf object and key, so\n // start object: { a: { 'b.c': 10 } }\n // end object: { 'b.c': 10 }\n // end key: 'b.c'\n // this way, you can do `obj[key]` and get `10`.\n return fn(obj, key, val);\n };\n}\n\n\n/**\n * Find an object by its key\n *\n * find({ first_name : 'Calvin' }, 'firstName')\n */\n\nfunction find (obj, key) {\n if (obj.hasOwnProperty(key)) return obj[key];\n}\n\n\n/**\n * Delete a value for a given key\n *\n * del({ a : 'b', x : 'y' }, 'X' }) -> { a : 'b' }\n */\n\nfunction del (obj, key) {\n if (obj.hasOwnProperty(key)) delete obj[key];\n return obj;\n}\n\n\n/**\n * Replace an objects existing value with a new one\n *\n * replace({ a : 'b' }, 'a', 'c') -> { a : 'c' }\n */\n\nfunction replace (obj, key, val) {\n if (obj.hasOwnProperty(key)) obj[key] = val;\n return obj;\n}\n\n/**\n * Normalize a `dot.separated.path`.\n *\n * A.HELL(!*&#(!)O_WOR LD.bar => ahelloworldbar\n *\n * @param {String} path\n * @return {String}\n */\n\nfunction defaultNormalize(path) {\n return path.replace(/[^a-zA-Z0-9\\.]+/g, '').toLowerCase();\n}\n\n/**\n * Check if a value is a function.\n *\n * @param {*} val\n * @return {boolean} Returns `true` if `val` is a function, otherwise `false`.\n */\n\nfunction isFunction(val) {\n return typeof val === 'function';\n}\n","/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2018 Mozilla Foundation\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 * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/web/pdf_viewer\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/web/pdf_viewer\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/web/pdf_viewer\"] = root.pdfjsViewer = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__w_pdfjs_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__w_pdfjs_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__w_pdfjs_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__w_pdfjs_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__w_pdfjs_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __w_pdfjs_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__w_pdfjs_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__w_pdfjs_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__w_pdfjs_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NullL10n = exports.GenericL10n = exports.ProgressBar = exports.DownloadManager = exports.EventBus = exports.PDFFindController = exports.PDFHistory = exports.DefaultAnnotationLayerFactory = exports.AnnotationLayerBuilder = exports.DefaultTextLayerFactory = exports.TextLayerBuilder = exports.SimpleLinkService = exports.PDFLinkService = exports.PDFPageView = exports.PDFSinglePageViewer = exports.PDFViewer = undefined;\n\nvar _annotation_layer_builder = __w_pdfjs_require__(1);\n\nvar _text_layer_builder = __w_pdfjs_require__(10);\n\nvar _ui_utils = __w_pdfjs_require__(3);\n\nvar _pdf_link_service = __w_pdfjs_require__(8);\n\nvar _download_manager = __w_pdfjs_require__(11);\n\nvar _genericl10n = __w_pdfjs_require__(12);\n\nvar _pdf_find_controller = __w_pdfjs_require__(14);\n\nvar _pdf_history = __w_pdfjs_require__(16);\n\nvar _pdf_page_view = __w_pdfjs_require__(17);\n\nvar _pdf_single_page_viewer = __w_pdfjs_require__(20);\n\nvar _pdf_viewer = __w_pdfjs_require__(22);\n\nvar pdfjsVersion = '2.0.943';\nvar pdfjsBuild = 'dc98bf76';\nexports.PDFViewer = _pdf_viewer.PDFViewer;\nexports.PDFSinglePageViewer = _pdf_single_page_viewer.PDFSinglePageViewer;\nexports.PDFPageView = _pdf_page_view.PDFPageView;\nexports.PDFLinkService = _pdf_link_service.PDFLinkService;\nexports.SimpleLinkService = _pdf_link_service.SimpleLinkService;\nexports.TextLayerBuilder = _text_layer_builder.TextLayerBuilder;\nexports.DefaultTextLayerFactory = _text_layer_builder.DefaultTextLayerFactory;\nexports.AnnotationLayerBuilder = _annotation_layer_builder.AnnotationLayerBuilder;\nexports.DefaultAnnotationLayerFactory = _annotation_layer_builder.DefaultAnnotationLayerFactory;\nexports.PDFHistory = _pdf_history.PDFHistory;\nexports.PDFFindController = _pdf_find_controller.PDFFindController;\nexports.EventBus = _ui_utils.EventBus;\nexports.DownloadManager = _download_manager.DownloadManager;\nexports.ProgressBar = _ui_utils.ProgressBar;\nexports.GenericL10n = _genericl10n.GenericL10n;\nexports.NullL10n = _ui_utils.NullL10n;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DefaultAnnotationLayerFactory = exports.AnnotationLayerBuilder = undefined;\n\nvar _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; }; }();\n\nvar _pdfjsLib = __w_pdfjs_require__(2);\n\nvar _ui_utils = __w_pdfjs_require__(3);\n\nvar _pdf_link_service = __w_pdfjs_require__(8);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar AnnotationLayerBuilder = function () {\n function AnnotationLayerBuilder(_ref) {\n var pageDiv = _ref.pageDiv,\n pdfPage = _ref.pdfPage,\n linkService = _ref.linkService,\n downloadManager = _ref.downloadManager,\n _ref$imageResourcesPa = _ref.imageResourcesPath,\n imageResourcesPath = _ref$imageResourcesPa === undefined ? '' : _ref$imageResourcesPa,\n _ref$renderInteractiv = _ref.renderInteractiveForms,\n renderInteractiveForms = _ref$renderInteractiv === undefined ? false : _ref$renderInteractiv,\n _ref$l10n = _ref.l10n,\n l10n = _ref$l10n === undefined ? _ui_utils.NullL10n : _ref$l10n;\n\n _classCallCheck(this, AnnotationLayerBuilder);\n\n this.pageDiv = pageDiv;\n this.pdfPage = pdfPage;\n this.linkService = linkService;\n this.downloadManager = downloadManager;\n this.imageResourcesPath = imageResourcesPath;\n this.renderInteractiveForms = renderInteractiveForms;\n this.l10n = l10n;\n this.div = null;\n this._cancelled = false;\n }\n\n _createClass(AnnotationLayerBuilder, [{\n key: 'render',\n value: function render(viewport) {\n var _this = this;\n\n var intent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'display';\n\n this.pdfPage.getAnnotations({ intent: intent }).then(function (annotations) {\n if (_this._cancelled) {\n return;\n }\n var parameters = {\n viewport: viewport.clone({ dontFlip: true }),\n div: _this.div,\n annotations: annotations,\n page: _this.pdfPage,\n imageResourcesPath: _this.imageResourcesPath,\n renderInteractiveForms: _this.renderInteractiveForms,\n linkService: _this.linkService,\n downloadManager: _this.downloadManager\n };\n if (_this.div) {\n _pdfjsLib.AnnotationLayer.update(parameters);\n } else {\n if (annotations.length === 0) {\n return;\n }\n _this.div = document.createElement('div');\n _this.div.className = 'annotationLayer';\n _this.pageDiv.appendChild(_this.div);\n parameters.div = _this.div;\n _pdfjsLib.AnnotationLayer.render(parameters);\n _this.l10n.translate(_this.div);\n }\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this._cancelled = true;\n }\n }, {\n key: 'hide',\n value: function hide() {\n if (!this.div) {\n return;\n }\n this.div.setAttribute('hidden', 'true');\n }\n }]);\n\n return AnnotationLayerBuilder;\n}();\n\nvar DefaultAnnotationLayerFactory = function () {\n function DefaultAnnotationLayerFactory() {\n _classCallCheck(this, DefaultAnnotationLayerFactory);\n }\n\n _createClass(DefaultAnnotationLayerFactory, [{\n key: 'createAnnotationLayerBuilder',\n value: function createAnnotationLayerBuilder(pageDiv, pdfPage) {\n var imageResourcesPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var renderInteractiveForms = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var l10n = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _ui_utils.NullL10n;\n\n return new AnnotationLayerBuilder({\n pageDiv: pageDiv,\n pdfPage: pdfPage,\n imageResourcesPath: imageResourcesPath,\n renderInteractiveForms: renderInteractiveForms,\n linkService: new _pdf_link_service.SimpleLinkService(),\n l10n: l10n\n });\n }\n }]);\n\n return DefaultAnnotationLayerFactory;\n}();\n\nexports.AnnotationLayerBuilder = AnnotationLayerBuilder;\nexports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar pdfjsLib = void 0;\nif (typeof window !== 'undefined' && window['pdfjs-dist/build/pdf']) {\n pdfjsLib = window['pdfjs-dist/build/pdf'];\n} else {\n pdfjsLib = require('../build/pdf.js');\n}\nmodule.exports = pdfjsLib;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.moveToEndOfArray = exports.waitOnEventOrTimeout = exports.WaitOnType = exports.animationStarted = exports.normalizeWheelEventDelta = exports.binarySearchFirstItem = exports.watchScroll = exports.scrollIntoView = exports.getOutputScale = exports.approximateFraction = exports.getPageSizeInches = exports.roundToDivide = exports.getVisibleElements = exports.backtrackBeforeAllVisibleElements = exports.parseQueryString = exports.noContextMenuHandler = exports.getPDFFileNameFromURL = exports.ProgressBar = exports.EventBus = exports.NullL10n = exports.TextLayerMode = exports.RendererType = exports.PresentationModeState = exports.isPortraitOrientation = exports.isValidRotation = exports.VERTICAL_PADDING = exports.SCROLLBAR_PADDING = exports.MAX_AUTO_SCALE = exports.UNKNOWN_SCALE = exports.MAX_SCALE = exports.MIN_SCALE = exports.DEFAULT_SCALE = exports.DEFAULT_SCALE_VALUE = exports.CSS_UNITS = undefined;\n\nvar _regenerator = __w_pdfjs_require__(4);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _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; }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nvar CSS_UNITS = 96.0 / 72.0;\nvar DEFAULT_SCALE_VALUE = 'auto';\nvar DEFAULT_SCALE = 1.0;\nvar MIN_SCALE = 0.10;\nvar MAX_SCALE = 10.0;\nvar UNKNOWN_SCALE = 0;\nvar MAX_AUTO_SCALE = 1.25;\nvar SCROLLBAR_PADDING = 40;\nvar VERTICAL_PADDING = 5;\nvar PresentationModeState = {\n UNKNOWN: 0,\n NORMAL: 1,\n CHANGING: 2,\n FULLSCREEN: 3\n};\nvar RendererType = {\n CANVAS: 'canvas',\n SVG: 'svg'\n};\nvar TextLayerMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_ENHANCE: 2\n};\nfunction formatL10nValue(text, args) {\n if (!args) {\n return text;\n }\n return text.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, function (all, name) {\n return name in args ? args[name] : '{{' + name + '}}';\n });\n}\nvar NullL10n = {\n getLanguage: function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt('return', 'en-us');\n\n case 1:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getLanguage() {\n return _ref.apply(this, arguments);\n }\n\n return getLanguage;\n }(),\n getDirection: function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt('return', 'ltr');\n\n case 1:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getDirection() {\n return _ref2.apply(this, arguments);\n }\n\n return getDirection;\n }(),\n get: function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3(property, args, fallback) {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt('return', formatL10nValue(fallback, args));\n\n case 1:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function get(_x, _x2, _x3) {\n return _ref3.apply(this, arguments);\n }\n\n return get;\n }(),\n translate: function () {\n var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee4(element) {\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function translate(_x4) {\n return _ref4.apply(this, arguments);\n }\n\n return translate;\n }()\n};\nfunction getOutputScale(ctx) {\n var devicePixelRatio = window.devicePixelRatio || 1;\n var backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1;\n var pixelRatio = devicePixelRatio / backingStoreRatio;\n return {\n sx: pixelRatio,\n sy: pixelRatio,\n scaled: pixelRatio !== 1\n };\n}\nfunction scrollIntoView(element, spot) {\n var skipOverflowHiddenElements = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var parent = element.offsetParent;\n if (!parent) {\n console.error('offsetParent is not set -- cannot scroll');\n return;\n }\n var offsetY = element.offsetTop + element.clientTop;\n var offsetX = element.offsetLeft + element.clientLeft;\n while (parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth || skipOverflowHiddenElements && getComputedStyle(parent).overflow === 'hidden') {\n if (parent.dataset._scaleY) {\n offsetY /= parent.dataset._scaleY;\n offsetX /= parent.dataset._scaleX;\n }\n offsetY += parent.offsetTop;\n offsetX += parent.offsetLeft;\n parent = parent.offsetParent;\n if (!parent) {\n return;\n }\n }\n if (spot) {\n if (spot.top !== undefined) {\n offsetY += spot.top;\n }\n if (spot.left !== undefined) {\n offsetX += spot.left;\n parent.scrollLeft = offsetX;\n }\n }\n parent.scrollTop = offsetY;\n}\nfunction watchScroll(viewAreaElement, callback) {\n var debounceScroll = function debounceScroll(evt) {\n if (rAF) {\n return;\n }\n rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {\n rAF = null;\n var currentX = viewAreaElement.scrollLeft;\n var lastX = state.lastX;\n if (currentX !== lastX) {\n state.right = currentX > lastX;\n }\n state.lastX = currentX;\n var currentY = viewAreaElement.scrollTop;\n var lastY = state.lastY;\n if (currentY !== lastY) {\n state.down = currentY > lastY;\n }\n state.lastY = currentY;\n callback(state);\n });\n };\n var state = {\n right: true,\n down: true,\n lastX: viewAreaElement.scrollLeft,\n lastY: viewAreaElement.scrollTop,\n _eventHandler: debounceScroll\n };\n var rAF = null;\n viewAreaElement.addEventListener('scroll', debounceScroll, true);\n return state;\n}\nfunction parseQueryString(query) {\n var parts = query.split('&');\n var params = Object.create(null);\n for (var i = 0, ii = parts.length; i < ii; ++i) {\n var param = parts[i].split('=');\n var key = param[0].toLowerCase();\n var value = param.length > 1 ? param[1] : null;\n params[decodeURIComponent(key)] = decodeURIComponent(value);\n }\n return params;\n}\nfunction binarySearchFirstItem(items, condition) {\n var minIndex = 0;\n var maxIndex = items.length - 1;\n if (items.length === 0 || !condition(items[maxIndex])) {\n return items.length;\n }\n if (condition(items[minIndex])) {\n return minIndex;\n }\n while (minIndex < maxIndex) {\n var currentIndex = minIndex + maxIndex >> 1;\n var currentItem = items[currentIndex];\n if (condition(currentItem)) {\n maxIndex = currentIndex;\n } else {\n minIndex = currentIndex + 1;\n }\n }\n return minIndex;\n}\nfunction approximateFraction(x) {\n if (Math.floor(x) === x) {\n return [x, 1];\n }\n var xinv = 1 / x;\n var limit = 8;\n if (xinv > limit) {\n return [1, limit];\n } else if (Math.floor(xinv) === xinv) {\n return [1, xinv];\n }\n var x_ = x > 1 ? xinv : x;\n var a = 0,\n b = 1,\n c = 1,\n d = 1;\n while (true) {\n var p = a + c,\n q = b + d;\n if (q > limit) {\n break;\n }\n if (x_ <= p / q) {\n c = p;\n d = q;\n } else {\n a = p;\n b = q;\n }\n }\n var result = void 0;\n if (x_ - a / b < c / d - x_) {\n result = x_ === x ? [a, b] : [b, a];\n } else {\n result = x_ === x ? [c, d] : [d, c];\n }\n return result;\n}\nfunction roundToDivide(x, div) {\n var r = x % div;\n return r === 0 ? x : Math.round(x - r + div);\n}\nfunction getPageSizeInches(_ref5) {\n var view = _ref5.view,\n userUnit = _ref5.userUnit,\n rotate = _ref5.rotate;\n\n var _view = _slicedToArray(view, 4),\n x1 = _view[0],\n y1 = _view[1],\n x2 = _view[2],\n y2 = _view[3];\n\n var changeOrientation = rotate % 180 !== 0;\n var width = (x2 - x1) / 72 * userUnit;\n var height = (y2 - y1) / 72 * userUnit;\n return {\n width: changeOrientation ? height : width,\n height: changeOrientation ? width : height\n };\n}\nfunction backtrackBeforeAllVisibleElements(index, views, top) {\n if (index < 2) {\n return index;\n }\n var elt = views[index].div;\n var pageTop = elt.offsetTop + elt.clientTop;\n if (pageTop >= top) {\n elt = views[index - 1].div;\n pageTop = elt.offsetTop + elt.clientTop;\n }\n for (var i = index - 2; i >= 0; --i) {\n elt = views[i].div;\n if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) {\n break;\n }\n index = i;\n }\n return index;\n}\nfunction getVisibleElements(scrollEl, views) {\n var sortByVisibility = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var horizontal = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n var top = scrollEl.scrollTop,\n bottom = top + scrollEl.clientHeight;\n var left = scrollEl.scrollLeft,\n right = left + scrollEl.clientWidth;\n function isElementBottomAfterViewTop(view) {\n var element = view.div;\n var elementBottom = element.offsetTop + element.clientTop + element.clientHeight;\n return elementBottom > top;\n }\n function isElementRightAfterViewLeft(view) {\n var element = view.div;\n var elementRight = element.offsetLeft + element.clientLeft + element.clientWidth;\n return elementRight > left;\n }\n var visible = [],\n view = void 0,\n element = void 0;\n var currentHeight = void 0,\n viewHeight = void 0,\n viewBottom = void 0,\n hiddenHeight = void 0;\n var currentWidth = void 0,\n viewWidth = void 0,\n viewRight = void 0,\n hiddenWidth = void 0;\n var percentVisible = void 0;\n var firstVisibleElementInd = views.length === 0 ? 0 : binarySearchFirstItem(views, horizontal ? isElementRightAfterViewLeft : isElementBottomAfterViewTop);\n if (views.length > 0 && !horizontal) {\n firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top);\n }\n var lastEdge = horizontal ? right : -1;\n for (var i = firstVisibleElementInd, ii = views.length; i < ii; i++) {\n view = views[i];\n element = view.div;\n currentWidth = element.offsetLeft + element.clientLeft;\n currentHeight = element.offsetTop + element.clientTop;\n viewWidth = element.clientWidth;\n viewHeight = element.clientHeight;\n viewRight = currentWidth + viewWidth;\n viewBottom = currentHeight + viewHeight;\n if (lastEdge === -1) {\n if (viewBottom >= bottom) {\n lastEdge = viewBottom;\n }\n } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) {\n break;\n }\n if (viewBottom <= top || currentHeight >= bottom || viewRight <= left || currentWidth >= right) {\n continue;\n }\n hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom);\n hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right);\n percentVisible = (viewHeight - hiddenHeight) * (viewWidth - hiddenWidth) * 100 / viewHeight / viewWidth | 0;\n visible.push({\n id: view.id,\n x: currentWidth,\n y: currentHeight,\n view: view,\n percent: percentVisible\n });\n }\n var first = visible[0];\n var last = visible[visible.length - 1];\n if (sortByVisibility) {\n visible.sort(function (a, b) {\n var pc = a.percent - b.percent;\n if (Math.abs(pc) > 0.001) {\n return -pc;\n }\n return a.id - b.id;\n });\n }\n return {\n first: first,\n last: last,\n views: visible\n };\n}\nfunction noContextMenuHandler(evt) {\n evt.preventDefault();\n}\nfunction isDataSchema(url) {\n var i = 0,\n ii = url.length;\n while (i < ii && url[i].trim() === '') {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === 'data:';\n}\nfunction getPDFFileNameFromURL(url) {\n var defaultFilename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'document.pdf';\n\n if (typeof url !== 'string') {\n return defaultFilename;\n }\n if (isDataSchema(url)) {\n console.warn('getPDFFileNameFromURL: ' + 'ignoring \"data:\" URL for performance reasons.');\n return defaultFilename;\n }\n var reURI = /^(?:(?:[^:]+:)?\\/\\/[^\\/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n var reFilename = /[^\\/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n var splitURI = reURI.exec(url);\n var suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes('%')) {\n try {\n suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch (ex) {}\n }\n }\n return suggestedFilename || defaultFilename;\n}\nfunction normalizeWheelEventDelta(evt) {\n var delta = Math.sqrt(evt.deltaX * evt.deltaX + evt.deltaY * evt.deltaY);\n var angle = Math.atan2(evt.deltaY, evt.deltaX);\n if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) {\n delta = -delta;\n }\n var MOUSE_DOM_DELTA_PIXEL_MODE = 0;\n var MOUSE_DOM_DELTA_LINE_MODE = 1;\n var MOUSE_PIXELS_PER_LINE = 30;\n var MOUSE_LINES_PER_PAGE = 30;\n if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) {\n delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE;\n } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) {\n delta /= MOUSE_LINES_PER_PAGE;\n }\n return delta;\n}\nfunction isValidRotation(angle) {\n return Number.isInteger(angle) && angle % 90 === 0;\n}\nfunction isPortraitOrientation(size) {\n return size.width <= size.height;\n}\nvar WaitOnType = {\n EVENT: 'event',\n TIMEOUT: 'timeout'\n};\nfunction waitOnEventOrTimeout(_ref6) {\n var target = _ref6.target,\n name = _ref6.name,\n _ref6$delay = _ref6.delay,\n delay = _ref6$delay === undefined ? 0 : _ref6$delay;\n\n return new Promise(function (resolve, reject) {\n if ((typeof target === 'undefined' ? 'undefined' : _typeof(target)) !== 'object' || !(name && typeof name === 'string') || !(Number.isInteger(delay) && delay >= 0)) {\n throw new Error('waitOnEventOrTimeout - invalid parameters.');\n }\n function handler(type) {\n if (target instanceof EventBus) {\n target.off(name, eventHandler);\n } else {\n target.removeEventListener(name, eventHandler);\n }\n if (timeout) {\n clearTimeout(timeout);\n }\n resolve(type);\n }\n var eventHandler = handler.bind(null, WaitOnType.EVENT);\n if (target instanceof EventBus) {\n target.on(name, eventHandler);\n } else {\n target.addEventListener(name, eventHandler);\n }\n var timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT);\n var timeout = setTimeout(timeoutHandler, delay);\n });\n}\nvar animationStarted = new Promise(function (resolve) {\n window.requestAnimationFrame(resolve);\n});\n\nvar EventBus = function () {\n function EventBus() {\n var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref7$dispatchToDOM = _ref7.dispatchToDOM,\n dispatchToDOM = _ref7$dispatchToDOM === undefined ? false : _ref7$dispatchToDOM;\n\n _classCallCheck(this, EventBus);\n\n this._listeners = Object.create(null);\n this._dispatchToDOM = dispatchToDOM === true;\n }\n\n _createClass(EventBus, [{\n key: 'on',\n value: function on(eventName, listener) {\n var eventListeners = this._listeners[eventName];\n if (!eventListeners) {\n eventListeners = [];\n this._listeners[eventName] = eventListeners;\n }\n eventListeners.push(listener);\n }\n }, {\n key: 'off',\n value: function off(eventName, listener) {\n var eventListeners = this._listeners[eventName];\n var i = void 0;\n if (!eventListeners || (i = eventListeners.indexOf(listener)) < 0) {\n return;\n }\n eventListeners.splice(i, 1);\n }\n }, {\n key: 'dispatch',\n value: function dispatch(eventName) {\n var eventListeners = this._listeners[eventName];\n if (!eventListeners || eventListeners.length === 0) {\n if (this._dispatchToDOM) {\n var _args5 = Array.prototype.slice.call(arguments, 1);\n this._dispatchDOMEvent(eventName, _args5);\n }\n return;\n }\n var args = Array.prototype.slice.call(arguments, 1);\n eventListeners.slice(0).forEach(function (listener) {\n listener.apply(null, args);\n });\n if (this._dispatchToDOM) {\n this._dispatchDOMEvent(eventName, args);\n }\n }\n }, {\n key: '_dispatchDOMEvent',\n value: function _dispatchDOMEvent(eventName) {\n var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (!this._dispatchToDOM) {\n return;\n }\n var details = Object.create(null);\n if (args && args.length > 0) {\n var obj = args[0];\n for (var key in obj) {\n var value = obj[key];\n if (key === 'source') {\n if (value === window || value === document) {\n return;\n }\n continue;\n }\n details[key] = value;\n }\n }\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent(eventName, true, true, details);\n document.dispatchEvent(event);\n }\n }]);\n\n return EventBus;\n}();\n\nfunction clamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\n\nvar ProgressBar = function () {\n function ProgressBar(id) {\n var _ref8 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n height = _ref8.height,\n width = _ref8.width,\n units = _ref8.units;\n\n _classCallCheck(this, ProgressBar);\n\n this.visible = true;\n this.div = document.querySelector(id + ' .progress');\n this.bar = this.div.parentNode;\n this.height = height || 100;\n this.width = width || 100;\n this.units = units || '%';\n this.div.style.height = this.height + this.units;\n this.percent = 0;\n }\n\n _createClass(ProgressBar, [{\n key: '_updateBar',\n value: function _updateBar() {\n if (this._indeterminate) {\n this.div.classList.add('indeterminate');\n this.div.style.width = this.width + this.units;\n return;\n }\n this.div.classList.remove('indeterminate');\n var progressSize = this.width * this._percent / 100;\n this.div.style.width = progressSize + this.units;\n }\n }, {\n key: 'setWidth',\n value: function setWidth(viewer) {\n if (!viewer) {\n return;\n }\n var container = viewer.parentNode;\n var scrollbarWidth = container.offsetWidth - viewer.offsetWidth;\n if (scrollbarWidth > 0) {\n this.bar.setAttribute('style', 'width: calc(100% - ' + scrollbarWidth + 'px);');\n }\n }\n }, {\n key: 'hide',\n value: function hide() {\n if (!this.visible) {\n return;\n }\n this.visible = false;\n this.bar.classList.add('hidden');\n document.body.classList.remove('loadingInProgress');\n }\n }, {\n key: 'show',\n value: function show() {\n if (this.visible) {\n return;\n }\n this.visible = true;\n document.body.classList.add('loadingInProgress');\n this.bar.classList.remove('hidden');\n }\n }, {\n key: 'percent',\n get: function get() {\n return this._percent;\n },\n set: function set(val) {\n this._indeterminate = isNaN(val);\n this._percent = clamp(val, 0, 100);\n this._updateBar();\n }\n }]);\n\n return ProgressBar;\n}();\n\nfunction moveToEndOfArray(arr, condition) {\n var moved = [],\n len = arr.length;\n var write = 0;\n for (var read = 0; read < len; ++read) {\n if (condition(arr[read])) {\n moved.push(arr[read]);\n } else {\n arr[write] = arr[read];\n ++write;\n }\n }\n for (var _read = 0; write < len; ++_read, ++write) {\n arr[write] = moved[_read];\n }\n}\nexports.CSS_UNITS = CSS_UNITS;\nexports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE;\nexports.DEFAULT_SCALE = DEFAULT_SCALE;\nexports.MIN_SCALE = MIN_SCALE;\nexports.MAX_SCALE = MAX_SCALE;\nexports.UNKNOWN_SCALE = UNKNOWN_SCALE;\nexports.MAX_AUTO_SCALE = MAX_AUTO_SCALE;\nexports.SCROLLBAR_PADDING = SCROLLBAR_PADDING;\nexports.VERTICAL_PADDING = VERTICAL_PADDING;\nexports.isValidRotation = isValidRotation;\nexports.isPortraitOrientation = isPortraitOrientation;\nexports.PresentationModeState = PresentationModeState;\nexports.RendererType = RendererType;\nexports.TextLayerMode = TextLayerMode;\nexports.NullL10n = NullL10n;\nexports.EventBus = EventBus;\nexports.ProgressBar = ProgressBar;\nexports.getPDFFileNameFromURL = getPDFFileNameFromURL;\nexports.noContextMenuHandler = noContextMenuHandler;\nexports.parseQueryString = parseQueryString;\nexports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements;\nexports.getVisibleElements = getVisibleElements;\nexports.roundToDivide = roundToDivide;\nexports.getPageSizeInches = getPageSizeInches;\nexports.approximateFraction = approximateFraction;\nexports.getOutputScale = getOutputScale;\nexports.scrollIntoView = scrollIntoView;\nexports.watchScroll = watchScroll;\nexports.binarySearchFirstItem = binarySearchFirstItem;\nexports.normalizeWheelEventDelta = normalizeWheelEventDelta;\nexports.animationStarted = animationStarted;\nexports.WaitOnType = WaitOnType;\nexports.waitOnEventOrTimeout = waitOnEventOrTimeout;\nexports.moveToEndOfArray = moveToEndOfArray;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __w_pdfjs_require__(5);\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar g = function () {\n return this;\n}() || Function(\"return this\")();\nvar hadRuntime = g.regeneratorRuntime && Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\ng.regeneratorRuntime = undefined;\nmodule.exports = __w_pdfjs_require__(6);\nif (hadRuntime) {\n g.regeneratorRuntime = oldRuntime;\n} else {\n try {\n delete g.regeneratorRuntime;\n } catch (e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(module) {\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n!function (global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined;\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n var inModule = ( false ? undefined : _typeof(module)) === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n module.exports = runtime;\n }\n return;\n }\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n return generator;\n }\n runtime.wrap = wrap;\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n IteratorPrototype = NativeIteratorPrototype;\n }\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = \"GeneratorFunction\";\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n prototype[method] = function (arg) {\n return this._invoke(method, arg);\n };\n });\n }\n runtime.isGeneratorFunction = function (genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n };\n runtime.mark = function (genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n runtime.awrap = function (arg) {\n return { __await: arg };\n };\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value && (typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) === \"object\" && hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n return Promise.resolve(value).then(function (unwrapped) {\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n var previousPromise;\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n this._invoke = enqueue;\n }\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n runtime.async = function (innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));\n return runtime.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n };\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n return doneResult();\n }\n context.method = method;\n context.arg = arg;\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (context.method === \"next\") {\n context.sent = context._sent = context.arg;\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n context.dispatchException(context.arg);\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n state = GenStateExecuting;\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n if (record.arg === ContinueSentinel) {\n continue;\n }\n return {\n value: record.arg,\n done: context.done\n };\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n context.delegate = null;\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n if (context.method === \"throw\") {\n return ContinueSentinel;\n }\n }\n context.method = \"throw\";\n context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n return ContinueSentinel;\n }\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n var info = record.arg;\n if (!info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n if (info.done) {\n context[delegate.resultName] = info.value;\n context.next = delegate.nextLoc;\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n } else {\n return info;\n }\n context.delegate = null;\n return ContinueSentinel;\n }\n defineIteratorMethods(Gp);\n Gp[toStringTagSymbol] = \"Generator\";\n Gp[iteratorSymbol] = function () {\n return this;\n };\n Gp.toString = function () {\n return \"[object Generator]\";\n };\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n runtime.keys = function (object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n next.done = true;\n return next;\n };\n };\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n next.value = undefined;\n next.done = true;\n return next;\n };\n return next.next = next;\n }\n }\n return { next: doneResult };\n }\n runtime.values = values;\n function doneResult() {\n return {\n value: undefined,\n done: true\n };\n }\n Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n this.method = \"next\";\n this.arg = undefined;\n this.tryEntries.forEach(resetTryEntry);\n if (!skipTempReset) {\n for (var name in this) {\n if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n stop: function stop() {\n this.done = true;\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) {\n throw exception;\n }\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n if (caught) {\n context.method = \"next\";\n context.arg = undefined;\n }\n return !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n if (entry.tryLoc === \"root\") {\n return handle(\"end\");\n }\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n finallyEntry = null;\n }\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n return this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n if (record.type === \"break\" || record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n return ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n if (this.method === \"next\") {\n this.arg = undefined;\n }\n return ContinueSentinel;\n }\n };\n}(function () {\n return this;\n}() || Function(\"return this\")());\n/* WEBPACK VAR INJECTION */}.call(this, __w_pdfjs_require__(7)(module)))\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n module.paths = [];\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n return module;\n};\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SimpleLinkService = exports.PDFLinkService = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _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; }; }();\n\nvar _dom_events = __w_pdfjs_require__(9);\n\nvar _ui_utils = __w_pdfjs_require__(3);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PDFLinkService = function () {\n function PDFLinkService() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n eventBus = _ref.eventBus,\n _ref$externalLinkTarg = _ref.externalLinkTarget,\n externalLinkTarget = _ref$externalLinkTarg === undefined ? null : _ref$externalLinkTarg,\n _ref$externalLinkRel = _ref.externalLinkRel,\n externalLinkRel = _ref$externalLinkRel === undefined ? null : _ref$externalLinkRel;\n\n _classCallCheck(this, PDFLinkService);\n\n this.eventBus = eventBus || (0, _dom_events.getGlobalEventBus)();\n this.externalLinkTarget = externalLinkTarget;\n this.externalLinkRel = externalLinkRel;\n this.baseUrl = null;\n this.pdfDocument = null;\n this.pdfViewer = null;\n this.pdfHistory = null;\n this._pagesRefCache = null;\n }\n\n _createClass(PDFLinkService, [{\n key: 'setDocument',\n value: function setDocument(pdfDocument) {\n var baseUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n this.baseUrl = baseUrl;\n this.pdfDocument = pdfDocument;\n this._pagesRefCache = Object.create(null);\n }\n }, {\n key: 'setViewer',\n value: function setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n }, {\n key: 'setHistory',\n value: function setHistory(pdfHistory) {\n this.pdfHistory = pdfHistory;\n }\n }, {\n key: 'navigateTo',\n value: function navigateTo(dest) {\n var _this = this;\n\n var goToDestination = function goToDestination(_ref2) {\n var namedDest = _ref2.namedDest,\n explicitDest = _ref2.explicitDest;\n\n var destRef = explicitDest[0],\n pageNumber = void 0;\n if (destRef instanceof Object) {\n pageNumber = _this._cachedPageNumber(destRef);\n if (pageNumber === null) {\n _this.pdfDocument.getPageIndex(destRef).then(function (pageIndex) {\n _this.cachePageRef(pageIndex + 1, destRef);\n goToDestination({\n namedDest: namedDest,\n explicitDest: explicitDest\n });\n }).catch(function () {\n console.error('PDFLinkService.navigateTo: \"' + destRef + '\" is not ' + ('a valid page reference, for dest=\"' + dest + '\".'));\n });\n return;\n }\n } else if (Number.isInteger(destRef)) {\n pageNumber = destRef + 1;\n } else {\n console.error('PDFLinkService.navigateTo: \"' + destRef + '\" is not ' + ('a valid destination reference, for dest=\"' + dest + '\".'));\n return;\n }\n if (!pageNumber || pageNumber < 1 || pageNumber > _this.pagesCount) {\n console.error('PDFLinkService.navigateTo: \"' + pageNumber + '\" is not ' + ('a valid page number, for dest=\"' + dest + '\".'));\n return;\n }\n if (_this.pdfHistory) {\n _this.pdfHistory.pushCurrentPosition();\n _this.pdfHistory.push({\n namedDest: namedDest,\n explicitDest: explicitDest,\n pageNumber: pageNumber\n });\n }\n _this.pdfViewer.scrollPageIntoView({\n pageNumber: pageNumber,\n destArray: explicitDest\n });\n };\n new Promise(function (resolve, reject) {\n if (typeof dest === 'string') {\n _this.pdfDocument.getDestination(dest).then(function (destArray) {\n resolve({\n namedDest: dest,\n explicitDest: destArray\n });\n });\n return;\n }\n resolve({\n namedDest: '',\n explicitDest: dest\n });\n }).then(function (data) {\n if (!Array.isArray(data.explicitDest)) {\n console.error('PDFLinkService.navigateTo: \"' + data.explicitDest + '\" is' + (' not a valid destination array, for dest=\"' + dest + '\".'));\n return;\n }\n goToDestination(data);\n });\n }\n }, {\n key: 'getDestinationHash',\n value: function getDestinationHash(dest) {\n if (typeof dest === 'string') {\n return this.getAnchorUrl('#' + escape(dest));\n }\n if (Array.isArray(dest)) {\n var str = JSON.stringify(dest);\n return this.getAnchorUrl('#' + escape(str));\n }\n return this.getAnchorUrl('');\n }\n }, {\n key: 'getAnchorUrl',\n value: function getAnchorUrl(anchor) {\n return (this.baseUrl || '') + anchor;\n }\n }, {\n key: 'setHash',\n value: function setHash(hash) {\n var pageNumber = void 0,\n dest = void 0;\n if (hash.includes('=')) {\n var params = (0, _ui_utils.parseQueryString)(hash);\n if ('search' in params) {\n this.eventBus.dispatch('findfromurlhash', {\n source: this,\n query: params['search'].replace(/\"/g, ''),\n phraseSearch: params['phrase'] === 'true'\n });\n }\n if ('nameddest' in params) {\n this.navigateTo(params.nameddest);\n return;\n }\n if ('page' in params) {\n pageNumber = params.page | 0 || 1;\n }\n if ('zoom' in params) {\n var zoomArgs = params.zoom.split(',');\n var zoomArg = zoomArgs[0];\n var zoomArgNumber = parseFloat(zoomArg);\n if (!zoomArg.includes('Fit')) {\n dest = [null, { name: 'XYZ' }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg];\n } else {\n if (zoomArg === 'Fit' || zoomArg === 'FitB') {\n dest = [null, { name: zoomArg }];\n } else if (zoomArg === 'FitH' || zoomArg === 'FitBH' || zoomArg === 'FitV' || zoomArg === 'FitBV') {\n dest = [null, { name: zoomArg }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null];\n } else if (zoomArg === 'FitR') {\n if (zoomArgs.length !== 5) {\n console.error('PDFLinkService.setHash: Not enough parameters for \"FitR\".');\n } else {\n dest = [null, { name: zoomArg }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0];\n }\n } else {\n console.error('PDFLinkService.setHash: \"' + zoomArg + '\" is not ' + 'a valid zoom value.');\n }\n }\n }\n if (dest) {\n this.pdfViewer.scrollPageIntoView({\n pageNumber: pageNumber || this.page,\n destArray: dest,\n allowNegativeOffset: true\n });\n } else if (pageNumber) {\n this.page = pageNumber;\n }\n if ('pagemode' in params) {\n this.eventBus.dispatch('pagemode', {\n source: this,\n mode: params.pagemode\n });\n }\n } else {\n dest = unescape(hash);\n try {\n dest = JSON.parse(dest);\n if (!Array.isArray(dest)) {\n dest = dest.toString();\n }\n } catch (ex) {}\n if (typeof dest === 'string' || isValidExplicitDestination(dest)) {\n this.navigateTo(dest);\n return;\n }\n console.error('PDFLinkService.setHash: \"' + unescape(hash) + '\" is not ' + 'a valid destination.');\n }\n }\n }, {\n key: 'executeNamedAction',\n value: function executeNamedAction(action) {\n switch (action) {\n case 'GoBack':\n if (this.pdfHistory) {\n this.pdfHistory.back();\n }\n break;\n case 'GoForward':\n if (this.pdfHistory) {\n this.pdfHistory.forward();\n }\n break;\n case 'NextPage':\n if (this.page < this.pagesCount) {\n this.page++;\n }\n break;\n case 'PrevPage':\n if (this.page > 1) {\n this.page--;\n }\n break;\n case 'LastPage':\n this.page = this.pagesCount;\n break;\n case 'FirstPage':\n this.page = 1;\n break;\n default:\n break;\n }\n this.eventBus.dispatch('namedaction', {\n source: this,\n action: action\n });\n }\n }, {\n key: 'cachePageRef',\n value: function cachePageRef(pageNum, pageRef) {\n if (!pageRef) {\n return;\n }\n var refStr = pageRef.num + ' ' + pageRef.gen + ' R';\n this._pagesRefCache[refStr] = pageNum;\n }\n }, {\n key: '_cachedPageNumber',\n value: function _cachedPageNumber(pageRef) {\n var refStr = pageRef.num + ' ' + pageRef.gen + ' R';\n return this._pagesRefCache && this._pagesRefCache[refStr] || null;\n }\n }, {\n key: 'pagesCount',\n get: function get() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n }\n }, {\n key: 'page',\n get: function get() {\n return this.pdfViewer.currentPageNumber;\n },\n set: function set(value) {\n this.pdfViewer.currentPageNumber = value;\n }\n }, {\n key: 'rotation',\n get: function get() {\n return this.pdfViewer.pagesRotation;\n },\n set: function set(value) {\n this.pdfViewer.pagesRotation = value;\n }\n }]);\n\n return PDFLinkService;\n}();\n\nfunction isValidExplicitDestination(dest) {\n if (!Array.isArray(dest)) {\n return false;\n }\n var destLength = dest.length,\n allowNull = true;\n if (destLength < 2) {\n return false;\n }\n var page = dest[0];\n if (!((typeof page === 'undefined' ? 'undefined' : _typeof(page)) === 'object' && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) {\n return false;\n }\n var zoom = dest[1];\n if (!((typeof zoom === 'undefined' ? 'undefined' : _typeof(zoom)) === 'object' && typeof zoom.name === 'string')) {\n return false;\n }\n switch (zoom.name) {\n case 'XYZ':\n if (destLength !== 5) {\n return false;\n }\n break;\n case 'Fit':\n case 'FitB':\n return destLength === 2;\n case 'FitH':\n case 'FitBH':\n case 'FitV':\n case 'FitBV':\n if (destLength !== 3) {\n return false;\n }\n break;\n case 'FitR':\n if (destLength !== 6) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (var i = 2; i < destLength; i++) {\n var param = dest[i];\n if (!(typeof param === 'number' || allowNull && param === null)) {\n return false;\n }\n }\n return true;\n}\n\nvar SimpleLinkService = function () {\n function SimpleLinkService() {\n _classCallCheck(this, SimpleLinkService);\n\n this.externalLinkTarget = null;\n this.externalLinkRel = null;\n }\n\n _createClass(SimpleLinkService, [{\n key: 'navigateTo',\n value: function navigateTo(dest) {}\n }, {\n key: 'getDestinationHash',\n value: function getDestinationHash(dest) {\n return '#';\n }\n }, {\n key: 'getAnchorUrl',\n value: function getAnchorUrl(hash) {\n return '#';\n }\n }, {\n key: 'setHash',\n value: function setHash(hash) {}\n }, {\n key: 'executeNamedAction',\n value: function executeNamedAction(action) {}\n }, {\n key: 'cachePageRef',\n value: function cachePageRef(pageNum, pageRef) {}\n }, {\n key: 'pagesCount',\n get: function get() {\n return 0;\n }\n }, {\n key: 'page',\n get: function get() {\n return 0;\n },\n set: function set(value) {}\n }, {\n key: 'rotation',\n get: function get() {\n return 0;\n },\n set: function set(value) {}\n }]);\n\n return SimpleLinkService;\n}();\n\nexports.PDFLinkService = PDFLinkService;\nexports.SimpleLinkService = SimpleLinkService;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getGlobalEventBus = exports.attachDOMEventsToEventBus = undefined;\n\nvar _ui_utils = __w_pdfjs_require__(3);\n\nfunction attachDOMEventsToEventBus(eventBus) {\n eventBus.on('documentload', function () {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent('documentload', true, true, {});\n window.dispatchEvent(event);\n });\n eventBus.on('pagerendered', function (evt) {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent('pagerendered', true, true, {\n pageNumber: evt.pageNumber,\n cssTransform: evt.cssTransform\n });\n evt.source.div.dispatchEvent(event);\n });\n eventBus.on('textlayerrendered', function (evt) {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent('textlayerrendered', true, true, { pageNumber: evt.pageNumber });\n evt.source.textLayerDiv.dispatchEvent(event);\n });\n eventBus.on('pagechange', function (evt) {\n var event = document.createEvent('UIEvents');\n event.initUIEvent('pagechange', true, true, window, 0);\n event.pageNumber = evt.pageNumber;\n evt.source.container.dispatchEvent(event);\n });\n eventBus.on('pagesinit', function (evt) {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent('pagesinit', true, true, null);\n evt.source.container.dispatchEvent(event);\n });\n eventBus.on('pagesloaded', function (evt) {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent('pagesloaded', true, true, { pagesCount: evt.pagesCount });\n evt.source.container.dispatchEvent(event);\n });\n eventBus.on('scalechange', function (evt) {\n var event = document.createEvent('UIEvents');\n event.initUIEvent('scalechange', true, true, window, 0);\n event.scale = evt.scale;\n event.presetValue = evt.presetValue;\n evt.source.container.dispatchEvent(event);\n });\n eventBus.on('updateviewarea', function (evt) {\n var event = document.createEvent('UIEvents');\n event.initUIEvent('updateviewarea', true, true, window, 0);\n event.location = evt.location;\n evt.source.container.dispatchEvent(event);\n });\n eventBus.on('find', function (evt) {\n if (evt.source === window) {\n return;\n }\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent('find' + evt.type, true, true, {\n query: evt.query,\n phraseSearch: evt.phraseSearch,\n caseSensitive: evt.caseSensitive,\n highlightAll: evt.highlightAll,\n findPrevious: evt.findPrevious\n });\n window.dispatchEvent(event);\n });\n eventBus.on('attachmentsloaded', function (evt) {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent('attachmentsloaded', true, true, { attachmentsCount: evt.attachmentsCount });\n evt.source.container.dispatchEvent(event);\n });\n eventBus.on('sidebarviewchanged', function (evt) {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent('sidebarviewchanged', true, true, { view: evt.view });\n evt.source.outerContainer.dispatchEvent(event);\n });\n eventBus.on('pagemode', function (evt) {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent('pagemode', true, true, { mode: evt.mode });\n evt.source.pdfViewer.container.dispatchEvent(event);\n });\n eventBus.on('namedaction', function (evt) {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent('namedaction', true, true, { action: evt.action });\n evt.source.pdfViewer.container.dispatchEvent(event);\n });\n eventBus.on('presentationmodechanged', function (evt) {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent('presentationmodechanged', true, true, {\n active: evt.active,\n switchInProgress: evt.switchInProgress\n });\n window.dispatchEvent(event);\n });\n eventBus.on('outlineloaded', function (evt) {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent('outlineloaded', true, true, { outlineCount: evt.outlineCount });\n evt.source.container.dispatchEvent(event);\n });\n}\nvar globalEventBus = null;\nfunction getGlobalEventBus() {\n var dispatchToDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (!globalEventBus) {\n globalEventBus = new _ui_utils.EventBus({ dispatchToDOM: dispatchToDOM });\n if (!dispatchToDOM) {\n attachDOMEventsToEventBus(globalEventBus);\n }\n }\n return globalEventBus;\n}\nexports.attachDOMEventsToEventBus = attachDOMEventsToEventBus;\nexports.getGlobalEventBus = getGlobalEventBus;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DefaultTextLayerFactory = exports.TextLayerBuilder = undefined;\n\nvar _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; }; }();\n\nvar _dom_events = __w_pdfjs_require__(9);\n\nvar _pdfjsLib = __w_pdfjs_require__(2);\n\nvar _ui_utils = __w_pdfjs_require__(3);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EXPAND_DIVS_TIMEOUT = 300;\nvar MATCH_SCROLL_OFFSET_TOP = -50;\nvar MATCH_SCROLL_OFFSET_LEFT = -400;\n\nvar TextLayerBuilder = function () {\n function TextLayerBuilder(_ref) {\n var textLayerDiv = _ref.textLayerDiv,\n eventBus = _ref.eventBus,\n pageIndex = _ref.pageIndex,\n viewport = _ref.viewport,\n _ref$findController = _ref.findController,\n findController = _ref$findController === undefined ? null : _ref$findController,\n _ref$enhanceTextSelec = _ref.enhanceTextSelection,\n enhanceTextSelection = _ref$enhanceTextSelec === undefined ? false : _ref$enhanceTextSelec;\n\n _classCallCheck(this, TextLayerBuilder);\n\n this.textLayerDiv = textLayerDiv;\n this.eventBus = eventBus || (0, _dom_events.getGlobalEventBus)();\n this.textContent = null;\n this.textContentItemsStr = [];\n this.textContentStream = null;\n this.renderingDone = false;\n this.pageIdx = pageIndex;\n this.pageNumber = this.pageIdx + 1;\n this.matches = [];\n this.viewport = viewport;\n this.textDivs = [];\n this.findController = findController;\n this.textLayerRenderTask = null;\n this.enhanceTextSelection = enhanceTextSelection;\n this._boundEvents = Object.create(null);\n this._bindEvents();\n this._bindMouse();\n }\n\n _createClass(TextLayerBuilder, [{\n key: '_finishRendering',\n value: function _finishRendering() {\n this.renderingDone = true;\n if (!this.enhanceTextSelection) {\n var endOfContent = document.createElement('div');\n endOfContent.className = 'endOfContent';\n this.textLayerDiv.appendChild(endOfContent);\n }\n this.eventBus.dispatch('textlayerrendered', {\n source: this,\n pageNumber: this.pageNumber,\n numTextDivs: this.textDivs.length\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this = this;\n\n var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (!(this.textContent || this.textContentStream) || this.renderingDone) {\n return;\n }\n this.cancel();\n this.textDivs = [];\n var textLayerFrag = document.createDocumentFragment();\n this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({\n textContent: this.textContent,\n textContentStream: this.textContentStream,\n container: textLayerFrag,\n viewport: this.viewport,\n textDivs: this.textDivs,\n textContentItemsStr: this.textContentItemsStr,\n timeout: timeout,\n enhanceTextSelection: this.enhanceTextSelection\n });\n this.textLayerRenderTask.promise.then(function () {\n _this.textLayerDiv.appendChild(textLayerFrag);\n _this._finishRendering();\n _this.updateMatches();\n }, function (reason) {});\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n if (this.textLayerRenderTask) {\n this.textLayerRenderTask.cancel();\n this.textLayerRenderTask = null;\n }\n }\n }, {\n key: 'setTextContentStream',\n value: function setTextContentStream(readableStream) {\n this.cancel();\n this.textContentStream = readableStream;\n }\n }, {\n key: 'setTextContent',\n value: function setTextContent(textContent) {\n this.cancel();\n this.textContent = textContent;\n }\n }, {\n key: 'convertMatches',\n value: function convertMatches(matches, matchesLength) {\n var i = 0;\n var iIndex = 0;\n var textContentItemsStr = this.textContentItemsStr;\n var end = textContentItemsStr.length - 1;\n var queryLen = this.findController === null ? 0 : this.findController.state.query.length;\n var ret = [];\n if (!matches) {\n return ret;\n }\n for (var m = 0, len = matches.length; m < len; m++) {\n var matchIdx = matches[m];\n while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) {\n iIndex += textContentItemsStr[i].length;\n i++;\n }\n if (i === textContentItemsStr.length) {\n console.error('Could not find a matching mapping');\n }\n var match = {\n begin: {\n divIdx: i,\n offset: matchIdx - iIndex\n }\n };\n if (matchesLength) {\n matchIdx += matchesLength[m];\n } else {\n matchIdx += queryLen;\n }\n while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) {\n iIndex += textContentItemsStr[i].length;\n i++;\n }\n match.end = {\n divIdx: i,\n offset: matchIdx - iIndex\n };\n ret.push(match);\n }\n return ret;\n }\n }, {\n key: 'renderMatches',\n value: function renderMatches(matches) {\n if (matches.length === 0) {\n return;\n }\n var textContentItemsStr = this.textContentItemsStr;\n var textDivs = this.textDivs;\n var prevEnd = null;\n var pageIdx = this.pageIdx;\n var isSelectedPage = this.findController === null ? false : pageIdx === this.findController.selected.pageIdx;\n var selectedMatchIdx = this.findController === null ? -1 : this.findController.selected.matchIdx;\n var highlightAll = this.findController === null ? false : this.findController.state.highlightAll;\n var infinity = {\n divIdx: -1,\n offset: undefined\n };\n function beginText(begin, className) {\n var divIdx = begin.divIdx;\n textDivs[divIdx].textContent = '';\n appendTextToDiv(divIdx, 0, begin.offset, className);\n }\n function appendTextToDiv(divIdx, fromOffset, toOffset, className) {\n var div = textDivs[divIdx];\n var content = textContentItemsStr[divIdx].substring(fromOffset, toOffset);\n var node = document.createTextNode(content);\n if (className) {\n var span = document.createElement('span');\n span.className = className;\n span.appendChild(node);\n div.appendChild(span);\n return;\n }\n div.appendChild(node);\n }\n var i0 = selectedMatchIdx,\n i1 = i0 + 1;\n if (highlightAll) {\n i0 = 0;\n i1 = matches.length;\n } else if (!isSelectedPage) {\n return;\n }\n for (var i = i0; i < i1; i++) {\n var match = matches[i];\n var begin = match.begin;\n var end = match.end;\n var isSelected = isSelectedPage && i === selectedMatchIdx;\n var highlightSuffix = isSelected ? ' selected' : '';\n if (this.findController) {\n if (this.findController.selected.matchIdx === i && this.findController.selected.pageIdx === pageIdx) {\n var spot = {\n top: MATCH_SCROLL_OFFSET_TOP,\n left: MATCH_SCROLL_OFFSET_LEFT\n };\n (0, _ui_utils.scrollIntoView)(textDivs[begin.divIdx], spot, true);\n }\n }\n if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {\n if (prevEnd !== null) {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\n }\n beginText(begin);\n } else {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);\n }\n if (begin.divIdx === end.divIdx) {\n appendTextToDiv(begin.divIdx, begin.offset, end.offset, 'highlight' + highlightSuffix);\n } else {\n appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, 'highlight begin' + highlightSuffix);\n for (var n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {\n textDivs[n0].className = 'highlight middle' + highlightSuffix;\n }\n beginText(end, 'highlight end' + highlightSuffix);\n }\n prevEnd = end;\n }\n if (prevEnd) {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\n }\n }\n }, {\n key: 'updateMatches',\n value: function updateMatches() {\n if (!this.renderingDone) {\n return;\n }\n var matches = this.matches;\n var textDivs = this.textDivs;\n var textContentItemsStr = this.textContentItemsStr;\n var clearedUntilDivIdx = -1;\n for (var i = 0, len = matches.length; i < len; i++) {\n var match = matches[i];\n var begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);\n for (var n = begin, end = match.end.divIdx; n <= end; n++) {\n var div = textDivs[n];\n div.textContent = textContentItemsStr[n];\n div.className = '';\n }\n clearedUntilDivIdx = match.end.divIdx + 1;\n }\n if (!this.findController || !this.findController.highlightMatches) {\n return;\n }\n var pageMatches = void 0,\n pageMatchesLength = void 0;\n if (this.findController !== null) {\n pageMatches = this.findController.pageMatches[this.pageIdx] || null;\n pageMatchesLength = this.findController.pageMatchesLength ? this.findController.pageMatchesLength[this.pageIdx] || null : null;\n }\n this.matches = this.convertMatches(pageMatches, pageMatchesLength);\n this.renderMatches(this.matches);\n }\n }, {\n key: '_bindEvents',\n value: function _bindEvents() {\n var _this2 = this;\n\n var eventBus = this.eventBus,\n _boundEvents = this._boundEvents;\n\n _boundEvents.pageCancelled = function (evt) {\n if (evt.pageNumber !== _this2.pageNumber) {\n return;\n }\n if (_this2.textLayerRenderTask) {\n console.error('TextLayerBuilder._bindEvents: `this.cancel()` should ' + 'have been called when the page was reset, or rendering cancelled.');\n return;\n }\n for (var name in _boundEvents) {\n eventBus.off(name.toLowerCase(), _boundEvents[name]);\n delete _boundEvents[name];\n }\n };\n _boundEvents.updateTextLayerMatches = function (evt) {\n if (evt.pageIndex !== _this2.pageIdx && evt.pageIndex !== -1) {\n return;\n }\n _this2.updateMatches();\n };\n eventBus.on('pagecancelled', _boundEvents.pageCancelled);\n eventBus.on('updatetextlayermatches', _boundEvents.updateTextLayerMatches);\n }\n }, {\n key: '_bindMouse',\n value: function _bindMouse() {\n var _this3 = this;\n\n var div = this.textLayerDiv;\n var expandDivsTimer = null;\n div.addEventListener('mousedown', function (evt) {\n if (_this3.enhanceTextSelection && _this3.textLayerRenderTask) {\n _this3.textLayerRenderTask.expandTextDivs(true);\n if (expandDivsTimer) {\n clearTimeout(expandDivsTimer);\n expandDivsTimer = null;\n }\n return;\n }\n var end = div.querySelector('.endOfContent');\n if (!end) {\n return;\n }\n var adjustTop = evt.target !== div;\n adjustTop = adjustTop && window.getComputedStyle(end).getPropertyValue('-moz-user-select') !== 'none';\n if (adjustTop) {\n var divBounds = div.getBoundingClientRect();\n var r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height);\n end.style.top = (r * 100).toFixed(2) + '%';\n }\n end.classList.add('active');\n });\n div.addEventListener('mouseup', function () {\n if (_this3.enhanceTextSelection && _this3.textLayerRenderTask) {\n expandDivsTimer = setTimeout(function () {\n if (_this3.textLayerRenderTask) {\n _this3.textLayerRenderTask.expandTextDivs(false);\n }\n expandDivsTimer = null;\n }, EXPAND_DIVS_TIMEOUT);\n return;\n }\n var end = div.querySelector('.endOfContent');\n if (!end) {\n return;\n }\n end.style.top = '';\n end.classList.remove('active');\n });\n }\n }]);\n\n return TextLayerBuilder;\n}();\n\nvar DefaultTextLayerFactory = function () {\n function DefaultTextLayerFactory() {\n _classCallCheck(this, DefaultTextLayerFactory);\n }\n\n _createClass(DefaultTextLayerFactory, [{\n key: 'createTextLayerBuilder',\n value: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport) {\n var enhanceTextSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n return new TextLayerBuilder({\n textLayerDiv: textLayerDiv,\n pageIndex: pageIndex,\n viewport: viewport,\n enhanceTextSelection: enhanceTextSelection\n });\n }\n }]);\n\n return DefaultTextLayerFactory;\n}();\n\nexports.TextLayerBuilder = TextLayerBuilder;\nexports.DefaultTextLayerFactory = DefaultTextLayerFactory;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DownloadManager = undefined;\n\nvar _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; }; }();\n\nvar _pdfjsLib = __w_pdfjs_require__(2);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n;\nvar DISABLE_CREATE_OBJECT_URL = _pdfjsLib.apiCompatibilityParams.disableCreateObjectURL || false;\nfunction _download(blobUrl, filename) {\n var a = document.createElement('a');\n if (!a.click) {\n throw new Error('DownloadManager: \"a.click()\" is not supported.');\n }\n a.href = blobUrl;\n a.target = '_parent';\n if ('download' in a) {\n a.download = filename;\n }\n (document.body || document.documentElement).appendChild(a);\n a.click();\n a.remove();\n}\n\nvar DownloadManager = function () {\n function DownloadManager(_ref) {\n var _ref$disableCreateObj = _ref.disableCreateObjectURL,\n disableCreateObjectURL = _ref$disableCreateObj === undefined ? DISABLE_CREATE_OBJECT_URL : _ref$disableCreateObj;\n\n _classCallCheck(this, DownloadManager);\n\n this.disableCreateObjectURL = disableCreateObjectURL;\n }\n\n _createClass(DownloadManager, [{\n key: 'downloadUrl',\n value: function downloadUrl(url, filename) {\n if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, 'http://example.com')) {\n return;\n }\n _download(url + '#pdfjs.action=download', filename);\n }\n }, {\n key: 'downloadData',\n value: function downloadData(data, filename, contentType) {\n if (navigator.msSaveBlob) {\n return navigator.msSaveBlob(new Blob([data], { type: contentType }), filename);\n }\n var blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, this.disableCreateObjectURL);\n _download(blobUrl, filename);\n }\n }, {\n key: 'download',\n value: function download(blob, url, filename) {\n if (navigator.msSaveBlob) {\n if (!navigator.msSaveBlob(blob, filename)) {\n this.downloadUrl(url, filename);\n }\n return;\n }\n if (this.disableCreateObjectURL) {\n this.downloadUrl(url, filename);\n return;\n }\n var blobUrl = _pdfjsLib.URL.createObjectURL(blob);\n _download(blobUrl, filename);\n }\n }]);\n\n return DownloadManager;\n}();\n\nexports.DownloadManager = DownloadManager;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GenericL10n = undefined;\n\nvar _regenerator = __w_pdfjs_require__(4);\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _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; }; }();\n\n__w_pdfjs_require__(13);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar webL10n = document.webL10n;\n\nvar GenericL10n = function () {\n function GenericL10n(lang) {\n _classCallCheck(this, GenericL10n);\n\n this._lang = lang;\n this._ready = new Promise(function (resolve, reject) {\n webL10n.setLanguage(lang, function () {\n resolve(webL10n);\n });\n });\n }\n\n _createClass(GenericL10n, [{\n key: 'getLanguage',\n value: function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var l10n;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this._ready;\n\n case 2:\n l10n = _context.sent;\n return _context.abrupt('return', l10n.getLanguage());\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getLanguage() {\n return _ref.apply(this, arguments);\n }\n\n return getLanguage;\n }()\n }, {\n key: 'getDirection',\n value: function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var l10n;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this._ready;\n\n case 2:\n l10n = _context2.sent;\n return _context2.abrupt('return', l10n.getDirection());\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getDirection() {\n return _ref2.apply(this, arguments);\n }\n\n return getDirection;\n }()\n }, {\n key: 'get',\n value: function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3(property, args, fallback) {\n var l10n;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this._ready;\n\n case 2:\n l10n = _context3.sent;\n return _context3.abrupt('return', l10n.get(property, args, fallback));\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function get(_x, _x2, _x3) {\n return _ref3.apply(this, arguments);\n }\n\n return get;\n }()\n }, {\n key: 'translate',\n value: function () {\n var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee4(element) {\n var l10n;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this._ready;\n\n case 2:\n l10n = _context4.sent;\n return _context4.abrupt('return', l10n.translate(element));\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function translate(_x4) {\n return _ref4.apply(this, arguments);\n }\n\n return translate;\n }()\n }]);\n\n return GenericL10n;\n}();\n\nexports.GenericL10n = GenericL10n;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\ndocument.webL10n = function (window, document, undefined) {\n var gL10nData = {};\n var gTextData = '';\n var gTextProp = 'textContent';\n var gLanguage = '';\n var gMacros = {};\n var gReadyState = 'loading';\n var gAsyncResourceLoading = true;\n function getL10nResourceLinks() {\n return document.querySelectorAll('link[type=\"application/l10n\"]');\n }\n function getL10nDictionary() {\n var script = document.querySelector('script[type=\"application/l10n\"]');\n return script ? JSON.parse(script.innerHTML) : null;\n }\n function getTranslatableChildren(element) {\n return element ? element.querySelectorAll('*[data-l10n-id]') : [];\n }\n function getL10nAttributes(element) {\n if (!element) return {};\n var l10nId = element.getAttribute('data-l10n-id');\n var l10nArgs = element.getAttribute('data-l10n-args');\n var args = {};\n if (l10nArgs) {\n try {\n args = JSON.parse(l10nArgs);\n } catch (e) {\n console.warn('could not parse arguments for #' + l10nId);\n }\n }\n return {\n id: l10nId,\n args: args\n };\n }\n function fireL10nReadyEvent(lang) {\n var evtObject = document.createEvent('Event');\n evtObject.initEvent('localized', true, false);\n evtObject.language = lang;\n document.dispatchEvent(evtObject);\n }\n function xhrLoadText(url, onSuccess, onFailure) {\n onSuccess = onSuccess || function _onSuccess(data) {};\n onFailure = onFailure || function _onFailure() {};\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, gAsyncResourceLoading);\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType('text/plain; charset=utf-8');\n }\n xhr.onreadystatechange = function () {\n if (xhr.readyState == 4) {\n if (xhr.status == 200 || xhr.status === 0) {\n onSuccess(xhr.responseText);\n } else {\n onFailure();\n }\n }\n };\n xhr.onerror = onFailure;\n xhr.ontimeout = onFailure;\n try {\n xhr.send(null);\n } catch (e) {\n onFailure();\n }\n }\n function parseResource(href, lang, successCallback, failureCallback) {\n var baseURL = href.replace(/[^\\/]*$/, '') || './';\n function evalString(text) {\n if (text.lastIndexOf('\\\\') < 0) return text;\n return text.replace(/\\\\\\\\/g, '\\\\').replace(/\\\\n/g, '\\n').replace(/\\\\r/g, '\\r').replace(/\\\\t/g, '\\t').replace(/\\\\b/g, '\\b').replace(/\\\\f/g, '\\f').replace(/\\\\{/g, '{').replace(/\\\\}/g, '}').replace(/\\\\\"/g, '\"').replace(/\\\\'/g, \"'\");\n }\n function parseProperties(text, parsedPropertiesCallback) {\n var dictionary = {};\n var reBlank = /^\\s*|\\s*$/;\n var reComment = /^\\s*#|^\\s*$/;\n var reSection = /^\\s*\\[(.*)\\]\\s*$/;\n var reImport = /^\\s*@import\\s+url\\((.*)\\)\\s*$/i;\n var reSplit = /^([^=\\s]*)\\s*=\\s*(.+)$/;\n function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) {\n var entries = rawText.replace(reBlank, '').split(/[\\r\\n]+/);\n var currentLang = '*';\n var genericLang = lang.split('-', 1)[0];\n var skipLang = false;\n var match = '';\n function nextEntry() {\n while (true) {\n if (!entries.length) {\n parsedRawLinesCallback();\n return;\n }\n var line = entries.shift();\n if (reComment.test(line)) continue;\n if (extendedSyntax) {\n match = reSection.exec(line);\n if (match) {\n currentLang = match[1].toLowerCase();\n skipLang = currentLang !== '*' && currentLang !== lang && currentLang !== genericLang;\n continue;\n } else if (skipLang) {\n continue;\n }\n match = reImport.exec(line);\n if (match) {\n loadImport(baseURL + match[1], nextEntry);\n return;\n }\n }\n var tmp = line.match(reSplit);\n if (tmp && tmp.length == 3) {\n dictionary[tmp[1]] = evalString(tmp[2]);\n }\n }\n }\n nextEntry();\n }\n function loadImport(url, callback) {\n xhrLoadText(url, function (content) {\n parseRawLines(content, false, callback);\n }, function () {\n console.warn(url + ' not found.');\n callback();\n });\n }\n parseRawLines(text, true, function () {\n parsedPropertiesCallback(dictionary);\n });\n }\n xhrLoadText(href, function (response) {\n gTextData += response;\n parseProperties(response, function (data) {\n for (var key in data) {\n var id,\n prop,\n index = key.lastIndexOf('.');\n if (index > 0) {\n id = key.substring(0, index);\n prop = key.substring(index + 1);\n } else {\n id = key;\n prop = gTextProp;\n }\n if (!gL10nData[id]) {\n gL10nData[id] = {};\n }\n gL10nData[id][prop] = data[key];\n }\n if (successCallback) {\n successCallback();\n }\n });\n }, failureCallback);\n }\n function loadLocale(lang, callback) {\n if (lang) {\n lang = lang.toLowerCase();\n }\n callback = callback || function _callback() {};\n clear();\n gLanguage = lang;\n var langLinks = getL10nResourceLinks();\n var langCount = langLinks.length;\n if (langCount === 0) {\n var dict = getL10nDictionary();\n if (dict && dict.locales && dict.default_locale) {\n console.log('using the embedded JSON directory, early way out');\n gL10nData = dict.locales[lang];\n if (!gL10nData) {\n var defaultLocale = dict.default_locale.toLowerCase();\n for (var anyCaseLang in dict.locales) {\n anyCaseLang = anyCaseLang.toLowerCase();\n if (anyCaseLang === lang) {\n gL10nData = dict.locales[lang];\n break;\n } else if (anyCaseLang === defaultLocale) {\n gL10nData = dict.locales[defaultLocale];\n }\n }\n }\n callback();\n } else {\n console.log('no resource to load, early way out');\n }\n fireL10nReadyEvent(lang);\n gReadyState = 'complete';\n return;\n }\n var onResourceLoaded = null;\n var gResourceCount = 0;\n onResourceLoaded = function onResourceLoaded() {\n gResourceCount++;\n if (gResourceCount >= langCount) {\n callback();\n fireL10nReadyEvent(lang);\n gReadyState = 'complete';\n }\n };\n function L10nResourceLink(link) {\n var href = link.href;\n this.load = function (lang, callback) {\n parseResource(href, lang, callback, function () {\n console.warn(href + ' not found.');\n console.warn('\"' + lang + '\" resource not found');\n gLanguage = '';\n callback();\n });\n };\n }\n for (var i = 0; i < langCount; i++) {\n var resource = new L10nResourceLink(langLinks[i]);\n resource.load(lang, onResourceLoaded);\n }\n }\n function clear() {\n gL10nData = {};\n gTextData = '';\n gLanguage = '';\n }\n function getPluralRules(lang) {\n var locales2rules = {\n 'af': 3,\n 'ak': 4,\n 'am': 4,\n 'ar': 1,\n 'asa': 3,\n 'az': 0,\n 'be': 11,\n 'bem': 3,\n 'bez': 3,\n 'bg': 3,\n 'bh': 4,\n 'bm': 0,\n 'bn': 3,\n 'bo': 0,\n 'br': 20,\n 'brx': 3,\n 'bs': 11,\n 'ca': 3,\n 'cgg': 3,\n 'chr': 3,\n 'cs': 12,\n 'cy': 17,\n 'da': 3,\n 'de': 3,\n 'dv': 3,\n 'dz': 0,\n 'ee': 3,\n 'el': 3,\n 'en': 3,\n 'eo': 3,\n 'es': 3,\n 'et': 3,\n 'eu': 3,\n 'fa': 0,\n 'ff': 5,\n 'fi': 3,\n 'fil': 4,\n 'fo': 3,\n 'fr': 5,\n 'fur': 3,\n 'fy': 3,\n 'ga': 8,\n 'gd': 24,\n 'gl': 3,\n 'gsw': 3,\n 'gu': 3,\n 'guw': 4,\n 'gv': 23,\n 'ha': 3,\n 'haw': 3,\n 'he': 2,\n 'hi': 4,\n 'hr': 11,\n 'hu': 0,\n 'id': 0,\n 'ig': 0,\n 'ii': 0,\n 'is': 3,\n 'it': 3,\n 'iu': 7,\n 'ja': 0,\n 'jmc': 3,\n 'jv': 0,\n 'ka': 0,\n 'kab': 5,\n 'kaj': 3,\n 'kcg': 3,\n 'kde': 0,\n 'kea': 0,\n 'kk': 3,\n 'kl': 3,\n 'km': 0,\n 'kn': 0,\n 'ko': 0,\n 'ksb': 3,\n 'ksh': 21,\n 'ku': 3,\n 'kw': 7,\n 'lag': 18,\n 'lb': 3,\n 'lg': 3,\n 'ln': 4,\n 'lo': 0,\n 'lt': 10,\n 'lv': 6,\n 'mas': 3,\n 'mg': 4,\n 'mk': 16,\n 'ml': 3,\n 'mn': 3,\n 'mo': 9,\n 'mr': 3,\n 'ms': 0,\n 'mt': 15,\n 'my': 0,\n 'nah': 3,\n 'naq': 7,\n 'nb': 3,\n 'nd': 3,\n 'ne': 3,\n 'nl': 3,\n 'nn': 3,\n 'no': 3,\n 'nr': 3,\n 'nso': 4,\n 'ny': 3,\n 'nyn': 3,\n 'om': 3,\n 'or': 3,\n 'pa': 3,\n 'pap': 3,\n 'pl': 13,\n 'ps': 3,\n 'pt': 3,\n 'rm': 3,\n 'ro': 9,\n 'rof': 3,\n 'ru': 11,\n 'rwk': 3,\n 'sah': 0,\n 'saq': 3,\n 'se': 7,\n 'seh': 3,\n 'ses': 0,\n 'sg': 0,\n 'sh': 11,\n 'shi': 19,\n 'sk': 12,\n 'sl': 14,\n 'sma': 7,\n 'smi': 7,\n 'smj': 7,\n 'smn': 7,\n 'sms': 7,\n 'sn': 3,\n 'so': 3,\n 'sq': 3,\n 'sr': 11,\n 'ss': 3,\n 'ssy': 3,\n 'st': 3,\n 'sv': 3,\n 'sw': 3,\n 'syr': 3,\n 'ta': 3,\n 'te': 3,\n 'teo': 3,\n 'th': 0,\n 'ti': 4,\n 'tig': 3,\n 'tk': 3,\n 'tl': 4,\n 'tn': 3,\n 'to': 0,\n 'tr': 0,\n 'ts': 3,\n 'tzm': 22,\n 'uk': 11,\n 'ur': 3,\n 've': 3,\n 'vi': 0,\n 'vun': 3,\n 'wa': 4,\n 'wae': 3,\n 'wo': 0,\n 'xh': 3,\n 'xog': 3,\n 'yo': 0,\n 'zh': 0,\n 'zu': 3\n };\n function isIn(n, list) {\n return list.indexOf(n) !== -1;\n }\n function isBetween(n, start, end) {\n return start <= n && n <= end;\n }\n var pluralRules = {\n '0': function _(n) {\n return 'other';\n },\n '1': function _(n) {\n if (isBetween(n % 100, 3, 10)) return 'few';\n if (n === 0) return 'zero';\n if (isBetween(n % 100, 11, 99)) return 'many';\n if (n == 2) return 'two';\n if (n == 1) return 'one';\n return 'other';\n },\n '2': function _(n) {\n if (n !== 0 && n % 10 === 0) return 'many';\n if (n == 2) return 'two';\n if (n == 1) return 'one';\n return 'other';\n },\n '3': function _(n) {\n if (n == 1) return 'one';\n return 'other';\n },\n '4': function _(n) {\n if (isBetween(n, 0, 1)) return 'one';\n return 'other';\n },\n '5': function _(n) {\n if (isBetween(n, 0, 2) && n != 2) return 'one';\n return 'other';\n },\n '6': function _(n) {\n if (n === 0) return 'zero';\n if (n % 10 == 1 && n % 100 != 11) return 'one';\n return 'other';\n },\n '7': function _(n) {\n if (n == 2) return 'two';\n if (n == 1) return 'one';\n return 'other';\n },\n '8': function _(n) {\n if (isBetween(n, 3, 6)) return 'few';\n if (isBetween(n, 7, 10)) return 'many';\n if (n == 2) return 'two';\n if (n == 1) return 'one';\n return 'other';\n },\n '9': function _(n) {\n if (n === 0 || n != 1 && isBetween(n % 100, 1, 19)) return 'few';\n if (n == 1) return 'one';\n return 'other';\n },\n '10': function _(n) {\n if (isBetween(n % 10, 2, 9) && !isBetween(n % 100, 11, 19)) return 'few';\n if (n % 10 == 1 && !isBetween(n % 100, 11, 19)) return 'one';\n return 'other';\n },\n '11': function _(n) {\n if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few';\n if (n % 10 === 0 || isBetween(n % 10, 5, 9) || isBetween(n % 100, 11, 14)) return 'many';\n if (n % 10 == 1 && n % 100 != 11) return 'one';\n return 'other';\n },\n '12': function _(n) {\n if (isBetween(n, 2, 4)) return 'few';\n if (n == 1) return 'one';\n return 'other';\n },\n '13': function _(n) {\n if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few';\n if (n != 1 && isBetween(n % 10, 0, 1) || isBetween(n % 10, 5, 9) || isBetween(n % 100, 12, 14)) return 'many';\n if (n == 1) return 'one';\n return 'other';\n },\n '14': function _(n) {\n if (isBetween(n % 100, 3, 4)) return 'few';\n if (n % 100 == 2) return 'two';\n if (n % 100 == 1) return 'one';\n return 'other';\n },\n '15': function _(n) {\n if (n === 0 || isBetween(n % 100, 2, 10)) return 'few';\n if (isBetween(n % 100, 11, 19)) return 'many';\n if (n == 1) return 'one';\n return 'other';\n },\n '16': function _(n) {\n if (n % 10 == 1 && n != 11) return 'one';\n return 'other';\n },\n '17': function _(n) {\n if (n == 3) return 'few';\n if (n === 0) return 'zero';\n if (n == 6) return 'many';\n if (n == 2) return 'two';\n if (n == 1) return 'one';\n return 'other';\n },\n '18': function _(n) {\n if (n === 0) return 'zero';\n if (isBetween(n, 0, 2) && n !== 0 && n != 2) return 'one';\n return 'other';\n },\n '19': function _(n) {\n if (isBetween(n, 2, 10)) return 'few';\n if (isBetween(n, 0, 1)) return 'one';\n return 'other';\n },\n '20': function _(n) {\n if ((isBetween(n % 10, 3, 4) || n % 10 == 9) && !(isBetween(n % 100, 10, 19) || isBetween(n % 100, 70, 79) || isBetween(n % 100, 90, 99))) return 'few';\n if (n % 1000000 === 0 && n !== 0) return 'many';\n if (n % 10 == 2 && !isIn(n % 100, [12, 72, 92])) return 'two';\n if (n % 10 == 1 && !isIn(n % 100, [11, 71, 91])) return 'one';\n return 'other';\n },\n '21': function _(n) {\n if (n === 0) return 'zero';\n if (n == 1) return 'one';\n return 'other';\n },\n '22': function _(n) {\n if (isBetween(n, 0, 1) || isBetween(n, 11, 99)) return 'one';\n return 'other';\n },\n '23': function _(n) {\n if (isBetween(n % 10, 1, 2) || n % 20 === 0) return 'one';\n return 'other';\n },\n '24': function _(n) {\n if (isBetween(n, 3, 10) || isBetween(n, 13, 19)) return 'few';\n if (isIn(n, [2, 12])) return 'two';\n if (isIn(n, [1, 11])) return 'one';\n return 'other';\n }\n };\n var index = locales2rules[lang.replace(/-.*$/, '')];\n if (!(index in pluralRules)) {\n console.warn('plural form unknown for [' + lang + ']');\n return function () {\n return 'other';\n };\n }\n return pluralRules[index];\n }\n gMacros.plural = function (str, param, key, prop) {\n var n = parseFloat(param);\n if (isNaN(n)) return str;\n if (prop != gTextProp) return str;\n if (!gMacros._pluralRules) {\n gMacros._pluralRules = getPluralRules(gLanguage);\n }\n var index = '[' + gMacros._pluralRules(n) + ']';\n if (n === 0 && key + '[zero]' in gL10nData) {\n str = gL10nData[key + '[zero]'][prop];\n } else if (n == 1 && key + '[one]' in gL10nData) {\n str = gL10nData[key + '[one]'][prop];\n } else if (n == 2 && key + '[two]' in gL10nData) {\n str = gL10nData[key + '[two]'][prop];\n } else if (key + index in gL10nData) {\n str = gL10nData[key + index][prop];\n } else if (key + '[other]' in gL10nData) {\n str = gL10nData[key + '[other]'][prop];\n }\n return str;\n };\n function getL10nData(key, args, fallback) {\n var data = gL10nData[key];\n if (!data) {\n console.warn('#' + key + ' is undefined.');\n if (!fallback) {\n return null;\n }\n data = fallback;\n }\n var rv = {};\n for (var prop in data) {\n var str = data[prop];\n str = substIndexes(str, args, key, prop);\n str = substArguments(str, args, key);\n rv[prop] = str;\n }\n return rv;\n }\n function substIndexes(str, args, key, prop) {\n var reIndex = /\\{\\[\\s*([a-zA-Z]+)\\(([a-zA-Z]+)\\)\\s*\\]\\}/;\n var reMatch = reIndex.exec(str);\n if (!reMatch || !reMatch.length) return str;\n var macroName = reMatch[1];\n var paramName = reMatch[2];\n var param;\n if (args && paramName in args) {\n param = args[paramName];\n } else if (paramName in gL10nData) {\n param = gL10nData[paramName];\n }\n if (macroName in gMacros) {\n var macro = gMacros[macroName];\n str = macro(str, param, key, prop);\n }\n return str;\n }\n function substArguments(str, args, key) {\n var reArgs = /\\{\\{\\s*(.+?)\\s*\\}\\}/g;\n return str.replace(reArgs, function (matched_text, arg) {\n if (args && arg in args) {\n return args[arg];\n }\n if (arg in gL10nData) {\n return gL10nData[arg];\n }\n console.log('argument {{' + arg + '}} for #' + key + ' is undefined.');\n return matched_text;\n });\n }\n function translateElement(element) {\n var l10n = getL10nAttributes(element);\n if (!l10n.id) return;\n var data = getL10nData(l10n.id, l10n.args);\n if (!data) {\n console.warn('#' + l10n.id + ' is undefined.');\n return;\n }\n if (data[gTextProp]) {\n if (getChildElementCount(element) === 0) {\n element[gTextProp] = data[gTextProp];\n } else {\n var children = element.childNodes;\n var found = false;\n for (var i = 0, l = children.length; i < l; i++) {\n if (children[i].nodeType === 3 && /\\S/.test(children[i].nodeValue)) {\n if (found) {\n children[i].nodeValue = '';\n } else {\n children[i].nodeValue = data[gTextProp];\n found = true;\n }\n }\n }\n if (!found) {\n var textNode = document.createTextNode(data[gTextProp]);\n element.insertBefore(textNode, element.firstChild);\n }\n }\n delete data[gTextProp];\n }\n for (var k in data) {\n element[k] = data[k];\n }\n }\n function getChildElementCount(element) {\n if (element.children) {\n return element.children.length;\n }\n if (typeof element.childElementCount !== 'undefined') {\n return element.childElementCount;\n }\n var count = 0;\n for (var i = 0; i < element.childNodes.length; i++) {\n count += element.nodeType === 1 ? 1 : 0;\n }\n return count;\n }\n function translateFragment(element) {\n element = element || document.documentElement;\n var children = getTranslatableChildren(element);\n var elementCount = children.length;\n for (var i = 0; i < elementCount; i++) {\n translateElement(children[i]);\n }\n translateElement(element);\n }\n return {\n get: function get(key, args, fallbackString) {\n var index = key.lastIndexOf('.');\n var prop = gTextProp;\n if (index > 0) {\n prop = key.substring(index + 1);\n key = key.substring(0, index);\n }\n var fallback;\n if (fallbackString) {\n fallback = {};\n fallback[prop] = fallbackString;\n }\n var data = getL10nData(key, args, fallback);\n if (data && prop in data) {\n return data[prop];\n }\n return '{{' + key + '}}';\n },\n getData: function getData() {\n return gL10nData;\n },\n getText: function getText() {\n return gTextData;\n },\n getLanguage: function getLanguage() {\n return gLanguage;\n },\n setLanguage: function setLanguage(lang, callback) {\n loadLocale(lang, function () {\n if (callback) callback();\n });\n },\n getDirection: function getDirection() {\n var rtlList = ['ar', 'he', 'fa', 'ps', 'ur'];\n var shortCode = gLanguage.split('-', 1)[0];\n return rtlList.indexOf(shortCode) >= 0 ? 'rtl' : 'ltr';\n },\n translate: translateFragment,\n getReadyState: function getReadyState() {\n return gReadyState;\n },\n ready: function ready(callback) {\n if (!callback) {\n return;\n } else if (gReadyState == 'complete' || gReadyState == 'interactive') {\n window.setTimeout(function () {\n callback();\n });\n } else if (document.addEventListener) {\n document.addEventListener('localized', function once() {\n document.removeEventListener('localized', once);\n callback();\n });\n }\n }\n };\n}(window, document);\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFFindController = exports.FindState = undefined;\n\nvar _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; }; }();\n\nvar _pdfjsLib = __w_pdfjs_require__(2);\n\nvar _pdf_find_utils = __w_pdfjs_require__(15);\n\nvar _dom_events = __w_pdfjs_require__(9);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar FindState = {\n FOUND: 0,\n NOT_FOUND: 1,\n WRAPPED: 2,\n PENDING: 3\n};\nvar FIND_TIMEOUT = 250;\nvar CHARACTERS_TO_NORMALIZE = {\n '\\u2018': '\\'',\n '\\u2019': '\\'',\n '\\u201A': '\\'',\n '\\u201B': '\\'',\n '\\u201C': '\"',\n '\\u201D': '\"',\n '\\u201E': '\"',\n '\\u201F': '\"',\n '\\xBC': '1/4',\n '\\xBD': '1/2',\n '\\xBE': '3/4'\n};\n\nvar PDFFindController = function () {\n function PDFFindController(_ref) {\n var linkService = _ref.linkService,\n _ref$eventBus = _ref.eventBus,\n eventBus = _ref$eventBus === undefined ? (0, _dom_events.getGlobalEventBus)() : _ref$eventBus;\n\n _classCallCheck(this, PDFFindController);\n\n this._linkService = linkService;\n this._eventBus = eventBus;\n this._reset();\n eventBus.on('findbarclose', this._onFindBarClose.bind(this));\n var replace = Object.keys(CHARACTERS_TO_NORMALIZE).join('');\n this._normalizationRegex = new RegExp('[' + replace + ']', 'g');\n }\n\n _createClass(PDFFindController, [{\n key: 'setDocument',\n value: function setDocument(pdfDocument) {\n if (this._pdfDocument) {\n this._reset();\n }\n if (!pdfDocument) {\n return;\n }\n this._pdfDocument = pdfDocument;\n this._firstPageCapability.resolve();\n }\n }, {\n key: 'executeCommand',\n value: function executeCommand(cmd, state) {\n var _this = this;\n\n var pdfDocument = this._pdfDocument;\n if (this._state === null || cmd !== 'findagain') {\n this._dirtyMatch = true;\n }\n this._state = state;\n this._updateUIState(FindState.PENDING);\n this._firstPageCapability.promise.then(function () {\n if (!_this._pdfDocument || pdfDocument && _this._pdfDocument !== pdfDocument) {\n return;\n }\n _this._extractText();\n if (_this._findTimeout) {\n clearTimeout(_this._findTimeout);\n _this._findTimeout = null;\n }\n if (cmd === 'find') {\n _this._findTimeout = setTimeout(function () {\n _this._nextMatch();\n _this._findTimeout = null;\n }, FIND_TIMEOUT);\n } else {\n _this._nextMatch();\n }\n });\n }\n }, {\n key: '_reset',\n value: function _reset() {\n this._highlightMatches = false;\n this._pdfDocument = null;\n this._pageMatches = [];\n this._pageMatchesLength = null;\n this._state = null;\n this._selected = {\n pageIdx: -1,\n matchIdx: -1\n };\n this._offset = {\n pageIdx: null,\n matchIdx: null\n };\n this._extractTextPromises = [];\n this._pageContents = [];\n this._matchesCountTotal = 0;\n this._pagesToSearch = null;\n this._pendingFindMatches = Object.create(null);\n this._resumePageIdx = null;\n this._dirtyMatch = false;\n clearTimeout(this._findTimeout);\n this._findTimeout = null;\n this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)();\n }\n }, {\n key: '_normalize',\n value: function _normalize(text) {\n return text.replace(this._normalizationRegex, function (ch) {\n return CHARACTERS_TO_NORMALIZE[ch];\n });\n }\n }, {\n key: '_prepareMatches',\n value: function _prepareMatches(matchesWithLength, matches, matchesLength) {\n function isSubTerm(matchesWithLength, currentIndex) {\n var currentElem = matchesWithLength[currentIndex];\n var nextElem = matchesWithLength[currentIndex + 1];\n if (currentIndex < matchesWithLength.length - 1 && currentElem.match === nextElem.match) {\n currentElem.skipped = true;\n return true;\n }\n for (var i = currentIndex - 1; i >= 0; i--) {\n var prevElem = matchesWithLength[i];\n if (prevElem.skipped) {\n continue;\n }\n if (prevElem.match + prevElem.matchLength < currentElem.match) {\n break;\n }\n if (prevElem.match + prevElem.matchLength >= currentElem.match + currentElem.matchLength) {\n currentElem.skipped = true;\n return true;\n }\n }\n return false;\n }\n matchesWithLength.sort(function (a, b) {\n return a.match === b.match ? a.matchLength - b.matchLength : a.match - b.match;\n });\n for (var i = 0, len = matchesWithLength.length; i < len; i++) {\n if (isSubTerm(matchesWithLength, i)) {\n continue;\n }\n matches.push(matchesWithLength[i].match);\n matchesLength.push(matchesWithLength[i].matchLength);\n }\n }\n }, {\n key: '_isEntireWord',\n value: function _isEntireWord(content, startIdx, length) {\n if (startIdx > 0) {\n var first = content.charCodeAt(startIdx);\n var limit = content.charCodeAt(startIdx - 1);\n if ((0, _pdf_find_utils.getCharacterType)(first) === (0, _pdf_find_utils.getCharacterType)(limit)) {\n return false;\n }\n }\n var endIdx = startIdx + length - 1;\n if (endIdx < content.length - 1) {\n var last = content.charCodeAt(endIdx);\n var _limit = content.charCodeAt(endIdx + 1);\n if ((0, _pdf_find_utils.getCharacterType)(last) === (0, _pdf_find_utils.getCharacterType)(_limit)) {\n return false;\n }\n }\n return true;\n }\n }, {\n key: '_calculatePhraseMatch',\n value: function _calculatePhraseMatch(query, pageIndex, pageContent, entireWord) {\n var matches = [];\n var queryLen = query.length;\n var matchIdx = -queryLen;\n while (true) {\n matchIdx = pageContent.indexOf(query, matchIdx + queryLen);\n if (matchIdx === -1) {\n break;\n }\n if (entireWord && !this._isEntireWord(pageContent, matchIdx, queryLen)) {\n continue;\n }\n matches.push(matchIdx);\n }\n this._pageMatches[pageIndex] = matches;\n }\n }, {\n key: '_calculateWordMatch',\n value: function _calculateWordMatch(query, pageIndex, pageContent, entireWord) {\n var matchesWithLength = [];\n var queryArray = query.match(/\\S+/g);\n for (var i = 0, len = queryArray.length; i < len; i++) {\n var subquery = queryArray[i];\n var subqueryLen = subquery.length;\n var matchIdx = -subqueryLen;\n while (true) {\n matchIdx = pageContent.indexOf(subquery, matchIdx + subqueryLen);\n if (matchIdx === -1) {\n break;\n }\n if (entireWord && !this._isEntireWord(pageContent, matchIdx, subqueryLen)) {\n continue;\n }\n matchesWithLength.push({\n match: matchIdx,\n matchLength: subqueryLen,\n skipped: false\n });\n }\n }\n if (!this._pageMatchesLength) {\n this._pageMatchesLength = [];\n }\n this._pageMatchesLength[pageIndex] = [];\n this._pageMatches[pageIndex] = [];\n this._prepareMatches(matchesWithLength, this._pageMatches[pageIndex], this._pageMatchesLength[pageIndex]);\n }\n }, {\n key: '_calculateMatch',\n value: function _calculateMatch(pageIndex) {\n var pageContent = this._normalize(this._pageContents[pageIndex]);\n var query = this._normalize(this._state.query);\n var _state = this._state,\n caseSensitive = _state.caseSensitive,\n entireWord = _state.entireWord,\n phraseSearch = _state.phraseSearch;\n\n if (query.length === 0) {\n return;\n }\n if (!caseSensitive) {\n pageContent = pageContent.toLowerCase();\n query = query.toLowerCase();\n }\n if (phraseSearch) {\n this._calculatePhraseMatch(query, pageIndex, pageContent, entireWord);\n } else {\n this._calculateWordMatch(query, pageIndex, pageContent, entireWord);\n }\n this._updatePage(pageIndex);\n if (this._resumePageIdx === pageIndex) {\n this._resumePageIdx = null;\n this._nextPageMatch();\n }\n var pageMatchesCount = this._pageMatches[pageIndex].length;\n if (pageMatchesCount > 0) {\n this._matchesCountTotal += pageMatchesCount;\n this._updateUIResultsCount();\n }\n }\n }, {\n key: '_extractText',\n value: function _extractText() {\n var _this2 = this;\n\n if (this._extractTextPromises.length > 0) {\n return;\n }\n var promise = Promise.resolve();\n\n var _loop = function _loop(i, ii) {\n var extractTextCapability = (0, _pdfjsLib.createPromiseCapability)();\n _this2._extractTextPromises[i] = extractTextCapability.promise;\n promise = promise.then(function () {\n return _this2._pdfDocument.getPage(i + 1).then(function (pdfPage) {\n return pdfPage.getTextContent({ normalizeWhitespace: true });\n }).then(function (textContent) {\n var textItems = textContent.items;\n var strBuf = [];\n for (var j = 0, jj = textItems.length; j < jj; j++) {\n strBuf.push(textItems[j].str);\n }\n _this2._pageContents[i] = strBuf.join('');\n extractTextCapability.resolve(i);\n }, function (reason) {\n console.error('Unable to get text content for page ' + (i + 1), reason);\n _this2._pageContents[i] = '';\n extractTextCapability.resolve(i);\n });\n });\n };\n\n for (var i = 0, ii = this._linkService.pagesCount; i < ii; i++) {\n _loop(i, ii);\n }\n }\n }, {\n key: '_updatePage',\n value: function _updatePage(index) {\n if (this._selected.pageIdx === index) {\n this._linkService.page = index + 1;\n }\n this._eventBus.dispatch('updatetextlayermatches', {\n source: this,\n pageIndex: index\n });\n }\n }, {\n key: '_nextMatch',\n value: function _nextMatch() {\n var _this3 = this;\n\n var previous = this._state.findPrevious;\n var currentPageIndex = this._linkService.page - 1;\n var numPages = this._linkService.pagesCount;\n this._highlightMatches = true;\n if (this._dirtyMatch) {\n this._dirtyMatch = false;\n this._selected.pageIdx = this._selected.matchIdx = -1;\n this._offset.pageIdx = currentPageIndex;\n this._offset.matchIdx = null;\n this._resumePageIdx = null;\n this._pageMatches.length = 0;\n this._pageMatchesLength = null;\n this._matchesCountTotal = 0;\n for (var i = 0; i < numPages; i++) {\n this._updatePage(i);\n if (!(i in this._pendingFindMatches)) {\n this._pendingFindMatches[i] = true;\n this._extractTextPromises[i].then(function (pageIdx) {\n delete _this3._pendingFindMatches[pageIdx];\n _this3._calculateMatch(pageIdx);\n });\n }\n }\n }\n if (this._state.query === '') {\n this._updateUIState(FindState.FOUND);\n return;\n }\n if (this._resumePageIdx) {\n return;\n }\n var offset = this._offset;\n this._pagesToSearch = numPages;\n if (offset.matchIdx !== null) {\n var numPageMatches = this._pageMatches[offset.pageIdx].length;\n if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) {\n offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;\n this._updateMatch(true);\n return;\n }\n this._advanceOffsetPage(previous);\n }\n this._nextPageMatch();\n }\n }, {\n key: '_matchesReady',\n value: function _matchesReady(matches) {\n var offset = this._offset;\n var numMatches = matches.length;\n var previous = this._state.findPrevious;\n if (numMatches) {\n offset.matchIdx = previous ? numMatches - 1 : 0;\n this._updateMatch(true);\n return true;\n }\n this._advanceOffsetPage(previous);\n if (offset.wrapped) {\n offset.matchIdx = null;\n if (this._pagesToSearch < 0) {\n this._updateMatch(false);\n return true;\n }\n }\n return false;\n }\n }, {\n key: '_nextPageMatch',\n value: function _nextPageMatch() {\n if (this._resumePageIdx !== null) {\n console.error('There can only be one pending page.');\n }\n var matches = null;\n do {\n var pageIdx = this._offset.pageIdx;\n matches = this._pageMatches[pageIdx];\n if (!matches) {\n this._resumePageIdx = pageIdx;\n break;\n }\n } while (!this._matchesReady(matches));\n }\n }, {\n key: '_advanceOffsetPage',\n value: function _advanceOffsetPage(previous) {\n var offset = this._offset;\n var numPages = this._linkService.pagesCount;\n offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;\n offset.matchIdx = null;\n this._pagesToSearch--;\n if (offset.pageIdx >= numPages || offset.pageIdx < 0) {\n offset.pageIdx = previous ? numPages - 1 : 0;\n offset.wrapped = true;\n }\n }\n }, {\n key: '_updateMatch',\n value: function _updateMatch() {\n var found = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var state = FindState.NOT_FOUND;\n var wrapped = this._offset.wrapped;\n this._offset.wrapped = false;\n if (found) {\n var previousPage = this._selected.pageIdx;\n this._selected.pageIdx = this._offset.pageIdx;\n this._selected.matchIdx = this._offset.matchIdx;\n state = wrapped ? FindState.WRAPPED : FindState.FOUND;\n if (previousPage !== -1 && previousPage !== this._selected.pageIdx) {\n this._updatePage(previousPage);\n }\n }\n this._updateUIState(state, this._state.findPrevious);\n if (this._selected.pageIdx !== -1) {\n this._updatePage(this._selected.pageIdx);\n }\n }\n }, {\n key: '_onFindBarClose',\n value: function _onFindBarClose(evt) {\n var _this4 = this;\n\n var pdfDocument = this._pdfDocument;\n this._firstPageCapability.promise.then(function () {\n if (!_this4._pdfDocument || pdfDocument && _this4._pdfDocument !== pdfDocument) {\n return;\n }\n if (_this4._findTimeout) {\n clearTimeout(_this4._findTimeout);\n _this4._findTimeout = null;\n _this4._updateUIState(FindState.FOUND);\n }\n _this4._highlightMatches = false;\n _this4._eventBus.dispatch('updatetextlayermatches', {\n source: _this4,\n pageIndex: -1\n });\n });\n }\n }, {\n key: '_requestMatchesCount',\n value: function _requestMatchesCount() {\n var _selected = this._selected,\n pageIdx = _selected.pageIdx,\n matchIdx = _selected.matchIdx;\n\n var current = 0,\n total = this._matchesCountTotal;\n if (matchIdx !== -1) {\n for (var i = 0; i < pageIdx; i++) {\n current += this._pageMatches[i] && this._pageMatches[i].length || 0;\n }\n current += matchIdx + 1;\n }\n if (current < 1 || current > total) {\n current = total = 0;\n }\n return {\n current: current,\n total: total\n };\n }\n }, {\n key: '_updateUIResultsCount',\n value: function _updateUIResultsCount() {\n this._eventBus.dispatch('updatefindmatchescount', {\n source: this,\n matchesCount: this._requestMatchesCount()\n });\n }\n }, {\n key: '_updateUIState',\n value: function _updateUIState(state, previous) {\n this._eventBus.dispatch('updatefindcontrolstate', {\n source: this,\n state: state,\n previous: previous,\n matchesCount: this._requestMatchesCount()\n });\n }\n }, {\n key: 'highlightMatches',\n get: function get() {\n return this._highlightMatches;\n }\n }, {\n key: 'pageMatches',\n get: function get() {\n return this._pageMatches;\n }\n }, {\n key: 'pageMatchesLength',\n get: function get() {\n return this._pageMatchesLength;\n }\n }, {\n key: 'selected',\n get: function get() {\n return this._selected;\n }\n }, {\n key: 'state',\n get: function get() {\n return this._state;\n }\n }]);\n\n return PDFFindController;\n}();\n\nexports.FindState = FindState;\nexports.PDFFindController = PDFFindController;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar CharacterType = {\n SPACE: 0,\n ALPHA_LETTER: 1,\n PUNCT: 2,\n HAN_LETTER: 3,\n KATAKANA_LETTER: 4,\n HIRAGANA_LETTER: 5,\n HALFWIDTH_KATAKANA_LETTER: 6,\n THAI_LETTER: 7\n};\nfunction isAlphabeticalScript(charCode) {\n return charCode < 0x2E80;\n}\nfunction isAscii(charCode) {\n return (charCode & 0xFF80) === 0;\n}\nfunction isAsciiAlpha(charCode) {\n return charCode >= 0x61 && charCode <= 0x7A || charCode >= 0x41 && charCode <= 0x5A;\n}\nfunction isAsciiDigit(charCode) {\n return charCode >= 0x30 && charCode <= 0x39;\n}\nfunction isAsciiSpace(charCode) {\n return charCode === 0x20 || charCode === 0x09 || charCode === 0x0D || charCode === 0x0A;\n}\nfunction isHan(charCode) {\n return charCode >= 0x3400 && charCode <= 0x9FFF || charCode >= 0xF900 && charCode <= 0xFAFF;\n}\nfunction isKatakana(charCode) {\n return charCode >= 0x30A0 && charCode <= 0x30FF;\n}\nfunction isHiragana(charCode) {\n return charCode >= 0x3040 && charCode <= 0x309F;\n}\nfunction isHalfwidthKatakana(charCode) {\n return charCode >= 0xFF60 && charCode <= 0xFF9F;\n}\nfunction isThai(charCode) {\n return (charCode & 0xFF80) === 0x0E00;\n}\nfunction getCharacterType(charCode) {\n if (isAlphabeticalScript(charCode)) {\n if (isAscii(charCode)) {\n if (isAsciiSpace(charCode)) {\n return CharacterType.SPACE;\n } else if (isAsciiAlpha(charCode) || isAsciiDigit(charCode) || charCode === 0x5F) {\n return CharacterType.ALPHA_LETTER;\n }\n return CharacterType.PUNCT;\n } else if (isThai(charCode)) {\n return CharacterType.THAI_LETTER;\n } else if (charCode === 0xA0) {\n return CharacterType.SPACE;\n }\n return CharacterType.ALPHA_LETTER;\n }\n if (isHan(charCode)) {\n return CharacterType.HAN_LETTER;\n } else if (isKatakana(charCode)) {\n return CharacterType.KATAKANA_LETTER;\n } else if (isHiragana(charCode)) {\n return CharacterType.HIRAGANA_LETTER;\n } else if (isHalfwidthKatakana(charCode)) {\n return CharacterType.HALFWIDTH_KATAKANA_LETTER;\n }\n return CharacterType.ALPHA_LETTER;\n}\nexports.CharacterType = CharacterType;\nexports.getCharacterType = getCharacterType;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isDestArraysEqual = exports.isDestHashesEqual = exports.PDFHistory = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _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; }; }();\n\nvar _ui_utils = __w_pdfjs_require__(3);\n\nvar _dom_events = __w_pdfjs_require__(9);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar HASH_CHANGE_TIMEOUT = 1000;\nvar POSITION_UPDATED_THRESHOLD = 50;\nvar UPDATE_VIEWAREA_TIMEOUT = 1000;\nfunction getCurrentHash() {\n return document.location.hash;\n}\nfunction parseCurrentHash(linkService) {\n var hash = unescape(getCurrentHash()).substring(1);\n var params = (0, _ui_utils.parseQueryString)(hash);\n var page = params.page | 0;\n if (!(Number.isInteger(page) && page > 0 && page <= linkService.pagesCount)) {\n page = null;\n }\n return {\n hash: hash,\n page: page,\n rotation: linkService.rotation\n };\n}\n\nvar PDFHistory = function () {\n function PDFHistory(_ref) {\n var _this = this;\n\n var linkService = _ref.linkService,\n eventBus = _ref.eventBus;\n\n _classCallCheck(this, PDFHistory);\n\n this.linkService = linkService;\n this.eventBus = eventBus || (0, _dom_events.getGlobalEventBus)();\n this.initialized = false;\n this.initialBookmark = null;\n this.initialRotation = null;\n this._boundEvents = Object.create(null);\n this._isViewerInPresentationMode = false;\n this._isPagesLoaded = false;\n this.eventBus.on('presentationmodechanged', function (evt) {\n _this._isViewerInPresentationMode = evt.active || evt.switchInProgress;\n });\n this.eventBus.on('pagesloaded', function (evt) {\n _this._isPagesLoaded = !!evt.pagesCount;\n });\n }\n\n _createClass(PDFHistory, [{\n key: 'initialize',\n value: function initialize(fingerprint) {\n var resetHistory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!fingerprint || typeof fingerprint !== 'string') {\n console.error('PDFHistory.initialize: The \"fingerprint\" must be a non-empty string.');\n return;\n }\n var reInitialized = this.initialized && this.fingerprint !== fingerprint;\n this.fingerprint = fingerprint;\n if (!this.initialized) {\n this._bindEvents();\n }\n var state = window.history.state;\n this.initialized = true;\n this.initialBookmark = null;\n this.initialRotation = null;\n this._popStateInProgress = false;\n this._blockHashChange = 0;\n this._currentHash = getCurrentHash();\n this._numPositionUpdates = 0;\n this._uid = this._maxUid = 0;\n this._destination = null;\n this._position = null;\n if (!this._isValidState(state) || resetHistory) {\n var _parseCurrentHash = parseCurrentHash(this.linkService),\n hash = _parseCurrentHash.hash,\n page = _parseCurrentHash.page,\n rotation = _parseCurrentHash.rotation;\n\n if (!hash || reInitialized || resetHistory) {\n this._pushOrReplaceState(null, true);\n return;\n }\n this._pushOrReplaceState({\n hash: hash,\n page: page,\n rotation: rotation\n }, true);\n return;\n }\n var destination = state.destination;\n this._updateInternalState(destination, state.uid, true);\n if (this._uid > this._maxUid) {\n this._maxUid = this._uid;\n }\n if (destination.rotation !== undefined) {\n this.initialRotation = destination.rotation;\n }\n if (destination.dest) {\n this.initialBookmark = JSON.stringify(destination.dest);\n this._destination.page = null;\n } else if (destination.hash) {\n this.initialBookmark = destination.hash;\n } else if (destination.page) {\n this.initialBookmark = 'page=' + destination.page;\n }\n }\n }, {\n key: 'push',\n value: function push(_ref2) {\n var _this2 = this;\n\n var namedDest = _ref2.namedDest,\n explicitDest = _ref2.explicitDest,\n pageNumber = _ref2.pageNumber;\n\n if (!this.initialized) {\n return;\n }\n if (namedDest && typeof namedDest !== 'string' || !Array.isArray(explicitDest) || !(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.linkService.pagesCount)) {\n console.error('PDFHistory.push: Invalid parameters.');\n return;\n }\n var hash = namedDest || JSON.stringify(explicitDest);\n if (!hash) {\n return;\n }\n var forceReplace = false;\n if (this._destination && (isDestHashesEqual(this._destination.hash, hash) || isDestArraysEqual(this._destination.dest, explicitDest))) {\n if (this._destination.page) {\n return;\n }\n forceReplace = true;\n }\n if (this._popStateInProgress && !forceReplace) {\n return;\n }\n this._pushOrReplaceState({\n dest: explicitDest,\n hash: hash,\n page: pageNumber,\n rotation: this.linkService.rotation\n }, forceReplace);\n if (!this._popStateInProgress) {\n this._popStateInProgress = true;\n Promise.resolve().then(function () {\n _this2._popStateInProgress = false;\n });\n }\n }\n }, {\n key: 'pushCurrentPosition',\n value: function pushCurrentPosition() {\n if (!this.initialized || this._popStateInProgress) {\n return;\n }\n this._tryPushCurrentPosition();\n }\n }, {\n key: 'back',\n value: function back() {\n if (!this.initialized || this._popStateInProgress) {\n return;\n }\n var state = window.history.state;\n if (this._isValidState(state) && state.uid > 0) {\n window.history.back();\n }\n }\n }, {\n key: 'forward',\n value: function forward() {\n if (!this.initialized || this._popStateInProgress) {\n return;\n }\n var state = window.history.state;\n if (this._isValidState(state) && state.uid < this._maxUid) {\n window.history.forward();\n }\n }\n }, {\n key: '_pushOrReplaceState',\n value: function _pushOrReplaceState(destination) {\n var forceReplace = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var shouldReplace = forceReplace || !this._destination;\n var newState = {\n fingerprint: this.fingerprint,\n uid: shouldReplace ? this._uid : this._uid + 1,\n destination: destination\n };\n this._updateInternalState(destination, newState.uid);\n if (shouldReplace) {\n window.history.replaceState(newState, '');\n } else {\n this._maxUid = this._uid;\n window.history.pushState(newState, '');\n }\n }\n }, {\n key: '_tryPushCurrentPosition',\n value: function _tryPushCurrentPosition() {\n var temporary = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (!this._position) {\n return;\n }\n var position = this._position;\n if (temporary) {\n position = Object.assign(Object.create(null), this._position);\n position.temporary = true;\n }\n if (!this._destination) {\n this._pushOrReplaceState(position);\n return;\n }\n if (this._destination.temporary) {\n this._pushOrReplaceState(position, true);\n return;\n }\n if (this._destination.hash === position.hash) {\n return;\n }\n if (!this._destination.page && (POSITION_UPDATED_THRESHOLD <= 0 || this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)) {\n return;\n }\n var forceReplace = false;\n if (this._destination.page === position.first || this._destination.page === position.page) {\n if (this._destination.dest || !this._destination.first) {\n return;\n }\n forceReplace = true;\n }\n this._pushOrReplaceState(position, forceReplace);\n }\n }, {\n key: '_isValidState',\n value: function _isValidState(state) {\n if (!state) {\n return false;\n }\n if (state.fingerprint !== this.fingerprint) {\n return false;\n }\n if (!Number.isInteger(state.uid) || state.uid < 0) {\n return false;\n }\n if (state.destination === null || _typeof(state.destination) !== 'object') {\n return false;\n }\n return true;\n }\n }, {\n key: '_updateInternalState',\n value: function _updateInternalState(destination, uid) {\n var removeTemporary = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (this._updateViewareaTimeout) {\n clearTimeout(this._updateViewareaTimeout);\n this._updateViewareaTimeout = null;\n }\n if (removeTemporary && destination && destination.temporary) {\n delete destination.temporary;\n }\n this._destination = destination;\n this._uid = uid;\n this._numPositionUpdates = 0;\n }\n }, {\n key: '_updateViewarea',\n value: function _updateViewarea(_ref3) {\n var _this3 = this;\n\n var location = _ref3.location;\n\n if (this._updateViewareaTimeout) {\n clearTimeout(this._updateViewareaTimeout);\n this._updateViewareaTimeout = null;\n }\n this._position = {\n hash: this._isViewerInPresentationMode ? 'page=' + location.pageNumber : location.pdfOpenParams.substring(1),\n page: this.linkService.page,\n first: location.pageNumber,\n rotation: location.rotation\n };\n if (this._popStateInProgress) {\n return;\n }\n if (POSITION_UPDATED_THRESHOLD > 0 && this._isPagesLoaded && this._destination && !this._destination.page) {\n this._numPositionUpdates++;\n }\n if (UPDATE_VIEWAREA_TIMEOUT > 0) {\n this._updateViewareaTimeout = setTimeout(function () {\n if (!_this3._popStateInProgress) {\n _this3._tryPushCurrentPosition(true);\n }\n _this3._updateViewareaTimeout = null;\n }, UPDATE_VIEWAREA_TIMEOUT);\n }\n }\n }, {\n key: '_popState',\n value: function _popState(_ref4) {\n var _this4 = this;\n\n var state = _ref4.state;\n\n var newHash = getCurrentHash(),\n hashChanged = this._currentHash !== newHash;\n this._currentHash = newHash;\n if (!state || false) {\n this._uid++;\n\n var _parseCurrentHash2 = parseCurrentHash(this.linkService),\n hash = _parseCurrentHash2.hash,\n page = _parseCurrentHash2.page,\n rotation = _parseCurrentHash2.rotation;\n\n this._pushOrReplaceState({\n hash: hash,\n page: page,\n rotation: rotation\n }, true);\n return;\n }\n if (!this._isValidState(state)) {\n return;\n }\n this._popStateInProgress = true;\n if (hashChanged) {\n this._blockHashChange++;\n (0, _ui_utils.waitOnEventOrTimeout)({\n target: window,\n name: 'hashchange',\n delay: HASH_CHANGE_TIMEOUT\n }).then(function () {\n _this4._blockHashChange--;\n });\n }\n var destination = state.destination;\n this._updateInternalState(destination, state.uid, true);\n if (this._uid > this._maxUid) {\n this._maxUid = this._uid;\n }\n if ((0, _ui_utils.isValidRotation)(destination.rotation)) {\n this.linkService.rotation = destination.rotation;\n }\n if (destination.dest) {\n this.linkService.navigateTo(destination.dest);\n } else if (destination.hash) {\n this.linkService.setHash(destination.hash);\n } else if (destination.page) {\n this.linkService.page = destination.page;\n }\n Promise.resolve().then(function () {\n _this4._popStateInProgress = false;\n });\n }\n }, {\n key: '_bindEvents',\n value: function _bindEvents() {\n var _this5 = this;\n\n var _boundEvents = this._boundEvents,\n eventBus = this.eventBus;\n\n _boundEvents.updateViewarea = this._updateViewarea.bind(this);\n _boundEvents.popState = this._popState.bind(this);\n _boundEvents.pageHide = function (evt) {\n if (!_this5._destination || _this5._destination.temporary) {\n _this5._tryPushCurrentPosition();\n }\n };\n eventBus.on('updateviewarea', _boundEvents.updateViewarea);\n window.addEventListener('popstate', _boundEvents.popState);\n window.addEventListener('pagehide', _boundEvents.pageHide);\n }\n }, {\n key: 'popStateInProgress',\n get: function get() {\n return this.initialized && (this._popStateInProgress || this._blockHashChange > 0);\n }\n }]);\n\n return PDFHistory;\n}();\n\nfunction isDestHashesEqual(destHash, pushHash) {\n if (typeof destHash !== 'string' || typeof pushHash !== 'string') {\n return false;\n }\n if (destHash === pushHash) {\n return true;\n }\n\n var _parseQueryString = (0, _ui_utils.parseQueryString)(destHash),\n nameddest = _parseQueryString.nameddest;\n\n if (nameddest === pushHash) {\n return true;\n }\n return false;\n}\nfunction isDestArraysEqual(firstDest, secondDest) {\n function isEntryEqual(first, second) {\n if ((typeof first === 'undefined' ? 'undefined' : _typeof(first)) !== (typeof second === 'undefined' ? 'undefined' : _typeof(second))) {\n return false;\n }\n if (Array.isArray(first) || Array.isArray(second)) {\n return false;\n }\n if (first !== null && (typeof first === 'undefined' ? 'undefined' : _typeof(first)) === 'object' && second !== null) {\n if (Object.keys(first).length !== Object.keys(second).length) {\n return false;\n }\n for (var key in first) {\n if (!isEntryEqual(first[key], second[key])) {\n return false;\n }\n }\n return true;\n }\n return first === second || Number.isNaN(first) && Number.isNaN(second);\n }\n if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) {\n return false;\n }\n if (firstDest.length !== secondDest.length) {\n return false;\n }\n for (var i = 0, ii = firstDest.length; i < ii; i++) {\n if (!isEntryEqual(firstDest[i], secondDest[i])) {\n return false;\n }\n }\n return true;\n}\nexports.PDFHistory = PDFHistory;\nexports.isDestHashesEqual = isDestHashesEqual;\nexports.isDestArraysEqual = isDestArraysEqual;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFPageView = undefined;\n\nvar _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; }; }();\n\nvar _ui_utils = __w_pdfjs_require__(3);\n\nvar _pdfjsLib = __w_pdfjs_require__(2);\n\nvar _dom_events = __w_pdfjs_require__(9);\n\nvar _pdf_rendering_queue = __w_pdfjs_require__(18);\n\nvar _viewer_compatibility = __w_pdfjs_require__(19);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MAX_CANVAS_PIXELS = _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels || 16777216;\n\nvar PDFPageView = function () {\n function PDFPageView(options) {\n _classCallCheck(this, PDFPageView);\n\n var container = options.container;\n var defaultViewport = options.defaultViewport;\n this.id = options.id;\n this.renderingId = 'page' + this.id;\n this.pdfPage = null;\n this.pageLabel = null;\n this.rotation = 0;\n this.scale = options.scale || _ui_utils.DEFAULT_SCALE;\n this.viewport = defaultViewport;\n this.pdfPageRotate = defaultViewport.rotation;\n this.hasRestrictedScaling = false;\n this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE;\n this.imageResourcesPath = options.imageResourcesPath || '';\n this.renderInteractiveForms = options.renderInteractiveForms || false;\n this.useOnlyCssZoom = options.useOnlyCssZoom || false;\n this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS;\n this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)();\n this.renderingQueue = options.renderingQueue;\n this.textLayerFactory = options.textLayerFactory;\n this.annotationLayerFactory = options.annotationLayerFactory;\n this.renderer = options.renderer || _ui_utils.RendererType.CANVAS;\n this.enableWebGL = options.enableWebGL || false;\n this.l10n = options.l10n || _ui_utils.NullL10n;\n this.paintTask = null;\n this.paintedViewportMap = new WeakMap();\n this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;\n this.resume = null;\n this.error = null;\n this.onBeforeDraw = null;\n this.onAfterDraw = null;\n this.annotationLayer = null;\n this.textLayer = null;\n this.zoomLayer = null;\n var div = document.createElement('div');\n div.className = 'page';\n div.style.width = Math.floor(this.viewport.width) + 'px';\n div.style.height = Math.floor(this.viewport.height) + 'px';\n div.setAttribute('data-page-number', this.id);\n this.div = div;\n container.appendChild(div);\n }\n\n _createClass(PDFPageView, [{\n key: 'setPdfPage',\n value: function setPdfPage(pdfPage) {\n this.pdfPage = pdfPage;\n this.pdfPageRotate = pdfPage.rotate;\n var totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = pdfPage.getViewport(this.scale * _ui_utils.CSS_UNITS, totalRotation);\n this.stats = pdfPage.stats;\n this.reset();\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.reset();\n if (this.pdfPage) {\n this.pdfPage.cleanup();\n }\n }\n }, {\n key: '_resetZoomLayer',\n value: function _resetZoomLayer() {\n var removeFromDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (!this.zoomLayer) {\n return;\n }\n var zoomLayerCanvas = this.zoomLayer.firstChild;\n this.paintedViewportMap.delete(zoomLayerCanvas);\n zoomLayerCanvas.width = 0;\n zoomLayerCanvas.height = 0;\n if (removeFromDOM) {\n this.zoomLayer.remove();\n }\n this.zoomLayer = null;\n }\n }, {\n key: 'reset',\n value: function reset() {\n var keepZoomLayer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var keepAnnotations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n this.cancelRendering(keepAnnotations);\n var div = this.div;\n div.style.width = Math.floor(this.viewport.width) + 'px';\n div.style.height = Math.floor(this.viewport.height) + 'px';\n var childNodes = div.childNodes;\n var currentZoomLayerNode = keepZoomLayer && this.zoomLayer || null;\n var currentAnnotationNode = keepAnnotations && this.annotationLayer && this.annotationLayer.div || null;\n for (var i = childNodes.length - 1; i >= 0; i--) {\n var node = childNodes[i];\n if (currentZoomLayerNode === node || currentAnnotationNode === node) {\n continue;\n }\n div.removeChild(node);\n }\n div.removeAttribute('data-loaded');\n if (currentAnnotationNode) {\n this.annotationLayer.hide();\n } else if (this.annotationLayer) {\n this.annotationLayer.cancel();\n this.annotationLayer = null;\n }\n if (!currentZoomLayerNode) {\n if (this.canvas) {\n this.paintedViewportMap.delete(this.canvas);\n this.canvas.width = 0;\n this.canvas.height = 0;\n delete this.canvas;\n }\n this._resetZoomLayer();\n }\n if (this.svg) {\n this.paintedViewportMap.delete(this.svg);\n delete this.svg;\n }\n this.loadingIconDiv = document.createElement('div');\n this.loadingIconDiv.className = 'loadingIcon';\n div.appendChild(this.loadingIconDiv);\n }\n }, {\n key: 'update',\n value: function update(scale, rotation) {\n this.scale = scale || this.scale;\n if (typeof rotation !== 'undefined') {\n this.rotation = rotation;\n }\n var totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = this.viewport.clone({\n scale: this.scale * _ui_utils.CSS_UNITS,\n rotation: totalRotation\n });\n if (this.svg) {\n this.cssTransform(this.svg, true);\n this.eventBus.dispatch('pagerendered', {\n source: this,\n pageNumber: this.id,\n cssTransform: true\n });\n return;\n }\n var isScalingRestricted = false;\n if (this.canvas && this.maxCanvasPixels > 0) {\n var outputScale = this.outputScale;\n if ((Math.floor(this.viewport.width) * outputScale.sx | 0) * (Math.floor(this.viewport.height) * outputScale.sy | 0) > this.maxCanvasPixels) {\n isScalingRestricted = true;\n }\n }\n if (this.canvas) {\n if (this.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted) {\n this.cssTransform(this.canvas, true);\n this.eventBus.dispatch('pagerendered', {\n source: this,\n pageNumber: this.id,\n cssTransform: true\n });\n return;\n }\n if (!this.zoomLayer && !this.canvas.hasAttribute('hidden')) {\n this.zoomLayer = this.canvas.parentNode;\n this.zoomLayer.style.position = 'absolute';\n }\n }\n if (this.zoomLayer) {\n this.cssTransform(this.zoomLayer.firstChild);\n }\n this.reset(true, true);\n }\n }, {\n key: 'cancelRendering',\n value: function cancelRendering() {\n var keepAnnotations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var renderingState = this.renderingState;\n if (this.paintTask) {\n this.paintTask.cancel();\n this.paintTask = null;\n }\n this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;\n this.resume = null;\n if (this.textLayer) {\n this.textLayer.cancel();\n this.textLayer = null;\n }\n if (!keepAnnotations && this.annotationLayer) {\n this.annotationLayer.cancel();\n this.annotationLayer = null;\n }\n if (renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) {\n this.eventBus.dispatch('pagecancelled', {\n source: this,\n pageNumber: this.id,\n renderingState: renderingState\n });\n }\n }\n }, {\n key: 'cssTransform',\n value: function cssTransform(target) {\n var redrawAnnotations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var width = this.viewport.width;\n var height = this.viewport.height;\n var div = this.div;\n target.style.width = target.parentNode.style.width = div.style.width = Math.floor(width) + 'px';\n target.style.height = target.parentNode.style.height = div.style.height = Math.floor(height) + 'px';\n var relativeRotation = this.viewport.rotation - this.paintedViewportMap.get(target).rotation;\n var absRotation = Math.abs(relativeRotation);\n var scaleX = 1,\n scaleY = 1;\n if (absRotation === 90 || absRotation === 270) {\n scaleX = height / width;\n scaleY = width / height;\n }\n var cssTransform = 'rotate(' + relativeRotation + 'deg) ' + 'scale(' + scaleX + ',' + scaleY + ')';\n target.style.transform = cssTransform;\n if (this.textLayer) {\n var textLayerViewport = this.textLayer.viewport;\n var textRelativeRotation = this.viewport.rotation - textLayerViewport.rotation;\n var textAbsRotation = Math.abs(textRelativeRotation);\n var scale = width / textLayerViewport.width;\n if (textAbsRotation === 90 || textAbsRotation === 270) {\n scale = width / textLayerViewport.height;\n }\n var textLayerDiv = this.textLayer.textLayerDiv;\n var transX = void 0,\n transY = void 0;\n switch (textAbsRotation) {\n case 0:\n transX = transY = 0;\n break;\n case 90:\n transX = 0;\n transY = '-' + textLayerDiv.style.height;\n break;\n case 180:\n transX = '-' + textLayerDiv.style.width;\n transY = '-' + textLayerDiv.style.height;\n break;\n case 270:\n transX = '-' + textLayerDiv.style.width;\n transY = 0;\n break;\n default:\n console.error('Bad rotation value.');\n break;\n }\n textLayerDiv.style.transform = 'rotate(' + textAbsRotation + 'deg) ' + 'scale(' + scale + ', ' + scale + ') ' + 'translate(' + transX + ', ' + transY + ')';\n textLayerDiv.style.transformOrigin = '0% 0%';\n }\n if (redrawAnnotations && this.annotationLayer) {\n this.annotationLayer.render(this.viewport, 'display');\n }\n }\n }, {\n key: 'getPagePoint',\n value: function getPagePoint(x, y) {\n return this.viewport.convertToPdfPoint(x, y);\n }\n }, {\n key: 'draw',\n value: function draw() {\n var _this = this;\n\n if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) {\n console.error('Must be in new state before drawing');\n this.reset();\n }\n if (!this.pdfPage) {\n this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;\n return Promise.reject(new Error('Page is not loaded'));\n }\n this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING;\n var pdfPage = this.pdfPage;\n var div = this.div;\n var canvasWrapper = document.createElement('div');\n canvasWrapper.style.width = div.style.width;\n canvasWrapper.style.height = div.style.height;\n canvasWrapper.classList.add('canvasWrapper');\n if (this.annotationLayer && this.annotationLayer.div) {\n div.insertBefore(canvasWrapper, this.annotationLayer.div);\n } else {\n div.appendChild(canvasWrapper);\n }\n var textLayer = null;\n if (this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE && this.textLayerFactory) {\n var textLayerDiv = document.createElement('div');\n textLayerDiv.className = 'textLayer';\n textLayerDiv.style.width = canvasWrapper.style.width;\n textLayerDiv.style.height = canvasWrapper.style.height;\n if (this.annotationLayer && this.annotationLayer.div) {\n div.insertBefore(textLayerDiv, this.annotationLayer.div);\n } else {\n div.appendChild(textLayerDiv);\n }\n textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, this.id - 1, this.viewport, this.textLayerMode === _ui_utils.TextLayerMode.ENABLE_ENHANCE);\n }\n this.textLayer = textLayer;\n var renderContinueCallback = null;\n if (this.renderingQueue) {\n renderContinueCallback = function renderContinueCallback(cont) {\n if (!_this.renderingQueue.isHighestPriority(_this)) {\n _this.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED;\n _this.resume = function () {\n _this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING;\n cont();\n };\n return;\n }\n cont();\n };\n }\n var finishPaintTask = function finishPaintTask(error) {\n if (paintTask === _this.paintTask) {\n _this.paintTask = null;\n }\n if (error instanceof _pdfjsLib.RenderingCancelledException) {\n _this.error = null;\n return Promise.resolve(undefined);\n }\n _this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;\n if (_this.loadingIconDiv) {\n div.removeChild(_this.loadingIconDiv);\n delete _this.loadingIconDiv;\n }\n _this._resetZoomLayer(true);\n _this.error = error;\n _this.stats = pdfPage.stats;\n if (_this.onAfterDraw) {\n _this.onAfterDraw();\n }\n _this.eventBus.dispatch('pagerendered', {\n source: _this,\n pageNumber: _this.id,\n cssTransform: false\n });\n if (error) {\n return Promise.reject(error);\n }\n return Promise.resolve(undefined);\n };\n var paintTask = this.renderer === _ui_utils.RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper);\n paintTask.onRenderContinue = renderContinueCallback;\n this.paintTask = paintTask;\n var resultPromise = paintTask.promise.then(function () {\n return finishPaintTask(null).then(function () {\n if (textLayer) {\n var readableStream = pdfPage.streamTextContent({ normalizeWhitespace: true });\n textLayer.setTextContentStream(readableStream);\n textLayer.render();\n }\n });\n }, function (reason) {\n return finishPaintTask(reason);\n });\n if (this.annotationLayerFactory) {\n if (!this.annotationLayer) {\n this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, this.imageResourcesPath, this.renderInteractiveForms, this.l10n);\n }\n this.annotationLayer.render(this.viewport, 'display');\n }\n div.setAttribute('data-loaded', true);\n if (this.onBeforeDraw) {\n this.onBeforeDraw();\n }\n return resultPromise;\n }\n }, {\n key: 'paintOnCanvas',\n value: function paintOnCanvas(canvasWrapper) {\n var renderCapability = (0, _pdfjsLib.createPromiseCapability)();\n var result = {\n promise: renderCapability.promise,\n onRenderContinue: function onRenderContinue(cont) {\n cont();\n },\n cancel: function cancel() {\n renderTask.cancel();\n }\n };\n var viewport = this.viewport;\n var canvas = document.createElement('canvas');\n canvas.id = this.renderingId;\n canvas.setAttribute('hidden', 'hidden');\n var isCanvasHidden = true;\n var showCanvas = function showCanvas() {\n if (isCanvasHidden) {\n canvas.removeAttribute('hidden');\n isCanvasHidden = false;\n }\n };\n canvasWrapper.appendChild(canvas);\n this.canvas = canvas;\n canvas.mozOpaque = true;\n var ctx = canvas.getContext('2d', { alpha: false });\n var outputScale = (0, _ui_utils.getOutputScale)(ctx);\n this.outputScale = outputScale;\n if (this.useOnlyCssZoom) {\n var actualSizeViewport = viewport.clone({ scale: _ui_utils.CSS_UNITS });\n outputScale.sx *= actualSizeViewport.width / viewport.width;\n outputScale.sy *= actualSizeViewport.height / viewport.height;\n outputScale.scaled = true;\n }\n if (this.maxCanvasPixels > 0) {\n var pixelsInViewport = viewport.width * viewport.height;\n var maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport);\n if (outputScale.sx > maxScale || outputScale.sy > maxScale) {\n outputScale.sx = maxScale;\n outputScale.sy = maxScale;\n outputScale.scaled = true;\n this.hasRestrictedScaling = true;\n } else {\n this.hasRestrictedScaling = false;\n }\n }\n var sfx = (0, _ui_utils.approximateFraction)(outputScale.sx);\n var sfy = (0, _ui_utils.approximateFraction)(outputScale.sy);\n canvas.width = (0, _ui_utils.roundToDivide)(viewport.width * outputScale.sx, sfx[0]);\n canvas.height = (0, _ui_utils.roundToDivide)(viewport.height * outputScale.sy, sfy[0]);\n canvas.style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + 'px';\n canvas.style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + 'px';\n this.paintedViewportMap.set(canvas, viewport);\n var transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0];\n var renderContext = {\n canvasContext: ctx,\n transform: transform,\n viewport: this.viewport,\n enableWebGL: this.enableWebGL,\n renderInteractiveForms: this.renderInteractiveForms\n };\n var renderTask = this.pdfPage.render(renderContext);\n renderTask.onContinue = function (cont) {\n showCanvas();\n if (result.onRenderContinue) {\n result.onRenderContinue(cont);\n } else {\n cont();\n }\n };\n renderTask.promise.then(function () {\n showCanvas();\n renderCapability.resolve(undefined);\n }, function (error) {\n showCanvas();\n renderCapability.reject(error);\n });\n return result;\n }\n }, {\n key: 'paintOnSvg',\n value: function paintOnSvg(wrapper) {\n var _this2 = this;\n\n var cancelled = false;\n var ensureNotCancelled = function ensureNotCancelled() {\n if (cancelled) {\n throw new _pdfjsLib.RenderingCancelledException('Rendering cancelled, page ' + _this2.id, 'svg');\n }\n };\n var pdfPage = this.pdfPage;\n var actualSizeViewport = this.viewport.clone({ scale: _ui_utils.CSS_UNITS });\n var promise = pdfPage.getOperatorList().then(function (opList) {\n ensureNotCancelled();\n var svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs);\n return svgGfx.getSVG(opList, actualSizeViewport).then(function (svg) {\n ensureNotCancelled();\n _this2.svg = svg;\n _this2.paintedViewportMap.set(svg, actualSizeViewport);\n svg.style.width = wrapper.style.width;\n svg.style.height = wrapper.style.height;\n _this2.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;\n wrapper.appendChild(svg);\n });\n });\n return {\n promise: promise,\n onRenderContinue: function onRenderContinue(cont) {\n cont();\n },\n cancel: function cancel() {\n cancelled = true;\n }\n };\n }\n }, {\n key: 'setPageLabel',\n value: function setPageLabel(label) {\n this.pageLabel = typeof label === 'string' ? label : null;\n if (this.pageLabel !== null) {\n this.div.setAttribute('data-page-label', this.pageLabel);\n } else {\n this.div.removeAttribute('data-page-label');\n }\n }\n }, {\n key: 'width',\n get: function get() {\n return this.viewport.width;\n }\n }, {\n key: 'height',\n get: function get() {\n return this.viewport.height;\n }\n }]);\n\n return PDFPageView;\n}();\n\nexports.PDFPageView = PDFPageView;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar CLEANUP_TIMEOUT = 30000;\nvar RenderingStates = {\n INITIAL: 0,\n RUNNING: 1,\n PAUSED: 2,\n FINISHED: 3\n};\n\nvar PDFRenderingQueue = function () {\n function PDFRenderingQueue() {\n _classCallCheck(this, PDFRenderingQueue);\n\n this.pdfViewer = null;\n this.pdfThumbnailViewer = null;\n this.onIdle = null;\n this.highestPriorityPage = null;\n this.idleTimeout = null;\n this.printing = false;\n this.isThumbnailViewEnabled = false;\n }\n\n _createClass(PDFRenderingQueue, [{\n key: \"setViewer\",\n value: function setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n }, {\n key: \"setThumbnailViewer\",\n value: function setThumbnailViewer(pdfThumbnailViewer) {\n this.pdfThumbnailViewer = pdfThumbnailViewer;\n }\n }, {\n key: \"isHighestPriority\",\n value: function isHighestPriority(view) {\n return this.highestPriorityPage === view.renderingId;\n }\n }, {\n key: \"renderHighestPriority\",\n value: function renderHighestPriority(currentlyVisiblePages) {\n if (this.idleTimeout) {\n clearTimeout(this.idleTimeout);\n this.idleTimeout = null;\n }\n if (this.pdfViewer.forceRendering(currentlyVisiblePages)) {\n return;\n }\n if (this.pdfThumbnailViewer && this.isThumbnailViewEnabled) {\n if (this.pdfThumbnailViewer.forceRendering()) {\n return;\n }\n }\n if (this.printing) {\n return;\n }\n if (this.onIdle) {\n this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT);\n }\n }\n }, {\n key: \"getHighestPriority\",\n value: function getHighestPriority(visible, views, scrolledDown) {\n var visibleViews = visible.views;\n var numVisible = visibleViews.length;\n if (numVisible === 0) {\n return false;\n }\n for (var i = 0; i < numVisible; ++i) {\n var view = visibleViews[i].view;\n if (!this.isViewFinished(view)) {\n return view;\n }\n }\n if (scrolledDown) {\n var nextPageIndex = visible.last.id;\n if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) {\n return views[nextPageIndex];\n }\n } else {\n var previousPageIndex = visible.first.id - 2;\n if (views[previousPageIndex] && !this.isViewFinished(views[previousPageIndex])) {\n return views[previousPageIndex];\n }\n }\n return null;\n }\n }, {\n key: \"isViewFinished\",\n value: function isViewFinished(view) {\n return view.renderingState === RenderingStates.FINISHED;\n }\n }, {\n key: \"renderView\",\n value: function renderView(view) {\n var _this = this;\n\n switch (view.renderingState) {\n case RenderingStates.FINISHED:\n return false;\n case RenderingStates.PAUSED:\n this.highestPriorityPage = view.renderingId;\n view.resume();\n break;\n case RenderingStates.RUNNING:\n this.highestPriorityPage = view.renderingId;\n break;\n case RenderingStates.INITIAL:\n this.highestPriorityPage = view.renderingId;\n var continueRendering = function continueRendering() {\n _this.renderHighestPriority();\n };\n view.draw().then(continueRendering, continueRendering);\n break;\n }\n return true;\n }\n }]);\n\n return PDFRenderingQueue;\n}();\n\nexports.RenderingStates = RenderingStates;\nexports.PDFRenderingQueue = PDFRenderingQueue;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar compatibilityParams = Object.create(null);\n{\n var userAgent = typeof navigator !== 'undefined' && navigator.userAgent || '';\n var isAndroid = /Android/.test(userAgent);\n var isIOS = /\\b(iPad|iPhone|iPod)(?=;)/.test(userAgent);\n (function checkCanvasSizeLimitation() {\n if (isIOS || isAndroid) {\n compatibilityParams.maxCanvasPixels = 5242880;\n }\n })();\n}\nexports.viewerCompatibilityParams = Object.freeze(compatibilityParams);\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFSinglePageViewer = undefined;\n\nvar _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; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _base_viewer = __w_pdfjs_require__(21);\n\nvar _ui_utils = __w_pdfjs_require__(3);\n\nvar _pdfjsLib = __w_pdfjs_require__(2);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _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; }\n\nvar PDFSinglePageViewer = function (_BaseViewer) {\n _inherits(PDFSinglePageViewer, _BaseViewer);\n\n function PDFSinglePageViewer(options) {\n _classCallCheck(this, PDFSinglePageViewer);\n\n var _this = _possibleConstructorReturn(this, (PDFSinglePageViewer.__proto__ || Object.getPrototypeOf(PDFSinglePageViewer)).call(this, options));\n\n _this.eventBus.on('pagesinit', function (evt) {\n _this._ensurePageViewVisible();\n });\n return _this;\n }\n\n _createClass(PDFSinglePageViewer, [{\n key: '_resetView',\n value: function _resetView() {\n _get(PDFSinglePageViewer.prototype.__proto__ || Object.getPrototypeOf(PDFSinglePageViewer.prototype), '_resetView', this).call(this);\n this._previousPageNumber = 1;\n this._shadowViewer = document.createDocumentFragment();\n }\n }, {\n key: '_ensurePageViewVisible',\n value: function _ensurePageViewVisible() {\n var pageView = this._pages[this._currentPageNumber - 1];\n var previousPageView = this._pages[this._previousPageNumber - 1];\n var viewerNodes = this.viewer.childNodes;\n switch (viewerNodes.length) {\n case 0:\n this.viewer.appendChild(pageView.div);\n break;\n case 1:\n if (viewerNodes[0] !== previousPageView.div) {\n throw new Error('_ensurePageViewVisible: Unexpected previously visible page.');\n }\n if (pageView === previousPageView) {\n break;\n }\n this._shadowViewer.appendChild(previousPageView.div);\n this.viewer.appendChild(pageView.div);\n this.container.scrollTop = 0;\n break;\n default:\n throw new Error('_ensurePageViewVisible: Only one page should be visible at a time.');\n }\n this._previousPageNumber = this._currentPageNumber;\n }\n }, {\n key: '_scrollUpdate',\n value: function _scrollUpdate() {\n if (this._updateScrollDown) {\n this._updateScrollDown();\n }\n _get(PDFSinglePageViewer.prototype.__proto__ || Object.getPrototypeOf(PDFSinglePageViewer.prototype), '_scrollUpdate', this).call(this);\n }\n }, {\n key: '_scrollIntoView',\n value: function _scrollIntoView(_ref) {\n var _this2 = this;\n\n var pageDiv = _ref.pageDiv,\n _ref$pageSpot = _ref.pageSpot,\n pageSpot = _ref$pageSpot === undefined ? null : _ref$pageSpot,\n _ref$pageNumber = _ref.pageNumber,\n pageNumber = _ref$pageNumber === undefined ? null : _ref$pageNumber;\n\n if (pageNumber) {\n this._setCurrentPageNumber(pageNumber);\n }\n var scrolledDown = this._currentPageNumber >= this._previousPageNumber;\n var previousLocation = this._location;\n this._ensurePageViewVisible();\n (0, _ui_utils.scrollIntoView)(pageDiv, pageSpot);\n this._updateScrollDown = function () {\n _this2.scroll.down = scrolledDown;\n delete _this2._updateScrollDown;\n };\n setTimeout(function () {\n if (_this2._location === previousLocation) {\n if (_this2._updateScrollDown) {\n _this2._updateScrollDown();\n }\n _this2.update();\n }\n }, 0);\n }\n }, {\n key: '_getVisiblePages',\n value: function _getVisiblePages() {\n if (!this.pagesCount) {\n return { views: [] };\n }\n var pageView = this._pages[this._currentPageNumber - 1];\n var element = pageView.div;\n var view = {\n id: pageView.id,\n x: element.offsetLeft + element.clientLeft,\n y: element.offsetTop + element.clientTop,\n view: pageView\n };\n return {\n first: view,\n last: view,\n views: [view]\n };\n }\n }, {\n key: 'update',\n value: function update() {\n var visible = this._getVisiblePages();\n var visiblePages = visible.views,\n numVisiblePages = visiblePages.length;\n if (numVisiblePages === 0) {\n return;\n }\n this._resizeBuffer(numVisiblePages);\n this.renderingQueue.renderHighestPriority(visible);\n this._updateLocation(visible.first);\n this.eventBus.dispatch('updateviewarea', {\n source: this,\n location: this._location\n });\n }\n }, {\n key: '_updateScrollMode',\n value: function _updateScrollMode() {}\n }, {\n key: '_updateSpreadMode',\n value: function _updateSpreadMode() {}\n }, {\n key: '_setDocumentViewerElement',\n get: function get() {\n return (0, _pdfjsLib.shadow)(this, '_setDocumentViewerElement', this._shadowViewer);\n }\n }, {\n key: '_isScrollModeHorizontal',\n get: function get() {\n return (0, _pdfjsLib.shadow)(this, '_isScrollModeHorizontal', false);\n }\n }]);\n\n return PDFSinglePageViewer;\n}(_base_viewer.BaseViewer);\n\nexports.PDFSinglePageViewer = PDFSinglePageViewer;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SpreadMode = exports.ScrollMode = exports.BaseViewer = undefined;\n\nvar _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; }; }();\n\nvar _ui_utils = __w_pdfjs_require__(3);\n\nvar _pdf_rendering_queue = __w_pdfjs_require__(18);\n\nvar _annotation_layer_builder = __w_pdfjs_require__(1);\n\nvar _pdfjsLib = __w_pdfjs_require__(2);\n\nvar _dom_events = __w_pdfjs_require__(9);\n\nvar _pdf_page_view = __w_pdfjs_require__(17);\n\nvar _pdf_link_service = __w_pdfjs_require__(8);\n\nvar _text_layer_builder = __w_pdfjs_require__(10);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DEFAULT_CACHE_SIZE = 10;\nvar ScrollMode = {\n VERTICAL: 0,\n HORIZONTAL: 1,\n WRAPPED: 2\n};\nvar SpreadMode = {\n NONE: 0,\n ODD: 1,\n EVEN: 2\n};\nfunction PDFPageViewBuffer(size) {\n var data = [];\n this.push = function (view) {\n var i = data.indexOf(view);\n if (i >= 0) {\n data.splice(i, 1);\n }\n data.push(view);\n if (data.length > size) {\n data.shift().destroy();\n }\n };\n this.resize = function (newSize, pagesToKeep) {\n size = newSize;\n if (pagesToKeep) {\n var pageIdsToKeep = new Set();\n for (var i = 0, iMax = pagesToKeep.length; i < iMax; ++i) {\n pageIdsToKeep.add(pagesToKeep[i].id);\n }\n (0, _ui_utils.moveToEndOfArray)(data, function (page) {\n return pageIdsToKeep.has(page.id);\n });\n }\n while (data.length > size) {\n data.shift().destroy();\n }\n };\n}\nfunction isSameScale(oldScale, newScale) {\n if (newScale === oldScale) {\n return true;\n }\n if (Math.abs(newScale - oldScale) < 1e-15) {\n return true;\n }\n return false;\n}\n\nvar BaseViewer = function () {\n function BaseViewer(options) {\n var _this = this;\n\n _classCallCheck(this, BaseViewer);\n\n if (this.constructor === BaseViewer) {\n throw new Error('Cannot initialize BaseViewer.');\n }\n this._name = this.constructor.name;\n this.container = options.container;\n this.viewer = options.viewer || options.container.firstElementChild;\n this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)();\n this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService();\n this.downloadManager = options.downloadManager || null;\n this.findController = options.findController || null;\n this.removePageBorders = options.removePageBorders || false;\n this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE;\n this.imageResourcesPath = options.imageResourcesPath || '';\n this.renderInteractiveForms = options.renderInteractiveForms || false;\n this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;\n this.renderer = options.renderer || _ui_utils.RendererType.CANVAS;\n this.enableWebGL = options.enableWebGL || false;\n this.useOnlyCssZoom = options.useOnlyCssZoom || false;\n this.maxCanvasPixels = options.maxCanvasPixels;\n this.l10n = options.l10n || _ui_utils.NullL10n;\n this.defaultRenderingQueue = !options.renderingQueue;\n if (this.defaultRenderingQueue) {\n this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();\n this.renderingQueue.setViewer(this);\n } else {\n this.renderingQueue = options.renderingQueue;\n }\n this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this));\n this.presentationModeState = _ui_utils.PresentationModeState.UNKNOWN;\n this._resetView();\n if (this.removePageBorders) {\n this.viewer.classList.add('removePageBorders');\n }\n Promise.resolve().then(function () {\n _this.eventBus.dispatch('baseviewerinit', { source: _this });\n });\n }\n\n _createClass(BaseViewer, [{\n key: 'getPageView',\n value: function getPageView(index) {\n return this._pages[index];\n }\n }, {\n key: '_setCurrentPageNumber',\n value: function _setCurrentPageNumber(val) {\n var resetCurrentPageView = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (this._currentPageNumber === val) {\n if (resetCurrentPageView) {\n this._resetCurrentPageView();\n }\n return;\n }\n if (!(0 < val && val <= this.pagesCount)) {\n console.error(this._name + '._setCurrentPageNumber: \"' + val + '\" is out of bounds.');\n return;\n }\n var arg = {\n source: this,\n pageNumber: val,\n pageLabel: this._pageLabels && this._pageLabels[val - 1]\n };\n this._currentPageNumber = val;\n this.eventBus.dispatch('pagechanging', arg);\n this.eventBus.dispatch('pagechange', arg);\n if (resetCurrentPageView) {\n this._resetCurrentPageView();\n }\n }\n }, {\n key: 'setDocument',\n value: function setDocument(pdfDocument) {\n var _this2 = this;\n\n if (this.pdfDocument) {\n this._cancelRendering();\n this._resetView();\n if (this.findController) {\n this.findController.setDocument(null);\n }\n }\n this.pdfDocument = pdfDocument;\n if (!pdfDocument) {\n return;\n }\n var pagesCount = pdfDocument.numPages;\n var pagesCapability = (0, _pdfjsLib.createPromiseCapability)();\n this.pagesPromise = pagesCapability.promise;\n pagesCapability.promise.then(function () {\n _this2._pageViewsReady = true;\n _this2.eventBus.dispatch('pagesloaded', {\n source: _this2,\n pagesCount: pagesCount\n });\n });\n var isOnePageRenderedResolved = false;\n var onePageRenderedCapability = (0, _pdfjsLib.createPromiseCapability)();\n this.onePageRendered = onePageRenderedCapability.promise;\n var bindOnAfterAndBeforeDraw = function bindOnAfterAndBeforeDraw(pageView) {\n pageView.onBeforeDraw = function () {\n _this2._buffer.push(pageView);\n };\n pageView.onAfterDraw = function () {\n if (!isOnePageRenderedResolved) {\n isOnePageRenderedResolved = true;\n onePageRenderedCapability.resolve();\n }\n };\n };\n var firstPagePromise = pdfDocument.getPage(1);\n this.firstPagePromise = firstPagePromise;\n firstPagePromise.then(function (pdfPage) {\n var scale = _this2.currentScale;\n var viewport = pdfPage.getViewport(scale * _ui_utils.CSS_UNITS);\n for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {\n var textLayerFactory = null;\n if (_this2.textLayerMode !== _ui_utils.TextLayerMode.DISABLE) {\n textLayerFactory = _this2;\n }\n var pageView = new _pdf_page_view.PDFPageView({\n container: _this2._setDocumentViewerElement,\n eventBus: _this2.eventBus,\n id: pageNum,\n scale: scale,\n defaultViewport: viewport.clone(),\n renderingQueue: _this2.renderingQueue,\n textLayerFactory: textLayerFactory,\n textLayerMode: _this2.textLayerMode,\n annotationLayerFactory: _this2,\n imageResourcesPath: _this2.imageResourcesPath,\n renderInteractiveForms: _this2.renderInteractiveForms,\n renderer: _this2.renderer,\n enableWebGL: _this2.enableWebGL,\n useOnlyCssZoom: _this2.useOnlyCssZoom,\n maxCanvasPixels: _this2.maxCanvasPixels,\n l10n: _this2.l10n\n });\n bindOnAfterAndBeforeDraw(pageView);\n _this2._pages.push(pageView);\n }\n if (_this2._spreadMode !== SpreadMode.NONE) {\n _this2._updateSpreadMode();\n }\n onePageRenderedCapability.promise.then(function () {\n if (pdfDocument.loadingParams['disableAutoFetch']) {\n pagesCapability.resolve();\n return;\n }\n var getPagesLeft = pagesCount;\n\n var _loop = function _loop(_pageNum) {\n pdfDocument.getPage(_pageNum).then(function (pdfPage) {\n var pageView = _this2._pages[_pageNum - 1];\n if (!pageView.pdfPage) {\n pageView.setPdfPage(pdfPage);\n }\n _this2.linkService.cachePageRef(_pageNum, pdfPage.ref);\n if (--getPagesLeft === 0) {\n pagesCapability.resolve();\n }\n }, function (reason) {\n console.error('Unable to get page ' + _pageNum + ' to initialize viewer', reason);\n if (--getPagesLeft === 0) {\n pagesCapability.resolve();\n }\n });\n };\n\n for (var _pageNum = 1; _pageNum <= pagesCount; ++_pageNum) {\n _loop(_pageNum);\n }\n });\n _this2.eventBus.dispatch('pagesinit', { source: _this2 });\n if (_this2.findController) {\n _this2.findController.setDocument(pdfDocument);\n }\n if (_this2.defaultRenderingQueue) {\n _this2.update();\n }\n }).catch(function (reason) {\n console.error('Unable to initialize viewer', reason);\n });\n }\n }, {\n key: 'setPageLabels',\n value: function setPageLabels(labels) {\n if (!this.pdfDocument) {\n return;\n }\n if (!labels) {\n this._pageLabels = null;\n } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) {\n this._pageLabels = null;\n console.error(this._name + '.setPageLabels: Invalid page labels.');\n } else {\n this._pageLabels = labels;\n }\n for (var i = 0, ii = this._pages.length; i < ii; i++) {\n var pageView = this._pages[i];\n var label = this._pageLabels && this._pageLabels[i];\n pageView.setPageLabel(label);\n }\n }\n }, {\n key: '_resetView',\n value: function _resetView() {\n this._pages = [];\n this._currentPageNumber = 1;\n this._currentScale = _ui_utils.UNKNOWN_SCALE;\n this._currentScaleValue = null;\n this._pageLabels = null;\n this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE);\n this._location = null;\n this._pagesRotation = 0;\n this._pagesRequests = [];\n this._pageViewsReady = false;\n this._scrollMode = ScrollMode.VERTICAL;\n this._spreadMode = SpreadMode.NONE;\n this.viewer.textContent = '';\n this._updateScrollMode();\n }\n }, {\n key: '_scrollUpdate',\n value: function _scrollUpdate() {\n if (this.pagesCount === 0) {\n return;\n }\n this.update();\n }\n }, {\n key: '_scrollIntoView',\n value: function _scrollIntoView(_ref) {\n var pageDiv = _ref.pageDiv,\n _ref$pageSpot = _ref.pageSpot,\n pageSpot = _ref$pageSpot === undefined ? null : _ref$pageSpot,\n _ref$pageNumber = _ref.pageNumber,\n pageNumber = _ref$pageNumber === undefined ? null : _ref$pageNumber;\n\n throw new Error('Not implemented: _scrollIntoView');\n }\n }, {\n key: '_setScaleDispatchEvent',\n value: function _setScaleDispatchEvent(newScale, newValue) {\n var preset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var arg = {\n source: this,\n scale: newScale,\n presetValue: preset ? newValue : undefined\n };\n this.eventBus.dispatch('scalechanging', arg);\n this.eventBus.dispatch('scalechange', arg);\n }\n }, {\n key: '_setScaleUpdatePages',\n value: function _setScaleUpdatePages(newScale, newValue) {\n var noScroll = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var preset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n this._currentScaleValue = newValue.toString();\n if (isSameScale(this._currentScale, newScale)) {\n if (preset) {\n this._setScaleDispatchEvent(newScale, newValue, true);\n }\n return;\n }\n for (var i = 0, ii = this._pages.length; i < ii; i++) {\n this._pages[i].update(newScale);\n }\n this._currentScale = newScale;\n if (!noScroll) {\n var page = this._currentPageNumber,\n dest = void 0;\n if (this._location && !(this.isInPresentationMode || this.isChangingPresentationMode)) {\n page = this._location.pageNumber;\n dest = [null, { name: 'XYZ' }, this._location.left, this._location.top, null];\n }\n this.scrollPageIntoView({\n pageNumber: page,\n destArray: dest,\n allowNegativeOffset: true\n });\n }\n this._setScaleDispatchEvent(newScale, newValue, preset);\n if (this.defaultRenderingQueue) {\n this.update();\n }\n }\n }, {\n key: '_setScale',\n value: function _setScale(value) {\n var noScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var scale = parseFloat(value);\n if (scale > 0) {\n this._setScaleUpdatePages(scale, value, noScroll, false);\n } else {\n var currentPage = this._pages[this._currentPageNumber - 1];\n if (!currentPage) {\n return;\n }\n var noPadding = this.isInPresentationMode || this.removePageBorders;\n var hPadding = noPadding ? 0 : _ui_utils.SCROLLBAR_PADDING;\n var vPadding = noPadding ? 0 : _ui_utils.VERTICAL_PADDING;\n if (!noPadding && this._isScrollModeHorizontal) {\n var _ref2 = [vPadding, hPadding];\n hPadding = _ref2[0];\n vPadding = _ref2[1];\n }\n var pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale;\n var pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale;\n switch (value) {\n case 'page-actual':\n scale = 1;\n break;\n case 'page-width':\n scale = pageWidthScale;\n break;\n case 'page-height':\n scale = pageHeightScale;\n break;\n case 'page-fit':\n scale = Math.min(pageWidthScale, pageHeightScale);\n break;\n case 'auto':\n var horizontalScale = (0, _ui_utils.isPortraitOrientation)(currentPage) ? pageWidthScale : Math.min(pageHeightScale, pageWidthScale);\n scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale);\n break;\n default:\n console.error(this._name + '._setScale: \"' + value + '\" is an unknown zoom value.');\n return;\n }\n this._setScaleUpdatePages(scale, value, noScroll, true);\n }\n }\n }, {\n key: '_resetCurrentPageView',\n value: function _resetCurrentPageView() {\n if (this.isInPresentationMode) {\n this._setScale(this._currentScaleValue, true);\n }\n var pageView = this._pages[this._currentPageNumber - 1];\n this._scrollIntoView({ pageDiv: pageView.div });\n }\n }, {\n key: 'scrollPageIntoView',\n value: function scrollPageIntoView(params) {\n if (!this.pdfDocument) {\n return;\n }\n var pageNumber = params.pageNumber || 0;\n var dest = params.destArray || null;\n var allowNegativeOffset = params.allowNegativeOffset || false;\n if (this.isInPresentationMode || !dest) {\n this._setCurrentPageNumber(pageNumber, true);\n return;\n }\n var pageView = this._pages[pageNumber - 1];\n if (!pageView) {\n console.error(this._name + '.scrollPageIntoView: Invalid \"pageNumber\" parameter.');\n return;\n }\n var x = 0,\n y = 0;\n var width = 0,\n height = 0,\n widthScale = void 0,\n heightScale = void 0;\n var changeOrientation = pageView.rotation % 180 === 0 ? false : true;\n var pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _ui_utils.CSS_UNITS;\n var pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _ui_utils.CSS_UNITS;\n var scale = 0;\n switch (dest[1].name) {\n case 'XYZ':\n x = dest[2];\n y = dest[3];\n scale = dest[4];\n x = x !== null ? x : 0;\n y = y !== null ? y : pageHeight;\n break;\n case 'Fit':\n case 'FitB':\n scale = 'page-fit';\n break;\n case 'FitH':\n case 'FitBH':\n y = dest[2];\n scale = 'page-width';\n if (y === null && this._location) {\n x = this._location.left;\n y = this._location.top;\n }\n break;\n case 'FitV':\n case 'FitBV':\n x = dest[2];\n width = pageWidth;\n height = pageHeight;\n scale = 'page-height';\n break;\n case 'FitR':\n x = dest[2];\n y = dest[3];\n width = dest[4] - x;\n height = dest[5] - y;\n var hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING;\n var vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING;\n widthScale = (this.container.clientWidth - hPadding) / width / _ui_utils.CSS_UNITS;\n heightScale = (this.container.clientHeight - vPadding) / height / _ui_utils.CSS_UNITS;\n scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));\n break;\n default:\n console.error(this._name + '.scrollPageIntoView: \"' + dest[1].name + '\" ' + 'is not a valid destination type.');\n return;\n }\n if (scale && scale !== this._currentScale) {\n this.currentScaleValue = scale;\n } else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) {\n this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;\n }\n if (scale === 'page-fit' && !dest[4]) {\n this._scrollIntoView({\n pageDiv: pageView.div,\n pageNumber: pageNumber\n });\n return;\n }\n var boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)];\n var left = Math.min(boundingRect[0][0], boundingRect[1][0]);\n var top = Math.min(boundingRect[0][1], boundingRect[1][1]);\n if (!allowNegativeOffset) {\n left = Math.max(left, 0);\n top = Math.max(top, 0);\n }\n this._scrollIntoView({\n pageDiv: pageView.div,\n pageSpot: {\n left: left,\n top: top\n },\n pageNumber: pageNumber\n });\n }\n }, {\n key: '_resizeBuffer',\n value: function _resizeBuffer(numVisiblePages, visiblePages) {\n var suggestedCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);\n this._buffer.resize(suggestedCacheSize, visiblePages);\n }\n }, {\n key: '_updateLocation',\n value: function _updateLocation(firstPage) {\n var currentScale = this._currentScale;\n var currentScaleValue = this._currentScaleValue;\n var normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue;\n var pageNumber = firstPage.id;\n var pdfOpenParams = '#page=' + pageNumber;\n pdfOpenParams += '&zoom=' + normalizedScaleValue;\n var currentPageView = this._pages[pageNumber - 1];\n var container = this.container;\n var topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y);\n var intLeft = Math.round(topLeft[0]);\n var intTop = Math.round(topLeft[1]);\n pdfOpenParams += ',' + intLeft + ',' + intTop;\n this._location = {\n pageNumber: pageNumber,\n scale: normalizedScaleValue,\n top: intTop,\n left: intLeft,\n rotation: this._pagesRotation,\n pdfOpenParams: pdfOpenParams\n };\n }\n }, {\n key: 'update',\n value: function update() {\n throw new Error('Not implemented: update');\n }\n }, {\n key: 'containsElement',\n value: function containsElement(element) {\n return this.container.contains(element);\n }\n }, {\n key: 'focus',\n value: function focus() {\n this.container.focus();\n }\n }, {\n key: '_getVisiblePages',\n value: function _getVisiblePages() {\n throw new Error('Not implemented: _getVisiblePages');\n }\n }, {\n key: 'cleanup',\n value: function cleanup() {\n for (var i = 0, ii = this._pages.length; i < ii; i++) {\n if (this._pages[i] && this._pages[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) {\n this._pages[i].reset();\n }\n }\n }\n }, {\n key: '_cancelRendering',\n value: function _cancelRendering() {\n for (var i = 0, ii = this._pages.length; i < ii; i++) {\n if (this._pages[i]) {\n this._pages[i].cancelRendering();\n }\n }\n }\n }, {\n key: '_ensurePdfPageLoaded',\n value: function _ensurePdfPageLoaded(pageView) {\n var _this3 = this;\n\n if (pageView.pdfPage) {\n return Promise.resolve(pageView.pdfPage);\n }\n var pageNumber = pageView.id;\n if (this._pagesRequests[pageNumber]) {\n return this._pagesRequests[pageNumber];\n }\n var promise = this.pdfDocument.getPage(pageNumber).then(function (pdfPage) {\n if (!pageView.pdfPage) {\n pageView.setPdfPage(pdfPage);\n }\n _this3._pagesRequests[pageNumber] = null;\n return pdfPage;\n }).catch(function (reason) {\n console.error('Unable to get page for page view', reason);\n _this3._pagesRequests[pageNumber] = null;\n });\n this._pagesRequests[pageNumber] = promise;\n return promise;\n }\n }, {\n key: 'forceRendering',\n value: function forceRendering(currentlyVisiblePages) {\n var _this4 = this;\n\n var visiblePages = currentlyVisiblePages || this._getVisiblePages();\n var scrollAhead = this._isScrollModeHorizontal ? this.scroll.right : this.scroll.down;\n var pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead);\n if (pageView) {\n this._ensurePdfPageLoaded(pageView).then(function () {\n _this4.renderingQueue.renderView(pageView);\n });\n return true;\n }\n return false;\n }\n }, {\n key: 'createTextLayerBuilder',\n value: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport) {\n var enhanceTextSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n return new _text_layer_builder.TextLayerBuilder({\n textLayerDiv: textLayerDiv,\n eventBus: this.eventBus,\n pageIndex: pageIndex,\n viewport: viewport,\n findController: this.isInPresentationMode ? null : this.findController,\n enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection\n });\n }\n }, {\n key: 'createAnnotationLayerBuilder',\n value: function createAnnotationLayerBuilder(pageDiv, pdfPage) {\n var imageResourcesPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var renderInteractiveForms = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var l10n = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _ui_utils.NullL10n;\n\n return new _annotation_layer_builder.AnnotationLayerBuilder({\n pageDiv: pageDiv,\n pdfPage: pdfPage,\n imageResourcesPath: imageResourcesPath,\n renderInteractiveForms: renderInteractiveForms,\n linkService: this.linkService,\n downloadManager: this.downloadManager,\n l10n: l10n\n });\n }\n }, {\n key: 'getPagesOverview',\n value: function getPagesOverview() {\n var pagesOverview = this._pages.map(function (pageView) {\n var viewport = pageView.pdfPage.getViewport(1);\n return {\n width: viewport.width,\n height: viewport.height,\n rotation: viewport.rotation\n };\n });\n if (!this.enablePrintAutoRotate) {\n return pagesOverview;\n }\n var isFirstPagePortrait = (0, _ui_utils.isPortraitOrientation)(pagesOverview[0]);\n return pagesOverview.map(function (size) {\n if (isFirstPagePortrait === (0, _ui_utils.isPortraitOrientation)(size)) {\n return size;\n }\n return {\n width: size.height,\n height: size.width,\n rotation: (size.rotation + 90) % 360\n };\n });\n }\n }, {\n key: '_updateScrollMode',\n value: function _updateScrollMode() {\n var pageNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n var scrollMode = this._scrollMode,\n viewer = this.viewer;\n viewer.classList.toggle('scrollHorizontal', scrollMode === ScrollMode.HORIZONTAL);\n viewer.classList.toggle('scrollWrapped', scrollMode === ScrollMode.WRAPPED);\n if (!this.pdfDocument || !pageNumber) {\n return;\n }\n if (this._currentScaleValue && isNaN(this._currentScaleValue)) {\n this._setScale(this._currentScaleValue, true);\n }\n this.scrollPageIntoView({ pageNumber: pageNumber });\n this.update();\n }\n }, {\n key: '_updateSpreadMode',\n value: function _updateSpreadMode() {\n var pageNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n if (!this.pdfDocument) {\n return;\n }\n var viewer = this.viewer,\n pages = this._pages;\n viewer.textContent = '';\n if (this._spreadMode === SpreadMode.NONE) {\n for (var i = 0, iMax = pages.length; i < iMax; ++i) {\n viewer.appendChild(pages[i].div);\n }\n } else {\n var parity = this._spreadMode - 1;\n var spread = null;\n for (var _i = 0, _iMax = pages.length; _i < _iMax; ++_i) {\n if (spread === null) {\n spread = document.createElement('div');\n spread.className = 'spread';\n viewer.appendChild(spread);\n } else if (_i % 2 === parity) {\n spread = spread.cloneNode(false);\n viewer.appendChild(spread);\n }\n spread.appendChild(pages[_i].div);\n }\n }\n if (!pageNumber) {\n return;\n }\n this.scrollPageIntoView({ pageNumber: pageNumber });\n this.update();\n }\n }, {\n key: 'pagesCount',\n get: function get() {\n return this._pages.length;\n }\n }, {\n key: 'pageViewsReady',\n get: function get() {\n return this._pageViewsReady;\n }\n }, {\n key: 'currentPageNumber',\n get: function get() {\n return this._currentPageNumber;\n },\n set: function set(val) {\n if (!Number.isInteger(val)) {\n throw new Error('Invalid page number.');\n }\n if (!this.pdfDocument) {\n return;\n }\n this._setCurrentPageNumber(val, true);\n }\n }, {\n key: 'currentPageLabel',\n get: function get() {\n return this._pageLabels && this._pageLabels[this._currentPageNumber - 1];\n },\n set: function set(val) {\n var pageNumber = val | 0;\n if (this._pageLabels) {\n var i = this._pageLabels.indexOf(val);\n if (i >= 0) {\n pageNumber = i + 1;\n }\n }\n this.currentPageNumber = pageNumber;\n }\n }, {\n key: 'currentScale',\n get: function get() {\n return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE;\n },\n set: function set(val) {\n if (isNaN(val)) {\n throw new Error('Invalid numeric scale');\n }\n if (!this.pdfDocument) {\n return;\n }\n this._setScale(val, false);\n }\n }, {\n key: 'currentScaleValue',\n get: function get() {\n return this._currentScaleValue;\n },\n set: function set(val) {\n if (!this.pdfDocument) {\n return;\n }\n this._setScale(val, false);\n }\n }, {\n key: 'pagesRotation',\n get: function get() {\n return this._pagesRotation;\n },\n set: function set(rotation) {\n if (!(0, _ui_utils.isValidRotation)(rotation)) {\n throw new Error('Invalid pages rotation angle.');\n }\n if (!this.pdfDocument) {\n return;\n }\n if (this._pagesRotation === rotation) {\n return;\n }\n this._pagesRotation = rotation;\n var pageNumber = this._currentPageNumber;\n for (var i = 0, ii = this._pages.length; i < ii; i++) {\n var pageView = this._pages[i];\n pageView.update(pageView.scale, rotation);\n }\n if (this._currentScaleValue) {\n this._setScale(this._currentScaleValue, true);\n }\n this.eventBus.dispatch('rotationchanging', {\n source: this,\n pagesRotation: rotation,\n pageNumber: pageNumber\n });\n if (this.defaultRenderingQueue) {\n this.update();\n }\n }\n }, {\n key: '_setDocumentViewerElement',\n get: function get() {\n throw new Error('Not implemented: _setDocumentViewerElement');\n }\n }, {\n key: '_isScrollModeHorizontal',\n get: function get() {\n throw new Error('Not implemented: _isScrollModeHorizontal');\n }\n }, {\n key: 'isInPresentationMode',\n get: function get() {\n return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN;\n }\n }, {\n key: 'isChangingPresentationMode',\n get: function get() {\n return this.presentationModeState === _ui_utils.PresentationModeState.CHANGING;\n }\n }, {\n key: 'isHorizontalScrollbarEnabled',\n get: function get() {\n return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth;\n }\n }, {\n key: 'isVerticalScrollbarEnabled',\n get: function get() {\n return this.isInPresentationMode ? false : this.container.scrollHeight > this.container.clientHeight;\n }\n }, {\n key: 'hasEqualPageSizes',\n get: function get() {\n var firstPageView = this._pages[0];\n for (var i = 1, ii = this._pages.length; i < ii; ++i) {\n var pageView = this._pages[i];\n if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) {\n return false;\n }\n }\n return true;\n }\n }, {\n key: 'scrollMode',\n get: function get() {\n return this._scrollMode;\n },\n set: function set(mode) {\n if (this._scrollMode === mode) {\n return;\n }\n if (!Number.isInteger(mode) || !Object.values(ScrollMode).includes(mode)) {\n throw new Error('Invalid scroll mode: ' + mode);\n }\n this._scrollMode = mode;\n this.eventBus.dispatch('scrollmodechanged', {\n source: this,\n mode: mode\n });\n this._updateScrollMode(this._currentPageNumber);\n }\n }, {\n key: 'spreadMode',\n get: function get() {\n return this._spreadMode;\n },\n set: function set(mode) {\n if (this._spreadMode === mode) {\n return;\n }\n if (!Number.isInteger(mode) || !Object.values(SpreadMode).includes(mode)) {\n throw new Error('Invalid spread mode: ' + mode);\n }\n this._spreadMode = mode;\n this.eventBus.dispatch('spreadmodechanged', {\n source: this,\n mode: mode\n });\n this._updateSpreadMode(this._currentPageNumber);\n }\n }]);\n\n return BaseViewer;\n}();\n\nexports.BaseViewer = BaseViewer;\nexports.ScrollMode = ScrollMode;\nexports.SpreadMode = SpreadMode;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFViewer = undefined;\n\nvar _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; }; }();\n\nvar _base_viewer = __w_pdfjs_require__(21);\n\nvar _ui_utils = __w_pdfjs_require__(3);\n\nvar _pdfjsLib = __w_pdfjs_require__(2);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _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; }\n\nvar PDFViewer = function (_BaseViewer) {\n _inherits(PDFViewer, _BaseViewer);\n\n function PDFViewer() {\n _classCallCheck(this, PDFViewer);\n\n return _possibleConstructorReturn(this, (PDFViewer.__proto__ || Object.getPrototypeOf(PDFViewer)).apply(this, arguments));\n }\n\n _createClass(PDFViewer, [{\n key: '_scrollIntoView',\n value: function _scrollIntoView(_ref) {\n var pageDiv = _ref.pageDiv,\n _ref$pageSpot = _ref.pageSpot,\n pageSpot = _ref$pageSpot === undefined ? null : _ref$pageSpot;\n\n if (!pageSpot && !this.isInPresentationMode) {\n var left = pageDiv.offsetLeft + pageDiv.clientLeft;\n var right = left + pageDiv.clientWidth;\n var _container = this.container,\n scrollLeft = _container.scrollLeft,\n clientWidth = _container.clientWidth;\n\n if (this._scrollMode === _base_viewer.ScrollMode.HORIZONTAL || left < scrollLeft || right > scrollLeft + clientWidth) {\n pageSpot = {\n left: 0,\n top: 0\n };\n }\n }\n (0, _ui_utils.scrollIntoView)(pageDiv, pageSpot);\n }\n }, {\n key: '_getVisiblePages',\n value: function _getVisiblePages() {\n if (!this.isInPresentationMode) {\n return (0, _ui_utils.getVisibleElements)(this.container, this._pages, true, this._scrollMode === _base_viewer.ScrollMode.HORIZONTAL);\n }\n var currentPage = this._pages[this._currentPageNumber - 1];\n var visible = [{\n id: currentPage.id,\n view: currentPage\n }];\n return {\n first: currentPage,\n last: currentPage,\n views: visible\n };\n }\n }, {\n key: 'update',\n value: function update() {\n var visible = this._getVisiblePages();\n var visiblePages = visible.views,\n numVisiblePages = visiblePages.length;\n if (numVisiblePages === 0) {\n return;\n }\n this._resizeBuffer(numVisiblePages, visiblePages);\n this.renderingQueue.renderHighestPriority(visible);\n var currentId = this._currentPageNumber;\n var stillFullyVisible = false;\n for (var i = 0; i < numVisiblePages; ++i) {\n var page = visiblePages[i];\n if (page.percent < 100) {\n break;\n }\n if (page.id === currentId) {\n stillFullyVisible = true;\n break;\n }\n }\n if (!stillFullyVisible) {\n currentId = visiblePages[0].id;\n }\n if (!this.isInPresentationMode) {\n this._setCurrentPageNumber(currentId);\n }\n this._updateLocation(visible.first);\n this.eventBus.dispatch('updateviewarea', {\n source: this,\n location: this._location\n });\n }\n }, {\n key: '_setDocumentViewerElement',\n get: function get() {\n return (0, _pdfjsLib.shadow)(this, '_setDocumentViewerElement', this.viewer);\n }\n }, {\n key: '_isScrollModeHorizontal',\n get: function get() {\n return this.isInPresentationMode ? false : this._scrollMode === _base_viewer.ScrollMode.HORIZONTAL;\n }\n }]);\n\n return PDFViewer;\n}(_base_viewer.BaseViewer);\n\nexports.PDFViewer = PDFViewer;\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=pdf_viewer.js.map"],"names":["isObject","obj","merge","_len","arguments","length","objects","Array","_key","reduce","result","source","Object","keys","forEach","key","isArray","concat","values","o","map","k","range","start","end","i","push","flatten","lists","x","y","from","list","findIndexes","l","a","e","findIndex","matchingFunction","union","keyFunction","acc","el","errors","INVALID_NUMBER_OF_PERIOD","DASH_EMPTY_MANIFEST","DASH_INVALID_XML","NO_BASE_URL","MISSING_SEGMENT_INFORMATION","SEGMENT_TIME_UNSPECIFIED","UNSUPPORTED_UTC_TIMING_SCHEME","urlTypeToSegment","_ref","_ref$baseUrl","baseUrl","_ref$source","_ref$range","_ref$indexRange","indexRange","segment","uri","resolvedUri","rangeStr","ranges","split","startRange","parseInt","endRange","Number","MAX_SAFE_INTEGER","byterange","offset","byteRangeToString","parseEndNumber","endNumber","isNaN","segmentRange","static","attributes","duration","_attributes$timescale","timescale","sourceDuration","periodDuration","segmentDuration","dynamic","NOW","clientOffset","availabilityStartTime","_attributes$timescale2","_attributes$periodSta","periodStart","_attributes$minimumUp","minimumUpdatePeriod","_attributes$timeShift","timeShiftBufferDepth","Infinity","now","periodStartWC","periodEndWC","segmentCount","Math","ceil","availableStart","floor","availableEnd","max","min","toSegments","number","_attributes$timescale3","_attributes$startNumb","startNumber","timeline","time","parseByDuration","type","_attributes$timescale4","_segmentRange$type","segments","index","sectionDuration","segmentsFromBase","_attributes$initializ","initialization","_attributes$indexRang","presentationTime","_attributes$number","Error","initSegment","sourceURL","segmentTimeInfo","addSidxSegmentsToPlaylist$1","playlist","sidx","startIndex","sidxByteRange","sidxEnd","mediaReferences","references","filter","r","referenceType","endList","mediaSequence","firstOffset","reference","size","referencedSize","subsegmentDuration","endIndex","SUPPORTED_MEDIA_TYPES","TIME_FUDGE","getUniqueTimelineStarts","timelineStarts","sort","b","findPlaylistWithName","playlists","name","NAME","getMediaGroupPlaylists","manifest","mediaGroupPlaylists","properties","group","label","updateMediaSequenceForPlaylist","_ref2","updateSequenceNumbers","_ref3","oldPlaylists","newPlaylists","discontinuitySequence","_ref4","oldPlaylist","firstNewSegment","oldMatchingSegmentIndex","oldSegment","abs","discontinuity","discontinuityStarts","unshift","oldMatchingSegment","positionManifestOnTimeline","_ref5","oldManifest","newManifest","generateSidxKey","mergeDiscontiguousPlaylists","mergedPlaylists","id","lang","_acc$name$segments","apply","contentProtection","addSidxSegmentsToPlaylist","sidxMapping","sidxKey","sidxMatch","addSidxSegmentsToPlaylists","formatAudioPlaylist","isAudioOnly","_attributes","BANDWIDTH","bandwidth","CODECS","codecs","targetDuration","AUDIO","SUBTITLES","formatVttPlaylist","_m3u8Attributes","m3u8Attributes","organizeAudioPlaylists","mainPlaylist","formattedPlaylists","role","value","language","roleLabel","autoselect","default","formatted","firstLabel","organizeVttPlaylists","organizeCaptionServices","captionServices","svcObj","svc","service","channel","instreamId","hasOwnProperty","aspectRatio","easyReader","formatVideoPlaylist","_attributes2","RESOLUTION","width","height","videoOnly","mimeType","contentType","audioOnly","vttOnly","_ref6","addMediaSequenceValues","_ref7","flattenMediaGroupPlaylists","mediaGroupObject","labelContents","toM3u8","_ref8","_mediaGroups","dashPlaylists","locations","_ref8$sidxMapping","previousManifest","_dashPlaylists$0$attr","suggestedPresentationDelay","videoPlaylists","audioPlaylists","vttPlaylists","captions","Boolean","allowCache","mediaGroups","VIDEO","organizedAudioGroup","organizedVttGroup","playlistTimelineStarts","_ref9","audio","subs","cc","getLiveRValue","parseByTimeline","segmentTimeline","_attributes$minimumUp2","_attributes$media","media","sIndex","S","d","repeat","segmentTime","t","count","nextS","indexOf","identifierPattern","identifierReplacement","match","identifier","format","join","constructTemplateUrl","url","replace","parseTemplateInfo","segmentsFromTemplate","templateValues","RepresentationID","Bandwidth","mapSegment","Time","presentationTimeOffset","SegmentURLToSegmentObject","segmentUrl","mediaRange","segmentsFromList","_attributes$segmentUr","segmentUrls","segmentUrlMap","segmentUrlObject","generateSegments","segmentAttributes","segmentsFn","segmentInfo","template","base","segmentsInfo","_segmentAttributes","_segmentAttributes$ti","toPlaylists","representations","findChildren","element","childNodes","tagName","getContent","textContent","trim","parseDuration","str","SECONDS_IN_YEAR","SECONDS_IN_MONTH","SECONDS_IN_DAY","SECONDS_IN_HOUR","SECONDS_IN_MIN","durationRegex","exec","_match$slice","slice","year","month","day","hour","minute","second","parseFloat","parseDate","dateRegex","test","Date","parse","parsers","mediaPresentationDuration","parsedValue","DEFAULT","parseAttributes","parseFn","keySystemsMap","buildBaseUrls","referenceUrls","baseUrlElements","baseUrlElement","getSegmentInformation","adaptationSet","segmentTemplate","segmentList","s","tag","segmentBase","segmentTimelineParentNode","segmentInitializationParentNode","segmentInitialization","inheritBaseUrls","adaptationSetAttributes","adaptationSetBaseUrls","adaptationSetSegmentInfo","representation","repBaseUrlElements","repBaseUrls","representationSegmentInfo","generateKeySystemInformation","contentProtectionNodes","node","schemeIdUri","toLowerCase","keySystem","psshNode","pssh","parseCaptionServiceMetadata","_value$split","_values","flags","undefined","_value$split2","_value$split2$","opts","opt","_opt$split","val","toRepresentations","periodAttributes","periodBaseUrls","periodSegmentInfo","roleAttributes","attrs","accessibility","labelVal","nodeValue","toAdaptationSets","mpdAttributes","mpdBaseUrls","period","adaptationSets","getPeriodStart","priorPeriodAttributes","mpdType","inheritAttributes","mpd","options","_options","_options$manifestUri","manifestUri","_options$NOW","_options$clientOffset","periodNodes","periods","priorPeriod","representationInfo","stringToMpdXml","manifestString","xml","parser","DOMParser","parseFromString","documentElement","getElementsByTagName","parseUTCTimingScheme","UTCTimingNode","method","parsedManifestInfo","parseUTCTiming","getUint64","parseSidx","data","view","DataView","buffer","byteOffset","byteLength","version","Uint8Array","subarray","referenceId","getUint32","earliestPresentationTime","referenceCount","getUint16","startsWithSap","sapType","sapDeltaTime","module","exports","secondsToVideoTs","secondsToAudioTs","videoTsToSeconds","audioTsToSeconds","audioTsToVideoTs","videoTsToAudioTs","metadataTsToSeconds","ONE_SECOND_IN_TS","seconds","sampleRate","timestamp","timelineStartPts","keepOriginalTimestamps","MAX_UINT32","pow","uint8","dv","getBigUint64","isodate","milliseconds","objProto","prototype","toStr","toString","isDate","call","isNumber","toMs","num","is","matcher","string","millis","multiple","fn","path","normalize","isFunction","normalizer","defaultNormalize","finished","loop","normalizedKey","temp","substr","charAt","child","find","del","this","root","factory","modules","installedModules","__w_pdfjs_require__","moduleId","m","c","getter","defineProperty","enumerable","get","Symbol","toStringTag","mode","__esModule","ns","create","bind","n","object","property","p","NullL10n","GenericL10n","ProgressBar","DownloadManager","EventBus","PDFFindController","PDFHistory","DefaultAnnotationLayerFactory","AnnotationLayerBuilder","DefaultTextLayerFactory","TextLayerBuilder","SimpleLinkService","PDFLinkService","PDFPageView","PDFSinglePageViewer","PDFViewer","_annotation_layer_builder","_text_layer_builder","_ui_utils","_pdf_link_service","_download_manager","_genericl10n","_pdf_find_controller","_pdf_history","_pdf_page_view","_pdf_single_page_viewer","_pdf_viewer","_createClass","defineProperties","target","props","descriptor","configurable","writable","Constructor","protoProps","staticProps","_pdfjsLib","_classCallCheck","instance","TypeError","pageDiv","pdfPage","linkService","downloadManager","_ref$imageResourcesPa","imageResourcesPath","_ref$renderInteractiv","renderInteractiveForms","_ref$l10n","l10n","div","_cancelled","viewport","_this","intent","getAnnotations","then","annotations","parameters","clone","dontFlip","page","AnnotationLayer","update","document","createElement","className","appendChild","render","translate","setAttribute","pdfjsLib","window","moveToEndOfArray","waitOnEventOrTimeout","WaitOnType","animationStarted","normalizeWheelEventDelta","binarySearchFirstItem","watchScroll","scrollIntoView","getOutputScale","approximateFraction","getPageSizeInches","roundToDivide","getVisibleElements","backtrackBeforeAllVisibleElements","parseQueryString","noContextMenuHandler","getPDFFileNameFromURL","TextLayerMode","RendererType","PresentationModeState","isPortraitOrientation","isValidRotation","VERTICAL_PADDING","SCROLLBAR_PADDING","MAX_AUTO_SCALE","UNKNOWN_SCALE","MAX_SCALE","MIN_SCALE","DEFAULT_SCALE","DEFAULT_SCALE_VALUE","CSS_UNITS","_regenerator","_regenerator2","_interopRequireDefault","_typeof","iterator","constructor","_slicedToArray","sliceIterator","arr","_arr","_n","_d","_e","_s","_i","next","done","err","_asyncToGenerator","gen","Promise","resolve","reject","step","arg","info","error","UNKNOWN","NORMAL","CHANGING","FULLSCREEN","CANVAS","SVG","DISABLE","ENABLE","ENABLE_ENHANCE","formatL10nValue","text","args","all","getLanguage","mark","_callee","wrap","_context","prev","abrupt","stop","getDirection","_callee2","_context2","_callee3","fallback","_context3","_x","_x2","_x3","_callee4","_context4","_x4","ctx","devicePixelRatio","backingStoreRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","pixelRatio","sx","sy","scaled","spot","skipOverflowHiddenElements","parent","offsetParent","offsetY","offsetTop","clientTop","offsetX","offsetLeft","clientLeft","clientHeight","scrollHeight","clientWidth","scrollWidth","getComputedStyle","overflow","dataset","_scaleY","_scaleX","top","left","scrollLeft","scrollTop","console","viewAreaElement","callback","debounceScroll","evt","rAF","requestAnimationFrame","currentX","lastX","state","right","currentY","lastY","down","_eventHandler","addEventListener","query","parts","params","ii","param","decodeURIComponent","items","condition","minIndex","maxIndex","currentIndex","currentItem","xinv","limit","x_","q","round","userUnit","rotate","_view","x1","y1","x2","y2","changeOrientation","views","elt","pageTop","scrollEl","sortByVisibility","horizontal","bottom","isElementBottomAfterViewTop","elementBottom","isElementRightAfterViewLeft","elementRight","visible","currentHeight","viewHeight","viewBottom","hiddenHeight","currentWidth","viewWidth","viewRight","hiddenWidth","percentVisible","firstVisibleElementInd","lastEdge","percent","first","last","pc","preventDefault","isDataSchema","substring","defaultFilename","warn","reURI","reFilename","splitURI","suggestedFilename","includes","ex","delta","sqrt","deltaX","deltaY","angle","atan2","PI","MOUSE_DOM_DELTA_PIXEL_MODE","MOUSE_DOM_DELTA_LINE_MODE","MOUSE_PIXELS_PER_LINE","MOUSE_LINES_PER_PAGE","deltaMode","isInteger","EVENT","TIMEOUT","_ref6$delay","delay","handler","off","eventHandler","removeEventListener","timeout","clearTimeout","on","timeoutHandler","setTimeout","_ref7$dispatchToDOM","dispatchToDOM","_listeners","_dispatchToDOM","eventName","listener","eventListeners","splice","_dispatchDOMEvent","_args5","details","event","createEvent","initCustomEvent","dispatchEvent","clamp","v","units","querySelector","bar","parentNode","style","_indeterminate","classList","add","remove","progressSize","_percent","viewer","container","scrollbarWidth","offsetWidth","body","set","_updateBar","moved","len","write","read","_read","g","Function","hadRuntime","regeneratorRuntime","getOwnPropertyNames","oldRuntime","global","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","inModule","runtime","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","setPrototypeOf","__proto__","awrap","__await","defineIteratorMethods","AsyncIterator","async","innerFn","outerFn","self","tryLocsList","iter","reverse","pop","Context","reset","skipTempReset","sent","_sent","delegate","tryEntries","resetTryEntry","rootEntry","rootRecord","completion","rval","dispatchException","exception","context","handle","loc","caught","record","entry","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","finallyEntry","complete","afterLoc","finish","thrown","delegateYield","iterable","resultName","nextLoc","protoGenerator","generator","_invoke","makeInvokeMethod","tryCatch","invoke","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","doneResult","delegateResult","maybeInvokeDelegate","return","pushTryEntry","locs","iteratorMethod","webpackPolyfill","deprecate","paths","children","_dom_events","eventBus","_ref$externalLinkTarg","externalLinkTarget","_ref$externalLinkRel","externalLinkRel","getGlobalEventBus","pdfDocument","pdfViewer","pdfHistory","_pagesRefCache","dest","goToDestination","namedDest","explicitDest","destRef","pageNumber","_cachedPageNumber","getPageIndex","pageIndex","cachePageRef","catch","pagesCount","pushCurrentPosition","scrollPageIntoView","destArray","getDestination","getAnchorUrl","escape","JSON","stringify","anchor","hash","dispatch","phraseSearch","navigateTo","nameddest","zoomArgs","zoom","zoomArg","zoomArgNumber","allowNegativeOffset","pagemode","unescape","isValidExplicitDestination","action","back","forward","pageNum","pageRef","refStr","numPages","currentPageNumber","pagesRotation","destLength","allowNull","attachDOMEventsToEventBus","cssTransform","textLayerDiv","initUIEvent","scale","presetValue","location","caseSensitive","highlightAll","findPrevious","attachmentsCount","outerContainer","active","switchInProgress","outlineCount","globalEventBus","EXPAND_DIVS_TIMEOUT","MATCH_SCROLL_OFFSET_TOP","MATCH_SCROLL_OFFSET_LEFT","_ref$findController","findController","_ref$enhanceTextSelec","enhanceTextSelection","textContentItemsStr","textContentStream","renderingDone","pageIdx","matches","textDivs","textLayerRenderTask","_boundEvents","_bindEvents","_bindMouse","endOfContent","numTextDivs","cancel","textLayerFrag","createDocumentFragment","renderTextLayer","promise","_finishRendering","updateMatches","reason","readableStream","matchesLength","iIndex","queryLen","ret","matchIdx","begin","divIdx","prevEnd","isSelectedPage","selected","selectedMatchIdx","infinity","i0","i1","isSelected","highlightSuffix","appendTextToDiv","beginText","n0","n1","fromOffset","toOffset","content","createTextNode","span","clearedUntilDivIdx","highlightMatches","pageMatches","pageMatchesLength","convertMatches","renderMatches","_this2","pageCancelled","updateTextLayerMatches","_this3","expandDivsTimer","expandTextDivs","adjustTop","getPropertyValue","divBounds","getBoundingClientRect","pageY","toFixed","DISABLE_CREATE_OBJECT_URL","apiCompatibilityParams","disableCreateObjectURL","_download","blobUrl","filename","click","href","download","_ref$disableCreateObj","createValidAbsoluteUrl","navigator","msSaveBlob","Blob","createObjectURL","blob","downloadUrl","URL","webL10n","_lang","_ready","setLanguage","gL10nData","gTextData","gTextProp","gLanguage","gMacros","gReadyState","gAsyncResourceLoading","getL10nResourceLinks","querySelectorAll","getL10nDictionary","script","innerHTML","getTranslatableChildren","getL10nAttributes","l10nId","getAttribute","l10nArgs","fireL10nReadyEvent","evtObject","initEvent","xhrLoadText","onSuccess","onFailure","xhr","XMLHttpRequest","open","overrideMimeType","onreadystatechange","readyState","status","responseText","onerror","ontimeout","send","parseResource","successCallback","failureCallback","baseURL","evalString","lastIndexOf","parseProperties","parsedPropertiesCallback","dictionary","reBlank","reComment","reSection","reImport","reSplit","parseRawLines","rawText","extendedSyntax","parsedRawLinesCallback","entries","currentLang","genericLang","skipLang","nextEntry","line","shift","loadImport","tmp","response","prop","loadLocale","clear","langLinks","langCount","dict","locales","default_locale","log","defaultLocale","anyCaseLang","onResourceLoaded","gResourceCount","L10nResourceLink","link","load","resource","getPluralRules","locales2rules","isIn","isBetween","pluralRules","getL10nData","rv","substIndexes","substArguments","reIndex","reMatch","macroName","paramName","macro","reArgs","matched_text","translateElement","getChildElementCount","found","nodeType","textNode","insertBefore","firstChild","childElementCount","translateFragment","elementCount","plural","_pluralRules","fallbackString","getData","getText","rtlList","shortCode","getReadyState","ready","once","FindState","_pdf_find_utils","FOUND","NOT_FOUND","WRAPPED","PENDING","FIND_TIMEOUT","CHARACTERS_TO_NORMALIZE","_ref$eventBus","_linkService","_eventBus","_reset","_onFindBarClose","_normalizationRegex","RegExp","_pdfDocument","_firstPageCapability","cmd","_state","_dirtyMatch","_updateUIState","_extractText","_findTimeout","_nextMatch","_highlightMatches","_pageMatches","_pageMatchesLength","_selected","_offset","_extractTextPromises","_pageContents","_matchesCountTotal","_pagesToSearch","_pendingFindMatches","_resumePageIdx","createPromiseCapability","ch","matchesWithLength","isSubTerm","currentElem","nextElem","skipped","prevElem","matchLength","startIdx","charCodeAt","getCharacterType","endIdx","_limit","pageContent","entireWord","_isEntireWord","queryArray","subquery","subqueryLen","_prepareMatches","_normalize","_calculatePhraseMatch","_calculateWordMatch","_updatePage","_nextPageMatch","pageMatchesCount","_updateUIResultsCount","_loop","extractTextCapability","getPage","getTextContent","normalizeWhitespace","textItems","strBuf","j","jj","previous","currentPageIndex","_calculateMatch","numPageMatches","_updateMatch","_advanceOffsetPage","numMatches","wrapped","_matchesReady","previousPage","_this4","current","total","matchesCount","_requestMatchesCount","CharacterType","SPACE","ALPHA_LETTER","PUNCT","HAN_LETTER","KATAKANA_LETTER","HIRAGANA_LETTER","HALFWIDTH_KATAKANA_LETTER","THAI_LETTER","isAlphabeticalScript","charCode","isAscii","isAsciiAlpha","isAsciiDigit","isAsciiSpace","isHan","isKatakana","isHiragana","isHalfwidthKatakana","isThai","isDestArraysEqual","isDestHashesEqual","HASH_CHANGE_TIMEOUT","POSITION_UPDATED_THRESHOLD","UPDATE_VIEWAREA_TIMEOUT","getCurrentHash","parseCurrentHash","rotation","initialized","initialBookmark","initialRotation","_isViewerInPresentationMode","_isPagesLoaded","fingerprint","resetHistory","reInitialized","history","_popStateInProgress","_blockHashChange","_currentHash","_numPositionUpdates","_uid","_maxUid","_destination","_position","_isValidState","_parseCurrentHash","_pushOrReplaceState","destination","_updateInternalState","uid","forceReplace","_tryPushCurrentPosition","shouldReplace","newState","replaceState","pushState","temporary","position","assign","removeTemporary","_updateViewareaTimeout","pdfOpenParams","newHash","hashChanged","setHash","_parseCurrentHash2","_this5","updateViewarea","_updateViewarea","popState","_popState","pageHide","destHash","pushHash","_parseQueryString","firstDest","secondDest","isEntryEqual","_pdf_rendering_queue","_viewer_compatibility","MAX_CANVAS_PIXELS","viewerCompatibilityParams","maxCanvasPixels","defaultViewport","renderingId","pageLabel","pdfPageRotate","hasRestrictedScaling","textLayerMode","useOnlyCssZoom","renderingQueue","textLayerFactory","annotationLayerFactory","renderer","enableWebGL","paintTask","paintedViewportMap","WeakMap","renderingState","RenderingStates","INITIAL","resume","onBeforeDraw","onAfterDraw","annotationLayer","textLayer","zoomLayer","totalRotation","getViewport","stats","cleanup","removeFromDOM","zoomLayerCanvas","delete","keepZoomLayer","keepAnnotations","cancelRendering","currentZoomLayerNode","currentAnnotationNode","removeChild","removeAttribute","hide","canvas","_resetZoomLayer","svg","loadingIconDiv","isScalingRestricted","outputScale","hasAttribute","redrawAnnotations","relativeRotation","absRotation","scaleX","scaleY","transform","textLayerViewport","textRelativeRotation","textAbsRotation","transX","transY","transformOrigin","convertToPdfPoint","FINISHED","RUNNING","canvasWrapper","createTextLayerBuilder","renderContinueCallback","cont","isHighestPriority","PAUSED","finishPaintTask","RenderingCancelledException","paintOnSvg","paintOnCanvas","onRenderContinue","resultPromise","streamTextContent","setTextContentStream","createAnnotationLayerBuilder","renderCapability","renderTask","isCanvasHidden","showCanvas","mozOpaque","getContext","alpha","actualSizeViewport","pixelsInViewport","maxScale","sfx","sfy","renderContext","canvasContext","onContinue","wrapper","cancelled","ensureNotCancelled","getOperatorList","opList","svgGfx","SVGGraphics","commonObjs","objs","getSVG","CLEANUP_TIMEOUT","PDFRenderingQueue","pdfThumbnailViewer","onIdle","highestPriorityPage","idleTimeout","printing","isThumbnailViewEnabled","currentlyVisiblePages","forceRendering","scrolledDown","visibleViews","numVisible","isViewFinished","nextPageIndex","previousPageIndex","continueRendering","renderHighestPriority","draw","compatibilityParams","userAgent","isAndroid","isIOS","freeze","_get","receiver","desc","getOwnPropertyDescriptor","_base_viewer","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","_BaseViewer","_ensurePageViewVisible","_previousPageNumber","_shadowViewer","pageView","_pages","_currentPageNumber","previousPageView","viewerNodes","_updateScrollDown","_ref$pageSpot","pageSpot","_ref$pageNumber","_setCurrentPageNumber","previousLocation","_location","scroll","_getVisiblePages","visiblePages","numVisiblePages","_resizeBuffer","_updateLocation","shadow","BaseViewer","SpreadMode","ScrollMode","DEFAULT_CACHE_SIZE","VERTICAL","HORIZONTAL","NONE","ODD","EVEN","PDFPageViewBuffer","destroy","resize","newSize","pagesToKeep","pageIdsToKeep","Set","iMax","has","isSameScale","oldScale","newScale","_name","firstElementChild","removePageBorders","enablePrintAutoRotate","defaultRenderingQueue","setViewer","_scrollUpdate","presentationModeState","_resetView","resetCurrentPageView","_pageLabels","_resetCurrentPageView","_cancelRendering","setDocument","pagesCapability","pagesPromise","_pageViewsReady","isOnePageRenderedResolved","onePageRenderedCapability","onePageRendered","bindOnAfterAndBeforeDraw","_buffer","firstPagePromise","currentScale","_setDocumentViewerElement","_spreadMode","_updateSpreadMode","loadingParams","getPagesLeft","_pageNum","setPdfPage","ref","labels","setPageLabel","_currentScale","_currentScaleValue","_pagesRotation","_pagesRequests","_scrollMode","_updateScrollMode","newValue","preset","noScroll","_setScaleDispatchEvent","isInPresentationMode","isChangingPresentationMode","_setScaleUpdatePages","currentPage","noPadding","hPadding","vPadding","_isScrollModeHorizontal","pageWidthScale","pageHeightScale","horizontalScale","_setScale","_scrollIntoView","widthScale","heightScale","pageWidth","pageHeight","currentScaleValue","boundingRect","convertToViewportPoint","suggestedCacheSize","firstPage","normalizedScaleValue","currentPageView","topLeft","getPagePoint","intLeft","intTop","contains","focus","scrollAhead","getHighestPriority","_ensurePdfPageLoaded","renderView","pagesOverview","isFirstPagePortrait","scrollMode","toggle","pages","parity","spread","_iMax","cloneNode","firstPageView","_container","currentId","stillFullyVisible"],"sourceRoot":""}