{"version":3,"file":"pwc-smartplayer.f2dd129b.chunk.js","mappings":"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","sources":["../node_modules/@techsmith/techsmith-smartplayer/dist/techsmith-smart-player.esm.js"],"sourcesContent":["/**\n * TechSmith Smart Player v5.121.0\n */\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar pep = {exports: {}};\n\n/*!\n * PEP v0.4.3 | https://github.com/jquery/PEP\n * Copyright jQuery Foundation and other contributors | http://jquery.org/license\n */\n(function (module, exports) {\n (function (global, factory) {\n module.exports = factory() ;\n })(commonjsGlobal, function () {\n\n /**\n * This is the constructor for new PointerEvents.\n *\n * New Pointer Events must be given a type, and an optional dictionary of\n * initialization properties.\n *\n * Due to certain platform requirements, events returned from the constructor\n * identify as MouseEvents.\n *\n * @constructor\n * @param {String} inType The type of the event to create.\n * @param {Object} [inDict] An optional dictionary of initial event properties.\n * @return {Event} A new PointerEvent of type `inType`, initialized with properties from `inDict`.\n */\n var MOUSE_PROPS = ['bubbles', 'cancelable', 'view', 'detail', 'screenX', 'screenY', 'clientX', 'clientY', 'ctrlKey', 'altKey', 'shiftKey', 'metaKey', 'button', 'relatedTarget', 'pageX', 'pageY'];\n var MOUSE_DEFAULTS = [false, false, null, null, 0, 0, 0, 0, false, false, false, false, 0, null, 0, 0];\n function PointerEvent(inType, inDict) {\n inDict = inDict || Object.create(null);\n var e = document.createEvent('Event');\n e.initEvent(inType, inDict.bubbles || false, inDict.cancelable || false);\n\n // define inherited MouseEvent properties\n // skip bubbles and cancelable since they're set above in initEvent()\n for (var i = 2, p; i < MOUSE_PROPS.length; i++) {\n p = MOUSE_PROPS[i];\n e[p] = inDict[p] || MOUSE_DEFAULTS[i];\n }\n e.buttons = inDict.buttons || 0;\n\n // Spec requires that pointers without pressure specified use 0.5 for down\n // state and 0 for up state.\n var pressure = 0;\n if (inDict.pressure && e.buttons) {\n pressure = inDict.pressure;\n } else {\n pressure = e.buttons ? 0.5 : 0;\n }\n\n // add x/y properties aliased to clientX/Y\n e.x = e.clientX;\n e.y = e.clientY;\n\n // define the properties of the PointerEvent interface\n e.pointerId = inDict.pointerId || 0;\n e.width = inDict.width || 0;\n e.height = inDict.height || 0;\n e.pressure = pressure;\n e.tiltX = inDict.tiltX || 0;\n e.tiltY = inDict.tiltY || 0;\n e.twist = inDict.twist || 0;\n e.tangentialPressure = inDict.tangentialPressure || 0;\n e.pointerType = inDict.pointerType || '';\n e.hwTimestamp = inDict.hwTimestamp || 0;\n e.isPrimary = inDict.isPrimary || false;\n return e;\n }\n\n /**\n * This module implements a map of pointer states\n */\n var USE_MAP = window.Map && window.Map.prototype.forEach;\n var PointerMap = USE_MAP ? Map : SparseArrayMap;\n function SparseArrayMap() {\n this.array = [];\n this.size = 0;\n }\n SparseArrayMap.prototype = {\n set: function set(k, v) {\n if (v === undefined) {\n return this[\"delete\"](k);\n }\n if (!this.has(k)) {\n this.size++;\n }\n this.array[k] = v;\n },\n has: function has(k) {\n return this.array[k] !== undefined;\n },\n \"delete\": function _delete(k) {\n if (this.has(k)) {\n delete this.array[k];\n this.size--;\n }\n },\n get: function get(k) {\n return this.array[k];\n },\n clear: function clear() {\n this.array.length = 0;\n this.size = 0;\n },\n // return value, key, map\n forEach: function forEach(callback, thisArg) {\n return this.array.forEach(function (v, k) {\n callback.call(thisArg, v, k, this);\n }, this);\n }\n };\n var CLONE_PROPS = [\n // MouseEvent\n 'bubbles', 'cancelable', 'view', 'detail', 'screenX', 'screenY', 'clientX', 'clientY', 'ctrlKey', 'altKey', 'shiftKey', 'metaKey', 'button', 'relatedTarget',\n // DOM Level 3\n 'buttons',\n // PointerEvent\n 'pointerId', 'width', 'height', 'pressure', 'tiltX', 'tiltY', 'pointerType', 'hwTimestamp', 'isPrimary',\n // event instance\n 'type', 'target', 'currentTarget', 'which', 'pageX', 'pageY', 'timeStamp'];\n var CLONE_DEFAULTS = [\n // MouseEvent\n false, false, null, null, 0, 0, 0, 0, false, false, false, false, 0, null,\n // DOM Level 3\n 0,\n // PointerEvent\n 0, 0, 0, 0, 0, 0, '', 0, false,\n // event instance\n '', null, null, 0, 0, 0, 0];\n var BOUNDARY_EVENTS = {\n 'pointerover': 1,\n 'pointerout': 1,\n 'pointerenter': 1,\n 'pointerleave': 1\n };\n var HAS_SVG_INSTANCE = typeof SVGElementInstance !== 'undefined';\n\n /**\n * This module is for normalizing events. Mouse and Touch events will be\n * collected here, and fire PointerEvents that have the same semantics, no\n * matter the source.\n * Events fired:\n * - pointerdown: a pointing is added\n * - pointerup: a pointer is removed\n * - pointermove: a pointer is moved\n * - pointerover: a pointer crosses into an element\n * - pointerout: a pointer leaves an element\n * - pointercancel: a pointer will no longer generate events\n */\n var dispatcher = {\n pointermap: new PointerMap(),\n eventMap: Object.create(null),\n captureInfo: Object.create(null),\n // Scope objects for native events.\n // This exists for ease of testing.\n eventSources: Object.create(null),\n eventSourceList: [],\n /**\n * Add a new event source that will generate pointer events.\n *\n * `inSource` must contain an array of event names named `events`, and\n * functions with the names specified in the `events` array.\n * @param {string} name A name for the event source\n * @param {Object} source A new source of platform events.\n */\n registerSource: function registerSource(name, source) {\n var s = source;\n var newEvents = s.events;\n if (newEvents) {\n newEvents.forEach(function (e) {\n if (s[e]) {\n this.eventMap[e] = s[e].bind(s);\n }\n }, this);\n this.eventSources[name] = s;\n this.eventSourceList.push(s);\n }\n },\n register: function register(element) {\n var l = this.eventSourceList.length;\n for (var i = 0, es; i < l && (es = this.eventSourceList[i]); i++) {\n // call eventsource register\n es.register.call(es, element);\n }\n },\n unregister: function unregister(element) {\n var l = this.eventSourceList.length;\n for (var i = 0, es; i < l && (es = this.eventSourceList[i]); i++) {\n // call eventsource register\n es.unregister.call(es, element);\n }\n },\n contains: /*scope.external.contains || */function contains(container, contained) {\n try {\n return container.contains(contained);\n } catch (ex) {\n // most likely: https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n return false;\n }\n },\n // EVENTS\n down: function down(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerdown', inEvent);\n },\n move: function move(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointermove', inEvent);\n },\n up: function up(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerup', inEvent);\n },\n enter: function enter(inEvent) {\n inEvent.bubbles = false;\n this.fireEvent('pointerenter', inEvent);\n },\n leave: function leave(inEvent) {\n inEvent.bubbles = false;\n this.fireEvent('pointerleave', inEvent);\n },\n over: function over(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerover', inEvent);\n },\n out: function out(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerout', inEvent);\n },\n cancel: function cancel(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointercancel', inEvent);\n },\n leaveOut: function leaveOut(event) {\n this.out(event);\n this.propagate(event, this.leave, false);\n },\n enterOver: function enterOver(event) {\n this.over(event);\n this.propagate(event, this.enter, true);\n },\n // LISTENER LOGIC\n eventHandler: function eventHandler(inEvent) {\n // This is used to prevent multiple dispatch of pointerevents from\n // platform events. This can happen when two elements in different scopes\n // are set up to create pointer events, which is relevant to Shadow DOM.\n if (inEvent._handledByPE) {\n return;\n }\n var type = inEvent.type;\n var fn = this.eventMap && this.eventMap[type];\n if (fn) {\n fn(inEvent);\n }\n inEvent._handledByPE = true;\n },\n // set up event listeners\n listen: function listen(target, events) {\n events.forEach(function (e) {\n this.addEvent(target, e);\n }, this);\n },\n // remove event listeners\n unlisten: function unlisten(target, events) {\n events.forEach(function (e) {\n this.removeEvent(target, e);\n }, this);\n },\n addEvent: /*scope.external.addEvent || */function addEvent(target, eventName) {\n target.addEventListener(eventName, this.boundHandler);\n },\n removeEvent: /*scope.external.removeEvent || */function removeEvent(target, eventName) {\n target.removeEventListener(eventName, this.boundHandler);\n },\n // EVENT CREATION AND TRACKING\n /**\n * Creates a new Event of type `inType`, based on the information in\n * `inEvent`.\n *\n * @param {string} inType A string representing the type of event to create\n * @param {Event} inEvent A platform event with a target\n * @return {Event} A PointerEvent of type `inType`\n */\n makeEvent: function makeEvent(inType, inEvent) {\n // relatedTarget must be null if pointer is captured\n if (this.captureInfo[inEvent.pointerId]) {\n inEvent.relatedTarget = null;\n }\n var e = new PointerEvent(inType, inEvent);\n if (inEvent.preventDefault) {\n e.preventDefault = inEvent.preventDefault;\n }\n e._target = e._target || inEvent.target;\n return e;\n },\n // make and dispatch an event in one call\n fireEvent: function fireEvent(inType, inEvent) {\n var e = this.makeEvent(inType, inEvent);\n return this.dispatchEvent(e);\n },\n /**\n * Returns a snapshot of inEvent, with writable properties.\n *\n * @param {Event} inEvent An event that contains properties to copy.\n * @return {Object} An object containing shallow copies of `inEvent`'s\n * properties.\n */\n cloneEvent: function cloneEvent(inEvent) {\n var eventCopy = Object.create(null);\n var p;\n for (var i = 0; i < CLONE_PROPS.length; i++) {\n p = CLONE_PROPS[i];\n eventCopy[p] = inEvent[p] || CLONE_DEFAULTS[i];\n\n // Work around SVGInstanceElement shadow tree\n // Return the element that is represented by the instance for Safari, Chrome, IE.\n // This is the behavior implemented by Firefox.\n if (HAS_SVG_INSTANCE && (p === 'target' || p === 'relatedTarget')) {\n if (eventCopy[p] instanceof SVGElementInstance) {\n eventCopy[p] = eventCopy[p].correspondingUseElement;\n }\n }\n }\n\n // keep the semantics of preventDefault\n if (inEvent.preventDefault) {\n eventCopy.preventDefault = function () {\n inEvent.preventDefault();\n };\n }\n return eventCopy;\n },\n getTarget: function getTarget(inEvent) {\n var capture = this.captureInfo[inEvent.pointerId];\n if (!capture) {\n return inEvent._target;\n }\n if (inEvent._target === capture || !(inEvent.type in BOUNDARY_EVENTS)) {\n return capture;\n }\n },\n propagate: function propagate(event, fn, propagateDown) {\n var target = event.target;\n var targets = [];\n\n // Order of conditions due to document.contains() missing in IE.\n while (target !== document && !target.contains(event.relatedTarget)) {\n targets.push(target);\n target = target.parentNode;\n\n // Touch: Do not propagate if node is detached.\n if (!target) {\n return;\n }\n }\n if (propagateDown) {\n targets.reverse();\n }\n targets.forEach(function (target) {\n event.target = target;\n fn.call(this, event);\n }, this);\n },\n setCapture: function setCapture(inPointerId, inTarget, skipDispatch) {\n if (this.captureInfo[inPointerId]) {\n this.releaseCapture(inPointerId, skipDispatch);\n }\n this.captureInfo[inPointerId] = inTarget;\n this.implicitRelease = this.releaseCapture.bind(this, inPointerId, skipDispatch);\n document.addEventListener('pointerup', this.implicitRelease);\n document.addEventListener('pointercancel', this.implicitRelease);\n var e = new PointerEvent('gotpointercapture');\n e.pointerId = inPointerId;\n e._target = inTarget;\n if (!skipDispatch) {\n this.asyncDispatchEvent(e);\n }\n },\n releaseCapture: function releaseCapture(inPointerId, skipDispatch) {\n var t = this.captureInfo[inPointerId];\n if (!t) {\n return;\n }\n this.captureInfo[inPointerId] = undefined;\n document.removeEventListener('pointerup', this.implicitRelease);\n document.removeEventListener('pointercancel', this.implicitRelease);\n var e = new PointerEvent('lostpointercapture');\n e.pointerId = inPointerId;\n e._target = t;\n if (!skipDispatch) {\n this.asyncDispatchEvent(e);\n }\n },\n /**\n * Dispatches the event to its target.\n *\n * @param {Event} inEvent The event to be dispatched.\n * @return {Boolean} True if an event handler returns true, false otherwise.\n */\n dispatchEvent: /*scope.external.dispatchEvent || */function dispatchEvent(inEvent) {\n var t = this.getTarget(inEvent);\n if (t) {\n return t.dispatchEvent(inEvent);\n }\n },\n asyncDispatchEvent: function asyncDispatchEvent(inEvent) {\n requestAnimationFrame(this.dispatchEvent.bind(this, inEvent));\n }\n };\n dispatcher.boundHandler = dispatcher.eventHandler.bind(dispatcher);\n var targeting = {\n shadow: function shadow(inEl) {\n if (inEl) {\n return inEl.shadowRoot || inEl.webkitShadowRoot;\n }\n },\n canTarget: function canTarget(shadow) {\n return shadow && Boolean(shadow.elementFromPoint);\n },\n targetingShadow: function targetingShadow(inEl) {\n var s = this.shadow(inEl);\n if (this.canTarget(s)) {\n return s;\n }\n },\n olderShadow: function olderShadow(shadow) {\n var os = shadow.olderShadowRoot;\n if (!os) {\n var se = shadow.querySelector('shadow');\n if (se) {\n os = se.olderShadowRoot;\n }\n }\n return os;\n },\n allShadows: function allShadows(element) {\n var shadows = [];\n var s = this.shadow(element);\n while (s) {\n shadows.push(s);\n s = this.olderShadow(s);\n }\n return shadows;\n },\n searchRoot: function searchRoot(inRoot, x, y) {\n if (inRoot) {\n var t = inRoot.elementFromPoint(x, y);\n var st, sr;\n\n // is element a shadow host?\n sr = this.targetingShadow(t);\n while (sr) {\n // find the the element inside the shadow root\n st = sr.elementFromPoint(x, y);\n if (!st) {\n // check for older shadows\n sr = this.olderShadow(sr);\n } else {\n // shadowed element may contain a shadow root\n var ssr = this.targetingShadow(st);\n return this.searchRoot(ssr, x, y) || st;\n }\n }\n\n // light dom element is the target\n return t;\n }\n },\n owner: function owner(element) {\n var s = element;\n\n // walk up until you hit the shadow root or document\n while (s.parentNode) {\n s = s.parentNode;\n }\n\n // the owner element is expected to be a Document or ShadowRoot\n if (s.nodeType !== Node.DOCUMENT_NODE && s.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {\n s = document;\n }\n return s;\n },\n findTarget: function findTarget(inEvent) {\n var x = inEvent.clientX;\n var y = inEvent.clientY;\n\n // if the listener is in the shadow root, it is much faster to start there\n var s = this.owner(inEvent.target);\n\n // if x, y is not in this root, fall back to document search\n if (!s.elementFromPoint(x, y)) {\n s = document;\n }\n return this.searchRoot(s, x, y);\n }\n };\n var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);\n var map = Array.prototype.map.call.bind(Array.prototype.map);\n var toArray = Array.prototype.slice.call.bind(Array.prototype.slice);\n var filter = Array.prototype.filter.call.bind(Array.prototype.filter);\n var MO = window.MutationObserver || window.WebKitMutationObserver;\n var SELECTOR = '[touch-action]';\n var OBSERVER_INIT = {\n subtree: true,\n childList: true,\n attributes: true,\n attributeOldValue: true,\n attributeFilter: ['touch-action']\n };\n function Installer(add, remove, changed, binder) {\n this.addCallback = add.bind(binder);\n this.removeCallback = remove.bind(binder);\n this.changedCallback = changed.bind(binder);\n if (MO) {\n this.observer = new MO(this.mutationWatcher.bind(this));\n }\n }\n Installer.prototype = {\n watchSubtree: function watchSubtree(target) {\n // Only watch scopes that can target find, as these are top-level.\n // Otherwise we can see duplicate additions and removals that add noise.\n //\n // TODO(dfreedman): For some instances with ShadowDOMPolyfill, we can see\n // a removal without an insertion when a node is redistributed among\n // shadows. Since it all ends up correct in the document, watching only\n // the document will yield the correct mutations to watch.\n if (this.observer && targeting.canTarget(target)) {\n this.observer.observe(target, OBSERVER_INIT);\n }\n },\n enableOnSubtree: function enableOnSubtree(target) {\n this.watchSubtree(target);\n if (target === document && document.readyState !== 'complete') {\n this.installOnLoad();\n } else {\n this.installNewSubtree(target);\n }\n },\n installNewSubtree: function installNewSubtree(target) {\n forEach(this.findElements(target), this.addElement, this);\n },\n findElements: function findElements(target) {\n if (target.querySelectorAll) {\n return target.querySelectorAll(SELECTOR);\n }\n return [];\n },\n removeElement: function removeElement(el) {\n this.removeCallback(el);\n },\n addElement: function addElement(el) {\n this.addCallback(el);\n },\n elementChanged: function elementChanged(el, oldValue) {\n this.changedCallback(el, oldValue);\n },\n concatLists: function concatLists(accum, list) {\n return accum.concat(toArray(list));\n },\n // register all touch-action = none nodes on document load\n installOnLoad: function installOnLoad() {\n document.addEventListener('readystatechange', function () {\n if (document.readyState === 'complete') {\n this.installNewSubtree(document);\n }\n }.bind(this));\n },\n isElement: function isElement(n) {\n return n.nodeType === Node.ELEMENT_NODE;\n },\n flattenMutationTree: function flattenMutationTree(inNodes) {\n // find children with touch-action\n var tree = map(inNodes, this.findElements, this);\n\n // make sure the added nodes are accounted for\n tree.push(filter(inNodes, this.isElement));\n\n // flatten the list\n return tree.reduce(this.concatLists, []);\n },\n mutationWatcher: function mutationWatcher(mutations) {\n mutations.forEach(this.mutationHandler, this);\n },\n mutationHandler: function mutationHandler(m) {\n if (m.type === 'childList') {\n var added = this.flattenMutationTree(m.addedNodes);\n added.forEach(this.addElement, this);\n var removed = this.flattenMutationTree(m.removedNodes);\n removed.forEach(this.removeElement, this);\n } else if (m.type === 'attributes') {\n this.elementChanged(m.target, m.oldValue);\n }\n }\n };\n function shadowSelector(v) {\n return 'body /shadow-deep/ ' + selector(v);\n }\n function selector(v) {\n return '[touch-action=\"' + v + '\"]';\n }\n function rule(v) {\n return '{ -ms-touch-action: ' + v + '; touch-action: ' + v + '; }';\n }\n var attrib2css = ['none', 'auto', 'pan-x', 'pan-y', {\n rule: 'pan-x pan-y',\n selectors: ['pan-x pan-y', 'pan-y pan-x']\n }];\n var styles = '';\n\n // only install stylesheet if the browser has touch action support\n var hasNativePE = window.PointerEvent || window.MSPointerEvent;\n\n // only add shadow selectors if shadowdom is supported\n var hasShadowRoot = !window.ShadowDOMPolyfill && document.head.createShadowRoot;\n function applyAttributeStyles() {\n if (hasNativePE) {\n attrib2css.forEach(function (r) {\n if (String(r) === r) {\n styles += selector(r) + rule(r) + '\\n';\n if (hasShadowRoot) {\n styles += shadowSelector(r) + rule(r) + '\\n';\n }\n } else {\n styles += r.selectors.map(selector) + rule(r.rule) + '\\n';\n if (hasShadowRoot) {\n styles += r.selectors.map(shadowSelector) + rule(r.rule) + '\\n';\n }\n }\n });\n var el = document.createElement('style');\n el.textContent = styles;\n document.head.appendChild(el);\n }\n }\n var pointermap = dispatcher.pointermap;\n\n // radius around touchend that swallows mouse events\n var DEDUP_DIST = 25;\n\n // left, middle, right, back, forward\n var BUTTON_TO_BUTTONS = [1, 4, 2, 8, 16];\n var HAS_BUTTONS = false;\n try {\n HAS_BUTTONS = new MouseEvent('test', {\n buttons: 1\n }).buttons === 1;\n } catch (e) {}\n\n // handler block for native mouse events\n var mouseEvents = {\n POINTER_ID: 1,\n POINTER_TYPE: 'mouse',\n events: ['mousedown', 'mousemove', 'mouseup', 'mouseover', 'mouseout'],\n register: function register(target) {\n dispatcher.listen(target, this.events);\n },\n unregister: function unregister(target) {\n dispatcher.unlisten(target, this.events);\n },\n lastTouches: [],\n // collide with the global mouse listener\n isEventSimulatedFromTouch: function isEventSimulatedFromTouch(inEvent) {\n var lts = this.lastTouches;\n var x = inEvent.clientX;\n var y = inEvent.clientY;\n for (var i = 0, l = lts.length, t; i < l && (t = lts[i]); i++) {\n // simulated mouse events will be swallowed near a primary touchend\n var dx = Math.abs(x - t.x);\n var dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DIST && dy <= DEDUP_DIST) {\n return true;\n }\n }\n },\n prepareEvent: function prepareEvent(inEvent) {\n var e = dispatcher.cloneEvent(inEvent);\n\n // forward mouse preventDefault\n var pd = e.preventDefault;\n e.preventDefault = function () {\n inEvent.preventDefault();\n pd();\n };\n e.pointerId = this.POINTER_ID;\n e.isPrimary = true;\n e.pointerType = this.POINTER_TYPE;\n return e;\n },\n prepareButtonsForMove: function prepareButtonsForMove(e, inEvent) {\n var p = pointermap.get(this.POINTER_ID);\n\n // Update buttons state after possible out-of-document mouseup.\n if (inEvent.which === 0 || !p) {\n e.buttons = 0;\n } else {\n e.buttons = p.buttons;\n }\n inEvent.buttons = e.buttons;\n },\n mousedown: function mousedown(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var p = pointermap.get(this.POINTER_ID);\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n e.buttons = BUTTON_TO_BUTTONS[e.button];\n if (p) {\n e.buttons |= p.buttons;\n }\n inEvent.buttons = e.buttons;\n }\n pointermap.set(this.POINTER_ID, inEvent);\n if (!p || p.buttons === 0) {\n dispatcher.down(e);\n } else {\n dispatcher.move(e);\n }\n }\n },\n mousemove: function mousemove(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n this.prepareButtonsForMove(e, inEvent);\n }\n e.button = -1;\n pointermap.set(this.POINTER_ID, inEvent);\n dispatcher.move(e);\n }\n },\n mouseup: function mouseup(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var p = pointermap.get(this.POINTER_ID);\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n var up = BUTTON_TO_BUTTONS[e.button];\n\n // Produces wrong state of buttons in Browsers without `buttons` support\n // when a mouse button that was pressed outside the document is released\n // inside and other buttons are still pressed down.\n e.buttons = p ? p.buttons & ~up : 0;\n inEvent.buttons = e.buttons;\n }\n pointermap.set(this.POINTER_ID, inEvent);\n\n // Support: Firefox <=44 only\n // FF Ubuntu includes the lifted button in the `buttons` property on\n // mouseup.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1223366\n e.buttons &= ~BUTTON_TO_BUTTONS[e.button];\n if (e.buttons === 0) {\n dispatcher.up(e);\n } else {\n dispatcher.move(e);\n }\n }\n },\n mouseover: function mouseover(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n this.prepareButtonsForMove(e, inEvent);\n }\n e.button = -1;\n pointermap.set(this.POINTER_ID, inEvent);\n dispatcher.enterOver(e);\n }\n },\n mouseout: function mouseout(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n this.prepareButtonsForMove(e, inEvent);\n }\n e.button = -1;\n dispatcher.leaveOut(e);\n }\n },\n cancel: function cancel(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.cancel(e);\n this.deactivateMouse();\n },\n deactivateMouse: function deactivateMouse() {\n pointermap[\"delete\"](this.POINTER_ID);\n }\n };\n var captureInfo = dispatcher.captureInfo;\n var findTarget = targeting.findTarget.bind(targeting);\n var allShadows = targeting.allShadows.bind(targeting);\n var pointermap$1 = dispatcher.pointermap;\n\n // This should be long enough to ignore compat mouse events made by touch\n var DEDUP_TIMEOUT = 2500;\n var CLICK_COUNT_TIMEOUT = 200;\n var ATTRIB = 'touch-action';\n var INSTALLER;\n\n // handler block for native touch events\n var touchEvents = {\n events: ['touchstart', 'touchmove', 'touchend', 'touchcancel'],\n register: function register(target) {\n INSTALLER.enableOnSubtree(target);\n },\n unregister: function unregister() {\n\n // TODO(dfreedman): is it worth it to disconnect the MO?\n },\n elementAdded: function elementAdded(el) {\n var a = el.getAttribute(ATTRIB);\n var st = this.touchActionToScrollType(a);\n if (st) {\n el._scrollType = st;\n dispatcher.listen(el, this.events);\n\n // set touch-action on shadows as well\n allShadows(el).forEach(function (s) {\n s._scrollType = st;\n dispatcher.listen(s, this.events);\n }, this);\n }\n },\n elementRemoved: function elementRemoved(el) {\n el._scrollType = undefined;\n dispatcher.unlisten(el, this.events);\n\n // remove touch-action from shadow\n allShadows(el).forEach(function (s) {\n s._scrollType = undefined;\n dispatcher.unlisten(s, this.events);\n }, this);\n },\n elementChanged: function elementChanged(el, oldValue) {\n var a = el.getAttribute(ATTRIB);\n var st = this.touchActionToScrollType(a);\n var oldSt = this.touchActionToScrollType(oldValue);\n\n // simply update scrollType if listeners are already established\n if (st && oldSt) {\n el._scrollType = st;\n allShadows(el).forEach(function (s) {\n s._scrollType = st;\n }, this);\n } else if (oldSt) {\n this.elementRemoved(el);\n } else if (st) {\n this.elementAdded(el);\n }\n },\n scrollTypes: {\n EMITTER: 'none',\n XSCROLLER: 'pan-x',\n YSCROLLER: 'pan-y',\n SCROLLER: /^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/\n },\n touchActionToScrollType: function touchActionToScrollType(touchAction) {\n var t = touchAction;\n var st = this.scrollTypes;\n if (t === 'none') {\n return 'none';\n } else if (t === st.XSCROLLER) {\n return 'X';\n } else if (t === st.YSCROLLER) {\n return 'Y';\n } else if (st.SCROLLER.exec(t)) {\n return 'XY';\n }\n },\n POINTER_TYPE: 'touch',\n firstTouch: null,\n isPrimaryTouch: function isPrimaryTouch(inTouch) {\n return this.firstTouch === inTouch.identifier;\n },\n setPrimaryTouch: function setPrimaryTouch(inTouch) {\n // set primary touch if there no pointers, or the only pointer is the mouse\n if (pointermap$1.size === 0 || pointermap$1.size === 1 && pointermap$1.has(1)) {\n this.firstTouch = inTouch.identifier;\n this.firstXY = {\n X: inTouch.clientX,\n Y: inTouch.clientY\n };\n this.scrolling = false;\n this.cancelResetClickCount();\n }\n },\n removePrimaryPointer: function removePrimaryPointer(inPointer) {\n if (inPointer.isPrimary) {\n this.firstTouch = null;\n this.firstXY = null;\n this.resetClickCount();\n }\n },\n clickCount: 0,\n resetId: null,\n resetClickCount: function resetClickCount() {\n var fn = function () {\n this.clickCount = 0;\n this.resetId = null;\n }.bind(this);\n this.resetId = setTimeout(fn, CLICK_COUNT_TIMEOUT);\n },\n cancelResetClickCount: function cancelResetClickCount() {\n if (this.resetId) {\n clearTimeout(this.resetId);\n }\n },\n typeToButtons: function typeToButtons(type) {\n var ret = 0;\n if (type === 'touchstart' || type === 'touchmove') {\n ret = 1;\n }\n return ret;\n },\n touchToPointer: function touchToPointer(inTouch) {\n var cte = this.currentTouchEvent;\n var e = dispatcher.cloneEvent(inTouch);\n\n // We reserve pointerId 1 for Mouse.\n // Touch identifiers can start at 0.\n // Add 2 to the touch identifier for compatibility.\n var id = e.pointerId = inTouch.identifier + 2;\n e.target = captureInfo[id] || findTarget(e);\n e.bubbles = true;\n e.cancelable = true;\n e.detail = this.clickCount;\n e.button = 0;\n e.buttons = this.typeToButtons(cte.type);\n e.width = (inTouch.radiusX || inTouch.webkitRadiusX || 0) * 2;\n e.height = (inTouch.radiusY || inTouch.webkitRadiusY || 0) * 2;\n e.pressure = inTouch.force || inTouch.webkitForce || 0.5;\n e.isPrimary = this.isPrimaryTouch(inTouch);\n e.pointerType = this.POINTER_TYPE;\n\n // forward modifier keys\n e.altKey = cte.altKey;\n e.ctrlKey = cte.ctrlKey;\n e.metaKey = cte.metaKey;\n e.shiftKey = cte.shiftKey;\n\n // forward touch preventDefaults\n var self = this;\n e.preventDefault = function () {\n self.scrolling = false;\n self.firstXY = null;\n cte.preventDefault();\n };\n return e;\n },\n processTouches: function processTouches(inEvent, inFunction) {\n var tl = inEvent.changedTouches;\n this.currentTouchEvent = inEvent;\n for (var i = 0, t; i < tl.length; i++) {\n t = tl[i];\n inFunction.call(this, this.touchToPointer(t));\n }\n },\n // For single axis scrollers, determines whether the element should emit\n // pointer events or behave as a scroller\n shouldScroll: function shouldScroll(inEvent) {\n if (this.firstXY) {\n var ret;\n var scrollAxis = inEvent.currentTarget._scrollType;\n if (scrollAxis === 'none') {\n // this element is a touch-action: none, should never scroll\n ret = false;\n } else if (scrollAxis === 'XY') {\n // this element should always scroll\n ret = true;\n } else {\n var t = inEvent.changedTouches[0];\n\n // check the intended scroll axis, and other axis\n var a = scrollAxis;\n var oa = scrollAxis === 'Y' ? 'X' : 'Y';\n var da = Math.abs(t['client' + a] - this.firstXY[a]);\n var doa = Math.abs(t['client' + oa] - this.firstXY[oa]);\n\n // if delta in the scroll axis > delta other axis, scroll instead of\n // making events\n ret = da >= doa;\n }\n this.firstXY = null;\n return ret;\n }\n },\n findTouch: function findTouch(inTL, inId) {\n for (var i = 0, l = inTL.length, t; i < l && (t = inTL[i]); i++) {\n if (t.identifier === inId) {\n return true;\n }\n }\n },\n // In some instances, a touchstart can happen without a touchend. This\n // leaves the pointermap in a broken state.\n // Therefore, on every touchstart, we remove the touches that did not fire a\n // touchend event.\n // To keep state globally consistent, we fire a\n // pointercancel for this \"abandoned\" touch\n vacuumTouches: function vacuumTouches(inEvent) {\n var tl = inEvent.touches;\n\n // pointermap.size should be < tl.length here, as the touchstart has not\n // been processed yet.\n if (pointermap$1.size >= tl.length) {\n var d = [];\n pointermap$1.forEach(function (value, key) {\n // Never remove pointerId == 1, which is mouse.\n // Touch identifiers are 2 smaller than their pointerId, which is the\n // index in pointermap.\n if (key !== 1 && !this.findTouch(tl, key - 2)) {\n var p = value.out;\n d.push(p);\n }\n }, this);\n d.forEach(this.cancelOut, this);\n }\n },\n touchstart: function touchstart(inEvent) {\n this.vacuumTouches(inEvent);\n this.setPrimaryTouch(inEvent.changedTouches[0]);\n this.dedupSynthMouse(inEvent);\n if (!this.scrolling) {\n this.clickCount++;\n this.processTouches(inEvent, this.overDown);\n }\n },\n overDown: function overDown(inPointer) {\n pointermap$1.set(inPointer.pointerId, {\n target: inPointer.target,\n out: inPointer,\n outTarget: inPointer.target\n });\n dispatcher.enterOver(inPointer);\n dispatcher.down(inPointer);\n },\n touchmove: function touchmove(inEvent) {\n if (!this.scrolling) {\n if (this.shouldScroll(inEvent)) {\n this.scrolling = true;\n this.touchcancel(inEvent);\n } else {\n inEvent.preventDefault();\n this.processTouches(inEvent, this.moveOverOut);\n }\n }\n },\n moveOverOut: function moveOverOut(inPointer) {\n var event = inPointer;\n var pointer = pointermap$1.get(event.pointerId);\n\n // a finger drifted off the screen, ignore it\n if (!pointer) {\n return;\n }\n var outEvent = pointer.out;\n var outTarget = pointer.outTarget;\n dispatcher.move(event);\n if (outEvent && outTarget !== event.target) {\n outEvent.relatedTarget = event.target;\n event.relatedTarget = outTarget;\n\n // recover from retargeting by shadow\n outEvent.target = outTarget;\n if (event.target) {\n dispatcher.leaveOut(outEvent);\n dispatcher.enterOver(event);\n } else {\n // clean up case when finger leaves the screen\n event.target = outTarget;\n event.relatedTarget = null;\n this.cancelOut(event);\n }\n }\n pointer.out = event;\n pointer.outTarget = event.target;\n },\n touchend: function touchend(inEvent) {\n this.dedupSynthMouse(inEvent);\n this.processTouches(inEvent, this.upOut);\n },\n upOut: function upOut(inPointer) {\n if (!this.scrolling) {\n dispatcher.up(inPointer);\n dispatcher.leaveOut(inPointer);\n }\n this.cleanUpPointer(inPointer);\n },\n touchcancel: function touchcancel(inEvent) {\n this.processTouches(inEvent, this.cancelOut);\n },\n cancelOut: function cancelOut(inPointer) {\n dispatcher.cancel(inPointer);\n dispatcher.leaveOut(inPointer);\n this.cleanUpPointer(inPointer);\n },\n cleanUpPointer: function cleanUpPointer(inPointer) {\n pointermap$1[\"delete\"](inPointer.pointerId);\n this.removePrimaryPointer(inPointer);\n },\n // prevent synth mouse events from creating pointer events\n dedupSynthMouse: function dedupSynthMouse(inEvent) {\n var lts = mouseEvents.lastTouches;\n var t = inEvent.changedTouches[0];\n\n // only the primary finger will synth mouse events\n if (this.isPrimaryTouch(t)) {\n // remember x/y of last touch\n var lt = {\n x: t.clientX,\n y: t.clientY\n };\n lts.push(lt);\n var fn = function (lts, lt) {\n var i = lts.indexOf(lt);\n if (i > -1) {\n lts.splice(i, 1);\n }\n }.bind(null, lts, lt);\n setTimeout(fn, DEDUP_TIMEOUT);\n }\n }\n };\n INSTALLER = new Installer(touchEvents.elementAdded, touchEvents.elementRemoved, touchEvents.elementChanged, touchEvents);\n var pointermap$2 = dispatcher.pointermap;\n var HAS_BITMAP_TYPE = window.MSPointerEvent && typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE === 'number';\n var msEvents = {\n events: ['MSPointerDown', 'MSPointerMove', 'MSPointerUp', 'MSPointerOut', 'MSPointerOver', 'MSPointerCancel', 'MSGotPointerCapture', 'MSLostPointerCapture'],\n register: function register(target) {\n dispatcher.listen(target, this.events);\n },\n unregister: function unregister(target) {\n dispatcher.unlisten(target, this.events);\n },\n POINTER_TYPES: ['', 'unavailable', 'touch', 'pen', 'mouse'],\n prepareEvent: function prepareEvent(inEvent) {\n var e = inEvent;\n if (HAS_BITMAP_TYPE) {\n e = dispatcher.cloneEvent(inEvent);\n e.pointerType = this.POINTER_TYPES[inEvent.pointerType];\n }\n return e;\n },\n cleanup: function cleanup(id) {\n pointermap$2[\"delete\"](id);\n },\n MSPointerDown: function MSPointerDown(inEvent) {\n pointermap$2.set(inEvent.pointerId, inEvent);\n var e = this.prepareEvent(inEvent);\n dispatcher.down(e);\n },\n MSPointerMove: function MSPointerMove(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.move(e);\n },\n MSPointerUp: function MSPointerUp(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.up(e);\n this.cleanup(inEvent.pointerId);\n },\n MSPointerOut: function MSPointerOut(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.leaveOut(e);\n },\n MSPointerOver: function MSPointerOver(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.enterOver(e);\n },\n MSPointerCancel: function MSPointerCancel(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.cancel(e);\n this.cleanup(inEvent.pointerId);\n },\n MSLostPointerCapture: function MSLostPointerCapture(inEvent) {\n var e = dispatcher.makeEvent('lostpointercapture', inEvent);\n dispatcher.dispatchEvent(e);\n },\n MSGotPointerCapture: function MSGotPointerCapture(inEvent) {\n var e = dispatcher.makeEvent('gotpointercapture', inEvent);\n dispatcher.dispatchEvent(e);\n }\n };\n function applyPolyfill() {\n // only activate if this platform does not have pointer events\n if (!window.PointerEvent) {\n window.PointerEvent = PointerEvent;\n if (window.navigator.msPointerEnabled) {\n var tp = window.navigator.msMaxTouchPoints;\n Object.defineProperty(window.navigator, 'maxTouchPoints', {\n value: tp,\n enumerable: true\n });\n dispatcher.registerSource('ms', msEvents);\n } else {\n Object.defineProperty(window.navigator, 'maxTouchPoints', {\n value: 0,\n enumerable: true\n });\n dispatcher.registerSource('mouse', mouseEvents);\n if (window.ontouchstart !== undefined) {\n dispatcher.registerSource('touch', touchEvents);\n }\n }\n dispatcher.register(document);\n }\n }\n var n = window.navigator;\n var s;\n var r;\n var h;\n function assertActive(id) {\n if (!dispatcher.pointermap.has(id)) {\n var error = new Error('InvalidPointerId');\n error.name = 'InvalidPointerId';\n throw error;\n }\n }\n function assertConnected(elem) {\n var parent = elem.parentNode;\n while (parent && parent !== elem.ownerDocument) {\n parent = parent.parentNode;\n }\n if (!parent) {\n var error = new Error('InvalidStateError');\n error.name = 'InvalidStateError';\n throw error;\n }\n }\n function inActiveButtonState(id) {\n var p = dispatcher.pointermap.get(id);\n return p.buttons !== 0;\n }\n if (n.msPointerEnabled) {\n s = function s(pointerId) {\n assertActive(pointerId);\n assertConnected(this);\n if (inActiveButtonState(pointerId)) {\n dispatcher.setCapture(pointerId, this, true);\n this.msSetPointerCapture(pointerId);\n }\n };\n r = function r(pointerId) {\n assertActive(pointerId);\n dispatcher.releaseCapture(pointerId, true);\n this.msReleasePointerCapture(pointerId);\n };\n } else {\n s = function setPointerCapture(pointerId) {\n assertActive(pointerId);\n assertConnected(this);\n if (inActiveButtonState(pointerId)) {\n dispatcher.setCapture(pointerId, this);\n }\n };\n r = function releasePointerCapture(pointerId) {\n assertActive(pointerId);\n dispatcher.releaseCapture(pointerId);\n };\n }\n h = function hasPointerCapture(pointerId) {\n return !!dispatcher.captureInfo[pointerId];\n };\n function applyPolyfill$1() {\n if (window.Element && !Element.prototype.setPointerCapture) {\n Object.defineProperties(Element.prototype, {\n 'setPointerCapture': {\n value: s\n },\n 'releasePointerCapture': {\n value: r\n },\n 'hasPointerCapture': {\n value: h\n }\n });\n }\n }\n applyAttributeStyles();\n applyPolyfill();\n applyPolyfill$1();\n var pointerevents = {\n dispatcher: dispatcher,\n Installer: Installer,\n PointerEvent: PointerEvent,\n PointerMap: PointerMap,\n targetFinding: targeting\n };\n return pointerevents;\n });\n})(pep);\n\n// external smart player events (value casing matters to maintain backward capability)\nvar _videoStartInitiated = 'VIDEO_START_INITIATED';\nvar _videoStart = 'VIDEO_START';\nvar _mediaReady = 'MEDIA_READY';\nvar _captionChange = 'CAPTION_CHANGE';\nvar _ready = 'READY';\nvar _videoPlayEvent = 'VIDEO_PLAY';\nvar _playerFullScreenModeChanged = 'PLAYER_FULL_SCREEN_MODE_CHANGED';\nvar _playerRumData = 'PLAYER_RUM_DATA';\nvar _videoEnd = 'tscspVideoEnd';\nvar _videoReplay = 'tscspVideoReplay';\nvar _externalMediaError = 'tscspMediaError';\nvar _playerSettingsOpenEvent = 'tscspPlayerSettingsOpen';\nvar _playerSettingsCloseEvent = 'tscspPlayerSettingsClose';\nvar _playerControlsHiddenEvent = 'tscspPlayerControlsHiddenEvent';\nvar _playerControlsVisibleEvent = 'tscspPlayerControlsVisibleEvent';\nvar _externalPlayerResize = 'tscspPlayerResize';\nvar _heroControlHidden = 'tscspHeroControlHidden';\nvar _imagePointerOver = 'tscspImagePointerOver';\nvar _imagePointerLeave = 'tscspImagePointerLeave';\nvar _displayModeChanged = 'tscspDisplayModeChanged';\nvar _captionsHidden = 'tscspCaptionsHidden';\nvar _captionsVisible = 'tscspCaptionsVisible';\nvar _captionsReady = 'tscspCaptionsReady';\n// this is the overload to set up a listener for the playerConfiguration.useCustomEventTracking related to analytics. this event will fire the handler for several\n// when they would normally trigger internally (i.e. 'Video_Started', 'Video_Replay', 'Video_Loading_Time', 'Video_Finished', others?)\n// the event will trigger with the related event name and data formatted for older version google-analytics events\nvar _googleAnalyticsCustomEvent = 'gacustomevents'; // deprecated\nvar _analyticsEvent = 'analyticsEvent';\nvar _googleAnalytics4Event = 'ga4event';\n\n// external smart player html5 events\n// these events are bubbled up from the html5 video element and _most_ are simulated by the youtube player in our code\nvar _videoLoadStart = 'loadstart';\nvar _videoLoadedMetadata = 'loadedmetadata';\nvar _videoLoadedData = 'loadeddata';\nvar _externalVideoCanPlay = 'canplay';\nvar _videoCanPlayThrough = 'canplaythrough';\nvar _videoPlaying = 'playing';\nvar _videoWaiting = 'waiting';\nvar _videoSeeking = 'seeking';\nvar _videoSeeked = 'seeked';\nvar _videoEnded = 'ended';\nvar _videoPlay = 'play';\nvar _videoPause = 'pause';\nvar _videoResize = 'resize';\nvar _videoError = 'error';\nvar _videoVolumeChange = 'volumechange';\nvar _videoDurationChange = 'durationchange';\nvar _videoRateChange = 'ratechange';\nvar _videoTimeUpdate = 'timeupdate';\nvar _videoProgress = 'progress';\nvar _initializeCurrent = 'initializecurrent';\nvar _sourceChanged = 'sourcechanged';\nvar _tryToAutoPlay = 'tscspTryToAutoPlay';\nvar _firstPlay = 'tscspFirstPlayer';\nvar _videoSuspend = 'suspend';\nvar _videoAbort = 'abort';\nvar _videoEmptied = 'emptied';\nvar _videoStalled = 'stalled';\n\n// Player Events\nvar _mediaControlsReady = 'tscspMediaControlsReady';\nvar _mediaExtensionsReady = 'tscspMediaExtensionsReady';\n\n// Control Events\nvar _clickPrevControl = 'tscspClickPrevControl';\nvar _clickNextControl = 'tscspClickNextControl';\nvar _toggleFullScreen = 'tscspToggleFullScreen';\nvar _fullScreenChange = 'tscspFullScreenChange';\nvar _expandVideo = 'tscspExpandVideo';\nvar _showToc = 'tscspShowToc';\nvar _hideToc = 'tscspHideToc';\nvar _tocScroll = 'tscspTocScroll';\nvar _disableControls$1 = 'tscspDisableControls';\nvar _enableControls = 'tscspEnableControls';\nvar _controlsUpdated = 'tscspControlsUpdated';\nvar _pipChanged = 'tscspPipChange';\nvar _theaterModeChanged = 'tscspTheaterModeChange';\nvar _playerResize = 'tscspPlayerResize';\nvar _mediaResize = 'tscspMediaResize';\nvar _controlsPlayerInitialized = 'tscspPlayerInitialized';\nvar _showVideoBufferingView = 'tscspShowVideoBufferingView';\nvar _hideVideoBufferingView = 'tscspHideVideoBufferingView';\nvar _switchToFullscreen = 'tscspSwitchToFullscreen';\nvar _exitFullscreen = 'tscspExitFullscreen';\nvar _videoControlsHidden = 'tscspVideoControlsHidden';\nvar _hideVideoControls = 'tscspHideVideoControls';\nvar _videoControlsVisible = 'tscspVideoControlsHVisible';\nvar _showVideoControls = 'tscspShowVideoControls';\nvar _displayCaptionControl = 'tscspDisplayCaptionControl';\nvar _displayTocControl = 'tscspDisplayTocControl';\nvar _tocDisplayToggled = 'tscspTocDisplayToggled';\nvar _focusTocButton = 'tscspFocusTocButton';\nvar _heroPlayControlClicked = 'tscspHeroPlayControlClicked';\nvar _heroPlayControlVisible = 'tscspHeroPlayControlVisible';\nvar _heroPlayControlHidden = 'tscspHeroPlayControlHidden';\nvar _replayControlVisible = 'tscspReplayControlVisible';\nvar _replayControlHidden = 'tscspReplayControlHidden';\nvar _startedPlayback = 'tscspStartedPlayback';\nvar _hideIOOverlay = 'tscspHideIOOverlay';\nvar _searchFocusChange = 'tscspSearchFocusChange';\nvar _hideLoadingMessage = 'tscspHideLoadingMessage';\nvar _playerSettingsOpen = 'tscspPlayerSettingsOpen';\nvar _playerSettingsClose = 'tscspPlayerSettingsClose';\n\n// Media Element Events\nvar _seekMediaToTime = 'tscspSeekMediaToTime';\nvar _replayMedia = 'tscspReplayMedia';\nvar _endMedia = 'tscspEndMedia';\nvar _setVolume = 'tscspSetVolume';\nvar _setMutedState = 'tscspSetMutedState';\nvar _setPlaybackRate = 'tscspSetPlaybackRate';\nvar _mediaError = 'tscspMediaError';\n\n// IFrame Events\nvar _enterFullFrame = 'ENTER-FULLFRAME';\nvar _exitFullFrame = 'EXIT-FULLFRAME';\n\n// Update Events\nvar _updateQuizMarkers = 'tscspUpdateQuizMarkers';\nvar _updatePlayProgress = 'tscspUpdatePlayProgress';\nvar _updateLoadProgress = 'tscspUpdateLoadProgress';\nvar _updateNextQuestionPos = 'tscspUpdateNextQuestionXPos';\n\n// Scrubbing Events\nvar _startedScrubbing = 'tscspStartedScrubbing';\nvar _endedScrubbing = 'tscspEndedScrubbing';\n\n// Quiz Events\nvar _quizSetupComplete = 'tscspQuizSetupComplete';\nvar _quizPaused = 'tscspMediaPaused';\nvar _quizComplete = 'tscspQuizComplete';\nvar _quizReview = 'tscspQuizReview';\nvar _quizBegin = 'tscspQuizBegin';\nvar _quizBeginClicked = 'tscspQuizBeginClicked';\nvar _quizSkip = 'tscspQuizSkip';\nvar _quizSkipClicked = 'tscspSkipQuizClicked';\nvar _quizError = 'tscspQuizError';\nvar _quizStatus = 'tscspQuizStatus';\nvar _quizSubmittingInstance = 'tscspSubmittingInstance';\nvar _quizCreatedInstance = 'tscspCreatedInstance';\nvar _quizSubmitted = 'tscspQuizSubmitted';\nvar _quizShowSubmissionRetryMessage = 'tscspQuizShowSubmissionRetryMessage';\nvar _quizHideSubmissionRetryMessage = 'tscspQuizHideSubmissionRetryMessage';\nvar _quizHideLoadingMessage = 'tscspQuizHideLoadingMessage';\nvar _transitionImageQuizToAnswers = 'tscspTransitionImageQuizToAnswers';\nvar _hideQuiz = 'tscspHideQuiz';\nvar _showQuizBar = 'tscspShowQuizBar';\nvar _showStartQuizPrompt = 'tscspShowStartQuizPrompt';\nvar _showQuizSetup = 'tscspShowQuizSetup';\nvar _hideStartQuizPrompt = 'tscspHideStartQuizPrompt';\nvar _showQuestionSetView = 'tscspShowQuestionSetView';\nvar _closeQuestionSetView = 'tscspCloseQuestionSetView';\nvar _submitQuestionSet = 'tscspSubmitQuestionSet';\nvar _rationaleActionLocation = 'tscspRationaleActionLocation';\nvar _rationaleActionJumpToTime = 'tscspRationaleActionJumpToTime';\nvar _quizIsOutOfDate = 'tscspQuizIsOutOfDate';\nvar _quizBadDefinition = 'tscspQuizBadDefinition';\nvar _quizVisible = 'tscspQuizVisible';\nvar _quizHidden = 'tscspQuizHidden';\nvar _minimizeQuizUI = 'tscspMinimizeQuizUI';\nvar _maximizeQuizUI = 'tscspMaximizeQuizUI';\nvar _quizUIVisible = 'tscspQuizUIVisible';\nvar _quizUIHidden = 'tscspQuizUIHidden';\n\n// Captions\nvar _captionsToggled = 'tscpCaptionsToggled';\nvar _stateLoaded = 'tscpCaptionsStateLoaded';\nvar _captionsChanged = 'tscspCaptionChanged';\nvar _captionsLanguageChanged = 'tscspLanguageChanged';\nvar _captionsDragStart = 'tscspCaptionsDragStart';\nvar _captionsDragEnd = 'tscspCaptionsDragEnd';\nvar _captionsResized = 'tscspCaptionsResized';\n\n// Caption Service\nvar _newCaptionTrack = 'tscspNewCaptionTrack';\n\n// Audio Description\nvar _audioDescriptionChanged = 'tscspAudioDescriptionChanged';\nvar _audioDescriptionFailed = 'tscspAudioDescriptionFailed';\n\n// Hotspots\nvar _hotspotPaused = 'tscspHotspotPaused';\nvar _hotspotResume = 'tscspHotspotResume';\nvar _hotspotClicked = 'tscspHotspotClicked';\nvar _hotspotAreaActive = 'tscspHotspotAreaActive';\nvar _hotspotAreaInactive = 'tscspHotspotAreaInactive';\n\n// Modals\nvar _modalOpen = 'tscspModalOpen';\nvar _modalClosed = 'tscspModalClosed';\n\n//Timing\nvar _smartPlayerInitialized = 'smart_player_initialized';\nvar _smartPlayerLoaded = 'smart_player_loaded';\nvar _videoMetadataLoaded = 'video_metadata_loaded';\nvar _videoLoadedDataTiming = 'video_loaded_data';\nvar _videoCanPlay = 'video_can_play';\nvar _videoHasEnoughData = 'video_has_enough_data';\n\n// Analytics\nvar _analyticsVideoStarted = 'Video_Started';\nvar _analyticsContentLoaded = 'Content_Loaded';\nvar _analyticsVideoPercentViewed = 'Video_Percent_Viewed';\nvar _analyticsVideoFinishedAction = 'Video_Finished_Action';\nvar _analyticsVideoFinished = 'Video_Finished';\nvar _analyticsVideoReplay = 'Video_Replay';\nvar _analyticsVideoLoadingTimeInSeconds = 'Video_Loading_Time_In_Seconds';\nvar _analyticsVideoLoadingTime = 'Video_Loading_Time';\nvar _analyticsOpenExternalLinkView = 'Open_External_Link_View';\nvar _analyticsOpenExternalLinkClick = 'Open_External_Link_Click';\nvar _analyticsHotspotAction = 'Hotspot_Action';\nvar _analyticsVideoCouldNotPlaySmoothlyIn20Secs = 'Could_Not_Play_Smoothly_In_20_Secs';\nvar _analyticsVideoPlaybackWasStoppedToBuffer = 'Video_Stopped_To_Buffer';\n\n// GA4 Analytics\nvar _ga4VideoStarted = 'video_started';\nvar _ga4PlayerInitialized = 'player_initialized';\nvar _ga4VideoLoadingTimeInSeconds = 'video_loading_time_secs';\nvar _ga4VideoLoadingTime = 'video_loading_time';\nvar _ga4VideoPercentViewed = 'video_percent_viewed';\nvar _ga4VideoFinishedAction = 'video_finished_action';\nvar _ga4VideoFinished = 'video_finished';\nvar _ga4VideoReplay = 'video_replayed';\nvar _ga4OpenExternalLinkView = 'open_external_link_view';\nvar _ga4OpenExternalLinkClick = 'open_external_link_click';\nvar _ga4HotspotAction = 'hotspot_open_url_action';\nvar _ga4VideoCouldNotPlaySmoothlyIn20Secs = 'bad_playback_twenty_secs';\nvar _ga4VideoPlaybackWasStoppedToBuffer = 'video_stopped_to_buffer';\n\n// Plugins\nvar _pluginAdded = 'pluginAdded';\nvar _mediaAreaPluginMouseDown = 'mediaAreaPluginMouseDown';\nvar _mediaAreaPluginMouseUp = 'mediaAreaPluginMouseUp';\nvar _mediaAreaPluginKeyDown = 'mediaAreaPluginKeyDown';\nvar _mediaAreaPluginKeyUp = 'mediaAreaPluginKeyUp';\n\n// Network\nvar _retryingRequest = 'retryingRequest';\n\n// Fathom\nvar _fathomGetComplete = 'GET_COMPLETE';\nvar _fathomError = 'ERROR';\n\n// External link view\nvar _openUrlViewOpened = 'tscspExternalUrlViewOpen';\nvar _openUrlViewClosed = 'tscspExternalUrlViewClosed';\nvar _openUrlViewClicked = 'tscspExternalUrlViewClick';\n\n// SCORM\nvar _exitScormSession = 'tscspExitScormSession';\nvar _exitScormSessionConfirmed = 'tscspExitScormSessionConfirmed';\nvar _exitScormSessionWithOutProgressConfirmed = 'tscspExitScormSessionWithOutProgressConfirmed';\nvar _resumeScormSession = 'tscspScormSession';\nvar _failedToFindApi = 'tscspScormFailedToFindApi';\n\n// Images\nvar _imagesPointerOver = 'tscspImagesPointerOver';\nvar _imagesPointerLeave = 'tscspImagesPointerLeave';\nvar events = Object.freeze({\n External: {\n VideoStartInitiated: _videoStartInitiated,\n VideoStart: _videoStart,\n VideoEnd: _videoEnd,\n VideoReplay: _videoReplay,\n MediaError: _externalMediaError,\n MediaReady: _mediaReady,\n CaptionChange: _captionChange,\n Ready: _ready,\n VideoPlay: _videoPlayEvent,\n PlayerFullScreenModeChanged: _playerFullScreenModeChanged,\n PlayerRumData: _playerRumData,\n GoogleAnalyticsCustomEvent: _googleAnalyticsCustomEvent,\n AnalyticsEvent: _analyticsEvent,\n GoogleAnalytics4Event: _googleAnalytics4Event,\n QuizVisible: _quizVisible,\n QuizHidden: _quizHidden,\n ShowStartQuizPrompt: _showStartQuizPrompt,\n HideStartQuizPrompt: _hideStartQuizPrompt,\n SwitchToFullscreen: _switchToFullscreen,\n ExitFullscreen: _exitFullscreen,\n PlayerSettingsOpen: _playerSettingsOpenEvent,\n PlayerSettingsClose: _playerSettingsCloseEvent,\n PlayerControlsHidden: _playerControlsHiddenEvent,\n PlayerControlsVisible: _playerControlsVisibleEvent,\n PlayerResize: _externalPlayerResize,\n HeroControlHidden: _heroControlHidden,\n ImagePointerOver: _imagePointerOver,\n ImagePointerLeave: _imagePointerLeave,\n DisplayModeChanged: _displayModeChanged,\n CaptionsHidden: _captionsHidden,\n CaptionsVisible: _captionsVisible,\n CaptionsReady: _captionsReady\n },\n ExternalVideo: {\n VideoLoadStart: _videoLoadStart,\n VideoLoadedMetadata: _videoLoadedMetadata,\n VideoLoadedData: _videoLoadedData,\n VideoCanPlay: _externalVideoCanPlay,\n VideoCanPlayThrough: _videoCanPlayThrough,\n VideoPlaying: _videoPlaying,\n VideoWaiting: _videoWaiting,\n VideoSeeking: _videoSeeking,\n VideoSeeked: _videoSeeked,\n VideoEnded: _videoEnded,\n VideoPlay: _videoPlay,\n VideoPause: _videoPause,\n VideoResize: _videoResize,\n VideoError: _videoError,\n VideoVolumeChange: _videoVolumeChange,\n VideoDurationChange: _videoDurationChange,\n VideoRateChange: _videoRateChange,\n VideoTimeUpdate: _videoTimeUpdate,\n VideoProgress: _videoProgress\n },\n Player: {\n MediaControlsReady: _mediaControlsReady,\n MediaExtensionsReady: _mediaExtensionsReady\n },\n Controls: {\n ClickPrev: _clickPrevControl,\n ClickNext: _clickNextControl,\n FullScreenChange: _fullScreenChange,\n ToggleFullScreen: _toggleFullScreen,\n ExpandVideo: _expandVideo,\n ShowToc: _showToc,\n HideToc: _hideToc,\n TocScroll: _tocScroll,\n Disable: _disableControls$1,\n Enable: _enableControls,\n Updated: _controlsUpdated,\n HotspotClicked: _hotspotClicked,\n PipChanged: _pipChanged,\n TheaterModeChanged: _theaterModeChanged,\n PlayerResize: _playerResize,\n MediaResize: _mediaResize,\n PlayerInitialized: _controlsPlayerInitialized,\n ShowVideoBufferingView: _showVideoBufferingView,\n HideVideoBufferingView: _hideVideoBufferingView,\n VideoControlsHidden: _videoControlsHidden,\n HideVideoControls: _hideVideoControls,\n VideoControlsVisible: _videoControlsVisible,\n ShowVideoControls: _showVideoControls,\n DisplayCaptionControl: _displayCaptionControl,\n DisplayTocControl: _displayTocControl,\n TocDisplayToggled: _tocDisplayToggled,\n FocusTocButton: _focusTocButton,\n HeroPlayControlClicked: _heroPlayControlClicked,\n HeroPlayControlVisible: _heroPlayControlVisible,\n HeroPlayControlHidden: _heroPlayControlHidden,\n ReplayControlVisible: _replayControlVisible,\n ReplayControlHidden: _replayControlHidden,\n StartedPlayback: _startedPlayback,\n HideIOOverlay: _hideIOOverlay,\n SearchFocusChange: _searchFocusChange,\n HideLoadingMessage: _hideLoadingMessage,\n PlayerSettingsOpen: _playerSettingsOpen,\n PlayerSettingsClose: _playerSettingsClose\n },\n Hotspots: {\n Paused: _hotspotPaused,\n Resume: _hotspotResume,\n AreaActive: _hotspotAreaActive,\n AreaInactive: _hotspotAreaInactive\n },\n Media: {\n Play: _videoPlay,\n Playing: _videoPlaying,\n Pause: _videoPause,\n SeekToTime: _seekMediaToTime,\n Replay: _replayMedia,\n End: _endMedia,\n Abort: _videoAbort,\n Suspend: _videoSuspend,\n Emptied: _videoEmptied,\n Stalled: _videoStalled,\n Progress: _videoProgress,\n InitializeCurrent: _initializeCurrent,\n SourceChanged: _sourceChanged,\n TryToAutoPlay: _tryToAutoPlay,\n SetVolume: _setVolume,\n SetMutedState: _setMutedState,\n SetPlaybackRate: _setPlaybackRate,\n FirstPlay: _firstPlay,\n Error: _mediaError\n },\n IFrame: {\n EnterFullFrame: _enterFullFrame,\n ExitFullFrame: _exitFullFrame\n },\n Update: {\n QuizMarkers: _updateQuizMarkers,\n PlayProgress: _updatePlayProgress,\n LoadProgress: _updateLoadProgress,\n NextQuestionPosition: _updateNextQuestionPos\n },\n Scrubbing: {\n Started: _startedScrubbing,\n Ended: _endedScrubbing\n },\n Quizzing: {\n QuizSetupComplete: _quizSetupComplete,\n Paused: _quizPaused,\n Complete: _quizComplete,\n Review: _quizReview,\n Begin: _quizBegin,\n BeginClicked: _quizBeginClicked,\n Skip: _quizSkip,\n SkipClicked: _quizSkipClicked,\n Error: _quizError,\n Status: _quizStatus,\n SubmittingInstance: _quizSubmittingInstance,\n CreatedInstance: _quizCreatedInstance,\n Submitted: _quizSubmitted,\n ShowSubmissionRetryMessage: _quizShowSubmissionRetryMessage,\n HideSubmissionRetryMessage: _quizHideSubmissionRetryMessage,\n HideLoadingMessage: _quizHideLoadingMessage,\n TransitionImageQuizToAnswers: _transitionImageQuizToAnswers,\n HideQuiz: _hideQuiz,\n ShowQuizBar: _showQuizBar,\n ShowStartQuizPrompt: _showStartQuizPrompt,\n ShowQuizSetup: _showQuizSetup,\n ShowQuestionSetView: _showQuestionSetView,\n CloseQuestionSetView: _closeQuestionSetView,\n SubmitQuestionSet: _submitQuestionSet,\n RationaleActionLocation: _rationaleActionLocation,\n RationaleActionJumpToTime: _rationaleActionJumpToTime,\n QuizIsOutOfDate: _quizIsOutOfDate,\n QuizBadDefinition: _quizBadDefinition,\n MinimizeUI: _minimizeQuizUI,\n MaximizeUI: _maximizeQuizUI,\n UIVisible: _quizUIVisible,\n UIHidden: _quizUIHidden\n },\n Captions: {\n Toggled: _captionsToggled,\n StateLoaded: _stateLoaded,\n Changed: _captionsChanged,\n LanguageChanged: _captionsLanguageChanged,\n DragStart: _captionsDragStart,\n DragEnd: _captionsDragEnd,\n Resized: _captionsResized\n },\n CaptionService: {\n NewCaptionTrack: _newCaptionTrack\n },\n AudioDescription: {\n Changed: _audioDescriptionChanged,\n Failed: _audioDescriptionFailed\n },\n Timing: {\n PlayerInitialized: _smartPlayerInitialized,\n PlayerLoaded: _smartPlayerLoaded,\n VideoMetadataLoaded: _videoMetadataLoaded,\n VideoLoadedData: _videoLoadedDataTiming,\n VideoCanPlay: _videoCanPlay,\n VideoHasEnoughData: _videoHasEnoughData\n },\n GA4: {\n PlayerInitialized: _ga4PlayerInitialized,\n VideoStarted: _ga4VideoStarted,\n VideoLoadingTimeInSeconds: _ga4VideoLoadingTimeInSeconds,\n VideoLoadingTime: _ga4VideoLoadingTime,\n VideoPercentViewed: _ga4VideoPercentViewed,\n VideoFinishedAction: _ga4VideoFinishedAction,\n VideoFinished: _ga4VideoFinished,\n VideoReplay: _ga4VideoReplay,\n OpenExternalLinkView: _ga4OpenExternalLinkView,\n OpenExternalLinkClick: _ga4OpenExternalLinkClick,\n HotspotAction: _ga4HotspotAction,\n CouldNotPlaySmoothlyIn20Secs: _ga4VideoCouldNotPlaySmoothlyIn20Secs,\n PlaybackWasStoppedToBuffer: _ga4VideoPlaybackWasStoppedToBuffer\n },\n Analytics: {\n VideoStarted: _analyticsVideoStarted,\n ContentLoaded: _analyticsContentLoaded,\n VideoPercentViewed: _analyticsVideoPercentViewed,\n VideoFinishedAction: _analyticsVideoFinishedAction,\n VideoFinished: _analyticsVideoFinished,\n VideoReplay: _analyticsVideoReplay,\n VideoLoadingTimeInSeconds: _analyticsVideoLoadingTimeInSeconds,\n VideoLoadingTime: _analyticsVideoLoadingTime,\n OpenExternalLinkView: _analyticsOpenExternalLinkView,\n OpenExternalLinkClick: _analyticsOpenExternalLinkClick,\n HotspotAction: _analyticsHotspotAction,\n CouldNotPlaySmoothlyIn20Secs: _analyticsVideoCouldNotPlaySmoothlyIn20Secs,\n PlaybackWasStoppedToBuffer: _analyticsVideoPlaybackWasStoppedToBuffer\n },\n Plugin: {\n Added: _pluginAdded,\n MediaAreaPluginMouseDown: _mediaAreaPluginMouseDown,\n MediaAreaPluginMouseUp: _mediaAreaPluginMouseUp,\n MediaAreaPluginKeyDown: _mediaAreaPluginKeyDown,\n MediaAreaPluginKeyUp: _mediaAreaPluginKeyUp\n },\n Network: {\n Retrying: _retryingRequest\n },\n Fathom: {\n GetComplete: _fathomGetComplete,\n Error: _fathomError\n },\n Modals: {\n Open: _modalOpen,\n Closed: _modalClosed\n },\n ExternalLinkView: {\n Open: _openUrlViewOpened,\n Closed: _openUrlViewClosed,\n Clicked: _openUrlViewClicked\n },\n SCORM: {\n ExitSession: _exitScormSession,\n ExitSessionConfirmed: _exitScormSessionConfirmed,\n ExitSessionWithOutProgressConfirmed: _exitScormSessionWithOutProgressConfirmed,\n ResumeSession: _resumeScormSession,\n FailedToFindApi: _failedToFindApi\n },\n Images: {\n PointerOver: _imagesPointerOver,\n PointerLeave: _imagesPointerLeave\n }\n});\n\nvar supportedPluginViewElements = Object.freeze({\n PROGRESS_BAR: 'progressBar',\n MEDIA: 'media',\n BEFORE_AFTER_PLAY_CONTROLS: 'beforeAfterPlayControls',\n PLAYER: 'player'\n});\n\nvar _english = 'en-US';\nvar _german = 'de-DE';\nvar _japanese = 'ja-JP';\nvar _french = 'fr-FR';\nvar _spanish = 'es-ES';\nvar _chinese = 'zh-CN';\nvar _portuguese = 'pt-BR';\nvar _supportedLanguages = [_english, _german, _japanese, _french, _spanish, _chinese, _portuguese];\nvar languageCodes = Object.freeze({\n ENGLISH: _english,\n GERMAN: _german,\n JAPANESE: _japanese,\n FRENCH: _french,\n SPANISH: _spanish,\n CHINESE: _chinese,\n PORTUGUESE: _portuguese,\n ENU: _english,\n DEU: _german,\n JPN: _japanese,\n FRA: _french,\n SP: _spanish,\n ZH: _chinese,\n PT: _portuguese,\n isValid: function isValid(language) {\n return _supportedLanguages.some(function (supportedLanguage) {\n return supportedLanguage === language;\n });\n }\n});\n\nvar mediaInterfaceConstants = Object.freeze({\n controls: {\n \"true\": 'true',\n \"false\": 'false',\n autohide: 'autohide',\n youtube: 'youtube'\n }\n});\n\nfunction _typeof$1(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof$1 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof$1(o);\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache();\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = (typeof global === \"undefined\" ? \"undefined\" : _typeof$1(global)) == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = (typeof self === \"undefined\" ? \"undefined\" : _typeof$1(self)) == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Built-in value references. */\nvar _Symbol = root.Symbol;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString$1 = objectProto$1.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString$1.call(value);\n}\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag$1 && symToStringTag$1 in Object(value) ? getRawTag(value) : objectToString(value);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = _typeof$1(value);\n return value != null && (type == 'object' || type == 'function');\n}\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n}();\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return func + '';\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto$1 = Function.prototype,\n objectProto$2 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$1 = funcProto$1.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto$2.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' + funcToString$1.call(hasOwnProperty$1).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/* Built-in method references that are verified to be native. */\nvar Map$1 = getNative(root, 'Map');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto$3 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$2 = objectProto$3.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty$2.call(data, key) ? data[key] : undefined;\n}\n\n/** Used for built-in method references. */\nvar objectProto$4 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$3 = objectProto$4.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty$3.call(data, key);\n}\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$1 = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED$1 : value;\n return this;\n}\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map$1 || ListCache)(),\n 'string': new Hash()\n };\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = _typeof$1(value);\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map$1 || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$2 = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED$2);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n this.__data__ = new MapCache();\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function (othValue, othIndex) {\n if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$1 = 1,\n COMPARE_UNORDERED_FLAG$1 = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n case arrayBufferTag:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n case errorTag:\n return object.name == other.name && object.message == other.message;\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == other + '';\n case mapTag:\n var convert = mapToArray;\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG$1;\n convert || (convert = setToArray);\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG$1;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray$1 = Array.isArray;\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray$1(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/** Used for built-in method references. */\nvar objectProto$5 = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto$5.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function (symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && _typeof$1(value) == 'object';\n}\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/** Used for built-in method references. */\nvar objectProto$6 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$4 = objectProto$6.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable$1 = objectProto$6.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function () {\n return arguments;\n}()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty$4.call(value, 'callee') && !propertyIsEnumerable$1.call(value, 'callee');\n};\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\n/** Detect free variable `exports`. */\nvar freeExports = (typeof exports === \"undefined\" ? \"undefined\" : _typeof$1(exports)) == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && (typeof module === \"undefined\" ? \"undefined\" : _typeof$1(module)) == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = _typeof$1(value);\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER$1;\n}\n\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag$1 = '[object Boolean]',\n dateTag$1 = '[object Date]',\n errorTag$1 = '[object Error]',\n funcTag$1 = '[object Function]',\n mapTag$1 = '[object Map]',\n numberTag$1 = '[object Number]',\n objectTag = '[object Object]',\n regexpTag$1 = '[object RegExp]',\n setTag$1 = '[object Set]',\n stringTag$1 = '[object String]',\n weakMapTag = '[object WeakMap]';\nvar arrayBufferTag$1 = '[object ArrayBuffer]',\n dataViewTag$1 = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag$1] = typedArrayTags[boolTag$1] = typedArrayTags[dataViewTag$1] = typedArrayTags[dateTag$1] = typedArrayTags[errorTag$1] = typedArrayTags[funcTag$1] = typedArrayTags[mapTag$1] = typedArrayTags[numberTag$1] = typedArrayTags[objectTag] = typedArrayTags[regexpTag$1] = typedArrayTags[setTag$1] = typedArrayTags[stringTag$1] = typedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n\n/** Detect free variable `exports`. */\nvar freeExports$1 = (typeof exports === \"undefined\" ? \"undefined\" : _typeof$1(exports)) == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule$1 = freeExports$1 && (typeof module === \"undefined\" ? \"undefined\" : _typeof$1(module)) == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports$1 && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = function () {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule$1 && freeModule$1.require && freeModule$1.require('util').types;\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}();\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/** Used for built-in method references. */\nvar objectProto$7 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$5 = objectProto$7.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray$1(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n for (var key in value) {\n if ((inherited || hasOwnProperty$5.call(value, key)) && !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n isBuff && (key == 'offset' || key == 'parent') ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') ||\n // Skip index properties.\n isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$8 = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto$8;\n return value === proto;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/** Used for built-in method references. */\nvar objectProto$9 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$6 = objectProto$9.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty$6.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys$1(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys$1, getSymbols);\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$2 = 1;\n\n/** Used for built-in method references. */\nvar objectProto$a = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$7 = objectProto$a.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG$2,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty$7.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\n/* Built-in method references that are verified to be native. */\nvar Promise$2 = getNative(root, 'Promise');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\n/** `Object#toString` result references. */\nvar mapTag$2 = '[object Map]',\n objectTag$1 = '[object Object]',\n promiseTag = '[object Promise]',\n setTag$2 = '[object Set]',\n weakMapTag$1 = '[object WeakMap]';\nvar dataViewTag$2 = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map$1),\n promiseCtorString = toSource(Promise$2),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag$2 || Map$1 && getTag(new Map$1()) != mapTag$2 || Promise$2 && getTag(Promise$2.resolve()) != promiseTag || Set && getTag(new Set()) != setTag$2 || WeakMap && getTag(new WeakMap()) != weakMapTag$1) {\n getTag = function getTag(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag$1 ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag$2;\n case mapCtorString:\n return mapTag$2;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag$2;\n case weakMapCtorString:\n return weakMapTag$1;\n }\n }\n return result;\n };\n}\nvar getTag$1 = getTag;\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$3 = 1;\n\n/** `Object#toString` result references. */\nvar argsTag$2 = '[object Arguments]',\n arrayTag$1 = '[object Array]',\n objectTag$2 = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto$b = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$8 = objectProto$b.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray$1(object),\n othIsArr = isArray$1(other),\n objTag = objIsArr ? arrayTag$1 : getTag$1(object),\n othTag = othIsArr ? arrayTag$1 : getTag$1(other);\n objTag = objTag == argsTag$2 ? objectTag$2 : objTag;\n othTag = othTag == argsTag$2 ? objectTag$2 : othTag;\n var objIsObj = objTag == objectTag$2,\n othIsObj = othTag == objectTag$2,\n isSameTag = objTag == othTag;\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack());\n return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG$3)) {\n var objIsWrapped = objIsObj && hasOwnProperty$8.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty$8.call(other, '__wrapped__');\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack());\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$4 = 1,\n COMPARE_UNORDERED_FLAG$2 = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack();\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$4 | COMPARE_UNORDERED_FLAG$2, customizer, stack) : result)) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys$1(object),\n length = result.length;\n while (length--) {\n var key = result[length],\n value = object[key];\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function (object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue && (srcValue !== undefined || key in Object(object));\n };\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function (object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/** `Object#toString` result references. */\nvar symbolTag$1 = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return _typeof$1(value) == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag$1;\n}\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray$1(value)) {\n return false;\n }\n var type = _typeof$1(value);\n if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n}\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || resolver != null && typeof resolver != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function memoized() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache)();\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function (key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n var cache = result.cache;\n return result;\n}\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function (string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function (match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : number || match);\n });\n return result;\n});\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto$1 = _Symbol ? _Symbol.prototype : undefined,\n symbolToString = symbolProto$1 ? symbolProto$1.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray$1(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray$1(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$1 = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY$1 ? '-0' : result;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n var index = 0,\n length = path.length;\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return index && index == length ? object : undefined;\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n var index = -1,\n length = path.length,\n result = false;\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) && (isArray$1(object) || isArguments(object));\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$5 = 1,\n COMPARE_UNORDERED_FLAG$3 = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function (object) {\n var objValue = get(object, path);\n return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$5 | COMPARE_UNORDERED_FLAG$3);\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function (object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function (object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (_typeof$1(value) == 'object') {\n return isArray$1(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function (object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys$1);\n}\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function (collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n while (fromRight ? index-- : ++index < length) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n baseEach(collection, function (value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray$1(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee));\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray$1(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function (collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate);\n collection = keys$1(collection);\n predicate = function predicate(key) {\n return iteratee(iterable[key], key, iterable);\n };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n while (fromRight ? index-- : ++index < length) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$2 = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY$2 || value === -INFINITY$2) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate), index);\n}\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function (value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT$1 = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT$1);\n }\n return function () {\n var args = arguments;\n switch (args.length) {\n case 0:\n return !predicate.call(this);\n case 1:\n return !predicate.call(this, args[0]);\n case 2:\n return !predicate.call(this, args[0], args[1]);\n case 3:\n return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\n/**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\nfunction reject$1(collection, predicate) {\n var func = isArray$1(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(baseIteratee(predicate)));\n}\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n case 1:\n return func.call(thisArg, args[0]);\n case 2:\n return func.call(thisArg, args[0], args[1]);\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n if (start < 0) {\n start = -start > length ? 0 : length + start;\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : end - start >>> 0;\n start >>>= 0;\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\n/**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\nfunction baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax$1 = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax$1(start === undefined ? func.length - 1 : start, 0);\n return function () {\n var args = arguments,\n index = -1,\n length = nativeMax$1(args.length - start, 0),\n array = Array(length);\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function () {\n return value;\n };\n}\nvar defineProperty = function () {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}();\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function (func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n return function () {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\nvar invokeMap = baseRest(function (collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n baseEach(collection, function (value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n});\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\n/** Used for built-in method references. */\nvar arrayProto$1 = Array.prototype;\n\n/** Built-in value references. */\nvar splice$1 = arrayProto$1.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice$1.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n}\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n predicate = baseIteratee(predicate);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n}\nvar wellKnownNamespaces = {\n x: 'adobe:ns:meta/',\n xml: 'http://www.w3.org/1999/xhtml',\n rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n dc: 'http://purl.org/dc/elements/1.1/',\n exif: 'http://ns.adobe.com/exif/1.0',\n stDim: 'http://ns.adobe.com/xap/1.0/sType/Dimensions#',\n stFnt: 'http://ns.adobe.com/xap/1.0/sType/Font#',\n tsc: 'http://www.techsmith.com/xmp/tsc/',\n tscDM: 'http://www.techsmith.com/xmp/tscDM/',\n tscHS: 'http://www.techsmith.com/xmp/tscHS/',\n tscIQ: 'http://www.techsmith.com/xmp/tscIQ/',\n xmp: 'http://ns.adobe.com/xap/1.0/',\n xmpDM: 'http://ns.adobe.com/xmp/1.0/DynamicMedia/',\n xmpG: 'http://ns.adobe.com/xap/1.0/g/',\n xmpMM: 'http://ns.adobe.com/xap/1.0/mm/'\n};\n\n/**\n * Namespace resolver for xmp namespaces.\n * @function namespaceResolver\n * @param {String} prefix - XML namespace prefix\n * @static\n * @return {String} The namespace corresponding to the prefix or null if not found\n */\nvar namespaceResolver = function namespaceResolver(prefix) {\n return wellKnownNamespaces[prefix] || null;\n};\n\n/** `Object#toString` result references. */\nvar stringTag$2 = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || !isArray$1(value) && isObjectLike(value) && baseGetTag(value) == stringTag$2;\n}\n\n/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\nvar parseXml;\n\n// Taken from http://stackoverflow.com/a/17604251\nif (typeof window.DOMParser !== 'undefined') {\n var DOMParserProto = DOMParser.prototype;\n var realParseFromString = DOMParserProto.parseFromString;\n\n // Firefox/Opera/IE throw errors on unsupported types\n var canParseHtmlNatively;\n try {\n // WebKit returns null on unsupported types\n if (new DOMParser().parseFromString('', 'text/html')) {\n // text/html parsing is natively supported\n canParseHtmlNatively = true;\n }\n } catch (ex) {\n // nothing to do\n }\n if (!canParseHtmlNatively) {\n DOMParserProto.parseFromString = function (markup, type) {\n if (/^\\s*text\\/html\\s*(?:;|$)/i.test(type)) {\n var doc = document.implementation.createHTMLDocument('');\n var docElement = doc.documentElement;\n var firstElement;\n docElement.innerHTML = markup;\n firstElement = docElement.firstElementChild;\n if (docElement.childElementCount === 1 && firstElement.localName.toLowerCase() === 'html') {\n doc.replaceChild(firstElement, docElement);\n }\n return doc;\n }\n return realParseFromString.apply(this, arguments);\n };\n }\n parseXml = function parseXml(xmlStr, contentType) {\n contentType = contentType || 'text/xml';\n return new window.DOMParser().parseFromString(xmlStr, contentType);\n };\n} else if (typeof window.ActiveXObject !== 'undefined' && new window.ActiveXObject('Microsoft.XMLDOM')) {\n parseXml = function parseXml(xmlStr) {\n var xmlDoc = new window.ActiveXObject('Microsoft.XMLDOM');\n xmlDoc.async = 'false';\n xmlDoc.loadXML(xmlStr);\n return xmlDoc;\n };\n} else {\n throw new Error('No XML parser found');\n}\nvar xmlDocFragmentToString = function xmlDocFragmentToString(xmlDoc) {\n var xmlSerializer = new XMLSerializer();\n return xmlSerializer.serializeToString(xmlDoc);\n};\nvar xmlDocToString = function xmlDocToString(xmlDoc) {\n return '\\n' + this.xmlDocFragmentToString(xmlDoc);\n};\nvar getElementText = function getElementText(element) {\n return element.textContent;\n};\nvar hasAttribute = function hasAttribute(element, attributeName) {\n var attrValue = element.getAttribute(attributeName);\n return !isNil(attrValue);\n};\nvar hasAttributeWithValue = function hasAttributeWithValue(element, attributeName, value) {\n var attrValue = element.getAttribute(attributeName);\n return attrValue === value;\n};\nvar createDocument = function createDocument() {\n var xmlDocument = document.implementation.createDocument('', '', null);\n return xmlDocument;\n};\nvar createElement = function createElement(doc, name) {\n var element = doc.createElement(name);\n return element;\n};\nvar createElementWithValue = function createElementWithValue(doc, name, value) {\n var element = doc.createElement(name);\n element.appendChild(doc.createTextNode(value));\n return element;\n};\nvar getElementsByTagName = function getElementsByTagName(element, name) {\n var ns = '*';\n var childElements = element.getElementsByTagNameNS(ns, name);\n return childElements;\n};\nvar getFirstElementByTagName = function getFirstElementByTagName(element, name) {\n var childElements = getElementsByTagName(element, name);\n return childElements && childElements[0] ? childElements[0] : null;\n};\nvar getFirstChildElementTextByTagName = function getFirstChildElementTextByTagName(element, name) {\n var childElement = getFirstElementByTagName(element, name);\n return childElement ? getElementText(childElement) : null;\n};\nvar XmlUtility = function XmlUtility() {}; // eslint-disable-line no-empty-function\nXmlUtility.prototype.parseXml = parseXml;\nXmlUtility.prototype.xmlDocFragmentToString = xmlDocFragmentToString;\nXmlUtility.prototype.xmlDocToString = xmlDocToString;\nXmlUtility.prototype.getElementText = getElementText;\nXmlUtility.prototype.hasAttribute = hasAttribute;\nXmlUtility.prototype.hasAttributeWithValue = hasAttributeWithValue;\nXmlUtility.prototype.createDocument = createDocument;\nXmlUtility.prototype.createElement = createElement;\nXmlUtility.prototype.createElementWithValue = createElementWithValue;\nXmlUtility.prototype.getElementsByTagName = getElementsByTagName;\nXmlUtility.prototype.getFirstElementByTagName = getFirstElementByTagName;\nXmlUtility.prototype.getFirstChildElementTextByTagName = getFirstChildElementTextByTagName;\nvar isDocument = function isDocument(docOrElement) {\n return isFunction(docOrElement.evaluate);\n};\nvar getFirstElementByTagNameNSPrefix = function getFirstElementByTagNameNSPrefix(docOrElement, name) {\n if (isDocument(docOrElement)) {\n return docOrElement.evaluate('//' + name, docOrElement, this.namespaceResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n var childElements = this.getElementsByTagNameNSPrefix(docOrElement, name);\n return childElements && childElements[0] ? childElements[0] : undefined;\n};\nvar getElementsByTagNameNSPrefix = function getElementsByTagNameNSPrefix(element, name) {\n if (!element) {\n return null;\n }\n if (name.indexOf(':') === -1) {\n throw new Error('getElementsByTagNameNSPrefix requires the name passed in to have a namespace prefix. getElementsByTagName can be used if you do not know the prefix.');\n }\n var tokens = name.split(':');\n var ns = this.namespaceResolver(tokens[0]);\n var tagName = name.split(':')[1];\n var childElements = element.getElementsByTagNameNS(ns, tagName);\n return childElements;\n};\nvar getFirstChildElementTextByTagNameNSPrefix = function getFirstChildElementTextByTagNameNSPrefix(element, name) {\n var childElement = this.getFirstElementByTagNameNSPrefix(element, name);\n return childElement ? this.getElementText(childElement) : undefined;\n};\nvar createDocumentNS = function createDocumentNS(ns, prefix, name) {\n var xmlDocument = document.implementation.createDocument(ns, prefix + ':' + name, null);\n return xmlDocument;\n};\nvar createElementNS = function createElementNS(doc, ns, prefix, name) {\n var element = doc.createElementNS(ns, prefix + ':' + name);\n return element;\n};\nvar createElementNSWithValue = function createElementNSWithValue(doc, ns, prefix, name, value) {\n var element = createElementNS(doc, ns, prefix, name);\n element.appendChild(doc.createTextNode(value));\n return element;\n};\nvar getNSInfo = function getNSInfo(tagName, namespaceResolver) {\n var nameParts = tagName.split(':', 2);\n if (nameParts.length !== 2) {\n throw new Error('invalid tag name [' + tagName + '] should contain \\':\\' to define namespace');\n } else if (!namespaceResolver(nameParts[0])) {\n throw new Error('invalid namespace prefix [' + nameParts[0] + '] was not able to be mapped to known namespace');\n }\n return {\n nsUrl: namespaceResolver(nameParts[0]),\n nsPrefix: nameParts[0],\n tagShortName: nameParts[1]\n };\n};\nvar createElementFromObject = function createElementFromObject(tagInfo, doc) {\n doc = doc || this.createDocument();\n var that = this;\n if (isString(tagInfo)) {\n return createElement(doc, tagInfo);\n } else if (_typeof$1(tagInfo) === 'object' && typeof tagInfo.toXmp === 'function') {\n return tagInfo.toXmp();\n } else if (_typeof$1(tagInfo) === 'object' && tagInfo.name) {\n var nsInfo = getNSInfo(tagInfo.name, this.namespaceResolver);\n var newElement = createElementNS(doc, nsInfo.nsUrl, nsInfo.nsPrefix, nsInfo.tagShortName);\n if (tagInfo.atts && _typeof$1(tagInfo.atts) === 'object') {\n forEach(tagInfo.atts, function (attrVal, attrName) {\n if (!isNil(attrVal)) {\n var attNsInfo = getNSInfo(attrName, that.namespaceResolver);\n if (attNsInfo.nsPrefix !== 'xml') {\n newElement.setAttributeNS(attNsInfo.nsUrl, attrName, attrVal);\n } else {\n newElement.setAttribute(attrName, attrVal);\n }\n }\n });\n }\n if (tagInfo.children && Array.isArray(tagInfo.children)) {\n forEach(tagInfo.children, function (child) {\n if (child) {\n newElement.appendChild(that.createElementFromObject(child, doc));\n }\n });\n }\n if (tagInfo.text !== undefined && tagInfo.text !== null) {\n newElement.textContent = tagInfo.text;\n }\n return newElement;\n }\n throw new Error('invalid tag info');\n};\nvar NamespaceXmlUtility = function NamespaceXmlUtility(namespaceResolver) {\n if (!namespaceResolver) {\n throw new Error('namespaceResolver is required');\n }\n this.namespaceResolver = namespaceResolver;\n};\nNamespaceXmlUtility.prototype = Object.create(XmlUtility.prototype);\nNamespaceXmlUtility.prototype.getFirstElementByTagNameNSPrefix = getFirstElementByTagNameNSPrefix;\nNamespaceXmlUtility.prototype.getElementsByTagNameNSPrefix = getElementsByTagNameNSPrefix;\nNamespaceXmlUtility.prototype.getFirstChildElementTextByTagNameNSPrefix = getFirstChildElementTextByTagNameNSPrefix;\nNamespaceXmlUtility.prototype.createDocumentNS = createDocumentNS;\nNamespaceXmlUtility.prototype.createElementFromObject = createElementFromObject;\nNamespaceXmlUtility.prototype.createElementNS = createElementNS;\nNamespaceXmlUtility.prototype.createElementNSWithValue = createElementNSWithValue;\nvar LanguageIdentifier = function LanguageIdentifier(languageIdentifier) {\n if (typeof languageIdentifier !== 'string') {\n throw new Error('Language Identifier is expecting a string, but got (' + languageIdentifier + ')');\n }\n var _identifier = languageIdentifier.toLowerCase();\n var _language = '';\n var _region = '';\n var parseLanguageIdentifier = function parseLanguageIdentifier() {\n var languageIdentifierParts = _identifier.split('-');\n if (languageIdentifierParts.length > 1) {\n _region = languageIdentifierParts.pop();\n }\n _language = languageIdentifierParts.join('-');\n };\n var toPOJO = function toPOJO() {\n return {\n identifier: _identifier,\n language: _language,\n region: _region\n };\n };\n parseLanguageIdentifier();\n return Object.defineProperties({\n toPOJO: toPOJO\n }, {\n identifier: {\n get: function get() {\n return _identifier;\n }\n },\n language: {\n get: function get() {\n return _language;\n }\n },\n region: {\n get: function get() {\n return _region;\n }\n }\n });\n};\n\n/** @module LanguageIdentifier */\nvar LanguageIdentifier$1 = {\n /**\n * Factory method that returns a new LanguageIdentifier object.\n * @function create\n * @param {string} languageIdentifier - RFC 3066 notation language string\n * @static\n * @return {module:LanguageIdentifier} new LanguageIdentifier instance\n */\n create: LanguageIdentifier\n};\nvar _identifiers = Object.freeze({\n \"default\": 'default',\n af: {\n name: 'Afrikaans',\n displayName: 'Afrikaans',\n regions: {\n za: 'South Africa'\n }\n },\n sq: {\n name: 'Albanian',\n displayName: 'Shqip',\n regions: {\n al: 'Albania'\n }\n },\n ar: {\n name: 'Arabic',\n displayName: 'العربية',\n regions: {\n dz: 'Algeria',\n bh: 'Bahrain',\n eg: 'Egypt',\n iq: 'Iraq',\n jo: 'Jordan',\n kw: 'Kuwait',\n lb: 'Lebanon',\n ly: 'Libya',\n ma: 'Morocco',\n om: 'Oman',\n qa: 'Qatar',\n sa: 'Saudi Arabia',\n sy: 'Syria',\n tn: 'Tunisia',\n ae: 'United Arab Emirates',\n ye: 'Yemen'\n }\n },\n hy: {\n name: 'Armenian',\n displayName: 'Արևելահայերեն',\n regions: {\n am: 'Armenia'\n }\n },\n 'cy-az': {\n name: 'Azeri (Cyrillic)',\n displayName: 'Азәрбајҹан дили',\n regions: {\n az: 'Azerbaijan'\n }\n },\n 'lt-az': {\n name: 'Azeri (Latin)',\n displayName: 'Azərbaycanca',\n regions: {\n az: 'Azerbaijan'\n }\n },\n eu: {\n name: 'Basque',\n displayName: 'Euskara',\n regions: {\n es: 'Basque'\n }\n },\n be: {\n name: 'Belarusian',\n displayName: 'Беларуская',\n regions: {\n by: 'Belarus'\n }\n },\n bg: {\n name: 'Bulgarian',\n displayName: 'Български',\n regions: {\n bg: 'Bulgaria'\n }\n },\n ca: {\n name: 'Catalan',\n displayName: 'Català',\n regions: {\n es: 'Catalan'\n }\n },\n zh: {\n name: 'Chinese',\n displayName: '简体中文',\n regions: {\n cn: 'China',\n hk: 'Hong Kong SAR',\n mo: 'Macau SAR',\n sg: 'Singapore',\n tw: 'Taiwan',\n chs: '(Simplified)',\n cht: '(Traditional)'\n }\n },\n hr: {\n name: 'Croatian',\n displayName: 'hrvatski',\n regions: {\n hr: 'Croatia'\n }\n },\n cs: {\n name: 'Czech',\n displayName: 'Čeština',\n regions: {\n cz: 'Czech Republic'\n }\n },\n da: {\n name: 'Danish',\n displayName: 'Dansk',\n regions: {\n dk: 'Denmark'\n }\n },\n div: {\n name: 'Dhivehi',\n displayName: 'ދިވެހި',\n regions: {\n mv: 'Maldives'\n }\n },\n nl: {\n name: 'Dutch',\n displayName: 'Nederlands',\n regions: {\n be: 'Belgium',\n nl: 'The Netherlands'\n }\n },\n en: {\n name: 'English',\n displayName: 'English',\n regions: {\n au: 'Australia',\n bz: 'Belize',\n ca: 'Canada',\n cb: 'Caribbean',\n ie: 'Ireland',\n jm: 'Jamaica',\n nz: 'New Zealand',\n ph: 'Philippines',\n za: 'South Africa',\n tt: 'Trinidad and Tobago',\n gb: 'United Kingdom',\n us: 'United States',\n zw: 'Zimbabwe'\n }\n },\n et: {\n name: 'Estonian',\n displayName: 'Eesti',\n regions: {\n ee: 'Estonia'\n }\n },\n fo: {\n name: 'Faroese',\n displayName: 'Føroyskt',\n regions: {\n fo: 'Faroe Islands'\n }\n },\n fa: {\n name: 'Farsi',\n displayName: 'فارسی',\n regions: {\n ir: 'Iran'\n }\n },\n fi: {\n name: 'Finnish',\n displayName: 'Suomi',\n regions: {\n fi: 'Finland'\n }\n },\n fr: {\n name: 'French',\n displayName: 'Français',\n regions: {\n be: 'Belgium',\n ca: 'Canada',\n fr: 'France',\n lu: 'Luxembourg',\n mc: 'Monaco',\n ch: 'Switzerland'\n }\n },\n gl: {\n name: 'Galician',\n displayName: 'galego',\n regions: {\n es: 'Galician'\n }\n },\n ka: {\n name: 'Georgian',\n displayName: 'ქართული',\n regions: {\n ge: 'Georgia'\n }\n },\n de: {\n name: 'German',\n displayName: 'Deutsch',\n regions: {\n at: 'Austria',\n de: 'Germany',\n li: 'Liechtenstein',\n lu: 'Luxembourg',\n ch: 'Switzerland'\n }\n },\n el: {\n name: 'Greek',\n displayName: 'Ελληνικά',\n regions: {\n gr: 'Greece'\n }\n },\n gu: {\n name: 'Gujarati',\n displayName: 'ગુજરાતી',\n regions: {\n \"in\": 'India'\n }\n },\n he: {\n name: 'Hebrew',\n displayName: 'עברית',\n regions: {\n il: 'Israel'\n }\n },\n hi: {\n name: 'Hindi',\n displayName: 'हिन्दी',\n regions: {\n \"in\": 'India'\n }\n },\n hu: {\n name: 'Hungarian',\n displayName: 'Magyar',\n regions: {\n hu: 'Hungary'\n }\n },\n is: {\n name: 'Icelandic',\n displayName: 'Íslenska',\n regions: {\n is: 'Iceland'\n }\n },\n id: {\n name: 'Indonesian',\n displayName: 'Bahasa Indonesia',\n regions: {\n id: 'Indonesia'\n }\n },\n it: {\n name: 'Italian',\n displayName: 'Italiano',\n regions: {\n it: 'Italy',\n ch: 'Switzerland'\n }\n },\n ja: {\n name: 'Japanese',\n displayName: '日本語',\n regions: {\n jp: 'Japan'\n }\n },\n kn: {\n name: 'Kannada',\n displayName: 'ಕನ್ನಡ',\n regions: {\n \"in\": 'India'\n }\n },\n kk: {\n name: 'Kazakh',\n displayName: 'Қазақ Tілі',\n regions: {\n kz: 'Kazakhstan'\n }\n },\n kok: {\n name: 'Konkani',\n displayName: 'कोंकणी',\n regions: {\n \"in\": 'India'\n }\n },\n ko: {\n name: 'Korean',\n displayName: '한국어',\n regions: {\n kr: 'Korea'\n }\n },\n ky: {\n name: 'Kyrgyz',\n displayName: 'кыргызча',\n regions: {\n kz: 'Kazakhstan'\n }\n },\n lv: {\n name: 'Latvian',\n displayName: 'Latviešu',\n regions: {\n lv: 'Latvia'\n }\n },\n lt: {\n name: 'Lithuanian',\n displayName: 'Lietuvių',\n regions: {\n lt: 'Lithuania'\n }\n },\n mk: {\n name: 'Macedonian',\n displayName: 'Mакедонски',\n regions: {\n mk: '(FYROM)'\n }\n },\n ms: {\n name: 'Malay',\n displayName: 'Bahasa Melayu',\n regions: {\n bn: 'Brunei',\n my: 'Malaysia'\n }\n },\n mr: {\n name: 'Marathi',\n displayName: 'मराठी',\n regions: {\n \"in\": 'India'\n }\n },\n mn: {\n name: 'Mongolian',\n displayName: 'Монгол Хэл',\n regions: {\n mn: 'Mongolia'\n }\n },\n nb: {\n name: 'Norwegian (Bokmål)',\n displayName: 'Norsk (Bokmål)',\n regions: {\n no: 'Norway'\n }\n },\n nn: {\n name: 'Norwegian (Nynorsk)',\n displayName: 'Norsk (Nynorsk)',\n regions: {\n no: 'Norway'\n }\n },\n pl: {\n name: 'Polish',\n displayName: 'Polsk',\n regions: {\n pl: 'Poland'\n }\n },\n pt: {\n name: 'Portuguese',\n displayName: 'Português',\n regions: {\n br: 'Brazil',\n pt: 'Portugal'\n }\n },\n pa: {\n name: 'Punjabi',\n displayName: 'ਪੰਜਾਬੀ',\n regions: {\n \"in\": 'India'\n }\n },\n ro: {\n name: 'Romanian',\n displayName: 'Română',\n regions: {\n ro: 'Romania'\n }\n },\n ru: {\n name: 'Russian',\n displayName: 'Русский',\n regions: {\n ru: 'Russia'\n }\n },\n sa: {\n name: 'Sanskrit',\n displayName: 'संस्कृतम्',\n regions: {\n \"in\": 'India'\n }\n },\n 'cy-sr': {\n name: 'Serbian (Cyrillic)',\n displayName: 'Српски',\n regions: {\n sp: 'Serbia'\n }\n },\n 'lt-sr': {\n name: 'Serbian (Latin)',\n displayName: 'Srpski',\n regions: {\n sp: 'Serbia'\n }\n },\n sk: {\n name: 'Slovak',\n displayName: 'Slovenčina',\n regions: {\n sk: 'Slovakia'\n }\n },\n sl: {\n name: 'Slovenian',\n displayName: 'Slovenščina',\n regions: {\n si: 'Slovenia'\n }\n },\n es: {\n name: 'Spanish',\n displayName: 'Español',\n regions: {\n ar: 'Argentina',\n bo: 'Bolivia',\n cl: 'Chile',\n co: 'Colombia',\n cr: 'Costa Rica',\n \"do\": 'Dominican Republic',\n ec: 'Ecuador',\n sv: 'El Salvador',\n gt: 'Guatemala',\n hn: 'Honduras',\n mx: 'Mexico',\n ni: 'Nicaragua',\n pa: 'Panama',\n py: 'Paraguay',\n pe: 'Peru',\n pr: 'Puerto Rico',\n es: 'Spain',\n uy: 'Uruguay',\n ve: 'Venezuela'\n }\n },\n sw: {\n name: 'Swahili',\n displayName: 'Kiswahili',\n regions: {\n ke: 'Kenya'\n }\n },\n sv: {\n name: 'Swedish',\n displayName: 'Svenska',\n regions: {\n fi: 'Finland',\n se: 'Sweden'\n }\n },\n syr: {\n name: 'Syriac',\n displayName: 'ܠܫܢܐ ܣܘܪܝܝܐ‎',\n regions: {\n sy: 'Syria'\n }\n },\n ta: {\n name: 'Tamil',\n displayName: 'தமிழ்‎',\n regions: {\n \"in\": 'India'\n }\n },\n tt: {\n name: 'Tatar',\n displayName: 'татар теле',\n regions: {\n ru: 'Russia'\n }\n },\n te: {\n name: 'Telugu',\n displayName: 'తెలుగు',\n regions: {\n \"in\": 'India'\n }\n },\n th: {\n name: 'Thai',\n displayName: 'ไทย',\n regions: {\n th: 'Thailand'\n }\n },\n tr: {\n name: 'Turkish',\n displayName: 'Türkçe',\n regions: {\n tr: 'Turkey'\n }\n },\n uk: {\n name: 'Ukrainian',\n displayName: 'Українська',\n regions: {\n ua: 'Ukraine'\n }\n },\n ur: {\n name: 'Urdu',\n displayName: 'اُردُو',\n regions: {\n pk: 'Pakistan'\n }\n },\n 'cy-uz': {\n name: 'Uzbek (Cyrillic)',\n displayName: 'Ўзбек',\n regions: {\n uz: 'Uzbekistan'\n }\n },\n 'lt-uz': {\n name: 'Uzbek (Latin)',\n displayName: 'oʻzbek tili',\n regions: {\n uz: 'Uzbekistan'\n }\n },\n vi: {\n name: 'Vietnamese',\n displayName: 'Tiếng Việt',\n regions: {\n vn: 'Vietnam'\n }\n }\n});\n\n/** @module LanguageIdentifiers */\n\n/**\n * Check if a language is supported.\n * @function isSupportedLanguage\n * @param {string} languageIdentifierString - RFC 3066 notation language string\n * @static\n * @return {boolean} is the language found in the languageIdentifier is found.\n */\nvar isSupportedLanguage = function isSupportedLanguage(languageIdentifierString) {\n var identifier = LanguageIdentifier$1.create(languageIdentifierString);\n return _identifiers[identifier.language] !== undefined;\n};\nvar languageIdentifiers = Object.defineProperties({\n isSupportedLanguage: isSupportedLanguage\n}, {\n identifiers: {\n get: function get() {\n return _identifiers;\n }\n }\n});\n\n/**\n * @this {Promise}\n */\nfunction finallyConstructor$1(callback) {\n var constructor = this.constructor;\n return this.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n return constructor.reject(reason);\n });\n });\n}\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc$1 = setTimeout;\nfunction noop$2() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind$1(fn, thisArg) {\n return function () {\n fn.apply(thisArg, arguments);\n };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise$1$1(fn) {\n if (!(this instanceof Promise$1$1)) throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n /** @type {!number} */\n this._state = 0;\n /** @type {!boolean} */\n this._handled = false;\n /** @type {Promise|undefined} */\n this._value = undefined;\n /** @type {!Array} */\n this._deferreds = [];\n doResolve$1(fn, this);\n}\nfunction handle$1(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise$1$1._immediateFn(function () {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve$1 : reject$1$1)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject$1$1(deferred.promise, e);\n return;\n }\n resolve$1(deferred.promise, ret);\n });\n}\nfunction resolve$1(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');\n if (newValue && (_typeof$1(newValue) === 'object' || typeof newValue === 'function')) {\n var then = newValue.then;\n if (newValue instanceof Promise$1$1) {\n self._state = 3;\n self._value = newValue;\n finale$1(self);\n return;\n } else if (typeof then === 'function') {\n doResolve$1(bind$1(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale$1(self);\n } catch (e) {\n reject$1$1(self, e);\n }\n}\nfunction reject$1$1(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale$1(self);\n}\nfunction finale$1(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise$1$1._immediateFn(function () {\n if (!self._handled) {\n Promise$1$1._unhandledRejectionFn(self._value);\n }\n });\n }\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle$1(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler$1(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve$1(fn, self) {\n var done = false;\n try {\n fn(function (value) {\n if (done) return;\n done = true;\n resolve$1(self, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject$1$1(self, reason);\n });\n } catch (ex) {\n if (done) return;\n done = true;\n reject$1$1(self, ex);\n }\n}\nPromise$1$1.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise$1$1.prototype.then = function (onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop$2);\n handle$1(this, new Handler$1(onFulfilled, onRejected, prom));\n return prom;\n};\nPromise$1$1.prototype['finally'] = finallyConstructor$1;\nPromise$1$1.all = function (arr) {\n return new Promise$1$1(function (resolve, reject) {\n if (!arr || typeof arr.length === 'undefined') throw new TypeError('Promise.all accepts an array');\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n try {\n if (val && (_typeof$1(val) === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(val, function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\nPromise$1$1.resolve = function (value) {\n if (value && _typeof$1(value) === 'object' && value.constructor === Promise$1$1) {\n return value;\n }\n return new Promise$1$1(function (resolve) {\n resolve(value);\n });\n};\nPromise$1$1.reject = function (value) {\n return new Promise$1$1(function (resolve, reject) {\n reject(value);\n });\n};\nPromise$1$1.race = function (values) {\n return new Promise$1$1(function (resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise$1$1._immediateFn = typeof setImmediate === 'function' && function (fn) {\n setImmediate(fn);\n} || function (fn) {\n setTimeoutFunc$1(fn, 0);\n};\nPromise$1$1._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\nvar UndoAction = function UndoAction(undoFunc, undoParams, redoFunc, redoParams) {\n var execute = function execute() {\n return new Promise$1$1(function (resolve, reject) {\n try {\n undoFunc(undoParams);\n } catch (error) {\n reject(error);\n }\n var redo = UndoAction(redoFunc, redoParams, undoFunc, undoParams);\n resolve(redo);\n });\n };\n return {\n execute: execute\n };\n};\nvar NoOpAction = function NoOpAction() {\n return {\n execute: function execute() {\n return Promise$1$1.resolve();\n }\n };\n};\n\n/** @module UndoAction */\nvar UndoAction$1 = {\n /**\n * Factory method that returns a new UndoAction object.\n * @function create\n * @param {Function} undoFunc - The function that will be used to undo the action.\n * @param {Object} undoParams - Parameters that will be passed to undo function.\n * @param {Function} redoFunc - The function that will be use to redo the action.\n * @param {Object} redoParams - Parameters that will be passed to redo function.\n * @static\n * @return {module:UndoAction} new Command instance\n */\n create: function create(undoFunc, undoParams, redoFunc, redoParams) {\n return UndoAction(undoFunc, undoParams, redoFunc, redoParams);\n },\n noOp: function noOp() {\n return NoOpAction();\n }\n};\nvar ImageRectangle = function ImageRectangle(propertyInfo) {\n var _x;\n var _y;\n var _width;\n var _height;\n if (isString(propertyInfo)) {\n var tokens = propertyInfo.split(',');\n _x = Number(tokens[0]);\n _y = Number(tokens[1]);\n _width = Number(tokens[2]);\n _height = Number(tokens[3]);\n } else if (isObject(propertyInfo)) {\n _x = propertyInfo.x;\n _y = propertyInfo.y;\n _width = propertyInfo.width;\n _height = propertyInfo.height;\n } else {\n throw new Error('ImageRectangle is expecting a rectangle property string format: \"x, y, width, height\"');\n }\n var _public = Object.defineProperties({}, {\n x: {\n get: function get() {\n return _x;\n }\n },\n y: {\n get: function get() {\n return _y;\n }\n },\n width: {\n get: function get() {\n return _width;\n }\n },\n height: {\n get: function get() {\n return _height;\n }\n }\n });\n _public.toPOJO = function () {\n return {\n x: _x,\n y: _y,\n width: _width,\n height: _height\n };\n };\n _public.toXmpAtt = function () {\n return [_x, _y, _width, _height].join(', ');\n };\n return _public;\n};\n\n/** @module ImageRectangle */\nvar ImageRectangle$1 = {\n /**\n * Factory method that returns a new ImageRectangle object.\n * @function create\n * @param {String|Object} propertyInfo - Required property string of the rectangle. A Rectangle object\n * is an area defined by its position, as indicated by its top-left corner point (x, y) and by its width\n * and its height. The properties should be comma separated in the following format \"x, y, width, height\". Alternatively,\n * this can be an object containing x,y,width,height properties (i.e. the object that comes out from .toPOJO())\n * @static\n * @return {module:ImageRectangle} new ImageRectangle instance\n */\n create: function create(propertyInfo) {\n return ImageRectangle(propertyInfo);\n }\n};\nvar TAG_BEGIN_NOTATION = '\\\\';\nvar TAG_CLOSE_NOTATION = '0';\nvar TAG_END_NOTATION = ' ';\nvar TAG_SPACE = ' ';\nvar LOWER_CASE_A_CHAR_CODE = 97;\nvar LOWER_CASE_Z_CHAR_CODE = 122;\nvar isBlacklistedTag = function isBlacklistedTag(strTag) {\n var LINE_BREAK = 'par ';\n return strTag.toLowerCase() === LINE_BREAK;\n};\nvar findNextTag = function findNextTag(strTextToSearch, nStartPoint) {\n if (nStartPoint === undefined) {\n nStartPoint = 0;\n }\n var nPosition = -1;\n // Make sure we're not null\n if (strTextToSearch) {\n // Get the first tag-looking sequence\n nPosition = strTextToSearch.indexOf(TAG_BEGIN_NOTATION, nStartPoint);\n // While we've got a tag-looking sequence....\n while (nPosition !== -1) {\n // As long as this point is not the last character in the string\n if (nPosition + 1 < strTextToSearch.length) {\n var nCode = strTextToSearch.toLowerCase().charCodeAt(nPosition + 1);\n // If the lower-case character is a lower-case alpha character\n if (LOWER_CASE_A_CHAR_CODE <= nCode && nCode <= LOWER_CASE_Z_CHAR_CODE) {\n break;\n }\n }\n // Get the next location of a tag-looking sequence\n nPosition = strTextToSearch.indexOf(TAG_BEGIN_NOTATION, nPosition + 1);\n }\n }\n\n // Return -1 of the position of the first valid tag\n return nPosition;\n};\nvar getTagAt = function getTagAt(strText, nTagPosition) {\n var strTag;\n if (nTagPosition !== -1) {\n var nEnd = strText.indexOf(TAG_END_NOTATION, nTagPosition + 1);\n if (nEnd !== -1) {\n strTag = strText.substring(nTagPosition + 1, nEnd + 1);\n } else {\n strTag = strText.substring(nTagPosition + 1);\n }\n }\n return strTag;\n};\nvar findNextTagNotBlacklisted = function findNextTagNotBlacklisted(strTextToSearch, nStartPoint) {\n if (nStartPoint === undefined) {\n nStartPoint = 0;\n }\n var nPosition = findNextTag(strTextToSearch, nStartPoint);\n while (nPosition !== -1) {\n var strTag = getTagAt(strTextToSearch, nPosition);\n if (strTag && !isBlacklistedTag(strTag)) {\n break;\n }\n nPosition = findNextTag(strTextToSearch, nPosition + 1);\n }\n return nPosition;\n};\nvar getTextToCloseTag = function getTextToCloseTag(strTag, arrStack) {\n var strCloseTags = '';\n var arrOpenTags = [];\n var strCloseTagNeeded = arrStack.pop();\n while (strCloseTagNeeded && strCloseTagNeeded !== strTag && arrStack.length) {\n strCloseTags += TAG_BEGIN_NOTATION + strCloseTagNeeded;\n arrOpenTags.push(matchingTag(strCloseTagNeeded));\n if (arrStack.length) {\n strCloseTagNeeded = arrStack.pop();\n }\n }\n strCloseTags += TAG_BEGIN_NOTATION + strTag;\n while (arrOpenTags.length) {\n var strOpenTagNeeded = arrOpenTags.pop();\n if (strOpenTagNeeded) {\n strCloseTags += TAG_BEGIN_NOTATION + strOpenTagNeeded;\n arrStack.push(matchingTag(strOpenTagNeeded));\n }\n }\n return strCloseTags;\n};\nvar isClosingTag = function isClosingTag(strTag) {\n return strTag.indexOf(TAG_CLOSE_NOTATION) !== -1;\n};\nvar matchingTag = function matchingTag(strToMatch) {\n var strMatch = '';\n if (strToMatch !== '') {\n // An end tag\n if (isClosingTag(strToMatch)) {\n strMatch = strToMatch.substring(0, strToMatch.indexOf(TAG_CLOSE_NOTATION));\n } else {\n // Not an end tag\n // If we need to remove space (and we should)\n if (strToMatch.indexOf(TAG_SPACE) !== -1) {\n strMatch = strToMatch.substring(0, strToMatch.indexOf(TAG_SPACE));\n }\n strMatch += TAG_CLOSE_NOTATION;\n }\n strMatch += TAG_SPACE;\n }\n return strMatch;\n};\nvar removeTag = function removeTag(strToFix, nTagPosition) {\n if (nTagPosition !== -1 && strToFix && nTagPosition < strToFix.length) {\n // Get the end of the tag\n var nTagEnd = strToFix.indexOf(TAG_END_NOTATION, nTagPosition);\n // If end exists\n if (nTagEnd !== -1) {\n // Remove it\n strToFix = strToFix.substring(0, nTagPosition) + strToFix.substring(nTagEnd + 1);\n } else {\n strToFix = strToFix.substring(0, nTagPosition);\n }\n }\n return strToFix;\n};\nvar trimString = function trimString(strToFix) {\n while (strToFix.length > 1 && strToFix.charAt(0) === TAG_SPACE) {\n strToFix = strToFix.substring(1);\n }\n while (strToFix.length > 1 && strToFix.charAt(strToFix.length - 1) === TAG_SPACE) {\n strToFix = strToFix.substring(0, strToFix.length - 1);\n }\n if (strToFix === TAG_SPACE) {\n strToFix = '';\n }\n return strToFix;\n};\nvar nestTags = function nestTags(strToFix) {\n if (strToFix) {\n var arrTagStack = [];\n var nPosition = findNextTagNotBlacklisted(strToFix);\n while (nPosition !== -1) {\n // Please note: the \"tag\" is considered to be what follows the backslash that signals it's beginning.\n var strTag = getTagAt(strToFix, nPosition);\n if (strTag && isClosingTag(strTag)) {\n // Get the new tag set required to add it in to the string\n var strCloseTags = getTextToCloseTag(strTag, arrTagStack);\n\n // Insert the tags and don't forget the rest of the original, if there is any\n var nTagEnd = strToFix.indexOf(TAG_END_NOTATION, nPosition);\n if (nTagEnd !== -1) {\n strToFix = strToFix.substring(0, nPosition) + strCloseTags + strToFix.substring(nTagEnd + 1);\n } else {\n strToFix = strToFix.substring(0, nPosition) + strCloseTags;\n }\n\n // Increment this so that we're not going through the stuff we just inserted\n nPosition += strCloseTags.length;\n } else {\n if (strTag && !isBlacklistedTag(strTag)) {\n arrTagStack.push(matchingTag(strTag));\n }\n nPosition = Number(nPosition) + 1;\n }\n nPosition = findNextTag(strToFix, nPosition);\n }\n }\n return strToFix;\n};\nvar removeEmptyTags = function removeEmptyTags(strToFix) {\n var strFixed = strToFix;\n if (strFixed) {\n // Loop through the entire string as long as there were corrections made last time\n // (in case more can be made based on the previous ones)\n var nCountCorrectedThisLoop = 1;\n while (nCountCorrectedThisLoop > 0) {\n nCountCorrectedThisLoop = 0;\n // Get the first tag that isn't blacklisted\n var nPosition = findNextTagNotBlacklisted(strFixed);\n while (nPosition !== -1) {\n // Get the next tag that's not blacklisted\n var nNextPosition = findNextTagNotBlacklisted(strFixed, nPosition + 1);\n\n // Get the actual tag\n var strTag = getTagAt(strFixed, nPosition);\n // If the actual tag exists\n if (strTag) {\n // As long as that next tag is actually found\n if (nNextPosition !== -1) {\n // Set up the alternate tag that we're trying to match with\n var strAlternateTag = matchingTag(strTag);\n\n // Get the actual next tag\n var strNextTag = getTagAt(strFixed, nNextPosition);\n // If the actual next tag exists and is the same as what we're looking for\n if (strNextTag && strNextTag === strAlternateTag) {\n // Get the string between the two tags\n var nStringBetweenBegin = nPosition + 1 + strTag.length;\n var strBetween = strFixed.substring(nStringBetweenBegin, nNextPosition);\n // If the trimmed string is empty\n if (!trimString(strBetween).length) {\n // Remove the ending tag\n strFixed = removeTag(strFixed, nNextPosition);\n // Then remove the beginning tag that we're actually at\n strFixed = removeTag(strFixed, nPosition);\n\n // Adjust the position of that next tag by the amount of space we've reduced\n nNextPosition -= strTag.length + 1;\n // Note that we've made a correction\n nCountCorrectedThisLoop++;\n }\n }\n }\n }\n\n // Set the actual next position for the inner loop\n nPosition = nNextPosition;\n }\n }\n }\n return strFixed;\n};\nvar toText = function toText(str) {\n if (str.match(/{\\\\rtf1 /)) {\n str = str.replace(/{\\\\rtf1 /, '');\n if (str.charAt(str.length - 1) === '}') {\n str = str.substring(0, str.length - 1);\n }\n }\n str = str.replace(/\\\\i /g, '');\n str = str.replace(/\\\\i0 /g, '');\n str = str.replace(/\\\\b /g, '');\n str = str.replace(/\\\\b0 /g, '');\n str = str.replace(/\\\\ul /g, '');\n str = str.replace(/\\\\ul0 /g, '');\n str = str.replace(/\\\\par/g, '');\n str = str.replace(/\\\\{/g, '{');\n str = str.replace(/\\\\}/g, '}');\n str = str.replace(/\\\\\\\\/g, '\\\\');\n return str;\n};\nvar toHtml = function toHtml(str) {\n str = nestTags(str);\n str = removeEmptyTags(str);\n str = str.split('<').join('<');\n str = str.split('>').join('>');\n var removeLastBracket = false;\n\n // remove the RTF and Replace with HTML\n if (str.indexOf('{\\\\rtf1') !== -1) {\n str = str.split('{\\\\rtf1 ').join('');\n removeLastBracket = true;\n }\n str = str.split('\\\\i0 ').join('');\n str = str.split('\\\\b0 ').join('');\n str = str.split(\"\\\\ul0 \").join('');\n str = str.split('\\\\i ').join('');\n str = str.split('\\\\b ').join('');\n str = str.split(\"\\\\ul \").join('');\n str = str.split('\\\\par ').join('
');\n str = str.split('\\\\{').join('{');\n str = str.split('\\\\}').join('}');\n str = str.split('\\\\\\\\').join('\\\\');\n if (removeLastBracket && str.charAt(str.length - 1) === '}') {\n str = str.substring(0, str.length - 1);\n }\n\n // convert these so they are displayed and not used as HTML Tags ( exception
)\n str = str.split('<br>').join('
');\n str = str.split('<BR>').join('
');\n return str;\n};\n\n/** @module Rtf */\nvar Rtf = {\n /**\n * Take a string with rtf markup and translate it to text\n * @function toText\n * @param {String} str - The rtf formatted input string to parse.\n * @static\n * @return {String} The string as text-only\n */\n toText: toText,\n /**\n * Take a string with rtf markup and translate it to html\n * @function toHtml\n * @param {String} str - The rtf formatted input string to parse.\n * @static\n * @return {String} The string with html markup aligning to the rtf markup\n */\n toHtml: toHtml\n};\nvar validateParams = function validateParams(params) {\n return params && typeof params.text === 'string' && (!params.languageIdentifierString || typeof params.languageIdentifierString === 'string');\n};\nvar CaptionText = function CaptionText(params) {\n var _languageIdentifier = LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n var _text;\n var _plainText;\n var _markupText;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var setLanguageIdentifier = function setLanguageIdentifier(languageIdentifierString) {\n if (!languageIdentifiers.isSupportedLanguage(languageIdentifierString)) {\n languageIdentifierString = languageIdentifiers.identifiers[\"default\"];\n }\n var previousLanguageIdentifierString = _languageIdentifier.identifier;\n _languageIdentifier = LanguageIdentifier$1.create(languageIdentifierString);\n return UndoAction$1.create(setLanguageIdentifier, previousLanguageIdentifierString, setLanguageIdentifier, languageIdentifierString);\n };\n var setText = function setText(text) {\n if (typeof text !== 'string') {\n throw new Error('Caption text is expecting a string, but got (' + text + ')');\n }\n var previous = _text;\n _text = text;\n _plainText = Rtf.toText(_text);\n _markupText = Rtf.toHtml(_text);\n return UndoAction$1.create(setText, previous, setText, _text);\n };\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n atts: {\n 'xml:lang': _languageIdentifier.identifier\n },\n text: _text\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n languageIdentifier: {\n get: function get() {\n return _languageIdentifier;\n }\n },\n language: {\n get: function get() {\n return _languageIdentifier.language;\n }\n },\n text: {\n get: function get() {\n return _text;\n }\n },\n plainText: {\n get: function get() {\n return _plainText;\n }\n },\n markupText: {\n get: function get() {\n return _markupText;\n }\n }\n });\n _public.setLanguageIdentifier = setLanguageIdentifier;\n _public.setText = setText;\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n languageIdentifier: _languageIdentifier.toPOJO(),\n language: _languageIdentifier.language,\n text: _text,\n plainText: _plainText,\n markupText: _markupText\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n if (validateParams(params)) {\n forEach(keys$1(params), function (key) {\n if (key === 'languageIdentifierString') {\n setLanguageIdentifier(params.languageIdentifierString);\n } else if (key === 'text') {\n setText(params.text);\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n } else {\n throw new Error('CaptionText expects text and language parameters');\n }\n return _public;\n};\nvar createFromXmpElement = function createFromXmpElement(textElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var rtfText = _xmlUtility.getElementText(textElement);\n var params = {\n languageIdentifierString: textElement.getAttribute('xml:lang'),\n text: rtfText\n };\n return CaptionText(params);\n};\n\n/** @module CaptionText */\nvar CaptionText$1 = {\n /**\n * Factory method that returns a new CaptionText object.\n * @function create\n * @param {Object} params - Optional params for caption\n * @param {String} [params.languageIdentifierString] - RFC 3066 notation language string\n * @param {String} [params.text] - Text of caption item.\n * @static\n * @return {module:CaptionText} new CaptionText instance\n */\n create: function create(params) {\n return CaptionText(params);\n },\n /**\n * Factory method that returns a new CaptionText object from an XMP caption element.\n * @function createFromXmpElement\n * @param {Object} element - XMP caption item element.\n * @static\n * @return {module:CaptionText} new CaptionText instance\n */\n createFromXmpElement: createFromXmpElement\n};\nvar decoratorFunctions = [];\nvar nullCaptionText = {\n text: undefined,\n plainText: undefined,\n markupText: undefined\n};\nvar Caption = function Caption(params) {\n var _startTime;\n var _duration;\n var _captionTextList = [];\n var _horizontalAlignment;\n var _verticalAlignment;\n var _file;\n var _image;\n var _imageIndex;\n var _imageOffset;\n var _imageRectangle;\n var _activeLanguageIdentifier = LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var getAvailableLanguages = function getAvailableLanguages() {\n return map(_captionTextList, function (captionText) {\n return captionText.languageIdentifier.identifier;\n });\n };\n var setStartTime = function setStartTime(startTime) {\n if (typeof startTime !== 'number') {\n throw new Error('Caption startTime is expecting a number, but got (' + startTime + ')');\n }\n var previous = _startTime;\n _startTime = Math.floor(startTime);\n return UndoAction$1.create(setStartTime, previous, setStartTime, _startTime);\n };\n var setDuration = function setDuration(duration) {\n if (typeof duration !== 'number') {\n throw new Error('Caption duration is expecting a number, but got (' + duration + ')');\n }\n var previous = _duration;\n _duration = Math.floor(duration);\n return UndoAction$1.create(setDuration, previous, setDuration, _duration);\n };\n var addOrReplaceCaptionText = function addOrReplaceCaptionText(newCaptionText) {\n var existingCaptionItemIndex = findIndex(_captionTextList, function (captionItem) {\n return captionItem.languageIdentifier.identifier === newCaptionText.languageIdentifier.identifier;\n });\n if (existingCaptionItemIndex !== -1) {\n var oldCaptionItem = _captionTextList[existingCaptionItemIndex];\n _captionTextList.splice(existingCaptionItemIndex, 1, newCaptionText);\n return UndoAction$1.create(addOrReplaceCaptionText, oldCaptionItem, addOrReplaceCaptionText, newCaptionText);\n }\n if (newCaptionText.toPOJO) {\n _captionTextList.push(newCaptionText);\n } else {\n _captionTextList.push(CaptionText$1.create(newCaptionText));\n }\n return UndoAction$1.create(removeCaptionText, newCaptionText, addOrReplaceCaptionText, newCaptionText);\n };\n var removeCaptionText = function removeCaptionText(captionText) {\n var removedCaptionItems = remove(_captionTextList, function (captionTextItem) {\n return captionTextItem.languageIdentifier.identifier === captionText.languageIdentifier.identifier && captionTextItem.text === captionText.text;\n });\n var removedCaptionItem = removedCaptionItems.length > 0 ? removedCaptionItems[0] : undefined;\n return UndoAction$1.create(addOrReplaceCaptionText, removedCaptionItem, removeCaptionText, captionText);\n };\n var setHorizontalAlignment = function setHorizontalAlignment(horizontalAlignment) {\n if (typeof horizontalAlignment !== 'string') {\n throw new Error('Caption horizontalAlignment is expecting a string, but got (' + horizontalAlignment + ')');\n }\n var previous = _horizontalAlignment;\n _horizontalAlignment = horizontalAlignment;\n return UndoAction$1.create(setHorizontalAlignment, previous, setHorizontalAlignment, _horizontalAlignment);\n };\n var setVerticalAlignment = function setVerticalAlignment(verticalAlignment) {\n if (typeof verticalAlignment !== 'string') {\n throw new Error('Caption verticalAlignment is expecting a string, but got (' + verticalAlignment + ')');\n }\n var previous = _verticalAlignment;\n _verticalAlignment = verticalAlignment;\n return UndoAction$1.create(setVerticalAlignment, previous, setVerticalAlignment, _verticalAlignment);\n };\n var setFile = function setFile(file) {\n if (typeof file !== 'string') {\n throw new Error('Caption file is expecting a string, but got (' + file + ')');\n }\n var previous = _file;\n _file = file;\n return UndoAction$1.create(setFile, previous, setFile, _file);\n };\n var setImage = function setImage(image) {\n if (typeof image !== 'string') {\n throw new Error('Caption image is expecting a string, but got (' + image + ')');\n }\n var previous = _image;\n _image = image;\n return UndoAction$1.create(setImage, previous, setImage, _image);\n };\n var setImageIndex = function setImageIndex(imageIndex) {\n if (typeof imageIndex !== 'number') {\n throw new Error('Caption imageIndex is expecting a number, but got (' + imageIndex + ')');\n }\n var previous = _imageIndex;\n _imageIndex = imageIndex;\n return UndoAction$1.create(setImageIndex, previous, setImageIndex, _imageIndex);\n };\n var setImageOffset = function setImageOffset(imageOffset) {\n if (typeof imageOffset !== 'number') {\n throw new Error('Caption imageOffset is expecting a number, but got (' + imageOffset + ')');\n }\n var previous = _imageOffset;\n _imageOffset = imageOffset;\n return UndoAction$1.create(setImageOffset, previous, setImageOffset, _imageOffset);\n };\n var setImageRectangle = function setImageRectangle(imageRectangle) {\n if (_typeof$1(imageRectangle) !== 'object') {\n throw new Error('Caption imageRectangle is expecting an object, but got (' + imageRectangle + ')');\n }\n var previous = _imageRectangle;\n _imageRectangle = imageRectangle;\n return UndoAction$1.create(setImageRectangle, previous, setImageRectangle, _imageRectangle);\n };\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:startTime': _startTime,\n 'xmpDM:duration': _duration,\n 'tscDM:halign': _horizontalAlignment,\n 'tscDM:valign': _verticalAlignment,\n 'tscDM:file': _file,\n 'tscDM:image': _image,\n 'tscDM:imageindex': _imageIndex,\n 'tscDM:imageoffset': _imageOffset,\n 'tscDM:imagerect': _imageRectangle ? [_imageRectangle.x, _imageRectangle.y, _imageRectangle.width, _imageRectangle.height].join(', ') : undefined\n },\n children: [{\n name: 'xmpDM:name',\n children: [{\n name: 'rdf:Alt',\n children: _captionTextList\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var getCaptionText = function getCaptionText() {\n if (_captionTextList.length === 0) {\n return nullCaptionText;\n }\n if (_activeLanguageIdentifier.identifier === languageIdentifiers.identifiers[\"default\"]) {\n return _captionTextList[0];\n }\n var preferredCaptionText = find(_captionTextList, function (captionText) {\n return captionText.languageIdentifier.identifier === _activeLanguageIdentifier.identifier;\n });\n if (!preferredCaptionText) {\n preferredCaptionText = find(_captionTextList, function (captionText) {\n return captionText.language === _activeLanguageIdentifier.language;\n });\n }\n return preferredCaptionText || nullCaptionText;\n };\n var _public = Object.defineProperties({}, {\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n duration: {\n get: function get() {\n return _duration;\n }\n },\n endTime: {\n get: function get() {\n return _startTime + _duration;\n }\n },\n captionTextList: {\n get: function get() {\n return _captionTextList;\n }\n },\n text: {\n get: function get() {\n return getCaptionText().text;\n }\n },\n plainText: {\n get: function get() {\n return getCaptionText().plainText;\n }\n },\n markupText: {\n get: function get() {\n return getCaptionText().markupText;\n }\n },\n horizontalAlignment: {\n get: function get() {\n return _horizontalAlignment;\n }\n },\n verticalAlignment: {\n get: function get() {\n return _verticalAlignment;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n },\n image: {\n get: function get() {\n return _image;\n }\n },\n imageIndex: {\n get: function get() {\n return _imageIndex;\n }\n },\n imageOffset: {\n get: function get() {\n return _imageOffset;\n }\n },\n imageRectangle: {\n get: function get() {\n return _imageRectangle;\n }\n },\n activeLanguageIdentifier: {\n get: function get() {\n return _activeLanguageIdentifier;\n },\n set: function set(languageIdentifier) {\n _activeLanguageIdentifier = languageIdentifier;\n }\n }\n });\n _public.getAvailableLanguages = getAvailableLanguages;\n _public.setStartTime = setStartTime;\n _public.setDuration = setDuration;\n _public.addOrReplaceCaptionText = addOrReplaceCaptionText;\n _public.removeCaptionText = removeCaptionText;\n _public.setHorizontalAlignment = setHorizontalAlignment;\n _public.setVerticalAlignment = setVerticalAlignment;\n _public.setFile = setFile;\n _public.setImage = setImage;\n _public.setImageIndex = setImageIndex;\n _public.setImageOffset = setImageOffset;\n _public.setImageRectangle = setImageRectangle;\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n startTime: _startTime,\n duration: _duration,\n captionTextList: invokeMap(_captionTextList, 'toPOJO'),\n horizontalAlignment: _horizontalAlignment,\n verticalAlignment: _verticalAlignment,\n file: _file,\n image: _image,\n imageIndex: _imageIndex,\n imageOffset: _imageOffset,\n imageRectangle: _imageRectangle ? _imageRectangle.toPOJO() : _imageRectangle\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'startTime' && typeof params.startTime === 'number') {\n setStartTime(params.startTime);\n } else if (key === 'duration' && typeof params.duration === 'number') {\n setDuration(params.duration);\n } else if (key === 'captionTextList' && params.captionTextList) {\n map(params.captionTextList, addOrReplaceCaptionText);\n } else if (key === 'horizontalAlignment' && params.horizontalAlignment) {\n setHorizontalAlignment(params.horizontalAlignment);\n } else if (key === 'verticalAlignment' && params.verticalAlignment) {\n setVerticalAlignment(params.verticalAlignment);\n } else if (key === 'file' && params.file) {\n setFile(params.file);\n } else if (key === 'image' && params.image) {\n setImage(params.image);\n } else if (key === 'imageIndex' && typeof params.imageIndex === 'number') {\n setImageIndex(params.imageIndex);\n } else if (key === 'imageOffset' && typeof params.imageOffset === 'number') {\n setImageOffset(params.imageOffset);\n } else if (key === 'imageRectangle' && params.imageRectangle) {\n if (!params.imageRectangle.toPOJO) {\n params.imageRectangle = ImageRectangle$1.create(params.imageRectangle);\n }\n setImageRectangle(params.imageRectangle);\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n forEach(decoratorFunctions, function (func) {\n func(_public);\n });\n return _public;\n};\nvar createFromXmpElement$1 = function createFromXmpElement$1(captionElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var captionTextElements = _xmlUtility.getElementsByTagNameNSPrefix(captionElement, 'rdf:li');\n var captionTextList = map(captionTextElements, CaptionText$1.createFromXmpElement);\n var params = {\n startTime: Number(captionElement.getAttribute('xmpDM:startTime')),\n duration: Number(captionElement.getAttribute('xmpDM:duration')),\n captionTextList: captionTextList,\n horizontalAlignment: captionElement.getAttribute('tscDM:halign'),\n verticalAlignment: captionElement.getAttribute('tscDM:valign')\n };\n if (captionElement.getAttribute('tscDM:file')) {\n params.file = captionElement.getAttribute('tscDM:file');\n }\n if (captionElement.getAttribute('tscDM:image')) {\n params.image = captionElement.getAttribute('tscDM:image');\n }\n if (captionElement.getAttribute('tscDM:imageindex')) {\n params.imageIndex = Number(captionElement.getAttribute('tscDM:imageindex'));\n }\n if (captionElement.getAttribute('tscDM:imageoffset')) {\n params.imageOffset = Number(captionElement.getAttribute('tscDM:imageoffset'));\n }\n if (captionElement.getAttribute('tscDM:imagerect')) {\n params.imageRectangle = ImageRectangle$1.create(captionElement.getAttribute('tscDM:imagerect'));\n }\n return Caption(params);\n};\nvar registerDecorator = function registerDecorator(decorator) {\n if (decorator && typeof decorator === 'function') {\n decoratorFunctions.push(decorator);\n } else {\n throw new Error('decorator must be a function');\n }\n};\nvar clearDecorators = function clearDecorators() {\n decoratorFunctions = [];\n};\n\n/** @module Caption */\nvar Caption$1 = {\n /**\n * Factory method that returns a new Caption object.\n * @function create\n * @param {Object} params - Optional params for caption\n * @param {Number} [params.startTime] - Start time of caption.\n * @param {Number} [params.duration] - Duration of caption.\n * @param {module:CaptionText[]} [params.captionTextList] - List of CaptionText objects.\n * @param {String} [params.horizontalAlignment] - Horizontal alignment of caption text.\n * @param {String} [params.verticalAlignment] - Vertical alignment of caption text.\n * @param {String} [params.file] - Reference to a specific file as String.\n * @param {String} [params.image] - Url for caption thumbnail.\n * @param {Number} [params.imageIndex] - Index of image within file consisting of one or more images.\n * @param {Number} [params.imageOffset] - Number of bytes this image begins at, relative to the beginning of the entire file\n * @param {module:ImageRectangle} [params.imageRectangle] - Image Rectangle for image sprite map\n * @static\n * @return {module:Caption} new Caption instance\n */\n create: function create(params) {\n return Caption(params);\n },\n /**\n * Factory method that returns a new Caption object from an XMP caption element.\n * @function createFromXmpElement\n * @param {Object} element - XMP caption element.\n * @static\n * @return {module:Caption} new Caption instance\n */\n createFromXmpElement: createFromXmpElement$1,\n /**\n * Method to allow registration of decorator function that can extend the caption\n * object before it is returned in the create functions.\n * @function registerDecorator\n * @param {Function} decorator - Function that will be used to decorate the caption.\n * The function should take a caption parameter.\n * @static\n */\n registerDecorator: registerDecorator,\n /**\n * Method to allow clearing decorator functions\n * @function clearDecorators\n * @static\n */\n clearDecorators: clearDecorators\n};\nfunction createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n}\nvar tinycolor$1 = createCommonjsModule(function (module) {\n // TinyColor v1.4.1\n // https://github.com/bgrins/TinyColor\n // Brian Grinstead, MIT License\n\n (function (Math) {\n var trimLeft = /^\\s+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n mathRound = Math.round,\n mathMin = Math.min,\n mathMax = Math.max,\n mathRandom = Math.random;\n function tinycolor(color, opts) {\n color = color ? color : '';\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n var rgb = inputToRGB(color);\n this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = mathRound(100 * this._a) / 100, this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) {\n this._r = mathRound(this._r);\n }\n if (this._g < 1) {\n this._g = mathRound(this._g);\n }\n if (this._b < 1) {\n this._b = mathRound(this._b);\n }\n this._ok = rgb.ok;\n this._tc_id = tinyCounter++;\n }\n tinycolor.prototype = {\n isDark: function isDark() {\n return this.getBrightness() < 128;\n },\n isLight: function isLight() {\n return !this.isDark();\n },\n isValid: function isValid() {\n return this._ok;\n },\n getOriginalInput: function getOriginalInput() {\n return this._originalInput;\n },\n getFormat: function getFormat() {\n return this._format;\n },\n getAlpha: function getAlpha() {\n return this._a;\n },\n getBrightness: function getBrightness() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function getLuminance() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) {\n R = RsRGB / 12.92;\n } else {\n R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n }\n if (GsRGB <= 0.03928) {\n G = GsRGB / 12.92;\n } else {\n G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n }\n if (BsRGB <= 0.03928) {\n B = BsRGB / 12.92;\n } else {\n B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n }\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function setAlpha(value) {\n this._a = boundAlpha(value);\n this._roundA = mathRound(100 * this._a) / 100;\n return this;\n },\n toHsv: function toHsv() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v,\n a: this._a\n };\n },\n toHsvString: function toHsvString() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = mathRound(hsv.h * 360),\n s = mathRound(hsv.s * 100),\n v = mathRound(hsv.v * 100);\n return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function toHsl() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return {\n h: hsl.h * 360,\n s: hsl.s,\n l: hsl.l,\n a: this._a\n };\n },\n toHslString: function toHslString() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = mathRound(hsl.h * 360),\n s = mathRound(hsl.s * 100),\n l = mathRound(hsl.l * 100);\n return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function toHex(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function toHexString(allow3Char) {\n return '#' + this.toHex(allow3Char);\n },\n toHex8: function toHex8(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function toHex8String(allow4Char) {\n return '#' + this.toHex8(allow4Char);\n },\n toRgb: function toRgb() {\n return {\n r: mathRound(this._r),\n g: mathRound(this._g),\n b: mathRound(this._b),\n a: this._a\n };\n },\n toRgbString: function toRgbString() {\n return this._a == 1 ? \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" : \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function toPercentageRgb() {\n return {\n r: mathRound(bound01(this._r, 255) * 100) + \"%\",\n g: mathRound(bound01(this._g, 255) * 100) + \"%\",\n b: mathRound(bound01(this._b, 255) * 100) + \"%\",\n a: this._a\n };\n },\n toPercentageRgbString: function toPercentageRgbString() {\n return this._a == 1 ? \"rgb(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function toName() {\n if (this._a === 0) {\n return \"transparent\";\n }\n if (this._a < 1) {\n return false;\n }\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function toFilter(secondColor) {\n var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n },\n toString: function toString(format) {\n var formatSet = !!format;\n format = format || this._format;\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n },\n clone: function clone() {\n return tinycolor(this.toString());\n },\n _applyModification: function _applyModification(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function lighten() {\n return this._applyModification(_lighten, arguments);\n },\n brighten: function brighten() {\n return this._applyModification(_brighten, arguments);\n },\n darken: function darken() {\n return this._applyModification(_darken, arguments);\n },\n desaturate: function desaturate() {\n return this._applyModification(_desaturate, arguments);\n },\n saturate: function saturate() {\n return this._applyModification(_saturate, arguments);\n },\n greyscale: function greyscale() {\n return this._applyModification(_greyscale, arguments);\n },\n spin: function spin() {\n return this._applyModification(_spin, arguments);\n },\n _applyCombination: function _applyCombination(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function analogous() {\n return this._applyCombination(_analogous, arguments);\n },\n complement: function complement() {\n return this._applyCombination(_complement, arguments);\n },\n monochromatic: function monochromatic() {\n return this._applyCombination(_monochromatic, arguments);\n },\n splitcomplement: function splitcomplement() {\n return this._applyCombination(_splitcomplement, arguments);\n },\n triad: function triad() {\n return this._applyCombination(_triad, arguments);\n },\n tetrad: function tetrad() {\n return this._applyCombination(_tetrad, arguments);\n }\n };\n\n // If input is an object, force 1 into \"1.0\" to handle ratios properly\n // String input requires \"1.0\" as input, so 1 will be treated as 1\n tinycolor.fromRatio = function (color, opts) {\n if (_typeof$1(color) == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n return tinycolor(color, opts);\n };\n\n // Given a string or object, convert that input to RGB\n // Possible string inputs:\n //\n // \"red\"\n // \"#f00\" or \"f00\"\n // \"#ff0000\" or \"ff0000\"\n // \"#ff000000\" or \"ff000000\"\n // \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n // \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n // \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n // \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n // \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n // \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n // \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n //\n function inputToRGB(color) {\n var rgb = {\n r: 0,\n g: 0,\n b: 0\n };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n if (_typeof$1(color) == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a\n };\n }\n\n // Conversion Functions\n // --------------------\n\n // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n // \n\n // `rgbToRgb`\n // Handle bounds / percentage checking to conform to CSS color spec\n // \n // *Assumes:* r, g, b in [0, 255] or [0, 1]\n // *Returns:* { r, g, b } in [0, 255]\n function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n }\n\n // `rgbToHsl`\n // Converts an RGB color value to HSL.\n // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n // *Returns:* { h, s, l } in [0,1]\n function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = mathMax(r, g, b),\n min = mathMin(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n }\n\n // `hslToRgb`\n // Converts an HSL color value to RGB.\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n // *Returns:* { r, g, b } in the set [0, 255]\n function hslToRgb(h, s, l) {\n var r, g, b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n }\n\n // `rgbToHsv`\n // Converts an RGB color value to HSV\n // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n // *Returns:* { h, s, v } in [0,1]\n function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = mathMax(r, g, b),\n min = mathMin(r, g, b);\n var h,\n s,\n v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n v: v\n };\n }\n\n // `hsvToRgb`\n // Converts an HSV color value to RGB.\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n // *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n }\n\n // `rgbToHex`\n // Converts an RGB color to hex\n // Assumes r, g, and b are contained in the set [0, 255]\n // Returns a 3 or 6 character hex\n function rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join(\"\");\n }\n\n // `rgbaToHex`\n // Converts an RGBA color plus alpha transparency to hex\n // Assumes r, g, b are contained in the set [0, 255] and\n // a in [0, 1]. Returns a 4 or 8 character rgba hex\n function rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join(\"\");\n }\n\n // `rgbaToArgbHex`\n // Converts an RGBA color to an ARGB Hex8 string\n // Rarely used, but required for \"toFilter()\"\n function rgbaToArgbHex(r, g, b, a) {\n var hex = [pad2(convertDecimalToHex(a)), pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16))];\n return hex.join(\"\");\n }\n\n // `equals`\n // Can be called with any tinycolor input\n tinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) {\n return false;\n }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n };\n tinycolor.random = function () {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom()\n });\n };\n\n // Modification Functions\n // ----------------------\n // Thanks to less.js for some of the basics here\n // \n\n function _desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n }\n function _saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n }\n function _greyscale(color) {\n return tinycolor(color).desaturate(100);\n }\n function _lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n }\n function _brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * -(amount / 100))));\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * -(amount / 100))));\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * -(amount / 100))));\n return tinycolor(rgb);\n }\n function _darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n }\n\n // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n // Values outside of this range will be wrapped into this range.\n function _spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n }\n\n // Combination Functions\n // ---------------------\n // Thanks to jQuery xColor for some of the ideas behind these\n // \n\n function _complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n }\n function _triad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 120) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 240) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n }\n function _tetrad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 90) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 180) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 270) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n }\n function _splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 72) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 216) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n }\n function _analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n }\n function _monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n while (results--) {\n ret.push(tinycolor({\n h: h,\n s: s,\n v: v\n }));\n v = (v + modification) % 1;\n }\n return ret;\n }\n\n // Utility Functions\n // ---------------------\n\n tinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a\n };\n return tinycolor(rgba);\n };\n\n // Readability Functions\n // ---------------------\n // false\n // tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\n tinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n out = false;\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n };\n\n // `mostReadable`\n // Given a base color and a list of possible foreground or background\n // colors for that base, returns the most readable color.\n // Optionally returns Black or White if the most readable color is unreadable.\n // *Example*\n // tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n // tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n // tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n // tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\n tinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n if (tinycolor.isReadable(baseColor, bestColor, {\n \"level\": level,\n \"size\": size\n }) || !includeFallbackColors) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n };\n\n // Big List of Colors\n // ------------------\n // \n var names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n };\n\n // Make it easy to access colors via `hexNames[hex]`\n var hexNames = tinycolor.hexNames = flip(names);\n\n // Utilities\n // ---------\n\n // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\n function flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n }\n\n // Return a valid alpha value [0,1] with all invalid values being set to 1\n function boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n }\n\n // Take input from [0, n] and return it as [0, 1]\n function bound01(n, max) {\n if (isOnePointZero(n)) {\n n = \"100%\";\n }\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return n % max / parseFloat(max);\n }\n\n // Force a number between 0 and 1\n function clamp01(val) {\n return mathMin(1, mathMax(0, val));\n }\n\n // Parse a base-16 hex value into a base-10 integer\n function parseIntFromHex(val) {\n return parseInt(val, 16);\n }\n\n // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n // \n function isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n }\n\n // Check to see if string passed in is a percentage\n function isPercentage(n) {\n return typeof n === \"string\" && n.indexOf('%') != -1;\n }\n\n // Force a hex value to have 2 characters\n function pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n }\n\n // Replace a decimal with it's percentage value\n function convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n return n;\n }\n\n // Converts a decimal to a hex value\n function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n }\n // Converts a hex value to a decimal\n function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n }\n var matchers = function () {\n // \n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // \n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n }();\n\n // `isValidCSSUnit`\n // Take in a single string / number and check to see if it looks like a CSS unit\n // (see `matchers` above for definition).\n function isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n }\n\n // `stringInputToObject`\n // Permissive string parsing. Take in a number of formats, and output an object\n // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n function stringInputToObject(color) {\n color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == 'transparent') {\n return {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n format: \"name\"\n };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if (match = matchers.rgb.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3]\n };\n }\n if (match = matchers.rgba.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsl.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3]\n };\n }\n if (match = matchers.hsla.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsv.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3]\n };\n }\n if (match = matchers.hsva.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hex8.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex6.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if (match = matchers.hex4.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: convertHexToDecimal(match[4] + '' + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex3.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n return false;\n }\n function validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\n \"level\": \"AA\",\n \"size\": \"small\"\n };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\n \"level\": level,\n \"size\": size\n };\n }\n\n // Node: Export function\n if (module.exports) {\n module.exports = tinycolor;\n }\n // AMD/requirejs: Define the module\n else {\n window.tinycolor = tinycolor;\n }\n })(Math);\n});\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n nativeMin = Math.min;\n\n/**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\nfunction baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? computed <= value : computed < value;\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n}\n\n/**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\nfunction sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, baseIteratee(iteratee));\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/** Used for built-in method references. */\nvar objectProto$c = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$9 = objectProto$c.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty$9.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n var index = -1,\n length = props.length;\n while (++index < length) {\n var key = props[index];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys$1(source), object);\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$d = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$a = objectProto$d.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty$a.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn$1(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn$1(source), object);\n}\n\n/** Detect free variable `exports`. */\nvar freeExports$2 = (typeof exports === \"undefined\" ? \"undefined\" : _typeof$1(exports)) == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule$2 = freeExports$2 && (typeof module === \"undefined\" ? \"undefined\" : _typeof$1(module)) == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports$2 = freeModule$2 && freeModule$2.exports === freeExports$2;\n\n/** Built-in value references. */\nvar Buffer$1 = moduleExports$2 ? root.Buffer : undefined,\n allocUnsafe = Buffer$1 ? Buffer$1.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols$1 = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols$1 ? stubArray : function (object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn$1, getSymbolsIn);\n}\n\n/** Used for built-in method references. */\nvar objectProto$e = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$b = objectProto$e.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty$b.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto$2 = _Symbol ? _Symbol.prototype : undefined,\n symbolValueOf$1 = symbolProto$2 ? symbolProto$2.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf$1 ? Object(symbolValueOf$1.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/** `Object#toString` result references. */\nvar boolTag$2 = '[object Boolean]',\n dateTag$2 = '[object Date]',\n mapTag$3 = '[object Map]',\n numberTag$2 = '[object Number]',\n regexpTag$2 = '[object RegExp]',\n setTag$3 = '[object Set]',\n stringTag$3 = '[object String]',\n symbolTag$2 = '[object Symbol]';\nvar arrayBufferTag$2 = '[object ArrayBuffer]',\n dataViewTag$3 = '[object DataView]',\n float32Tag$1 = '[object Float32Array]',\n float64Tag$1 = '[object Float64Array]',\n int8Tag$1 = '[object Int8Array]',\n int16Tag$1 = '[object Int16Array]',\n int32Tag$1 = '[object Int32Array]',\n uint8Tag$1 = '[object Uint8Array]',\n uint8ClampedTag$1 = '[object Uint8ClampedArray]',\n uint16Tag$1 = '[object Uint16Array]',\n uint32Tag$1 = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag$2:\n return cloneArrayBuffer(object);\n case boolTag$2:\n case dateTag$2:\n return new Ctor(+object);\n case dataViewTag$3:\n return cloneDataView(object, isDeep);\n case float32Tag$1:\n case float64Tag$1:\n case int8Tag$1:\n case int16Tag$1:\n case int32Tag$1:\n case uint8Tag$1:\n case uint8ClampedTag$1:\n case uint16Tag$1:\n case uint32Tag$1:\n return cloneTypedArray(object, isDeep);\n case mapTag$3:\n return new Ctor();\n case numberTag$2:\n case stringTag$3:\n return new Ctor(object);\n case regexpTag$2:\n return cloneRegExp(object);\n case setTag$3:\n return new Ctor();\n case symbolTag$2:\n return cloneSymbol(object);\n }\n}\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = function () {\n function object() {}\n return function (proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object();\n object.prototype = undefined;\n return result;\n };\n}();\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return typeof object.constructor == 'function' && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};\n}\n\n/** `Object#toString` result references. */\nvar mapTag$4 = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag$1(value) == mapTag$4;\n}\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n/** `Object#toString` result references. */\nvar setTag$4 = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag$1(value) == setTag$4;\n}\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag$3 = '[object Arguments]',\n arrayTag$2 = '[object Array]',\n boolTag$3 = '[object Boolean]',\n dateTag$3 = '[object Date]',\n errorTag$2 = '[object Error]',\n funcTag$2 = '[object Function]',\n genTag$1 = '[object GeneratorFunction]',\n mapTag$5 = '[object Map]',\n numberTag$3 = '[object Number]',\n objectTag$3 = '[object Object]',\n regexpTag$3 = '[object RegExp]',\n setTag$5 = '[object Set]',\n stringTag$4 = '[object String]',\n symbolTag$3 = '[object Symbol]',\n weakMapTag$2 = '[object WeakMap]';\nvar arrayBufferTag$3 = '[object ArrayBuffer]',\n dataViewTag$4 = '[object DataView]',\n float32Tag$2 = '[object Float32Array]',\n float64Tag$2 = '[object Float64Array]',\n int8Tag$2 = '[object Int8Array]',\n int16Tag$2 = '[object Int16Array]',\n int32Tag$2 = '[object Int32Array]',\n uint8Tag$2 = '[object Uint8Array]',\n uint8ClampedTag$2 = '[object Uint8ClampedArray]',\n uint16Tag$2 = '[object Uint16Array]',\n uint32Tag$2 = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag$3] = cloneableTags[arrayTag$2] = cloneableTags[arrayBufferTag$3] = cloneableTags[dataViewTag$4] = cloneableTags[boolTag$3] = cloneableTags[dateTag$3] = cloneableTags[float32Tag$2] = cloneableTags[float64Tag$2] = cloneableTags[int8Tag$2] = cloneableTags[int16Tag$2] = cloneableTags[int32Tag$2] = cloneableTags[mapTag$5] = cloneableTags[numberTag$3] = cloneableTags[objectTag$3] = cloneableTags[regexpTag$3] = cloneableTags[setTag$5] = cloneableTags[stringTag$4] = cloneableTags[symbolTag$3] = cloneableTags[uint8Tag$2] = cloneableTags[uint8ClampedTag$2] = cloneableTags[uint16Tag$2] = cloneableTags[uint32Tag$2] = true;\ncloneableTags[errorTag$2] = cloneableTags[funcTag$2] = cloneableTags[weakMapTag$2] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray$1(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag$1(value),\n isFunc = tag == funcTag$2 || tag == genTag$1;\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag$3 || tag == argsTag$3 || isFunc && !object) {\n result = isFlat || isFunc ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat ? copySymbolsIn(value, baseAssignIn(result, value)) : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack());\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n if (isSet(value)) {\n value.forEach(function (subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function (subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys$1;\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function (subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG$1 = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG$1);\n}\n\n/** Built-in value references. */\nvar spreadableSymbol = _Symbol ? _Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray$1(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n predicate || (predicate = isFlattenable);\n result || (result = []);\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {\n return 1;\n }\n if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n var result = baseMap(collection, function (value, key, collection) {\n var criteria = arrayMap(iteratees, function (iteratee) {\n return iteratee(value);\n });\n return {\n 'criteria': criteria,\n 'index': ++index,\n 'value': value\n };\n });\n return baseSortBy(result, function (object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = _typeof$1(index);\n if (type == 'number' ? isArrayLike(object) && isIndex(index, object.length) : type == 'string' && index in object) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\nvar sortBy = baseRest(function (collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\nvar CaptionCollection = function CaptionCollection(params) {\n var _captions = [];\n var _activeLanguageIdentifier = LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n var _captionLanguages = {};\n var addCaptionFromLanguageCodeCache = function addCaptionFromLanguageCodeCache(caption) {\n caption.getAvailableLanguages().forEach(function (language) {\n if (!_captionLanguages[language]) {\n _captionLanguages[language] = 1;\n } else {\n _captionLanguages[language]++;\n }\n });\n };\n var removeCaptionFromLanguageCodeCache = function removeCaptionFromLanguageCodeCache(caption) {\n caption.getAvailableLanguages().forEach(function (language) {\n if (_captionLanguages[language]) {\n _captionLanguages[language]--;\n }\n if (_captionLanguages[language] === 0) {\n delete _captionLanguages[language];\n }\n });\n };\n var addCaption = function addCaption(caption) {\n addCaptionFromLanguageCodeCache(caption);\n caption.activeLanguageIdentifier = _activeLanguageIdentifier;\n var index = sortedIndexBy(_captions, caption, 'startTime');\n _captions.splice(index, 0, caption);\n return UndoAction$1.create(removeCaption, caption, addCaption, caption);\n };\n var removeCaption = function removeCaption(caption) {\n removeCaptionFromLanguageCodeCache(caption);\n var index = findIndex(_captions, caption);\n if (index !== -1) {\n _captions.splice(index, 1);\n return UndoAction$1.create(addCaption, caption, removeCaption, caption);\n }\n return UndoAction$1.noOp();\n };\n var setCaptions = function setCaptions(captions) {\n _captions = captions;\n _captionLanguages = [];\n _captions.forEach(function (caption) {\n addCaptionFromLanguageCodeCache(caption);\n });\n };\n var mergeCaptions = function mergeCaptions(captionsToMerge) {\n captionsToMerge.forEach(function (captionToMerge) {\n var matchingCaption = find(_captions, function (existingCaption) {\n return existingCaption.startTime === captionToMerge.startTime;\n });\n if (matchingCaption) {\n addCaptionFromLanguageCodeCache(captionToMerge);\n captionToMerge.captionTextList.forEach(function (captionText) {\n matchingCaption.addOrReplaceCaptionText(captionText);\n });\n }\n });\n };\n var clear = function clear() {\n var captionsClone = clone(_captions);\n _captions = [];\n _captionLanguages = [];\n return UndoAction$1.create(setCaptions, captionsClone, setCaptions, []);\n };\n var getAvailableLanguages = function getAvailableLanguages() {\n return Object.keys(_captionLanguages);\n };\n var setActiveLanguageIdentifier = function setActiveLanguageIdentifier(languageIdentifierString) {\n if (!languageIdentifiers.isSupportedLanguage(languageIdentifierString)) {\n languageIdentifierString = languageIdentifiers.identifiers[\"default\"];\n }\n var languageIdentifier = LanguageIdentifier$1.create(languageIdentifierString);\n var previousActiveLanguageIdentifierString = _activeLanguageIdentifier.identifier;\n _activeLanguageIdentifier = languageIdentifier;\n forEach(_captions, function (caption) {\n caption.activeLanguageIdentifier = languageIdentifier;\n });\n return UndoAction$1.create(setActiveLanguageIdentifier, previousActiveLanguageIdentifierString, setActiveLanguageIdentifier, languageIdentifierString);\n };\n var getActiveLanguageIdentifier = function getActiveLanguageIdentifier() {\n return _activeLanguageIdentifier;\n };\n if (params) {\n if (params.hasOwnProperty('captions') && isArray$1(params.captions)) {\n _captions = sortBy(params.captions, ['startTime']);\n _captions.forEach(function (caption) {\n addCaptionFromLanguageCodeCache(caption);\n });\n } else {\n throw new Error('CaptionCollection params is expecting an object eg. { captions: [caption1Object, ...] }');\n }\n }\n var _public = Object.defineProperties({}, {\n captions: {\n get: function get() {\n return _captions;\n }\n }\n });\n _public.setActiveLanguageIdentifier = setActiveLanguageIdentifier;\n _public.getActiveLanguageIdentifier = getActiveLanguageIdentifier;\n _public.getAvailableLanguages = getAvailableLanguages;\n _public.addCaption = addCaption;\n _public.removeCaption = removeCaption;\n _public.mergeCaptions = mergeCaptions;\n _public.clear = clear;\n _public.toPOJO = function () {\n return {\n captions: _captions\n };\n };\n return _public;\n};\n\n/** @module CaptionCollection */\nvar CaptionCollection$1 = {\n /**\n * Factory method that returns a new CaptionCollection object.\n * @function create\n * @param {Object} params - Optional params for caption\n * @param {Array} [params.captions] - array containing {module:Caption} objects.\n * @static\n * @return {module:CaptionCollection} new CaptionCollection instance\n */\n create: function create(params) {\n return CaptionCollection(params);\n }\n};\nvar _defaults$1 = Object.freeze({\n fontFamily: 'Arial, Helvetica, sans-serif;',\n fontSize: 24,\n fgColor: tinycolor$1({\n r: 255,\n g: 255,\n b: 255\n }),\n bgColor: tinycolor$1({\n r: 0,\n g: 0,\n b: 0,\n a: 0.9\n })\n});\nvar CaptionTrack = function CaptionTrack(params) {\n params = params || {};\n var _languageIdentifier = params.languageIdentifierString ? LanguageIdentifier$1.create(params.languageIdentifierString) : LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n var _fgColor = params.fgColor ? tinycolor$1(params.fgColor) : _defaults$1.fgColor.clone();\n var _bgColor = params.bgColor ? tinycolor$1(params.bgColor) : _defaults$1.bgColor.clone();\n var _fontFamily = params.fontFamily ? params.fontFamily : _defaults$1.fontFamily;\n var _fontSize = parseFontSize(params, _defaults$1.fontSize);\n var _position = params.position ? params.position : undefined;\n var _barHeight = params.barHeight ? params.barHeight : undefined;\n var _captionCollection = params.captions ? CaptionCollection$1.create({\n captions: params.captions\n }) : CaptionCollection$1.create();\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'Caption',\n 'xmpDM:frameRate': 'f1000',\n 'xmpDM:trackName': 'Captioning',\n 'stFnt:fontFamily': _fontFamily,\n 'tscDM:fontSize': _fontSize,\n 'tscDM:bgOpacity': _bgColor.getAlpha(),\n 'tscDM:position': _position,\n 'tscDM:captionbarheight': _barHeight\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _captionCollection.captions\n }]\n }, {\n name: 'tsc:fgColor',\n atts: attsFromColor(_fgColor.toRgb())\n }, {\n name: 'tsc:bgColor',\n atts: attsFromColor(_bgColor.toRgb())\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var attsFromColor = function attsFromColor(color) {\n return {\n 'xmpG:red': color.r,\n 'xmpG:green': color.g,\n 'xmpG:blue': color.b,\n 'xmpG:mode': 'RGB'\n };\n };\n var tinycolorToSimpleRgb = function tinycolorToSimpleRgb(tinycolorObj) {\n var rgbaColorObj = tinycolorObj.toRgb();\n return {\n r: rgbaColorObj.r,\n g: rgbaColorObj.g,\n b: rgbaColorObj.b\n };\n };\n var _public = Object.defineProperties({}, {\n languageIdentifier: {\n get: function get() {\n return _languageIdentifier;\n }\n },\n fgColor: {\n get: function get() {\n return tinycolorToSimpleRgb(_fgColor);\n }\n },\n fgHexColor: {\n get: function get() {\n return _fgColor.toHexString();\n }\n },\n bgColor: {\n get: function get() {\n return tinycolorToSimpleRgb(_bgColor);\n }\n },\n bgOpacity: {\n get: function get() {\n return _bgColor.getAlpha();\n }\n },\n bgHexColor: {\n get: function get() {\n return _bgColor.toHexString();\n }\n },\n bgRGBACssColor: {\n get: function get() {\n return _bgColor.toRgbString();\n }\n },\n fontFamily: {\n get: function get() {\n return _fontFamily;\n }\n },\n fontSize: {\n get: function get() {\n return _fontSize;\n }\n },\n position: {\n get: function get() {\n return _position;\n }\n },\n barHeight: {\n get: function get() {\n return _barHeight;\n }\n },\n captionCollection: {\n get: function get() {\n return _captionCollection;\n }\n }\n });\n _public.setActiveLanguageIdentifier = _captionCollection.setActiveLanguageIdentifier;\n _public.getActiveLanguageIdentifier = _captionCollection.getActiveLanguageIdentifier;\n _public.getAvailableLanguages = _captionCollection.getAvailableLanguages;\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n fgColor: _fgColor.toRgb(),\n bgColor: _bgColor.toRgb(),\n bgOpacity: _bgColor.getAlpha(),\n fontFamily: _fontFamily,\n fontSize: _fontSize,\n position: _position,\n barHeight: _barHeight,\n captions: invokeMap(_captionCollection.captions, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar getRGBColor = function getRGBColor(element) {\n return {\n r: Number(element.getAttribute('xmpG:red')),\n g: Number(element.getAttribute('xmpG:green')),\n b: Number(element.getAttribute('xmpG:blue'))\n };\n};\nvar parseFontSize = function parseFontSize(params, defaultFontSize) {\n if (!params.fontSize) {\n return defaultFontSize;\n }\n var parsedFontSize = +params.fontSize;\n if (isString(params.fontSize)) {\n parsedFontSize = +params.fontSize.replace('px', '').replace('pt', '');\n }\n return parsedFontSize ? parsedFontSize : defaultFontSize;\n};\nvar createFromXmpElement$2 = function createFromXmpElement$2(captionTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var captionTrack = new CaptionTrack();\n if (captionTrackElement) {\n var fgColorElement = _xmlUtility.getFirstElementByTagNameNSPrefix(captionTrackElement, 'tsc:fgColor');\n var bgColorElement = _xmlUtility.getFirstElementByTagNameNSPrefix(captionTrackElement, 'tsc:bgColor');\n var captionElements = _xmlUtility.getElementsByTagNameNSPrefix(captionTrackElement, 'rdf:Description');\n var captions = map(captionElements, Caption$1.createFromXmpElement);\n var params = {\n fgColor: getRGBColor(fgColorElement),\n bgColor: getRGBColor(bgColorElement),\n fontFamily: captionTrackElement.getAttribute('stFnt:fontFamily'),\n fontSize: Number(captionTrackElement.getAttribute('tscDM:fontSize')),\n position: captionTrackElement.getAttribute('tscDM:position'),\n barHeight: Number(captionTrackElement.getAttribute('tscDM:captionbarheight')),\n captions: captions\n };\n params.bgColor.a = !isNil(captionTrackElement.getAttribute('tscDM:bgOpacity')) ? Number(captionTrackElement.getAttribute('tscDM:bgOpacity')) : _defaults$1.bgColor.getAlpha();\n captionTrack = new CaptionTrack(params);\n }\n return captionTrack;\n};\n\n/** @module CaptionTrack */\nvar CaptionTrack$1 = {\n /**\n * Factory method that returns a new CaptionTrack object.\n * @function create\n * @param {Object} params - Optional params for caption track\n * @param {String} [params.languageIdentifierString] - Local identifier string for caption track\n * @param {Object} [params.fgColor] - RGB values for foreground color.\n * @param {Number} [params.bgOpacity] - Opacity of background.\n * @param {String} [params.fontFamily] - Font family for caption track.\n * @param {String} [params.fontSize] - Font size for caption track.\n * @param {String} [params.position] - Position for caption track.\n * @param {String} [params.barHeight] - Bar height for caption track.\n * @static\n * @return {module:CaptionTrack} new CaptionTrack instance\n */\n create: function create(params) {\n return CaptionTrack(params);\n },\n /**\n * Factory method that returns a new CaptionTrack object from an XMP caption track element.\n * @function createFromXmpElement\n * @param {Object} element - XMP caption track element.\n * @static\n * @return {module:CaptionTrack} new CaptionTrack instance\n */\n createFromXmpElement: createFromXmpElement$2\n};\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray$1(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate));\n}\nvar CaptionController$2 = function CaptionController() {\n var _activeLanguageIdentifier = LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n var _activeCaptionTrack = null;\n var _captionTracks = [];\n var _captionLanguages = {};\n var storeCaptionLanguage = function storeCaptionLanguage(languageIdentifier) {\n _captionLanguages[languageIdentifier.identifier] = languageIdentifier.identifier;\n };\n var removeCaptionLanguage = function removeCaptionLanguage(languageIdentifier) {\n if (_captionLanguages[languageIdentifier.identifier]) {\n delete _captionLanguages[languageIdentifier.identifier];\n }\n };\n var getAvailableLanguages = function getAvailableLanguages() {\n return Object.keys(_captionLanguages);\n };\n var cacheActiveCaptionTrack = function cacheActiveCaptionTrack() {\n if (_captionTracks.length === 0) {\n _activeCaptionTrack = null;\n return;\n }\n if (_activeLanguageIdentifier.identifier === languageIdentifiers.identifiers[\"default\"]) {\n _activeCaptionTrack = _captionTracks[0];\n }\n var preferredCaptionTrack = find(_captionTracks, function (captionTrack) {\n return captionTrack.languageIdentifier.identifier === _activeLanguageIdentifier.identifier;\n });\n if (preferredCaptionTrack) {\n _activeCaptionTrack = preferredCaptionTrack;\n } else {\n _activeCaptionTrack = _captionTracks[0];\n }\n };\n var setActiveLanguageIdentifier = function setActiveLanguageIdentifier(languageIdentifierString) {\n if (!languageIdentifiers.isSupportedLanguage(languageIdentifierString)) {\n languageIdentifierString = languageIdentifiers.identifiers[\"default\"];\n }\n var previousLanguageIdentifierString = _activeLanguageIdentifier.identifier;\n _activeLanguageIdentifier = LanguageIdentifier$1.create(languageIdentifierString);\n cacheActiveCaptionTrack();\n return UndoAction$1.create(setActiveLanguageIdentifier, previousLanguageIdentifierString, setActiveLanguageIdentifier, languageIdentifierString);\n };\n var getActiveLanguageIdentifier = function getActiveLanguageIdentifier() {\n return _activeLanguageIdentifier;\n };\n var doesCaptionTrackExistForLanguageIdentifier = function doesCaptionTrackExistForLanguageIdentifier(languageIdentifier) {\n return _captionTracks.some(function (captionTrack) {\n return captionTrack.languageIdentifier.identifier === languageIdentifier.identifier;\n });\n };\n var addCaptionTrack = function addCaptionTrack(captionTrack) {\n if (doesCaptionTrackExistForLanguageIdentifier(captionTrack.languageIdentifier)) {\n throw new Error('CaptionController::addCaptionTrack - Caption track already exist for the ', captionTrack.languageIdentifier.identifier, ' langauge identifier.');\n }\n storeCaptionLanguage(captionTrack.languageIdentifier);\n _captionTracks.push(captionTrack);\n cacheActiveCaptionTrack();\n return UndoAction$1.create(removeCaptionTrack, captionTrack, addCaptionTrack, captionTrack);\n };\n var removeCaptionTrack = function removeCaptionTrack(captionTrackToRemove) {\n var removedCaptionTracks = remove(_captionTracks, function (captionTrack) {\n return captionTrack.languageIdentifier.identifier === captionTrackToRemove.languageIdentifier.identifier;\n });\n var removedCaptionTrack = removedCaptionTracks.length > 0 ? removedCaptionTracks[0] : undefined;\n if (removedCaptionTrack) {\n removeCaptionLanguage(removedCaptionTrack.languageIdentifier);\n cacheActiveCaptionTrack();\n }\n return UndoAction$1.create(addCaptionTrack, removedCaptionTrack, removeCaptionTrack, captionTrackToRemove);\n };\n var addCaptionTrackFromXmpElement = function addCaptionTrackFromXmpElement(captionTrackElement) {\n var parsedCaptionTrack = CaptionTrack$1.createFromXmpElement(captionTrackElement);\n var availableLanguages = parsedCaptionTrack.getAvailableLanguages();\n if (availableLanguages.length > 1) {\n availableLanguages.forEach(function (language) {\n var captionTrackParams = {\n languageIdentifierString: language,\n fgColor: parsedCaptionTrack.fgColor,\n bgColor: parsedCaptionTrack.bgColor,\n bgOpacity: parsedCaptionTrack.bgOpacity,\n fontFamily: parsedCaptionTrack.fontFamily,\n fontSize: parsedCaptionTrack.fontSize,\n position: parsedCaptionTrack.position,\n barHeight: parsedCaptionTrack.barHeight\n };\n var captionTrack = CaptionTrack$1.create(captionTrackParams);\n parsedCaptionTrack.captionCollection.captions.forEach(function (caption) {\n var filteredCaptionTextList = filter(caption.captionTextList, function (captionText) {\n return captionText.languageIdentifier.identifier === language;\n });\n var captionParams = {\n startTime: caption.startTime,\n duration: caption.duration,\n captionTextList: filteredCaptionTextList\n };\n if (caption.horizontalAlignment) {\n captionParams.horizontalAlignment = caption.horizontalAlignment;\n }\n if (caption.verticalAlignment) {\n captionParams.verticalAlignment = caption.verticalAlignment;\n }\n if (caption.file) {\n captionParams.file = caption.file;\n }\n if (caption.image) {\n captionParams.image = caption.image;\n }\n if (caption.imageIndex) {\n captionParams.imageIndex = caption.imageIndex;\n }\n if (caption.imageOffset) {\n captionParams.imageOffset = caption.imageOffset;\n }\n if (caption.imageRectangle) {\n captionParams.imageRectangle = caption.imageRectangle;\n }\n var newCaption = Caption$1.create(captionParams);\n captionTrack.captionCollection.addCaption(newCaption);\n });\n addCaptionTrack(captionTrack);\n });\n } else {\n addCaptionTrack(parsedCaptionTrack);\n }\n };\n var getMergedCaptionTrack = function getMergedCaptionTrack() {\n var captionTrackParams = {\n languageIdentifierString: _activeCaptionTrack ? _activeCaptionTrack.languageIdentifierString : undefined,\n fgColor: _activeCaptionTrack ? _activeCaptionTrack.fgColor : undefined,\n bgOpacity: _activeCaptionTrack ? _activeCaptionTrack.bgOpacity : undefined,\n fontFamily: _activeCaptionTrack ? _activeCaptionTrack.fontFamily : undefined,\n fontSize: _activeCaptionTrack ? _activeCaptionTrack.fontSize : undefined,\n position: _activeCaptionTrack ? _activeCaptionTrack.position : undefined,\n barHeight: _activeCaptionTrack ? _activeCaptionTrack.barHeight : undefined\n };\n var mergedCaptionTrack = CaptionTrack$1.create(captionTrackParams);\n _captionTracks.forEach(function (captionTrack) {\n mergedCaptionTrack.captionCollection.mergeCaptions(captionTrack.captionCollection.captions);\n });\n return mergedCaptionTrack;\n };\n var toXmp = function toXmp() {\n return getMergedCaptionTrack().toXmp();\n };\n var toPOJO = function toPOJO() {\n return getMergedCaptionTrack().toPOJO();\n };\n var getActiveCaptionTrack = function getActiveCaptionTrack() {\n return _activeCaptionTrack;\n };\n var clearCaptions = function clearCaptions() {\n _captionTracks = [];\n _captionLanguages = {};\n _activeLanguageIdentifier = LanguageIdentifier$1.create(languageIdentifiers.identifiers[\"default\"]);\n _activeCaptionTrack = null;\n };\n var activeCaptionTrackIsDefinedWithCaptions = function activeCaptionTrackIsDefinedWithCaptions() {\n return _activeCaptionTrack !== null && _activeCaptionTrack.captionCollection.captions.length > 0;\n };\n var getActiveCaptionsTocThumbnailImage = function getActiveCaptionsTocThumbnailImage() {\n return activeCaptionTrackIsDefinedWithCaptions() ? _activeCaptionTrack.captionCollection.captions[0].image : null;\n };\n var _public = Object.defineProperties({}, {\n activeCaptionTrack: {\n get: getActiveCaptionTrack\n },\n numberCaptionTracks: {\n get: function get() {\n return _captionTracks.length;\n }\n },\n containsCaptions: {\n get: activeCaptionTrackIsDefinedWithCaptions\n },\n captionsContainsTocThumbnails: {\n get: function get() {\n return activeCaptionTrackIsDefinedWithCaptions() && _activeCaptionTrack.captionCollection.captions[0].image !== undefined;\n }\n }\n });\n _public.setActiveLanguageIdentifier = setActiveLanguageIdentifier;\n _public.getActiveLanguageIdentifier = getActiveLanguageIdentifier;\n _public.clearCaptions = clearCaptions;\n _public.addCaptionTrackFromXmpElement = addCaptionTrackFromXmpElement;\n _public.addCaptionTrack = addCaptionTrack;\n _public.removeCaptionTrack = removeCaptionTrack;\n _public.getAvailableLanguages = getAvailableLanguages;\n _public.getActiveCaptionsTocThumbnailImage = getActiveCaptionsTocThumbnailImage;\n _public.toXmp = toXmp;\n _public.toPOJO = toPOJO;\n return _public;\n};\n\n/** @module CaptionController */\nvar CaptionController$1$1 = {\n /**\n * Factory method that returns a new CaptionController object.\n * @function create\n * @static\n * @return {module:CaptionController} new CaptionController instance\n */\n create: function create() {\n return CaptionController$2();\n }\n};\nvar TableOfContentsItem = function TableOfContentsItem(params) {\n var _name;\n var _startTime;\n var _image;\n var _imageIndex;\n var _imageOffset;\n var _imageRectangle;\n var _file;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'name') {\n _name = params.name;\n } else if (key === 'startTime') {\n _startTime = params.startTime;\n } else if (key === 'image') {\n _image = params.image;\n } else if (key === 'imageIndex') {\n _imageIndex = params.imageIndex;\n } else if (key === 'imageOffset') {\n _imageOffset = params.imageOffset;\n } else if (key === 'imageRectangle') {\n _imageRectangle = params.imageRectangle;\n } else if (key === 'file') {\n _file = params.file;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:name': _name,\n 'xmpDM:startTime': _startTime,\n 'tscDM:image': _image,\n 'tscDM:imageindex': _imageIndex,\n 'tscDM:imageoffset': _imageOffset,\n 'tscDM:imagerect': _imageRectangle ? _imageRectangle.toXmpAtt() : null,\n 'tscDM:file': _file\n }\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n name: {\n get: function get() {\n return _name;\n }\n },\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n image: {\n get: function get() {\n return _image;\n }\n },\n imageIndex: {\n get: function get() {\n return _imageIndex;\n }\n },\n imageOffset: {\n get: function get() {\n return _imageOffset;\n }\n },\n imageRectangle: {\n get: function get() {\n return _imageRectangle;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n name: _name,\n startTime: _startTime,\n image: _image,\n imageIndex: _imageIndex,\n imageOffset: _imageOffset,\n imageRectangle: _imageRectangle ? _imageRectangle.toPOJO() : undefined,\n file: _file\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$3 = function createFromXmpElement$3(tableOfContentsItemElement) {\n var params = {\n name: tableOfContentsItemElement.getAttribute('xmpDM:name'),\n startTime: Number(tableOfContentsItemElement.getAttribute('xmpDM:startTime'))\n };\n\n // optional attributes below\n\n params.image = tableOfContentsItemElement.getAttribute('tscDM:image') || undefined;\n if (tableOfContentsItemElement.getAttribute('tscDM:imageindex')) {\n params.imageIndex = Number(tableOfContentsItemElement.getAttribute('tscDM:imageindex'));\n }\n if (tableOfContentsItemElement.getAttribute('tscDM:imageoffset')) {\n params.imageOffset = Number(tableOfContentsItemElement.getAttribute('tscDM:imageoffset'));\n }\n params.file = tableOfContentsItemElement.getAttribute('tscDM:file') || undefined;\n if (tableOfContentsItemElement.getAttribute('tscDM:imagerect')) {\n params.imageRectangle = ImageRectangle$1.create(tableOfContentsItemElement.getAttribute('tscDM:imagerect'));\n }\n return new TableOfContentsItem(params);\n};\n\n/** @module TableOfContentsItem */\nvar TableOfContentsItem$1 = {\n /**\n * Factory method that returns a new TableOfContentsItem object.\n * @function create\n * @param {Object} params - Required params for table of contents item\n * @param {String} [params.name] - Table of contents item name.\n * @param {Number} [params.startTime] - Start time of table of contents item (milliseconds).\n * @param {String} [params.image] - Table of contents item image.\n * @param {Number} [params.imageIndex] - Table of contents item image index.\n * @param {Number} [params.imageOffset] - Table of contents item image offset.\n * @param {module:ImageRectangle} [params.imageRectangle] - Table of contents item image rectangle.\n * @param {String} [params.file] - File string associated with toc item.\n * @static\n * @return {module:TableOfContentsItem} new TableOfContentsItem instance\n */\n create: function create(params) {\n return TableOfContentsItem(params);\n },\n /**\n * Factory method that returns a new TableOfContentsItem object from an XMP tableOfContentsItem element.\n * @function createFromXmpElement\n * @param {Object} element - XMP tableOfContentsItem element.\n * @static\n * @return {module:TableOfContentsItem} new TableOfContentsItem instance\n */\n createFromXmpElement: createFromXmpElement$3\n};\nvar TableOfContentsTrack = function TableOfContentsTrack(params) {\n var _items = [];\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n if (params.hasOwnProperty('items') && isArray$1(params.items)) {\n _items = params.items;\n } else {\n throw new Error('TableOfContentsTrack params is expecting an object eg. { items: [item1Object, ...] }');\n }\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'TableOfContents',\n 'xmpDM:trackName': 'Table of Contents',\n 'xmpDM:frameRate': 'f1000',\n 'tscDM:image': params ? params.image : undefined,\n 'tscDM:tocCellLayout': params ? params.cellLayout : undefined\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _items\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n image: {\n get: function get() {\n return params.image;\n }\n },\n cellLayout: {\n get: function get() {\n return params.cellLayout;\n }\n },\n items: {\n get: function get() {\n return _items;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n image: params.image,\n cellLayout: params.cellLayout,\n items: invokeMap(_items, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$4 = function createFromXmpElement$4(tableOfContentsTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var tableOfContentsTrack = new TableOfContentsTrack();\n if (tableOfContentsTrackElement) {\n var tableOfContentsItemElements = _xmlUtility.getElementsByTagNameNSPrefix(tableOfContentsTrackElement, 'rdf:Description');\n var image = tableOfContentsTrackElement.getAttribute('tscDM:image');\n var cellLayout = tableOfContentsTrackElement.getAttribute('tscDM:tocCellLayout');\n var items = map(tableOfContentsItemElements, TableOfContentsItem$1.createFromXmpElement);\n var params = {\n image: image,\n cellLayout: cellLayout,\n items: items\n };\n tableOfContentsTrack = new TableOfContentsTrack(params);\n }\n return tableOfContentsTrack;\n};\n\n/** @module TableOfContentsTrack */\nvar TableOfContentsTrack$1 = {\n /**\n * Factory method that returns a new TableOfContentsTrack object.\n * @function create\n * @param {Object} params - Optional params for table of contents track\n * @param {module:TableOfContentsItem[]} [params.items] - Array of table of content items.\n * @static\n * @return {module:TableOfContentsTrack} new TableOfContentsTrack instance\n */\n create: function create(params) {\n return TableOfContentsTrack(params);\n },\n /**\n * Factory method that returns a new TableOfContentsTrack object from an XMP table of contents track element.\n * @function createFromXmpElement\n * @param {Object} element - XMP table of contents track element.\n * @static\n * @return {module:TableOfContentsTrack} new TableOfContentsTrack instance\n */\n createFromXmpElement: createFromXmpElement$4\n};\n\n/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\nvar BoundingPoly = function BoundingPoly(coordinatesString) {\n var _coordinates = [];\n var createCoordinate = function createCoordinate(coordinateString) {\n var tokens = coordinateString.split(',');\n return {\n x: Number(tokens[0]),\n y: Number(tokens[1])\n };\n };\n if (coordinatesString && isString(coordinatesString)) {\n var coordinateTokens = compact(coordinatesString.split(';'));\n _coordinates = map(coordinateTokens, createCoordinate);\n } else {\n throw new Error('BoundingPoly is expecting a coordinate string eg. \"0,94;111,90;112,191;0,194;\"');\n }\n var _public = Object.defineProperties({}, {\n coordinates: {\n get: function get() {\n return _coordinates;\n }\n }\n });\n _public.toPOJO = function () {\n return {\n coordinates: _coordinates\n };\n };\n _public.toXmpAtt = function () {\n return map(_coordinates, function (coord) {\n return coord.x + ',' + coord.y;\n }).join(';') + ';';\n };\n return _public;\n};\n\n/** @module BoundingPoly */\nvar BoundingPoly$1 = {\n /**\n * Factory method that returns a new BoundingPoly object.\n * @function create\n * @param {String} coordinatesString - Required coordinate string of the bounding poly eg. \"0,94;111,90;112,191;0,194;\"\n * @static\n * @return {module:BoundingPoly} new BoundingPoly instance\n */\n create: function create(coordinatesString) {\n return BoundingPoly(coordinatesString);\n }\n};\nvar Hotspot = function Hotspot(params) {\n var _label;\n var _startTime;\n var _duration;\n var _boundingPoly;\n var _rotate;\n var _pause;\n var _jumpTime;\n var _location;\n var _newWindow;\n var _jumpFile;\n var _file;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'label') {\n _label = params.label;\n } else if (key === 'startTime') {\n _startTime = params.startTime;\n } else if (key === 'duration') {\n _duration = params.duration;\n } else if (key === 'boundingPoly') {\n _boundingPoly = params.boundingPoly;\n } else if (key === 'rotate') {\n _rotate = params.rotate;\n } else if (key === 'pause') {\n _pause = params.pause;\n } else if (key === 'jumpTime') {\n _jumpTime = params.jumpTime;\n } else if (key === 'location') {\n _location = params.location;\n } else if (key === 'newWindow') {\n _newWindow = params.newWindow;\n } else if (key === 'jumpFile') {\n _jumpFile = params.jumpFile;\n } else if (key === 'file') {\n _file = params.file;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:label': _label,\n 'xmpDM:duration': _duration,\n 'xmpDM:startTime': _startTime,\n 'tscDM:boundingPoly': _boundingPoly ? _boundingPoly.toXmpAtt() : undefined,\n 'tscDM:rotate': _rotate,\n 'tscHS:pause': _pause ? '1' : '0',\n 'tscHS:jumpTime': _jumpTime,\n 'tscHS:jumpFile': _jumpFile,\n 'xmpDM:location': _location,\n 'tscDM:file': _file,\n 'tscHS:newWindow': _newWindow ? '1' : '0'\n }\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n label: {\n get: function get() {\n return _label;\n }\n },\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n endTime: {\n get: function get() {\n return _startTime + _duration;\n }\n },\n duration: {\n get: function get() {\n return _duration;\n }\n },\n boundingPoly: {\n get: function get() {\n return _boundingPoly;\n }\n },\n rotate: {\n get: function get() {\n return _rotate;\n }\n },\n pause: {\n get: function get() {\n return _pause;\n }\n },\n jumpTime: {\n get: function get() {\n return _jumpTime;\n }\n },\n location: {\n get: function get() {\n return _location;\n }\n },\n newWindow: {\n get: function get() {\n return _newWindow;\n }\n },\n jumpFile: {\n get: function get() {\n return _jumpFile;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n label: _label,\n startTime: _startTime,\n duration: _duration,\n boundingPoly: _boundingPoly,\n rotate: _rotate,\n pause: _pause,\n jumpTime: _jumpTime,\n location: _location,\n newWindow: _newWindow,\n jumpFile: _jumpFile,\n file: _file\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$5 = function createFromXmpElement$5(hotspotElement) {\n var params = {\n label: hotspotElement.getAttribute('xmp:label'),\n startTime: Number(hotspotElement.getAttribute('xmpDM:startTime')),\n duration: Number(hotspotElement.getAttribute('xmpDM:duration')),\n boundingPoly: BoundingPoly$1.create(hotspotElement.getAttribute('tscDM:boundingPoly')),\n rotate: Number(hotspotElement.getAttribute('tscDM:rotate')),\n pause: hotspotElement.getAttribute('tscHS:pause') === '1',\n newWindow: hotspotElement.getAttribute('tscHS:newWindow') === '1'\n };\n if (hotspotElement.getAttribute('tscHS:jumpTime')) {\n params.jumpTime = Number(hotspotElement.getAttribute('tscHS:jumpTime'));\n }\n params.jumpFile = hotspotElement.getAttribute('tscHS:jumpFile') || undefined;\n params.location = hotspotElement.getAttribute('xmpDM:location') || undefined;\n params.file = hotspotElement.getAttribute('tscDM:file') || undefined;\n return new Hotspot(params);\n};\n\n/** @module Hotspot */\nvar Hotspot$1 = {\n /**\n * Factory method that returns a new Hotspot object.\n * @function create\n * @param {Object} params - Required params for hotspot\n * @param {String} [params.label] - Hotspot label.\n * @param {Number} [params.startTime] - Start time of hotspot (milliseconds).\n * @param {Number} [params.duration] - Duration of hotspot (milliseconds).\n * @param {module:BoundingPoly} [params.boundingPoly] - Bounding polygon of hotspot.\n * @param {Number} [params.rotate] - Rotation value of polygon.\n * @param {Boolean} [params.pause] - Boolean if hotspot should pause at end.\n * @param {Number} [params.jumpTime] - Specific time within video that hotspot will jump to (milliseconds)\n * @param {Number} [params.jumpTime] - Specific time within video that hotspot will jump to (milliseconds)\n * @param {String} [params.location] - URL to launch for hotspot.\n * @param {Boolean} [params.newWindow] - True if the hotspot location should open in a new window.\n * @param {String} [params.jumpFile] - Url to file.\n * @param {String} [params.file] - Url to file.\n * @static\n * @return {module:Hotspot} new Hotspot instance\n */\n create: function create(params) {\n return Hotspot(params);\n },\n /**\n * Factory method that returns a new Hotspot object from an XMP hotspot element.\n * @function createFromXmpElement\n * @param {Object} element - XMP hotspot element.\n * @static\n * @return {module:Hotspot} new Hotspot instance\n */\n createFromXmpElement: createFromXmpElement$5\n};\nvar HotspotTrack = function HotspotTrack(params) {\n var _hotspots = [];\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n if (params.hasOwnProperty('hotspots') && isArray$1(params.hotspots)) {\n _hotspots = params.hotspots;\n } else {\n throw new Error('HotspotTrack params is expecting an object eg. { hotspots: [hotspot1Object, ...] }');\n }\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'Hotspot',\n 'xmpDM:trackName': 'Hotspots',\n 'xmpDM:frameRate': 'f1000'\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _hotspots\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n hotspots: {\n get: function get() {\n return _hotspots;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n hotspots: invokeMap(_hotspots, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$6 = function createFromXmpElement$6(hotspotTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var hotspotTrack = new HotspotTrack();\n if (hotspotTrackElement) {\n var hotspotElements = _xmlUtility.getElementsByTagNameNSPrefix(hotspotTrackElement, 'rdf:Description');\n var hotspots = map(hotspotElements, Hotspot$1.createFromXmpElement);\n var params = {\n hotspots: hotspots\n };\n hotspotTrack = new HotspotTrack(params);\n }\n return hotspotTrack;\n};\n\n/** @module HotspotTrack */\nvar HotspotTrack$1 = {\n /**\n * Factory method that returns a new HotspotTrack object.\n * @function create\n * @param {Object} params - Optional params for caption track\n * @param {module:Hotspot[]} [params.hotspots] - Array of hotspots.\n * @static\n * @return {module:HotspotTrack} new HotspotTrack instance\n */\n create: function create(params) {\n return HotspotTrack(params);\n },\n /**\n * Factory method that returns a new HotspotTrack object from an XMP hotspot track element.\n * @function create\n * @param {Object} element - XMP hotspot track element.\n * @static\n * @return {module:HotspotTrack} new HotspotTrack instance\n */\n createFromXmpElement: createFromXmpElement$6\n};\nvar Answer = function Answer(params) {\n var _orderId;\n var _text;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'orderId') {\n _orderId = params.orderId;\n } else if (key === 'text') {\n _text = params.text;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'tscIQ:orderId': _orderId\n },\n children: [{\n name: 'tscIQ:answer',\n text: _text\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n orderId: {\n get: function get() {\n return _orderId;\n }\n },\n text: {\n get: function get() {\n return _text;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n orderId: _orderId,\n text: _text\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$7 = function createFromXmpElement$7(answerElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var answerText = _xmlUtility.getFirstChildElementTextByTagNameNSPrefix(answerElement, 'tscIQ:answer');\n var params = {\n orderId: Number(answerElement.getAttribute('tscIQ:orderId')),\n text: answerText\n };\n return new Answer(params);\n};\n\n/** @module Answer */\nvar Answer$1 = {\n /**\n * Factory method that returns a new Answer object.\n * @function create\n * @param {Object} params - Required params for answer\n * @param {Number} [params.orderId] - Answer order id.\n * @param {String} [params.text] - Answer text.\n * @static\n * @return {module:Answer} new Answer instance\n */\n create: function create(params) {\n return Answer(params);\n },\n /**\n * Factory method that returns a new Answer object from an XMP answer element.\n * @function createFromXmpElement\n * @param {Object} element - XMP answer element.\n * @static\n * @return {module:Answer} new Answer instance\n */\n createFromXmpElement: createFromXmpElement$7\n};\nvar Feedback = function Feedback(params) {\n var _reason;\n var _jumpToTime;\n var _location;\n var _text;\n var _plainText;\n var _markupText;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'reason') {\n _reason = params.reason;\n } else if (key === 'text') {\n _text = params.text;\n _plainText = Rtf.toText(_text);\n _markupText = Rtf.toHtml(_text);\n } else if (key === 'jumpToTime') {\n _jumpToTime = params.jumpToTime;\n } else if (key === 'location') {\n _location = params.location;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'tscIQ:reason': _reason,\n 'tscIQ:jumpToTime': _jumpToTime,\n 'tscIQ:location': _location\n },\n children: [{\n name: 'xmpDM:name',\n children: [{\n name: 'rdf:Alt',\n // todo: according to the latest branch this is now a language collection of strings\n // for now i hardcoded a single english version to match the expected output\n children: [{\n name: 'rdf:li',\n atts: {\n 'xml:lang': 'en-US'\n },\n text: _text\n }]\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n reason: {\n get: function get() {\n return _reason;\n }\n },\n jumpToTime: {\n get: function get() {\n return _jumpToTime;\n }\n },\n location: {\n get: function get() {\n return _location;\n }\n },\n text: {\n get: function get() {\n return _text;\n }\n },\n plainText: {\n get: function get() {\n return _plainText;\n }\n },\n markupText: {\n get: function get() {\n return _markupText;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n reason: _reason,\n jumpToTime: _jumpToTime,\n location: _location,\n text: _text,\n plainText: _plainText,\n markupText: _markupText\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$8 = function createFromXmpElement$8(feedbackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var feedbackText = _xmlUtility.getFirstChildElementTextByTagNameNSPrefix(feedbackElement, 'rdf:li');\n var params = {\n reason: feedbackElement.getAttribute('tscIQ:reason'),\n text: feedbackText\n };\n if (feedbackElement.getAttribute('tscIQ:jumpToTime')) {\n params.jumpToTime = Number(feedbackElement.getAttribute('tscIQ:jumpToTime'));\n }\n params.location = feedbackElement.getAttribute('tscIQ:location') || undefined;\n return Feedback(params);\n};\n\n/** @module Feedback */\nvar Feedback$1 = {\n /**\n * Factory method that returns a new Feedback object.\n * @function create\n * @param {Object} params - Required params for feedback\n * @param {String} [params.reason] - Feedback reason type.\n * @param {String} [params.text] - Feedback text.\n * @param {Number} [params.jumpToTime] - Feedback jumpToTime.\n * @param {String} [params.location] - Feedback location.\n * @static\n * @return {module:Feedback} new Feedback instance\n */\n create: function create(params) {\n return Feedback(params);\n },\n /**\n * Factory method that returns a new Feedback object from an XMP feedback element.\n * @function createFromXmpElement\n * @param {Object} element - XMP feedback element.\n * @static\n * @return {module:Feedback} new Feedback instance\n */\n createFromXmpElement: createFromXmpElement$8\n};\nvar Question$2 = function Question(params) {\n var _id;\n var _type;\n var _text;\n var _correctAnswer;\n var _answers = [];\n var _feedback = [];\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'id') {\n _id = params.id;\n } else if (key === 'type') {\n _type = params.type;\n } else if (key === 'text') {\n _text = params.text;\n } else if (key === 'correctAnswer') {\n _correctAnswer = params.correctAnswer;\n } else if (key === 'answers') {\n _answers = params.answers;\n } else if (key === 'feedback') {\n _feedback = params.feedback;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'tscIQ:id': _id,\n 'tscIQ:type': _type\n },\n children: [{\n name: 'tscIQ:question',\n text: _text\n }, {\n name: 'tscIQ:correctAnswer',\n text: _type === 'MC' ? _correctAnswer : null\n }, {\n name: 'tscIQ:answerArray',\n children: [{\n name: 'rdf:Seq',\n children: _answers\n }]\n }, {\n name: 'tscIQ:feedback',\n children: [{\n name: 'rdf:Bag',\n children: _feedback\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n id: {\n get: function get() {\n return _id;\n }\n },\n type: {\n get: function get() {\n return _type;\n }\n },\n text: {\n get: function get() {\n return _text;\n }\n },\n correctAnswer: {\n get: function get() {\n return _correctAnswer;\n }\n },\n answers: {\n get: function get() {\n return _answers;\n }\n },\n feedback: {\n get: function get() {\n return _feedback;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n id: _id,\n type: _type,\n text: _text,\n correctAnswer: _correctAnswer,\n answers: invokeMap(_answers, 'toPOJO'),\n feedback: _feedback !== undefined ? invokeMap(_feedback, 'toPOJO') : undefined\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$9 = function createFromXmpElement$9(questionElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var text = _xmlUtility.getFirstChildElementTextByTagNameNSPrefix(questionElement, 'tscIQ:question');\n var correctAnswerText = _xmlUtility.getFirstChildElementTextByTagNameNSPrefix(questionElement, 'tscIQ:correctAnswer');\n var descriptionElements = _xmlUtility.getElementsByTagNameNSPrefix(questionElement, 'rdf:Description');\n var answerElements = filter(descriptionElements, function (element) {\n return _xmlUtility.hasAttribute(element, 'tscIQ:orderId');\n });\n var answers = map(answerElements, Answer$1.createFromXmpElement);\n var feedbackElements = filter(descriptionElements, function (element) {\n return _xmlUtility.hasAttribute(element, 'tscIQ:reason');\n });\n var feedback = map(feedbackElements, Feedback$1.createFromXmpElement);\n var params = {\n id: Number(questionElement.getAttribute('tscIQ:id')),\n type: questionElement.getAttribute('tscIQ:type'),\n text: text,\n correctAnswer: correctAnswerText ? Number(correctAnswerText) : undefined,\n answers: answers,\n feedback: feedback\n };\n return Question$2(params);\n};\n\n/** @module Question */\nvar Question$1$1 = {\n /**\n * Factory method that returns a new Question object.\n * @function create\n * @param {Object} params - Required params for question\n * @param {Number} [params.id] - Question id.\n * @param {String} [params.text] - Question text.\n * @param {Number} [params.correctAnswer] - Index of the correct answer within answer array (1 based).\n * @param {module:Answer[]} [params.answers] - Question answer array.\n * @param {module:Feedback[]} [params.feedback] - Question feedback array.\n * @static\n * @return {module:Question} new Question instance\n */\n create: function create(params) {\n return Question$2(params);\n },\n /**\n * Factory method that returns a new Question object from an XMP question element.\n * @function createFromXmpElement\n * @param {Object} element - XMP question element.\n * @static\n * @return {module:Question} new Question instance\n */\n createFromXmpElement: createFromXmpElement$9\n};\nvar QuestionSet$2 = function QuestionSet(params) {\n var _name;\n var _feedback;\n var _startTime;\n var _questions;\n var _file;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'name') {\n _name = params.name;\n } else if (key === 'feedback') {\n _feedback = params.feedback;\n } else if (key === 'startTime') {\n _startTime = params.startTime;\n } else if (key === 'file') {\n _file = params.file;\n } else if (key === 'questions') {\n _questions = params.questions;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'tscIQ:questionSetName': _name,\n 'tscIQ:feedback': _feedback ? '1' : '0',\n 'tscDM:file': _file,\n 'xmpDM:startTime': _startTime\n },\n children: [{\n name: 'tscIQ:questions',\n children: [{\n name: 'rdf:Seq',\n children: _questions\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n name: {\n get: function get() {\n return _name;\n }\n },\n feedback: {\n get: function get() {\n return _feedback;\n }\n },\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n },\n questions: {\n get: function get() {\n return _questions;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n name: _name,\n feedback: _feedback,\n startTime: _startTime,\n file: _file,\n questions: invokeMap(_questions, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$a = function createFromXmpElement$a(questionSetElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var descriptionElements = _xmlUtility.getElementsByTagNameNSPrefix(questionSetElement, 'rdf:Description');\n var questionElements = filter(descriptionElements, function (element) {\n return _xmlUtility.hasAttribute(element, 'tscIQ:type');\n });\n var questions = map(questionElements, Question$1$1.createFromXmpElement);\n var params = {\n name: questionSetElement.getAttribute('tscIQ:questionSetName'),\n feedback: questionSetElement.getAttribute('tscIQ:feedback') === '1',\n startTime: Number(questionSetElement.getAttribute('xmpDM:startTime')),\n questions: questions\n };\n params.file = questionSetElement.getAttribute('tscDM:file') || undefined;\n return new QuestionSet$2(params);\n};\n\n/** @module QuestionSet */\nvar QuestionSet$1$1 = {\n /**\n * Factory method that returns a new QuestionSet object.\n * @function create\n * @param {Object} params - Required params for question set\n * @param {String} [params.questionsSetName] - Question set name.\n * @param {Boolean} [params.feedback] - Question set feedback.\n * @param {Number} [params.startTime] - Question set start time (milliseconds)\n * @param {String} [params.file] - Associated file\n * @param {module:Question[]} [params.questions] - Question set questions.\n * @static\n * @return {module:QuestionSet} new QuestionSet instance\n */\n create: function create(params) {\n return QuestionSet$2(params);\n },\n /**\n * Factory method that returns a new QuestionSet object from an XMP questionSet element.\n * @function createFromXmpElement\n * @param {Object} element - XMP questionSet element.\n * @static\n * @return {module:QuestionSet} new QuestionSet instance\n */\n createFromXmpElement: createFromXmpElement$a\n};\nvar QuizTrack = function QuizTrack(params) {\n var _quizGuid;\n var _authoredEmail;\n var _requireUserId;\n var _locale;\n var _reportMethod;\n var _clientId;\n var _quizHash;\n var _hideReplay;\n var _allowSkipQuiz;\n var _questionSets = [];\n var _parameters;\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'quizGuid') {\n _quizGuid = params.quizGuid;\n } else if (key === 'authoredEmail') {\n _authoredEmail = params.authoredEmail;\n } else if (key === 'requireUserId') {\n _requireUserId = params.requireUserId;\n } else if (key === 'locale') {\n _locale = params.locale;\n } else if (key === 'reportMethod') {\n _reportMethod = params.reportMethod;\n } else if (key === 'clientId') {\n _clientId = params.clientId;\n } else if (key === 'quizHash') {\n _quizHash = params.quizHash;\n } else if (key === 'hideReplay') {\n _hideReplay = params.hideReplay;\n } else if (key === 'allowSkipQuiz') {\n _allowSkipQuiz = params.allowSkipQuiz;\n } else if (key === 'parameters' && isArray$1(params.parameters)) {\n _parameters = params.parameters;\n } else if (key === 'questionSets' && isArray$1(params.questionSets)) {\n _questionSets = params.questionSets;\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'Quiz',\n 'xmpDM:trackName': 'Quiz',\n 'xmpDM:frameRate': 'f1000',\n 'tscIQ:clientId': _clientId,\n 'tscIQ:quizHash': _quizHash,\n 'tscIQ:quizGuid': _quizGuid,\n 'tscIQ:authoredEmail': _authoredEmail,\n 'tscIQ:requireUserId': _requireUserId ? '1' : '0',\n 'tscIQ:locale': _locale,\n 'tscIQ:reportMethod': _reportMethod,\n 'tscIQ:hideReplay': _hideReplay ? '1' : '0',\n 'tscIQ:allowSkipQuiz': _allowSkipQuiz ? '1' : '0'\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _questionSets\n }]\n }, {\n name: 'tscIQ:QuizParams',\n children: [{\n name: 'rdf:Bag',\n children: map(_parameters, function (param) {\n return {\n name: 'rdf:li',\n atts: {\n 'xmpDM:name': param.name,\n 'xmpDM:value': param.value\n }\n };\n })\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n quizGuid: {\n get: function get() {\n return _quizGuid;\n }\n },\n authoredEmail: {\n get: function get() {\n return _authoredEmail;\n }\n },\n requireUserId: {\n get: function get() {\n return _requireUserId;\n }\n },\n locale: {\n get: function get() {\n return _locale;\n }\n },\n reportMethod: {\n get: function get() {\n return _reportMethod;\n }\n },\n clientId: {\n get: function get() {\n return _clientId;\n }\n },\n quizHash: {\n get: function get() {\n return _quizHash;\n }\n },\n hideReplay: {\n get: function get() {\n return _hideReplay;\n }\n },\n allowSkipQuiz: {\n get: function get() {\n return _allowSkipQuiz;\n }\n },\n parameters: {\n get: function get() {\n return _parameters;\n }\n },\n questionSets: {\n get: function get() {\n return _questionSets;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n quizGuid: _quizGuid,\n authoredEmail: _authoredEmail,\n requireUserId: _requireUserId,\n locale: _locale,\n reportMethod: _reportMethod,\n clientId: _clientId,\n quizHash: _quizHash,\n hideReplay: _hideReplay,\n allowSkipQuiz: _allowSkipQuiz,\n questionSets: invokeMap(_questionSets, 'toPOJO'),\n parameters: _parameters || undefined\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar parseParameter = function parseParameter(parameterElement) {\n return {\n name: parameterElement.getAttribute('xmpDM:name'),\n value: parameterElement.getAttribute('xmpDM:value')\n };\n};\nvar parseParameters = function parseParameters(quizParametersElement, xmlUtility) {\n if (quizParametersElement) {\n var parameterElements = xmlUtility.getElementsByTagNameNSPrefix(quizParametersElement, 'rdf:li');\n var parameters = map(parameterElements, parseParameter);\n return parameters;\n }\n return undefined;\n};\nvar createFromXmpElement$b = function createFromXmpElement$b(quizTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var quizTrack = new QuizTrack();\n if (quizTrackElement) {\n var descriptionElements = _xmlUtility.getElementsByTagNameNSPrefix(quizTrackElement, 'rdf:Description');\n var questionSetElements = filter(descriptionElements, function (element) {\n return _xmlUtility.hasAttribute(element, 'tscIQ:questionSetName');\n });\n var questionSets = map(questionSetElements, QuestionSet$1$1.createFromXmpElement);\n var quizParametersElement = _xmlUtility.getFirstElementByTagNameNSPrefix(quizTrackElement, 'tscIQ:QuizParams');\n var params = {\n quizGuid: quizTrackElement.getAttribute('tscIQ:quizGuid'),\n authoredEmail: quizTrackElement.getAttribute('tscIQ:authoredEmail'),\n requireUserId: quizTrackElement.getAttribute('tscIQ:requireUserId') === '1',\n locale: quizTrackElement.getAttribute('tscIQ:locale'),\n reportMethod: quizTrackElement.getAttribute('tscIQ:reportMethod'),\n clientId: quizTrackElement.getAttribute('tscIQ:clientId'),\n quizHash: quizTrackElement.getAttribute('tscIQ:quizHash'),\n hideReplay: quizTrackElement.getAttribute('tscIQ:hideReplay') === '1',\n allowSkipQuiz: quizTrackElement.getAttribute('tscIQ:allowSkipQuiz') !== '0',\n parameters: parseParameters(quizParametersElement, _xmlUtility),\n questionSets: questionSets\n };\n quizTrack = new QuizTrack(params);\n }\n return quizTrack;\n};\n\n/** @module QuizTrack */\nvar QuizTrack$1 = {\n /**\n * Factory method that returns a new QuizTrack object.\n * @function create\n * @param {Object} params - Optional params for caption track\n * @param {module:QuestionSet[]} [params.questionSets] - Array of question sets.\n * @static\n * @return {module:QuizTrack} new QuizTrack instance\n */\n create: function create(params) {\n return QuizTrack(params);\n },\n /**\n * Factory method that returns a new QuizTrack object from an XMP quiz track element.\n * @function createFromXmpElement\n * @param {Object} element - XMP quiz track element.\n * @static\n * @return {module:QuizTrack} new QuizTrack instance\n */\n createFromXmpElement: createFromXmpElement$b\n};\nvar SpeechMarker = function SpeechMarker(params) {\n var _startTime;\n var _duration;\n var _name;\n var _probability;\n var _image;\n var _imageIndex;\n var _imageOffset;\n var _file;\n var _imageRectangle;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'startTime') {\n _startTime = params.startTime;\n } else if (key === 'duration') {\n _duration = params.duration;\n } else if (key === 'name') {\n _name = params.name;\n } else if (key === 'probability') {\n _probability = params.probability;\n } else if (key === 'image') {\n _image = params.image;\n } else if (key === 'imageIndex') {\n _imageIndex = params.imageIndex;\n } else if (key === 'imageOffset') {\n _imageOffset = params.imageOffset;\n } else if (key === 'file') {\n _file = params.file;\n } else if (key === 'imageRectangle') {\n _imageRectangle = params.imageRectangle;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:name': _name,\n 'xmpDM:startTime': _startTime,\n 'xmpDM:duration': _duration,\n 'xmpDM:probability': _probability,\n 'tscDM:image': _image,\n 'tscDM:imageindex': _imageIndex,\n 'tscDM:imageoffset': _imageOffset,\n 'tscDM:imagerect': _imageRectangle ? _imageRectangle.toXmpAtt() : null,\n 'tscDM:file': _file\n }\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n duration: {\n get: function get() {\n return _duration;\n }\n },\n name: {\n get: function get() {\n return _name;\n }\n },\n probability: {\n get: function get() {\n return _probability;\n }\n },\n image: {\n get: function get() {\n return _image;\n }\n },\n imageIndex: {\n get: function get() {\n return _imageIndex;\n }\n },\n imageOffset: {\n get: function get() {\n return _imageOffset;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n },\n imageRectangle: {\n get: function get() {\n return _imageRectangle;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n startTime: _startTime,\n duration: _duration,\n name: _name,\n probability: _probability,\n image: _image,\n imageIndex: _imageIndex,\n imageOffset: _imageOffset,\n file: _file,\n imageRectangle: _imageRectangle ? _imageRectangle.toPOJO() : undefined\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$c = function createFromXmpElement$c(speechMarkerElement) {\n var params = {\n startTime: Number(speechMarkerElement.getAttribute('xmpDM:startTime')),\n duration: Number(speechMarkerElement.getAttribute('xmpDM:duration')),\n name: speechMarkerElement.getAttribute('xmpDM:name'),\n probability: Number(speechMarkerElement.getAttribute('xmpDM:probability'))\n };\n\n // optional attributes below\n\n params.image = speechMarkerElement.getAttribute('tscDM:image') || undefined;\n if (speechMarkerElement.getAttribute('tscDM:imageindex')) {\n params.imageIndex = Number(speechMarkerElement.getAttribute('tscDM:imageindex'));\n }\n if (speechMarkerElement.getAttribute('tscDM:imageoffset')) {\n params.imageOffset = Number(speechMarkerElement.getAttribute('tscDM:imageoffset'));\n }\n params.file = speechMarkerElement.getAttribute('tscDM:file') || undefined;\n if (speechMarkerElement.getAttribute('tscDM:imagerect')) {\n params.imageRectangle = ImageRectangle$1.create(speechMarkerElement.getAttribute('tscDM:imagerect'));\n }\n return new SpeechMarker(params);\n};\n\n/** @module SpeechMarker */\nvar SpeechMarker$1 = {\n /**\n * Factory method that returns a new SpeechMarker object.\n * @function create\n * @param {Object} params - Required params for table of contents item\n * @param {Number} [params.startTime] - Start time of the speech marker (milliseconds).\n * @param {Number} [params.duration] - Duration of the speech marker (milliseconds).\n * @param {String} [params.name] - Speech marker name.\n * @param {String} [params.image] - Speech marker image.\n * @param {Number} [params.imageIndex] - Speech marker image index.\n * @param {Number} [params.imageOffset] - Speech marker image offset.\n * @param {module:ImageRectangle} [params.imageRectangle] - Speech marker image rectangle.\n * @static\n * @return {module:SpeechMarker} new SpeechMarker instance\n */\n create: function create(params) {\n return SpeechMarker(params);\n },\n /**\n * Factory method that returns a new SpeechMarker object from an XMP speech marker element.\n * @function createFromXmpElement\n * @param {Object} element - XMP speechMarker element.\n * @static\n * @return {module:SpeechMarker} new SpeechMarker instance\n */\n createFromXmpElement: createFromXmpElement$c\n};\nvar SpeechTrack = function SpeechTrack(params) {\n var _markers = [];\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n if (params.hasOwnProperty('markers') && isArray$1(params.markers)) {\n _markers = params.markers;\n } else {\n throw new Error('SpeechTrack params is expecting an object eg. { markers: [marker1Object, ...] }');\n }\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'Speech',\n 'xmpDM:trackName': 'Speech to Text',\n 'xmpDM:frameRate': 'f1000'\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _markers\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n markers: {\n get: function get() {\n return _markers;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n markers: invokeMap(_markers, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$d = function createFromXmpElement$d(speechTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var speechTrack = new SpeechTrack();\n if (speechTrackElement) {\n var markerElements = _xmlUtility.getElementsByTagNameNSPrefix(speechTrackElement, 'rdf:li');\n var markers = map(markerElements, SpeechMarker$1.createFromXmpElement);\n var params = {\n markers: markers\n };\n speechTrack = new SpeechTrack(params);\n }\n return speechTrack;\n};\n\n/** @module SpeechTrack */\nvar SpeechTrack$1 = {\n /**\n * Factory method that returns a new SpeechTrack object.\n * @function create\n * @param {Object} params - Optional params for speech track\n * @param {module:SpeechMarker[]} [params.markers] - Array of speech marker items.\n * @static\n * @return {module:SpeechTrack} new SpeechTrack instance\n */\n create: function create(params) {\n return SpeechTrack(params);\n },\n /**\n * Factory method that returns a new SpeechTrack object from an XMP speech track element.\n * @function createFromXmpElement\n * @param {Object} element - XMP speech track element.\n * @static\n * @return {module:SpeechTrack} new SpeechTrack instance\n */\n createFromXmpElement: createFromXmpElement$d\n};\nvar ScreenTextMarker = function ScreenTextMarker(params) {\n var _name;\n var _startTime;\n var _duration;\n var _tableOfContentsEntry;\n var _image;\n var _imageIndex;\n var _imageOffset;\n var _imageRectangle;\n var _file;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'name') {\n _name = params.name;\n } else if (key === 'startTime') {\n _startTime = params.startTime;\n } else if (key === 'duration') {\n _duration = params.duration;\n } else if (key === 'tableOfContentsEntry') {\n _tableOfContentsEntry = params.tableOfContentsEntry;\n } else if (key === 'image') {\n _image = params.image;\n } else if (key === 'imageIndex') {\n _imageIndex = params.imageIndex;\n } else if (key === 'imageOffset') {\n _imageOffset = params.imageOffset;\n } else if (key === 'imageRectangle') {\n _imageRectangle = params.imageRectangle;\n } else if (key === 'file') {\n _file = params.file;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:name': _name,\n 'xmpDM:startTime': _startTime,\n 'xmpDM:duration': _duration,\n 'tscDM:tocEntry': _tableOfContentsEntry,\n 'tscDM:image': _image,\n 'tscDM:imageindex': _imageIndex,\n 'tscDM:imageoffset': _imageOffset,\n 'tscDM:imagerect': _imageRectangle ? _imageRectangle.toXmpAtt() : null,\n 'tscDM:file': _file\n }\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n name: {\n get: function get() {\n return _name;\n }\n },\n startTime: {\n get: function get() {\n return _startTime;\n }\n },\n duration: {\n get: function get() {\n return _duration;\n }\n },\n tableOfContentsEntry: {\n get: function get() {\n return _tableOfContentsEntry;\n }\n },\n image: {\n get: function get() {\n return _image;\n }\n },\n imageIndex: {\n get: function get() {\n return _imageIndex;\n }\n },\n imageOffset: {\n get: function get() {\n return _imageOffset;\n }\n },\n imageRectangle: {\n get: function get() {\n return _imageRectangle;\n }\n },\n file: {\n get: function get() {\n return _file;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n name: _name,\n startTime: _startTime,\n duration: _duration,\n tableOfContentsEntry: _tableOfContentsEntry,\n image: _image,\n imageIndex: _imageIndex,\n imageOffset: _imageOffset,\n imageRectangle: _imageRectangle ? _imageRectangle.toPOJO() : _imageRectangle,\n file: _file\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$e = function createFromXmpElement$e(screenTextMarkerElement) {\n var params = {\n name: screenTextMarkerElement.getAttribute('xmpDM:name'),\n startTime: Number(screenTextMarkerElement.getAttribute('xmpDM:startTime')),\n duration: Number(screenTextMarkerElement.getAttribute('xmpDM:duration'))\n };\n\n // optional attributes below\n\n if (screenTextMarkerElement.getAttribute('tscDM:tocEntry')) {\n params.tableOfContentsEntry = Number(screenTextMarkerElement.getAttribute('tscDM:tocEntry'));\n }\n params.image = screenTextMarkerElement.getAttribute('tscDM:image') || undefined;\n if (screenTextMarkerElement.getAttribute('tscDM:imageindex')) {\n params.imageIndex = Number(screenTextMarkerElement.getAttribute('tscDM:imageindex'));\n }\n if (screenTextMarkerElement.getAttribute('tscDM:imageoffset')) {\n params.imageOffset = Number(screenTextMarkerElement.getAttribute('tscDM:imageoffset'));\n }\n if (screenTextMarkerElement.getAttribute('tscDM:imagerect')) {\n params.imageRectangle = ImageRectangle$1.create(screenTextMarkerElement.getAttribute('tscDM:imagerect'));\n }\n params.file = screenTextMarkerElement.getAttribute('tscDM:file') || undefined;\n return new ScreenTextMarker(params);\n};\n\n/** @module ScreenTextMarker */\nvar ScreenTextMarker$1 = {\n /**\n * Factory method that returns a new ScreenTextMarker object.\n * @function create\n * @param {Object} params - Required params for table of contents item\n * @param {String} [params.name] - ScreenText marker name.\n * @param {Number} [params.startTime] - Start time of the screenText marker (milliseconds).\n * @param {Number} [params.duration] - Duration of the screenText marker (milliseconds).\n * @param {String} [params.tableOfContentsEntry] - Index of the table of contents entry corresponding to this screen text marker.\n * @param {String} [params.image] - ScreenText marker image.\n * @param {Number} [params.imageIndex] - ScreenText marker image index.\n * @param {Number} [params.imageOffset] - ScreenText marker image offset.\n * @param {module:ImageRectangle} [params.imageRectangle] - ScreenText marker image rectangle.\n * @param {String} [params.file] - file associated with ScreenText marker.\n * @static\n * @return {module:ScreenTextMarker} new ScreenTextMarker instance\n */\n create: function create(params) {\n return ScreenTextMarker(params);\n },\n /**\n * Factory method that returns a new ScreenTextMarker object from an XMP screenText marker element.\n * @function createFromXmpElement\n * @param {Object} element - XMP screenTextMarker element.\n * @static\n * @return {module:ScreenTextMarker} new ScreenTextMarker instance\n */\n createFromXmpElement: createFromXmpElement$e\n};\nvar ScreenTextTrack = function ScreenTextTrack(params) {\n var _markers = [];\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n if (params.hasOwnProperty('markers') && isArray$1(params.markers)) {\n _markers = params.markers;\n } else {\n throw new Error('ScreenTextTrack params is expecting an object eg. { markers: [marker1Object, ...] }');\n }\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:trackType': 'ScreenText',\n 'xmpDM:trackName': 'Screen Text',\n 'xmpDM:frameRate': 'f1000'\n },\n children: [{\n name: 'xmpDM:markers',\n children: [{\n name: 'rdf:Seq',\n children: _markers\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n markers: {\n get: function get() {\n return _markers;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n markers: invokeMap(_markers, 'toPOJO')\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\nvar createFromXmpElement$f = function createFromXmpElement$f(screenTextTrackElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var screenTextTrack = new ScreenTextTrack();\n if (screenTextTrackElement) {\n var markerElements = _xmlUtility.getElementsByTagNameNSPrefix(screenTextTrackElement, 'rdf:Description');\n var markers = map(markerElements, ScreenTextMarker$1.createFromXmpElement);\n var params = {\n markers: markers\n };\n screenTextTrack = new ScreenTextTrack(params);\n }\n return screenTextTrack;\n};\n\n/** @module ScreenTextTrack */\nvar ScreenTextTrack$1 = {\n /**\n * Factory method that returns a new ScreenTextTrack object.\n * @function create\n * @param {Object} params - Optional params for screenText track\n * @param {module:ScreenTextMarker[]} [params.markers] - Array of screenText marker items.\n * @static\n * @return {module:ScreenTextTrack} new ScreenTextTrack instance\n */\n create: function create(params) {\n return ScreenTextTrack(params);\n },\n /**\n * Factory method that returns a new ScreenTextTrack object from an XMP screenText track element.\n * @function createFromXmpElement\n * @param {Object} element - XMP screenText track element.\n * @static\n * @return {module:ScreenTextTrack} new ScreenTextTrack instance\n */\n createFromXmpElement: createFromXmpElement$f\n};\nvar _xmlUtility;\nvar getXmlUtility = function getXmlUtility() {\n return _xmlUtility || (_xmlUtility = new NamespaceXmlUtility(namespaceResolver));\n};\nvar Controller = function Controller(params) {\n var _name;\n var _parameters;\n var _controllerTextItems;\n var _additionalParamProperties = {};\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'name') {\n _name = params.name;\n } else if (key === 'parameters') {\n _parameters = params.parameters;\n } else if (key === 'controllerTextItems') {\n _controllerTextItems = params.controllerTextItems;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var localizedTextTree = map(_controllerTextItems, function (item) {\n return {\n name: 'rdf:li',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmp:label': item.label\n },\n children: [{\n name: 'tscDM:localizedText',\n children: [{\n name: 'rdf:Alt',\n children: map(item.localizedTexts, function (localizedText) {\n return {\n name: 'rdf:li',\n atts: {\n 'xml:lang': localizedText.lang\n },\n text: localizedText.text\n };\n })\n }]\n }]\n }]\n };\n });\n var treeDesc = {\n name: 'tscDM:controller',\n children: [{\n name: 'rdf:Description',\n atts: {\n 'xmpDM:name': _name\n },\n children: [{\n name: 'tscDM:parameters',\n children: [{\n name: 'rdf:Bag',\n children: map(_parameters, function (param) {\n return {\n name: 'rdf:li',\n atts: {\n 'xmpDM:name': param.name,\n 'xmpDM:value': param.value\n }\n };\n })\n }]\n }, {\n name: 'tscDM:controllerText',\n children: [{\n name: 'rdf:Bag',\n children: localizedTextTree\n }]\n }]\n }]\n };\n return getXmlUtility().createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n name: {\n get: function get() {\n return _name;\n }\n },\n parameters: {\n get: function get() {\n return _parameters;\n }\n },\n controllerTextItems: {\n get: function get() {\n return _controllerTextItems;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n name: _name,\n parameters: _parameters,\n controllerTextItems: _controllerTextItems\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar parseParameter$1 = function parseParameter$1(parameterElement) {\n return {\n name: parameterElement.getAttribute('xmpDM:name'),\n value: parameterElement.getAttribute('xmpDM:value')\n };\n};\nvar parseParameters$1 = function parseParameters$1(parametersElement) {\n if (parametersElement) {\n var parameterElements = getXmlUtility().getElementsByTagNameNSPrefix(parametersElement, 'rdf:li');\n var parameters = map(parameterElements, parseParameter$1);\n return parameters;\n }\n return undefined;\n};\nvar parseLocalizedTextItem = function parseLocalizedTextItem(textElement) {\n if (textElement) {\n return {\n lang: textElement.getAttribute('xml:lang'),\n text: getXmlUtility().getElementText(textElement)\n };\n }\n return undefined;\n};\nvar parseControllerText = function parseControllerText(controllerTextItemElement) {\n var textElements = getXmlUtility().getElementsByTagNameNSPrefix(controllerTextItemElement, 'rdf:li');\n return {\n label: controllerTextItemElement.getAttribute('xmp:label'),\n localizedTexts: map(textElements, parseLocalizedTextItem)\n };\n};\nvar parseControllerTextItems = function parseControllerTextItems(controllerTextElement) {\n if (controllerTextElement) {\n var controllerTextElements = getXmlUtility().getElementsByTagNameNSPrefix(controllerTextElement, 'rdf:Description');\n var controllerTextItems = map(controllerTextElements, parseControllerText);\n return controllerTextItems;\n }\n return undefined;\n};\nvar createFromXmpElement$g = function createFromXmpElement$g(controllerElement) {\n if (controllerElement) {\n var descriptionElement = getXmlUtility().getFirstElementByTagNameNSPrefix(controllerElement, 'rdf:Description');\n var parametersElement = getXmlUtility().getFirstElementByTagNameNSPrefix(descriptionElement, 'tscDM:parameters');\n var controllerTextElement = getXmlUtility().getFirstElementByTagNameNSPrefix(descriptionElement, 'tscDM:controllerText');\n var params = {\n name: descriptionElement.getAttribute('xmpDM:name'),\n parameters: parseParameters$1(parametersElement),\n controllerTextItems: parseControllerTextItems(controllerTextElement)\n };\n return new Controller(params);\n }\n return undefined;\n};\n\n/** @module Controller */\nvar Controller$1 = {\n /**\n * Factory method that returns a new Controller object.\n * @function create\n * @param {Object} params - Required params for controller\n * @param {String} [params.name] - Controller label.\n * @param {Object[]} [params.parameters] - Array of Objects with name and value properties.\n * @param {Object[]} [params.controllerTextItems] - Array of localized controller text items.\n * @static\n * @return {module:Controller} new Controller instance\n */\n create: function create(params) {\n return Controller(params);\n },\n /**\n * Factory method that returns a new Controller object from an XMP controller element.\n * @function createFromXmpElement\n * @param {Object} element - XMP controller element.\n * @static\n * @return {module:Controller} new Controller instance\n */\n createFromXmpElement: createFromXmpElement$g\n};\nvar ContentList = function ContentList(params) {\n var _items;\n var _additionalParamProperties = {};\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (params) {\n forEach(keys$1(params), function (key) {\n if (key === 'items') {\n _items = params.items;\n } else if (!isFunction(_additionalParamProperties[key])) {\n _additionalParamProperties[key] = params[key];\n }\n });\n }\n var toXmp = function toXmp() {\n var treeDesc = {\n name: 'tscDM:contentList',\n children: [{\n name: 'rdf:Description',\n children: [{\n name: 'tscDM:files',\n children: [{\n name: 'rdf:Seq',\n children: map(_items, function (item) {\n return {\n name: 'rdf:li',\n atts: {\n 'xmpDM:name': item.name,\n 'xmpDM:value': item.value\n }\n };\n })\n }]\n }]\n }]\n };\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var _public = Object.defineProperties({}, {\n items: {\n get: function get() {\n return _items;\n }\n }\n });\n _public.toXmp = toXmp;\n _public.toPOJO = function () {\n var pojo = {\n items: _items\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n forEach(keys$1(_additionalParamProperties), function (key) {\n pojo[key] = _additionalParamProperties[key];\n });\n return pojo;\n };\n return _public;\n};\nvar parseContentListItems = function parseContentListItems(contentListItemElements) {\n if (contentListItemElements) {\n var items = map(contentListItemElements, function (itemElement) {\n return {\n name: itemElement.getAttribute('xmpDM:name'),\n value: itemElement.getAttribute('xmpDM:value')\n };\n });\n return items;\n }\n return undefined;\n};\nvar createFromXmpElement$h = function createFromXmpElement$h(contentListElement) {\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n if (contentListElement) {\n var contentListItemElements = _xmlUtility.getElementsByTagNameNSPrefix(contentListElement, 'rdf:li');\n var params = {\n items: parseContentListItems(contentListItemElements)\n };\n return new ContentList(params);\n }\n return undefined;\n};\n\n/** @module ContentList */\nvar ContentList$1 = {\n /**\n * Factory method that returns a new ContentList object.\n * @function create\n * @param {Object} params - Required params for contentList\n * @param {Object[]} [params.items] - Array of content list items.\n * @static\n * @return {module:ContentList} new ContentList instance\n */\n create: function create(params) {\n return ContentList(params);\n },\n /**\n * Factory method that returns a new ContentList object from an XMP contentList element.\n * @function createFromXmpElement\n * @param {Object} element - XMP contentList element.\n * @static\n * @return {module:ContentList} new ContentList instance\n */\n createFromXmpElement: createFromXmpElement$h\n};\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return !start && end >= length ? array : baseSlice(array, start, end);\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\n/**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\nfunction charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = \"\\\\ud800-\\\\udfff\",\n rsComboMarksRange = \"\\\\u0300-\\\\u036f\",\n reComboHalfMarksRange = \"\\\\ufe20-\\\\ufe2f\",\n rsComboSymbolsRange = \"\\\\u20d0-\\\\u20ff\",\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = \"\\\\ufe0e\\\\ufe0f\";\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = \"\\\\u200d\";\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange$1 = \"\\\\ud800-\\\\udfff\",\n rsComboMarksRange$1 = \"\\\\u0300-\\\\u036f\",\n reComboHalfMarksRange$1 = \"\\\\ufe20-\\\\ufe2f\",\n rsComboSymbolsRange$1 = \"\\\\u20d0-\\\\u20ff\",\n rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1,\n rsVarRange$1 = \"\\\\ufe0e\\\\ufe0f\";\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange$1 + ']',\n rsCombo = '[' + rsComboRange$1 + ']',\n rsFitz = \"\\\\ud83c[\\\\udffb-\\\\udfff]\",\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange$1 + ']',\n rsRegional = \"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",\n rsSurrPair = \"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",\n rsZWJ$1 = \"\\\\u200d\";\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange$1 + ']?',\n rsOptJoin = '(?:' + rsZWJ$1 + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);\n}\n\n/** Used to match leading and trailing whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\nfunction trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n return castSlice(strSymbols, start).join('');\n}\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function (key) {\n return object[key];\n });\n}\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys$1(object));\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax$2 = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax$2(length + fromIndex, 0);\n }\n return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;\n}\nvar _parsers = [];\nfunction trimLeadingDot(extension) {\n return trimStart(extension, '.');\n}\nvar registerParser = function registerParser(name, supportedExtensions, parserCreator) {\n _parsers.push({\n name: name,\n extensions: map(supportedExtensions, trimLeadingDot),\n create: parserCreator\n });\n};\nvar resolveParser = function resolveParser(extension) {\n var parser = find(_parsers, function (theParser) {\n return includes(theParser.extensions, trimLeadingDot(extension));\n });\n return parser ? parser.create() : null;\n};\nvar captionParsers = {\n register: registerParser,\n resolveByExtension: resolveParser\n};\n\n/**\n * Factory method that returns a new CaptionText object.\n * @function importFromFile\n * @param {module:CaptionController} captionController - CaptionController object\n * @param {String} fileName - Name of caption file\n * @param {String} fileContents - Contents of the caption file\n * @param {String} [languageIdentifierString='en-US'] - RFC 3066 notation language string\n * @static\n * @return {boolean} Did import succeed\n */\nvar importFromFile = function importFromFile(captionController, fileName, fileContents, languageIdentifierString) {\n try {\n var extension = fileName.toLowerCase().split('.').pop();\n var parser = captionParsers.resolveByExtension(extension);\n if (parser) {\n var parsedCaptionTrack = parser.deserialize(fileContents, languageIdentifierString);\n captionController.addCaptionTrack(parsedCaptionTrack);\n return true;\n }\n return false;\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n return false;\n }\n};\nvar captionImporter = {\n importFromFile: importFromFile\n};\nvar Xmp$1 = function Xmp(xmpXml) {\n var _version;\n var _title;\n var _date;\n var _creator;\n var _presenterEmail;\n var _description;\n var _source;\n var _about;\n var _keywords;\n var _thumbnail;\n var _firstFrame;\n var _project;\n var _originId;\n var _iPodExplicit;\n var _documentId;\n var _duration;\n var _videoFrameSize;\n var _captionController = CaptionController$1$1.create();\n var _hotspotTrack = null;\n var _tableOfContentsTrack = null;\n var _quizTrack = null;\n var _speechTrack = null;\n var _screenTextTrack = null;\n var _controller;\n var _contentList;\n var _languages = [];\n var _containsTocThumbnails = false;\n var _containsToc = false;\n var _containsCaptions = false;\n var _containsHotspots = false;\n var _containsQuiz = false;\n var _containsQuizQuestions = false;\n var _containsScreenText = false;\n var _containsSpeechText = false;\n var _xmlUtility = new NamespaceXmlUtility(namespaceResolver);\n var toXmp = function toXmp() {\n var _captionXmpProvider = _captionController.containsCaptions ? _captionController : null;\n var tracksContainer = filter([_captionXmpProvider, _hotspotTrack, _quizTrack, _screenTextTrack, _speechTrack, _tableOfContentsTrack], function (track) {\n return track !== null;\n });\n var treeDesc = {\n name: 'rdf:Description',\n atts: {\n 'tsc:version': _version,\n 'dc:title': _title,\n 'tscDM:presenteremail': _presenterEmail,\n 'dc:source': _source,\n 'dc:date': _date,\n 'rdf:about': _about,\n 'dc:creator': _creator,\n 'dc:description': _description,\n 'tscDM:keywords': _keywords,\n 'tscDM:thumbnail': _thumbnail,\n 'tscDM:firstFrame': _firstFrame,\n 'tscDM:project': _project,\n 'tscDM:originId': _originId,\n 'tscDM:iPodExplicit': _iPodExplicit,\n 'xmpMM:DocumentID': _documentId\n },\n children: [{\n name: 'xmpDM:Tracks',\n children: [{\n name: 'rdf:Bag',\n children: tracksContainer\n }]\n }, {\n name: 'tscDM:controller',\n children: [_controller]\n }, {\n name: 'tscDM:contentList',\n children: [_contentList]\n }, {\n name: 'tsc:langName',\n children: [{\n name: 'rdf:Bag',\n children: map(_languages, function (language) {\n return {\n name: 'rdf:li',\n atts: {\n 'xml:lang': language.langName\n },\n text: language.langValue\n };\n })\n }]\n }, {\n name: 'xmpDM:videoFrameSize',\n atts: {\n 'stDim:unit': _videoFrameSize.unit,\n 'stDim:w': _videoFrameSize.width,\n 'stDim:h': _videoFrameSize.height\n }\n }]\n };\n if (_duration) {\n treeDesc.children.push({\n name: 'xmpDM:duration',\n atts: {\n 'xmpDM:scale': _duration.scale,\n 'xmpDM:value': _duration.value\n }\n });\n }\n return _xmlUtility.createElementFromObject(treeDesc);\n };\n var toString = function toString() {\n var doc = _xmlUtility.createDocument();\n var nsElement = _xmlUtility.createElementNS(doc, namespaceResolver('x'), 'x', 'xmpmeta');\n forEach(wellKnownNamespaces, function (nsUrl, nsPrefix) {\n if (nsPrefix !== 'xml') {\n nsElement.setAttributeNS('http://www.w3.org/2000/xmlns/', ['xmlns', nsPrefix].join(':'), nsUrl);\n }\n });\n var rdfElement = _xmlUtility.createElementNS(doc, namespaceResolver('rdf'), 'rdf', 'RDF');\n rdfElement.appendChild(toXmp());\n nsElement.appendChild(rdfElement);\n doc.appendChild(nsElement);\n return _xmlUtility.xmlDocToString(doc);\n };\n var _public = Object.defineProperties({}, {\n version: {\n get: function get() {\n return _version;\n }\n },\n title: {\n get: function get() {\n return _title;\n }\n },\n date: {\n get: function get() {\n return _date;\n }\n },\n creator: {\n get: function get() {\n return _creator;\n }\n },\n presenterEmail: {\n get: function get() {\n return _presenterEmail;\n }\n },\n description: {\n get: function get() {\n return _description;\n }\n },\n source: {\n get: function get() {\n return _source;\n }\n },\n about: {\n get: function get() {\n return _about;\n }\n },\n keywords: {\n get: function get() {\n return _keywords;\n }\n },\n thumbnail: {\n get: function get() {\n return _thumbnail;\n }\n },\n firstFrame: {\n get: function get() {\n return _firstFrame;\n }\n },\n project: {\n get: function get() {\n return _project;\n }\n },\n originId: {\n get: function get() {\n return _originId;\n }\n },\n iPodExplicit: {\n get: function get() {\n return _iPodExplicit;\n }\n },\n documentId: {\n get: function get() {\n return _documentId;\n }\n },\n duration: {\n get: function get() {\n return _duration;\n }\n },\n videoFrameSize: {\n get: function get() {\n return _videoFrameSize;\n }\n },\n tocThumbnailImageSrc: {\n get: function get() {\n if (_containsToc && _tableOfContentsTrack.items[0].image !== undefined) {\n return _tableOfContentsTrack.items[0].image;\n } else if (_containsSpeechText && _speechTrack.markers[0].image !== undefined) {\n return _speechTrack.markers[0].image;\n } else if (_containsScreenText && _screenTextTrack.markers[0].image !== undefined) {\n return _screenTextTrack.markers[0].image;\n } else if (_captionController.captionsContainsTocThumbnails) {\n return _captionController.getActiveCaptionsTocThumbnailImage();\n }\n return '';\n }\n },\n containsTocThumbnails: {\n get: function get() {\n return _containsTocThumbnails;\n }\n },\n containsToc: {\n get: function get() {\n return _containsToc;\n }\n },\n containsCaptions: {\n get: function get() {\n return _containsCaptions;\n }\n },\n containsHotspots: {\n get: function get() {\n return _containsHotspots;\n }\n },\n containsQuiz: {\n get: function get() {\n return _containsQuiz;\n }\n },\n containsQuizQuestions: {\n get: function get() {\n return _containsQuizQuestions;\n }\n },\n containsScreenText: {\n get: function get() {\n return _containsScreenText;\n }\n },\n containsSpeechText: {\n get: function get() {\n return _containsSpeechText;\n }\n },\n captionController: {\n get: function get() {\n return _captionController;\n }\n },\n captionTrack: {\n get: function get() {\n return _captionController.activeCaptionTrack;\n }\n },\n hotspotTrack: {\n get: function get() {\n return _hotspotTrack;\n },\n set: function set(value) {\n _hotspotTrack = value;\n }\n },\n tableOfContentsTrack: {\n get: function get() {\n return _tableOfContentsTrack;\n },\n set: function set(value) {\n _tableOfContentsTrack = value;\n }\n },\n quizTrack: {\n get: function get() {\n return _quizTrack;\n },\n set: function set(value) {\n _quizTrack = value;\n }\n },\n speechTrack: {\n get: function get() {\n return _speechTrack;\n }\n },\n screenTextTrack: {\n get: function get() {\n return _screenTextTrack;\n }\n },\n controller: {\n get: function get() {\n return _controller;\n }\n },\n contentList: {\n get: function get() {\n return _contentList;\n }\n }\n });\n var parseLanguageName = function parseLanguageName(languageNameElement) {\n return {\n langName: languageNameElement.getAttribute('xml:lang'),\n langValue: _xmlUtility.getElementText(languageNameElement)\n };\n };\n var parseLanguages = function parseLanguages(langNameElement) {\n if (langNameElement) {\n var languageNameElements = _xmlUtility.getElementsByTagNameNSPrefix(langNameElement, 'rdf:li');\n var languageNames = map(languageNameElements, parseLanguageName);\n return languageNames;\n }\n return null;\n };\n var parseProductionDetails = function parseProductionDetails(doc) {\n var rootDescriptionElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'rdf:Description');\n _version = rootDescriptionElement.getAttribute('tsc:version');\n _title = rootDescriptionElement.getAttribute('dc:title');\n _documentId = rootDescriptionElement.getAttribute('xmpMM:DocumentID');\n var videoFrameSizeElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'xmpDM:videoFrameSize');\n _videoFrameSize = {\n unit: videoFrameSizeElement ? videoFrameSizeElement.getAttribute('stDim:unit') : 'pixel',\n width: videoFrameSizeElement ? Number(videoFrameSizeElement.getAttribute('stDim:w')) : 0,\n height: videoFrameSizeElement ? Number(videoFrameSizeElement.getAttribute('stDim:h')) : 0\n };\n var langNameElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'tsc:langName');\n _languages = parseLanguages(langNameElement);\n\n // optional attributes below\n\n _presenterEmail = rootDescriptionElement.getAttribute('tscDM:presenteremail') || undefined;\n _source = rootDescriptionElement.getAttribute('dc:source') || undefined;\n _date = rootDescriptionElement.getAttribute('dc:date') || undefined;\n _about = rootDescriptionElement.getAttribute('rdf:about') || undefined;\n _creator = rootDescriptionElement.getAttribute('dc:creator') || undefined;\n _description = rootDescriptionElement.getAttribute('dc:description') || undefined;\n _keywords = rootDescriptionElement.getAttribute('tscDM:keywords') || undefined;\n _thumbnail = rootDescriptionElement.getAttribute('tscDM:thumbnail') || undefined;\n _firstFrame = rootDescriptionElement.getAttribute('tscDM:firstFrame') || undefined;\n _project = rootDescriptionElement.getAttribute('tscDM:project') || undefined;\n _originId = rootDescriptionElement.getAttribute('tscDM:originId') || undefined;\n _iPodExplicit = rootDescriptionElement.getAttribute('tscDM:iPodExplicit') || undefined;\n var durationElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'xmpDM:duration') || undefined;\n if (durationElement) {\n _duration = {\n scale: durationElement.getAttribute('xmpDM:scale'),\n value: Number(durationElement.getAttribute('xmpDM:value'))\n };\n }\n };\n var getElementForTrackType = function getElementForTrackType(elements, trackType) {\n return find(elements, function (element) {\n return _xmlUtility.hasAttributeWithValue(element, 'xmpDM:trackType', trackType);\n });\n };\n var parseCaptionTrack = function parseCaptionTrack(tracksDescriptionElements) {\n var captionTrackElement = getElementForTrackType(tracksDescriptionElements, 'Caption');\n if (captionTrackElement) {\n _captionController.addCaptionTrackFromXmpElement(captionTrackElement);\n }\n };\n var parseHotspotTrack = function parseHotspotTrack(tracksDescriptionElements) {\n var hotspotTrackElement = getElementForTrackType(tracksDescriptionElements, 'Hotspot');\n if (hotspotTrackElement) {\n return HotspotTrack$1.createFromXmpElement(hotspotTrackElement);\n }\n return null;\n };\n var parseTableOfContentsTrack = function parseTableOfContentsTrack(tracksDescriptionElements) {\n var tableOfContentsTrackElement = getElementForTrackType(tracksDescriptionElements, 'TableOfContents');\n if (tableOfContentsTrackElement) {\n return TableOfContentsTrack$1.createFromXmpElement(tableOfContentsTrackElement);\n }\n return null;\n };\n var parseQuizTrack = function parseQuizTrack(tracksDescriptionElements) {\n var quizTrackElement = getElementForTrackType(tracksDescriptionElements, 'Quiz');\n if (quizTrackElement) {\n return QuizTrack$1.createFromXmpElement(quizTrackElement);\n }\n return null;\n };\n var parseSpeechTrack = function parseSpeechTrack(tracksDescriptionElements) {\n var speechTrackElement = getElementForTrackType(tracksDescriptionElements, 'Speech');\n if (speechTrackElement) {\n return SpeechTrack$1.createFromXmpElement(speechTrackElement);\n }\n return null;\n };\n var parseScreenTextTrack = function parseScreenTextTrack(tracksDescriptionElements) {\n var screenTextTrackElement = getElementForTrackType(tracksDescriptionElements, 'ScreenText');\n if (screenTextTrackElement) {\n return ScreenTextTrack$1.createFromXmpElement(screenTextTrackElement);\n }\n return null;\n };\n var parseTracks = function parseTracks(doc) {\n var tracksElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'xmpDM:Tracks');\n var tracksDescriptionElements = _xmlUtility.getElementsByTagNameNSPrefix(tracksElement, 'rdf:Description');\n parseCaptionTrack(tracksDescriptionElements);\n _hotspotTrack = parseHotspotTrack(tracksDescriptionElements);\n _tableOfContentsTrack = parseTableOfContentsTrack(tracksDescriptionElements);\n _quizTrack = parseQuizTrack(tracksDescriptionElements);\n _speechTrack = parseSpeechTrack(tracksDescriptionElements);\n _screenTextTrack = parseScreenTextTrack(tracksDescriptionElements);\n var controllerElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'tscDM:controller');\n _controller = Controller$1.createFromXmpElement(controllerElement);\n var contentListElement = _xmlUtility.getFirstElementByTagNameNSPrefix(doc, 'tscDM:contentList');\n _contentList = ContentList$1.createFromXmpElement(contentListElement);\n recordXmpContentFlags();\n };\n var recordXmpContentFlags = function recordXmpContentFlags() {\n _containsToc = _tableOfContentsTrack !== null && _tableOfContentsTrack.items.length > 0;\n _containsCaptions = _captionController.containsCaptions;\n _containsHotspots = _hotspotTrack !== null && _hotspotTrack.hotspots.length > 0;\n _containsQuiz = _quizTrack !== null;\n _containsQuizQuestions = _quizTrack !== null && _quizTrack.questionSets.length > 0;\n _containsScreenText = _screenTextTrack !== null && _screenTextTrack.markers.length > 0;\n _containsSpeechText = _speechTrack !== null && _speechTrack.markers.length > 0;\n _containsTocThumbnails = _containsToc && _tableOfContentsTrack.items[0].image !== undefined || _containsSpeechText && _speechTrack.markers[0].image !== undefined || _containsScreenText && _screenTextTrack.markers[0].image !== undefined || _captionController.captionsContainsTocThumbnails;\n };\n var importCaptionsFromFile = function importCaptionsFromFile(fileName, fileContents, languageIdentifierString) {\n var importedCaptionTrack = captionImporter.importFromFile(_captionController, fileName, fileContents, languageIdentifierString);\n if (importedCaptionTrack) {\n recordXmpContentFlags();\n }\n };\n var parse = function parse() {\n // current 'parse' does NOT deal with different versions of the TSC-XMP schema, as far as we have tested\n // all existing versions of the schema from 2.0.0 - 2.1.0 will parse using this mechanism, but neither parser\n // nor output formatter attempt to take a 2.0.0 and formally migrate it forward to 2.1.0. Nor is the 'version'\n // property of the xml doc ever modified during reading a writing of a particular source. this note is here\n // because will have to deal with versioning someday. (JMD: 2016-05)\n var doc = _xmlUtility.parseXml(xmpXml);\n parseProductionDetails(doc);\n parseTracks(doc);\n };\n if (xmpXml) {\n parse();\n }\n _public.toXmp = toXmp;\n _public.toString = toString;\n _public.importCaptionsFromFile = importCaptionsFromFile;\n _public.toPOJO = function () {\n var pojo = {\n version: _version,\n title: _title,\n documentId: _documentId,\n languages: _languages,\n videoFrameSize: _videoFrameSize,\n source: _source,\n presenterEmail: _presenterEmail,\n date: _date,\n about: _about,\n creator: _creator,\n description: _description,\n keywords: _keywords,\n thumbnail: _thumbnail,\n firstFrame: _firstFrame,\n project: _project,\n originId: _originId,\n iPodExplicit: _iPodExplicit,\n duration: _duration,\n captionTrack: _captionController.toPOJO(),\n hotspotTrack: _hotspotTrack ? _hotspotTrack.toPOJO() : undefined,\n quizTrack: _quizTrack ? _quizTrack.toPOJO() : undefined,\n speechTrack: _speechTrack ? _speechTrack.toPOJO() : undefined,\n screenTextTrack: _screenTextTrack ? _screenTextTrack.toPOJO() : undefined,\n controller: _controller ? _controller.toPOJO() : undefined,\n contentList: _contentList ? _contentList.toPOJO() : undefined\n };\n var that = this;\n var additionalProperties = reject$1(keys$1(that), function (key) {\n return isFunction(that[key]);\n });\n forEach(additionalProperties, function (key) {\n pojo[key] = that[key];\n });\n return pojo;\n };\n return _public;\n};\n\n/** @module Xmp */\nvar xmp = {\n /**\n * Factory method that returns a new Xmp object.\n * @function create\n * @param {String=} xmpXml - XMP XML string to parse.\n * @static\n * @return {module:Xmp} new Xmp instance\n */\n create: function create(xmpXml) {\n return Xmp$1(xmpXml);\n }\n};\n\n/** Used for built-in method references. */\nvar objectProto$f = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$c = objectProto$f.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty$c.call(object, key);\n}\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\n/** Used for built-in method references. */\nvar arrayProto$2 = Array.prototype;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeJoin = arrayProto$2.join;\n\n/**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\nfunction join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n}\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\nfunction charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim$1 = /^\\s+|\\s+$/g;\n\n/**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\nfunction trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim$1, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n return castSlice(strSymbols, start, end).join('');\n}\n\n/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return array && array.length ? array[0] : undefined;\n}\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function (string) {\n string = toString(string);\n var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined;\n var chr = strSymbols ? strSymbols[0] : string.charAt(0);\n var trailing = strSymbols ? castSlice(strSymbols, 1).join('') : string.slice(1);\n return chr[methodName]() + trailing;\n };\n}\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function (value, index, collection) {\n accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray$1(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n return func(collection, baseIteratee(iteratee), accumulator, initAccum, baseEach);\n}\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap();\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function (func, data) {\n metaMap.set(func, data);\n return func;\n};\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n return function () {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0:\n return new Ctor();\n case 1:\n return new Ctor(args[0]);\n case 2:\n return new Ctor(args[0], args[1]);\n case 3:\n return new Ctor(args[0], args[1], args[2]);\n case 4:\n return new Ctor(args[0], args[1], args[2], args[3]);\n case 5:\n return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6:\n return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7:\n return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n function wrapper() {\n var fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax$3 = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax$3(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax$4 = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax$4(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n}\n\n/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n}\n\n/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH$1 = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH$1;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop$1$1() {\n // No operation performed.\n}\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop$1$1 : function (func) {\n return metaMap.get(func);\n};\n\n/** Used to lookup unminified function names. */\nvar realNames = {};\n\n/** Used for built-in method references. */\nvar objectProto$g = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$d = objectProto$g.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = func.name + '',\n array = realNames[result],\n length = hasOwnProperty$d.call(realNames, result) ? array.length : 0;\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$h = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$e = objectProto$h.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray$1(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty$e.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\n/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n}\n\n/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$1 = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [['ary', WRAP_ARY_FLAG], ['bind', WRAP_BIND_FLAG$1], ['bindKey', WRAP_BIND_KEY_FLAG], ['curry', WRAP_CURRY_FLAG], ['curryRight', WRAP_CURRY_RIGHT_FLAG], ['flip', WRAP_FLIP_FLAG], ['partial', WRAP_PARTIAL_FLAG], ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], ['rearg', WRAP_REARG_FLAG]];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function (pair) {\n var value = '_.' + pair[0];\n if (bitmask & pair[1] && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n}\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = reference + '';\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$2 = 1,\n WRAP_BIND_KEY_FLAG$1 = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG$1 = 8,\n WRAP_PARTIAL_FLAG$1 = 32,\n WRAP_PARTIAL_RIGHT_FLAG$1 = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG$1,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n bitmask |= isCurry ? WRAP_PARTIAL_FLAG$1 : WRAP_PARTIAL_RIGHT_FLAG$1;\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG$1 : WRAP_PARTIAL_FLAG$1);\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG$2 | WRAP_BIND_KEY_FLAG$1);\n }\n var newData = [func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, newHoldersRight, argPos, ary, arity];\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n}\n\n/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin$1 = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin$1(indexes.length, arrLength),\n oldArray = copyArray(array);\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n}\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$3 = 1,\n WRAP_BIND_KEY_FLAG$2 = 2,\n WRAP_CURRY_FLAG$2 = 8,\n WRAP_CURRY_RIGHT_FLAG$1 = 16,\n WRAP_ARY_FLAG$1 = 128,\n WRAP_FLIP_FLAG$1 = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG$1,\n isBind = bitmask & WRAP_BIND_FLAG$3,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG$2,\n isCurried = bitmask & (WRAP_CURRY_FLAG$2 | WRAP_CURRY_RIGHT_FLAG$1),\n isFlip = bitmask & WRAP_FLIP_FLAG$1,\n Ctor = isBindKey ? undefined : createCtor(func);\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, thisArg, args, newHolders, argPos, ary, arity - length);\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n}\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder);\n length -= holders.length;\n if (length < arity) {\n return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, undefined, args, holders, undefined, undefined, arity - length);\n }\n var fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$4 = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG$4,\n Ctor = createCtor(func);\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n}\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER$1 = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$5 = 1,\n WRAP_BIND_KEY_FLAG$3 = 2,\n WRAP_CURRY_BOUND_FLAG$1 = 4,\n WRAP_CURRY_FLAG$3 = 8,\n WRAP_ARY_FLAG$2 = 128,\n WRAP_REARG_FLAG$1 = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin$2 = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG$5 | WRAP_BIND_KEY_FLAG$3 | WRAP_ARY_FLAG$2);\n var isCombo = srcBitmask == WRAP_ARY_FLAG$2 && bitmask == WRAP_CURRY_FLAG$3 || srcBitmask == WRAP_ARY_FLAG$2 && bitmask == WRAP_REARG_FLAG$1 && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG$2 | WRAP_REARG_FLAG$1) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG$3;\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG$5) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG$5 ? 0 : WRAP_CURRY_BOUND_FLAG$1;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER$1) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER$1) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG$2) {\n data[8] = data[8] == null ? source[8] : nativeMin$2(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n return data;\n}\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT$2 = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG$6 = 1,\n WRAP_BIND_KEY_FLAG$4 = 2,\n WRAP_CURRY_FLAG$4 = 8,\n WRAP_CURRY_RIGHT_FLAG$2 = 16,\n WRAP_PARTIAL_FLAG$2 = 32,\n WRAP_PARTIAL_RIGHT_FLAG$2 = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax$5 = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG$4;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT$2);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG$2 | WRAP_PARTIAL_RIGHT_FLAG$2);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax$5(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG$2) {\n var partialsRight = partials,\n holdersRight = holders;\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n var newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined ? isBindKey ? 0 : func.length : nativeMax$5(newData[9] - length, 0);\n if (!arity && bitmask & (WRAP_CURRY_FLAG$4 | WRAP_CURRY_RIGHT_FLAG$2)) {\n bitmask &= ~(WRAP_CURRY_FLAG$4 | WRAP_CURRY_RIGHT_FLAG$2);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG$6) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG$4 || bitmask == WRAP_CURRY_RIGHT_FLAG$2) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG$2 || bitmask == (WRAP_BIND_FLAG$6 | WRAP_PARTIAL_FLAG$2)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n}\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG$5 = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG$5, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n}\nvar DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING = 'en-US';\n\n// Simple function to convert HH:MM:SS,MMM or HH:MM:SS.MMM to SS.MMM\n// Assume valid, returns 0 on error\n/* eslint-disable no-magic-numbers, no-mixed-operators */\nfunction toSeconds(timeIn) {\n var t = timeIn.split(':');\n try {\n var s = t[2].split(',');\n\n // Just in case a . is decimal separator\n if (s.length === 1) {\n s = t[2].split('.');\n }\n return parseFloat(t[0], 10) * 3600 + parseFloat(t[1], 10) * 60 + parseFloat(s[0], 10) + parseFloat(s[1], 10) / 1000;\n } catch (e) {\n return 0;\n }\n}\n/* eslint-enable no-magic-numbers, no-mixed-operators */\n\nfunction nextNonEmptyLine(linesArray, position) {\n var idx = position;\n while (!linesArray[idx] && idx < linesArray.length) {\n idx++;\n }\n return idx;\n}\nfunction lastNonEmptyLine(linesArray) {\n var idx = linesArray.length - 1;\n while (idx >= 0 && !linesArray[idx]) {\n idx--;\n }\n return idx;\n}\nfunction _readCaptionsFromString(input, timeDelimiter, hasIdRow, languageIdentifierString) {\n languageIdentifierString = languageIdentifierString || DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING;\n var captionCollection = CaptionCollection$1.create();\n var i = 0;\n var index = 0;\n var lines;\n var time;\n var text;\n var endIndex;\n var caption;\n var timeSplitRegex = new RegExp('[\\\\t ]*' + timeDelimiter + '[\\\\t ]*');\n var SSATagRegex = /\\{(\\\\[\\w]+\\(?([\\w\\d]+,?)+\\)?)+\\}/gi;\n var lessThanRegex = //g;\n var newlinePlaceholderRegex = /\\\\N/gi;\n\n // Here is where the magic happens\n // Split on line breaks\n lines = input.split(/(?:\\r\\n|\\r|\\n)/gm);\n endIndex = lastNonEmptyLine(lines) + 1;\n for (i = 0; i < endIndex; i++) {\n caption = {};\n text = [];\n i = nextNonEmptyLine(lines, i);\n if (hasIdRow) {\n caption.id = parseInt(lines[i++], 10);\n } else {\n caption.id = i;\n }\n\n // Split on delimiter (often '-->' or ','), trimming spaces as well\n time = lines[i++].split(timeSplitRegex);\n caption.start = toSeconds(time[0]);\n\n // So as to trim positioning information from end\n index = time[1].indexOf(' ');\n if (index !== -1) {\n time[1] = time[1].substring(0, index);\n }\n caption.end = toSeconds(time[1]);\n\n // Build single line of text from multi-line subtitle in file\n while (i < endIndex && lines[i]) {\n text.push(lines[i++]);\n }\n\n // Join into 1 line, SSA-style linebreaks\n // Strip out other SSA-style tags\n caption.text = text.join('\\\\N').replace(SSATagRegex, '');\n\n // Escape HTML entities\n caption.text = caption.text.replace(lessThanRegex, '<').replace(greaterThanRegex, '>');\n\n // Unescape great than and less than when it makes a valid html tag of a supported style (font, b, u, s, i)\n // Modified version of regex from Phil Haack's blog: http://haacked.com/archive/2004/10/25/usingregularexpressionstomatchhtml.aspx\n // Later modified by kev: http://kevin.deldycke.com/2007/03/ultimate-regular-expression-for-html-tag-parsing-with-php/\n //caption.text = caption.text.replace( /<(\\/?(font|b|u|i|s))((\\s+(\\w|\\w[\\w\\-]*\\w)(\\s*=\\s*(?:\\\".*?\\\"|'.*?'|[^'\\\">\\s]+))?)+\\s*|\\s*)(\\/?)>/gi, \"<$1$3$7>\" );\n caption.text = caption.text.replace(newlinePlaceholderRegex, '\\n');\n captionCollection.addCaption(Caption$1.create({\n startTime: caption.start * 1000,\n duration: caption.end * 1000 - caption.start * 1000,\n captionTextList: [CaptionText$1.create({\n text: caption.text,\n languageIdentifierString: languageIdentifierString\n })],\n horizontalAlignment: 'Center',\n verticalAlignment: 'Bottom'\n }));\n }\n var captionTrack = CaptionTrack$1.create({\n captions: captionCollection.captions,\n languageIdentifierString: languageIdentifierString\n });\n return captionTrack;\n}\nfunction padWithZero(inputNumber, width) {\n inputNumber = inputNumber + '';\n return inputNumber.length >= width ? inputNumber : new Array(width - inputNumber.length + 1).join('0') + inputNumber;\n}\nfunction formatMillisecondsToTimeCode(inputMilliseconds, options) {\n var date = new Date(inputMilliseconds);\n var hoursPaddingIsSet = options.hoursPadding || options.hoursPadding === 0;\n var hoursPadding = hoursPaddingIsSet ? options.hoursPadding : 2;\n var hours = padWithZero(date.getUTCHours(), hoursPadding);\n var minutes = padWithZero(date.getUTCMinutes(), 2);\n var seconds = padWithZero(date.getUTCSeconds(), 2);\n var rawMilliseconds = date.getUTCMilliseconds().toFixed(3).split('.')[0]; // eslint-disable-line no-magic-numbers\n var milliseconds = padWithZero(rawMilliseconds, 3); // eslint-disable-line no-magic-numbers\n\n var millisecondDelimiter = options.millisecondDelimiter ? options.millisecondDelimiter : ',';\n return hours + ':' + minutes + ':' + seconds + millisecondDelimiter + milliseconds;\n}\nfunction captionsToString(captionTrack, options) {\n function captionToString(output, caption, index) {\n var isBeginningOfString = index === 0;\n if (!isBeginningOfString) {\n output += '\\n\\n';\n }\n if (options.hasIdRow) {\n var oneBasedIndex = index + 1;\n output += oneBasedIndex;\n output += '\\n';\n }\n output += formatMillisecondsToTimeCode(caption.startTime, options) + options.timeDelimiter + formatMillisecondsToTimeCode(caption.endTime, options);\n output += '\\n';\n output += caption.text;\n return output;\n }\n return reduce(captionTrack.captionCollection.captions, captionToString, options.accumulator);\n}\nvar baseNewlineParser = {\n readCaptionsFromStringWithIdRow: function readCaptionsFromStringWithIdRow(input, timeDelimiter, languageIdentifierString) {\n return _readCaptionsFromString(input, timeDelimiter, true, languageIdentifierString);\n },\n readCaptionsFromString: function readCaptionsFromString(input, timeDelimiter, languageIdentifierString) {\n return _readCaptionsFromString(input, timeDelimiter, false, languageIdentifierString);\n },\n captionsToString: captionsToString,\n DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING: DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING\n};\nvar registerParser$1 = function registerParser$1() {\n captionParsers.register('SAMI', ['.sami', '.smi'], function () {\n var _xmlUtility = new XmlUtility();\n function getElementText(textElement) {\n var nonBreakingSpace = String.fromCharCode(0xA0); //eslint-disable-line no-magic-numbers\n var text = _xmlUtility.getElementText(textElement).replace(nonBreakingSpace, ' ');\n return text;\n }\n function getSyncTagText(tag) {\n var textElements = _xmlUtility.getElementsByTagName(tag, 'p');\n if (textElements.length < 1) {\n return getElementText(tag);\n }\n var elementsText = map(textElements, getElementText);\n return join(elementsText, '\\n');\n }\n function parseSyncTagToCaption(horizontalAlignment, languageIdentifierString, captionCollection, tag) {\n var startTime = +tag.getAttribute('start');\n var captionText = CaptionText$1.create({\n languageIdentifierString: languageIdentifierString,\n text: getSyncTagText(tag)\n });\n var createParams = {\n startTime: startTime,\n duration: 0,\n captionTextList: [captionText],\n horizontalAlignment: capitalize(horizontalAlignment.toLowerCase()),\n verticalAlignment: 'Bottom'\n };\n captionCollection.addCaption(Caption$1.create(createParams));\n return captionCollection;\n }\n function assignCaptionDurationsByFillingCaptionStartTimeGaps(captionCollection) {\n for (var i = 0; i < captionCollection.captions.length; i++) {\n var currentCaption = captionCollection.captions[i];\n var nextCaption = null;\n if (i + 1 < captionCollection.captions.length) {\n nextCaption = captionCollection.captions[i + 1];\n }\n var defaultDuration = 3000;\n var duration = nextCaption ? nextCaption.startTime - currentCaption.endTime : defaultDuration;\n currentCaption.setDuration(duration);\n }\n return captionCollection;\n }\n function removeHtmlComments(input) {\n return input.replace(//g, '');\n }\n function cssColorToRGB(cssColorValue) {\n if (!cssColorValue) {\n return null;\n }\n var result = tinycolor$1(cssColorValue);\n if (!result.isValid()) {\n return null;\n }\n return result.toRgb();\n }\n function parseStyle(text) {\n var fontSizeNoDescriptorRegex = /font-size: *(\\d+);/g;\n text = text.replace(fontSizeNoDescriptorRegex, 'font-size: $1px;');\n var doc = document.implementation.createHTMLDocument('');\n var styleElement = doc.createElement('style');\n styleElement.textContent = text;\n doc.body.appendChild(styleElement);\n return styleElement.sheet.cssRules;\n }\n function getCaptionTrackCreateParams(xmlDoc) {\n var styleElements = xmlDoc.getElementsByTagName('style');\n if (styleElements.length < 1) {\n return {};\n }\n var styles = parseStyle(removeHtmlComments(styleElements[0].textContent));\n var captionStyle = find(styles, function (s) {\n return s.selectorText.toLowerCase() === 'p';\n });\n captionStyle = captionStyle || head(styles);\n return {\n fgColor: cssColorToRGB(captionStyle.style.color),\n bgColor: cssColorToRGB(captionStyle.style.backgroundColor),\n fontFamily: trim(captionStyle.style.fontFamily, '\"\\''),\n fontSize: captionStyle.style.fontSize,\n horizontalAlignment: captionStyle.style.textAlign || 'Center'\n };\n }\n function readCaptionsFromString(input, languageIdentifierString) {\n languageIdentifierString = languageIdentifierString || baseNewlineParser.DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING;\n var captionCollection = CaptionCollection$1.create();\n var xmlDoc = _xmlUtility.parseXml(input, 'text/html');\n if (!xmlDoc) {\n throw new Error('xmlDoc is null');\n }\n var syncElements = xmlDoc.getElementsByTagName('sync');\n var createCaptionTrackParams = getCaptionTrackCreateParams(xmlDoc);\n var parseSyncTagToCaptionWithHorizontalAlignment = curry(parseSyncTagToCaption)(createCaptionTrackParams.horizontalAlignment, languageIdentifierString);\n captionCollection = reduce(syncElements, parseSyncTagToCaptionWithHorizontalAlignment, captionCollection);\n captionCollection = assignCaptionDurationsByFillingCaptionStartTimeGaps(captionCollection);\n createCaptionTrackParams.captions = captionCollection.captions;\n createCaptionTrackParams.languageIdentifierString = languageIdentifierString;\n var captionTrack = CaptionTrack$1.create(createCaptionTrackParams);\n return captionTrack;\n }\n function captionToString(output, caption, nextCaption) {\n var text = caption.text;\n if (text) {\n text += '\\n';\n }\n output += '

' + text + '

';\n if (nextCaption && nextCaption.startTime > caption.endTime) {\n output += '

';\n }\n return output;\n }\n function getTextAlignment(captionTrack) {\n var textAlignments = reduce(captionTrack.captionCollection.captions, function (alignments, caption) {\n var alignment = caption.horizontalAlignment;\n if (!alignment || has(alignments, alignment)) {\n return alignments;\n }\n alignments[alignment] = true;\n return alignments;\n }, {});\n var allAlignments = keys$1(textAlignments);\n return allAlignments.length === 1 ? allAlignments[0].toLowerCase() : 'center';\n }\n function captionsToString(captionTrack) {\n var fontSize = isInteger(captionTrack.fontSize) ? captionTrack.fontSize + 'pt' : captionTrack.fontSize;\n var fontFamily = captionTrack.fontFamily;\n var fgHexColor = captionTrack.fgHexColor;\n var bgHexColor = captionTrack.bgHexColor;\n var textAlign = getTextAlignment(captionTrack);\n\n /* eslint-disable no-tabs */\n var samiCaptionHeader = '' + 'Captions' + '';\n var samiCaptionFooter = '' + '';\n /* eslint-enable no-tabs */\n\n var output = samiCaptionHeader;\n var captionCollection = captionTrack.captionCollection;\n for (var i = 0; i < captionCollection.captions.length; i++) {\n var currentCaption = captionCollection.captions[i];\n var isLastCaption = i === captionCollection.captions.length - 1;\n var nextCaption = isLastCaption ? null : captionCollection.captions[i + 1];\n output = captionToString(output, currentCaption, nextCaption);\n }\n output += samiCaptionFooter;\n return output;\n }\n return {\n deserialize: readCaptionsFromString,\n serialize: captionsToString\n };\n });\n};\nvar samiParser = {\n registerParser: registerParser$1\n};\nvar registerParser$2 = function registerParser$2() {\n captionParsers.register('SBV', ['.sbv'], function () {\n var sbvTimeDelimiter = ',';\n function readCaptionsFromString(input, languageIdentifierString) {\n return baseNewlineParser.readCaptionsFromString(input, sbvTimeDelimiter, languageIdentifierString);\n }\n function captionsToString(captionCollection) {\n return baseNewlineParser.captionsToString(captionCollection, {\n timeDelimiter: sbvTimeDelimiter,\n accumulator: '',\n hoursPadding: 1\n });\n }\n return {\n deserialize: readCaptionsFromString,\n serialize: captionsToString\n };\n });\n};\nvar sbvParser = {\n registerParser: registerParser$2\n};\nvar registerParser$3 = function registerParser$3() {\n captionParsers.register('SRT', ['.srt'], function () {\n var srtEndOfFileMarker = '\\n\\n\\n';\n var srtTimeDelimiter = ' --> ';\n function readCaptionsFromString(input, languageIdentifierString) {\n return baseNewlineParser.readCaptionsFromStringWithIdRow(input, srtTimeDelimiter.trim(), languageIdentifierString);\n }\n function captionsToString(captionCollection) {\n var captionString = baseNewlineParser.captionsToString(captionCollection, {\n timeDelimiter: srtTimeDelimiter,\n accumulator: '\\n\\n',\n hasIdRow: true\n });\n return captionString + srtEndOfFileMarker;\n }\n return {\n deserialize: readCaptionsFromString,\n serialize: captionsToString\n };\n });\n};\nvar srtParser = {\n registerParser: registerParser$3\n};\nvar registerParser$4 = function registerParser$4() {\n captionParsers.register('TTML', ['.ttml', '.dfxp'], function () {\n // Code below is taken from https://github.com/mozilla/popcorn-js/blob/master/parsers/parserTTML/popcorn.parserTTML.js\n\n var rWhitespace = /^[\\s]+|[\\s]+$/gm;\n var rLineBreak = /(?:\\r\\n|\\r|\\n)/gm;\n var rBreakTag = /(
)/gm;\n\n // Parse the children of the given node\n function parseChildren(node, timeOffset, region) {\n var currNode = node.firstChild;\n var currRegion = getNodeRegion(node, region);\n var retVal = [];\n var newOffset;\n while (currNode) {\n if (currNode.nodeType === 1) {\n if (currNode.nodeName === 'p') {\n // p is a textual node, process contents as subtitle\n retVal.push(parseNode(currNode, timeOffset, currRegion));\n } else if (currNode.nodeName === 'div') {\n // div is container for subtitles, recurse\n newOffset = toSeconds(currNode.getAttribute('begin'));\n if (newOffset < 0) {\n newOffset = timeOffset;\n }\n retVal.push.apply(retVal, parseChildren(currNode, newOffset, currRegion));\n }\n }\n currNode = currNode.nextSibling;\n }\n return retVal;\n }\n\n // Get the \"region\" attribute of a node, to know where to put the subtitles\n function getNodeRegion(node, defaultTo) {\n var region = node.getAttribute('region');\n if (region !== null) {\n return region;\n }\n return defaultTo || '';\n }\n\n // Parse a node for text content\n function parseNode(node, timeOffset, region) {\n var sub = {};\n\n // Trim left and right whitespace from text and convert non-explicit line breaks\n sub.text = (node.textContent || node.text).replace(rWhitespace, '').replace(rLineBreak, '
');\n sub.id = node.getAttribute('xml:id') || node.getAttribute('id');\n sub.start = toSeconds(node.getAttribute('begin'), timeOffset);\n sub.end = toSeconds(node.getAttribute('end'), timeOffset);\n sub.target = getNodeRegion(node, region);\n if (sub.end < 0) {\n // No end given, infer duration if possible\n // Otherwise, give end as MAX_VALUE\n sub.end = toSeconds(node.getAttribute('duration'), 0);\n if (sub.end >= 0) {\n sub.end += sub.start;\n } else {\n sub.end = Number.MAX_VALUE;\n }\n }\n return {\n subtitle: sub\n };\n }\n function toTimelineSeconds(timeStr, framerate) {\n // Hours and minutes are optional\n // Seconds must be specified\n // Seconds can be followed by milliseconds OR by the frame information\n var validTimeFormat = /^([0-9]+:){0,2}[0-9]+([.;][0-9]+)?$/;\n var errorMessage = 'Invalid time format';\n var digitPairs;\n var lastIndex;\n var lastPair;\n var firstPair;\n var frameInfo;\n var frameTime;\n if (typeof timeStr === 'number') {\n return timeStr;\n }\n if (typeof timeStr === 'string' && !validTimeFormat.test(timeStr)) {\n throw errorMessage;\n }\n digitPairs = timeStr.split(':');\n lastIndex = digitPairs.length - 1;\n lastPair = digitPairs[lastIndex];\n\n // Fix last element:\n if (lastPair.indexOf(';') > -1) {\n frameInfo = lastPair.split(';');\n frameTime = 0;\n if (framerate && typeof framerate === 'number') {\n frameTime = parseFloat(frameInfo[1], 10) / framerate;\n }\n digitPairs[lastIndex] = parseInt(frameInfo[0], 10) + frameTime;\n }\n firstPair = digitPairs[0];\n\n /* eslint-disable no-magic-numbers, no-mixed-operators */\n return {\n 1: parseFloat(firstPair, 10),\n 2: parseInt(firstPair, 10) * 60 + parseFloat(digitPairs[1], 10),\n 3: parseInt(firstPair, 10) * 3600 + parseInt(digitPairs[1], 10) * 60 + parseFloat(digitPairs[2], 10)\n }[digitPairs.length || 1];\n /* eslint-enable no-magic-numbers, no-mixed-operators */\n }\n\n // Convert time expression to SS.mmm\n // Expression may be absolute to timeline (hh:mm:ss.ms)\n // or relative ( decimal followed by metric ) ex: 3.4s, 5.7m\n // Returns -1 if invalid\n function toSeconds(timeIn, offset) {\n var i;\n if (!timeIn) {\n return -1;\n }\n try {\n return toTimelineSeconds(timeIn);\n } catch (e) {\n i = getMetricIndex(timeIn);\n return parseFloat(timeIn.substring(0, i)) * getMultipler(timeIn.substring(i)) + (offset || 0);\n }\n }\n\n // In a time string such as 3.4ms, get the index of the first character (m) of the time metric (ms)\n function getMetricIndex(timeIn) {\n var i = timeIn.length - 1;\n while (i >= 0 && timeIn[i] <= '9' && timeIn[i] >= '0') {\n i--;\n }\n return i;\n }\n\n // Determine multiplier for metric relative to seconds\n function getMultipler(metric) {\n return {\n h: 3600,\n m: 60,\n s: 1,\n ms: 0.001\n }[metric] || -1;\n }\n function readCaptionsFromString(input, languageIdentifierString) {\n languageIdentifierString = languageIdentifierString || baseNewlineParser.DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING;\n var captionCollection = CaptionCollection$1.create();\n var node;\n var xmlDocument;\n\n // Null checks\n if (!input) {\n return null;\n }\n input = input.replace(/.*<\\/head>/, '');\n input = input.replace(rBreakTag, '\\\\N');\n var _xmlUtility = new XmlUtility();\n xmlDocument = _xmlUtility.parseXml(input);\n if (!xmlDocument) {\n return captionCollection;\n }\n node = xmlDocument.documentElement.firstChild;\n\n // Find body tag\n while (node.nodeName !== 'body') {\n node = node.nextSibling;\n }\n if (node) {\n var captions = parseChildren(node, 0);\n map(captions, function (caption) {\n caption = caption.subtitle;\n var createParams = {\n startTime: caption.start * 1000,\n duration: caption.end * 1000 - caption.start * 1000,\n captionTextList: [CaptionText$1.create({\n text: caption.text.replace('\\\\N', '\\n'),\n languageIdentifierString: languageIdentifierString\n })],\n horizontalAlignment: 'Center',\n verticalAlignment: 'Bottom'\n };\n captionCollection.addCaption(Caption$1.create(createParams));\n });\n }\n var captionTrack = CaptionTrack$1.create({\n captions: captionCollection.captions,\n languageIdentifierString: languageIdentifierString\n });\n return captionTrack;\n }\n function captionToString(output, caption, index) {\n var oneBasedIndex = index + 1;\n output += '

' + caption.text + '

';\n return output;\n }\n function captionsToString(captionTrack) {\n var ttmlHeader = '' + '' + 'Captions' + '';\nvar INCORRECT_SVG = '';\nvar CORRECT_GLYPH_DATA_URL = 'data:image/svg+xml,' + window.encodeURIComponent(CHECK_SVG);\nvar INCORRECT_GLYPH_DATA_URL = 'data:image/svg+xml,' + window.encodeURIComponent(INCORRECT_SVG);\nvar ACTIVE_QUESTION_CLASS = 'active-question-item';\nvar ACTIVE_FEEDBACK_CLASS = 'active-feedback-item';\nvar CORRECT_ANSWER_TEXT = localizationStrings.getPlayerString(playerStringNames.txtCorrectAnswer);\nvar YOUR_ANSWER_TEXT = localizationStrings.getPlayerString(playerStringNames.txtYourAnswer);\n\n/**\n * @memberof TSC\n * @class AnswersView\n * @classdesc Answers View\n */\nvar AnswersView = function AnswersView($container, question, showResults) {\n var _$window = $(window);\n var _$textInput = null;\n var getUserResponse = function getUserResponse() {\n switch (question.type) {\n case questionType.CHOICE:\n return $container.find('input[name=multiple-choice]:checked').val();\n case questionType.FILL_IN:\n return $container.find('input').val();\n case questionType.SHORT:\n return $container.find('textarea').val().replace(/^[ \\t]+|[ \\t]+$/, '');\n }\n };\n var displayResponseFillInResults = function displayResponseFillInResults() {\n if (!question.isGraded) {\n return;\n }\n var $correctImage = $('\\''');\n var $incorrectImage = $('\\''');\n if (question.isResponseCorrect) {\n $container.find('img.feedback-placeholder').replaceWith($correctImage);\n } else {\n $container.find('img.feedback-placeholder').replaceWith($incorrectImage);\n }\n };\n var getCorrectAnswerIndex = function getCorrectAnswerIndex() {\n var numberAnswers = question.answers.length;\n var correctAnswerBitshifted = question.correctAnswer;\n for (var i = 0; i < numberAnswers; i++) {\n /*eslint no-bitwise: \"off\"*/\n if (1 << i === Number(correctAnswerBitshifted)) {\n return i;\n }\n }\n return -1;\n };\n var displayChoiceResults = function displayChoiceResults() {\n var correctAnswerIndex;\n var $placeHolderImgEls;\n var $userResponseInputImageEl;\n var $correctResponseInputImageEl;\n var $correctImage;\n var $incorrectImage;\n var answerIndex = question.userResponse;\n var $labelEls = $container.find('label');\n $labelEls.removeClass(ACTIVE_QUESTION_CLASS);\n $labelEls.addClass(ACTIVE_FEEDBACK_CLASS);\n if (showResults && question.isGraded) {\n correctAnswerIndex = getCorrectAnswerIndex();\n $placeHolderImgEls = $container.find('label img');\n $userResponseInputImageEl = $container.find('label:eq(' + answerIndex + ') img');\n $correctResponseInputImageEl = $container.find('label:eq(' + correctAnswerIndex + ') img');\n $correctImage = $('\\''');\n $incorrectImage = $('\\''');\n $placeHolderImgEls.removeClass('feedback-placeholder');\n if (answerIndex === correctAnswerIndex) {\n $userResponseInputImageEl.replaceWith($correctImage);\n $correctImage.css('opacity', 0);\n $correctImage.animate({\n opacity: 1\n }, 200);\n } else {\n $correctResponseInputImageEl.replaceWith($correctImage);\n $correctImage.css('opacity', 0);\n $correctImage.animate({\n opacity: 1\n }, 200);\n $userResponseInputImageEl.replaceWith($incorrectImage);\n $incorrectImage.css('opacity', 0);\n $incorrectImage.animate({\n opacity: 1\n }, 200);\n }\n }\n $container.find('input').hide();\n if (answerIndex !== undefined) {\n $container.find('label:eq(' + answerIndex + ')').addClass('picked-quiz-item');\n }\n };\n var disableInput = function disableInput() {\n var $inputEls = null;\n switch (question.type) {\n case questionType.CHOICE:\n case questionType.FILL_IN:\n $inputEls = $container.find('input');\n break;\n case questionType.SHORT:\n $inputEls = $container.find('textarea');\n break;\n }\n if ($inputEls) {\n $inputEls.attr('disabled', true);\n }\n };\n var focusFirstInput = function focusFirstInput() {\n $container.find(\".\".concat(cssClasses.focusableAnswerInput)).focus();\n };\n var displayResults = function displayResults() {\n switch (question.type) {\n case questionType.CHOICE:\n displayChoiceResults();\n break;\n case questionType.FILL_IN:\n displayResponseFillInResults();\n break;\n }\n disableInput();\n };\n var getAnswersMarkup = function getAnswersMarkup(autoFocus) {\n if (deviceInfo.isIOS() || deviceInfo.isAndroid()) {\n autoFocus = false;\n }\n switch (question.type) {\n case questionType.CHOICE:\n return templateGenerator.generateChoiceAnswersMarkup(question.text, question.answers, question.userResponse);\n case questionType.FILL_IN:\n return templateGenerator.generateFillInTheBlankAnswerMarkup(question.text, question.userResponse, autoFocus);\n case questionType.SHORT:\n return templateGenerator.generateShortAnswerMarkup(question.text, question.userResponse, autoFocus);\n default:\n log.logException('Answers-view: unsupported question type (' + question.type + ')');\n }\n };\n var destroy = function destroy() {\n if (!showResults && deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\n _$window.off('resize', viewHelper.scrollActiveElementIntoView);\n }\n if (_$textInput && (question.type === questionType.FILL_IN || question.type === questionType.SHORT) && (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid())) {\n _$textInput.off('focus keydown', viewHelper.scrollIntoView);\n }\n };\n var getTextResponseSuffix = function getTextResponseSuffix(userAnsweredQuestion) {\n if (question.isGraded) {\n if (!userAnsweredQuestion) {\n return localizationStrings.getPlayerString(playerStringNames.accessResultsLabelNoResponseGradedSuffix);\n } else if (question.isResponseCorrect) {\n return localizationStrings.getPlayerString(playerStringNames.accessResultsLabelCorrectSuffix);\n }\n return localizationStrings.getPlayerString(playerStringNames.accessResultsLabelIncorrectSuffix);\n } else if (!userAnsweredQuestion) {\n return localizationStrings.getPlayerString(playerStringNames.accessResultsLabelNoResponseSuffix);\n }\n return '';\n };\n var getUsersAnswer = function getUsersAnswer(userAnsweredQuestion) {\n if (question.type === questionType.CHOICE) {\n return userAnsweredQuestion && question.answers[question.userResponse].text;\n }\n return question.userResponse;\n };\n var getCorrectAnswerOrEmptyString = function getCorrectAnswerOrEmptyString() {\n if (question.isGraded && question.type === questionType.CHOICE) {\n return question.answers[getCorrectAnswerIndex()].text;\n }\n return '';\n };\n var getCorrectAnswerText = function getCorrectAnswerText() {\n var userAnsweredQuestion = !(question.userResponse === null || typeof question.userResponse === 'undefined');\n var responseSuffix = getTextResponseSuffix(userAnsweredQuestion);\n var usersAnswer = getUsersAnswer(userAnsweredQuestion);\n var correctAnswer = getCorrectAnswerOrEmptyString();\n var fullAnswerText = '';\n if (correctAnswer) {\n fullAnswerText = CORRECT_ANSWER_TEXT + correctAnswer;\n }\n if (userAnsweredQuestion) {\n fullAnswerText += correctAnswer ? ' - ' : '';\n fullAnswerText += YOUR_ANSWER_TEXT + usersAnswer;\n }\n fullAnswerText += fullAnswerText && responseSuffix ? ' - ' : '';\n fullAnswerText += responseSuffix;\n return fullAnswerText;\n };\n var setupAnswers = function setupAnswers() {\n if (showResults) {\n displayResults();\n } else {\n if (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\n _$window.on('resize', viewHelper.scrollActiveElementIntoView);\n }\n\n // remove hover css when device is touch screen\n if (question.type === questionType.CHOICE && deviceInfo.isTouchInterface()) {\n $container.find('.multiple-choice').removeClass(ACTIVE_QUESTION_CLASS);\n }\n _$textInput = $container.find('input[type=text], textarea');\n if (_$textInput && (question.type === questionType.FILL_IN || question.type === questionType.SHORT)) {\n if (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\n _$textInput.on('focus keydown', viewHelper.scrollIntoView);\n }\n }\n }\n };\n var isTextInputOrAreaFocused = function isTextInputOrAreaFocused() {\n return _$textInput && _$textInput.length > 0 && _$textInput.is(':focus');\n };\n var createView = function createView() {\n var answersMarkup = getAnswersMarkup();\n if (answersMarkup) {\n $container.html(answersMarkup);\n }\n $container.find('.multiple-choice > input').focus(function () {\n $(this).parent().addClass('highlight-background');\n }).blur(function () {\n $(this).parent().removeClass('highlight-background');\n });\n };\n createView();\n setupAnswers();\n focusFirstInput();\n return {\n getUserResponse: getUserResponse,\n destroy: destroy,\n getCorrectAnswerText: getCorrectAnswerText,\n isTextInputOrAreaFocused: isTextInputOrAreaFocused\n };\n};\nvar AnswersView$1 = {\n /**\n * Factory method that returns a new QuestionView object.\n * @function create\n * @memberof TSC.AnswersView\n * @static\n * @return new AnswersView instance\n */\n create: AnswersView\n};\n\nvar QUESTION_CORRECT_TEXT_CLASS = '.question-correct-text';\nvar QUESTION_INCORRECT_TEXT_CLASS = '.question-incorrect-text';\n\n/**\n * @memberof TSC\n * @class QuestionView\n * @classdesc Question View\n * @params {Object} $questionTextContainer - jquery wrapper for question text container element\n * @params {Object} $questionGradedStatusContainer - jquery wrapper for question graded status container element\n * @params {Object} $feedbackContainer - jquery wrapper for feedback text container element\n * @params {Object} $answersContainer - jquery wrapper for answers container element\n * @params {TSC.Question} question - Question model for this view.\n * @params {Boolean} showResults - show results for question.\n */\nvar QuestionView = function QuestionView($questionTextContainer, $questionGradedStatusContainer, $feedbackContainer, $answersContainer, question, showResults) {\n var _answersView;\n var _feedbackContextMarkup = templateGenerator.generateQuestionFeedbackContextMarkup(localizationStrings.getPlayerString(playerStringNames.accessQuestionFeedbackContext));\n var createView = function createView() {\n _answersView = AnswersView$1.create($answersContainer, question, showResults);\n $feedbackContainer.addClass('hide-element');\n var correctAnswerText = showResults ? _answersView.getCorrectAnswerText() : '';\n var questionTextMarkup = templateGenerator.generateQuestionTextMarkup(question.text, correctAnswerText);\n $questionTextContainer.html(questionTextMarkup);\n var questionGradedStatusMarkup = templateGenerator.generateQuestionGradedStatusMarkup();\n $questionGradedStatusContainer.html(questionGradedStatusMarkup);\n };\n var showFeedbackTextIfAvailable = function showFeedbackTextIfAvailable() {\n var feedbackMarkup = null;\n question.feedback.forEach(function (feedback) {\n if (question.isResponseCorrect && feedback.reason === 'correct') {\n feedbackMarkup = feedback.markupText;\n } else if (!question.isResponseCorrect && feedback.reason === 'incorrect') {\n feedbackMarkup = feedback.markupText;\n }\n });\n if (feedbackMarkup) {\n $feedbackContainer.html(_feedbackContextMarkup + feedbackMarkup);\n $feedbackContainer.removeClass('hide-element');\n }\n };\n var setupView = function setupView() {\n if (showResults && question.isGraded) {\n showFeedbackTextIfAvailable();\n if (question.isResponseCorrect) {\n $questionGradedStatusContainer.find(QUESTION_CORRECT_TEXT_CLASS).removeClass('hide-element');\n } else {\n $questionGradedStatusContainer.find(QUESTION_INCORRECT_TEXT_CLASS).removeClass('hide-element');\n }\n }\n };\n createView();\n setupView();\n return {\n isTextInputOrAreaFocused: _answersView.isTextInputOrAreaFocused,\n destroy: _answersView.destroy,\n getUserResponse: _answersView.getUserResponse\n };\n};\nvar QuestionView$1 = {\n /**\n * Factory method that returns a new QuestionView object.\n * @function create\n * @memberof TSC.QuestionView\n * @static\n * @return new QuestionView instance\n */\n create: QuestionView\n};\n\nvar SCREEN_READER_ALERT_REMOVAL_TIMEOUT = 1000;\nvar INIT_QUESTION_SET_TIMEOUT = 10;\nvar PEEK_AT_VIDEO_SHORT_CUT_KEYCODE = 72; // h key\nvar CONTAINER_CLASS = '.question-set-container';\nvar QUESTION_SET_CONTENT_CLASS = '.question-set-content';\nvar HIDE_CONTROL_CLASS = '.hide-quiz-button';\nvar SHOW_CONTROL_CLASS = '.show-quiz-button';\nvar PREV_CONTROL_CLASS = '.previous-button';\nvar NEXT_CONTROL_CLASS = '.next-button';\nvar SUBMIT_CONTROL_CLASS = '.submit-button';\nvar CONTINUE_CONTROL_CLASS = '.continue-button';\nvar QUESTION_COUNT_CLASS = '.question-count';\nvar QUESTION_GRADED_STATUS_CLASS = '.question-graded-status';\nvar QUESTION_CLASS = '.question-text';\nvar ANSWERS_CLASS = '.question-answers';\nvar FEEDBACK_CLASS = '.question-feedback';\nvar MINIMIZED_VIEW_CLASS = '.minimized-question-set-container';\n\n/**\n * @memberof TSC\n * @class QuestionSetView\n * @param {Object} $container -- Container to add question set view.\n * @param {TSC.QuestionSet} questionSet -- Question Set model for view.\n * @param {Boolean} displayOverlay -- Display overlay.\n * @param {Boolean} mediaIsImage -- Media is an image.\n * @param {Boolean} showQuestionSetResults -- Show user results for question set.\n * @classdesc View for Question sets.\n */\nvar QuestionSetView = function QuestionSetView($container, questionSet, displayOverlay, mediaIsImage, showQuestionSetResults, quizTime) {\n var _$document = windowWrapper.getDocument(true);\n var _currentQuestionIndex = 0;\n var _$container = $container;\n var _startTimeForQuestion = 0;\n var _endTimeForQuestion = 0;\n var _currentQuestionView = null;\n var _initTimeoutId = null;\n var _alertScreenReaderTimeoutId = null;\n var _$questionSetContainer = null;\n var _$questionSetContent = null;\n var _$questionTextContainer = null;\n var _$answersContainer = null;\n var _$feedbackContainer = null;\n var _$questionCountContainer = null;\n var _$questionGradedStatusContainer = null;\n var _$hideControl = null;\n var _$showControl = null;\n var _$prevControl = null;\n var _$nextControl = null;\n var _$continueControl = null;\n var _$submitControl = null;\n var _$minimizedContainer = null;\n var _minimizedByKeyboardShortcut = false;\n var _superView = BubbleView$1.create(CONTAINER_CLASS);\n var _resolveInitPromise;\n var initPromise = new Promise$1(function (resolve) {\n _resolveInitPromise = resolve;\n });\n var alertScreenReader = function alertScreenReader(message) {\n var screenReaderAlertMarkup = templateGenerator.generateScreenReaderAlertMarkup(message);\n var $screenReaderAlert = $(screenReaderAlertMarkup);\n _$container.append($screenReaderAlert);\n _alertScreenReaderTimeoutId = setTimeout(function () {\n $screenReaderAlert.remove();\n }, SCREEN_READER_ALERT_REMOVAL_TIMEOUT);\n };\n var onHideQuizClick = function onHideQuizClick() {\n minimizeView();\n };\n var onShowQuizHandler = function onShowQuizHandler() {\n maximizeView();\n };\n var onKeyDownHandler = function onKeyDownHandler(e) {\n if (e && e.keyCode === PEEK_AT_VIDEO_SHORT_CUT_KEYCODE && !_currentQuestionView.isTextInputOrAreaFocused() && !_superView.viewIsMinimized) {\n _minimizedByKeyboardShortcut = true;\n _$document.on('keyup', onKeyUpHandler);\n minimizeView();\n }\n };\n var onKeyUpHandler = function onKeyUpHandler() {\n _minimizedByKeyboardShortcut = false;\n _$document.off('keyup', onKeyUpHandler);\n maximizeView();\n };\n var minimizeView = function minimizeView() {\n if (!_superView.viewIsMinimized) {\n $container.trigger(events.Quizzing.MinimizeUI);\n _$questionSetContent.addClass(cssClasses.hideElement);\n if (!_minimizedByKeyboardShortcut) {\n _$minimizedContainer.removeClass(cssClasses.hideElement);\n }\n viewHelper.removeFocusTrap();\n alertScreenReader(localizationStrings.getPlayerString(playerStringNames.accessQuizHidden));\n _superView.minimizeView();\n }\n };\n var maximizeView = function maximizeView() {\n if (_superView.viewIsMinimized) {\n $container.trigger(events.Quizzing.MaximizeUI);\n _$questionSetContent.removeClass(cssClasses.hideElement);\n _$minimizedContainer.addClass(cssClasses.hideElement);\n _superView.maximizeView();\n alertScreenReader(localizationStrings.getPlayerString(playerStringNames.accessQuizShown));\n $container.focus();\n viewHelper.trapFocus(_$questionSetContent);\n }\n };\n var isOnFirstQuestion = function isOnFirstQuestion() {\n return _currentQuestionIndex === 0;\n };\n var isOnLastQuestion = function isOnLastQuestion() {\n return _currentQuestionIndex === questionSet.questions.length - 1;\n };\n var showView = function showView() {\n _$questionSetContainer.removeClass('minimized');\n _superView.showView();\n };\n var hideView = function hideView() {\n _$questionSetContainer.addClass('minimized');\n _superView.hideView();\n };\n var startTrackingQuestionTime = function startTrackingQuestionTime() {\n _startTimeForQuestion = new Date().getTime();\n };\n var recordDurationOnQuestion = function recordDurationOnQuestion() {\n _endTimeForQuestion = new Date().getTime();\n var timeBetween = _endTimeForQuestion - _startTimeForQuestion;\n questionSet.questions[_currentQuestionIndex].attemptDuration += timeBetween;\n };\n var storeUserResponse = function storeUserResponse() {\n var userResponse = _currentQuestionView.getUserResponse();\n if (userResponse !== undefined && userResponse !== '') {\n questionSet.questions[_currentQuestionIndex].userResponse = userResponse;\n }\n };\n var saveQuestionUserInput = function saveQuestionUserInput() {\n if (showQuestionSetResults) {\n return;\n }\n storeUserResponse();\n recordDurationOnQuestion();\n };\n var lockResponses = function lockResponses() {\n if (questionSet.usesRationale) {\n questionSet.questions[_currentQuestionIndex].responseLocked = true;\n } else {\n questionSet.questions.forEach(function (question) {\n question.responseLocked = true;\n });\n }\n };\n var getFeedbackInfoForCurrentQuestion = function getFeedbackInfoForCurrentQuestion() {\n var actionType = rationaleActionType.CONTINUE;\n var feedback;\n if (questionSet.questions[_currentQuestionIndex].isGraded) {\n var feedbackReason = questionSet.questions[_currentQuestionIndex].isResponseCorrect ? 'correct' : 'incorrect';\n feedback = questionSet.questions[_currentQuestionIndex].getFeedbackForReason(feedbackReason);\n if (feedback !== null) {\n if (feedback.location !== undefined) {\n actionType = rationaleActionType.LOCATION;\n } else if (feedback.jumpToTime !== undefined) {\n actionType = rationaleActionType.JUMP_TO_TIME;\n }\n }\n }\n return {\n feedback: feedback,\n actionType: actionType\n };\n };\n var executeContinueAction = function executeContinueAction() {\n if (isOnLastQuestion()) {\n $container.trigger(events.Quizzing.CloseQuestionSetView);\n } else {\n displayNextQuestion();\n }\n };\n var executeRationaleAction = function executeRationaleAction() {\n var feedbackInfo;\n if (questionSet.questions[_currentQuestionIndex].feedbackActionExecuted) {\n feedbackInfo = {\n actionType: rationaleActionType.CONTINUE\n };\n } else {\n feedbackInfo = getFeedbackInfoForCurrentQuestion();\n questionSet.questions[_currentQuestionIndex].feedbackActionExecuted = true;\n }\n switch (feedbackInfo.actionType) {\n case rationaleActionType.CONTINUE:\n executeContinueAction();\n break;\n case rationaleActionType.LOCATION:\n $container.trigger(events.Quizzing.RationaleActionLocation, {\n location: feedbackInfo.feedback.location\n });\n executeContinueAction();\n break;\n case rationaleActionType.JUMP_TO_TIME:\n if (questionSet.startTime !== feedbackInfo.feedback.jumpToTime) {\n $container.trigger(events.Quizzing.RationaleActionJumpToTime, {\n jumpToTime: feedbackInfo.feedback.jumpToTime\n });\n } else {\n executeContinueAction();\n }\n break;\n }\n };\n var displayNextQuestion = function displayNextQuestion() {\n saveQuestionUserInput();\n _currentQuestionIndex++;\n displayQuestion();\n };\n var onPreviousQuestion = function onPreviousQuestion(e) {\n e.preventDefault();\n saveQuestionUserInput();\n _currentQuestionIndex--;\n displayQuestion();\n };\n var onNextQuestion = function onNextQuestion(e) {\n e.preventDefault();\n displayNextQuestion();\n };\n var onContinue = function onContinue(e) {\n e.preventDefault();\n if (questionSet.usesRationale && !showQuestionSetResults) {\n executeRationaleAction();\n } else {\n $container.trigger(events.Quizzing.CloseQuestionSetView);\n }\n };\n var onSubmit = function onSubmit(e) {\n e.preventDefault();\n _$submitControl.attr('disabled', 'disabled');\n saveQuestionUserInput();\n lockResponses();\n $container.trigger(events.Quizzing.SubmitQuestionSet);\n };\n\n //This is a fix for iPhones whipping users back to the top of the page if there is a focused input.\n var onIphoneTouchstart = function onIphoneTouchstart() {\n _$questionSetContainer.find('.fill-in-the-blank-input').blur();\n };\n var getControlsConfig = function getControlsConfig() {\n var currentQuestion = questionSet.questions[_currentQuestionIndex];\n var onFirstQuestion = isOnFirstQuestion();\n var onLastQuestion = isOnLastQuestion();\n var hasOneQuestion = onFirstQuestion && onLastQuestion;\n var controlsConfig = {\n showSubmitNav: false,\n showContinueNav: false,\n showPrevNav: false,\n showNextNav: false,\n prevDisabled: false,\n nextDisabled: false\n };\n if (questionSet.usesRationale && !showQuestionSetResults) {\n if (currentQuestion.responseLocked) {\n if (currentQuestion.feedbackActionExecuted && !onLastQuestion) {\n controlsConfig.showNextNav = true;\n } else {\n controlsConfig.showContinueNav = true;\n }\n } else {\n controlsConfig.showSubmitNav = true;\n }\n controlsConfig.showPrevNav = !hasOneQuestion && !onFirstQuestion;\n } else {\n controlsConfig.showSubmitNav = !showQuestionSetResults && onLastQuestion;\n controlsConfig.showContinueNav = showQuestionSetResults && onLastQuestion && !mediaIsImage;\n controlsConfig.showPrevNav = !hasOneQuestion;\n controlsConfig.showNextNav = !hasOneQuestion && !controlsConfig.showSubmitNav && !controlsConfig.showContinueNav;\n controlsConfig.prevDisabled = _currentQuestionIndex === 0;\n controlsConfig.nextDisabled = onLastQuestion;\n }\n return controlsConfig;\n };\n var updateControls = function updateControls() {\n var controlsConfig = getControlsConfig();\n _$prevControl.css('display', 'none');\n _$nextControl.css('display', 'none');\n _$submitControl.css('display', 'none');\n _$continueControl.css('display', 'none');\n if (controlsConfig.showPrevNav) {\n _$prevControl.css('display', 'inline');\n if (controlsConfig.prevDisabled) {\n _$prevControl.attr('disabled', 'disabled');\n } else {\n _$prevControl.removeAttr('disabled');\n }\n }\n if (controlsConfig.showNextNav) {\n _$nextControl.css('display', 'inline');\n if (controlsConfig.nextDisabled) {\n _$nextControl.attr('disabled', 'disabled');\n } else {\n _$nextControl.removeAttr('disabled');\n }\n }\n if (controlsConfig.showSubmitNav) {\n _$submitControl.removeAttr('disabled');\n _$submitControl.css('display', 'inline');\n }\n if (controlsConfig.showContinueNav) {\n _$continueControl.removeAttr('disabled');\n _$continueControl.css('display', 'inline');\n }\n };\n var displayQuestion = function displayQuestion() {\n var showResults = showQuestionSetResults;\n if (questionSet.usesRationale && questionSet.questions[_currentQuestionIndex].responseLocked) {\n showResults = true;\n }\n if (_currentQuestionView !== null) {\n _currentQuestionView.destroy();\n }\n _currentQuestionView = QuestionView$1.create(_$questionTextContainer, _$questionGradedStatusContainer, _$feedbackContainer, _$answersContainer, questionSet.questions[_currentQuestionIndex], showResults);\n updateQuestionCount();\n updateControls();\n startTrackingQuestionTime();\n viewHelper.trapFocus(_$questionSetContent);\n };\n var updateQuestionCount = function updateQuestionCount() {\n var questionCountMarkup = templateGenerator.generateQuestionSetQuestionCountMarkup(_currentQuestionIndex + 1, questionSet.questions.length);\n _$questionCountContainer.html(questionCountMarkup);\n };\n var showFeedbackForCurrentQuestion = function showFeedbackForCurrentQuestion() {\n displayQuestion();\n updateControls();\n };\n var createView = function createView() {\n var questionSetViewMarkup = templateGenerator.generateQuestionSetMarkup(quizTime);\n if (displayOverlay) {\n questionSetViewMarkup += _superView.getOverlayMarkup();\n }\n _$container.append(questionSetViewMarkup);\n _$questionSetContainer = _$container.find(CONTAINER_CLASS);\n _$questionSetContent = _$container.find(QUESTION_SET_CONTENT_CLASS);\n _$questionTextContainer = _$container.find(QUESTION_CLASS);\n _$answersContainer = _$container.find(ANSWERS_CLASS);\n _$feedbackContainer = _$container.find(FEEDBACK_CLASS);\n _$questionCountContainer = _$container.find(QUESTION_COUNT_CLASS);\n _$questionGradedStatusContainer = _$container.find(QUESTION_GRADED_STATUS_CLASS);\n _$hideControl = _$container.find(HIDE_CONTROL_CLASS);\n _$showControl = _$container.find(SHOW_CONTROL_CLASS);\n _$prevControl = _$container.find(PREV_CONTROL_CLASS);\n _$nextControl = _$container.find(NEXT_CONTROL_CLASS);\n _$continueControl = _$container.find(CONTINUE_CONTROL_CLASS);\n _$submitControl = _$container.find(SUBMIT_CONTROL_CLASS);\n _$minimizedContainer = _$container.find(MINIMIZED_VIEW_CLASS);\n };\n var removeEvents = function removeEvents() {\n _$hideControl.off('click', onHideQuizClick);\n _$showControl.off('click', onShowQuizHandler);\n _$prevControl.off('click', onPreviousQuestion);\n _$nextControl.off('click', onNextQuestion);\n _$submitControl.off('click', onSubmit);\n _$continueControl.off('click', onContinue);\n $container.off('keydown', onKeyDownHandler);\n viewHelper.removeFocusTrap();\n if (deviceInfo.isIPhoneOrIPod()) {\n _$questionSetContainer.off('touchstart', onIphoneTouchstart);\n }\n };\n var setupEvents = function setupEvents() {\n _$hideControl.on('click', onHideQuizClick);\n _$showControl.on('click', onShowQuizHandler);\n _$prevControl.on('click', onPreviousQuestion);\n _$nextControl.on('click', onNextQuestion);\n _$submitControl.on('click', onSubmit);\n _$continueControl.on('click', onContinue);\n $container.on('keydown', onKeyDownHandler);\n if (deviceInfo.isIPhoneOrIPod()) {\n _$questionSetContainer.on('touchstart', onIphoneTouchstart);\n }\n };\n var checkQuestionSetProgress = function checkQuestionSetProgress() {\n if (showQuestionSetResults) {\n return;\n }\n for (var i = 0; i < questionSet.questions.length; i++) {\n if (!questionSet.questions[i].responseLocked) {\n _currentQuestionIndex = i;\n break;\n }\n }\n };\n var removeView = function removeView(completeCallback, destroyOverlay) {\n _initTimeoutId && clearTimeout(_initTimeoutId);\n _alertScreenReaderTimeoutId && clearTimeout(_alertScreenReaderTimeoutId);\n removeEvents();\n _currentQuestionView.destroy();\n _superView.removeView(completeCallback, destroyOverlay);\n };\n createView();\n checkQuestionSetProgress();\n setupEvents();\n\n // need to delay displaying first question for NVDA screen reader to pick up text.\n _initTimeoutId = setTimeout(function () {\n displayQuestion();\n _resolveInitPromise();\n }, INIT_QUESTION_SET_TIMEOUT);\n return Object.defineProperties({\n showView: showView,\n hideView: hideView,\n removeView: removeView,\n showFeedbackForCurrentQuestion: showFeedbackForCurrentQuestion\n }, {\n viewInitializedPromise: {\n get: function get() {\n return initPromise;\n }\n }\n });\n};\nvar QuestionSetView$1 = {\n create: QuestionSetView\n};\n\nvar _containerId$2 = '.start-question-set-confirmation-container';\nvar _superView$2 = BubbleView$1.create(_containerId$2);\nvar _reviewControlId = '.review-button';\nvar _confirmControlId = '.confirm-button';\nvar questionSetConfirmationView = {\n getViewMarkup: function getViewMarkup(reviewText, confirmationText) {\n return templateGenerator.generateQuestionSetConfirmationMarkup(reviewText, confirmationText) + _superView$2.getOverlayMarkup();\n },\n getReviewControlRef: function getReviewControlRef() {\n return _reviewControlId;\n },\n getConfirmControlRef: function getConfirmControlRef() {\n return _confirmControlId;\n },\n hideView: function hideView() {\n _superView$2.hideView();\n },\n showView: function showView() {\n _superView$2.showView(true);\n var $confirmControl = $(_containerId$2).find(_confirmControlId);\n $confirmControl.focus();\n highlightDisabler.disableHighlights($confirmControl);\n },\n removeView: _superView$2.removeView,\n updateViewPosition: _superView$2.updateViewPosition,\n setBottomOffset: _superView$2.setBottomOffset,\n pointAt: _superView$2.pointAt\n};\n\nvar setItem = function setItem(key, value) {\n try {\n window.sessionStorage.setItem(key, value);\n } catch (e) {\n // We want this to fail silently\n }\n};\nvar getItem = function getItem(key) {\n try {\n return window.sessionStorage.getItem(key);\n } catch (e) {\n return null;\n }\n};\nvar sessionStorageWrapper = {\n /**\n * Wraps native session storage setItem with a try/catch.\n * @function setItem\n * @memberof TSC.sessionStorageWrapper\n * @static\n * @param {String} key - the key of the value to set in session storage\n * @param {String} value - the value to set in session storage\n */\n setItem: setItem,\n /**\n * Wraps native session storage getItem.\n * @function getItem\n * @memberof TSC.sessionStorageWrapper\n * @static\n * @param {String} key - the key of the value to retrieve in session storage\n * @returns {String} value from session storage (could be null or undefined)\n */\n getItem: getItem\n};\n\nvar _$window = $(window);\nvar FIRST_NAME_CLASS = 'first_name';\nvar LAST_NAME_CLASS = 'last_name';\nvar rightParenRegex = /\\)/gi;\nvar leftParenRegex = /\\(/gi;\n\n/**\n * @memberof TSC\n * @class QuizSetupView\n * @classdesc Quiz Setup View\n * @param {JQuery} $rootContainer - Smart player container element.\n */\nvar QuizSetupView = function QuizSetupView($rootContainer) {\n var _$rootContainer = $rootContainer;\n var _$quizSetupView = null;\n var _$firstNameInput = null;\n var _$lastNameInput = null;\n var _$emailInput = null;\n var _$beginButton = null;\n var _$skipButton = null;\n var createView = function createView() {\n var quizSetupMarkup = templateGenerator.generateQuizSetupMarkup();\n _$quizSetupView = $($.parseHTML(quizSetupMarkup));\n _$firstNameInput = _$quizSetupView.find('.' + FIRST_NAME_CLASS);\n _$lastNameInput = _$quizSetupView.find('.' + LAST_NAME_CLASS);\n _$emailInput = _$quizSetupView.find('.email_address');\n _$beginButton = _$quizSetupView.find('.tsc_begin_button');\n _$skipButton = _$quizSetupView.find('.skip_control');\n _$rootContainer.trigger(events.Modals.Open);\n };\n var getKeys = function getKeys() {\n var hostname = windowWrapper.getLocation().hostname;\n return {\n first: hostname + '-first',\n last: hostname + '-last',\n email: hostname + '-email'\n };\n };\n var getUserInfo = function getUserInfo() {\n var keys = getKeys();\n var firstName = playerConfiguration.userInfo && playerConfiguration.userInfo.firstName;\n var lastName = playerConfiguration.userInfo && playerConfiguration.userInfo.lastName;\n var email = playerConfiguration.userInfo && playerConfiguration.userInfo.email;\n if (playerConfiguration.rememberUserInfo) {\n firstName = firstName || sessionStorageWrapper.getItem(keys.first);\n lastName = lastName || sessionStorageWrapper.getItem(keys.last);\n email = email || sessionStorageWrapper.getItem(keys.email);\n }\n return {\n firstName: firstName,\n lastName: lastName,\n email: email\n };\n };\n var cacheSelfIdentity = function cacheSelfIdentity(eventData) {\n var keys = getKeys();\n sessionStorageWrapper.setItem(keys.first, eventData.firstName);\n sessionStorageWrapper.setItem(keys.last, eventData.lastName);\n sessionStorageWrapper.setItem(keys.email, eventData.email);\n };\n var setupInitialValues = function setupInitialValues() {\n var userInfo = getUserInfo();\n _$firstNameInput.val(userInfo.firstName);\n _$lastNameInput.val(userInfo.lastName);\n _$emailInput.val(userInfo.email);\n if (userInfo.firstName && userInfo.lastName && userInfo.email) {\n validateInput();\n }\n };\n var addPosterImageToBackground = function addPosterImageToBackground(posterSrc) {\n posterSrc = posterSrc.replace(rightParenRegex, '\\\\\\)');\n posterSrc = posterSrc.replace(leftParenRegex, '\\\\\\(');\n var url = 'url(' + posterSrc + ')';\n _$quizSetupView.css('background-image', url);\n };\n var validateInput = function validateInput() {\n var firstName = _$firstNameInput.val().replace(/ /g, '');\n var lastName = _$lastNameInput.val().replace(/ /g, '');\n var email = _$emailInput.val().replace(/ /g, '');\n if (firstName !== '' && lastName !== '' && email !== '' && textSanitizer.isValidEmail(email)) {\n _$beginButton.removeAttr('disabled');\n viewHelper.trapFocus(_$quizSetupView);\n } else {\n _$beginButton.attr('disabled', 'disabled');\n }\n };\n var destroy = function destroy() {\n if (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\n _$window.off('resize', viewHelper.scrollActiveElementIntoView);\n _$firstNameInput.off('focus keydown', viewHelper.scrollIntoView);\n _$lastNameInput.off('focus keydown', viewHelper.scrollIntoView);\n _$emailInput.off('focus keydown', viewHelper.scrollIntoView);\n }\n _$quizSetupView.css('background-image', '');\n _$firstNameInput.off('keyup', validateInput);\n _$firstNameInput.off('change', validateInput);\n _$lastNameInput.off('keyup', validateInput);\n _$lastNameInput.off('change', validateInput);\n _$emailInput.off('keyup', validateInput);\n _$emailInput.off('change', validateInput);\n _$beginButton.off('click', beginQuiz);\n _$skipButton.off('click', skipQuiz);\n _$rootContainer.trigger(events.Modals.Closed);\n viewHelper.removeFocusTrap();\n };\n var hideSkipButton = function hideSkipButton() {\n _$skipButton.attr('disabled', 'disabled');\n _$skipButton.hide();\n viewHelper.trapFocus(_$quizSetupView);\n };\n var beginQuiz = function beginQuiz(event) {\n event.preventDefault();\n var eventData = {\n firstName: _$firstNameInput.val().replace(/ /g, ''),\n lastName: _$lastNameInput.val().replace(/ /g, ''),\n email: _$emailInput.val().replace(/ /g, '')\n };\n if (playerConfiguration.rememberUserInfo) {\n cacheSelfIdentity(eventData);\n }\n _$rootContainer.trigger(events.Quizzing.BeginClicked, eventData);\n };\n var skipQuiz = function skipQuiz(event) {\n event.preventDefault();\n _$rootContainer.trigger(events.Quizzing.SkipClicked, {});\n };\n var bindEvents = function bindEvents() {\n if (deviceInfo.isIPhoneOrIPod() || deviceInfo.isAndroid()) {\n _$window.on('resize', viewHelper.scrollActiveElementIntoView);\n _$firstNameInput.on('focus keydown', viewHelper.scrollIntoView);\n _$lastNameInput.on('focus keydown', viewHelper.scrollIntoView);\n _$emailInput.on('focus keydown', viewHelper.scrollIntoView);\n }\n _$firstNameInput.on('keyup', validateInput);\n _$firstNameInput.on('change', validateInput);\n _$lastNameInput.on('keyup', validateInput);\n _$lastNameInput.on('change', validateInput);\n _$emailInput.on('keyup', validateInput);\n _$emailInput.on('change', validateInput);\n _$beginButton.on('click', beginQuiz);\n _$skipButton.on('click', skipQuiz);\n _$rootContainer.append(_$quizSetupView);\n viewHelper.trapFocus(_$quizSetupView);\n if (viewHelper.elementOrChildHasFocus($rootContainer)) {\n _$firstNameInput.focus();\n }\n };\n createView();\n setupInitialValues();\n bindEvents();\n if (playerConfiguration.getPosterImageSrc()) {\n addPosterImageToBackground(playerConfiguration.getPosterImageSrc());\n }\n return Object.defineProperties({\n hideSkipButton: hideSkipButton,\n destroy: destroy\n }, {\n $view: {\n get: function get() {\n return _$quizSetupView;\n }\n }\n });\n};\nvar QuizSetupView$1 = {\n /**\n * Factory method that returns a new QuizSetupView object.\n * @function create\n * @memberof TSC.QuizSetupView\n * @param {JQuery} $rootContainer - Smart player container element.\n * @static\n * @return QuizSetupView instance\n */\n create: QuizSetupView\n};\n\nvar _superView$1 = BubbleView$1.create('.review-confirmation-container');\nvar _containerId$1 = '.controls-container';\nvar _continueControlId = '.continue-video-button';\nvar _reviewAnswersControlId = '.review-answers-button';\nvar reviewAnswersConfirmationView = {\n getViewMarkup: function getViewMarkup(numberCorrectText, percentCorrectText, numberInCorrectText, percentInCorrectText, continueText, reviewText) {\n return templateGenerator.generateQuestionSetReviewConfirmationMarkup(numberCorrectText, percentCorrectText, numberInCorrectText, percentInCorrectText, continueText, reviewText);\n },\n getContinueControlRef: function getContinueControlRef() {\n return _continueControlId;\n },\n getReviewControlRef: function getReviewControlRef() {\n return _reviewAnswersControlId;\n },\n hideView: function hideView() {\n _superView$1.hideView();\n },\n showView: function showView() {\n _superView$1.showView(true);\n var $reviewControl = $(_containerId$1).find(_reviewAnswersControlId);\n $reviewControl.focus();\n highlightDisabler.disableHighlights($reviewControl);\n },\n removeView: _superView$1.removeView,\n updateViewPosition: _superView$1.updateViewPosition,\n setBottomOffset: _superView$1.setBottomOffset,\n pointAt: _superView$1.pointAt\n};\n\nvar DEFAULT_RETRY_LIMIT = 2;\nvar DEFAULT_BACKOFF = 2000;\nvar DEFAULT_MAX_DELAY_BETWEEN_RETRIES = 20000;\nvar BackoffStrategy = function BackoffStrategy(retryLimit, backoffTime, maxDelay) {\n if (typeof retryLimit === 'undefined') {\n retryLimit = DEFAULT_RETRY_LIMIT;\n }\n if (typeof backoffTime === 'undefined') {\n backoffTime = DEFAULT_BACKOFF;\n }\n if (typeof maxDelay === 'undefined') {\n maxDelay = DEFAULT_MAX_DELAY_BETWEEN_RETRIES;\n }\n var create = function create() {\n var tries = 0;\n var backoff = function backoff() {\n tries++;\n if (tries > retryLimit) {\n return Promise$1.reject();\n }\n var delay = Math.min(backoffTime * tries, maxDelay);\n return new Promise$1(function (resolve) {\n window.setTimeout(resolve, delay);\n });\n };\n return {\n backoff: backoff\n };\n };\n return {\n create: create\n };\n};\nvar BackoffStrategyWithUnlimitedRetries = function BackoffStrategyWithUnlimitedRetries(backoffTime, maxDelay) {\n if (typeof backoffTime === 'undefined') {\n backoffTime = DEFAULT_BACKOFF;\n }\n if (typeof maxDelay === 'undefined') {\n maxDelay = DEFAULT_MAX_DELAY_BETWEEN_RETRIES;\n }\n var create = function create() {\n var tries = 0;\n var backoff = function backoff() {\n tries++;\n var delay = Math.min(backoffTime * tries, maxDelay);\n return new Promise$1(function (resolve) {\n window.setTimeout(resolve, delay);\n });\n };\n return {\n backoff: backoff\n };\n };\n return {\n create: create\n };\n};\nvar BackoffStrategyFactory = {\n create: BackoffStrategy,\n createWithUnlimitedRetries: BackoffStrategyWithUnlimitedRetries\n};\n\nvar statusCodes = Object.freeze({\n Unauthorized: 401,\n UnprocessableEntity: 422\n});\n\n$.support.cors = true;\nvar REQUEST_TIMEOUT = 10000;\nvar NO_RETRY_STATUS_CODES = [statusCodes.UnprocessableEntity];\nvar HttpService = function HttpService(retryStrategyFactory, logFailures) {\n retryStrategyFactory = retryStrategyFactory || BackoffStrategyFactory.create();\n if (typeof logFailures === 'undefined') {\n logFailures = true;\n }\n var _eventHandlers = {};\n var _pendingRequestPromises = {};\n var removePendingRequestPromise = function removePendingRequestPromise(requestPromise) {\n if (requestPromise.UUID) {\n delete _pendingRequestPromises[requestPromise.UUID];\n }\n };\n var addRequestToPendingList = function addRequestToPendingList(requestPromise) {\n var requestUUID = uuidGenerator$1.getUUID();\n requestPromise.UUID = requestUUID;\n _pendingRequestPromises[requestUUID] = requestPromise;\n };\n var get = function get(url) {\n var request = {\n url: url,\n type: 'GET',\n contentType: 'application/json',\n crossDomain: true,\n timeout: REQUEST_TIMEOUT\n };\n var requestPromise = $.ajax(request);\n addRequestToPendingList(requestPromise);\n return Promise$1.resolve(requestPromise).then(function (data) {\n removePendingRequestPromise(requestPromise);\n return data;\n })[\"catch\"](function (response) {\n removePendingRequestPromise(requestPromise);\n if (logFailures && response && response.statusText !== 'timeout') {\n var errorString = '';\n try {\n errorString = 'Error: ' + window.JSON.stringify(response, null, 2) + ' Url: ' + url;\n } catch (error) {\n errorString = '(response failed conversion into a JSON string.)';\n }\n log.logException(errorString);\n return Promise$1.reject(errorString);\n }\n });\n };\n var sendFormDataPost = function sendFormDataPost(url, data) {\n return sendRequest(url, $.param(data), 'application/x-www-form-urlencoded; charset=UTF-8', 'POST');\n };\n var canRetryFromStatusCode = function canRetryFromStatusCode(response) {\n if (!response) {\n return true;\n }\n for (var i = 0; i < NO_RETRY_STATUS_CODES.length; i++) {\n if (response.status === NO_RETRY_STATUS_CODES[i]) {\n return false;\n }\n }\n return true;\n };\n var sendRequest = function sendRequest(url, data, contentType, httpVerb) {\n var retryStrategy = retryStrategyFactory.create();\n var request = {\n url: url,\n type: httpVerb,\n data: data,\n contentType: contentType,\n crossDomain: true,\n timeout: REQUEST_TIMEOUT\n };\n var send = function send(retries) {\n return new Promise$1(function (resolve, reject) {\n var requestPromise = $.ajax(request);\n addRequestToPendingList(requestPromise);\n Promise$1.resolve(requestPromise).then(function (responseData) {\n removePendingRequestPromise(requestPromise);\n resolve(responseData);\n })[\"catch\"](function (response) {\n removePendingRequestPromise(requestPromise);\n if (logFailures && response && response.statusText !== 'timeout') {\n var errorString = '';\n try {\n errorString = 'Error: ' + window.JSON.stringify(response, null, 2) + ' Url: ' + url + ' Data: ' + window.JSON.stringify(data, null, 2);\n } catch (error) {\n errorString = '(response failed conversion into a JSON string.)';\n }\n log.logException(errorString);\n }\n if (canRetryFromStatusCode(response)) {\n retryStrategy.backoff().then(function () {\n retries++;\n if (_eventHandlers[events.Network.Retrying]) {\n _eventHandlers[events.Network.Retrying].forEach(function (eventCallback) {\n eventCallback(retries);\n });\n }\n send(retries).then(resolve)[\"catch\"](reject);\n })[\"catch\"](function (retryResponse) {\n log.logException('Call to ' + url + ' failed after ' + retries + ' retries.');\n reject(retryResponse);\n });\n } else {\n log.logException('Call ' + url + ' failed with no retry status of ' + response.status + '.');\n reject(response);\n }\n });\n });\n };\n return send(0);\n };\n var abortPendingRequests = function abortPendingRequests() {\n Object.keys(_pendingRequestPromises).forEach(function (requestPromise) {\n requestPromise && requestPromise.abort && requestPromise.abort();\n });\n _pendingRequestPromises = {};\n };\n var addEventListener = function addEventListener(eventName, eventCallback) {\n if (!_eventHandlers[eventName]) {\n _eventHandlers[eventName] = [];\n }\n _eventHandlers[eventName].push(eventCallback);\n };\n var removeEventListener = function removeEventListener(eventName, eventCallback) {\n if (!_eventHandlers[eventName]) {\n return;\n }\n for (var i = _eventHandlers[eventName].length - 1; i >= 0; i--) {\n if (_eventHandlers[eventName][i] === eventCallback) {\n _eventHandlers[eventName].splice(i, 1);\n break;\n }\n }\n if (_eventHandlers[eventName].length === 0) {\n delete _eventHandlers[eventName];\n }\n };\n return {\n get: get,\n sendFormDataPost: sendFormDataPost,\n abortPendingRequests: abortPendingRequests,\n addEventListener: addEventListener,\n removeEventListener: removeEventListener\n };\n};\nvar HttpService$1 = {\n create: HttpService\n};\n\nvar VERSION = 1;\nvar questionSetToXml = function questionSetToXml(questionSet, quizInstanceId) {\n var xmlStr = '';\n xmlStr += '';\n questionSet.questions.forEach(function (question) {\n xmlStr += '';\n xmlStr += '' + question.duration + '';\n xmlStr += '' + textSanitizer.htmlEncode(question.response) + '';\n if (question.type !== questionType.SHORT && question.correct !== undefined) {\n xmlStr += '' + (question.correct ? 'True' : 'False') + '';\n }\n xmlStr += '' + question.segmentWatched + '';\n xmlStr += '';\n });\n xmlStr += '';\n return xmlStr;\n};\nvar quizDefinitionToXml = function quizDefinitionToXml(quizDefinition) {\n var xmlStr = '';\n xmlStr += '';\n xmlStr += '' + textSanitizer.htmlEncode(quizDefinition.projectName) + '';\n xmlStr += '' + quizDefinition.productionName + '';\n xmlStr += '' + quizDefinition.originId + '';\n xmlStr += '' + quizDefinition.mediaDuration + '';\n xmlStr += '';\n quizDefinition.reportRecipients.forEach(function (recipient) {\n xmlStr += '' + recipient + '';\n });\n xmlStr += '';\n xmlStr += '';\n quizDefinition.questionSets.forEach(function (questionSet) {\n xmlStr += '';\n questionSet.questions.forEach(function (question) {\n xmlStr += '';\n xmlStr += '' + textSanitizer.htmlEncode(question.questionText, true) + '';\n if (question.type === questionType.CHOICE) {\n xmlStr += '';\n question.choices.forEach(function (choice) {\n xmlStr += '' + textSanitizer.htmlEncode(choice, true) + '';\n });\n xmlStr += '';\n xmlStr += '' + question.correctAnswer + '';\n } else if (question.type === questionType.FILL_IN) {\n xmlStr += '';\n question.choices.forEach(function (choice) {\n xmlStr += '' + textSanitizer.htmlEncode(choice, true) + '';\n });\n xmlStr += '';\n }\n xmlStr += '';\n });\n xmlStr += '';\n });\n xmlStr += '';\n xmlStr += '';\n return xmlStr;\n};\nvar quizDataXmlConverter = {\n questionSetToXml: questionSetToXml,\n quizDefinitionToXml: quizDefinitionToXml\n};\n\nvar httpService$1 = HttpService$1.create();\nvar getTechSmithAccessToken = function getTechSmithAccessToken(playerConfiguration) {\n var accessTokenEndpoint = playerConfiguration.getTechSmithAccessTokenEndpoint();\n if (accessTokenEndpoint) {\n return httpService$1.get(accessTokenEndpoint).then(function (data) {\n return data.AccessToken;\n });\n }\n return Promise$1.resolve();\n};\nvar abortPendingRequests$1 = function abortPendingRequests() {\n httpService$1.abortPendingRequests();\n};\nvar tokenService = {\n getTechSmithAccessToken: getTechSmithAccessToken,\n abortPendingRequests: abortPendingRequests$1\n};\n\nvar DEFAULT_PROGRESS_INTERVAL_TIME_MILLISECONDS = 10000;\nvar _definitionEndPoint = 'v/1/quiz/definition';\nvar _instanceEndPoint = 'v/1/quiz/instance?noop=1';\nvar _responseEndPoint = 'v/1/quiz/response?noop=1';\nvar _progressEndPoint = 'v/1/quiz/progress?noop=1';\nvar _baseURL = 'https://quiz.cloud.techsmith.com/';\nvar _quizCreateInstanceUrl = null;\nvar _quizInstanceDataPromiseResolve;\nvar _quizInstanceDataPromiseReject;\nvar _quizInstanceDataPromise = new Promise$1(function (resolve, reject) {\n _quizInstanceDataPromiseResolve = resolve;\n _quizInstanceDataPromiseReject = reject;\n});\nvar httpService = HttpService$1.create();\nvar httpServiceWithUnlimitedRetries = HttpService$1.create(BackoffStrategyFactory.createWithUnlimitedRetries());\nvar httpServiceWithNoLogging = HttpService$1.create(BackoffStrategyFactory.create(), false);\nvar getBaseURL = function getBaseURL() {\n if (playerConfiguration.getQuizServiceBaseUrl()) {\n return playerConfiguration.getQuizServiceBaseUrl();\n }\n return _baseURL;\n};\n\n//should only be used for the purposes of unit tests!\nvar reset = function reset() {\n abortPendingRequests();\n httpServiceWithUnlimitedRetries = HttpService$1.create(BackoffStrategyFactory.createWithUnlimitedRetries());\n httpService = HttpService$1.create();\n httpServiceWithNoLogging = HttpService$1.create(BackoffStrategyFactory.create(), false);\n _quizInstanceDataPromise = new Promise$1(function (resolve, reject) {\n _quizInstanceDataPromiseResolve = resolve;\n _quizInstanceDataPromiseReject = reject;\n });\n};\nvar submitQuizDefinition = function submitQuizDefinition(quizJsonData, hash, clientId) {\n if (!quizJsonData) {\n return Promise$1.resolve();\n }\n if (typeof quizJsonData === 'string') {\n quizJsonData = JSON.parse(quizJsonData);\n }\n var quizDefinitionXml = quizDataXmlConverter.quizDefinitionToXml(quizJsonData);\n var url = getBaseURL() + _definitionEndPoint + '?Quiz-Checksum=' + hash + '&Quiz-ClientId=' + clientId + '&noop=1';\n var data = {\n DefinitionText: quizDefinitionXml\n };\n return httpService.sendFormDataPost(url, data).then(function () {\n return quizDefinitionXml;\n });\n};\nvar getInstanceFormData = function getInstanceFormData(quizModel, firstName, lastName, email, playerConfig) {\n var data = {\n QuizId: quizModel.quizID,\n CheckForQuizDefinition: playerConfig.getFathomId() === undefined\n };\n if (playerConfig.getTechSmithAccessTokenEndpoint()) {\n return tokenService.getTechSmithAccessToken(playerConfig).then(function (token) {\n data.AccessToken = token;\n return data;\n });\n }\n data.FirstName = !firstName ? '' : firstName;\n data.LastName = !lastName ? '' : lastName;\n data.Email = !email ? '' : email;\n return Promise$1.resolve(data);\n};\nvar startQuizInstance = function startQuizInstance(quizModel, firstName, lastName, email, playerConfig) {\n var url = _quizCreateInstanceUrl || getBaseURL() + _instanceEndPoint;\n getInstanceFormData(quizModel, firstName, lastName, email, playerConfig).then(function (data) {\n httpService.sendFormDataPost(url, data).then(function (response) {\n if (response.DefinitionRequired) {\n return submitQuizDefinition(quizModel.quizDefinition, quizModel.quizHash, quizModel.clientId).then(function () {\n return response;\n });\n }\n return response;\n }).then(function (response) {\n _quizInstanceDataPromiseResolve({\n analyticsSampleRate: response.SampleRate,\n reportingRate: response.ReportingRate || DEFAULT_PROGRESS_INTERVAL_TIME_MILLISECONDS,\n quizInstanceId: response.Id\n });\n })[\"catch\"](_quizInstanceDataPromiseReject);\n });\n return _quizInstanceDataPromise;\n};\nvar sendProgress = function sendProgress(sampleRateInMilliseconds, completedSamples) {\n if (completedSamples && completedSamples.length > 0) {\n return _quizInstanceDataPromise.then(function (quizInstanceData) {\n var url = getBaseURL() + _progressEndPoint;\n var data = {\n InstanceId: quizInstanceData.quizInstanceId,\n Interval: sampleRateInMilliseconds,\n ViewedSegments: completedSamples\n };\n return httpServiceWithNoLogging.sendFormDataPost(url, data, 0);\n });\n }\n};\nvar setQuizCreateInstanceUrl$1 = function setQuizCreateInstanceUrl(quizCreateInstanceUrl) {\n _quizCreateInstanceUrl = quizCreateInstanceUrl;\n};\nvar getQuizCreateInstanceUrl$1 = function getQuizCreateInstanceUrl() {\n return _quizCreateInstanceUrl;\n};\nvar submitQuestionSet = function submitQuestionSet(questionSetData) {\n return _quizInstanceDataPromise.then(function (quizInstanceData) {\n if (!quizInstanceData.quizInstanceId) {\n return Promise$1.reject('No quiz instance ID found');\n }\n if (typeof questionSetData === 'string') {\n questionSetData = JSON.parse(questionSetData);\n }\n var questionSetXml = quizDataXmlConverter.questionSetToXml(questionSetData, quizInstanceData.quizInstanceId);\n var url = getBaseURL() + _responseEndPoint;\n var data = {\n ResponseText: questionSetXml\n };\n return httpServiceWithUnlimitedRetries.sendFormDataPost(url, data).then(function (response) {\n return response.results;\n });\n });\n};\nvar getAnalyticsRate = function getAnalyticsRate() {\n return _quizInstanceDataPromise.then(function (response) {\n return {\n analyticsSampleRate: response.analyticsSampleRate,\n reportingRate: response.reportingRate\n };\n });\n};\nvar abortPendingRequests = function abortPendingRequests() {\n httpService.abortPendingRequests();\n httpServiceWithUnlimitedRetries.abortPendingRequests();\n httpServiceWithNoLogging.abortPendingRequests();\n tokenService.abortPendingRequests();\n};\nvar addEventListener$2 = function addEventListener(eventName, eventCallback) {\n httpService.addEventListener(eventName, eventCallback);\n httpServiceWithUnlimitedRetries.addEventListener(eventName, eventCallback);\n httpServiceWithNoLogging.addEventListener(eventName, eventCallback);\n};\nvar removeEventListener$2 = function removeEventListener(eventName, eventCallback) {\n httpService.removeEventListener(eventName, eventCallback);\n httpServiceWithUnlimitedRetries.removeEventListener(eventName, eventCallback);\n httpServiceWithNoLogging.removeEventListener(eventName, eventCallback);\n};\nvar quizService = {\n setQuizCreateInstanceUrl: setQuizCreateInstanceUrl$1,\n getQuizCreateInstanceUrl: getQuizCreateInstanceUrl$1,\n startQuizInstance: startQuizInstance,\n submitQuestionSet: submitQuestionSet,\n sendProgress: sendProgress,\n getAnalyticsRate: getAnalyticsRate,\n reset: reset,\n abortPendingRequests: abortPendingRequests,\n addEventListener: addEventListener$2,\n removeEventListener: removeEventListener$2\n};\n\n/**\n * @memberof TSC\n * @class QuizProgressTracker\n * @classdesc Quiz progress tracker manages quiz progress and processing played segments\n * @param {HTMLVideoElement} videoToTrack - The video element to monitor for progress.\n * @param {int} sampleRateInMilliseconds\n * @param {int} reportingRateInMilliseconds\n *\n */\nvar QuizProgressTracker = function QuizProgressTracker(videoToTrack, sampleRateInMilliseconds, reportingRateInMilliseconds) {\n var _didAttachToEndedEvent = false;\n var _didAttachToPlayEvent = false;\n var _intervalId;\n var _playCallbackFunction;\n var _mergeToleranceInMilliseconds = 500;\n var _videoEndToleranceInMilliseconds = 1000;\n var processPlayedSegments = function processPlayedSegments(played) {\n var numberPlayedSegments = played.length;\n if (numberPlayedSegments < 1) {\n return [];\n }\n var mergedPlayedInMilliseconds = [{\n start: played.start(0) * 1000,\n end: played.end(0) * 1000\n }];\n var mergedPlayedIndex = 0;\n var i;\n for (i = 1; i < numberPlayedSegments; i++) {\n if (mergedPlayedInMilliseconds[mergedPlayedIndex].end >= played.start(i) * 1000 - _mergeToleranceInMilliseconds) {\n mergedPlayedInMilliseconds[mergedPlayedIndex].end = played.end(i) * 1000;\n } else {\n mergedPlayedInMilliseconds.push({\n start: played.start(i) * 1000,\n end: played.end(i) * 1000\n });\n mergedPlayedIndex++;\n }\n }\n return mergedPlayedInMilliseconds;\n };\n var computePercentageViewed = function computePercentageViewed(video) {\n var completedSamples = [];\n var i;\n var j;\n var videoStartMilliseconds;\n var videoEndMilliseconds;\n var isEndOfVideo;\n var firstSample;\n var lastSample;\n var entireVideoWasWatched;\n var mergedPlayedInMilliseconds;\n var videoDurationInMilliseconds = video.duration * 1000;\n mergedPlayedInMilliseconds = processPlayedSegments(video.played);\n for (i = 0; i < mergedPlayedInMilliseconds.length; i++) {\n videoStartMilliseconds = mergedPlayedInMilliseconds[i].start;\n videoEndMilliseconds = mergedPlayedInMilliseconds[i].end;\n isEndOfVideo = videoDurationInMilliseconds - video.currentTime * 1000 < _videoEndToleranceInMilliseconds;\n if (!isEndOfVideo && videoEndMilliseconds - videoStartMilliseconds < sampleRateInMilliseconds) {\n continue;\n }\n firstSample = Math.floor(videoStartMilliseconds / sampleRateInMilliseconds);\n if (videoStartMilliseconds % sampleRateInMilliseconds !== 0) {\n firstSample += 1;\n }\n lastSample = Math.floor(videoEndMilliseconds / sampleRateInMilliseconds);\n if (!isEndOfVideo) {\n lastSample -= 1;\n }\n if (lastSample < firstSample) {\n continue;\n }\n for (j = firstSample; j <= lastSample; j++) {\n completedSamples.push(j);\n }\n }\n quizService.sendProgress(sampleRateInMilliseconds, completedSamples);\n entireVideoWasWatched = completedSamples.length === Math.ceil(videoDurationInMilliseconds / sampleRateInMilliseconds);\n if (entireVideoWasWatched) {\n stopInterval();\n video.removeEventListener('play', _playCallbackFunction, false);\n }\n };\n var attachToEndedEvent = function attachToEndedEvent(video) {\n var endedCallbackFunction = function endedCallbackFunction() {\n sendProgress(video);\n stopInterval();\n };\n video.addEventListener('ended', endedCallbackFunction, false);\n _didAttachToEndedEvent = true;\n };\n var attachToPlayEvent = function attachToPlayEvent(video) {\n _playCallbackFunction = function _playCallbackFunction() {\n if (_intervalId !== -1) {\n return;\n }\n setupProgressInterval(video);\n };\n video.addEventListener('play', _playCallbackFunction, false);\n _didAttachToPlayEvent = true;\n };\n var sendProgress = function sendProgress(video) {\n if (!video || video.duration === 0) {\n return;\n }\n if (!_didAttachToEndedEvent) {\n attachToEndedEvent(video);\n }\n if (!_didAttachToPlayEvent) {\n attachToPlayEvent(video);\n }\n computePercentageViewed(video);\n };\n var stopInterval = function stopInterval() {\n if (_intervalId !== -1) {\n window.clearInterval(_intervalId);\n _intervalId = -1;\n }\n };\n var destroy = function destroy() {\n stopInterval();\n };\n var setupProgressInterval = function setupProgressInterval(video) {\n var intervalFunction = function intervalFunction() {\n sendProgress(video);\n if (video.paused) {\n window.clearInterval(_intervalId);\n _intervalId = -1;\n }\n };\n _intervalId = window.setInterval(intervalFunction, reportingRateInMilliseconds);\n };\n stopInterval();\n setupProgressInterval(videoToTrack);\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar QuizProgressTracker$1 = {\n /**\n * Factory method that returns a new QuizProgressTracker.\n * @function create\n * @memberof TSC.QuizProgressTracker\n * @static\n * @param {HTMLVideoElement} videoToTrack - The video element to monitor for progress.\n * @param {int} sampleRateInMilliseconds\n * @param {int} reportingRateInMilliseconds\n * @return new QuizProgressTracker instance\n */\n create: QuizProgressTracker\n};\n\nvar questionGrader = Object.freeze({\n FATHOM: 'FATHOM',\n XMP: 'XMP'\n});\n\n/**\n * @memberof TSC\n * @class fathomGrader\n * @classdesc Grader for fathom quiz service\n */\n\nvar processQuestionResults = function processQuestionResults(question, results) {\n var questionApiId = question.id;\n var questionResult = results[questionApiId];\n if (questionResult !== undefined) {\n question.isResponseCorrect = questionResult.isCorrect;\n question.correctAnswer = questionResult.correctAnswer;\n question.isGraded = questionResult.isGraded;\n }\n};\nvar processQuestionSetResults = function processQuestionSetResults(questionSet, results) {\n questionSet.questions.forEach(function (question) {\n processQuestionResults(question, results);\n });\n questionSet.cacheQuestionDetails();\n};\nvar fathomGrader = Object.defineProperties({\n processQuestionSetResults: processQuestionSetResults\n}, {\n doesLocalGrading: {\n value: false\n }\n});\n\n/**\n * @memberof TSC\n * @class xmpGrader\n * @classdesc Xmp Grader question sets\n */\nvar gradeChoiceQuestion = function gradeChoiceQuestion(question, response) {\n var correctAnswer = question.correctAnswer;\n var isCorrect;\n var responseNumber = parseInt(response, 10);\n if (isNaN(responseNumber)) {\n isCorrect = false;\n } else {\n /*eslint no-bitwise: \"off\"*/\n isCorrect = 1 << responseNumber === correctAnswer;\n }\n question.isResponseCorrect = isCorrect;\n question.isGraded = correctAnswer !== undefined && correctAnswer > 0;\n};\nvar gradeFillInTheBlankQuestion = function gradeFillInTheBlankQuestion(question, response) {\n var responseLowerCase = response !== undefined ? response.toLowerCase() : '';\n var possibleAnswers = question.answers;\n var numberPossibleAnswers = possibleAnswers ? possibleAnswers.length : 0;\n question.isGraded = numberPossibleAnswers > 0;\n if (question.isGraded) {\n question.isResponseCorrect = false;\n for (var i = 0; i < numberPossibleAnswers; i++) {\n if (responseLowerCase === possibleAnswers[i].text.toLowerCase()) {\n question.isResponseCorrect = true;\n break;\n }\n }\n }\n};\nvar gradeQuestion = function gradeQuestion(question) {\n if (question.type === questionType.CHOICE) {\n gradeChoiceQuestion(question, question.userResponse);\n } else if (question.type === questionType.FILL_IN) {\n gradeFillInTheBlankQuestion(question, question.userResponse);\n }\n};\nvar gradeQuestionSet = function gradeQuestionSet(questionSet) {\n questionSet.questions.forEach(function (question) {\n if (question.responseLocked) {\n gradeQuestion(question);\n }\n });\n};\nvar xmpGrader = Object.defineProperties({\n gradeQuestionSet: gradeQuestionSet\n}, {\n doesLocalGrading: {\n value: true\n }\n});\n\nvar _containerId = '.question-set-container';\nvar _superView = BubbleView$1.create(_containerId);\nvar _showAnswersId = '.view-answers-button';\nvar _hideAnswersId = '.hide-answers-button';\nvar _gradeableDetails;\nvar _unGradeableDetails;\nvar _readingSelector = '.question-set-results';\nvar questionSetReviewStatusView = {\n setGradeableDetails: function setGradeableDetails(text) {\n _gradeableDetails = text;\n },\n setUngradeableDetails: function setUngradeableDetails(text) {\n _unGradeableDetails = text;\n },\n getViewMarkup: function getViewMarkup() {\n return templateGenerator.generateQuestionSetReviewStatusMarkup(_gradeableDetails, _unGradeableDetails) + _superView.getOverlayMarkup();\n },\n getHideAnswersControlRef: function getHideAnswersControlRef() {\n return _hideAnswersId;\n },\n getShowAnswersControlRef: function getShowAnswersControlRef() {\n return _showAnswersId;\n },\n showView: function showView() {\n var $container = $(_containerId);\n $container.removeClass('minimized');\n _superView.showView();\n var $readableElement = $container.find(_readingSelector);\n $readableElement.focus();\n highlightDisabler.disableHighlights($readableElement);\n },\n hideView: function hideView() {\n $(_containerId).addClass('minimized');\n _superView.hideView();\n },\n removeView: _superView.removeView,\n updateViewPosition: _superView.updateViewPosition,\n setBottomOffset: _superView.setBottomOffset,\n pointAt: _superView.pointAt\n};\n\nvar scormConstants = Object.freeze({\n fn: {\n initialize: 'initialize',\n terminate: 'terminate',\n getValue: 'getValue',\n setValue: 'setValue',\n commit: 'commit'\n },\n dataModelID: {\n cmiExit: 'cmiExit',\n cmiLocation: 'cmiLocation',\n cmiSuspendData: 'cmiSuspendData',\n cmiProgressMeasure: 'cmiProgressMeasure',\n cmiScaledPassingScore: 'cmiScaledPassingScore',\n cmiScoreMin: 'cmiScoreMin',\n cmiScoreMax: 'cmiScoreMax',\n cmiScoreRaw: 'cmiScoreRaw',\n cmiScoreScaled: 'cmiScoreScaled',\n cmiSuccessStatus: 'cmiSuccessStatus',\n cmiCompletionStatus: 'cmiCompletionStatus',\n cmiSessionTime: 'cmiSessionTime',\n adlNavRequest: 'adlNavRequest'\n },\n scorm1Dot2DataModel: {\n cmiExit: 'cmi.core.exit',\n cmiLocation: 'cmi.core.lesson_location',\n cmiSuspendData: 'cmi.suspend_data',\n cmiProgressMeasure: null,\n cmiScaledPassingScore: 'cmi.student_data.mastery_score',\n cmiScoreMin: 'cmi.core.score.min',\n cmiScoreMax: 'cmi.core.score.max',\n cmiScoreRaw: 'cmi.core.score.raw',\n cmiScoreScaled: null,\n cmiSuccessStatus: null,\n cmiCompletionStatus: 'cmi.core.lesson_status',\n cmiSessionTime: 'cmi.core.session_time',\n adlNavRequest: null\n },\n scorm2004DataModel: {\n cmiExit: 'cmi.exit',\n cmiLocation: 'cmi.location',\n cmiSuspendData: 'cmi.suspend_data',\n cmiProgressMeasure: 'cmi.progress_measure',\n cmiScaledPassingScore: 'cmi.scaled_passing_score',\n cmiScoreMin: 'cmi.score.min',\n cmiScoreMax: 'cmi.score.max',\n cmiScoreRaw: 'cmi.score.raw',\n cmiScoreScaled: 'cmi.score.scaled',\n cmiSuccessStatus: 'cmi.success_status',\n cmiCompletionStatus: 'cmi.completion_status',\n cmiSessionTime: 'cmi.session_time',\n adlNavRequest: 'adl.nav.request'\n },\n status: {\n completed: 'completed',\n incomplete: 'incomplete',\n notAttempted: 'not attempted',\n unknown: 'unknown',\n passed: 'passed',\n failed: 'failed',\n browsed: 'browsed'\n },\n exitStates: {\n suspend: 'suspend',\n logout: 'logout',\n complete: ''\n },\n navRequestStates: {\n exitAll: 'exitAll',\n suspendAll: 'suspendAll'\n },\n versions: {\n NOT_DETECTED: -1,\n SCORM_1_2: 0,\n SCORM_2004: 1\n },\n assessment: {\n minScore: 0,\n maxScore: 100,\n scoreNormalizationDivider: 100\n }\n});\n\nvar V1_SUSPENDED_DATA_KEY = 'tscsp1';\nvar V2_SUSPENDED_DATA_KEY = 'tscsp2';\n\n/**\n * @memberof TSC\n * @class ScormDataModel\n * @classdesc Data modal for smart player suspended scorm data\n */\nvar ScormDataModel = function ScormDataModel() {\n var _percentageComplete = 0;\n var _quizPercentageCorrect = 0;\n var _quizCompletionStatus = scormConstants.status.unknown;\n var _quizModelSnapshot = '';\n var _videoAnalyticsSnapshot = '';\n var _videoTimeInSecondsSnapshot = 0;\n var _videoTimeInSeconds = 0;\n var _completionStatus = scormConstants.status.notAttempted;\n var _passingStatus = scormConstants.status.unknown;\n\n /**\n * @methodOf TSC.ScormDataModel\n * @method parseSuspendedDataString\n * @param {String} suspendedDataString - string containing suspended scorm data\n */\n var parseSuspendedDataString = function parseSuspendedDataString(suspendedDataString) {\n if (!suspendedDataString) {\n return;\n }\n try {\n var suspendedData = window.JSON.parse(suspendedDataString);\n if (suspendedData[V1_SUSPENDED_DATA_KEY]) {\n _percentageComplete = parseFloat(suspendedData[V1_SUSPENDED_DATA_KEY].pc);\n _videoAnalyticsSnapshot = suspendedData[V1_SUSPENDED_DATA_KEY].vas;\n _videoTimeInSecondsSnapshot = parseFloat(suspendedData[V1_SUSPENDED_DATA_KEY].cvt);\n } else if (suspendedData[V2_SUSPENDED_DATA_KEY]) {\n _percentageComplete = parseFloat(suspendedData[V2_SUSPENDED_DATA_KEY].pc);\n _videoAnalyticsSnapshot = suspendedData[V2_SUSPENDED_DATA_KEY].vas;\n _videoTimeInSecondsSnapshot = parseFloat(suspendedData[V2_SUSPENDED_DATA_KEY].cvt);\n _quizModelSnapshot = suspendedData[V2_SUSPENDED_DATA_KEY].qs;\n }\n } catch (e) {} // eslint-disable-line\n };\n\n /**\n * @methodOf TSC.ScormDataModel\n * @method getSuspendedDataString\n * Return string of suspended data\n * @returns {String} string containing suspended scorm data\n */\n var getSuspendedDataString = function getSuspendedDataString() {\n var suspendedData = {};\n suspendedData[V2_SUSPENDED_DATA_KEY] = {\n pc: _percentageComplete,\n vas: _videoAnalyticsSnapshot,\n cvt: _videoTimeInSeconds,\n qs: _quizModelSnapshot\n };\n return window.JSON.stringify(suspendedData);\n };\n return Object.defineProperties({\n parseSuspendedDataString: parseSuspendedDataString,\n getSuspendedDataString: getSuspendedDataString\n }, {\n percentageComplete: {\n get: function get() {\n return _percentageComplete;\n },\n set: function set(percentageComplete) {\n _percentageComplete = percentageComplete;\n }\n },\n quizPercentageCorrect: {\n get: function get() {\n return _quizPercentageCorrect;\n },\n set: function set(quizPercentageCorrect) {\n _quizPercentageCorrect = quizPercentageCorrect;\n }\n },\n quizPercentageCorrectAsString: {\n get: function get() {\n return _quizPercentageCorrect.toString();\n }\n },\n quizCompletionStatus: {\n get: function get() {\n return _quizCompletionStatus;\n },\n set: function set(quizCompletionStatus) {\n _quizCompletionStatus = quizCompletionStatus;\n }\n },\n quizModelSnapshot: {\n get: function get() {\n return _quizModelSnapshot;\n },\n set: function set(quizModelSnapshot) {\n _quizModelSnapshot = quizModelSnapshot;\n }\n },\n videoAnalyticsSnapshot: {\n get: function get() {\n return _videoAnalyticsSnapshot;\n },\n set: function set(snapshot) {\n _videoAnalyticsSnapshot = snapshot;\n }\n },\n videoTimeInSecondsSnapshot: {\n get: function get() {\n return _videoTimeInSecondsSnapshot;\n }\n },\n videoTimeInSeconds: {\n get: function get() {\n return _videoTimeInSeconds;\n },\n set: function set(timeInSeconds) {\n _videoTimeInSeconds = timeInSeconds;\n }\n },\n completionStatus: {\n get: function get() {\n return _completionStatus;\n },\n set: function set(completionStatus) {\n _completionStatus = completionStatus;\n }\n },\n passingStatus: {\n get: function get() {\n return _passingStatus;\n },\n set: function set(passingStatus) {\n _passingStatus = passingStatus;\n }\n }\n });\n};\nvar ScormDataModel$1 = {\n create: ScormDataModel\n};\n\nvar DEFAULT_TITLE_TEXT = '';\nvar MAX_PARENTS_TO_SEARCH = 500;\nvar SCORM_MANIFEST_FILE_NAME = 'imsmanifest.xml';\nvar CAMTASIA_SCORM_1_2_MANIFEST_STRING = 'ADL SCORM 1.2';\n\n/**\n * @memberof TSC\n * @class ScormApiWrapper\n * @classdesc Wrapper around Scorm API that handles Scorm 1.2 and 2004\n */\nvar ScormApiWrapper = function ScormApiWrapper() {\n var scormApi = null;\n var noAPIFound = false;\n var apiVersion = scormConstants.versions.NOT_DETECTED;\n var scormManifestDocString = null;\n\n /**\n * Get last error message\n * @function getLastError\n * @return {String} - An error string that contains error number, string and diagnostic information.\n */\n var getLastError = function getLastError() {\n var errorNumber;\n var errorString;\n var diagnostic;\n if (!scormApi) {\n return 'SCORM API not found';\n }\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n errorNumber = scormApi.GetLastError();\n errorString = scormApi.GetErrorString(errorNumber);\n diagnostic = scormApi.GetDiagnostic(errorNumber);\n } else {\n errorNumber = scormApi.LMSGetLastError();\n errorString = scormApi.LMSGetErrorString(errorNumber);\n diagnostic = scormApi.LMSGetDiagnostic(errorNumber);\n }\n return 'Number: ' + errorNumber + '\\nDescription: ' + errorString + '\\nDiagnostic: ' + diagnostic;\n };\n\n /**\n * This function is used to communicate with the API, if it is found.\n * @memberof TSC.ScormApiWrapper\n * @function apiCall\n * @param {string} scormFunctionName - Name of the api function to call\n * @param {string} [dataModalID] - Name of the data model id defined in scorm constants object.\n * @param [dmeValue] - Value to write to data model\n * @return {string} - Value returned from the api call.\n */\n var apiCall = function apiCall(scormFunctionName, dataModalID, dmeValue) {\n var dataModel;\n var result;\n if (scormApi) {\n switch (scormFunctionName) {\n case scormConstants.fn.initialize:\n var initializedResult;\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n initializedResult = scormApi.Initialize('');\n } else {\n initializedResult = scormApi.LMSInitialize('');\n }\n if (initializedResult === 'true') {\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n result = scormApi.GetValue(scormConstants.scorm2004DataModel.cmiCompletionStatus);\n } else {\n result = scormApi.LMSGetValue(scormConstants.scorm1Dot2DataModel.cmiCompletionStatus);\n }\n }\n break;\n case scormConstants.fn.terminate:\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n result = scormApi.Terminate('');\n } else {\n result = scormApi.LMSFinish('');\n }\n break;\n case scormConstants.fn.getValue:\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n dataModel = scormConstants.scorm2004DataModel[dataModalID];\n if (dataModel) {\n result = scormApi.GetValue(dataModel);\n }\n } else {\n dataModel = scormConstants.scorm1Dot2DataModel[dataModalID];\n if (dataModel) {\n result = scormApi.LMSGetValue(dataModel);\n }\n }\n break;\n case scormConstants.fn.setValue:\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n dataModel = scormConstants.scorm2004DataModel[dataModalID];\n if (dataModel) {\n result = scormApi.SetValue(dataModel, dmeValue);\n }\n } else {\n // In 1.2, lesson_status hold both complete/incomplete and pass/fail.\n // So if we've already used it for pass/fail, we don't want to\n // overwrite with 'completed'\n dataModel = scormConstants.scorm1Dot2DataModel[dataModalID];\n var canSetValue = !!dataModel;\n if (dataModalID === scormConstants.dataModelID.cmiCompletionStatus) {\n var lessonStatus = scormApi.LMSGetValue(scormConstants.scorm1Dot2DataModel.cmiCompletionStatus);\n if (dmeValue !== scormConstants.status.passed && dmeValue !== scormConstants.status.failed) {\n canSetValue = lessonStatus !== scormConstants.status.failed && lessonStatus !== scormConstants.status.passed;\n }\n }\n if (canSetValue) {\n result = scormApi.LMSSetValue(dataModel, dmeValue);\n }\n }\n break;\n case scormConstants.fn.commit:\n if (apiVersion >= scormConstants.versions.SCORM_2004) {\n result = scormApi.Commit('');\n } else {\n result = scormApi.LMSCommit('');\n }\n break;\n }\n if (playerConfiguration.logScormApiCalls) {\n console.info('SCORM apiCall - ', scormFunctionName, dataModalID, dmeValue, ' returned ', result); // eslint-disable-line\n }\n return result;\n }\n };\n var loadScormManifest = function loadScormManifest() {\n return $.ajax({\n type: 'GET',\n url: SCORM_MANIFEST_FILE_NAME,\n dataType: 'text'\n });\n };\n var getScormManifestDoc = function getScormManifestDoc() {\n if (scormManifestDocString === null) {\n return new Promise$1(function (resolve, reject) {\n loadScormManifest().done(function (data) {\n scormManifestDocString = data;\n resolve(scormManifestDocString);\n }).fail(function () {\n reject();\n });\n });\n }\n return Promise$1.resolve(scormManifestDocString);\n };\n var getScormVersionFromManifestDoc = function getScormVersionFromManifestDoc() {\n return getScormManifestDoc().then(function (manifestDocAsString) {\n // manifest doc will contain a specific string only with SCORM version 1.2 produced with Camtasia\n if (manifestDocAsString.indexOf(CAMTASIA_SCORM_1_2_MANIFEST_STRING) !== -1) {\n return scormConstants.versions.SCORM_1_2;\n }\n return scormConstants.versions.SCORM_2004;\n });\n };\n var getScormApiOnWindow = function getScormApiOnWindow(windowRef) {\n // scorm 1.2 and 2004 api are defined on window\n if (windowRef.API && windowRef.API_1484_11) {\n return getScormVersionFromManifestDoc().then(function (scormApiVersion) {\n apiVersion = scormApiVersion;\n if (scormApiVersion === scormConstants.versions.SCORM_1_2) {\n return windowRef.API;\n }\n return windowRef.API_1484_11;\n });\n // look for scorm 1.2 api\n } else if (windowRef.API) {\n apiVersion = scormConstants.versions.SCORM_1_2;\n return Promise$1.resolve(windowRef.API);\n // look for scorm 2004 api\n } else if (windowRef.API_1484_11) {\n apiVersion = scormConstants.versions.SCORM_2004;\n return Promise$1.resolve(windowRef.API_1484_11);\n }\n return Promise$1.reject();\n };\n\n /**\n * Searches all the parents of a given window until it finds an object named \"API_1484_11\" or \"API\".\n * If an object of that name is found, a reference to it is returned. Otherwise, this function returns null.\n * @function findAPI\n * @param {window} win - Window object\n * @return {object} - If the API object is found, it's returned, otherwise null is returned\n */\n var findAPI = function findAPI(win) {\n var findAPITries = 0;\n\n // Search each parent window until we find the API, encounter a window with no parent / the\n // same as the current window, or have reached our MAX_PARENTS_TO_SEARCH to search threshold\n while (!win.API && !win.API_1484_11 && win.parent !== win && findAPITries <= MAX_PARENTS_TO_SEARCH) {\n findAPITries++;\n win = win.parent;\n }\n return getScormApiOnWindow(win);\n };\n var lookForApiOnParentWindow = function lookForApiOnParentWindow() {\n try {\n if (window.parent !== window) {\n return findAPI(window.parent);\n }\n return Promise$1.reject();\n } catch (e) {\n return Promise$1.reject(e);\n }\n };\n var lookForApiOnWindowTopOpener = function lookForApiOnWindowTopOpener() {\n if (window.top.opener !== null) {\n return findAPI(window.top.opener);\n }\n return Promise$1.reject();\n };\n\n /**\n * This function looks for an object named API, first in the current window's\n * frame hierarchy and then, if necessary, in the current window's opener window\n * hierarchy (if there is an opener window).\n * @function getAPI\n * @return {Promise} - A Promise that will resolve with API object if found or promise is rejected.\n */\n var getAPI = function getAPI() {\n return lookForApiOnParentWindow()[\"catch\"](lookForApiOnWindowTopOpener);\n };\n\n /**\n * Returns the handle to API object if it was previously set, otherwise it returns null\n * @function getAPIHandle\n * @return {Promise} - A Promise that will resolve with the available SCORM api.\n */\n var getAPIHandle = function getAPIHandle() {\n if (noAPIFound) {\n return Promise$1.reject();\n }\n if (!scormApi) {\n return getAPI();\n }\n return Promise$1.resolve(scormApi);\n };\n var getTitleFromManifestDoc = function getTitleFromManifestDoc() {\n try {\n var manifestXml = $.parseXML(scormManifestDocString);\n var $manifestXml = $(manifestXml);\n var $item = $manifestXml.find('item');\n var $title = $item.find('title');\n return $title.text();\n } catch (e) {\n return DEFAULT_TITLE_TEXT;\n }\n };\n\n /**\n * Get title for SCORM module\n * @function getTitle\n * @return {Promise} - A Promise that will resolve with the title found in the SCORM manifest file or empty string.\n */\n var getTitle = function getTitle() {\n if (!scormManifestDocString) {\n return getScormManifestDoc().then(getTitleFromManifestDoc)[\"catch\"](function () {\n return DEFAULT_TITLE_TEXT;\n });\n }\n return Promise$1.resolve(getTitleFromManifestDoc());\n };\n\n /**\n * Initialize SCORM module\n * @function init\n * @return {Promise} - A Promise that will resolve with the state of initialize.\n */\n var init = function init() {\n return getAPIHandle().then(function (api) {\n scormApi = api;\n if (playerConfiguration.logScormApiCalls) {\n console.info('SCORM initialized with version: ', apiVersion); // eslint-disable-line\n }\n return apiCall(scormConstants.fn.initialize);\n })[\"catch\"](function () {\n noAPIFound = true;\n return 'false';\n });\n };\n return Object.defineProperties({\n init: init,\n apiCall: apiCall,\n getTitle: getTitle,\n getLastError: getLastError\n }, {\n apiVersion: {\n get: function get() {\n return apiVersion;\n }\n }\n });\n};\n\n/**\n * Factory method that returns a new Scorm Api Wrapper object.\n * @function create\n * @memberof TSC.ScormApiWrapper\n * @static\n * @return new ScormApiWrapper instance\n */\nvar ScormApiWrapper$1 = {\n create: ScormApiWrapper\n};\n\nvar ScormNavigationBarView = function ScormNavigationBarView($container) {\n var _$scormNavigationBarContainer = $container.find('.scorm-module-navigation-container');\n var _$scormHeaderElement = null;\n var _$scormCompleteSessionButton = null;\n var _scoObjectiveHasBeenCompleted = false;\n var onCompleteSessionHandler = function onCompleteSessionHandler(e) {\n e.preventDefault();\n $container.trigger(events.SCORM.ExitSession);\n };\n var getButtonLabel = function getButtonLabel() {\n if (_scoObjectiveHasBeenCompleted) {\n return playerConfiguration.completeScormOnRequirementsComplete ? localizationStrings.getPlayerString(playerStringNames.scormExitVideo) : localizationStrings.getPlayerString(playerStringNames.scormCompleteVideo);\n }\n return localizationStrings.getPlayerString(playerStringNames.scormCompleteVideoLater);\n };\n var createView = function createView() {\n var buttonLabel = getButtonLabel();\n var isPrimaryButton = _scoObjectiveHasBeenCompleted;\n var scormNavigationBarMarkup = templateGenerator.generateScormNavigationBarMarkup(buttonLabel, isPrimaryButton);\n _$scormNavigationBarContainer.html(scormNavigationBarMarkup);\n _$scormHeaderElement = _$scormNavigationBarContainer.find('.scorm-module-title');\n _$scormCompleteSessionButton = _$scormNavigationBarContainer.find('.complete-scorm-session-button');\n };\n var disableControls = function disableControls() {\n _$scormCompleteSessionButton && _$scormCompleteSessionButton.attr('tabindex', tabIndex.Disabled);\n };\n var enableControls = function enableControls() {\n _$scormCompleteSessionButton && _$scormCompleteSessionButton.attr('tabindex', tabIndex.DomOrder);\n };\n var setupEvents = function setupEvents() {\n $container.on(events.Modals.Open, disableControls);\n $container.on(events.Modals.Closed, enableControls);\n _$scormCompleteSessionButton.on('click', onCompleteSessionHandler);\n };\n var setTitle = function setTitle(scormTitle) {\n if (_$scormHeaderElement) {\n _$scormHeaderElement.html(scormTitle);\n }\n };\n var destroy = function destroy() {\n if (_$scormCompleteSessionButton) {\n _$scormCompleteSessionButton.off();\n }\n $container.off(events.Modals.Open, disableControls);\n $container.off(events.Modals.Closed, enableControls);\n };\n var init = function init() {\n createView();\n setupEvents();\n };\n var updateView = function updateView(scoObjectiveHasBeenCompleted) {\n _scoObjectiveHasBeenCompleted = scoObjectiveHasBeenCompleted;\n destroy();\n init();\n };\n return Object.defineProperties({\n setTitle: setTitle,\n updateView: updateView\n }, {});\n};\nvar ScormNavigationBarView$1 = {\n create: ScormNavigationBarView\n};\n\n/**\n * Options for the ScormConfirmCompleteModal\n * @typedef {Object} ScormModalOptions\n * @property {boolean} canResumeVideo - Can the SCORM module be resumed\n * @property {boolean} failedToSaveSuspendedData - Indicates whether the player could not save the current state to the suspended data api.\n */\n\n/**\n * @memberof TSC\n * @class ScormConfirmCompleteModalView\n * @classdesc Confirmation modal used with SCORM operations\n * @param {jQuery} $container - jQuery wrapped element to add modal to.\n * @param {ScormModalOptions} options - Options to use when displaying modal.\n */\nvar ScormConfirmCompleteModalView = function ScormConfirmCompleteModalView($container, options) {\n var _$scormConfirmCompleteModalWrapper = $container.find('.scorm-confirm-complete-modal-wrapper');\n var _$confirmButton;\n var _$dismissButton;\n var createView = function createView() {\n var finalConfirmText;\n if (options.failedToSaveSuspendedData) {\n finalConfirmText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalFailedToSaveProgressText);\n } else {\n var confirmText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalText);\n var confirmWarningText = options.canResumeVideo ? localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalResumeVideoText) : localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalRestartVideoText);\n finalConfirmText = confirmText + ' ' + confirmWarningText;\n }\n var screenReaderAlertText = finalConfirmText;\n var dismissButtonText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalDismissButtonText);\n var dismissButtonScreenReaderText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalDismissButtonScreenReaderText);\n var confirmButtonText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalConfirmButtonText);\n var confirmButtonScreenReaderText = localizationStrings.getPlayerString(playerStringNames.scormConfirmCompleteModalConfirmButtonScreenReaderText);\n var scormConfirmCompleteModalMarkup = templateGenerator.generateScormConfirmCompleteModalMarkup(screenReaderAlertText, finalConfirmText, dismissButtonText, dismissButtonScreenReaderText, confirmButtonText, confirmButtonScreenReaderText, options.failedToSaveSuspendedData);\n _$scormConfirmCompleteModalWrapper.html(scormConfirmCompleteModalMarkup);\n _$dismissButton = _$scormConfirmCompleteModalWrapper.find('.dismiss-complete-button');\n _$confirmButton = _$scormConfirmCompleteModalWrapper.find('.confirm-complete-button');\n };\n var onDismissClickHandler = function onDismissClickHandler(e) {\n e.preventDefault();\n destroy();\n };\n var onCompleteClickHandler = function onCompleteClickHandler(e) {\n e.preventDefault();\n if (options.failedToSaveSuspendedData) {\n $container.trigger(events.SCORM.ExitSessionWithOutProgressConfirmed);\n } else {\n $container.trigger(events.SCORM.ExitSessionConfirmed);\n }\n };\n var setupEvents = function setupEvents() {\n _$confirmButton.on('click', onCompleteClickHandler);\n _$dismissButton.on('click', onDismissClickHandler);\n };\n var destroy = function destroy() {\n $container.trigger(events.Modals.Closed);\n _$confirmButton && _$confirmButton.off();\n _$dismissButton && _$dismissButton.off();\n _$scormConfirmCompleteModalWrapper.html('');\n };\n createView();\n setupEvents();\n $container.trigger(events.Modals.Open);\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar ScormConfirmCompleteModalView$1 = {\n create: ScormConfirmCompleteModalView\n};\n\nvar ScormSessionEndedView = function ScormSessionEndedView($container) {\n var _$scormSessionEndedWrapper = $container.find('.scorm-session-ended-wrapper');\n var scormSessionEndedMarkup = templateGenerator.generateScormSessionEndedMarkup(localizationStrings.getPlayerString(playerStringNames.scormSessionEndedText));\n _$scormSessionEndedWrapper.html(scormSessionEndedMarkup);\n $container.trigger(events.Modals.Open);\n};\nvar ScormSessionEndedView$1 = {\n create: ScormSessionEndedView\n};\n\nvar DEFAULT_PASSING_SCORE = 80;\nvar DEFAULT_VIDEO_WATCH_PERCENT_FOR_COMPLETE = 1;\nvar SCORM_NAV_CONTAINER_HEIGHT = '44px'; // note this should match the LESS var @scorm-ui-bar-height\n\n/**\n * @memberof TSC\n * @class scormController\n * @static\n * @classdesc Scorm Controller\n */\nvar scormController = function scormController() {\n var _$container = null;\n var _scormNavigationBarView = null;\n var _scormConfirmCompleteModalView = null;\n var _minimumScoreToPass = DEFAULT_PASSING_SCORE;\n var _minimumViewPercentageToCompleteLesson = DEFAULT_VIDEO_WATCH_PERCENT_FOR_COMPLETE;\n var _scormApiWrapper;\n var _isDisposed;\n var _initialized;\n var _scormModel;\n var _quizModel = null;\n var _sessionStartTimeInMilliseconds = 0;\n var _preventWindowClose = true;\n var _ignoreFailedToSuspendError = false;\n var _pendingScoExitValue = null;\n var _scoSessionHasEnded = false;\n var initializeInternalState = function initializeInternalState() {\n _$container = null;\n _scormNavigationBarView = null;\n _scormConfirmCompleteModalView = null;\n _scormApiWrapper = ScormApiWrapper$1.create();\n _isDisposed = false;\n _initialized = false;\n _scormModel = ScormDataModel$1.create();\n _sessionStartTimeInMilliseconds = 0;\n _preventWindowClose = true;\n _ignoreFailedToSuspendError = false;\n _pendingScoExitValue = null;\n _scoSessionHasEnded = false;\n };\n var scoHasQuiz = function scoHasQuiz() {\n return _quizModel !== null;\n };\n var scormSessionHasUnfinishedQuiz = function scormSessionHasUnfinishedQuiz() {\n return scoHasQuiz() && _scormModel.passingStatus === scormConstants.status.unknown;\n };\n var canSuspendScormSession = function canSuspendScormSession() {\n return !scoHasQuiz() || _quizModel.reportMethod === reportType.NONE || _quizModel.reportMethod === reportType.SCORM;\n };\n var submitMinMaxScoreValuesToScormApi = function submitMinMaxScoreValuesToScormApi() {\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2) {\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreMin, scormConstants.assessment.minScore.toString());\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreMax, scormConstants.assessment.maxScore.toString());\n } else {\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreMin, scormConstants.assessment.minScore);\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreMax, scormConstants.assessment.maxScore);\n }\n _scormApiWrapper.apiCall(scormConstants.fn.commit);\n };\n var submitScoreToScormApi = function submitScoreToScormApi() {\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2) {\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreRaw, _scormModel.quizPercentageCorrectAsString);\n } else {\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreRaw, _scormModel.quizPercentageCorrect);\n }\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiScoreScaled, _scormModel.quizPercentageCorrect / scormConstants.assessment.scoreNormalizationDivider);\n _scormApiWrapper.apiCall(scormConstants.fn.commit);\n };\n var getSuspendedDataFromAPI = function getSuspendedDataFromAPI() {\n var suspendedData = _scormApiWrapper.apiCall(scormConstants.fn.getValue, scormConstants.dataModelID.cmiSuspendData);\n _scormModel.parseSuspendedDataString(suspendedData);\n };\n var getSuspendData = function getSuspendData() {\n if (_quizModel) {\n _scormModel.quizModelSnapshot = _quizModel.getSnapShot();\n }\n _scormModel.videoAnalyticsSnapshot = videoAnalytics.getVideoSegmentSnapShot();\n return _scormModel.getSuspendedDataString();\n };\n var getSessionTimeValueByApiVersion = function getSessionTimeValueByApiVersion() {\n var sessionTimeInMilliseconds = window.performance.now() - _sessionStartTimeInMilliseconds;\n var sessionTimeInSeconds = Math.round(sessionTimeInMilliseconds / 1000);\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2) {\n return timeFormatter.formatTimeForCmiTimespan(sessionTimeInSeconds);\n }\n return timeFormatter.formatTimeAsTimeInterval(sessionTimeInSeconds);\n };\n var scoObjectiveHasBeenCompleted = function scoObjectiveHasBeenCompleted() {\n return _scormModel.percentageComplete >= _minimumViewPercentageToCompleteLesson && !scormSessionHasUnfinishedQuiz();\n };\n var shouldSubmitQuizScoreToApi = function shouldSubmitQuizScoreToApi() {\n return _quizModel && _scormModel.completionStatus === scormConstants.status.completed && _scormModel.quizCompletionStatus === scormConstants.status.completed && _quizModel.totalNumberOfGradedQuestionSets > 0;\n };\n var endScormSession = function endScormSession() {\n if (!_scoSessionHasEnded) {\n // need to mark this ended upfront\n _scoSessionHasEnded = true;\n if (_scormModel.percentageComplete >= _minimumViewPercentageToCompleteLesson) {\n _scormModel.completionStatus = scormConstants.status.completed;\n }\n var timeInSecondsAsString = videoAnalytics.getCurrentPlayTime().toString();\n _pendingScoExitValue = scormConstants.exitStates.complete;\n var scoCompletionStatusValue = _scormModel.completionStatus;\n var scoSuccessStatusValue;\n\n // SCORM 1.2 when video has quiz and not answered all questions complete status will be 'incomplete'\n // This is because SCORM 1.2 does not have a separate api value for pass / fail success\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2 && scormSessionHasUnfinishedQuiz()) {\n scoCompletionStatusValue = scormConstants.status.incomplete;\n }\n\n // Suspend SCO (Enables bookmarking feature) when viewer has not watched all the required video or they have not answered all the quiz questions if they exist\n if (canSuspendScormSession() && (_scormModel.completionStatus !== scormConstants.status.completed || scormSessionHasUnfinishedQuiz())) {\n _pendingScoExitValue = scormConstants.exitStates.suspend;\n }\n\n // If SCO attempt is complete and there is a quiz make sure we write the score out regardless if viewer has finished quiz\n if (_pendingScoExitValue === scormConstants.exitStates.complete) {\n if (scoHasQuiz()) {\n submitScore(_scormModel.quizPercentageCorrect, true);\n } else {\n _scormModel.passingStatus = scormConstants.status.passed;\n }\n }\n\n // SCORM 1.2 completionStatus value can be 'incomplete', 'passed' or 'failed'\n // SCORM 1.2 does not have a key to store an independent success status.\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2 && scoHasQuiz() && _scormModel.passingStatus !== scormConstants.status.unknown && scoCompletionStatusValue === scormConstants.status.completed) {\n scoCompletionStatusValue = _scormModel.passingStatus;\n scoSuccessStatusValue = '';\n } else {\n scoSuccessStatusValue = _scormModel.passingStatus;\n }\n var suspendedData = _pendingScoExitValue === scormConstants.exitStates.suspend ? getSuspendData() : '';\n var suspendSuccess = _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiSuspendData, suspendedData);\n\n // SCORM spec says boolean is returned, but in testing it is a boolean as a string. So testing for both in case a LMS returns a boolean.\n if (typeof suspendSuccess === 'string' && suspendSuccess.toLowerCase() === 'false' || suspendSuccess === false) {\n _pendingScoExitValue = scormConstants.exitStates.complete;\n if (!_ignoreFailedToSuspendError) {\n _scormConfirmCompleteModalView = ScormConfirmCompleteModalView$1.create(_$container, {\n canResumeVideo: true,\n failedToSaveSuspendedData: true\n });\n _scoSessionHasEnded = false;\n return false;\n }\n }\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiSessionTime, getSessionTimeValueByApiVersion());\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiProgressMeasure, _scormModel.percentageComplete);\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiLocation, timeInSecondsAsString);\n if (shouldSubmitQuizScoreToApi()) {\n submitScoreToScormApi();\n }\n if (_scormModel.passingStatus !== scormConstants.status.completed) {\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiSuccessStatus, scoSuccessStatusValue);\n }\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiCompletionStatus, scoCompletionStatusValue);\n _scormApiWrapper.apiCall(scormConstants.fn.commit);\n }\n return true;\n };\n var terminateScormSession = function terminateScormSession() {\n _initialized = false;\n _isDisposed = true;\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiExit, _pendingScoExitValue);\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.adlNavRequest, scormConstants.navRequestStates.exitAll);\n _scormApiWrapper.apiCall(scormConstants.fn.terminate);\n ScormSessionEndedView$1.create(_$container);\n };\n var createNavigationBarView = function createNavigationBarView() {\n _scormNavigationBarView = ScormNavigationBarView$1.create(_$container);\n _scormNavigationBarView.updateView(scoObjectiveHasBeenCompleted());\n _scormApiWrapper.getTitle().then(function (scormTitle) {\n _scormNavigationBarView.setTitle(scormTitle);\n });\n _$container[0].style.setProperty(cssVariables.reservedSizeScorm, SCORM_NAV_CONTAINER_HEIGHT);\n };\n var onExitSessionHandler = function onExitSessionHandler() {\n if (!scoObjectiveHasBeenCompleted()) {\n _scormConfirmCompleteModalView = ScormConfirmCompleteModalView$1.create(_$container, {\n canResumeVideo: canSuspendScormSession(),\n failedToSaveSuspendedData: false\n });\n } else {\n exitScormSession();\n }\n };\n var onExitSessionConfirmedHandler = function onExitSessionConfirmedHandler() {\n _scormConfirmCompleteModalView && _scormConfirmCompleteModalView.destroy();\n _scormConfirmCompleteModalView = null;\n exitScormSession();\n };\n var onExitSessionWithOutProgressConfirmed = function onExitSessionWithOutProgressConfirmed() {\n _ignoreFailedToSuspendError = true;\n onExitSessionConfirmedHandler();\n };\n var initView = function initView($container) {\n _$container = $container;\n if (_scormApiWrapper.apiVersion === scormConstants.versions.NOT_DETECTED) {\n _$container.trigger(events.SCORM.FailedToFindApi);\n return;\n }\n _$container.addClass(cssClasses.scormModule);\n _$container.on(events.SCORM.ExitSession, onExitSessionHandler);\n _$container.on(events.SCORM.ExitSessionConfirmed, onExitSessionConfirmedHandler);\n _$container.on(events.SCORM.ExitSessionWithOutProgressConfirmed, onExitSessionWithOutProgressConfirmed);\n createNavigationBarView();\n };\n var exitScormSession = function exitScormSession() {\n var endedSuccessStatus = endScormSession();\n if (endedSuccessStatus || _ignoreFailedToSuspendError) {\n terminateScormSession();\n _preventWindowClose = false;\n }\n };\n var preventPopUpWindowClose = function preventPopUpWindowClose() {\n try {\n if (window.top && window.top.opener) {\n window.top.onbeforeunload = function () {\n if (_preventWindowClose) {\n return '';\n }\n };\n }\n } catch (e) {\n // eslint-disable-line\n }\n };\n var initializeCompletionStatus = function initializeCompletionStatus() {\n var completionStatus = _scormApiWrapper.apiCall(scormConstants.fn.getValue, scormConstants.dataModelID.cmiCompletionStatus, true);\n if (completionStatus === scormConstants.status.unknown || completionStatus === scormConstants.status.notAttempted) {\n _scormModel.completionStatus = scormConstants.status.incomplete;\n _scormApiWrapper.apiCall(scormConstants.fn.setValue, scormConstants.dataModelID.cmiCompletionStatus, scormConstants.status.incomplete);\n } else {\n _scormModel.completionStatus = completionStatus;\n }\n };\n\n // as a backup, try and terminate the SCORM session if the user did not do it.\n // most likely this will not work with some browsers with some LMSs\n var tryAndTerminateSessionOnPageUnloadIfNeeded = function tryAndTerminateSessionOnPageUnloadIfNeeded() {\n if (!_isDisposed) {\n exitScormSession();\n }\n };\n var init = function init() {\n initializeInternalState();\n _sessionStartTimeInMilliseconds = window.performance.now();\n return _scormApiWrapper.init().then(function (apiResult) {\n if (apiResult === 'false') {\n console.error(_scormApiWrapper.getLastError());\n return;\n }\n preventPopUpWindowClose();\n getSuspendedDataFromAPI();\n initializeCompletionStatus();\n if (_quizModel !== null) {\n submitMinMaxScoreValuesToScormApi();\n }\n window.addEventListener('unload', tryAndTerminateSessionOnPageUnloadIfNeeded);\n _initialized = true;\n });\n };\n\n /**\n * Submit percentage of video watched to SCORM api\n * @function submitVideoWatchedPercentage\n * @memberof TSC.scormController\n * @param {Number} percentageWatched - Percentage of video watched from 0 - 1\n * @param {Number} timeInSeconds - Current time of video in seconds\n */\n var submitVideoWatchedPercentage = function submitVideoWatchedPercentage(percentageWatched, timeInSeconds) {\n if (!_initialized) {\n return;\n }\n // Note: the percentage reported via value reports how much was actually watched\n // and not the percentage of the timeline that the playhead is at.\n // So, for example, if you started up a video and then immediately seeked to\n // the 75% pt, the values reported here would still start from zero.\n _scormModel.percentageComplete = Math.max(0, Math.min(1, percentageWatched));\n _scormModel.videoTimeInSeconds = timeInSeconds;\n if (_scormModel.percentageComplete >= _minimumViewPercentageToCompleteLesson) {\n _scormModel.completionStatus = scormConstants.status.completed;\n }\n if (scoObjectiveHasBeenCompleted()) {\n if (_scormNavigationBarView) {\n _scormNavigationBarView.updateView(true);\n }\n if (playerConfiguration.completeScormOnRequirementsComplete) {\n endScormSession();\n }\n }\n };\n\n /**\n * Submit a score to the SCORM api\n * @memberof TSC.scormController\n * @function submitScore\n * @param {Number} currentScore - Score to report to Scorm\n * @param {Boolean} allQuestionsAnswered - Are all questions answered\n */\n var submitScore = function submitScore(currentScore, allQuestionsAnswered) {\n if (!_initialized) {\n return;\n }\n var scoreNeededToPass = _minimumScoreToPass;\n if (!isNaN(currentScore)) {\n var scoreNeededMultiplier = null;\n var maxPassingScoreValue = null;\n if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_2004) {\n scoreNeededMultiplier = 100;\n maxPassingScoreValue = 1;\n } else if (_scormApiWrapper.apiVersion === scormConstants.versions.SCORM_1_2) {\n scoreNeededMultiplier = 1;\n maxPassingScoreValue = 100;\n }\n\n // lms defined mastery level will take precedence over sco defined mastery level\n var lmsPassingScore = _scormApiWrapper.apiCall(scormConstants.fn.getValue, scormConstants.dataModelID.cmiScaledPassingScore);\n if (lmsPassingScore !== null && lmsPassingScore !== '' && lmsPassingScore >= 0 && lmsPassingScore <= maxPassingScoreValue) {\n scoreNeededToPass = lmsPassingScore * scoreNeededMultiplier;\n }\n _scormModel.quizPercentageCorrect = currentScore;\n _scormModel.quizCompletionStatus = allQuestionsAnswered ? scormConstants.status.completed : scormConstants.status.incomplete;\n if (allQuestionsAnswered) {\n if (_quizModel.totalNumberOfGradedQuestionSets === 0) {\n _scormModel.passingStatus = scormConstants.status.completed;\n } else if (currentScore >= scoreNeededToPass) {\n _scormModel.passingStatus = scormConstants.status.passed;\n } else {\n _scormModel.passingStatus = scormConstants.status.failed;\n }\n } else {\n _scormModel.passingStatus = scormConstants.status.unknown;\n }\n if (scoObjectiveHasBeenCompleted()) {\n if (_scormNavigationBarView) {\n _scormNavigationBarView.updateView(true);\n }\n if (playerConfiguration.completeScormOnRequirementsComplete) {\n endScormSession();\n }\n }\n }\n };\n return Object.defineProperties({\n init: init,\n initView: initView,\n submitVideoWatchedPercentage: submitVideoWatchedPercentage,\n submitScore: submitScore\n }, {\n initialized: {\n get: function get() {\n return _initialized;\n }\n },\n initialPercentageComplete: {\n get: function get() {\n return _scormModel.percentageComplete;\n }\n },\n initialVideoAnalyticsSnapshot: {\n get: function get() {\n return _scormModel.videoAnalyticsSnapshot;\n }\n },\n initialQuizModelSnapshot: {\n get: function get() {\n return _scormModel.quizModelSnapshot;\n }\n },\n initialVideoTimeInSeconds: {\n get: function get() {\n return _scormModel.videoTimeInSecondsSnapshot;\n }\n },\n minScoreToPassLesson: {\n get: function get() {\n return _minimumScoreToPass;\n },\n set: function set(minimumScoreToPass) {\n _minimumScoreToPass = minimumScoreToPass;\n }\n },\n minViewPercentageToCompleteLesson: {\n get: function get() {\n return _minimumViewPercentageToCompleteLesson;\n },\n set: function set(minimumViewPercentageToCompleteLesson) {\n _minimumViewPercentageToCompleteLesson = minimumViewPercentageToCompleteLesson;\n }\n },\n quizModel: {\n get: function get() {\n return _quizModel;\n },\n set: function set(quizModel) {\n _quizModel = quizModel;\n }\n },\n scoObjectiveHasBeenCompleted: {\n get: scoObjectiveHasBeenCompleted\n },\n supportsResumeSession: {\n get: canSuspendScormSession\n }\n });\n};\nvar scormController$1 = scormController();\n\nvar quizServiceErrorIds = Object.freeze({\n badDefinition: 'bad_quiz_definition'\n});\n\nvar CONTROL_BAR_HEIGHT = 48;\nvar BOTTOM_PADDING = 14;\n\n/**\n * @memberof TSC\n * @class QuizController\n * @classdesc Quiz Controller manages questions state and views.\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.Quiz} quizModel\n * @param {TSC.BeforeAfterPlayControlsView} beforeAfterPlayControlsView\n * @param {boolean} enforceLinearAssessment\n *\n */\nvar QuizController = function QuizController($container, mediaView, quizModel, beforeAfterPlayControlsView, enforceLinearAssessment) {\n var hasQuiz = !!quizModel;\n if (!hasQuiz) {\n throw new Error('Attempted to create quiz controller with no quiz model');\n }\n var _quizSetupView = null;\n var _currentView = null;\n var _quizModel = null;\n var _retrySubmissionMessageDisplayBar = null;\n var _quizOutOfDateMessageView = null;\n var _quizBadDefinitionMessageView = null;\n var _progressTracker = null;\n var _numberQuestionSets = 0;\n var _currentQuestionSetIndex = 0;\n var _bottomOffset = 0;\n var _pointAt = null;\n var _quizEnabled = true;\n var _quizReady = false;\n var _mediaIsImage = mediaView.type === mediaViewType.image;\n var _lastStatusMessage = '';\n var _questionGrader;\n var _quizUserDetails;\n var _shouldReportViewedOnPageLoad = mediaView.type === mediaViewType.image;\n var _quizSetupPromise;\n var _resolveQuizSetup;\n var getMediaElement = function getMediaElement() {\n return mediaView.mediaElement;\n };\n var submitScoreToScormController = function submitScoreToScormController() {\n if (_quizModel.useScorm) {\n // Built in Scorm support\n if (scormController$1.initialized) {\n scormController$1.submitScore(_quizModel.getScormScore(), _quizModel.isLastQuestionComplete());\n // Legacy Scorm support\n } else if (typeof window.userSubmitToLMS !== 'undefined') {\n window.userSubmitToLMS(_quizModel.getScormScore());\n }\n }\n };\n var onNetworkRetryEvent = function onNetworkRetryEvent() {\n $container.trigger(events.Quizzing.ShowSubmissionRetryMessage);\n };\n var completeQuestionSetEventDispatch = function completeQuestionSetEventDispatch() {\n $container.trigger(events.Quizzing.Complete);\n hotkeyService.enableHotkeys();\n };\n var questionSetCompleteHandler = function questionSetCompleteHandler() {\n _currentQuestionSetIndex = -1;\n _currentView.removeView(true);\n _currentView = null;\n completeQuestionSetEventDispatch();\n };\n var dispatchStatusEvent = function dispatchStatusEvent(ioMessage) {\n _lastStatusMessage = ioMessage;\n $container.trigger(events.Quizzing.Status, {\n message: ioMessage\n });\n };\n var onContinueHandler = function onContinueHandler() {\n $container.off(events.Quizzing.CloseQuestionSetView, onContinueHandler);\n questionSetCompleteHandler();\n };\n var createQuestionSetFeedbackView = function createQuestionSetFeedbackView(needOverlay) {\n var questionSetView = QuestionSetView$1.create($container, _quizModel.questionSets[_currentQuestionSetIndex], needOverlay, _mediaIsImage, true, mediaView.currentTime);\n $container.on(events.Quizzing.CloseQuestionSetView, onContinueHandler);\n _currentView = questionSetView;\n _currentView.showView();\n };\n var continueVideoHandler = function continueVideoHandler() {\n $(reviewAnswersConfirmationView.getContinueControlRef()).off('click', continueVideoHandler);\n $(reviewAnswersConfirmationView.getReviewControlRef()).off('click', initQuestionSetFeedback);\n reviewAnswersConfirmationView.removeView(true);\n _currentView = null;\n completeQuestionSetEventDispatch();\n };\n var initQuestionSetFeedback = function initQuestionSetFeedback() {\n $(reviewAnswersConfirmationView.getContinueControlRef()).off('click', continueVideoHandler);\n $(reviewAnswersConfirmationView.getReviewControlRef()).off('click', initQuestionSetFeedback);\n reviewAnswersConfirmationView.removeView(false);\n _currentView = null;\n createQuestionSetFeedbackView();\n };\n var createReviewAnswersConfirmationView = function createReviewAnswersConfirmationView() {\n var numberCorrectText = null;\n var percentCorrectText = null;\n var numberIncorrectText = null;\n var percentIncorrectText = null;\n var numberCorrect = 0;\n var numberIncorrect = 0;\n var numberUngradable = 0;\n var possibleCorrect = _quizModel.questionSets[_currentQuestionSetIndex].numberGradedQuestions;\n if (possibleCorrect > 0) {\n numberCorrect = _quizModel.questionSets[_currentQuestionSetIndex].numberCorrectQuestions;\n numberIncorrect = possibleCorrect - numberCorrect;\n numberUngradable = _quizModel.questionSets[_currentQuestionSetIndex].numberUngradedQuestions;\n numberCorrectText = localizationStrings.getPlayerString(playerStringNames.txtCorrect).replace('{{numberCorrect}}', numberCorrect);\n percentCorrectText = Math.round(100 * (numberCorrect / possibleCorrect)) + '%';\n numberIncorrectText = localizationStrings.getPlayerString(playerStringNames.txtIncorrect).replace('{{numberIncorrect}}', numberIncorrect);\n percentIncorrectText = Math.round(100 * (numberIncorrect / possibleCorrect)) + '%';\n }\n if (numberUngradable === 1) {\n questionSetReviewStatusView.setUngradeableDetails(numberUngradable + localizationStrings.getPlayerString(playerStringNames.accessBtnWasNotGraded));\n } else {\n questionSetReviewStatusView.setUngradeableDetails(numberUngradable + localizationStrings.getPlayerString(playerStringNames.accessBtnWereNotGraded));\n }\n var markup = reviewAnswersConfirmationView.getViewMarkup(numberCorrectText, percentCorrectText, numberIncorrectText, percentIncorrectText, localizationStrings.getPlayerString(playerStringNames.txtContinue), localizationStrings.getPlayerString(playerStringNames.txtReviewAnswer));\n\n // add view template\n $container.append(markup);\n _currentView = reviewAnswersConfirmationView;\n $(_currentView.getContinueControlRef()).on('click', continueVideoHandler);\n $(_currentView.getReviewControlRef()).on('click', initQuestionSetFeedback);\n\n // fade in view\n _currentView.showView();\n updateViewBottom();\n if (_pointAt !== null) {\n _currentView.pointAt(_pointAt);\n }\n };\n var createQuestionSetReviewStatusView = function createQuestionSetReviewStatusView() {\n var numberCorrect = _quizModel.questionSets[_currentQuestionSetIndex].numberCorrectQuestions;\n var possibleCorrect = _quizModel.questionSets[_currentQuestionSetIndex].numberGradedQuestions;\n var numberUngradable = _quizModel.questionSets[_currentQuestionSetIndex].numberUngradedQuestions;\n questionSetReviewStatusView.setGradeableDetails(numberCorrect + localizationStrings.getPlayerString(playerStringNames.accessBtnCorrectOutOf) + possibleCorrect + localizationStrings.getPlayerString(playerStringNames.accessBtnGradedQuestions));\n if (numberUngradable === 1) {\n questionSetReviewStatusView.setUngradeableDetails(numberUngradable + localizationStrings.getPlayerString(playerStringNames.accessBtnWasNotGraded));\n } else {\n questionSetReviewStatusView.setUngradeableDetails(numberUngradable + localizationStrings.getPlayerString(playerStringNames.accessBtnWereNotGraded));\n }\n var markup = questionSetReviewStatusView.getViewMarkup();\n $container.append(markup);\n _currentView = questionSetReviewStatusView;\n $(questionSetReviewStatusView.getHideAnswersControlRef()).on('click', hideQuizStatus);\n $(questionSetReviewStatusView.getShowAnswersControlRef()).on('click', initFeedbackFromReviewStatusView);\n questionSetReviewStatusView.showView();\n _currentView.updateViewPosition();\n };\n var initFeedbackFromReviewStatusView = function initFeedbackFromReviewStatusView() {\n $(questionSetReviewStatusView.getHideAnswersControlRef()).off('click', hideQuizStatus);\n $(questionSetReviewStatusView.getShowAnswersControlRef()).off('click', initFeedbackFromReviewStatusView);\n questionSetReviewStatusView.removeView(false);\n _currentView = null;\n createQuestionSetFeedbackView();\n };\n var hideQuizStatus = function hideQuizStatus() {\n $container.trigger(events.Quizzing.HideQuiz);\n _currentView.hideView();\n };\n var onRationaleActionHandler = function onRationaleActionHandler(e, data) {\n if (e.type === events.Quizzing.RationaleActionLocation) {\n urlService.openUrl(data.location, '_blank');\n } else if (e.type === events.Quizzing.RationaleActionJumpToTime) {\n $container.off(events.Quizzing.CloseQuestionSetView, onCloseQuestionSetView);\n $container.off(events.Quizzing.SubmitQuestionSet, onSubmit);\n $container.off(events.Quizzing.RationaleActionLocation, onRationaleActionHandler);\n $container.off(events.Quizzing.RationaleActionJumpToTime, onRationaleActionHandler);\n questionSetCompleteHandler();\n }\n };\n var onCloseQuestionSetView = function onCloseQuestionSetView() {\n $container.off(events.Quizzing.CloseQuestionSetView, onCloseQuestionSetView);\n $container.off(events.Quizzing.SubmitQuestionSet, onSubmit);\n $container.off(events.Quizzing.RationaleActionLocation, onRationaleActionHandler);\n $container.off(events.Quizzing.RationaleActionJumpToTime, onRationaleActionHandler);\n $container.trigger(events.Quizzing.Submitted);\n if (_quizModel.questionSets[_currentQuestionSetIndex].displayFeedback) {\n if (_mediaIsImage) {\n $container.trigger(events.Quizzing.TransitionImageQuizToAnswers);\n _currentView.removeView(true);\n createQuestionSetReviewStatusView();\n } else {\n _currentView.removeView(false);\n createReviewAnswersConfirmationView();\n }\n } else {\n questionSetCompleteHandler();\n }\n };\n var submitResults = function submitResults() {\n dispatchStatusEvent(localizationStrings.getPlayerString(playerStringNames.txtSubmittingAnswers));\n quizService.addEventListener(events.Network.Retrying, onNetworkRetryEvent);\n if (_quizModel.useQuizApi) {\n var data = _quizModel.getApiDataForQuestionSet(_currentQuestionSetIndex);\n return quizService.submitQuestionSet(data).then(function (results) {\n quizService.removeEventListener(events.Network.Retrying, onNetworkRetryEvent);\n $container.trigger(events.Quizzing.HideSubmissionRetryMessage);\n if (!_questionGrader.doesLocalGrading && results === undefined) {\n return Promise$1.reject('Failed to get results for question set submission');\n }\n return results;\n });\n }\n return Promise$1.resolve();\n };\n var gradeResults = function gradeResults(results) {\n if (!_questionGrader.doesLocalGrading && results) {\n _questionGrader.processQuestionSetResults(_quizModel.questionSets[_currentQuestionSetIndex], results);\n } else {\n _questionGrader.gradeQuestionSet(_quizModel.questionSets[_currentQuestionSetIndex]);\n }\n return Promise$1.resolve();\n };\n var onGradingComplete = function onGradingComplete() {\n if (_quizModel.useScorm) {\n submitScoreToScormController();\n }\n if (_quizModel.questionSets[_currentQuestionSetIndex].usesRationale) {\n $container.trigger(events.Quizzing.HideLoadingMessage);\n _currentView.showFeedbackForCurrentQuestion();\n } else {\n onCloseQuestionSetView();\n }\n };\n var onSubmit = function onSubmit() {\n submitResults().then(gradeResults).then(onGradingComplete)[\"catch\"](apiErrorEventHandler);\n };\n var createQuestionSetView = function createQuestionSetView(needOverlay) {\n var questionSetView = QuestionSetView$1.create($container, _quizModel.questionSets[_currentQuestionSetIndex], needOverlay, _mediaIsImage, false, mediaView.currentTime);\n if (_quizModel.questionSets[_currentQuestionSetIndex].usesRationale) {\n $container.on(events.Quizzing.SubmitQuestionSet, onSubmit);\n $container.on(events.Quizzing.CloseQuestionSetView, onCloseQuestionSetView);\n $container.on(events.Quizzing.RationaleActionLocation, onRationaleActionHandler);\n $container.on(events.Quizzing.RationaleActionJumpToTime, onRationaleActionHandler);\n } else {\n $container.on(events.Quizzing.SubmitQuestionSet, onSubmit);\n }\n _currentView = questionSetView;\n _currentView.showView();\n $container.trigger(events.Quizzing.ShowQuestionSetView);\n return questionSetView;\n };\n var reviewHandler = function reviewHandler() {\n _currentView.removeView(true);\n _currentView = null;\n $container.trigger(events.Quizzing.Review);\n hotkeyService.enableHotkeys();\n };\n var onViewRemove = function onViewRemove() {\n if (_currentQuestionSetIndex < _numberQuestionSets) {\n createQuestionSetView(false);\n }\n };\n var confirmHandler = function confirmHandler() {\n _currentView.removeView();\n _currentView = null;\n onViewRemove();\n };\n var createConfirmView = function createConfirmView() {\n var reviewText;\n if (enforceLinearAssessment) {\n reviewText = localizationStrings.getPlayerString(playerStringNames.txtReview);\n } else {\n reviewText = localizationStrings.getPlayerString(playerStringNames.txtContinue);\n }\n var markup = questionSetConfirmationView.getViewMarkup(reviewText, localizationStrings.getPlayerString(playerStringNames.txtAnswerQuestion));\n $container.append(markup);\n _currentView = questionSetConfirmationView;\n updateViewBottom();\n if (_quizModel.hideReplay === true) {\n $(questionSetConfirmationView.getReviewControlRef()).hide();\n }\n $(questionSetConfirmationView.getReviewControlRef()).on('click', reviewHandler);\n $(questionSetConfirmationView.getConfirmControlRef()).on('click', confirmHandler);\n questionSetConfirmationView.showView();\n questionSetConfirmationView.updateViewPosition();\n $container.trigger(events.Quizzing.ShowStartQuizPrompt);\n };\n var destroyQuizSetupView = function destroyQuizSetupView() {\n if (_quizSetupView) {\n $container.off(events.Quizzing.BeginClicked, beginQuizHandler);\n $container.off(events.Quizzing.SkipClicked, skipQuizHandler);\n _quizSetupView.destroy();\n if (_quizSetupView.$view) {\n _quizSetupView.$view.remove();\n }\n _quizSetupView = null;\n }\n };\n var beginQuizHandler = function beginQuizHandler(e, eventData) {\n e.preventDefault();\n destroyQuizSetupView();\n hotkeyService.enableHotkeys();\n if (eventData && eventData.firstName) {\n _quizUserDetails = {\n firstName: eventData.firstName,\n lastName: eventData.lastName,\n email: eventData.email\n };\n }\n _resolveQuizSetup();\n if (_shouldReportViewedOnPageLoad) {\n init();\n } else {\n $container.trigger(events.Quizzing.Begin);\n }\n };\n var skipQuizHandler = function skipQuizHandler(e) {\n e.preventDefault();\n _quizEnabled = false;\n destroyQuizSetupView();\n _resolveQuizSetup();\n if (!_shouldReportViewedOnPageLoad) {\n $container.trigger(events.Quizzing.Skip);\n }\n };\n var createSetupView = function createSetupView() {\n beforeAfterPlayControlsView && beforeAfterPlayControlsView.hideVideoClickToPlayLink();\n\n // disable the TOC hotkey, it interferes\n hotkeyService.disableHotkeys();\n _quizSetupView = QuizSetupView$1.create($container);\n $container.on(events.Quizzing.BeginClicked, beginQuizHandler);\n if (_quizModel.allowSkipQuiz && !playerConfiguration.getDisableContinueWithoutQuestions()) {\n $container.on(events.Quizzing.SkipClicked, skipQuizHandler);\n } else {\n _quizSetupView.hideSkipButton();\n }\n $container.trigger(events.Quizzing.ShowQuizSetup);\n };\n var updateViewBottom = function updateViewBottom() {\n if (_currentView && _currentView.setBottomOffset) {\n _currentView.setBottomOffset(_bottomOffset);\n _currentView.updateViewPosition();\n }\n };\n var startQuizApiInstance = function startQuizApiInstance(firstName, lastName, email) {\n if (_quizModel) {\n $container.trigger(events.Quizzing.ShowQuizBar);\n return quizService.startQuizInstance(_quizModel, firstName, lastName, email, playerConfiguration).then(function (responseData) {\n _quizModel.quizInstanceID = responseData.quizInstanceId;\n $container.trigger(events.Quizzing.CreatedInstance);\n })[\"catch\"](function (data) {\n apiErrorEventHandler();\n return Promise$1.reject(data);\n });\n }\n return Promise$1.resolve();\n };\n var apiErrorEventHandler = function apiErrorEventHandler(response) {\n _quizEnabled = false;\n $container.trigger(events.Quizzing.HideLoadingMessage);\n if (response && response.status === statusCodes.UnprocessableEntity) {\n var errorID = response.responseJSON && response.responseJSON.errorId ? response.responseJSON.errorId : null;\n if (errorID && errorID === quizServiceErrorIds.badDefinition) {\n $container.trigger(events.Quizzing.QuizBadDefinition);\n } else {\n $container.trigger(events.Quizzing.QuizIsOutOfDate);\n }\n } else {\n $container.trigger(events.Quizzing.Error);\n }\n };\n var displaySetupView = function displaySetupView() {\n return _quizModel && _quizModel.quizID && !_mediaIsImage && _quizEnabled && _quizModel.requireUserId && !playerConfiguration.getIsUserIdentified();\n };\n var gatherSetupIfNeeded = function gatherSetupIfNeeded() {\n if (displaySetupView()) {\n createSetupView();\n }\n };\n var getLastStatusMessage = function getLastStatusMessage() {\n return _lastStatusMessage;\n };\n var removeSubmissionRetryMessage = function removeSubmissionRetryMessage() {\n if (_retrySubmissionMessageDisplayBar === null) {\n return;\n }\n _retrySubmissionMessageDisplayBar.remove();\n _retrySubmissionMessageDisplayBar = null;\n };\n var showSubmissionRetryMessage = function showSubmissionRetryMessage() {\n if (_retrySubmissionMessageDisplayBar !== null) {\n return;\n }\n _retrySubmissionMessageDisplayBar = MessageBarView$1.create($container, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.txtQuizErrorMessage));\n };\n var showQuizIsOutOfDateMessage = function showQuizIsOutOfDateMessage() {\n _quizOutOfDateMessageView = MessageBarView$1.create($container, messageBarType.warning, localizationStrings.getPlayerString(playerStringNames.txtQuizOutOfDateMessage), localizationStrings.getPlayerString(playerStringNames.txtQuizOutOfDateRefreshButtonText), function () {\n window.location.reload();\n });\n };\n var showQuizBadDefinitionMessage = function showQuizBadDefinitionMessage() {\n _quizBadDefinitionMessageView = MessageBarView$1.create($container, messageBarType.warning, localizationStrings.getPlayerString(playerStringNames.txtQuizBadDefinitionMessage));\n };\n var displayNextQuestionSet = function displayNextQuestionSet() {\n if (_currentQuestionSetIndex < _numberQuestionSets) {\n return createQuestionSetView(true);\n }\n };\n var hasMultipleQuestionSets = function hasMultipleQuestionSets() {\n return _numberQuestionSets > 1;\n };\n var hasQuizQuestions = function hasQuizQuestions() {\n return _numberQuestionSets > 0;\n };\n var findQuestionSet = function findQuestionSet(time) {\n var activeQuestionSetId = -1;\n var markerTime = -1;\n if (!playerConfiguration.ignoreQuizQuestions) {\n var markers = _quizModel.questionSetMarkerTimes;\n var numberMarkers = markers.length;\n for (var i = 0; i < numberMarkers; i++) {\n if (!markers[i].completed && (enforceLinearAssessment && markers[i].startTime <= time && !markers[i].canSeekPast || markers[i].rangeStart <= time && time <= markers[i].rangeEnd)) {\n activeQuestionSetId = markers[i].questionSetIndex;\n markerTime = markers[i].startTime;\n break;\n }\n }\n }\n return {\n id: activeQuestionSetId,\n markerTime: markerTime\n };\n };\n var findPrevMarkerTimeForMarker = function findPrevMarkerTimeForMarker(questionSetIndex) {\n return _quizModel.getPreviousMarkerTimeForMarker(questionSetIndex);\n };\n var updatePercentWatchedForQuestionSet = function updatePercentWatchedForQuestionSet(questionSetId, percentWatched) {\n _quizModel.questionSets[questionSetId].percentOfVideoSegmentWatched = percentWatched;\n };\n var displayConfirm = function displayConfirm(questionSetIndex) {\n if (!_currentView) {\n _currentQuestionSetIndex = questionSetIndex;\n hotkeyService.disableHotkeys();\n\n // no need to display confirm view if we are in the beginning of the video and force linear is on or if we are in the middle of a rationale quiz\n if (enforceLinearAssessment && _quizModel.questionSets[questionSetIndex].startTime <= _quizModel.minMarkerTimeDiff || _quizModel.questionSets[questionSetIndex].inProgress) {\n createQuestionSetView(true);\n } else {\n createConfirmView();\n }\n }\n };\n var showQuiz = function showQuiz() {\n if (_currentView === null) {\n createQuestionSetView(true);\n } else {\n _currentView.showView();\n }\n };\n var hideQuiz = function hideQuiz() {\n _currentView.hideView();\n };\n var pointViewAt = function pointViewAt(xPos) {\n _pointAt = xPos;\n if (_currentView) {\n if (_currentView.pointAt) {\n _currentView.pointAt(_pointAt);\n }\n updateViewBottom();\n }\n };\n var setViewControlBarOffset = function setViewControlBarOffset(bottom) {\n _bottomOffset = bottom + BOTTOM_PADDING;\n updateViewBottom();\n };\n var setQuestionGrader = function setQuestionGrader(grader) {\n switch (grader) {\n case questionGrader.FATHOM:\n {\n _questionGrader = fathomGrader;\n break;\n }\n case questionGrader.XMP:\n {\n _questionGrader = xmpGrader;\n break;\n }\n default:\n throw new Error('Grader type not recognized');\n }\n };\n var startTrackingProgress = function startTrackingProgress() {\n if (_shouldReportViewedOnPageLoad) {\n return Promise$1.resolve();\n }\n return quizService.getAnalyticsRate().then(function (results) {\n _progressTracker = QuizProgressTracker$1.create(getMediaElement(), results.analyticsSampleRate, results.reportingRate);\n return Promise$1.resolve();\n });\n };\n var forceProgressUpdate = function forceProgressUpdate(sampleRateInMilliseconds, segmentsCompleted) {\n return quizService.sendProgress(sampleRateInMilliseconds, segmentsCompleted);\n };\n var onMediaFirstPlayerHandler = function onMediaFirstPlayerHandler() {\n init();\n };\n var onMediaControlsReady = function onMediaControlsReady() {\n // do not listen to another media controls ready event\n $container.off(events.Player.MediaControlsReady, onMediaControlsReady);\n setViewControlBarOffset(CONTROL_BAR_HEIGHT);\n if (!_shouldReportViewedOnPageLoad && !_mediaIsImage && _quizModel.useQuizApi && _quizModel.requireUserId && !playerConfiguration.getIsUserIdentified() && !playerConfiguration.ignoreQuizQuestions) {\n createSetupView();\n } else {\n _resolveQuizSetup();\n }\n };\n var bindToEvents = function bindToEvents() {\n $container.on(events.Media.FirstPlay, onMediaFirstPlayerHandler);\n $container.on(events.Player.MediaControlsReady, onMediaControlsReady);\n $container.on(events.Quizzing.ShowSubmissionRetryMessage, showSubmissionRetryMessage);\n $container.on(events.Quizzing.HideSubmissionRetryMessage, removeSubmissionRetryMessage);\n $container.on(events.Quizzing.QuizIsOutOfDate, showQuizIsOutOfDateMessage);\n $container.on(events.Quizzing.QuizBadDefinition, showQuizBadDefinitionMessage);\n };\n var destroy = function destroy() {\n destroyQuizSetupView();\n if (_currentView) {\n _currentView.removeView(true);\n _currentView = null;\n }\n quizService.abortPendingRequests();\n if ($container) {\n $container.off(events.Media.FirstPlay, onMediaFirstPlayerHandler);\n $container.off(events.Player.MediaControlsReady, onMediaControlsReady);\n $container.off(events.Quizzing.ShowSubmissionRetryMessage, showSubmissionRetryMessage);\n $container.off(events.Quizzing.HideSubmissionRetryMessage, removeSubmissionRetryMessage);\n $container.off(events.Quizzing.QuizIsOutOfDate, showQuizIsOutOfDateMessage);\n $container.off(events.Quizzing.QuizBadDefinition, showQuizBadDefinitionMessage);\n $container.off(events.Quizzing.SubmitQuestionSet, onSubmit);\n $container.off(events.Quizzing.CloseQuestionSetView, onCloseQuestionSetView);\n $container.off(events.Quizzing.RationaleActionLocation, onRationaleActionHandler);\n $container.off(events.Quizzing.RationaleActionJumpToTime, onRationaleActionHandler);\n }\n _progressTracker && _progressTracker.destroy();\n removeSubmissionRetryMessage();\n _quizOutOfDateMessageView && _quizOutOfDateMessageView.remove();\n _quizBadDefinitionMessageView && _quizBadDefinitionMessageView.remove();\n _quizModel = null;\n _numberQuestionSets = 0;\n _currentQuestionSetIndex = 0;\n _bottomOffset = 0;\n _pointAt = null;\n _quizEnabled = true;\n _quizReady = false;\n _mediaIsImage = false;\n _lastStatusMessage = '';\n _questionGrader = null;\n _quizSetupPromise = null;\n };\n var init = function init() {\n if (_quizModel.useQuizApi) {\n var startInstancePromise;\n if (_quizUserDetails) {\n startInstancePromise = startQuizApiInstance(_quizUserDetails.firstName, _quizUserDetails.lastName, _quizUserDetails.email);\n } else {\n startInstancePromise = startQuizApiInstance();\n }\n startInstancePromise[\"catch\"](function (e) {\n log.logException('Failed to initialize quiz - ' + e);\n });\n } else {\n $container.trigger(events.Quizzing.CreatedInstance);\n }\n _quizReady = true;\n };\n var simpleInit = function simpleInit() {\n if (!displaySetupView()) {\n startQuizApiInstance()[\"catch\"](function (e) {\n log.logException('Failed to initialize quiz - ' + e);\n });\n }\n };\n var populateQuizModel = function populateQuizModel(suspendedQuizData) {\n _quizModel.populateQuiz(suspendedQuizData);\n submitScoreToScormController();\n };\n var setQuizModel = function setQuizModel(newQuizModel) {\n _quizModel = newQuizModel;\n _numberQuestionSets = _quizModel.numberQuestionSets;\n scormController$1.quizModel = _quizModel;\n };\n\n // begin initialization of quiz controller\n _quizSetupPromise = new Promise$1(function (resolveQuizSetup) {\n _resolveQuizSetup = resolveQuizSetup;\n });\n setQuizModel(quizModel);\n bindToEvents();\n if (playerConfiguration.getFathomId()) {\n setQuestionGrader(questionGrader.FATHOM);\n } else {\n setQuestionGrader(questionGrader.XMP);\n }\n if (_shouldReportViewedOnPageLoad) {\n gatherSetupIfNeeded();\n simpleInit();\n forceProgressUpdate(100, [0]);\n }\n var fullControlsAreShownOnPageLoad = playerConfiguration.getPreload() === preloadOptions.metadata && mediaView.type !== mediaViewType.youtube;\n if (fullControlsAreShownOnPageLoad) {\n onMediaControlsReady();\n }\n return Object.defineProperties({\n destroy: destroy,\n hasMultipleQuestionSets: hasMultipleQuestionSets,\n getLastStatusMessage: getLastStatusMessage,\n displayNextQuestionSet: displayNextQuestionSet,\n findQuestionSet: findQuestionSet,\n findPrevMarkerTimeForMarker: findPrevMarkerTimeForMarker,\n updatePercentWatchedForQuestionSet: updatePercentWatchedForQuestionSet,\n displayConfirm: displayConfirm,\n showQuiz: showQuiz,\n hideQuiz: hideQuiz,\n pointViewAt: pointViewAt,\n startTrackingProgress: startTrackingProgress,\n forceProgressUpdate: forceProgressUpdate,\n populateQuizModel: populateQuizModel\n }, {\n quizIsSetupPromise: {\n get: function get() {\n return _quizSetupPromise;\n }\n },\n quizEnabled: {\n get: function get() {\n return _quizEnabled;\n },\n set: function set(value) {\n _quizEnabled = value;\n }\n },\n quizReady: {\n get: function get() {\n return _quizReady;\n }\n },\n hasQuiz: {\n get: function get() {\n return _quizModel && _quizModel.quizID;\n }\n },\n viewIsOpen: {\n get: function get() {\n return _currentView !== null;\n }\n },\n mediaIsImage: {\n set: function set(mediaIsImage) {\n _mediaIsImage = mediaIsImage;\n },\n get: function get() {\n return _mediaIsImage;\n }\n },\n quizModel: {\n get: function get() {\n return _quizModel;\n },\n set: setQuizModel\n },\n hasQuizQuestions: {\n get: hasQuizQuestions\n }\n });\n};\nvar QuizController$1 = {\n /**\n * Factory method that returns a new QuizController.\n * @function create\n * @memberof TSC.QuizController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.Quiz} quizModel\n * @param {TSC.BeforeAfterPlayControlsView} beforeAfterPlayControlsView\n * @param {boolean} enforceLinearAssessment\n * @return new QuizController instance\n */\n create: QuizController\n};\n\nvar SEEK_DELAY_IN_MILLISECONDS = 100;\n\n/**\n * @memberof TSC\n * @class QuizEventController\n * @classdesc Controller for managing quiz events\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.QuizController} quizController\n * @param {TSC.ProgressBarControlView} progressBarControlView\n * @param {boolean} enforceLinearAssessment\n * @param {TSC.IoOverlayView} ioOverlayView - IO Overlay View used to show the user messages\n *\n */\nvar QuizEventController = function QuizEventController($container, mediaView, quizController, progressBarControlView, enforceLinearAssessment, ioOverlayView) {\n if (!quizController) {\n throw new Error('Attempted to create quiz event controller with no quiz controller');\n }\n var _lastQuestionSetId;\n var _lastQuestionSetMarkerTime;\n var _quizzingErrorMessageBarView;\n var _isScrubbing = false;\n var updateQuizPointAtPosition = function updateQuizPointAtPosition() {\n if (!progressBarControlView) {\n return;\n }\n var playerXOffset = $container.offset().left;\n var markerXPosition = progressBarControlView.getXPositionForQuestionSetMarker(_lastQuestionSetId);\n var pointAtXPosition = markerXPosition - playerXOffset;\n quizController.pointViewAt(pointAtXPosition);\n };\n var seekToTime = function seekToTime(seekTime, playAfterSeek) {\n var safeSeekTime = videoApiUtils.getSafeSeekTime(mediaView.mediaElement, seekTime);\n $container.trigger(events.Media.SeekToTime, {\n time: safeSeekTime,\n playAfterSeek: playAfterSeek\n });\n };\n var updateQuizzing = function updateQuizzing(currentTimeInMilliseconds) {\n if (!quizController.quizEnabled || _isScrubbing) {\n return;\n }\n var numberMillisecondsInSecond = 1000;\n var qs = quizController.findQuestionSet(currentTimeInMilliseconds);\n if (qs.id < 0) {\n _lastQuestionSetId = -1;\n return;\n }\n if (_lastQuestionSetId !== qs.id) {\n viewHelper.saveActiveElement();\n // make sure control bar is shown up and auto hide is disabled.\n $container.trigger(events.Controls.Disable);\n $container.trigger(events.Controls.HideToc);\n _lastQuestionSetId = qs.id;\n _lastQuestionSetMarkerTime = qs.markerTime / numberMillisecondsInSecond;\n $container.playerState.pausedForQuiz = true;\n mediaView.mediaElement.pause();\n $container.trigger(events.Quizzing.Paused);\n\n // Try pausing and seeking YouTube until player confirms the video is in the correct position\n // Fixes issues with YouTube video playing in the background\n if (mediaView.type === mediaViewType.youtube) {\n var intervalId = setInterval(function () {\n mediaView.mediaElement.pause();\n seekToTime(_lastQuestionSetMarkerTime, false);\n if (mediaView.mediaElement.currentTime.toFixed(4) === _lastQuestionSetMarkerTime.toFixed(4) && mediaView.mediaElement.paused) {\n clearInterval(intervalId);\n }\n }, SEEK_DELAY_IN_MILLISECONDS);\n } else {\n setTimeout(function () {\n seekToTime(_lastQuestionSetMarkerTime, false);\n }, SEEK_DELAY_IN_MILLISECONDS);\n }\n quizController.displayConfirm(qs.id);\n updateQuizPointAtPosition();\n if (videoAnalytics.isEnabled()) {\n if (!isNaN(qs.markerTime) && videoAnalytics.isPercentWatchedInitialized()) {\n videoAnalytics.markTimeWatched(qs.markerTime);\n } else {\n log.logMessage('Player-view: videoAnalytics percent watched not initialized, or Quiz Marker time is NaN (' + qs.markerTime + ')');\n }\n var percentWatched = videoAnalytics.getPercentageWatchedForVideoSegment(quizController.findPrevMarkerTimeForMarker(qs.id), qs.markerTime);\n quizController.updatePercentWatchedForQuestionSet(_lastQuestionSetId, percentWatched);\n }\n }\n };\n var quizEventHandler = function quizEventHandler(event, data) {\n switch (event.type) {\n case events.Quizzing.ShowStartQuizPrompt:\n case events.Quizzing.ShowQuestionSetView:\n $container.trigger(events.Quizzing.MaximizeUI);\n $container.trigger(events.Quizzing.UIVisible);\n break;\n case events.Quizzing.Complete:\n case events.Quizzing.Review:\n $container.trigger(events.Quizzing.UIHidden);\n $container.trigger(events.Controls.Enable);\n viewHelper.focusPreviousElement();\n progressBarControlView.updateQuizMarkers();\n $container.playerState.pausedForQuiz = false;\n if (event.type === events.Quizzing.Review && enforceLinearAssessment) {\n var prevMarkerTimeInSeconds = quizController.findPrevMarkerTimeForMarker(_lastQuestionSetId) / 1000;\n _lastQuestionSetId = -1;\n seekToTime(prevMarkerTimeInSeconds, true);\n } else {\n mediaView.mediaElement.play();\n }\n break;\n case events.Quizzing.Begin:\n progressBarControlView.updateQuizMarkers();\n $container.trigger(events.Quizzing.QuizSetupComplete);\n break;\n case events.Quizzing.Skip:\n progressBarControlView.setShouldRespectQuizMarkers(false);\n $container.trigger(events.Quizzing.QuizSetupComplete);\n break;\n case events.Quizzing.Error:\n _quizzingErrorMessageBarView = MessageBarView$1.create($container, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.txtVideoQuizNetworkErrorMessage), localizationStrings.getPlayerString(playerStringNames.close));\n break;\n case events.Quizzing.Status:\n ioOverlayView.displayMessage(data.message);\n break;\n case events.Quizzing.HideLoadingMessage:\n case events.Quizzing.Submitted:\n ioOverlayView.hideView();\n break;\n case events.Quizzing.CreatedInstance:\n progressBarControlView && progressBarControlView.updateQuizMarkers();\n if (quizController.hasQuiz && quizController.quizModel.quizInstanceID) {\n quizController.startTrackingProgress();\n var eventLabel = 'QIID_' + quizController.quizModel.quizInstanceID;\n mediaView.playbackQualityMetrics && mediaView.playbackQualityMetrics.setEventLabel(eventLabel);\n }\n $container.trigger(events.Quizzing.UIHidden);\n break;\n case events.Quizzing.RationaleActionJumpToTime:\n var jumpToTimeInSeconds = data.jumpToTime / 1000;\n progressBarControlView.allowSkipQuestionSetMarkersBeforeTime(jumpToTimeInSeconds);\n seekToTime(jumpToTimeInSeconds);\n break;\n }\n };\n var onLoadedMetadata = function onLoadedMetadata() {\n // check to see if quiz exists and it is ready to rumble\n if (!quizController.hasQuiz || quizController.hasQuiz && (!quizController.quizEnabled || quizController.quizReady)) {\n ioOverlayView.hideView();\n } else {\n // update overlay with status of quiz code\n var lastStatusMessage = quizController.getLastStatusMessage();\n if (lastStatusMessage) {\n mediaView.mediaElement.pause();\n ioOverlayView.displayMessage(lastStatusMessage);\n }\n }\n };\n var onVideoTimeUpdate = function onVideoTimeUpdate() {\n updateQuizzing(mediaView.currentTimeInMilliseconds);\n };\n var onSeeked = function onSeeked() {\n updateQuizzing(mediaView.currentTimeInMilliseconds);\n };\n var onVideoControlsVisible = function onVideoControlsVisible() {\n progressBarControlView.updateQuizMarkers();\n };\n var onScrubbingStarted = function onScrubbingStarted() {\n _isScrubbing = true;\n };\n var onScrubbingEnded = function onScrubbingEnded() {\n _isScrubbing = false;\n onVideoTimeUpdate();\n };\n var bindToEvents = function bindToEvents() {\n mediaView.mediaWrapper.on('ratechange', onVideoTimeUpdate, false);\n mediaView.mediaWrapper.on('play', onVideoTimeUpdate, false);\n var eventsToBind = {\n loadedmetadata: onLoadedMetadata,\n timeupdate: onVideoTimeUpdate,\n seeked: onSeeked\n };\n mediaView.mediaWrapper.on(eventsToBind);\n $container.on(events.Controls.VideoControlsVisible, onVideoControlsVisible);\n $container.on(events.Controls.PlayerResize, updateQuizPointAtPosition);\n $container.on(events.Quizzing.Complete, quizEventHandler);\n $container.on(events.Quizzing.Review, quizEventHandler);\n $container.on(events.Quizzing.Begin, quizEventHandler);\n $container.on(events.Quizzing.Skip, quizEventHandler);\n $container.on(events.Quizzing.Error, quizEventHandler);\n $container.on(events.Quizzing.Status, quizEventHandler);\n $container.on(events.Quizzing.SubmittingInstance, quizEventHandler);\n $container.on(events.Quizzing.Submitted, quizEventHandler);\n $container.on(events.Quizzing.CreatedInstance, quizEventHandler);\n $container.on(events.Quizzing.RationaleActionJumpToTime, quizEventHandler);\n $container.on(events.Quizzing.HideLoadingMessage, quizEventHandler);\n $container.on(events.Quizzing.ShowStartQuizPrompt, quizEventHandler);\n $container.on(events.Quizzing.ShowQuestionSetView, quizEventHandler);\n $container.on(events.Scrubbing.Started, onScrubbingStarted);\n $container.on(events.Scrubbing.Ended, onScrubbingEnded);\n };\n var unbindToEvents = function unbindToEvents() {\n mediaView.mediaWrapper.off('ratechange', onVideoTimeUpdate, false);\n mediaView.mediaWrapper.off('play', onVideoTimeUpdate, false);\n var eventsToBind = {\n loadedmetadata: onLoadedMetadata,\n timeupdate: onVideoTimeUpdate,\n seeked: onSeeked\n };\n mediaView.mediaWrapper.off(eventsToBind);\n $container.off(events.Controls.VideoControlsVisible, onVideoControlsVisible);\n $container.off(events.Controls.PlayerResize, updateQuizPointAtPosition);\n $container.off(events.Quizzing.Complete, quizEventHandler);\n $container.off(events.Quizzing.Review, quizEventHandler);\n $container.off(events.Quizzing.Begin, quizEventHandler);\n $container.off(events.Quizzing.Skip, quizEventHandler);\n $container.off(events.Quizzing.Error, quizEventHandler);\n $container.off(events.Quizzing.Status, quizEventHandler);\n $container.off(events.Quizzing.SubmittingInstance, quizEventHandler);\n $container.off(events.Quizzing.Submitted, quizEventHandler);\n $container.off(events.Quizzing.CreatedInstance, quizEventHandler);\n $container.off(events.Quizzing.RationaleActionJumpToTime, quizEventHandler);\n $container.off(events.Quizzing.HideLoadingMessage, quizEventHandler);\n $container.off(events.Quizzing.ShowStartQuizPrompt, quizEventHandler);\n $container.off(events.Quizzing.ShowQuestionSetView, quizEventHandler);\n $container.off(events.Scrubbing.Started, onScrubbingStarted);\n $container.off(events.Scrubbing.Ended, onScrubbingEnded);\n };\n var destroy = function destroy() {\n unbindToEvents();\n _quizzingErrorMessageBarView && _quizzingErrorMessageBarView.remove();\n };\n videoApiUtils.setQuizController(quizController);\n progressBarControlView && progressBarControlView.setShouldRespectQuizMarkers(quizController.quizModel && quizController.quizEnabled && !playerConfiguration.ignoreQuizQuestions);\n quizController.mediaIsImage = mediaView.type === mediaViewType.image;\n bindToEvents();\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar QuizEventController$1 = {\n /**\n * Factory method that returns a new QuizEventController.\n * @function create\n * @memberof TSC.QuizEventController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.QuizController} quizController\n * @param {TSC.ProgressBarControlView} progressBarControlView\n * @param {boolean} enforceLinearAssessment\n * @param {TSC.IoOverlayView} ioOverlayView - IO Overlay View used to show the user messages\n * @return new QuizEventController instance\n */\n create: QuizEventController\n};\n\nvar EVENT_PERCENT_WATCH_INC = 10;\nvar MAX_PERCENT = 100;\n\n/**\n * @memberof TSC\n * @class MediaAnalyticsController\n * @classdesc Controller for managing media analytics\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.MediaList} mediaList\n * @param {TSC.QuizController} quizController\n * @param {TSC.playerConfiguration} playerConfiguration\n */\nvar MediaAnalyticsController = function MediaAnalyticsController($container, mediaView, mediaList, quizController, playerConfiguration) {\n var _eventPlayTracking = true;\n var _eventLastPercentReported = 0;\n var doesSCORMModuleNeedToResumeLastTime = function doesSCORMModuleNeedToResumeLastTime() {\n return mediaView.supportsSCORM && playerConfiguration.isScormLesson && scormController$1.supportsResumeSession && scormController$1.initialVideoTimeInSeconds > 0;\n };\n var initVideoAnalytics = function initVideoAnalytics() {\n videoAnalytics.initPercentWatched(mediaView.mediaElement.duration * 1000);\n if (doesSCORMModuleNeedToResumeLastTime()) {\n resumeSCORMSession(scormController$1.initialVideoTimeInSeconds, scormController$1.initialVideoAnalyticsSnapshot);\n $container.trigger(events.Media.SeekToTime, {\n time: scormController$1.initialVideoTimeInSeconds,\n playAfterSeek: true\n });\n }\n };\n var updateAnalytics = function updateAnalytics(currentTimeInMilliseconds) {\n if (!mediaView.mediaElement.duration) {\n return;\n }\n if (!videoAnalytics.isEnabled()) {\n return;\n }\n if (!videoAnalytics.isPercentWatchedInitialized()) {\n initVideoAnalytics();\n }\n if (!isNaN(currentTimeInMilliseconds)) {\n videoAnalytics.markTimeWatched(currentTimeInMilliseconds);\n } else {\n log.logMessage('Player-view: currentTime is NaN (' + currentTimeInMilliseconds + ')');\n }\n var percentWatched = Math.round(videoAnalytics.getPercentageWatched() * 100);\n if (scormController$1.initialized) {\n scormController$1.submitVideoWatchedPercentage(0.01 * percentWatched, videoAnalytics.getCurrentPlayTime());\n }\n if (playerConfiguration.getTrackEvents()) {\n if (percentWatched >= _eventLastPercentReported + EVENT_PERCENT_WATCH_INC) {\n while (_eventLastPercentReported + EVENT_PERCENT_WATCH_INC <= percentWatched) {\n _eventLastPercentReported += EVENT_PERCENT_WATCH_INC;\n if (_eventLastPercentReported > MAX_PERCENT) {\n _eventLastPercentReported = MAX_PERCENT;\n }\n analyticsService.sendEvent(events.Analytics.VideoPercentViewed, 'Viewed: ' + _eventLastPercentReported + ' Percent');\n analyticsService.sendGA4Event(events.GA4.VideoPercentViewed, {\n percent_viewed: _eventLastPercentReported\n }); // eslint-disable-line\n }\n }\n }\n };\n var handleTimeUpdate = function handleTimeUpdate(currentTimeInMilliseconds) {\n if (videoAnalytics.isEnabled()) {\n updateAnalytics(currentTimeInMilliseconds);\n }\n };\n var onVideoTimeUpdate = function onVideoTimeUpdate() {\n handleTimeUpdate(mediaView.currentTimeInMilliseconds);\n };\n var onSeeked = function onSeeked() {\n handleTimeUpdate(mediaView.currentTimeInMilliseconds);\n };\n var onCanPlayVideo = function onCanPlayVideo() {\n if (videoAnalytics.isEnabled()) {\n videoAnalytics.setVideoLoadEndTime(new Date().getTime());\n if (playerConfiguration.getTrackEvents()) {\n var eventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n if (playerConfiguration.getAltLoadTimeAsSeconds()) {\n analyticsService.sendEvent(events.Analytics.VideoLoadingTimeInSeconds, eventAction, videoAnalytics.getVideoLoadTime() / 1000);\n analyticsService.sendGA4Event(events.GA4.VideoLoadingTimeInSeconds, {\n loading_duration: videoAnalytics.getVideoLoadTime() / 1000\n }); // eslint-disable-line\n } else {\n analyticsService.sendEvent(events.Analytics.VideoLoadingTime, eventAction, videoAnalytics.getVideoLoadTime());\n analyticsService.sendGA4Event(events.GA4.VideoLoadingTime, {\n loading_duration: videoAnalytics.getVideoLoadTime()\n }); // eslint-disable-line\n }\n }\n }\n mediaView.mediaWrapper.off('canplay', onCanPlayVideo);\n };\n var resetPlayStartAnalytics = function resetPlayStartAnalytics() {\n if (videoAnalytics.isEnabled()) {\n videoAnalytics.setVideoLoadStartTime(new Date().getTime());\n }\n if (playerConfiguration.getTrackEvents() && _eventPlayTracking) {\n _eventPlayTracking = false;\n var videoStartedEventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n analyticsService.sendEvent(events.Analytics.VideoStarted, videoStartedEventAction);\n analyticsService.sendEvent(events.Analytics.VideoPercentViewed, 'Viewed: 0 Percent');\n analyticsService.sendGA4Event(events.GA4.VideoStarted, null);\n analyticsService.sendGA4Event(events.GA4.VideoPercentViewed, {\n percent_viewed: 0\n }); // eslint-disable-line\n }\n };\n var onMediaEnd = function onMediaEnd(e, eventData) {\n if (eventData.isPlaybackEnded && playerConfiguration.getTrackEvents()) {\n analyticsService.sendEvent(events.Analytics.VideoFinishedAction, playerConfiguration.getEndActionParam());\n analyticsService.sendGA4Event(events.GA4.VideoFinishedAction, {\n finished_action: playerConfiguration.getEndActionParam()\n }); // eslint-disable-line\n }\n };\n var onVideoReplayHandler = function onVideoReplayHandler() {\n if (playerConfiguration.getTrackEvents()) {\n var eventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n analyticsService.sendEvent(events.Analytics.VideoReplay, eventAction);\n analyticsService.sendGA4Event(events.GA4.VideoReplay, null);\n }\n };\n var onMediaWrapperMediaEnd = function onMediaWrapperMediaEnd() {\n if (playerConfiguration.getTrackEvents()) {\n var eventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n analyticsService.sendEvent(events.Analytics.VideoFinished, eventAction);\n analyticsService.sendGA4Event(events.GA4.VideoFinished, null);\n }\n };\n var onOpenExternalLink = function onOpenExternalLink() {\n var eventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n analyticsService.sendEvent(events.Analytics.OpenExternalLinkView, eventAction);\n analyticsService.sendGA4Event(events.GA4.OpenExternalLinkView, null);\n };\n var onClickExternalLink = function onClickExternalLink() {\n var eventAction = playerConfiguration.getAltEventCategoryAsFilename() ? analyticsService.getCategory() : mediaList.currentMedia.uri;\n analyticsService.sendEvent(events.Analytics.OpenExternalLinkClick, eventAction);\n analyticsService.sendGA4Event(events.GA4.OpenExternalLinkClick, null);\n };\n var resumeSCORMSession = function resumeSCORMSession(initialVideoTimeInSeconds, initialVideoAnalyticsSnapshot) {\n videoAnalytics.populateVideoSegmentsWatch(initialVideoAnalyticsSnapshot);\n videoAnalytics.markTimeWatched(initialVideoTimeInSeconds * 1000);\n };\n var onStartedPlayback = function onStartedPlayback() {\n var quizRequiresAnalytics = quizController && quizController.hasQuiz && quizController.quizEnabled;\n var playerConfigurationRequiresAnalytics = playerConfiguration.getTrackEvents() || playerConfiguration.isScormLesson || playerConfiguration.getReportScormComplete() || quizRequiresAnalytics;\n var shouldTrackVideoAnalytics = !mediaList.isPlaylist && playerConfigurationRequiresAnalytics;\n if (shouldTrackVideoAnalytics) {\n videoAnalytics.setEnabled(true);\n }\n };\n var onPlayerInitialized = function onPlayerInitialized() {\n performanceWrapper.createMeasure(events.Timing.PlayerLoaded, events.Timing.PlayerLoaded);\n performanceWrapper.createMeasure(events.Timing.PlayerInitialized, events.Timing.PlayerInitialized);\n analyticsService.sendEvent(events.Analytics.ContentLoaded, mediaList.currentMedia.uri);\n analyticsService.sendGA4Event(events.GA4.PlayerInitialized, null);\n };\n var bindToEvents = function bindToEvents() {\n $container.on(events.Controls.StartedPlayback, onStartedPlayback);\n $container.on(events.Controls.PlayerInitialized, onPlayerInitialized);\n $container.on(events.Media.End, onMediaEnd);\n $container.on(events.Media.Replay, onVideoReplayHandler);\n $container.on(events.ExternalLinkView.Open, onOpenExternalLink);\n $container.on(events.ExternalLinkView.Clicked, onClickExternalLink);\n mediaView.mediaWrapper.on('ratechange', onVideoTimeUpdate, false);\n mediaView.mediaWrapper.on('play', onVideoTimeUpdate, false);\n var eventsToBind = {\n timeupdate: onVideoTimeUpdate,\n canplay: onCanPlayVideo,\n seeked: onSeeked,\n ended: onMediaWrapperMediaEnd\n };\n mediaView.mediaWrapper.on(eventsToBind);\n mediaView.mediaElement.addEventListener(events.Media.Play, resetPlayStartAnalytics);\n };\n var unbindToEvents = function unbindToEvents() {\n $container.off(events.Controls.StartedPlayback, onStartedPlayback);\n $container.off(events.Controls.PlayerInitialized, onPlayerInitialized);\n $container.off(events.Media.End, onMediaEnd);\n $container.on(events.Media.Replay, onVideoReplayHandler);\n $container.on(events.ExternalLinkView.Open, onOpenExternalLink);\n $container.on(events.ExternalLinkView.Clicked, onClickExternalLink);\n mediaView.mediaWrapper.off('ratechange', onVideoTimeUpdate, false);\n mediaView.mediaWrapper.off('play', onVideoTimeUpdate, false);\n var eventsToBind = {\n timeupdate: onVideoTimeUpdate,\n canplay: onCanPlayVideo,\n seeked: onSeeked,\n ended: onMediaWrapperMediaEnd\n };\n mediaView.mediaWrapper.off(eventsToBind);\n mediaView.mediaElement.removeEventListener(events.Media.Play, resetPlayStartAnalytics);\n };\n var destroy = function destroy() {\n unbindToEvents();\n };\n bindToEvents();\n if (mediaView.mediaWrapper.metadataReady) {\n mediaView.mediaWrapper.metadataReady.then(function () {\n return mediaView.mediaWrapper.canPlayReady.then(function () {\n onCanPlayVideo();\n });\n });\n }\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar MediaAnalyticsController$1 = {\n /**\n * Factory method that returns a new MediaAnalyticsController.\n * @function create\n * @memberof TSC.MediaAnalyticsController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.MediaList} mediaList\n * @param {TSC.QuizController} quizController\n * @param {TSC.playerConfiguration} playerConfiguration\n * @return new MediaAnalyticsController instance\n */\n create: MediaAnalyticsController\n};\n\nvar enterKeyCode = 13;\nvar spacebarKeyCode = 32;\n\n/**\n * @memberof TSC\n * @class PluginEventsController\n * @classdesc Controller for managing XMP features\n * @param {jQuery} $container - Smart Player main container jquery element\n *\n */\nvar PluginEventsController = function PluginEventsController($container) {\n var _$mediaPluginContainer = $container.find('.media-plugin-container');\n _$mediaPluginContainer.hide();\n var onMediaPluginContainerKeyHandler = function onMediaPluginContainerKeyHandler(e) {\n if (e.type === 'keydown' && (e.keyCode === enterKeyCode || e.keyCode === spacebarKeyCode)) {\n $container.trigger(events.Plugin.MediaAreaPluginKeyDown);\n } else if (e.type === 'keyup' && (e.keyCode === enterKeyCode || e.keyCode === spacebarKeyCode)) {\n $container.trigger(events.Plugin.MediaAreaPluginKeyUp);\n }\n };\n var onMediaPluginContainerMouseHandler = function onMediaPluginContainerMouseHandler(e) {\n if (e.type === 'mousedown') {\n $container.trigger(events.Plugin.MediaAreaPluginMouseDown);\n } else if (e.type === 'mouseup') {\n $container.trigger(events.Plugin.MediaAreaPluginMouseUp);\n }\n };\n var initMediaPlugins = function initMediaPlugins() {\n var pluginController = playerConfiguration.getPluginController();\n if (!pluginController) {\n return;\n }\n _$mediaPluginContainer.show();\n pluginController.initializePluginsForViewElement(supportedPluginViewElements.MEDIA, _$mediaPluginContainer);\n };\n var onPluginAdded = function onPluginAdded(eventName, data) {\n if (data.viewElementType === supportedPluginViewElements.MEDIA) {\n initMediaPlugins();\n }\n };\n var bindToEvents = function bindToEvents() {\n $container.on(events.Plugin.Added, onPluginAdded);\n _$mediaPluginContainer.on('mousedown', onMediaPluginContainerMouseHandler);\n _$mediaPluginContainer.on('mouseup', onMediaPluginContainerMouseHandler);\n _$mediaPluginContainer.on('keydown', onMediaPluginContainerKeyHandler);\n _$mediaPluginContainer.on('keyup', onMediaPluginContainerKeyHandler);\n };\n var unbindToEvents = function unbindToEvents() {\n $container.off(events.Plugin.Added, onPluginAdded);\n _$mediaPluginContainer.off('mousedown', onMediaPluginContainerMouseHandler);\n _$mediaPluginContainer.off('mouseup', onMediaPluginContainerMouseHandler);\n _$mediaPluginContainer.off('keydown', onMediaPluginContainerKeyHandler);\n _$mediaPluginContainer.off('keyup', onMediaPluginContainerKeyHandler);\n };\n var destroy = function destroy() {\n unbindToEvents();\n };\n bindToEvents();\n initMediaPlugins();\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar PluginEventsController$1 = {\n /**\n * Factory method that returns a new PluginEventsController.\n * @function create\n * @memberof TSC.PluginEventsController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @return new PluginEventsController instance\n */\n create: PluginEventsController\n};\n\n/**\n * @memberof TSC\n * @class MediaSessionController\n * @classdesc Media Session controller will interface media with system controls\n * @param {jQuery} $rootSmartPlayerElement\n * @param {HTMLVideoElement} mediaElement\n * @param {string} mediaTitle\n * @param {string} mediaPosterImageSrc\n */\nvar MediaSessionController = function MediaSessionController($rootSmartPlayerElement, mediaElement, mediaTitle, mediaPosterImageSrc) {\n var _windowRef = windowWrapper.getWindow();\n var _navigatorRef = windowWrapper.getNavigator();\n // This prevents unnecessary errors when Media Session API is not available.\n var _mediaSessionRef = _navigatorRef.mediaSession || {};\n _mediaSessionRef.setActionHandler = _navigatorRef.mediaSession.setActionHandler || function () {}; // eslint-disable-line\n _windowRef.MediaMetadata = _windowRef.MediaMetadata || function () {}; // eslint-disable-line\n\n var _metaDataSet = false;\n var setMetaData = function setMetaData() {\n _mediaSessionRef.metadata = new _windowRef.MediaMetadata({\n title: mediaTitle,\n artwork: [{\n src: mediaPosterImageSrc\n }]\n });\n _metaDataSet = true;\n updateMediaSessionState();\n };\n var updateMediaSessionState = function updateMediaSessionState() {\n if (!_metaDataSet) {\n return;\n }\n _mediaSessionRef.playbackState = mediaElement.paused ? 'paused' : 'playing';\n _mediaSessionRef.setPositionState({\n duration: mediaElement.duration,\n playbackRate: mediaElement.playbackRate,\n position: mediaElement.currentTime\n });\n };\n var onPlayAction = function onPlayAction() {\n if ($rootSmartPlayerElement.playerState.pausedForQuiz) {\n return;\n }\n mediaElement.play();\n };\n var onPauseAction = function onPauseAction() {\n if ($rootSmartPlayerElement.playerState.pausedForQuiz) {\n return;\n }\n mediaElement.pause();\n };\n var onSeekToAction = function onSeekToAction(details) {\n if ($rootSmartPlayerElement.playerState.pausedForQuiz) {\n return;\n }\n $rootSmartPlayerElement.trigger(events.Media.SeekToTime, {\n time: details.seekTime\n });\n };\n var bindEvents = function bindEvents() {\n mediaElement.addEventListener('loadedmetadata', setMetaData);\n mediaElement.addEventListener('playing', updateMediaSessionState);\n mediaElement.addEventListener('pause', updateMediaSessionState);\n mediaElement.addEventListener('durationchange', updateMediaSessionState);\n mediaElement.addEventListener('ratechange', updateMediaSessionState);\n mediaElement.addEventListener('timeupdate', updateMediaSessionState);\n _mediaSessionRef.setActionHandler('play', onPlayAction);\n _mediaSessionRef.setActionHandler('pause', onPauseAction);\n _mediaSessionRef.setActionHandler('seekto', onSeekToAction);\n };\n var destroy = function destroy() {\n mediaElement.removeEventListener('loadedmetadata', setMetaData);\n mediaElement.removeEventListener('playing', updateMediaSessionState);\n mediaElement.removeEventListener('pause', updateMediaSessionState);\n mediaElement.removeEventListener('durationchange', updateMediaSessionState);\n mediaElement.removeEventListener('ratechange', updateMediaSessionState);\n mediaElement.removeEventListener('timeupdate', updateMediaSessionState);\n };\n bindEvents();\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar isSupported = function isSupported() {\n return !!windowWrapper.getNavigator().mediaSession;\n};\nvar MediaSessionController$1 = {\n /**\n * Factory method that returns a new MediaSessionController object\n * @function create\n * @memberof TSC.MediaSessionController\n * @param {jQuery} $rootSmartPlayerElement\n * @param {HTMLVideoElement} mediaElement\n * @param {string} mediaTitle\n * @param {string} mediaPosterImageSrc\n * @static\n * @return MediaSessionController instance\n */\n create: MediaSessionController,\n /**\n * Is the Media Session api supported\n * @function isSupported\n * @memberof TSC.MediaSessionController\n * @static\n * @return {boolean} Is the api supported\n */\n isSupported: isSupported\n};\n\n/**\n * @memberof TSC\n * @class MediaExtensionsController\n * @classdesc Controller for managing XMP features\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.XmpModel} xmpModel\n * @param {TSC.Quiz} quizModel\n * @param {TSC.MediaList} mediaList\n * @param {TSC.CaptionService} captionService\n * @param {TSC.playerConfiguration} playerConfiguration\n * @param {TSC.ResponsiveController} responsiveController\n * @param {TSC.TabController} tabController\n * @param {TSC.ProgressBarControlView} progressBarControlView\n * @param {TSC.BeforeAfterPlayControlsView} beforeAfterPlayControlsView\n * @param {TSC.IoOverlayView} ioOverlayView\n *\n */\nvar MediaExtensionsController = function MediaExtensionsController($container, mediaView, xmpModel, quizModel, mediaList, captionService, playerConfiguration, responsiveController, tabController, progressBarControlView, beforeAfterPlayControlsView, ioOverlayView) {\n var _hotspotController;\n var _captionController;\n var _tableOfContentsController;\n var _audioDescriptionController;\n var _endActionsController;\n var _quizController;\n var _quizEventController;\n var _mediaAnalyticsController;\n var _pluginEventsController;\n var _mediaSessionController;\n var modifyPlayerConfigurationBasedOnDevice = function modifyPlayerConfigurationBasedOnDevice() {\n // ignore auto play if this is an iOS device that plays video inline or there is a quiz present\n // may want to move this out of the view at some point.\n var hasAnEnabledQuiz = _quizController && _quizController.hasQuiz && _quizController.quizEnabled;\n if ((deviceInfo.isIOS() || deviceInfo.isAndroid() || hasAnEnabledQuiz) && !playerConfiguration.getMobileWebViewCanAutoPlay()) {\n playerConfiguration.setAutoPlayMedia(false);\n }\n };\n var setupImageControllers = function setupImageControllers() {\n if (quizModel) {\n _quizController = QuizController$1.create($container, mediaView, quizModel, beforeAfterPlayControlsView, playerConfiguration.enforceLinearAssessment);\n _quizEventController = QuizEventController$1.create($container, mediaView, _quizController, progressBarControlView, playerConfiguration.enforceLinearAssessment, ioOverlayView);\n }\n _mediaAnalyticsController = MediaAnalyticsController$1.create($container, mediaView, mediaList, _quizController, playerConfiguration);\n };\n var getMediaTitle = function getMediaTitle() {\n if (playerConfiguration.mediaTitle) {\n return playerConfiguration.mediaTitle;\n } else if (playerConfiguration.tocTitle) {\n return playerConfiguration.tocTitle;\n } else if (xmpModel && xmpModel.title) {\n return xmpModel.title;\n }\n return localizationStrings.getPlayerString(playerStringNames.defaultMediaTitle);\n };\n var getMediaPosterSrc = function getMediaPosterSrc() {\n return playerConfiguration.getPosterImageSrc() || '';\n };\n var setupVideoControllers = function setupVideoControllers() {\n _endActionsController = EndActionsController$1.create($container, mediaView, progressBarControlView, beforeAfterPlayControlsView);\n if (playerConfiguration.audioDescriptionMediaSrc) {\n _audioDescriptionController = AudioDescriptionController$1.create($container, mediaView, playerConfiguration.audioDescriptionMediaSrc);\n }\n if (quizModel) {\n _quizController = QuizController$1.create($container, mediaView, quizModel, beforeAfterPlayControlsView, playerConfiguration.enforceLinearAssessment);\n _quizEventController = QuizEventController$1.create($container, mediaView, _quizController, progressBarControlView, playerConfiguration.enforceLinearAssessment, ioOverlayView);\n }\n _mediaAnalyticsController = MediaAnalyticsController$1.create($container, mediaView, mediaList, _quizController, playerConfiguration);\n if (MediaSessionController$1.isSupported()) {\n _mediaSessionController = MediaSessionController$1.create($container, mediaView.mediaElement, getMediaTitle(), getMediaPosterSrc());\n }\n if (mediaView.supportsSCORM && playerConfiguration.isScormLesson) {\n if (_quizController && _quizController.quizModel !== null && (_quizController.quizModel.reportMethod === reportType.SCORM || _quizController.quizModel.reportMethod === reportType.APIANDSCORM)) {\n scormController$1.submitScore(0, false);\n }\n\n // restore quizzing model state and seek video if not using TechSmith Quiz Service (it can not resume a quiz)\n if (_quizController && _quizController.quizModel && _quizController.quizModel.reportMethod === reportType.SCORM && scormController$1.initialQuizModelSnapshot) {\n _quizController.populateQuizModel(scormController$1.initialQuizModelSnapshot);\n progressBarControlView.updateQuizMarkers();\n }\n scormController$1.initView($container);\n }\n var hasCaptionItems = xmpModel && xmpModel.hasCaptionItems || captionService.captionTrack;\n if (hasCaptionItems) {\n _captionController = CaptionController$1.create($container, mediaView, xmpModel, mediaList, captionService);\n }\n var hasHotspotItems = xmpModel && xmpModel.hasHotspotItems;\n if (hasHotspotItems) {\n _hotspotController = HotspotController$1.create($container, mediaView, xmpModel, mediaList, tabController);\n }\n var hasTableOfContents = xmpModel && xmpModel.hasSearchableItems;\n if (hasTableOfContents) {\n _tableOfContentsController = TableOfContentsController$1.create($container, mediaView, xmpModel, mediaList, progressBarControlView, playerConfiguration);\n }\n };\n var setupControllers = function setupControllers() {\n _pluginEventsController = PluginEventsController$1.create($container);\n if (mediaView.type === mediaViewType.image) {\n setupImageControllers();\n } else {\n setupVideoControllers();\n }\n };\n var preventEvent = function preventEvent(e) {\n e.stopImmediatePropagation();\n e.preventDefault();\n return false;\n };\n var disableHighlightOnMouseDown = function disableHighlightOnMouseDown() {\n highlightDisabler.disableHighlights($(this));\n };\n var activateHighlightDisabler = function activateHighlightDisabler() {\n $container.on('mousedown', '*', disableHighlightOnMouseDown);\n };\n var applyCustomBackgroundColor = function applyCustomBackgroundColor() {\n $container.css('background-color', playerConfiguration.getBackgroundColor());\n };\n var disableContextMenuIfNeeded = function disableContextMenuIfNeeded() {\n if (playerConfiguration.getDisableContextMenuForVideo()) {\n $container.on('contextmenu', preventEvent);\n }\n };\n var configurePlayer = function configurePlayer() {\n modifyPlayerConfigurationBasedOnDevice();\n activateHighlightDisabler();\n applyCustomBackgroundColor();\n disableContextMenuIfNeeded();\n responsiveController.monitorContainerSize();\n if (!_quizController) {\n $container.trigger(events.Player.MediaExtensionsReady);\n } else {\n _quizController.quizIsSetupPromise.then(function () {\n $container.trigger(events.Player.MediaExtensionsReady);\n });\n }\n };\n var destroy = function destroy() {\n _hotspotController && _hotspotController.destroy();\n _captionController && _captionController.destroy();\n _tableOfContentsController && _tableOfContentsController.destroy();\n _audioDescriptionController && _audioDescriptionController.destroy();\n _endActionsController && _endActionsController.destroy();\n _quizController && _quizController.destroy();\n _quizEventController && _quizEventController.destroy();\n _mediaAnalyticsController && _mediaAnalyticsController.destroy();\n _pluginEventsController && _pluginEventsController.destroy();\n _mediaSessionController && _mediaSessionController.destroy();\n $container.off('mousedown', '*', disableHighlightOnMouseDown);\n $container.off('contextmenu', preventEvent);\n responsiveController.clearContainerMonitors();\n };\n setupControllers();\n configurePlayer();\n return Object.defineProperties({\n destroy: destroy\n }, {\n /**\n * @public\n * @readonly\n * @memberof TSC.MediaExtensionsController\n * @property {TSC.CaptionController} captionController - the caption controller\n */\n captionController: {\n get: function get() {\n return _captionController;\n }\n }\n });\n};\nvar MediaExtensionsController$1 = {\n /**\n * Factory method that returns a new MediaExtensionsController.\n * @function create\n * @memberof TSC.MediaExtensionsController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.XmpModel} xmpModel\n * @param {TSC.Quiz} quizModel\n * @param {TSC.MediaList} mediaList\n * @param {TSC.CaptionService} captionService\n * @param {TSC.playerConfiguration} playerConfiguration\n * @param {TSC.TabController} tabController\n * @param {TSC.ResponsiveController} responsiveController\n * @param {TSC.ProgressBarControlView} progressBarControlView\n * @param {TSC.BeforeAfterPlayControlsView} beforeAfterPlayControlsView\n * @param {TSC.IoOverlayView} ioOverlayView\n * @return new MediaExtensionsController instance\n */\n create: MediaExtensionsController\n};\n\n/**\n * @memberof TSC\n * @class TabController\n * @classdesc Controller for tabs\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {jQuery} $defaultFirstTabEnabledElement - The default first tab that should be enabled\n * @param {jQuery} $defaultLastTabEnabledElement - The default last tab that should be enabled\n *\n */\nvar TabController = function TabController($container, $defaultFirstTabEnabledElement, $defaultLastTabEnabledElement) {\n var _defaultFirstTabEnabledElement = $defaultFirstTabEnabledElement;\n var _defaultLastTabEnabledElement = $defaultLastTabEnabledElement;\n var _firstTabEnabledElement = null;\n var _lastTabEnabledElement = null;\n var _playerInFullScreenMode = false;\n var onFullScreenChange = function onFullScreenChange(event, eventData) {\n _playerInFullScreenMode = eventData.inFullScreen;\n };\n var unbindEventsToTabEnabledElement = function unbindEventsToTabEnabledElement(element) {\n if (element) {\n element.off('keydown');\n }\n };\n var setFirstTabEnabledElement = function setFirstTabEnabledElement(firstTabEnabledElement) {\n if (_firstTabEnabledElement) {\n unbindEventsToTabEnabledElement(_firstTabEnabledElement);\n }\n if (firstTabEnabledElement === null) {\n _firstTabEnabledElement = _defaultFirstTabEnabledElement;\n } else {\n _firstTabEnabledElement = firstTabEnabledElement;\n }\n _firstTabEnabledElement.on('keydown', function (e) {\n if (_playerInFullScreenMode && keys.isKeyOfType(e.key, keys.keyTypes.tab) && e.shiftKey === true) {\n e.preventDefault();\n _lastTabEnabledElement.focus();\n }\n });\n };\n var setLastTabEnabledElement = function setLastTabEnabledElement(lastTabEnabledElement) {\n if (_lastTabEnabledElement) {\n unbindEventsToTabEnabledElement(_lastTabEnabledElement);\n }\n if (lastTabEnabledElement === null) {\n _lastTabEnabledElement = _defaultLastTabEnabledElement;\n } else {\n _lastTabEnabledElement = lastTabEnabledElement;\n }\n _lastTabEnabledElement.on('keydown', function (e) {\n if (_playerInFullScreenMode && keys.isKeyOfType(e.key, keys.keyTypes.tab) && e.shiftKey === false) {\n e.preventDefault();\n _firstTabEnabledElement.focus();\n }\n });\n };\n var initController = function initController() {\n if (!_defaultFirstTabEnabledElement || !_defaultLastTabEnabledElement) {\n throw new Error('Tab controller is missing a default tab enabled element');\n }\n setFirstTabEnabledElement(_defaultFirstTabEnabledElement);\n setLastTabEnabledElement(_defaultLastTabEnabledElement);\n $container.on(events.Controls.FullScreenChange, onFullScreenChange);\n };\n var destroy = function destroy() {\n unbindEventsToTabEnabledElement(_firstTabEnabledElement);\n unbindEventsToTabEnabledElement(_lastTabEnabledElement);\n $container.off(events.Controls.FullScreenChange, onFullScreenChange);\n };\n initController();\n return Object.defineProperties({\n destroy: destroy\n }, {\n firstTabEnabledElement: {\n get: function get() {\n return _firstTabEnabledElement;\n },\n set: setFirstTabEnabledElement\n },\n lastTabEnabledElement: {\n get: function get() {\n return _lastTabEnabledElement;\n },\n set: setLastTabEnabledElement\n }\n });\n};\nvar TabController$1 = {\n create: TabController\n};\n\n/**\n * @memberof TSC\n * @class ExternalEventsController\n * @classdesc Controller for managing external events\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.MediaList} mediaList\n * @param {Object} playerViewEventCallbacks\n *\n */\nvar ExternalEventsController = function ExternalEventsController($container, mediaView, mediaList, playerViewEventCallbacks) {\n var onLoadedMetadata = function onLoadedMetadata() {\n playerViewEventCallbacks[events.External.MediaReady].forEach(function (callback) {\n callback();\n });\n };\n var onFullScreenChange = function onFullScreenChange() {\n playerViewEventCallbacks[events.External.PlayerFullScreenModeChanged].forEach(function (callback) {\n callback();\n });\n };\n var onTheaterModeChanged = function onTheaterModeChanged(e, eventData) {\n var newDisplayMode = eventData && eventData.displayMode;\n playerViewEventCallbacks[events.External.DisplayModeChanged].forEach(function (callback) {\n callback(newDisplayMode);\n });\n };\n var onCanPlayVideo = function onCanPlayVideo() {\n playerViewEventCallbacks[events.External.VideoStart].forEach(function (callback) {\n callback();\n });\n mediaView.mediaWrapper.off('canplay', onCanPlayVideo);\n };\n var onMediaEnd = function onMediaEnd(e, eventData) {\n if (eventData.isPlaybackEnded) {\n playerViewEventCallbacks[events.External.VideoEnd].forEach(function (callback) {\n callback();\n });\n }\n };\n var onVideoReplayHandler = function onVideoReplayHandler() {\n playerViewEventCallbacks[events.External.VideoReplay].forEach(function (callback) {\n callback();\n });\n };\n var onVideoError = function onVideoError() {\n playerViewEventCallbacks[events.External.MediaError].forEach(function (callback) {\n callback();\n });\n };\n var onPlayingEvent = function onPlayingEvent() {\n mediaView.mediaWrapper.off('playing', onPlayingEvent);\n\n // send a playing/streaming confirmation if applicable\n playerViewEventCallbacks[events.External.VideoPlay].forEach(function (callback) {\n callback();\n });\n };\n var onStartedPlaybackHandler = function onStartedPlaybackHandler() {\n playerViewEventCallbacks[events.External.VideoStartInitiated].forEach(function (callback) {\n callback();\n });\n };\n var triggerQuizVisible = function triggerQuizVisible() {\n playerViewEventCallbacks[events.External.QuizVisible].forEach(function (callback) {\n callback();\n });\n };\n var triggerQuizHidden = function triggerQuizHidden() {\n playerViewEventCallbacks[events.External.QuizHidden].forEach(function (callback) {\n callback();\n });\n };\n var triggerQuizPromptVisible = function triggerQuizPromptVisible() {\n playerViewEventCallbacks[events.External.ShowStartQuizPrompt].forEach(function (callback) {\n callback();\n });\n };\n var triggerQuizPromptHidden = function triggerQuizPromptHidden() {\n playerViewEventCallbacks[events.External.HideStartQuizPrompt].forEach(function (callback) {\n callback();\n });\n };\n var processCaptionChanged = function processCaptionChanged(e, eventData) {\n if (eventData) {\n playerViewEventCallbacks[events.External.CaptionChange].forEach(function (callback) {\n callback(eventData.plainText);\n });\n }\n };\n var processCaptionToggled = function processCaptionToggled(e, eventData) {\n if (eventData) {\n var externalCaptionEvent = eventData.captionsEnabled ? events.External.CaptionsVisible : events.External.CaptionsHidden;\n playerViewEventCallbacks[externalCaptionEvent].forEach(function (callback) {\n callback();\n });\n }\n };\n var onCaptionsReadyHandler = function onCaptionsReadyHandler() {\n playerViewEventCallbacks[events.External.CaptionsReady].forEach(function (callback) {\n callback();\n });\n };\n var triggerPlayerSettingsOpen = function triggerPlayerSettingsOpen() {\n playerViewEventCallbacks[events.External.PlayerSettingsOpen].forEach(function (callback) {\n callback();\n });\n };\n var triggerPlayerSettingsClose = function triggerPlayerSettingsClose() {\n playerViewEventCallbacks[events.External.PlayerSettingsClose].forEach(function (callback) {\n callback();\n });\n };\n var triggerVideoControlsHidden = function triggerVideoControlsHidden() {\n playerViewEventCallbacks[events.External.PlayerControlsHidden].forEach(function (callback) {\n callback();\n });\n };\n var triggerVideoControlsVisible = function triggerVideoControlsVisible() {\n playerViewEventCallbacks[events.External.PlayerControlsVisible].forEach(function (callback) {\n callback();\n });\n };\n var triggerExternalPlayerResize = function triggerExternalPlayerResize() {\n playerViewEventCallbacks[events.External.PlayerResize].forEach(function (callback) {\n callback();\n });\n };\n var triggerHeroControlHidden = function triggerHeroControlHidden() {\n playerViewEventCallbacks[events.External.HeroControlHidden].forEach(function (callback) {\n callback();\n });\n };\n var triggerImagePointerOver = function triggerImagePointerOver() {\n playerViewEventCallbacks[events.External.ImagePointerOver].forEach(function (callback) {\n callback();\n });\n };\n var triggerImagePointerLeave = function triggerImagePointerLeave() {\n playerViewEventCallbacks[events.External.ImagePointerLeave].forEach(function (callback) {\n callback();\n });\n };\n var bindToEvents = function bindToEvents() {\n $container.on(events.Controls.StartedPlayback, onStartedPlaybackHandler);\n $container.on(events.Controls.FullScreenChange, onFullScreenChange);\n $container.on(events.Controls.TheaterModeChanged, onTheaterModeChanged);\n $container.on(events.Media.End, onMediaEnd);\n $container.on(events.Media.Replay, onVideoReplayHandler);\n $container.on(events.Media.Error, onVideoError);\n $container.on(events.Quizzing.ShowStartQuizPrompt, triggerQuizVisible);\n $container.on(events.Quizzing.Review, triggerQuizHidden);\n $container.on(events.Quizzing.ShowQuestionSetView, triggerQuizVisible);\n $container.on(events.Quizzing.Complete, triggerQuizHidden);\n $container.on(events.Quizzing.ShowQuizSetup, triggerQuizPromptVisible);\n $container.on(events.Quizzing.BeginClicked, triggerQuizPromptHidden);\n $container.on(events.Quizzing.SkipClicked, triggerQuizPromptHidden);\n $container.on(events.Captions.Changed, processCaptionChanged);\n $container.on(events.Captions.Toggled, processCaptionToggled);\n $container.on(events.Captions.StateLoaded, onCaptionsReadyHandler);\n $container.on(events.Controls.PlayerSettingsOpen, triggerPlayerSettingsOpen);\n $container.on(events.Controls.PlayerSettingsClose, triggerPlayerSettingsClose);\n $container.on(events.Controls.VideoControlsHidden, triggerVideoControlsHidden);\n $container.on(events.Controls.VideoControlsVisible, triggerVideoControlsVisible);\n $container.on(events.Controls.PlayerResize, triggerExternalPlayerResize);\n $container.on(events.Controls.HeroPlayControlClicked, triggerHeroControlHidden);\n $container.on(events.Images.PointerOver, triggerImagePointerOver);\n $container.on(events.Images.PointerLeave, triggerImagePointerLeave);\n var eventsToBind = {\n loadedmetadata: onLoadedMetadata,\n canplay: onCanPlayVideo,\n playing: onPlayingEvent\n };\n mediaView.mediaWrapper.on(eventsToBind);\n };\n var unbindToEvents = function unbindToEvents() {\n $container.off(events.Controls.StartedPlayback, onStartedPlaybackHandler);\n $container.off(events.Controls.FullScreenChange, onFullScreenChange);\n $container.off(events.Controls.TheaterModeChanged, onTheaterModeChanged);\n $container.off(events.Media.End, onMediaEnd);\n $container.off(events.Media.Replay, onVideoReplayHandler);\n $container.off(events.Media.Error, onVideoError);\n $container.off(events.Quizzing.ShowStartQuizPrompt, triggerQuizVisible);\n $container.off(events.Quizzing.Review, triggerQuizHidden);\n $container.off(events.Quizzing.ShowQuestionSetView, triggerQuizVisible);\n $container.off(events.Quizzing.Complete, triggerQuizHidden);\n $container.off(events.Quizzing.ShowQuizSetup, triggerQuizPromptVisible);\n $container.off(events.Quizzing.BeginClicked, triggerQuizPromptHidden);\n $container.off(events.Quizzing.SkipClicked, triggerQuizPromptHidden);\n $container.off(events.Captions.Changed, processCaptionChanged);\n $container.off(events.Captions.Toggled, processCaptionToggled);\n $container.off(events.Captions.StateLoaded, onCaptionsReadyHandler);\n $container.off(events.Controls.PlayerSettingsOpen, triggerPlayerSettingsOpen);\n $container.off(events.Controls.PlayerSettingsClose, triggerPlayerSettingsClose);\n $container.off(events.Controls.VideoControlsHidden, triggerVideoControlsHidden);\n $container.off(events.Controls.VideoControlsVisible, triggerVideoControlsVisible);\n $container.off(events.Controls.PlayerResize, triggerExternalPlayerResize);\n $container.off(events.Controls.HeroPlayControlClicked, triggerHeroControlHidden);\n $container.off(events.Images.PointerOver, triggerImagePointerOver);\n $container.off(events.Images.PointerLeave, triggerImagePointerLeave);\n var eventsToBind = {\n loadedmetadata: onLoadedMetadata,\n canplay: onCanPlayVideo,\n playing: onPlayingEvent\n };\n mediaView.mediaWrapper.off(eventsToBind);\n };\n var destroy = function destroy() {\n unbindToEvents();\n };\n bindToEvents();\n return Object.defineProperties({\n destroy: destroy\n }, {});\n};\nvar ExternalEventsController$1 = {\n /**\n * Factory method that returns a new ExternalEventsController.\n * @function create\n * @memberof TSC.ExternalEventsController\n * @static\n * @param {jQuery} $container - Smart Player main container jquery element\n * @param {MediaView} mediaView - Media view for current media. Created by MediaViewFactory.\n * @param {TSC.MediaList} mediaList\n * @param {Object} playerViewEventCallbacks\n * @return new ExternalEventsController instance\n */\n create: ExternalEventsController\n};\n\n/**\n * @memberof TSC\n * @class PlayerState\n * @classdesc State object used for player instance player state.\n */\nvar PlayerState = function PlayerState() {\n var _oneOrMoreHotspotsWithTimeActionArePaused = false;\n var _videoHasQuizQuestions = false;\n var _pausedForQuiz = false;\n var _displayMode = DisplayModes.Normal;\n return Object.defineProperties({}, {\n oneOrMoreHotspotsWithTimeActionArePaused: {\n get: function get() {\n return _oneOrMoreHotspotsWithTimeActionArePaused;\n },\n set: function set(oneOrMoreHotspotsWithTimeActionArePaused) {\n _oneOrMoreHotspotsWithTimeActionArePaused = oneOrMoreHotspotsWithTimeActionArePaused;\n }\n },\n mediaHasQuizQuestions: {\n get: function get() {\n return _videoHasQuizQuestions;\n },\n set: function set(videoHasQuizQuestions) {\n _videoHasQuizQuestions = videoHasQuizQuestions;\n }\n },\n pausedForQuiz: {\n get: function get() {\n return _pausedForQuiz;\n },\n set: function set(pausedForQuiz) {\n _pausedForQuiz = pausedForQuiz;\n }\n },\n displayMode: {\n get: function get() {\n return _displayMode;\n },\n set: function set(displayMode) {\n _displayMode = displayMode;\n }\n }\n });\n};\nvar PlayerState$1 = {\n /**\n * Factory method that returns a new PlayerState object\n * @function create\n * @memberof TSC.PlayerState\n * @static\n * @return new PlayerState instance\n */\n create: PlayerState\n};\n\n/**\n * @memberof TSC.IoOverlayView\n * @class IoOverlayView\n * @classdesc IoOverlay View\n */\nvar IoOverlayView = function IoOverlayView($container) {\n var _viewOpen = false;\n var markup = templateGenerator.generateIoOverlayMarkup();\n $container.append(markup);\n var _$ioContainer = $container.find('.tsc-io-container');\n var _$ioMessage = _$ioContainer.find('span');\n var _$ioImg = _$ioContainer.find('img');\n var setViewMessage = function setViewMessage(message) {\n _$ioMessage.html(message);\n };\n var hideLoadingGraphic = function hideLoadingGraphic() {\n _$ioImg.hide();\n };\n var showLoadingGraphic = function showLoadingGraphic() {\n _$ioImg.show();\n };\n var showView = function showView() {\n _$ioContainer.stop().css('opacity', 0).show().animate({\n opacity: 1\n }, 300);\n _viewOpen = true;\n };\n var hideView = function hideView(completeCallback) {\n if (_viewOpen) {\n _viewOpen = false;\n _$ioContainer.stop().animate({\n opacity: 0\n }, 200, function () {\n if (completeCallback) {\n completeCallback.call();\n }\n _$ioContainer.hide();\n });\n }\n };\n var displayMessage = function displayMessage(message, shouldHideLoadingGraphic) {\n setViewMessage(message);\n if (shouldHideLoadingGraphic) {\n hideLoadingGraphic();\n } else {\n showLoadingGraphic();\n }\n if (!_viewOpen) {\n showView();\n }\n };\n var destroy = function destroy() {\n $container.off(events.Controls.HideIOOverlay, hideView);\n };\n var bindEvents = function bindEvents() {\n $container.on(events.Controls.HideIOOverlay, hideView);\n };\n bindEvents();\n return Object.defineProperties({\n hideView: hideView,\n displayMessage: displayMessage,\n destroy: destroy\n }, {});\n};\nvar IoOverlayView$1 = {\n /**\n * Factory method that returns a new IoOverlayView object.\n * @function create\n * @memberof TSC.IoOverlayView\n * @static\n * @param {Object} $container - jQuery element that is the smartplayer top-level container\n * @return new IoOverlayView instance\n */\n create: IoOverlayView\n};\n\nvar VIDEO_TIME_COMPARE_PRECISION = 2;\n\n/**\n * @memberof TSC\n * @class SmartPlayerView\n * @classdesc Smart Player view\n * @param {String} playerInstanceUUID\n * @param {JQuery} $rootContainer\n * @param {TSC.MediaList} mediaList\n * @param {TSC.XmpModel} xmpModel\n * @param {TSC.Quiz} quizModel\n * @param {TSC.CaptionService} captionService\n * @param {TSC.playerConfiguration} playerConfiguration\n * @param {TSC.ResponsiveController} responsiveController\n * @param {Boolean} xmpInErrorState\n */\nvar SmartPlayerView = function SmartPlayerView(playerInstanceUUID, $rootContainer, mediaList, xmpModel, quizModel, captionService, playerConfiguration, responsiveController, xmpInErrorState) {\n // eslint-disable-line\n var _mediaElementUniqueID = [$rootContainer.attr('id').replace(/^[#]/, ''), playerInstanceUUID].join('-');\n var _mediaViewReady;\n var _viewHasBeenInitialized;\n var _mediaExtensionsController;\n var _tabController;\n var _externalEventsController;\n var _scormErrorMessageBarView;\n var _$playerPluginContainer;\n var _viewInitializedPromise = new Promise$1(function (resolve, reject) {\n _viewHasBeenInitialized = resolve; // eslint-disable-line\n });\n var _playerViewEventCallbacks = {};\n var _queuedMediaBinds = {};\n var _mediaView = null;\n var _ioOverlayView = null;\n var _videoControlsController = null;\n var _videoControlsDisplayModeController = null;\n var _controlsReady = false;\n var _mediaExtensionsReady = false;\n var _mediaHasBeenLoaded = false;\n var _playerState = PlayerState$1.create();\n _playerState.mediaHasQuizQuestions = quizModel && quizModel.questionSets.length > 0;\n $rootContainer.playerState = _playerState;\n var _$mediaViewPortContainer = null;\n var _$mediaContainer = null;\n var _$playerLayoutControlsContainer = null;\n var displayXmpErrorMessage = function displayXmpErrorMessage() {\n if (deviceInfo.isLocal()) {\n MessageBarView$1.create($rootContainer, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.xmpSecurity), localizationStrings.getPlayerString(playerStringNames.close));\n } else {\n MessageBarView$1.create($rootContainer, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.xmpError));\n }\n };\n var onFirstPlayHandler = function onFirstPlayHandler() {\n $rootContainer.trigger(events.Media.FirstPlay);\n };\n var triggerRumDataEvent = function triggerRumDataEvent(timingMeasureList, eventCategorySuffix) {\n var eventData = {\n categorySuffix: eventCategorySuffix,\n rum: performanceWrapper.getRumEventData(timingMeasureList)\n };\n _playerViewEventCallbacks[events.External.PlayerRumData].forEach(function (callback) {\n callback(eventData);\n });\n };\n var externalEventIsSupported = function externalEventIsSupported(eventName) {\n return Object.keys(events.External).some(function (eventKey) {\n return events.External[eventKey] === eventName;\n });\n };\n var setupExternalEventCallbackHarness = function setupExternalEventCallbackHarness() {\n Object.keys(events.External).forEach(function (eventKey) {\n var eventName = events.External[eventKey];\n _playerViewEventCallbacks[eventName] = [];\n });\n };\n var getCaptionsVisible = function getCaptionsVisible() {\n return _mediaExtensionsController.captionController ? _mediaExtensionsController.captionController.getCaptionsVisible() : false;\n };\n var setCaptionsVisible = function setCaptionsVisible(value) {\n if (_mediaExtensionsController.captionController) {\n _mediaExtensionsController.captionController.setCaptionsVisible(value);\n }\n };\n var addEventListener = function addEventListener(type, listener) {\n if (externalEventIsSupported(type)) {\n _playerViewEventCallbacks[type].push(listener);\n }\n };\n var removeEventListener = function removeEventListener(type, listener) {\n if (externalEventIsSupported(type)) {\n // just in case the same listener pointer is bound more than once?\n while (_playerViewEventCallbacks[type].indexOf(listener) !== -1) {\n _playerViewEventCallbacks[type].splice(_playerViewEventCallbacks[type].indexOf(listener), 1);\n }\n }\n };\n var addMediaEventListener = function addMediaEventListener(event, handler) {\n if (_mediaView && _mediaView.mediaWrapper) {\n _mediaView.mediaWrapper.on(event, handler);\n } else {\n if (_typeof$1(_queuedMediaBinds[event]) !== 'object') {\n _queuedMediaBinds[event] = [];\n }\n _queuedMediaBinds[event].push(handler);\n }\n };\n var removeMediaEventListener = function removeMediaEventListener(event, handler) {\n if (_mediaView.mediaWrapper) {\n _mediaView.mediaWrapper.off(event, handler);\n } else {\n if (_typeof$1(_queuedMediaBinds[event]) !== 'object') {\n return;\n }\n // if the same handler is bound multiple times?\n while (_queuedMediaBinds[event].indexOf(handler) !== -1) {\n _queuedMediaBinds[event].splice(_queuedMediaBinds[event].indexOf(handler), 1);\n }\n }\n };\n var processQueuedMediaBinds = function processQueuedMediaBinds() {\n Object.keys(_queuedMediaBinds).forEach(function (event) {\n if (_typeof$1(_queuedMediaBinds[event]) === 'object') {\n _queuedMediaBinds[event].forEach(function (callback) {\n _mediaView.mediaWrapper.on(event, callback);\n });\n }\n });\n _queuedMediaBinds = {};\n };\n var triggerVideoStartEventCallbacks = function triggerVideoStartEventCallbacks() {\n // dispatch callback for media started event (note: after _mediaWrapper and _mediaElement are set)\n _playerViewEventCallbacks[events.External.VideoStart].forEach(function (callback) {\n callback();\n });\n };\n var createPlayerLayout = function createPlayerLayout() {\n $rootContainer.html(templateGenerator.generatePlayerLayoutMarkup());\n _$mediaViewPortContainer = $rootContainer.find('.media-wrapper').first();\n _$playerLayoutControlsContainer = $rootContainer.find('.video-controls-container').first();\n _$playerPluginContainer = $rootContainer.find('.player-plugin-container').first();\n };\n var createMediaView = function createMediaView() {\n return MediaViewFactory$1.createView($rootContainer, _$mediaViewPortContainer, _mediaElementUniqueID, mediaList, onFirstPlayHandler, triggerRumDataEvent);\n };\n var onMediaError = function onMediaError(e, data) {\n _ioOverlayView.hideView();\n _ioOverlayView.displayMessage(data.errorString, true);\n };\n var showVideoLoadingMessage = function showVideoLoadingMessage() {\n if (_mediaView.type !== mediaViewType.youtube && _mediaView.type !== mediaViewType.image) {\n _ioOverlayView.displayMessage(localizationStrings.getPlayerString(playerStringNames.videoLoading));\n }\n };\n var onHideLoadingMessage = function onHideLoadingMessage() {\n _ioOverlayView.hideView();\n };\n var loadMediaWhenComponentsAreReady = function loadMediaWhenComponentsAreReady() {\n if (_controlsReady && _mediaExtensionsReady && !_mediaHasBeenLoaded) {\n showVideoLoadingMessage();\n loadMedia();\n }\n };\n var onControlsVisible = function onControlsVisible() {\n if (_$playerLayoutControlsContainer.length > 0 && captionService.position === CAPTION_POSITION.under) {\n $rootContainer[0].style.setProperty(cssVariables.reservedSizeControls, \"\".concat(Math.round(_$playerLayoutControlsContainer.height()), \"px\"));\n }\n };\n var onControlsReady = function onControlsReady() {\n _controlsReady = true;\n loadMediaWhenComponentsAreReady();\n };\n var onMediaExtensionsReady = function onMediaExtensionsReady() {\n _mediaExtensionsReady = true;\n loadMediaWhenComponentsAreReady();\n };\n var onFailedToFindSCORMApi = function onFailedToFindSCORMApi() {\n _ioOverlayView.hideView();\n _scormErrorMessageBarView = MessageBarView$1.create($rootContainer, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.scormApiNotFoundMessage), localizationStrings.getPlayerString(playerStringNames.close));\n };\n var onShowQuizSetup = function onShowQuizSetup() {\n $rootContainer.find('.video-wrapper').removeClass(cssClasses.hide);\n };\n var startViewPortObserver = function startViewPortObserver() {\n _mediaView.mediaWrapper.off(events.ExternalVideo.VideoLoadedMetadata, startViewPortObserver);\n // at this point, these should have been initialized\n _$mediaContainer = $rootContainer.find('.media-container');\n responsiveController.monitorMediaViewPortSize(_$mediaViewPortContainer, _$mediaContainer, _mediaView.mediaWidth, _mediaView.mediaHeight);\n };\n var onImagePointerOver = function onImagePointerOver() {\n $rootContainer.trigger(events.Images.PointerOver);\n };\n var onImagePointerLeave = function onImagePointerLeave() {\n $rootContainer.trigger(events.Images.PointerLeave);\n };\n var onMediaViewInitialized = function onMediaViewInitialized(mediaView) {\n _mediaView = mediaView;\n _ioOverlayView = IoOverlayView$1.create($rootContainer);\n $rootContainer.on(events.Media.Error, onMediaError);\n $rootContainer.on(events.Player.MediaControlsReady, onControlsReady);\n $rootContainer.on(events.Controls.VideoControlsVisible, onControlsVisible);\n $rootContainer.on(events.Player.MediaExtensionsReady, onMediaExtensionsReady);\n $rootContainer.on(events.Controls.HideLoadingMessage, onHideLoadingMessage);\n $rootContainer.on(events.SCORM.FailedToFindApi, onFailedToFindSCORMApi);\n $rootContainer.on(events.Quizzing.ShowQuizSetup, onShowQuizSetup);\n $rootContainer.on(events.Plugin.Added, initPlugins);\n _mediaView.mediaWrapper.on(events.ExternalVideo.VideoLoadedMetadata, startViewPortObserver);\n if (_mediaView.playerControlType === playerControlsType.video || _mediaView.playerControlType === playerControlsType.videoPlaylist) {\n _videoControlsController = VideoControlsController$1.create($rootContainer, _mediaView, xmpModel, quizModel, playerConfiguration);\n _videoControlsDisplayModeController = VideoControlsDisplayModeController$1.create($rootContainer, _videoControlsController, playerConfiguration);\n _tabController = TabController$1.create($rootContainer, _videoControlsController.progressBarControlView.controlElement, _videoControlsController.fullscreenControlView.controlElement);\n } else {\n // if not creating videoControls just yank the dom structure, perhaps this should be its own template\n $rootContainer.find('.video-controls-container').remove();\n if (_mediaView.type === mediaViewType.image && !deviceInfo.isTouchInterface()) {\n $rootContainer.on('pointerover', onImagePointerOver);\n $rootContainer.on('pointerleave', onImagePointerLeave);\n }\n }\n var progressBarControlView = _videoControlsController ? _videoControlsController.progressBarControlView : null;\n var beforeAfterPlayControlsView = _videoControlsController ? _videoControlsController.beforeAfterPlayControlsView : null;\n _externalEventsController = ExternalEventsController$1.create($rootContainer, mediaView, mediaList, _playerViewEventCallbacks);\n processQueuedMediaBinds();\n _mediaExtensionsController = MediaExtensionsController$1.create($rootContainer, mediaView, xmpModel, quizModel, mediaList, captionService, playerConfiguration, responsiveController, _tabController, progressBarControlView, beforeAfterPlayControlsView, _ioOverlayView);\n if (!_videoControlsController || !_videoControlsController.userNeedToClickHeroPlayControl) {\n $rootContainer.trigger(events.Player.MediaControlsReady);\n }\n $rootContainer.trigger(events.Controls.PlayerInitialized);\n triggerRumDataEvent([events.Timing.PlayerLoaded, events.Timing.PlayerInitialized], AnalyticsRumVideoCategorySuffix);\n _viewHasBeenInitialized();\n };\n var destroy = function destroy() {\n $rootContainer.off(events.Media.Error, onMediaError);\n $rootContainer.off(events.Player.MediaControlsReady, onControlsReady);\n $rootContainer.off(events.Controls.VideoControlsVisible, onControlsVisible);\n $rootContainer.off(events.Player.MediaExtensionsReady, onMediaExtensionsReady);\n $rootContainer.off(events.Controls.HideLoadingMessage, onHideLoadingMessage);\n $rootContainer.off(events.SCORM.FailedToFindApi, onFailedToFindSCORMApi);\n $rootContainer.off(events.Quizzing.ShowQuizSetup, onShowQuizSetup);\n $rootContainer.off(events.Plugin.Added, initPlugins);\n $rootContainer.off('pointerover', onImagePointerOver);\n $rootContainer.off('pointerleave', onImagePointerLeave);\n _mediaView.mediaWrapper.off(events.ExternalVideo.VideoLoadedMetadata, startViewPortObserver);\n _videoControlsController && _videoControlsController.destroy();\n _videoControlsDisplayModeController && _videoControlsDisplayModeController.destroy();\n _mediaView && _mediaView.destroy();\n _ioOverlayView && _ioOverlayView.destroy();\n _mediaExtensionsController && _mediaExtensionsController.destroy();\n _tabController && _tabController.destroy();\n _externalEventsController && _externalEventsController.destroy();\n _scormErrorMessageBarView && _scormErrorMessageBarView.remove();\n };\n var playVideo = function playVideo() {\n if (_mediaView && _mediaView.mediaElement && _mediaView.type !== mediaViewType.image) {\n if (_mediaView.mediaElement.ended) {\n $rootContainer.trigger(events.Media.Replay);\n } else {\n _mediaView.mediaElement.play();\n }\n }\n return Promise$1.reject('Media Element not yet initialized');\n };\n var pauseVideo = function pauseVideo() {\n if (_mediaView && _mediaView.mediaElement && _mediaView.type !== mediaViewType.image) {\n _mediaView.mediaElement.pause();\n }\n };\n var isInFullScreenMode = function isInFullScreenMode() {\n if (_videoControlsController && _videoControlsController.fullscreenControlView) {\n return _videoControlsController.fullscreenControlView.isFullScreen;\n }\n return false;\n };\n var getIsScrubbing = function getIsScrubbing() {\n if (_videoControlsController && _videoControlsController.progressBarControlView) {\n return _videoControlsController.progressBarControlView.scrubbing;\n }\n return false;\n };\n var setIsScrubbing = function setIsScrubbing(isScrubbingVideo) {\n if (_videoControlsController && _videoControlsController.progressBarControlView) {\n _videoControlsController.progressBarControlView.scrubbing = isScrubbingVideo;\n }\n };\n var getSafeSeekTime = function getSafeSeekTime(time) {\n if (!_mediaView && _mediaView.type === mediaViewType.image && !_mediaView.mediaElement) {\n return 0;\n }\n return videoApiUtils.getSafeSeekTime(_mediaView.mediaElement, time);\n };\n var loadMedia = function loadMedia() {\n if (_mediaHasBeenLoaded) {\n return;\n }\n _mediaHasBeenLoaded = true;\n $rootContainer.find('.video-wrapper').removeClass(cssClasses.hide);\n _mediaView.loadMedia();\n if (playerConfiguration.getAutoPlayMedia() || playerConfiguration.getForceAutoPlayMedia()) {\n $rootContainer.trigger(events.Media.TryToAutoPlay);\n }\n };\n var setExternalCurrentTime = function setExternalCurrentTime(timeInSeconds) {\n var safeSeekTime = videoApiUtils.getSafeSeekTime(_mediaView.mediaElement, timeInSeconds);\n if (_videoControlsController && _mediaView.mediaElement.currentTime.toFixed(VIDEO_TIME_COMPARE_PRECISION) !== safeSeekTime.toFixed(VIDEO_TIME_COMPARE_PRECISION)) {\n _videoControlsController.beforeAfterPlayControlsView.hideVideoClickToReplayLink();\n }\n if (_mediaView.mediaElement.ended) {\n $rootContainer.trigger(events.Media.Replay, {\n time: safeSeekTime,\n playAfterSeek: false\n });\n } else {\n $rootContainer.trigger(events.Media.SeekToTime, {\n time: safeSeekTime\n });\n }\n };\n var initPlugins = function initPlugins(event, data) {\n var pluginController = playerConfiguration.getPluginController();\n if (pluginController && data.viewElementType === supportedPluginViewElements.PLAYER) {\n pluginController.initializePluginsForViewElement(supportedPluginViewElements.PLAYER, _$playerPluginContainer);\n }\n };\n setupExternalEventCallbackHarness();\n createPlayerLayout();\n if (xmpInErrorState) {\n displayXmpErrorMessage();\n }\n _mediaViewReady = createMediaView();\n _mediaViewReady.then(onMediaViewInitialized)[\"catch\"](function (error) {\n log.logException(error);\n });\n return Object.defineProperties({\n loadMedia: loadMedia,\n destroy: destroy,\n play: playVideo,\n pause: pauseVideo,\n // custom view stuff\n isInFullScreenMode: isInFullScreenMode,\n addEventListener: addEventListener,\n removeEventListener: removeEventListener,\n addMediaEventListener: addMediaEventListener,\n removeMediaEventListener: removeMediaEventListener,\n // controls state internal to smart-player-view\n getCaptionsVisible: getCaptionsVisible,\n setCaptionsVisible: setCaptionsVisible,\n getScrubbing: getIsScrubbing,\n setScrubbing: setIsScrubbing,\n // events\n triggerVideoStartEventCallbacks: triggerVideoStartEventCallbacks,\n // util methods\n getSafeSeekTime: getSafeSeekTime\n }, {\n initializedPromise: {\n get: function get() {\n return _viewInitializedPromise;\n }\n },\n currentSrc: {\n get: function get() {\n return _mediaView ? _mediaView.currentSrc : '';\n }\n },\n currentTime: {\n get: function get() {\n return _mediaView ? _mediaView.currentTime : 0;\n },\n set: setExternalCurrentTime\n },\n duration: {\n get: function get() {\n return _mediaView ? _mediaView.duration : 0;\n }\n },\n paused: {\n get: function get() {\n return _mediaView ? _mediaView.paused : false;\n }\n },\n ended: {\n get: function get() {\n return _mediaView ? _mediaView.ended : false;\n }\n },\n seeking: {\n get: function get() {\n return _mediaView ? _mediaView.seeking : false;\n }\n },\n buffered: {\n get: function get() {\n return _mediaView ? _mediaView.buffered : [];\n }\n },\n played: {\n get: function get() {\n return _mediaView ? _mediaView.played : [];\n }\n },\n seekable: {\n get: function get() {\n return _mediaView ? _mediaView.seekable : [];\n }\n },\n volume: {\n get: function get() {\n return _mediaView ? _mediaView.volume : 1;\n },\n set: function set(volumeValue) {\n $rootContainer.trigger(events.Media.SetVolume, {\n volumeValue: volumeValue\n });\n }\n },\n muted: {\n get: function get() {\n return _mediaView ? _mediaView.muted : false;\n },\n set: function set(isMuted) {\n $rootContainer.trigger(events.Media.SetMutedState, {\n isMuted: isMuted\n });\n }\n },\n playbackRate: {\n get: function get() {\n return _mediaView ? _mediaView.playbackRate : 1;\n },\n set: function set(playbackRate) {\n $rootContainer.trigger(events.Media.SetPlaybackRate, {\n playbackRate: playbackRate\n });\n }\n },\n progressBarDisplayWidth: {\n get: function get() {\n return _videoControlsController ? _videoControlsController.progressBarControlView.displayWidth : 0;\n }\n },\n currentDisplayMode: {\n get: function get() {\n return _playerState.displayMode;\n }\n }\n });\n};\nvar SmartPlayerView$1 = {\n /**\n * Factory method that returns a new SmartPlayerView object\n * @function create\n * @memberof TSC.SmartPlayerView\n * @param {String} playerInstanceUUID\n * @param {jQuery} $rootContainer\n * @param {TSC.MediaList} mediaList\n * @param {TSC.XmpModel} xmpModel\n * @param {TSC.Quiz} quizModel\n * @param {TSC.CaptionService} captionService\n * @param {Object} playerConfiguration\n * @static\n * @return new SmartPlayerView instance\n */\n create: SmartPlayerView\n};\n\nvar smartPlayerPreRollEventConstants = Object.freeze({\n PRE_ROLL_STARTED: 'preRollStarted',\n PRE_ROLL_FINISHED: 'preRollFinished',\n PRE_ROLL_FINISHED_ACTIONS: {\n REMOVE_NOW: 'removeNow'\n }\n});\n\nvar preRollView = {\n render: function render(preRollSrc) {\n return templateGenerator.generatePreRollMarkup(preRollSrc);\n }\n};\n\nvar _onPreRollStartedCallback;\nvar $preRollView;\nvar $window = $(window);\nvar preRollMessage = function preRollMessage(e) {\n e = e.originalEvent;\n // filter out non smart player events\n if (!e.data || typeof e.data.indexOf !== 'function' || e.data.indexOf('smartPlayerEventName') === -1) {\n return;\n }\n var message = window.JSON.parse(e.data);\n switch (message.smartPlayerEventName) {\n case smartPlayerPreRollEventConstants.PRE_ROLL_STARTED:\n {\n if (_onPreRollStartedCallback) {\n _onPreRollStartedCallback();\n }\n break;\n }\n case smartPlayerPreRollEventConstants.PRE_ROLL_FINISHED:\n {\n switch (message.data.action) {\n case smartPlayerPreRollEventConstants.PRE_ROLL_FINISHED_ACTIONS.REMOVE_NOW:\n {\n destroyView();\n break;\n }\n }\n break;\n }\n }\n};\nvar onIFrameContentLoaded = function onIFrameContentLoaded() {\n $preRollView.removeClass('preRollHidden');\n};\nvar destroyView = function destroyView() {\n if ($preRollView) {\n $window.off('message', preRollMessage);\n $preRollView.off('load', onIFrameContentLoaded);\n $preRollView.remove();\n $preRollView = undefined;\n _onPreRollStartedCallback = undefined;\n }\n};\nvar preRollController = {\n createView: function createView(preRollSrc, onPreRollStartedCallback) {\n $preRollView = $(preRollView.render(preRollSrc)).appendTo('body');\n $preRollView.on('load', onIFrameContentLoaded);\n _onPreRollStartedCallback = onPreRollStartedCallback;\n $window.on('message', preRollMessage);\n },\n viewExists: function viewExists() {\n return $preRollView !== undefined;\n },\n destroyView: destroyView\n};\n\nvar _$spElement = null;\nvar setTheme$1 = function setTheme(themeName) {\n playerConfiguration.setTheme(themeName);\n applyTheme();\n};\nvar registerCallback = function registerCallback() {\n externalMessageController.addCallback('SET_THEME', setTheme$1);\n};\nvar setSmartPlayerContainerElement = function setSmartPlayerContainerElement($element) {\n _$spElement = $element;\n applyTheme();\n};\nvar getClassNameForTheme = function getClassNameForTheme(theme) {\n return 'smartplayer-' + theme + '-theme';\n};\nvar applyTheme = function applyTheme() {\n if (_$spElement) {\n var themeClassNameAsString = Object.keys(themeNames).reduce(function (accumulator, currentValue) {\n return accumulator + getClassNameForTheme(themeNames[currentValue]) + ' ';\n }, '');\n var currentThemeClassName = getClassNameForTheme(playerConfiguration.getTheme());\n _$spElement.removeClass(themeClassNameAsString);\n _$spElement.addClass(currentThemeClassName);\n }\n};\nregisterCallback();\nvar themeController = {\n setTheme: setTheme$1,\n setSmartPlayerContainerElement: setSmartPlayerContainerElement\n};\n\nvar externalVideoEventIsSupported = function externalVideoEventIsSupported(eventName) {\n return Object.keys(events.ExternalVideo).some(function (eventKey) {\n return events.ExternalVideo[eventKey] === eventName;\n });\n};\n\n// major, minor, build\nvar PLAYER_VERSION = 'x.x.x';\nvar INIT_DEFAULT_WIDTH = 1920;\nvar INIT_DEFAULT_HEIGHT = 1080;\nvar _$rootSmartPlayerElement = null;\nvar _responsiveController = null;\nvar _currentPlayerType = null;\nvar _mediaList = null;\nvar _xmp = null;\nvar _quizModel = null;\nvar _captionService = null;\nvar _smartPlayerView = NullSmartPlayerView$1.create();\nvar _viewCreated = false;\nvar _viewInitialized = false;\nvar _queuedEvents = {};\nvar _queuedExternalConfiguration = {};\nvar _playerInstanceUUID = null;\nvar _xmpInErrorState = false;\nvar mediaListError = function mediaListError() {\n MessageBarView$1.create(_$rootSmartPlayerElement, messageBarType.warning, localizationStrings.getPlayerString(playerStringNames.mediaNotFound));\n};\nvar onPreRollStart = function onPreRollStart() {\n continueInit();\n};\nvar initPlayer = function initPlayer(currentInstanceUUID) {\n _captionService = CaptionService$1.create();\n deviceInfo.lookAtDevice();\n queryParamsStripper.strip();\n themeController.setSmartPlayerContainerElement(_$rootSmartPlayerElement);\n if (playerConfiguration.getPreRollSrc()) {\n preRollController.createView(playerConfiguration.getPreRollSrc(), onPreRollStart);\n } else {\n continueInit(currentInstanceUUID);\n }\n};\nvar continueInit = function continueInit(currentInstanceUUID) {\n var mediaSources = playerConfiguration.getMediaSources();\n _mediaList = MediaList$1.create(mediaSources);\n _mediaList.ready.then(function () {\n if (_playerInstanceUUID === currentInstanceUUID) {\n mediaListReady(currentInstanceUUID);\n }\n }, mediaListError);\n};\nvar playbackInitiatedHandler = function playbackInitiatedHandler() {\n _smartPlayerView.removeEventListener(events.External.VideoStartInitiated, playbackInitiatedHandler);\n if (preRollController && preRollController.viewExists()) {\n preRollController.destroyView();\n }\n};\nvar mediaListReady = function mediaListReady(currentInstanceUUID) {\n _currentPlayerType = mediaPlayerController.getPlayerType(_mediaList);\n _responsiveController = ResponsiveController$1.create(_$rootSmartPlayerElement);\n switch (_currentPlayerType) {\n case playerType.YOUTUBE:\n {\n youTube.addApi();\n analyticsService.setCategory(AnalyticsYouTubeEventCategory);\n // we dont have any info on youtube media, so just default to 1080p, it tends to look right\n _responsiveController.initializeIntrinsicSizing(INIT_DEFAULT_WIDTH, INIT_DEFAULT_HEIGHT);\n processMediaAssets(currentInstanceUUID);\n break;\n }\n case playerType.HTML5_VIDEO:\n {\n analyticsService.setCategory(AnalyticsVideoEventCategory);\n if (playerConfiguration.getPosterImageSrc()) {\n // assumption that quick load of posterUrl will have sizing (or at least aspect ratio to match video)\n initIntrinsicSizingFromImageUrl(playerConfiguration.getPosterImageSrc());\n } else {\n _responsiveController.initializeIntrinsicSizing(INIT_DEFAULT_WIDTH, INIT_DEFAULT_HEIGHT);\n }\n processMediaAssets(currentInstanceUUID);\n break;\n }\n case playerType.IMAGE:\n {\n analyticsService.setCategory(AnalyticsImageEventCategory);\n initIntrinsicSizingFromImageUrl(_mediaList.currentMedia.uri);\n processMediaAssets(currentInstanceUUID);\n break;\n }\n case playerType.NOT_SUPPORTED:\n {\n if (_mediaList.currentMediaType === mediaType.WEBM) {\n MessageBarView$1.create(_$rootSmartPlayerElement, messageBarType.warning, localizationStrings.getPlayerString(playerStringNames.noWebMSupport));\n } else {\n MessageBarView$1.create(_$rootSmartPlayerElement, messageBarType.warning, localizationStrings.getPlayerString(playerStringNames.videoNotSupported));\n }\n break;\n }\n }\n};\nvar setQuizModel = function setQuizModel(xmpModel) {\n if (xmpModel && xmpModel.hasQuiz) {\n _quizModel = Quiz$1.create(xmpModel);\n }\n};\nvar initIntrinsicSizingFromImageUrl = function initIntrinsicSizingFromImageUrl(imgUrl) {\n var img = new Image();\n img.onload = function () {\n _responsiveController.initializeIntrinsicSizing(img.naturalWidth, img.naturalHeight);\n };\n img.onerror = function () {\n _responsiveController.initializeIntrinsicSizing(INIT_DEFAULT_WIDTH, INIT_DEFAULT_HEIGHT);\n };\n img.src = imgUrl;\n};\nvar processQuizzing = function processQuizzing() {\n return new Promise$1(function (resolve) {\n if (playerConfiguration.fathomId) {\n fathomService.addEventListener(events.Fathom.GetComplete, function (xmpModel) {\n resolve(xmpModel);\n });\n fathomService.addEventListener(events.Fathom.Error, function () {\n _xmpInErrorState = true;\n resolve();\n });\n fathomService.getFathom(playerConfiguration.fathomId);\n } else {\n resolve(_xmp);\n }\n });\n};\nvar processCaptionSrc = function processCaptionSrc() {\n if (playerConfiguration.captionSrcList.length > 0) {\n if (_xmp === null) {\n _xmp = Xmp.create();\n }\n return _xmp.importCaptionsFromFile(playerConfiguration.captionSrcList);\n }\n return Promise$1.resolve();\n};\nvar processXMP = function processXMP() {\n return new Promise$1(function (resolve) {\n if (playerConfiguration.xmpSrc) {\n _xmp = Xmp.create();\n if (window.TSC && typeof window.TSC.embedded_config_xml === 'string') {\n _xmp.parse(window.TSC.embedded_config_xml);\n } else {\n _xmp.load(playerConfiguration.xmpSrc, false);\n }\n _xmp.ready.then(resolve)[\"catch\"](function () {\n _xmpInErrorState = true;\n _xmp.abortPendingRequests();\n _xmp = null;\n resolve();\n });\n } else {\n if (playerConfiguration.getTocModelFromDescription()) {\n _xmp = Xmp.create();\n }\n resolve();\n }\n });\n};\nvar processMediaAssets = function processMediaAssets(currentInstanceUUID) {\n if (playerConfiguration.getGoogleAnalyticsID()) {\n analyticsService.initGoogleAnalytics();\n }\n processXMP().then(function () {\n if (_playerInstanceUUID === currentInstanceUUID) {\n if (_xmp) {\n playerConfiguration.configureFromXmp(_xmp);\n localizationStrings.configureFromXmp(_xmp);\n }\n processCaptionSrc().then(function () {\n if (_playerInstanceUUID === currentInstanceUUID) {\n processQuizzing().then(function (xmpModel) {\n if (_playerInstanceUUID === currentInstanceUUID) {\n if (xmpModel) {\n setQuizModel(xmpModel);\n }\n setupPlayer(currentInstanceUUID);\n }\n });\n }\n });\n }\n });\n};\nvar captionChangeHandler = function captionChangeHandler(text) {\n if (iFrameBridge.isInIframe()) {\n iFrameBridge.postMessage('CAPTION-CHANGED', '*', text);\n }\n};\nvar setupBasicCss = function setupBasicCss() {\n _$rootSmartPlayerElement.addClass(cssClasses.smartPlayerNamespace);\n _$rootSmartPlayerElement.addClass(cssClasses.playerControlsVisible);\n if (playerConfiguration.getUseLargerProgressBar()) {\n _$rootSmartPlayerElement.addClass(cssClasses.largerProgressBar);\n }\n\n // mainly for backwards compat for pre-version 3.38.0 traverse parent-chain and set height/pad/etc if default\n if (playerConfiguration.getFullViewPort()) {\n _$rootSmartPlayerElement.parents().each(function (index, parentNode) {\n var $parentNode = $(parentNode);\n $parentNode.height('100%');\n if ($parentNode.prop('tagName').toLowerCase() === 'body') {\n $parentNode.css({\n margin: 0,\n padding: 0,\n border: 0,\n overflow: 'hidden'\n });\n }\n });\n }\n};\nvar addQueuedEventsToSmartPlayerView = function addQueuedEventsToSmartPlayerView() {\n Object.keys(_queuedEvents).forEach(function (eventName) {\n _queuedEvents[eventName].forEach(function (eventCallback) {\n addEventListener$1(eventName, eventCallback);\n });\n });\n};\nvar setQueuedConfigurationValuesToSmartPlayerView = function setQueuedConfigurationValuesToSmartPlayerView() {\n if (_queuedExternalConfiguration.volume !== undefined) {\n _smartPlayerView.volume = _queuedExternalConfiguration.volume;\n }\n if (_queuedExternalConfiguration.muted !== undefined) {\n _smartPlayerView.muted = _queuedExternalConfiguration.muted;\n }\n if (_queuedExternalConfiguration.playbackRate !== undefined) {\n _smartPlayerView.playbackRate = _queuedExternalConfiguration.playbackRate;\n }\n};\nvar initPlayerView = function initPlayerView(currentInstanceUUID, displayLocalWarning) {\n _smartPlayerView = SmartPlayerView$1.create(currentInstanceUUID, _$rootSmartPlayerElement, _mediaList, _xmp, _quizModel, _captionService, playerConfiguration, _responsiveController, _xmpInErrorState);\n _viewCreated = true;\n addQueuedEventsToSmartPlayerView();\n _smartPlayerView.initializedPromise.then(function () {\n if (_playerInstanceUUID === currentInstanceUUID) {\n _viewInitialized = true;\n setQueuedConfigurationValuesToSmartPlayerView();\n _smartPlayerView.addEventListener(events.External.VideoStartInitiated, playbackInitiatedHandler);\n _smartPlayerView.addEventListener(events.External.CaptionChange, captionChangeHandler);\n if (playerConfiguration.getAutoPlayMedia() || playerConfiguration.getForceAutoPlayMedia()) {\n _smartPlayerView.loadMedia();\n }\n if (displayLocalWarning) {\n MessageBarView$1.create(_$rootSmartPlayerElement, messageBarType.info, localizationStrings.getPlayerString(playerStringNames.xmpSecurity), localizationStrings.getPlayerString(playerStringNames.close));\n }\n }\n });\n};\nvar setupPlayer = function setupPlayer(currentInstanceUUID) {\n var displayLocalWarning = false;\n if (_currentPlayerType === playerType.IMAGE) {\n _$rootSmartPlayerElement.addClass('image-view');\n } else {\n _$rootSmartPlayerElement.addClass('video-view');\n }\n if (_xmp) {\n if (_xmp.hasCaptionItems) {\n if (iFrameBridge.isInIframe()) {\n iFrameBridge.postMessage('HAS-CAPTIONS', '*');\n }\n }\n }\n if (_quizModel && _quizModel.hasQuiz) {\n if (deviceInfo.isLocal() && _quizModel.reportMethod !== reportType.NONE) {\n displayLocalWarning = true;\n _quizModel.reportMethod = reportType.NONE;\n } else if (_quizModel.useScorm && _quizModel.totalNumberOfGradedQuestionSets === 0) {\n playerConfiguration.isScormLesson = true;\n }\n }\n if (playerConfiguration.isScormLesson) {\n scormController$1.init().then(function () {\n initPlayerView(currentInstanceUUID, displayLocalWarning);\n });\n } else {\n initPlayerView(currentInstanceUUID, displayLocalWarning);\n }\n};\nvar triggerEvent = function triggerEvent(eventName, data) {\n if (_$rootSmartPlayerElement) {\n _$rootSmartPlayerElement.trigger(eventName, data);\n }\n};\nvar init = function init(rootElementID) {\n _playerInstanceUUID = uuidGenerator$1.getUUID();\n performanceWrapper.createMarker(events.Timing.PlayerInitialized);\n _$rootSmartPlayerElement = $(rootElementID);\n setupBasicCss();\n initPlayer(_playerInstanceUUID);\n};\nvar getSmartPlayerRootElement = function getSmartPlayerRootElement() {\n return _$rootSmartPlayerElement;\n};\nvar destroy$1 = function destroy() {\n _playerInstanceUUID = null;\n _currentPlayerType = null;\n _mediaList = null;\n _xmp && _xmp.abortPendingRequests();\n _xmp = null;\n _quizModel = null;\n _viewCreated = false;\n _viewInitialized = false;\n _captionService = null;\n _queuedEvents = {};\n _queuedExternalConfiguration = {};\n _xmpInErrorState = false;\n fathomService.abortPendingRequests();\n localizationStrings.reset();\n if (_$rootSmartPlayerElement) {\n _smartPlayerView.removeEventListener(events.External.VideoStartInitiated, playbackInitiatedHandler);\n _smartPlayerView.removeEventListener(events.External.CaptionChange, captionChangeHandler);\n _smartPlayerView.destroy();\n _smartPlayerView = NullSmartPlayerView$1.create();\n _$rootSmartPlayerElement.removeClass(cssClasses.smartPlayerNamespace + ' ' + cssClasses.largerProgressBar + ' video-view image-view');\n _$rootSmartPlayerElement = null;\n }\n};\nvar getVersion = function getVersion() {\n return PLAYER_VERSION;\n};\nvar playMedia = function playMedia() {\n _smartPlayerView.play();\n};\nvar pauseMedia = function pauseMedia() {\n _smartPlayerView.pause();\n};\nvar queueEventHandler = function queueEventHandler(eventName, callback) {\n if (!_queuedEvents[eventName]) {\n _queuedEvents[eventName] = [];\n }\n _queuedEvents[eventName].push(callback);\n};\nvar dequeueEventHandler = function dequeueEventHandler(eventName, callback) {\n var eventEntry = _queuedEvents[eventName];\n if (eventEntry) {\n for (var i = 0; i < eventEntry.length; i++) {\n if (eventEntry[i] === callback) {\n eventEntry.splice(i, 1);\n break;\n }\n }\n if (eventEntry.length === 0) {\n _queuedEvents[eventName] = undefined;\n }\n }\n};\nvar addEventListener$1 = function addEventListener(eventName, callback) {\n if (!_viewCreated) {\n queueEventHandler(eventName, callback);\n } else if (externalVideoEventIsSupported(eventName)) {\n _smartPlayerView.addMediaEventListener(eventName, callback);\n } else {\n _smartPlayerView.addEventListener(eventName, callback);\n }\n};\nvar removeEventListener$1 = function removeEventListener(eventName, callback) {\n if (!_viewInitialized) {\n dequeueEventHandler(eventName, callback);\n } else if (externalVideoEventIsSupported(eventName)) {\n _smartPlayerView.removeMediaEventListener(eventName, callback);\n } else {\n _smartPlayerView.removeEventListener(eventName, callback);\n }\n};\nvar getCurrentSrc = function getCurrentSrc() {\n return _viewInitialized ? _smartPlayerView.currentSrc : playerConfiguration.getMediaSrc();\n};\nvar getCurrentTime = function getCurrentTime() {\n return _smartPlayerView.currentTime;\n};\nvar setCurrentTime = function setCurrentTime(timeInSeconds) {\n _smartPlayerView.currentTime = timeInSeconds;\n};\nvar getDuration = function getDuration() {\n return _smartPlayerView.duration;\n};\nvar getEnded = function getEnded() {\n return _smartPlayerView.ended;\n};\nvar getPaused = function getPaused() {\n return _smartPlayerView.paused;\n};\nvar getPlaybackRate = function getPlaybackRate() {\n return _smartPlayerView.playbackRate;\n};\nvar setPlaybackRate = function setPlaybackRate(playbackRate) {\n if (_viewInitialized) {\n _smartPlayerView.playbackRate = playbackRate;\n } else {\n _queuedExternalConfiguration.playbackRate = playbackRate;\n }\n};\nvar getBuffered = function getBuffered() {\n return _smartPlayerView.buffered;\n};\nvar getPlayed = function getPlayed() {\n return _smartPlayerView.played;\n};\nvar getSeekable = function getSeekable() {\n return _smartPlayerView.seekable;\n};\nvar getSeeking = function getSeeking() {\n return _smartPlayerView.seeking;\n};\nvar getVolume = function getVolume() {\n return _smartPlayerView.volume;\n};\nvar setVolume = function setVolume(volumeValue) {\n if (_viewInitialized) {\n _smartPlayerView.volume = volumeValue;\n } else {\n _queuedExternalConfiguration.volume = volumeValue;\n }\n};\nvar getMuted = function getMuted() {\n return _viewInitialized ? _smartPlayerView.muted : _queuedExternalConfiguration.muted;\n};\nvar setMuted$1 = function setMuted(isMuted) {\n if (_viewInitialized) {\n _smartPlayerView.muted = isMuted;\n } else {\n _queuedExternalConfiguration.muted = isMuted;\n }\n};\nvar isInFullScreenMode = function isInFullScreenMode() {\n return _smartPlayerView.isInFullScreenMode();\n};\nvar getScrubbing = function getScrubbing() {\n return _smartPlayerView.getScrubbing();\n};\nvar setScrubbing = function setScrubbing(isScrubbing) {\n _smartPlayerView.setScrubbing(isScrubbing);\n};\nvar getSafeSeekTime = function getSafeSeekTime(time) {\n return _smartPlayerView.getSafeSeekTime(time);\n};\nvar getCaptionsVisible = function getCaptionsVisible() {\n return _smartPlayerView.getCaptionsVisible();\n};\nvar setCaptionsVisible = function setCaptionsVisible(isVisible) {\n _smartPlayerView.setCaptionsVisible(isVisible);\n};\nvar getIsYouTube = function getIsYouTube() {\n return _mediaList ? mediaPlayerController.getPlayerType(_mediaList) === playerType.YOUTUBE : false;\n};\nvar getCaptionCollection = function getCaptionCollection() {\n return _captionService && _captionService.captionTrack && _captionService.captionTrack.captionCollection ? _captionService.captionTrack.captionCollection : null;\n};\nvar getCaptionTrack = function getCaptionTrack() {\n return _captionService.captionTrack;\n};\nvar setCaptionTrack = function setCaptionTrack(value) {\n _captionService.captionTrack = value;\n};\nvar getTocChapters = function getTocChapters() {\n if (!_xmp || !_xmp.hasTocItems) {\n return [];\n }\n return _xmp.tocItemArray;\n};\nvar getProgressBarDisplayWidth = function getProgressBarDisplayWidth() {\n return _smartPlayerView ? _smartPlayerView.progressBarDisplayWidth : 0;\n};\nvar getCurrentDisplayMode = function getCurrentDisplayMode() {\n return _smartPlayerView && _smartPlayerView.currentDisplayMode;\n};\nvar mediaPlayer = Object.defineProperties({\n init: init,\n destroy: destroy$1,\n getSmartPlayerRootElement: getSmartPlayerRootElement,\n getVersion: getVersion,\n jsSeekTime: setCurrentTime,\n jsPlay: playMedia,\n play: playMedia,\n pause: pauseMedia,\n getCurrentSrc: getCurrentSrc,\n getCurrentTime: getCurrentTime,\n setCurrentTime: setCurrentTime,\n getDuration: getDuration,\n getEnded: getEnded,\n getPaused: getPaused,\n getPlaybackRate: getPlaybackRate,\n setPlaybackRate: setPlaybackRate,\n getBuffered: getBuffered,\n getPlayed: getPlayed,\n getSeekable: getSeekable,\n getSeeking: getSeeking,\n getVolume: getVolume,\n setVolume: setVolume,\n getMuted: getMuted,\n setMuted: setMuted$1,\n isInFullScreenMode: isInFullScreenMode,\n getScrubbing: getScrubbing,\n setScrubbing: setScrubbing,\n getSafeSeekTime: getSafeSeekTime,\n addEventListener: addEventListener$1,\n removeEventListener: removeEventListener$1,\n triggerEvent: triggerEvent,\n getCaptionsVisible: getCaptionsVisible,\n setCaptionsVisible: setCaptionsVisible,\n getIsYouTube: getIsYouTube,\n getCaptionCollection: getCaptionCollection,\n getCaptionTrack: getCaptionTrack,\n setCaptionTrack: setCaptionTrack,\n getTocChapters: getTocChapters,\n getProgressBarDisplayWidth: getProgressBarDisplayWidth,\n getCurrentDisplayMode: getCurrentDisplayMode\n}, {});\n\n/**\n * @memberof TSC\n * @class Plugin\n * @classdesc Plugin Object\n * @param {String} pluginName - name of plugin\n * @param {String} viewElementType - view element type to install plugin into\n */\nvar Plugin = function Plugin(pluginName, viewElementType) {\n var _initialized = false;\n var _initializedPromiseResolve;\n var _initializedPromise = new Promise$1(function (resolve) {\n _initializedPromiseResolve = resolve;\n });\n var _pluginName = pluginName;\n var _viewElementType = viewElementType;\n\n /**\n * @function init\n * @memberOf TSC.Plugin\n * Initialize plugin with dom element container that will resolve initialized promise.\n * @param {HTMLElement} pluginContainerElement - dom element that will be the container for plugin UI\n */\n var init = function init(pluginContainerElement) {\n if (_initialized) {\n return;\n }\n _initialized = true;\n _initializedPromiseResolve({\n pluginContainerElement: pluginContainerElement\n });\n };\n return Object.defineProperties({\n init: init\n }, {\n initialized: {\n get: function get() {\n return _initialized;\n }\n },\n initializedPromise: {\n get: function get() {\n return _initializedPromise;\n }\n },\n pluginName: {\n get: function get() {\n return _pluginName;\n }\n },\n viewElementType: {\n get: function get() {\n return _viewElementType;\n }\n }\n });\n};\nvar Plugin$1 = {\n /**\n * Factory method that returns a new Plugin object.\n * @function create\n * @memberof TSC.Plugin\n * @static\n * @return new Plugin instance\n */\n create: Plugin\n};\n\nvar REMOVE_SPACES_REGEX = /\\s+/g;\n\n/**\n * @memberof TSC\n * @class PluginController\n * @classdesc Plugin Controller to wire up external plugins\n */\nvar PluginController = function PluginController() {\n var _plugins = {};\n\n /**\n * @function isViewElementTypeSupported\n * Check to see if a viewElementType is supported.\n * @param {String} viewElementType - view element type for plugin\n * @return {Boolean} return if passed in viewElementType is supported.\n */\n var isViewElementTypeSupported = function isViewElementTypeSupported(viewElementType) {\n return Object.keys(supportedPluginViewElements).some(function (key) {\n return supportedPluginViewElements[key] === viewElementType;\n });\n };\n\n /**\n * @function getPluginsForViewElementType\n * Get a list of plugin objects for the passed in view element type.\n * @param {String} viewElementType - view element type for plugin\n * @return {Array} return an array of supported plugins for the passed in view element type\n */\n var getPluginsForViewElementType = function getPluginsForViewElementType(viewElementType) {\n return Object.keys(_plugins).filter(function (key) {\n return _plugins[key].viewElementType === viewElementType;\n }).map(function (key) {\n return _plugins[key];\n });\n };\n\n /**\n * @function getPluginContainerElement\n * Get a new div element setup for a plugin to append elements to.\n * @param {String} pluginName - name of plugin\n * @return {Element} return a new div element setup for old plugin dom\n */\n var getPluginContainerElement = function getPluginContainerElement(pluginName) {\n var pluginNameNoSpaces = pluginName.replace(REMOVE_SPACES_REGEX, '');\n var pluginNamedContainerClassName = cssClasses.pluginNamedContainerPrefix + pluginNameNoSpaces;\n var pluginContainerElement = document.createElement('div');\n pluginContainerElement.classList.add(cssClasses.generatedPluginContainer);\n pluginContainerElement.classList.add(pluginNamedContainerClassName);\n return pluginContainerElement;\n };\n\n /**\n * @function registerPlugin\n * @methodOf TSC.PluginController\n * @param {String} pluginName - name of plugin\n * @param {String} viewElementType - view element type to install plugin into\n * @return {Promise} return a promise that resolves when the specified view element has initialized the plugin\n */\n var registerPlugin = function registerPlugin(pluginName, viewElementType) {\n if (_plugins[pluginName]) {\n var pluginSameNameMessage = 'Plugin with name [' + pluginName + '] is already registered with the player.';\n log.logMessage(pluginSameNameMessage);\n return Promise$1.reject(pluginSameNameMessage);\n }\n if (!isViewElementTypeSupported(viewElementType)) {\n var pluginUnsupportedViewElementMessage = 'Plugin with name [' + pluginName + '] is registering with an unsupported view element [' + viewElementType + '].';\n log.logMessage(pluginUnsupportedViewElementMessage);\n return Promise$1.reject(pluginUnsupportedViewElementMessage);\n }\n var plugin = Plugin$1.create(pluginName, viewElementType);\n _plugins[pluginName] = plugin;\n return plugin.initializedPromise;\n };\n\n /**\n * @function initializePluginsForViewElement\n * @methodOf TSC.PluginController\n * Initialize all registered plugins for the passed in view element type\n * @param {String} viewElementType - view element type\n * @param {jQuery} $viewElementPluginContainer - jQuery element to add plugin dom elements into.\n */\n var initializePluginsForViewElement = function initializePluginsForViewElement(viewElementType, $viewElementPluginContainer) {\n if (!isViewElementTypeSupported(viewElementType)) {\n log.logMessage('Tried to initialize plugin with unsupported view element type [' + viewElementType + ']');\n return;\n }\n var elementTypePlugins = getPluginsForViewElementType(viewElementType);\n elementTypePlugins.forEach(function (plugin) {\n if (plugin.initialized) {\n return;\n }\n var pluginContainerElement = getPluginContainerElement(plugin.pluginName);\n $viewElementPluginContainer.append(pluginContainerElement);\n plugin.init(pluginContainerElement);\n });\n if (elementTypePlugins.length === 0) {\n $viewElementPluginContainer.hide();\n } else {\n $viewElementPluginContainer.show();\n }\n };\n return Object.defineProperties({\n registerPlugin: registerPlugin,\n initializePluginsForViewElement: initializePluginsForViewElement\n }, {});\n};\nvar PluginController$1 = {\n /**\n * Factory method that returns a new PluginController object.\n * @function create\n * @memberof TSC.PluginController\n * @static\n * @return new PluginController instance\n */\n create: PluginController\n};\n\nvar CamtasiaQuizPreviewView = function CamtasiaQuizPreviewView($container, xmpString) {\n var xmpModel = Xmp.create();\n xmpModel.parse(xmpString);\n return xmpModel.ready.then(function () {\n playerConfiguration.configureFromXmp(xmpModel);\n localizationStrings.configureFromXmp(xmpModel);\n var beforeAfterPlayControlsView = BeforeAfterPlayControlsView$1.create($container, playerConfiguration);\n var noOp = function noOp() {}; // eslint-disable-line\n var playerMarkup = templateGenerator.generateVideoViewMarkup('quiz-preview-' + new Date().getTime());\n $container.html(playerMarkup);\n var ioOverlayView = IoOverlayView$1.create($container);\n var mediaView = VideoElementView$1.create($container, $container.find('.media-container'), ['video.mp4'], true, noOp, noOp, ioOverlayView);\n\n // hack Camtasia quiz preview template to display preview correctly\n var previewElement = document.getElementsByClassName('video-view');\n if (previewElement.length > 0) {\n previewElement[0].style.height = '100%';\n }\n mediaView.mediaElement.style.display = 'none';\n var quizModel = Quiz$1.create(xmpModel);\n var quizController = QuizController$1.create($container, mediaView, quizModel, beforeAfterPlayControlsView, true);\n quizController.displayNextQuestionSet();\n });\n};\nvar CamtasiaQuizPreviewView$1 = {\n create: CamtasiaQuizPreviewView\n};\n\nvar dependencies = {\n\t\"@techsmith/tsc-cloud-style-guide\": \"^24.0.0\",\n\t\"@techsmith/tsc-media-extensions-js\": \"10.7.2\",\n\tjquery: \"^3.5.1\",\n\tpepjs: \"0.4.3\",\n\t\"promise-polyfill\": \"^8.1.0\",\n\ttinycolor2: \"^1.4.1\"\n};\nvar devDependencies = {\n\t\"@babel/core\": \"^7.20.12\",\n\t\"@babel/preset-env\": \"^7.12.13\",\n\t\"@rollup/plugin-alias\": \"^5.1.0\",\n\t\"@rollup/plugin-babel\": \"^6.0.4\",\n\t\"@rollup/plugin-commonjs\": \"^25.0.7\",\n\t\"@rollup/plugin-json\": \"^6.1.0\",\n\t\"@rollup/plugin-node-resolve\": \"^15.2.3\",\n\t\"@rollup/plugin-terser\": \"^0.4.4\",\n\tautoprefixer: \"^6.3.5\",\n\t\"axe-core\": \"^3.2.2\",\n\tcommander: \"^12.0.0\",\n\tcompressing: \"^1.5.0\",\n\tcssnano: \"^3.5.2\",\n\tcypress: \"^10.6.0\",\n\t\"cypress-axe\": \"^1.0.0\",\n\t\"cypress-intellij-reporter\": \"^0.0.7\",\n\tesbuild: \"^0.17.4\",\n\teslint: \"^7.5.0\",\n\t\"eslint-config-techsmith\": \"^1.1.0\",\n\tgrunt: \"~1.6.1\",\n\t\"grunt-banner\": \"^0.6.0\",\n\t\"grunt-cdnify\": \"~1.0.2\",\n\t\"grunt-cli\": \"~1.4.3\",\n\t\"grunt-contrib-clean\": \"~2.0.0\",\n\t\"grunt-contrib-concat\": \"^1.0.1\",\n\t\"grunt-contrib-connect\": \"~2.0.0\",\n\t\"grunt-contrib-copy\": \"~1.0.0\",\n\t\"grunt-contrib-less\": \"^2.0.0\",\n\t\"grunt-contrib-watch\": \"~1.1.0\",\n\t\"grunt-downloadfile\": \"^2.1.1\",\n\t\"grunt-htmlrefs\": \"~0.5.0\",\n\t\"grunt-md2html\": \"~0.3.1\",\n\t\"grunt-newer\": \"~1.3.0\",\n\t\"grunt-open\": \"~0.2.4\",\n\t\"grunt-postcss\": \"^0.9.0\",\n\t\"grunt-replace\": \"~1.0.1\",\n\t\"grunt-shell\": \"^3.0.1\",\n\t\"jasmine-core\": \"^2.5.2\",\n\tkarma: \"^6.3.20\",\n\t\"karma-chrome-launcher\": \"^2.2.0\",\n\t\"karma-jasmine\": \"^1.1.2\",\n\t\"karma-mocha-reporter\": \"^2.2.5\",\n\t\"karma-rollup-preprocessor\": \"^7.0.0\",\n\t\"load-grunt-tasks\": \"^0.4.0\",\n\tlodash: \"^4.17.19\",\n\tmarkdown: \"^0.5.0\",\n\t\"postcss-assets\": \"^4.0.1\",\n\t\"postcss-svg\": \"^1.0.6\",\n\trollup: \"^4.14.0\",\n\t\"rollup-plugin-filesize\": \"^10.0.0\",\n\t\"rollup-plugin-glob-import\": \"^0.5.0\",\n\t\"rollup-plugin-license\": \"^3.3.1\",\n\t\"time-grunt\": \"^2.0.0\",\n\tyamljs: \"^0.2.4\"\n};\nvar license = \"UNLICENSED\";\nvar main = \"dist/techsmith-smart-player.js\";\nvar module$1 = \"dist/techsmith-smart-player.esm.js\";\nvar name = \"@techsmith/techsmith-smartplayer\";\nvar preferGlobal = false;\nvar repository = {\n\ttype: \"git\",\n\turl: \"https://github.com/TechSmith/SmartPlayer.git\"\n};\nvar scripts = {\n\tbuildSmartPlayerIife: \"npx rollup --config rollup.config.mjs --config-env production --config-package smartplayer --config-format iife\",\n\tbuildEmbedIife: \"npx rollup --config rollup.config.mjs --config-env production --config-package embed --config-format iife\",\n\tbuildSmartPlayerEsm: \"npx rollup --config rollup.config.mjs --config-env production --config-package smartplayer --config-format esm\",\n\tbuildPreRollIife: \"npx rollup --config rollup.config.mjs --config-env production --config-package preroll --config-format iife\",\n\tdevSmartPlayerIife: \"npx rollup --config rollup.config.mjs --config-env development --config-package smartplayer --config-format iife\",\n\tdevSmartPlayerEsm: \"npx rollup --config rollup.config.mjs --config-env development --config-package smartplayer --config-format esm\",\n\tdevEmbedIife: \"npx rollup --config rollup.config.mjs --config-env development --config-package embed --config-format iife\",\n\tdevPreRollIife: \"npx rollup --config rollup.config.mjs --config-env development --config-package preroll --config-format iife\",\n\tdevESBIife: \"node ./esbuild.config.js --config-env development --config-package smartplayer --config-format iife\",\n\tdevESBEmbedIife: \"node ./esbuild.config.js --config-env development --config-package embed --config-format iife\",\n\tdevESBPrerollIife: \"node ./esbuild.config.js --config-env development --config-package preroll --config-format iife\",\n\tdevESBIEsm: \"node ./esbuild.config.js --config-env development --config-package smartplayer --config-format esm\",\n\t\"integration-release\": \"grunt integration --rs='bin/integration'\",\n\tlint: \"npx eslint html5/**/*.js\",\n\t\"lint-fix\": \"npx eslint html5/**/*.js --fix\",\n\ttest: \"npx karma start ./karma.config.js --single-run\",\n\t\"test-watch\": \"npx karma start ./karma.config.js\"\n};\nvar version = \"5.121.0\";\nvar packageJson = {\n\tdependencies: dependencies,\n\tdevDependencies: devDependencies,\n\tlicense: license,\n\tmain: main,\n\tmodule: module$1,\n\tname: name,\n\tpreferGlobal: preferGlobal,\n\trepository: repository,\n\tscripts: scripts,\n\tversion: version\n};\n\nvar timeCodeRegex = /^((0?[0-9]:)?[0-5]?[0-9]):([0-5][0-9]) /;\nvar newlineRegex = /\\r?\\n/g;\nvar milliseconds = 1000;\nvar defaultStartTime = 0;\nvar defaultChapterName = localizationStrings.getPlayerString(playerStringNames.defaultFirstChapterName);\nvar getChapterNameFromLineString = function getChapterNameFromLineString(lineString) {\n return lineString.indexOf(' ') === -1 ? defaultChapterName : lineString.substring(lineString.indexOf(' '), lineString.length).trim();\n};\nvar createTocItem = function createTocItem(chapterName, startTime) {\n var chapterParams = {\n name: chapterName,\n startTime: startTime\n };\n if (playerConfiguration.videoThumbnailsSrc) {\n chapterParams.image = playerConfiguration.videoThumbnailsSrc;\n var rect = getThumbnailRectangleByTime(startTime / milliseconds, playerConfiguration.videoThumbnailInterval, playerConfiguration.videoThumbnailColumns, playerConfiguration.videoThumbnailWidth, playerConfiguration.videoThumbnailHeight);\n chapterParams.imageRectangle = ImageRectangle$1.create({\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n });\n }\n return TableOfContentsItem$1.create(chapterParams);\n};\nvar parseTableOfContentsItemFromString = function parseTableOfContentsItemFromString(lineString) {\n var timecodes = lineString.match(timeCodeRegex);\n if (timecodes) {\n var chapterName = getChapterNameFromLineString(lineString);\n var chapterStartTime = timeFormatter.convertTimecodeToMilliseconds(timecodes[0]);\n return createTocItem(chapterName, chapterStartTime);\n }\n};\n\n/**\n * Utility function will take a block of text as a string and parse it looking for chapter information to convert to a TOC Model.\n * @function textToTocModel\n * @param {String} textString - A string of text to search to see if it contains chapter information to convert to a TOC model.\n * @returns {TableOfContentsTrack} Table of Contents Track object from TSC media extensions lib.\n */\nvar textToTocModel = function textToTocModel(textString) {\n if (!textString || typeof textString !== 'string') {\n return null;\n }\n var textSplitNewlines = textString.split(newlineRegex);\n var chapterItems = [];\n var previousTocItemStartTime = -1;\n textSplitNewlines.forEach(function (textLine) {\n if (timeCodeRegex.test(textLine)) {\n var tocItem = parseTableOfContentsItemFromString(textLine);\n if (tocItem && tocItem.startTime > previousTocItemStartTime) {\n previousTocItemStartTime = tocItem.startTime;\n chapterItems.push(tocItem);\n }\n }\n });\n\n // insert a default chapter at time 0 if the input did not specify one\n if (chapterItems.length && chapterItems[0].startTime !== 0) {\n chapterItems.unshift(createTocItem(defaultChapterName, defaultStartTime));\n }\n return chapterItems.length ? TableOfContentsTrack$1.create({\n items: chapterItems\n }) : null;\n};\n\nvar deprecatedConfigSetter = function deprecatedConfigSetter(deprecatedName) {\n console.info(\"[SmartPlayer] \".concat(deprecatedName, \" setter is deprecated.\")); // eslint-disable-line no-console\n};\nvar deprecatedConfigGetter = function deprecatedConfigGetter(deprecatedName, returnValue) {\n console.info(\"[SmartPlayer] \".concat(deprecatedName, \" getter is deprecated.\")); // eslint-disable-line no-console\n return returnValue;\n};\n\nvar _started = false;\nvar _controls = mediaInterfaceConstants.controls.autohide;\nvar _authInfo = {};\nvar _lastError = null;\nvar _pluginController = null;\nvar addEventListener = function addEventListener(eventName, callback) {\n if (eventName === events.External.AnalyticsEvent || eventName === events.External.GoogleAnalyticsCustomEvent) {\n playerConfiguration.useCustomEventTracking(true, callback);\n } else if (eventName === events.External.GoogleAnalytics4Event) {\n playerConfiguration.setGA4EventCallback(callback);\n } else {\n mediaPlayer.addEventListener(eventName, callback);\n }\n};\nvar removeEventListener = function removeEventListener(eventName, callback) {\n if (eventName === events.External.AnalyticsEvent || eventName === events.External.GoogleAnalyticsCustomEvent) {\n playerConfiguration.useCustomEventTracking(false, callback);\n } else if (eventName === events.External.GoogleAnalytics4Event) {\n playerConfiguration.setGA4EventCallback(null);\n } else {\n mediaPlayer.removeEventListener(eventName, callback);\n }\n};\nvar setAutoPlay = function setAutoPlay(value) {\n playerConfiguration.setAutoPlayMedia(String(value).toLowerCase() === 'true');\n};\nvar getControls = function getControls() {\n return _controls;\n};\nvar setControls = function setControls(value) {\n var lowerCaseValue = String(value).toLowerCase();\n if (lowerCaseValue === mediaInterfaceConstants.controls[\"false\"]) {\n _controls = mediaInterfaceConstants.controls[\"false\"];\n playerConfiguration.setDisableControls(true);\n playerConfiguration.setAutoHideControls(false);\n playerConfiguration.setDisableYouTubeControls(true);\n } else if (lowerCaseValue === mediaInterfaceConstants.controls[\"true\"]) {\n _controls = mediaInterfaceConstants.controls[\"true\"];\n playerConfiguration.setDisableControls(false);\n playerConfiguration.setAutoHideControls(false);\n playerConfiguration.setDisableYouTubeControls(true);\n } else if (lowerCaseValue === mediaInterfaceConstants.controls.youtube) {\n _controls = mediaInterfaceConstants.controls.youtube;\n playerConfiguration.setDisableControls(true);\n playerConfiguration.setAutoHideControls(false);\n playerConfiguration.setDisableYouTubeControls(false);\n } else {\n // default 'autohide'\n _controls = mediaInterfaceConstants.controls.autohide;\n playerConfiguration.setDisableControls(false);\n playerConfiguration.setAutoHideControls(true);\n playerConfiguration.setDisableYouTubeControls(true);\n }\n mediaPlayer.triggerEvent(events.Controls.Updated);\n};\nvar setDisableInteractions = function setDisableInteractions(disableInteractions) {\n playerConfiguration.setDisableInteractions(disableInteractions);\n mediaPlayer.triggerEvent(events.Controls.Updated);\n};\nvar getLoop = function getLoop() {\n var endActionParam = playerConfiguration.getEndActionParam();\n return playerConfiguration.getEndActionType().toLowerCase() === 'loop' && (endActionParam === 'true' || endActionParam === '1');\n};\nvar setLoop = function setLoop(value) {\n if (String(value).toLowerCase() === 'true') {\n playerConfiguration.setEndActionType('loop');\n playerConfiguration.setEndActionParam('true');\n } else {\n playerConfiguration.setEndActionType('stop');\n playerConfiguration.setEndActionParam('true');\n }\n};\nvar getError = function getError() {\n return _lastError;\n};\nvar setMuted = function setMuted(value) {\n mediaPlayer.setMuted(String(value).toLowerCase() === 'true');\n};\nvar getContextMenuEnabled = function getContextMenuEnabled() {\n return !playerConfiguration.getDisableContextMenuForVideo();\n};\nvar setContextMenuEnabled = function setContextMenuEnabled(value) {\n playerConfiguration.setDisableContextMenuForVideo(!value);\n};\nvar getQuizCreateInstanceUrl = function getQuizCreateInstanceUrl() {\n return quizService.getQuizCreateInstanceUrl();\n};\nvar setQuizCreateInstanceUrl = function setQuizCreateInstanceUrl(value) {\n quizService.setQuizCreateInstanceUrl(value);\n};\nvar getAuthInfo = function getAuthInfo() {\n return _authInfo;\n};\nvar setAuthInfo = function setAuthInfo(value) {\n if (_typeof$1(value) === 'object') {\n _authInfo = $.extend(_authInfo, value);\n }\n};\nvar addMediaSrc = function addMediaSrc(src) {\n playerConfiguration.addMediaSrc(src);\n};\nvar generalErrorHandler = function generalErrorHandler(event) {\n _lastError = event.data;\n};\nvar run = function run(containerId) {\n if (_started) {\n return;\n }\n deviceInfo.lookAtDevice();\n if (_authInfo.accessTokenEndpoint) {\n playerConfiguration.setTechSmithAccessTokenEndpoint(_authInfo.accessTokenEndpoint);\n }\n playerConfiguration.setDisableFullframeMode(true);\n playerConfiguration.setFullViewPort(false);\n mediaPlayer.init('#' + containerId);\n addEventListener('error', generalErrorHandler);\n _started = true;\n};\nvar destroy = function destroy() {\n if (!_started) {\n return;\n }\n var $spElement = mediaPlayer.getSmartPlayerRootElement();\n removeEventListener('error', generalErrorHandler);\n mediaPlayer.destroy();\n if ($spElement) {\n $spElement.removeClass();\n $spElement.empty();\n }\n playerConfiguration.clearConfiguration();\n _started = false;\n _controls = mediaInterfaceConstants.controls.autohide;\n _authInfo = {};\n _lastError = null;\n _pluginController = null;\n};\nvar setTheme = function setTheme(themeName) {\n themeController.setTheme(themeName);\n};\nvar setupPluginController = function setupPluginController() {\n _pluginController = PluginController$1.create();\n playerConfiguration.setPluginController(_pluginController);\n};\nvar registerPlugin = function registerPlugin(pluginName, viewElementType) {\n if (!_pluginController) {\n setupPluginController();\n }\n var pluginInitPromise = _pluginController.registerPlugin(pluginName, viewElementType);\n mediaPlayer.triggerEvent(events.Plugin.Added, {\n viewElementType: viewElementType\n });\n return pluginInitPromise;\n};\nvar displayQuizPreview = function displayQuizPreview(containerElement, xmpString) {\n var $container = $(containerElement);\n CamtasiaQuizPreviewView$1.create($container, xmpString);\n};\nvar displayImageFullscreen = function displayImageFullscreen() {\n mediaPlayer.triggerEvent(events.External.SwitchToFullscreen);\n};\nvar exitImageFullscreen = function exitImageFullscreen() {\n mediaPlayer.triggerEvent(events.External.ExitFullscreen);\n};\nvar createTocFromDescription = function createTocFromDescription(descriptionText) {\n if (descriptionText && typeof descriptionText === 'string') {\n var tocModel = textToTocModel(decodeURIComponent(descriptionText));\n if (tocModel) {\n playerConfiguration.tocModelFromDescription = tocModel;\n }\n }\n};\nvar mediaInterfaceController = Object.defineProperties({\n play: mediaPlayer.play,\n pause: mediaPlayer.pause,\n addEventListener: addEventListener,\n removeEventListener: removeEventListener,\n addSrc: addMediaSrc,\n addCaptionSrc: playerConfiguration.addCaptionSrc,\n run: run,\n destroy: destroy,\n setTheme: setTheme,\n registerPlugin: registerPlugin,\n displayQuizPreview: displayQuizPreview,\n displayImageFullscreen: displayImageFullscreen,\n exitImageFullscreen: exitImageFullscreen,\n getSafeSeekTime: mediaPlayer.getSafeSeekTime,\n createTocFromDescription: createTocFromDescription\n}, {\n version: {\n get: function get() {\n return packageJson.version;\n }\n },\n autoplay: {\n get: playerConfiguration.getAutoPlayMedia,\n set: setAutoPlay\n },\n controls: {\n get: getControls,\n set: setControls\n },\n disableInteractions: {\n get: playerConfiguration.getDisableInteractions,\n set: setDisableInteractions\n },\n currentSrc: {\n get: mediaPlayer.getCurrentSrc\n },\n currentTime: {\n get: mediaPlayer.getCurrentTime,\n set: mediaPlayer.setCurrentTime\n },\n duration: {\n get: mediaPlayer.getDuration\n },\n error: {\n get: getError\n },\n ended: {\n get: mediaPlayer.getEnded\n },\n loop: {\n get: getLoop,\n set: setLoop\n },\n muted: {\n get: mediaPlayer.getMuted,\n set: setMuted\n },\n paused: {\n get: mediaPlayer.getPaused\n },\n playbackRate: {\n get: mediaPlayer.getPlaybackRate,\n set: mediaPlayer.setPlaybackRate\n },\n buffered: {\n get: mediaPlayer.getBuffered\n },\n played: {\n get: mediaPlayer.getPlayed\n },\n seekable: {\n get: mediaPlayer.getSeekable\n },\n preload: {\n get: playerConfiguration.getPreload,\n set: playerConfiguration.setPreload\n },\n seeking: {\n get: mediaPlayer.getSeeking\n },\n volume: {\n get: mediaPlayer.getVolume,\n set: mediaPlayer.setVolume\n },\n src: {\n get: playerConfiguration.getMediaSrc,\n set: playerConfiguration.setMediaSrc\n },\n // these are the SP extended interface options\n posterSrc: {\n get: playerConfiguration.getPosterImageSrc,\n set: playerConfiguration.setPosterImageSrc\n },\n xmpSrc: {\n get: playerConfiguration.getXMPSrc,\n set: playerConfiguration.setXMPSrc\n },\n tocSrc: {\n get: playerConfiguration.getTOCSpriteSrc,\n set: playerConfiguration.setTOCSpriteSrc\n },\n mediaTitle: {\n get: playerConfiguration.getMediaTitle,\n set: playerConfiguration.setMediaTitle\n },\n tocTitle: {\n get: playerConfiguration.getTOCTitle,\n set: playerConfiguration.setTOCTitle\n },\n tocChapters: {\n get: mediaPlayer.getTocChapters\n },\n prerollSrc: {\n get: playerConfiguration.getPreRollSrc,\n set: playerConfiguration.setPreRollSrc\n },\n audioDescriptionMediaSrc: {\n get: playerConfiguration.getAudioDescriptionMediaSrc,\n set: playerConfiguration.setAudioDescriptionMediaSrc\n },\n quizId: {\n get: playerConfiguration.getFathomId,\n set: playerConfiguration.setFathomId\n },\n quizCreateInstanceUrl: {\n get: getQuizCreateInstanceUrl,\n set: setQuizCreateInstanceUrl\n },\n background: {\n get: playerConfiguration.getBackgroundColor,\n set: playerConfiguration.setBackgroundColor\n },\n captions: {\n get: mediaPlayer.getCaptionCollection\n },\n captionTrack: {\n get: mediaPlayer.getCaptionTrack,\n set: mediaPlayer.setCaptionTrack\n },\n captionsVisible: {\n get: mediaPlayer.getCaptionsVisible,\n set: mediaPlayer.setCaptionsVisible\n },\n ignoreStoredCaptionVisible: {\n get: playerConfiguration.getIgnoreStoredCaptionVisibleSetting,\n set: playerConfiguration.setIgnoreStoredCaptionVisibleSetting\n },\n rotation: {\n get: playerConfiguration.getMediaRotation,\n set: playerConfiguration.setMediaRotation\n },\n scrubbing: {\n get: mediaPlayer.getScrubbing,\n set: mediaPlayer.setScrubbing\n },\n isYouTube: {\n get: mediaPlayer.getIsYouTube\n },\n isInFullScreenMode: {\n get: mediaPlayer.isInFullScreenMode\n },\n authInfo: {\n get: getAuthInfo,\n set: setAuthInfo\n },\n // debug layer flags\n contextMenu: {\n get: getContextMenuEnabled,\n set: setContextMenuEnabled\n },\n isIphoneOrIpod: {\n get: deviceInfo.isIPhoneOrIPod\n },\n endActionType: {\n get: playerConfiguration.getEndActionType,\n set: playerConfiguration.setEndActionType\n },\n endActionParam: {\n get: playerConfiguration.getEndActionParam,\n set: playerConfiguration.setEndActionParam\n },\n ignoreXmpControllerParameters: {\n get: playerConfiguration.getIgnoreXmpControllerParameters,\n set: playerConfiguration.setIgnoreXmpControllerParameters\n },\n ignoreQuizQuestions: {\n get: playerConfiguration.getIgnoreQuizQuestions,\n set: playerConfiguration.setIgnoreQuizQuestions\n },\n singleClickControlEnabled: {\n get: playerConfiguration.getEnableSingleClickControl,\n set: playerConfiguration.setEnableSingleClickControl\n },\n doubleClickControlEnabled: {\n get: playerConfiguration.getEnableDoubleClickControl,\n set: playerConfiguration.setEnableDoubleClickControl\n },\n useLargerProgressBar: {\n get: playerConfiguration.getUseLargerProgressBar,\n set: playerConfiguration.setUseLargerProgressBar\n },\n displayHotspotsShape: {\n get: playerConfiguration.getDisplayHotspotsShape,\n set: playerConfiguration.setDisplayHotspotsShape\n },\n disablePictureInPicture: {\n get: playerConfiguration.getDisablePictureInPicture,\n set: playerConfiguration.setDisablePictureInPicture\n },\n contentBase: {\n get: playerConfiguration.getContentBase,\n set: playerConfiguration.setContentBase\n },\n skipVideoControlsEnabled: {\n get: playerConfiguration.getSkipVideoControlsEnabled,\n set: playerConfiguration.setSkipVideoControlsEnabled\n },\n skipVideoDuration: {\n get: playerConfiguration.getSkipVideoDuration,\n set: playerConfiguration.setSkipVideoDuration\n },\n allowFastForward: {\n get: playerConfiguration.getAllowFastForward,\n set: playerConfiguration.setAllowFastForward\n },\n showADACompliantCaptions: {\n get: playerConfiguration.getShowADACompliantCaptions,\n set: playerConfiguration.setShowADACompliantCaptions\n },\n rememberUserInfo: {\n get: playerConfiguration.getRememberUserInfo,\n set: playerConfiguration.setRememberUserInfo\n },\n userInfo: {\n get: playerConfiguration.getUserInfo,\n set: playerConfiguration.setUserInfo\n },\n userSignedIn: {\n get: playerConfiguration.getUserSignedIn,\n set: playerConfiguration.setUserSignedIn\n },\n disableContinueWithoutQuestions: {\n get: playerConfiguration.getDisableContinueWithoutQuestions,\n set: playerConfiguration.setDisableContinueWithoutQuestions\n },\n logScormApiCalls: {\n get: playerConfiguration.getLogScormApiCalls,\n set: playerConfiguration.setLogScormApiCalls\n },\n videoThumbnailsSrc: {\n get: playerConfiguration.getVideoThumbnailSrc,\n set: playerConfiguration.setVideoThumbnailSrc\n },\n videoThumbnailWidth: {\n get: playerConfiguration.getVideoThumbnailWidth,\n set: playerConfiguration.setVideoThumbnailWidth\n },\n videoThumbnailHeight: {\n get: playerConfiguration.getVideoThumbnailHeight,\n set: playerConfiguration.setVideoThumbnailHeight\n },\n videoThumbnailInterval: {\n get: playerConfiguration.getVideoThumbnailInterval,\n set: playerConfiguration.setVideoThumbnailInterval\n },\n videoThumbnailColumns: {\n get: playerConfiguration.getVideoThumbnailColumns,\n set: playerConfiguration.setVideoThumbnailColumns\n },\n completeScormOnRequirementsComplete: {\n get: playerConfiguration.getCompleteScormOnRequirementsComplete,\n set: playerConfiguration.setCompleteScormOnRequirementsComplete\n },\n progressBarWidth: {\n get: mediaPlayer.getProgressBarDisplayWidth\n },\n quizServiceBaseUrl: {\n get: playerConfiguration.getQuizServiceBaseUrl,\n set: playerConfiguration.setQuizServiceBaseUrl\n },\n resultsServiceBaseUrl: {\n get: playerConfiguration.getResultsServiceBaseUrl,\n set: playerConfiguration.setResultsServiceBaseUrl\n },\n customFullScreenDomElement: {\n get: playerConfiguration.getCustomFullScreenDomElement,\n set: playerConfiguration.setCustomFullScreenDomElement\n },\n enableTheaterMode: {\n get: playerConfiguration.getEnableTheaterMode,\n set: playerConfiguration.setEnableTheaterMode\n },\n currentDisplayMode: {\n get: function get() {\n return mediaPlayer.getCurrentDisplayMode() || DisplayModes.Normal;\n }\n },\n ga4EventCallback: {\n get: playerConfiguration.getGA4EventCallback,\n set: playerConfiguration.setGA4EventCallback\n },\n showAcknowledgementLink: {\n get: playerConfiguration.getShowAcknowledgementLink,\n set: playerConfiguration.setShowAcknowledgementLink\n },\n // deprecated\n environment: {\n get: function get() {\n return deprecatedConfigGetter('mediaInterface.environment', 0);\n },\n set: function set() {\n deprecatedConfigSetter('mediaInterface.environment');\n }\n }\n});\n\nexport { deviceInfo, DisplayModes as displayModes, events, fathomService, languageCodes, localizationStrings, log, mediaInterfaceController as mediaInterface, mediaInterfaceConstants, mediaPlayer, playerConfiguration, preloadOptions, quizService, scormController$1 as scormController, supportedPluginViewElements, themeNames };\n//# sourceMappingURL=techsmith-smart-player.esm.js.map\n"],"names":["commonjsGlobal","globalThis","window","g","self","getDefaultExportFromCjs","x","__esModule","Object","prototype","hasOwnProperty","call","module","exports","MOUSE_PROPS","MOUSE_DEFAULTS","PointerEvent","inType","inDict","create","e","document","createEvent","initEvent","bubbles","cancelable","p","i","length","buttons","pressure","clientX","y","clientY","pointerId","width","height","tiltX","tiltY","twist","tangentialPressure","pointerType","hwTimestamp","isPrimary","PointerMap","Map","forEach","SparseArrayMap","this","array","size","set","k","v","undefined","has","get","clear","callback","thisArg","CLONE_PROPS","CLONE_DEFAULTS","BOUNDARY_EVENTS","HAS_SVG_INSTANCE","SVGElementInstance","dispatcher","pointermap","eventMap","captureInfo","eventSources","eventSourceList","registerSource","name","source","s","newEvents","events","bind","push","register","element","es","l","unregister","contains","container","contained","ex","down","inEvent","fireEvent","move","up","enter","leave","over","out","cancel","leaveOut","event","propagate","enterOver","eventHandler","_handledByPE","type","fn","listen","target","addEvent","unlisten","removeEvent","eventName","addEventListener","boundHandler","removeEventListener","makeEvent","relatedTarget","preventDefault","_target","dispatchEvent","cloneEvent","eventCopy","correspondingUseElement","getTarget","capture","propagateDown","targets","parentNode","reverse","setCapture","inPointerId","inTarget","skipDispatch","releaseCapture","implicitRelease","asyncDispatchEvent","t","requestAnimationFrame","targeting","shadow","inEl","shadowRoot","webkitShadowRoot","canTarget","Boolean","elementFromPoint","targetingShadow","olderShadow","os","olderShadowRoot","se","querySelector","allShadows","shadows","searchRoot","inRoot","st","sr","ssr","owner","nodeType","Node","DOCUMENT_NODE","DOCUMENT_FRAGMENT_NODE","findTarget","Array","map","toArray","slice","filter","MO","MutationObserver","WebKitMutationObserver","SELECTOR","OBSERVER_INIT","subtree","childList","attributes","attributeOldValue","attributeFilter","Installer","add","remove","changed","binder","addCallback","removeCallback","changedCallback","observer","mutationWatcher","shadowSelector","selector","rule","watchSubtree","observe","enableOnSubtree","readyState","installOnLoad","installNewSubtree","findElements","addElement","querySelectorAll","removeElement","el","elementChanged","oldValue","concatLists","accum","list","concat","isElement","n","ELEMENT_NODE","flattenMutationTree","inNodes","tree","reduce","mutations","mutationHandler","m","addedNodes","removedNodes","attrib2css","selectors","styles","hasNativePE","MSPointerEvent","hasShadowRoot","ShadowDOMPolyfill","head","createShadowRoot","applyAttributeStyles","r","String","createElement","textContent","appendChild","DEDUP_DIST","BUTTON_TO_BUTTONS","HAS_BUTTONS","MouseEvent","INSTALLER","mouseEvents","POINTER_ID","POINTER_TYPE","lastTouches","isEventSimulatedFromTouch","lts","dx","Math","abs","dy","prepareEvent","pd","prepareButtonsForMove","which","mousedown","button","mousemove","mouseup","mouseover","mouseout","deactivateMouse","pointermap$1","DEDUP_TIMEOUT","CLICK_COUNT_TIMEOUT","ATTRIB","touchEvents","elementAdded","a","getAttribute","touchActionToScrollType","_scrollType","elementRemoved","oldSt","scrollTypes","EMITTER","XSCROLLER","YSCROLLER","SCROLLER","touchAction","exec","firstTouch","isPrimaryTouch","inTouch","identifier","setPrimaryTouch","firstXY","X","Y","scrolling","cancelResetClickCount","removePrimaryPointer","inPointer","resetClickCount","clickCount","resetId","setTimeout","clearTimeout","typeToButtons","ret","touchToPointer","cte","currentTouchEvent","id","detail","radiusX","webkitRadiusX","radiusY","webkitRadiusY","force","webkitForce","altKey","ctrlKey","metaKey","shiftKey","processTouches","inFunction","tl","changedTouches","shouldScroll","scrollAxis","currentTarget","oa","findTouch","inTL","inId","vacuumTouches","touches","d","value","key","cancelOut","touchstart","dedupSynthMouse","overDown","outTarget","touchmove","touchcancel","moveOverOut","pointer","outEvent","touchend","upOut","cleanUpPointer","lt","indexOf","splice","h","pointermap$2","HAS_BITMAP_TYPE","MSPOINTER_TYPE_MOUSE","msEvents","POINTER_TYPES","cleanup","MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSLostPointerCapture","MSGotPointerCapture","applyPolyfill","navigator","msPointerEnabled","tp","msMaxTouchPoints","defineProperty","enumerable","ontouchstart","assertActive","error","Error","assertConnected","elem","parent","ownerDocument","inActiveButtonState","applyPolyfill$1","Element","setPointerCapture","defineProperties","msSetPointerCapture","msReleasePointerCapture","targetFinding","factory","freeze","External","VideoStartInitiated","VideoStart","VideoEnd","VideoReplay","MediaError","MediaReady","CaptionChange","Ready","VideoPlay","PlayerFullScreenModeChanged","PlayerRumData","GoogleAnalyticsCustomEvent","AnalyticsEvent","GoogleAnalytics4Event","QuizVisible","QuizHidden","ShowStartQuizPrompt","HideStartQuizPrompt","SwitchToFullscreen","ExitFullscreen","PlayerSettingsOpen","PlayerSettingsClose","PlayerControlsHidden","PlayerControlsVisible","PlayerResize","HeroControlHidden","ImagePointerOver","ImagePointerLeave","DisplayModeChanged","CaptionsHidden","CaptionsVisible","CaptionsReady","ExternalVideo","VideoLoadStart","VideoLoadedMetadata","VideoLoadedData","VideoCanPlay","VideoCanPlayThrough","VideoPlaying","VideoWaiting","VideoSeeking","VideoSeeked","VideoEnded","VideoPause","VideoResize","VideoError","VideoVolumeChange","VideoDurationChange","VideoRateChange","VideoTimeUpdate","VideoProgress","Player","MediaControlsReady","MediaExtensionsReady","Controls","ClickPrev","ClickNext","FullScreenChange","ToggleFullScreen","ExpandVideo","ShowToc","HideToc","TocScroll","Disable","Enable","Updated","HotspotClicked","PipChanged","TheaterModeChanged","MediaResize","PlayerInitialized","ShowVideoBufferingView","HideVideoBufferingView","VideoControlsHidden","HideVideoControls","VideoControlsVisible","ShowVideoControls","DisplayCaptionControl","DisplayTocControl","TocDisplayToggled","FocusTocButton","HeroPlayControlClicked","HeroPlayControlVisible","HeroPlayControlHidden","ReplayControlVisible","ReplayControlHidden","StartedPlayback","HideIOOverlay","SearchFocusChange","HideLoadingMessage","Hotspots","Paused","Resume","AreaActive","AreaInactive","Media","Play","Playing","Pause","SeekToTime","Replay","End","Abort","Suspend","Emptied","Stalled","Progress","InitializeCurrent","SourceChanged","TryToAutoPlay","SetVolume","SetMutedState","SetPlaybackRate","FirstPlay","IFrame","EnterFullFrame","ExitFullFrame","Update","QuizMarkers","PlayProgress","LoadProgress","NextQuestionPosition","Scrubbing","Started","Ended","Quizzing","QuizSetupComplete","Complete","Review","Begin","BeginClicked","Skip","SkipClicked","Status","SubmittingInstance","CreatedInstance","Submitted","ShowSubmissionRetryMessage","HideSubmissionRetryMessage","TransitionImageQuizToAnswers","HideQuiz","ShowQuizBar","ShowQuizSetup","ShowQuestionSetView","CloseQuestionSetView","SubmitQuestionSet","RationaleActionLocation","RationaleActionJumpToTime","QuizIsOutOfDate","QuizBadDefinition","MinimizeUI","MaximizeUI","UIVisible","UIHidden","Captions","Toggled","StateLoaded","Changed","LanguageChanged","DragStart","DragEnd","Resized","CaptionService","NewCaptionTrack","AudioDescription","Failed","Timing","PlayerLoaded","VideoMetadataLoaded","VideoHasEnoughData","GA4","VideoStarted","VideoLoadingTimeInSeconds","VideoLoadingTime","VideoPercentViewed","VideoFinishedAction","VideoFinished","OpenExternalLinkView","OpenExternalLinkClick","HotspotAction","CouldNotPlaySmoothlyIn20Secs","PlaybackWasStoppedToBuffer","Analytics","ContentLoaded","Plugin","Added","MediaAreaPluginMouseDown","MediaAreaPluginMouseUp","MediaAreaPluginKeyDown","MediaAreaPluginKeyUp","Network","Retrying","Fathom","GetComplete","Modals","Open","Closed","ExternalLinkView","Clicked","SCORM","ExitSession","ExitSessionConfirmed","ExitSessionWithOutProgressConfirmed","ResumeSession","FailedToFindApi","Images","PointerOver","PointerLeave","supportedPluginViewElements","PROGRESS_BAR","MEDIA","BEFORE_AFTER_PLAY_CONTROLS","PLAYER","_supportedLanguages","languageCodes","ENGLISH","GERMAN","JAPANESE","FRENCH","SPANISH","CHINESE","PORTUGUESE","ENU","DEU","JPN","FRA","SP","ZH","PT","isValid","language","some","supportedLanguage","mediaInterfaceConstants","controls","autohide","youtube","_typeof$1","o","Symbol","iterator","constructor","arrayMap","iteratee","index","result","eq","other","assocIndexOf","ListCache","entries","entry","__data__","data","pop","freeGlobal","freeSelf","root","Function","_Symbol","objectProto","nativeObjectToString","toString","symToStringTag","toStringTag","nativeObjectToString$1","symToStringTag$1","baseGetTag","isOwn","tag","unmasked","getRawTag","objectToString","isObject","isFunction","uid","coreJsData","maskSrcKey","keys","IE_PROTO","funcToString","toSource","func","reIsHostCtor","funcProto$1","objectProto$2","funcToString$1","hasOwnProperty$1","reIsNative","RegExp","replace","baseIsNative","test","getNative","object","getValue","Map$1","nativeCreate","hasOwnProperty$2","hasOwnProperty$3","Hash","getMapData","MapCache","Stack","pairs","LARGE_ARRAY_SIZE","SetCache","values","arraySome","predicate","equalArrays","bitmask","customizer","equalFunc","stack","isPartial","arrLength","othLength","stacked","seen","arrValue","othValue","compared","othIndex","Uint8Array","mapToArray","setToArray","symbolProto","symbolValueOf","valueOf","arrayPush","offset","isArray$1","isArray","baseGetAllKeys","keysFunc","symbolsFunc","arrayFilter","resIndex","stubArray","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","getSymbols","symbol","isObjectLike","baseIsArguments","objectProto$6","hasOwnProperty$4","propertyIsEnumerable$1","isArguments","arguments","freeExports","freeModule","Buffer","isBuffer","reIsUint","isIndex","isLength","typedArrayTags","baseUnary","freeExports$1","freeModule$1","freeProcess","process","nodeUtil","types","require","binding","nodeIsTypedArray","isTypedArray","hasOwnProperty$5","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseTimes","objectProto$8","isPrototype","Ctor","overArg","transform","arg","nativeKeys","hasOwnProperty$6","isArrayLike","keys$1","baseKeys","getAllKeys","hasOwnProperty$7","DataView","Promise$2","Set","WeakMap","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","resolve","ctorString","getTag$1","hasOwnProperty$8","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","byteLength","byteOffset","buffer","message","convert","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","objValue","objCtor","othCtor","equalObjects","baseIsEqual","isStrictComparable","matchesStrictComparable","srcValue","baseMatches","matchData","getMatchData","noCustomizer","COMPARE_PARTIAL_FLAG$4","baseIsMatch","isSymbol","reIsDeepProp","reIsPlainProp","isKey","memoize","resolver","TypeError","memoized","args","apply","cache","Cache","rePropName","reEscapeChar","stringToPath","string","charCodeAt","match","number","quote","subString","symbolProto$1","symbolToString","baseToString","castPath","toKey","baseGet","path","baseHasIn","hasPath","hasFunc","baseMatchesProperty","defaultValue","hasIn","COMPARE_PARTIAL_FLAG$5","identity","property","basePropertyDeep","baseIteratee","fromRight","baseFor","iterable","props","baseEach","eachFunc","collection","createBaseEach","baseMap","arrayEach","baseFindIndex","fromIndex","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","toFinite","isBinary","toNumber","toInteger","remainder","nativeMax","max","findIndex","findIndexFunc","find","baseFilter","reject$1","negate","last","baseSlice","start","end","nativeMax$1","baseSetToString","nativeNow","Date","now","shortOut","count","lastCalled","stamp","remaining","setToString","baseRest","otherArgs","overRest","invokeMap","isFunc","baseInvoke","splice$1","indexes","lastIndex","previous","basePullAt","parseXml","wellKnownNamespaces","xml","rdf","dc","exif","stDim","stFnt","tsc","tscDM","tscHS","tscIQ","xmp","xmpDM","xmpG","xmpMM","namespaceResolver","prefix","isString","isNil","DOMParser","canParseHtmlNatively","DOMParserProto","realParseFromString","parseFromString","markup","firstElement","doc","implementation","createHTMLDocument","docElement","documentElement","innerHTML","firstElementChild","childElementCount","localName","toLowerCase","replaceChild","xmlStr","contentType","ActiveXObject","xmlDoc","async","loadXML","getElementText","getElementsByTagName","getElementsByTagNameNS","getFirstElementByTagName","childElements","XmlUtility","xmlDocFragmentToString","XMLSerializer","serializeToString","xmlDocToString","hasAttribute","attributeName","hasAttributeWithValue","createDocument","createElementWithValue","createTextNode","getFirstChildElementTextByTagName","childElement","createElementNS","ns","getNSInfo","tagName","nameParts","split","nsUrl","nsPrefix","tagShortName","NamespaceXmlUtility","getFirstElementByTagNameNSPrefix","docOrElement","evaluate","isDocument","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","getElementsByTagNameNSPrefix","tokens","getFirstChildElementTextByTagNameNSPrefix","createDocumentNS","createElementFromObject","tagInfo","that","toXmp","nsInfo","newElement","atts","attrVal","attrName","attNsInfo","setAttributeNS","setAttribute","children","child","text","createElementNSWithValue","LanguageIdentifier$1","languageIdentifier","languageIdentifierParts","_identifier","_language","_region","join","toPOJO","region","_identifiers","af","displayName","regions","za","sq","al","ar","dz","bh","eg","iq","jo","kw","lb","ly","ma","om","qa","sa","sy","tn","ae","ye","hy","am","az","eu","be","by","bg","ca","zh","cn","hk","mo","sg","tw","chs","cht","hr","cs","cz","da","dk","div","mv","nl","en","au","bz","cb","ie","jm","nz","ph","tt","gb","us","zw","et","ee","fo","fa","ir","fi","fr","lu","mc","ch","gl","ka","ge","de","at","li","gr","gu","he","il","hi","hu","is","it","ja","jp","kn","kk","kz","kok","ko","kr","ky","lv","mk","ms","bn","my","mr","mn","nb","no","nn","pl","pt","br","pa","ro","ru","sp","sk","sl","si","bo","cl","co","cr","ec","sv","gt","hn","mx","ni","py","pe","pr","uy","ve","sw","ke","syr","ta","te","th","tr","uk","ua","ur","pk","uz","vi","vn","languageIdentifiers","isSupportedLanguage","languageIdentifierString","identifiers","setTimeoutFunc$1","noop$2","Promise$1$1","_state","_handled","_value","_deferreds","doResolve$1","handle$1","deferred","_immediateFn","onFulfilled","onRejected","reject$1$1","promise","resolve$1","newValue","then","finale$1","_unhandledRejectionFn","len","Handler$1","done","reason","prom","reject","all","arr","res","val","race","setImmediate","err","console","warn","UndoAction","undoFunc","undoParams","redoFunc","redoParams","execute","UndoAction$1","ImageRectangle$1","propertyInfo","_x","_y","_width","_height","Number","_public","toXmpAtt","ImageRectangle","isBlacklistedTag","strTag","findNextTag","strTextToSearch","nStartPoint","nPosition","nCode","getTagAt","strText","nTagPosition","nEnd","substring","findNextTagNotBlacklisted","getTextToCloseTag","arrStack","strCloseTags","arrOpenTags","strCloseTagNeeded","matchingTag","strOpenTagNeeded","isClosingTag","strToMatch","strMatch","removeTag","strToFix","nTagEnd","trimString","charAt","Rtf","str","removeLastBracket","strFixed","nCountCorrectedThisLoop","nNextPosition","strAlternateTag","strNextTag","nStringBetweenBegin","strBetween","removeEmptyTags","arrTagStack","nestTags","CaptionText","params","_text","_plainText","_markupText","_languageIdentifier","_additionalParamProperties","_xmlUtility","setLanguageIdentifier","previousLanguageIdentifierString","setText","plainText","markupText","treeDesc","pojo","validateParams","CaptionText$1","textElement","rtfText","decoratorFunctions","nullCaptionText","Caption","_startTime","_duration","_horizontalAlignment","_verticalAlignment","_file","_image","_imageIndex","_imageOffset","_imageRectangle","_captionTextList","_activeLanguageIdentifier","setStartTime","startTime","floor","setDuration","duration","addOrReplaceCaptionText","newCaptionText","existingCaptionItemIndex","captionItem","oldCaptionItem","removeCaptionText","captionText","removedCaptionItems","captionTextItem","removedCaptionItem","setHorizontalAlignment","horizontalAlignment","setVerticalAlignment","verticalAlignment","setFile","file","setImage","image","setImageIndex","imageIndex","setImageOffset","imageOffset","setImageRectangle","imageRectangle","getCaptionText","preferredCaptionText","endTime","captionTextList","activeLanguageIdentifier","getAvailableLanguages","Caption$1","captionElement","tinycolor$1","createCommonjsModule","trimLeft","trimRight","tinyCounter","mathRound","round","mathMin","min","mathMax","mathRandom","random","tinycolor","color","opts","rgb","b","ok","format","named","names","matchers","rgba","hsl","hsla","hsv","hsva","hex8","parseIntFromHex","convertHexToDecimal","hex6","hex4","hex3","stringInputToObject","isValidCSSUnit","bound01","substr","convertToPercentage","f","q","mod","hsvToRgb","hue2rgb","hslToRgb","boundAlpha","inputToRGB","_originalInput","_r","_g","_b","_a","_roundA","_format","_gradientType","gradientType","_ok","_tc_id","rgbToHsl","rgbToHsv","rgbToHex","allow3Char","hex","pad2","rgbaToArgbHex","convertDecimalToHex","_desaturate","amount","toHsl","clamp01","_saturate","_greyscale","desaturate","_lighten","_brighten","toRgb","_darken","_spin","hue","_complement","_triad","_tetrad","_splitcomplement","_analogous","results","slices","part","_monochromatic","toHsv","modification","isDark","getBrightness","isLight","getOriginalInput","getFormat","getAlpha","getLuminance","RsRGB","GsRGB","BsRGB","pow","setAlpha","toHsvString","toHslString","toHex","toHexString","toHex8","allow4Char","rgbaToHex","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","clone","_applyModification","lighten","brighten","darken","saturate","greyscale","spin","_applyCombination","analogous","complement","monochromatic","splitcomplement","triad","tetrad","fromRatio","newColor","equals","color1","color2","mix","rgb1","rgb2","readability","c1","c2","isReadable","wcag2","wcag2Parms","parms","level","toUpperCase","validateWCAG2Parms","mostReadable","baseColor","colorList","includeFallbackColors","bestColor","bestScore","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","flipped","flip","parseFloat","isNaN","isOnePointZero","processPercent","isPercentage","c","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","nativeFloor","nativeMin","sortedIndexBy","retHighest","low","high","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","mid","computed","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","MAX_ARRAY_LENGTH","baseSortedIndexBy","baseAssignValue","hasOwnProperty$9","assignValue","copyObject","isNew","hasOwnProperty$a","baseKeysIn","nativeKeysIn","isProto","keysIn$1","freeExports$2","freeModule$2","Buffer$1","allocUnsafe","copyArray","getPrototype","getPrototypeOf","getSymbolsIn","getAllKeysIn","hasOwnProperty$b","cloneArrayBuffer","arrayBuffer","reFlags","symbolProto$2","symbolValueOf$1","initCloneByTag","isDeep","dataView","cloneDataView","typedArray","cloneTypedArray","regexp","cloneRegExp","objectCreate","baseCreate","proto","nodeIsMap","isMap","nodeIsSet","isSet","cloneableTags","baseClone","isFlat","isFull","input","initCloneArray","copy","cloneBuffer","initCloneObject","copySymbolsIn","baseAssignIn","copySymbols","baseAssign","subValue","keysIn","spreadableSymbol","isConcatSpreadable","isFlattenable","baseFlatten","depth","isStrict","compareAscending","valIsDefined","valIsReflexive","baseOrderBy","iteratees","orders","comparer","sort","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareMultiple","isIterateeCall","sortBy","CaptionCollection","_captions","_captionLanguages","addCaptionFromLanguageCodeCache","caption","addCaption","removeCaption","removeCaptionFromLanguageCodeCache","setCaptions","captions","setActiveLanguageIdentifier","previousActiveLanguageIdentifierString","getActiveLanguageIdentifier","mergeCaptions","captionsToMerge","captionToMerge","matchingCaption","existingCaption","captionsClone","CaptionCollection$1","_defaults$1","fontFamily","fontSize","fgColor","bgColor","CaptionTrack","_fgColor","_bgColor","_fontFamily","_fontSize","parseFontSize","_position","position","_barHeight","barHeight","_captionCollection","attsFromColor","tinycolorToSimpleRgb","tinycolorObj","rgbaColorObj","fgHexColor","bgOpacity","bgHexColor","bgRGBACssColor","captionCollection","getRGBColor","defaultFontSize","parsedFontSize","CaptionTrack$1","captionTrackElement","captionTrack","fgColorElement","bgColorElement","CaptionController$2","_activeCaptionTrack","_captionTracks","cacheActiveCaptionTrack","preferredCaptionTrack","addCaptionTrack","storeCaptionLanguage","removeCaptionTrack","captionTrackToRemove","removedCaptionTracks","removedCaptionTrack","getMergedCaptionTrack","captionTrackParams","mergedCaptionTrack","activeCaptionTrackIsDefinedWithCaptions","activeCaptionTrack","numberCaptionTracks","containsCaptions","captionsContainsTocThumbnails","clearCaptions","addCaptionTrackFromXmpElement","parsedCaptionTrack","availableLanguages","filteredCaptionTextList","captionParams","newCaption","getActiveCaptionsTocThumbnailImage","CaptionController$1$1","TableOfContentsItem","_name","TableOfContentsItem$1","tableOfContentsItemElement","TableOfContentsTrack","_items","items","cellLayout","TableOfContentsTrack$1","tableOfContentsTrackElement","tableOfContentsTrack","tableOfContentsItemElements","BoundingPoly$1","coordinatesString","_coordinates","coordinateTokens","compact","coordinateString","coordinates","coord","BoundingPoly","Hotspot","_label","_boundingPoly","_rotate","_pause","_jumpTime","_location","_newWindow","_jumpFile","label","boundingPoly","rotate","pause","jumpTime","location","newWindow","jumpFile","Hotspot$1","hotspotElement","HotspotTrack","_hotspots","hotspots","HotspotTrack$1","hotspotTrackElement","hotspotTrack","Answer","_orderId","orderId","Answer$1","answerElement","answerText","Feedback","_reason","_jumpToTime","jumpToTime","Feedback$1","feedbackElement","feedbackText","Question$2","_id","_type","_correctAnswer","_answers","_feedback","correctAnswer","answers","feedback","Question$1$1","questionElement","correctAnswerText","descriptionElements","QuestionSet$2","_questions","questions","QuestionSet$1$1","questionSetElement","QuizTrack","_quizGuid","_authoredEmail","_requireUserId","_locale","_reportMethod","_clientId","_quizHash","_hideReplay","_allowSkipQuiz","_parameters","_questionSets","quizGuid","authoredEmail","requireUserId","locale","reportMethod","clientId","quizHash","hideReplay","allowSkipQuiz","parameters","questionSets","param","parseParameter","parameterElement","parseParameters","quizParametersElement","xmlUtility","QuizTrack$1","quizTrackElement","quizTrack","SpeechMarker","_probability","probability","SpeechMarker$1","speechMarkerElement","SpeechTrack","_markers","markers","SpeechTrack$1","speechTrackElement","speechTrack","ScreenTextMarker","_tableOfContentsEntry","tableOfContentsEntry","ScreenTextMarker$1","screenTextMarkerElement","ScreenTextTrack","ScreenTextTrack$1","screenTextTrackElement","screenTextTrack","getXmlUtility","Controller","_controllerTextItems","controllerTextItems","localizedTextTree","item","localizedTexts","localizedText","lang","parseParameter$1","parseParameters$1","parametersElement","parseLocalizedTextItem","parseControllerText","controllerTextItemElement","textElements","parseControllerTextItems","controllerTextElement","Controller$1","controllerElement","descriptionElement","ContentList","parseContentListItems","contentListItemElements","itemElement","ContentList$1","contentListElement","castSlice","baseIsNaN","baseIndexOf","strictIndexOf","charsStartIndex","strSymbols","chrSymbols","reHasUnicode","hasUnicode","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","rsSymbol","reUnicode","stringToArray","unicodeToArray","asciiToArray","reTrimStart","baseValues","nativeMax$2","_parsers","trimLeadingDot","extension","chars","guard","trimStart","captionParsers","supportedExtensions","parserCreator","extensions","parser","theParser","includes","captionImporter","captionController","fileName","fileContents","deserialize","Xmp$1","xmpXml","_version","_title","_date","_creator","_presenterEmail","_description","_source","_about","_keywords","_thumbnail","_firstFrame","_project","_originId","_iPodExplicit","_documentId","_videoFrameSize","_controller","_contentList","_captionController","_hotspotTrack","_tableOfContentsTrack","_quizTrack","_speechTrack","_screenTextTrack","_languages","_containsTocThumbnails","_containsToc","_containsCaptions","_containsHotspots","_containsQuiz","_containsQuizQuestions","_containsScreenText","_containsSpeechText","tracksContainer","track","langName","langValue","unit","scale","version","title","date","creator","presenterEmail","description","about","keywords","thumbnail","firstFrame","project","originId","iPodExplicit","documentId","videoFrameSize","tocThumbnailImageSrc","containsTocThumbnails","containsToc","containsHotspots","containsQuiz","containsQuizQuestions","containsScreenText","containsSpeechText","controller","contentList","parseLanguageName","languageNameElement","parseProductionDetails","rootDescriptionElement","videoFrameSizeElement","langNameElement","parseLanguages","durationElement","getElementForTrackType","elements","trackType","parseTracks","tracksElement","tracksDescriptionElements","parseCaptionTrack","parseHotspotTrack","parseTableOfContentsTrack","parseQuizTrack","parseSpeechTrack","parseScreenTextTrack","recordXmpContentFlags","nsElement","rdfElement","importCaptionsFromFile","languages","hasOwnProperty$c","baseHas","nativeJoin","reTrim$1","trim","charsEndIndex","methodName","upperFirst","chr","trailing","arrayReduce","accumulator","initAccum","baseReduce","metaMap","baseSetData","createCtor","thisBinding","nativeMax$3","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","nativeMax$4","composeArgsRight","holdersIndex","rightIndex","rightLength","baseLodash","LazyWrapper","__wrapped__","__actions__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","getData","realNames","hasOwnProperty$d","LodashWrapper","chainAll","__chain__","__index__","__values__","hasOwnProperty$e","lodash","wrapper","wrapperClone","isLaziable","funcName","otherFunc","getFuncName","setData","reWrapDetails","reSplitDetails","reWrapComment","wrapFlags","updateWrapDetails","details","pair","arrayIncludes","setWrapToString","reference","insertWrapDetails","getWrapDetails","createRecurry","wrapFunc","placeholder","argPos","ary","arity","isCurry","newData","getHolder","nativeMin$1","replaceHolders","createHybrid","partialsRight","holdersRight","isAry","isBind","isBindKey","isFlip","holdersCount","countHolders","newHolders","oldArray","reorder","nativeMin$2","nativeMax$5","createWrap","srcBitmask","newBitmask","isCommon","isCombo","mergeData","createCurry","createPartial","createBind","curry","toSeconds","timeIn","nextNonEmptyLine","linesArray","idx","_readCaptionsFromString","timeDelimiter","hasIdRow","lines","time","endIndex","timeSplitRegex","SSATagRegex","lessThanRegex","greaterThanRegex","newlinePlaceholderRegex","lastNonEmptyLine","padWithZero","inputNumber","formatMillisecondsToTimeCode","inputMilliseconds","options","hoursPadding","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","toFixed","millisecondDelimiter","baseNewlineParser","readCaptionsFromStringWithIdRow","readCaptionsFromString","captionsToString","output","DEFAULT_CAPTION_LANGUAGE_IDENTIFIER_STRING","samiParser","nonBreakingSpace","fromCharCode","getSyncTagText","separator","elementsText","parseSyncTagToCaption","createParams","cssColorToRGB","cssColorValue","getCaptionTrackCreateParams","styleElements","styleElement","body","sheet","cssRules","parseStyle","captionStyle","selectorText","style","backgroundColor","textAlign","captionToString","nextCaption","getTextAlignment","allAlignments","alignments","alignment","syncElements","createCaptionTrackParams","currentCaption","assignCaptionDurationsByFillingCaptionStartTimeGaps","serialize","sbvParser","srtParser","ttmlParser","rWhitespace","rLineBreak","rBreakTag","parseChildren","node","timeOffset","newOffset","currNode","firstChild","currRegion","getNodeRegion","retVal","nodeName","parseNode","nextSibling","defaultTo","sub","MAX_VALUE","subtitle","timeStr","framerate","digitPairs","lastPair","firstPair","frameInfo","frameTime","toTimelineSeconds","getMetricIndex","xmlDocument","vttParser","parseCueHeader","line","lineSegments","skipWhitespace","skipNonWhitespace","skipToCueHeader","breakTagRegex","_registeredExceptionListeners","_registeredMessageListeners","removeValueFromArray","log","logException","logMessage","listener","throwError","removeAllEventListeners","playerStringNames","accessBtnAnswersSubmitted","accessBtnAudioDescription","accessBtnClearSearch","accessBtnClickToReplayLink","accessBtnClosedCaption","accessBtnCorrectOutOf","accessResultsLabelCorrectSuffix","accessResultsLabelIncorrectSuffix","accessResultsLabelNoResponseSuffix","accessResultsLabelNoResponseGradedSuffix","accessBtnFullScreen","accessBtnFullScreenExpand","accessBtnGradedQuestions","accessBtnHideAnswer","accessBtnHideQuiz","accessBtnPreviousQuestion","accessBtnNextQuestion","accessBtnNext","accessBtnPip","accessBtnPlay","accessBtnPrevious","accessBtnProgressBar","accessBtnRewind","accessBtnForward","accessBtnSettings","accessBtnShowAnswer","accessBtnShowQuiz","accessBtnTableOfContents","accessBtnTakeQuiz","accessBtnVolume","accessBtnWasNotGraded","accessBtnWereNotGraded","accessListNoSearchResults","accessListSearchResults","accessListTableOfContents","accessQuestionSetConfirmationTitle","accessQuizResults","accessQuestionFeedbackContext","accessTxtVolume","accessVideoPausedForQuiz","accessQuizHidden","accessQuizShown","accessProgressBarTimeConjunction","accessPlayerSettingsClose","accessBtnTheaterMode","accessBtnExitTheaterMode","ccLanguageText","close","mediaNotFound","noWebMSupport","playerRateOptionsText","playerRateText","scormApiNotFoundMessage","search","searchDisabledFullScreen","searchPlaceholder","txtAnswerQuestion","txtBadImageQuiz","txtBegin","txtContinue","txtCorrect","txtCorrectAnswer","txtCorrectString","txtEnterEmail","txtEnterFirstName","txtEnterLastName","txtHotspot","txtHotspotScreenReaderAlert","txtHotspotScreenReaderAlertPlural","txtImageQuizNetworkErrorMessage","txtIncorrect","txtIncorrectString","txtJumpToMedia","txtJumpToTime","txtLoaderMessageDefinition","txtNext","txtHideQuiz","txtOpenLink","txtOpenLinkHeader","txtOpenLinkSubHeader","txtPrev","txtQuestionCount","txtQuizBadDefinitionMessage","txtQuizErrorMessage","txtQuizOutOfDateMessage","txtQuizOutOfDateRefreshButtonText","txtReplayVideo","txtRequiredMessage","txtResults","txtReview","txtReviewAnswer","txtSkip","txtSubmit","txtSubmittingAnswers","txtVideoQuizNetworkErrorMessage","txtVisitSite","txtYourAnswer","videoLoading","videoNotSupported","xmpSecurity","xmpError","confirmOpenUrlModalScreenReaderAlertText","confirmOpenUrlConfirmButtonScreenReaderText","fastForwardDisabledScreenReaderText","scormCompleteVideoLater","scormCompleteVideo","scormExitVideo","scormConfirmCompleteModalText","scormConfirmCompleteModalRestartVideoText","scormConfirmCompleteModalResumeVideoText","scormConfirmCompleteModalFailedToSaveProgressText","scormConfirmCompleteModalDismissButtonText","scormConfirmCompleteModalDismissButtonScreenReaderText","scormConfirmCompleteModalConfirmButtonText","scormConfirmCompleteModalConfirmButtonScreenReaderText","scormSessionEndedText","searchOrJumpTo","searchTextCleared","searchResultsUpdated","tableOfContentsDisplayed","tableOfContentsHidden","defaultMediaTitle","hideThumbnailDueToQuiz","defaultFirstChapterName","acknowledgementLinkName","strings$7","quizAtTimeHeading","enUsLocale","getReadableTimeByLocale","timeStringList","hoursReadableString","minutesReadableString","secondsReadableString","strings","strings$6","deDeLocale","strings$5","jaJpLocale","strings$4","frFrLocale","strings$3","esEsLocale","strings$2","zhCnLocale","strings$1","ptBrLocale","localeFactory","getLocaleByLanguageCode","languageCode","customStrings","setString","stringKey","clearStrings","_currentLocale","setLanguage","getPlayerString","stringName","localizationStrings","getLanguage","getLanguageNameFromIdentifierString","configureFromXmp","controllerParameters","controllerParameter","configureLanguageFromXmp","quizParameters","quizParameter","configureCustomStringsFromXmp","getQuestionCountString","currentQuestionNumber","totalNumberQuestions","questionCountString","reset","mediaMimeType","JSON","M3U","MP4","WEBM","OGV","JPEG","PNG","GIF","UNKNOWN","jquery","global","noGlobal","getProto","_slice","flat","class2type","hasOwn","fnToString","ObjectFunctionString","support","obj","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","code","script","removeChild","toType","rhtmlSuffix","jQuery","context","init","num","pushStack","elems","merge","prevObject","each","first","even","grep","_elem","odd","j","extend","copyIsArray","deep","isPlainObject","expando","isReady","msg","noop","isEmptyObject","globalEval","nodeValue","makeArray","inArray","isXMLDoc","namespace","namespaceURI","docElem","second","invert","matches","callbackExpect","guid","_i","whitespace","rtrimCSS","bup","compareDocumentPosition","rcssescape","fcssescape","asCodePoint","escapeSelector","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","unloadHandler","setDocument","inDisabledFieldset","addCombinator","disabled","dir","next","childNodes","els","seed","nid","groups","newSelector","newContext","getElementById","getElementsByClassName","testContext","scope","tokenize","toSelector","qsaError","removeAttribute","select","cacheLength","shift","markFunction","assert","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","subWindow","webkitMatchesSelector","msMatchesSelector","defaultView","top","getById","getElementsByName","disconnectedMatch","cssHas","attrId","getAttributeNode","className","compare","sortDetached","expr","matchesSelector","attr","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","check","what","_argument","simple","forward","ofType","_context","outerCache","nodeIndex","useCache","diff","lastChild","pseudo","setFilters","matched","not","matcher","compile","unmatched","elemLang","hash","focus","activeElement","safeActiveElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","_matchIndexes","nth","radio","checkbox","password","submit","parseOnly","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","matcherOut","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","filters","unique","getText","isXML","_dir","until","truncate","_siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","prev","sibling","cur","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","content","rnothtmlwhite","Identity","Thrower","adoptValue","noValue","method","fail","Callbacks","_","flag","createOptions","firing","memory","_fired","_locked","queue","firingIndex","fire","once","stopOnFalse","disable","lock","locked","fireWith","fired","Deferred","tuples","_promise","state","always","pipe","fns","newDefer","tuple","returned","progress","notify","onProgress","maxDepth","handler","special","mightThrow","notifyWith","resolveWith","exceptionHook","rejectWith","getErrorHook","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","readyException","readyList","completed","readyWait","wait","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","Data","configurable","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","parse","_data","removeData","_removeData","attrs","dequeue","startLength","hooks","_queueHooks","unshift","stop","setter","clearQueue","tmp","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","display","css","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","show","hide","toggle","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","optgroup","rhtml","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","rtypenamespace","returnTrue","returnFalse","_on","one","origFn","off","leverageNative","isSetup","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","trigger","isImmediatePropagationStopped","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","rnamespace","postDispatch","_handlers","matchedHandlers","matchedSelectors","addProp","hook","Event","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","timeStamp","isSimulated","eventPhase","pageX","pageY","view","charCode","keyCode","offsetX","offsetY","screenX","screenY","targetTouches","toElement","blur","focusMappedHandler","documentMode","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","on","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","_remove","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","rcustomProp","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","minWidth","maxWidth","isCustomProp","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","offsetWidth","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","_final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","isBorderBox","computedVal","extra","delta","marginDelta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","suffix","expand","expanded","parts","propHooks","run","percent","eased","pos","step","fx","scrollTop","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","timeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","addClass","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","encodeURIComponent","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","_statusCode","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","ajaxConvert","getJSON","getScript","wrapAll","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","_callback","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","_callback2","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","unbind","delegate","undelegate","hover","fnOver","fnOut","rtrim","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","$","noConflict","w","_xmpSrc","_posterImageSrc","_tocSpriteSrc","_googleAnalyticsID","_customEventCallback","_ga4EventCallback","_techSmithAccessTokenEndpoint","_fathomId$1","_embedIFrameId","_preRollSrc","_webConnector","jqueryExports","windowWrapper","wrapInJQuery","features","documentWrapper","_supportsHTML5","_supportsMP4","_supportOgg","_supportWebM","_isIE","_isEdge","_ieVersion","_safariMajorVersion","_isFirefox","_isChrome","_isIPad","_isIPhone","_isIPod","_isIOS","_isAndroid","_isSafari","_isRetinaDisplay","_isSmallScreen","isTouchIEInterface","isTouchInterface","deviceInfo","isSmallScreen","isRetinaDisplay","isIPad","isIPhoneOrIPod","isIOS","isIE","isEdge","getIEVersion","getSafariMajorVersion","isFirefox","isChrome","isSafari","isAndroid","canPlayHTML5Video","canPlayMP4","canPlayOgg","canPlayWebM","getFullScreenChangeEventNames","documentRef","onfullscreenchange","onwebkitfullscreenchange","requiresManualPreload","supportsFullScreen","fullscreenEnabled","webkitFullscreenEnabled","supportsLegacyIOSFullScreen","videoElement","webkitSupportsFullscreen","mediaLocation","baseindex","lastIndexOf","basex","encodeURI","checkLocationProtocol","lookAtDevice","detect","canPlayType","OGG","userAgent","appName","iOSChromeMatchExp","appVersion","$1","matchExp","safariVersion","screen","availWidth","availHeight","devicePixelRatio","_lookAtDevice","themeNames","DAWN","DUSK","preloadOptions","none","metadata","auto","endsWithSlashRegex","_mediaSources","_mediaTitle","_tocTitle","_mediaRotation","_endActionType","_endActionParam","_ignoreXmpControllerParameters","_ignoreQuizQuestions","_isSearchable","_autoPlayMedia","_forceAutoPlayMedia","_skipVideoDuration","_skipVideoControlsEnabled","_captionsEnabled","_ignoreStoredCaptionVisibleSetting","_sidebarEnabled","_sidebarLocation","_backgroundColor","_useUnicode","_autoHideControls","_reportScormComplete","_isScormLesson","_enforceLinearAssessment","_disableFullframeMode","_disableControls","_disableYouTubeControls","_disablePictureInPicture","_disableContinueWithoutQuestions","_mobileWebViewCanAutoPlay","_gaPageViewTrack","_gaEventTrack","_customEventTracking","_altEventCategoryAsFilename","_altLoadTimeAsSeconds","_isUserIdentified","_additionalAppQueryString","_useSlimAppSplashScreen","_showYouTubeAnnotations","_contentType","_preload","_fullViewPort","_contentBasePath","_disableContextMenuForVideo","_theme","_enableSingleClickControl","_enableDoubleClickControl","_pluginController$1","_useLargerProgressBar","_displayHotspotsShape","_audioDescriptionMediaSrc","_captionSrcList","_disableInteractions","_allowFastForward","_showADACompliantCaptions","_rememberUserInfo","_logScormApiCalls","_userInfo","_videoThumbnailsSrc","_videoThumbnailWidth","_videoThumbnailHeight","_videoThumbnailInterval","_videoThumbnailColumns","_tocModelFromDescription","_completeScormOnRequirementsComplete","_customFullScreenDomElement","_quizServiceBaseUrl","_resultsServiceBaseUrl","_enableTheaterMode","_showAcknowledgementLink","isValidTheme","themeName","themeKey","decodedApostrophe","runOnServer","getUnicodeSafeString","decodeURI","getGA4EventCallback","setGA4EventCallback","ga4EventCallback","getIsUserIdentified","isParamBeingIgnored","shouldLoadXmpParam","param1","param2","getMediaSrc","setMediaSrc","mediaSrc","getXMPSrc","setXMPSrc","xmpSrc","getDisableInteractions","setDisableInteractions$1","disableInteractions","getPosterImageSrc","setPosterImageSrc","posterImageSrc","getTOCSpriteSrc","setTOCSpriteSrc","tocSpriteSrc","getMediaTitle","setMediaTitle","mediaTitle","getTOCTitle","setTOCTitle","tocTitle","getMediaRotation","setMediaRotation","rotation","getEndActionType$1","setEndActionType","endActionType","getEndActionParam","setEndActionParam","endActionParam","getIgnoreXmpControllerParameters","setIgnoreXmpControllerParameters","ignoreXmpControllerParameters","upperCasedIgnores","getIgnoreQuizQuestions","setIgnoreQuizQuestions","ignoreQuizQuestions","getIsSearchable","setIsSearchable","isSearchable","getAutoPlayMedia","setAutoPlayMedia","autoPlayMedia","getForceAutoPlayMedia","setForceAutoPlayMedia","forceAutoPlayMedia","getCaptionsEnabled","setCaptionsEnabled","captionsEnabled","getIgnoreStoredCaptionVisibleSetting","setIgnoreStoredCaptionVisibleSetting","ignoreStored","getSidebarEnabled","setSidebarEnabled","sidebarEnabled","getSidebarLocation","setSidebarLocation","sidebarLocation","getBackgroundColor","setBackgroundColor","getAutoHideControls","setAutoHideControls","autoHideControls","getProcessUnicodeNames","setProcessUnicodeNames","useUnicode","getEnforceLinearAssessment","setEnforceLinearAssessment","enforceLinearAssessment","getDisableFullframeMode","setDisableFullframeMode","disableFullframeMode","getDisableControls","setDisableControls","disableControls","getDisableYouTubeControls","setDisableYouTubeControls","disableYouTubeControls","getDisablePictureInPicture","setDisablePictureInPicture","disablePictureInPicture","getDisableContinueWithoutQuestions","setDisableContinueWithoutQuestions","disableContinueWithoutQuestions","getMobileWebViewCanAutoPlay","setMobileWebViewCanAutoPlay","canAutoPlay","getGoogleAnalyticsID","setGoogleAnalyticsID","getGAPageViewTracking","setGAPageViewTracking","gaPageViewTrack","getGAEventTracking","setGAEventTracking","gaEventTrack","getAltEventCategoryAsFilename","setAltEventCategoryAsFilename","altEventCategoryAsFilename","getAltLoadTimeAsSeconds","setAltLoadTimeAsSeconds","altLoadTimeAsSeconds","getTechSmithAccessTokenEndpoint","setTechSmithAccessTokenEndpoint","accessTokenEndpoint","setUserSignedIn","getJumpToTime","setJumpToTime","getFathomId","setFathomId","fathomId","getEmbedIFrameId","setEmbedIFrameId","embedIFrameId","getUseSlimAppSplashScreen","setUseSlimAppSplashScreen","useSlimAppSplashScreen","setDisableContextMenuForVideo","disableContextMenuForVideo","getShowYouTubeAnnotations","setShowYouTubeAnnotations","showAnnotations","getPreRollSrc","setPreRollSrc","preRollSrc","getContentBase","setContentBase","getContentType","setContentType","getPreload","setPreload","preloadOption","isValidPreloadOption","getFullViewPort","setFullViewPort","getWebConnector","setWebConnector","getTheme","setTheme$2","getEnableSingleClickControl","setEnableSingleClickControl","getEnableDoubleClickControl","setEnableDoubleClickControl","getPluginController","setPluginController","pluginController","getUseLargerProgressBar","setUseLargerProgressBar","useLargerProgressBar","getDisplayHotspotsShape","setDisplayHotspotsShape","displayHotspotsShape","getAudioDescriptionMediaSrc","setAudioDescriptionMediaSrc","audioDescriptionMediaSrc","getSkipVideoControlsEnabled","setSkipVideoControlsEnabled","skipVideoControlsEnabled","getSkipVideoDuration","setSkipVideoDuration","skipVideoDuration","getAllowFastForward","setAllowFastForward","allowFastForward","getShowADACompliantCaptions","setShowADACompliantCaptions","showADACompliantCaptions","getRememberUserInfo","setRememberUserInfo","rememberUserInfo","getLogScormApiCalls","setLogScormApiCalls","logScormApiCalls","getUserInfo","setUserInfo","userInfo","userSignedIn","getVideoThumbnailSrc","setVideoThumbnailSrc","videoThumbnailSrc","getVideoThumbnailWidth","setVideoThumbnailWidth","videoThumbnailWidth","getVideoThumbnailHeight","setVideoThumbnailHeight","videoThumbnailHeight","getVideoThumbnailInterval","setVideoThumbnailInterval","videoThumbnailInterval","getVideoThumbnailColumns","setVideoThumbnailColumns","videoThumbnailColumns","getTocModelFromDescription","setTocModelFromDescription","tocModelFromDescription","getCompleteScormOnRequirementsComplete","setCompleteScormOnRequirementsComplete","completeScormOnRequirementsComplete","getCustomFullScreenDomElement","setCustomFullScreenDomElement","customFullScreenDomElement","getEnableTheaterMode","setEnableTheaterMode","getShowAcknowledgementLink","setShowAcknowledgementLink","showAcknowledgementLink","deprecatedNoOp","playerConfiguration","clearConfiguration","addMediaSrc","getMediaSources","addCaptionSrc","captionSrc","getMediaFileName","mediaSource","splitEl","getUnableToDisplayContentString","useCustomEventTracking","customEventTracking","customEventCallback","getTrackEvents","getCustomEventTracking","getCustomEventCallback","setAdditionalAppQueryParamsFromJson","queryString","getAdditionalAppQueryString","saveConfigurationFromQueryString","configParams","numberParams","getEndActionType","setDisableInteractions","getReportScormComplete","setReportScormComplete","reportScorm","getDisableContextMenuForVideo","setTheme","getUserSignedIn","getQuizServiceBaseUrl","setQuizServiceBaseUrl","quizServiceBaseUrl","getResultsServiceBaseUrl","setResultsServiceBaseUrl","resultsServiceBaseUrl","setSwfBase","isIEOnServerWithUnicode","setFlashUpdateBootstrapSwf","getAdvancedSeeking","setAdvancedSeeking","getDebugUIMode","setDebugUIMode","getPlayerWidth","setPlayerWidth","getPlayerHeight","setPlayerHeight","setFlashPlayerSwf","setForceFlashPlayer","setForceHtml5Player","setConfigurationSrc","setPrioritizeFullScreen","getDisableYouTubeFullscreen","setDisableYouTubeFullscreen","setAllowRewind","mediaRotation","ignoreStoredCaptionVisibleSetting","processUnicodeNames","mobileWebViewCanAutoPlay","googleAnalyticsID","googleAnalyticsPageViewTracking","googleAnalyticsEventTracking","techSmithAccessTokenEndpoint","showYouTubeAnnotations","contentBase","preload","fullViewPort","webConnector","theme","enableSingleClickControl","enableDoubleClickControl","isScormLesson","captionSrcList","videoThumbnailsSrc","enableTheaterMode","AggregateError","errors","setTimeoutFunc","noop$1","Promise$1","doResolve","finale","Handler","any","P","rejectionReasons","allSettled","_currentPlayerType$1","_performanceApiSupported","performance","mark","getEntriesByType","performanceWrapper","markerName","measureName","startMark","endMark","measureNames","rumData","measureDuration","measures","getMeasureDuration","registeredEvents","listeningToWindowMessageEvent","onExternalMessage","smartPlayerEventName","removeWindowMessageListener","externalMessageController","callbackFunction","attachEvent","iFrameBridge","domain","iFrameId","postMessage","stringify","parsePlayerURLParams","playerUrlParams","parseEmbeddedURLParams","queryParamsStripper","mediaType","YOUTUBE","JPG","PLAYLIST","NOT_AVAILABLE","MULTIPLE_TYPES","Media$1","media","uri","_media","_mimeType","_uri","getFileExtension","mediaTypeFromMimeType","MediaListParser$1","mediaSources","_ready","_mediaList","_mediaProcessedPromises","parsePlaylistSource","playlistMediaSource","playlistSrc","jHxr","playlistData","playListMediaPromises","playListMedia","parseMediaUrl","playlistMedia","mediaList","inferredMimeType","ext","inferMimeTypeFromFileExtension","textStatus","findMediaMimeTypeByRequestHeader","parseMedia","youTubeMediaSource","parseYouTubeMedia","MediaList$1","_readyPromiseResolve","_readyPromiseReject","_mediaListParser","_readyPromise","_currentMediaIndex","getMediaIndexByUri","mediaIndex","isMediaTypeAvailable","currentMedia","currentMediaIndex","mediaPosition","currentMediaType","onFirstMedia","onLastMedia","hasImage","isPlaylist","playerType","HTML5_VIDEO","IMAGE","NOT_SUPPORTED","mediaPlayerController","haveImage","haveWebMAndCanPlay","haveMP4AndCanPlay","haveOGGAndCanPlay","haveYoutubeEmbedUrl","_getPlayerType","cssClasses","smartPlayerNamespace","videoWrapper","scormModule","scormModuleNavigationContainer","playerControlsVisible","largerProgressBar","hideElement","volumeSliderHidden","hideSecondaryControls","fullscreenMode","volumeMutedButtonGlyph","volumeLowButtonGlyph","volumeMediumButtonGlyph","volumeHighButtonGlyph","playButtonGlyph","pauseButtonGlyph","fullscreenButtonGlyph","fullscreenButtonActiveGlyph","fullFrameButtonGlyph","fullFrameButtonActiveGlyph","expandButtonGlyph","audioDescriptionButtonGlyph","audioDescriptionButtonActiveGlyph","closedCaptionButtonGlyph","closedCaptionNonEnglishButtonGlyph","closedCaptionButtonActiveGlyph","closedCaptionNonEnglishButtonActiveGlyph","tocButtonGlyph","tocButtonActiveGlyph","settingsButtonGlyph","settingsButtonActiveGlyph","tertiaryButton","tertiaryButtonActive","generatedPluginContainer","pluginNamedContainerPrefix","hotspotVisible","screenReaderAlert","imageViewAnimateTransitions","safariPipIssueFix","captionsUnderVideo","captionsVerticalAlignTop","captionsVerticalAlignBottom","captionsHorizontalAlignLeft","captionsHorizontalAlignCenter","captionsHorizontalAlignRight","captionsCustomPosition","captionsCaptionSelected","captionsPreventCaptionDrag","captionXmpView","captionAdaView","progressBarTrackPreventSeeking","hideBubbleArrow","hiddenVideoThumbnailVisible","scrubPreviewHasThumbnail","focusableAnswerInput","constrainMediaHeight","constrainMediaWidth","mediaTypeYouTube","theaterModeButtonGlyph","theaterModeButtonActiveGlyph","cssVariables","playerWidth","playerHeight","mediaIntrinsicWidth","mediaIntrinsicHeight","mediaIntrinsicAspectRatio","mediaIntrinsicAspectRatioNumber","mediaViewPortWidth","mediaViewPortHeight","mediaViewPortAspectRatio","mediaViewPortAspectRatioNumber","reservedSizeScorm","reservedSizeCaptions","reservedSizeControls","tocTopOffset","ResponsiveController$1","$rootContainer","_$rootContainer","_$mediaViewPortContainer","_$mediaSizingContainer","_currentViewPortWidth","_currentViewPortHeight","_currentViewPortAspectRatio","_intrinsicWidth","_intrinsicHeight","_intrinsicAspectRatio","_rootContainerResizeObserver","_viewPortContainerResizeObserver","_initialCheck","isApproximatelySameSize","newDimensionDouble","existingCssVarName","ResizeObserver","manageResponsiveClasses","calculateMediaViewPortDimensions","setCssVariables","_responsiveBreakpoints","viewPortWidth","viewPortHeight","domContainer","containerWidth","containerHeight","breakpoint","widthClassName","heightClassName","monitorContainerSize","monitorMediaViewPortSize","$mediaViewPortContainer","$mediaSizingContainer","intrinsicWidth","intrinsicHeight","initializeIntrinsicSizing","clearContainerMonitors","disconnect","responsiveBreakpoints","currentMediaWidth","currentMediaHeight","intrinsicMediaWidth","intrinsicMediaHeight","intrinsicMediaAspectRatio","currentViewPortWidth","currentViewPortHeight","currentViewPortAspectRatio","reportType","NONE","API","APIANDSCORM","QuestionSetMarker$1","questionSetIndex","questionSet","_questionSetIndex","_rangeStart","_rangeEnd","_canSeekPast","questionSetId","rangeStart","rangeEnd","canSeekPast","questionType","FILL_IN","CHOICE","SHORT","Question$1","tscmeQuestionModel","_userResponse","_isResponseCorrect","_isGraded","_attemptDuration","_responseLocked","_feedbackActionExecuted","toJSON","questionText","choices","answer","getSnapShot","snapshotUserResponse","rl","ad","irc","populateQuestion","questionSnapShot","getQuizServiceData","percentOfVideoSegmentWatched","questionData","correct","segmentWatched","getFeedbackForReason","feedbackItem","isGraded","userResponse","isResponseCorrect","attemptDuration","responseLocked","feedbackActionExecuted","QuestionSet$1","tscmeQuestionSetModel","_percentOfVideoSegmentWatched","_numberGradedQuestions","_numberUngradedQuestions","cacheQuestionDetails","question","tscmeQuestion","mediaTimePosition","vsw","populateQuestionSet","questionSetSnapShot","quizId","questionSetData","displayFeedback","every","numberGradedQuestions","numberUngradedQuestions","numberCorrectQuestions","usesRationale","Quiz$1","xmpModel","_productionName","_projectName","_quizTitle","_quizId","_quizInstanceId","_questionSetMarkers","_mediaDuration","setReportMethod","quizLocale","quizRequireUserId","quizHideReplay","quizAuthoredEmail","quizClientId","mediaDuration","quizReportMethod","quizAllowSkipQuiz","quizQuestionSetArray","tscmeQuestionSet","getApiDataForQuestionSet","getScormScore","scormScore","totalGradableQuestions","totalCorrectQuestions","isLastQuestionComplete","considerQuestionSetCompleteId","getPreviousMarkerTimeForMarker","markerTime","qs","populateQuiz","quizModelSnapshot","questionSetSnapshot","quizDefinition","quizDef","projectName","productionName","reportRecipients","useQuizApi","useScorm","quizTitle","quizID","quizInstanceID","quizInstanceId","questionSetMarkerTimes","numberQuestionSets","minMarkerTimeDiff","totalNumberOfGradedQuestionSets","totalGradableQuestionSets","urlService","ensureUrlHasValidScheme","paramName","paramValue","kvp","query","generateQueryStringWithExtraParam","windowLocation","port","hostname","pathname","hrs","sec","strTime","hrsPattern","minPattern","secPattern","numPattern","hrsTest","minTest","secTest","numTest","_typeof","polyad","_fathomId","_getCompleteCallback","_errorHandlerCallback","_xmpModel","_videoId","_playbackReadyPromiseResolve","_videoLoadStartTime","_videoLoadEndTime","_previousActiveElement","_previousActiveElementWasHighlighted","_defaultTextColorObject","_defaultBgColorObject","_defaults","captionFontFamily","captionFontSize","captionFontSizeMin","captionFontSizeMax","captionTextColor","captionBgColor","captionPosition","captionBarHeight","_font","_fontSizeForPlayerDimensions","_fontSizeMin","_fontSizeMax","_textColor","_eventHandlers","setFontSize","initFromXmp","minCaptionFontSize","maxCaptionFontSize","captionBg","initDefaults","setFontSizeForPlayerDimensions","scaleX","scaleY","eventEntry","font","fontEnclosedWithQuotes","fontSizeForPlayerDimensions","fontSizeMin","fontSizeMax","textColor","backgroundOpacity","newCaptionTrack","eventCallback","hasCaptions","CaptionService$1","Xmp","_groupedScreenTextItems","_captionDefaults","_xmpAjaxPromise","_captionFileAjaxPromiseList","loadXmpWithRetry","retrylimit","crossDomainRequest","parseXmp","imageExistsForTocFromDescription","captionsSrcList","loadedCaptionData","captionSrcItem","captionAjaxPromise","captionData","abortPendingRequests","hasAdvancedFeatures","hasTocItems","hasCaptionItems","hasHotspotItems","hasQuiz","hasScreenTextItems","hasSpeechTextItems","hasSearchableItems","hasAnySearchableItems","tocImageSrc","tocCellLayoutType","tocItemArray","speechTextItemArray","screenTextItemArray","itemStartTime","groupIndex","groupedItem","previousItemName","currentItemName","hotspotItemArray","captionsHasMultipleLanguages","captionItems","captionBgOpacity","tocContainsThumbs","tocThumbImageSrc","_getFathom","xmlModel","onFathomLoad","fathomService","getFathom","NullSmartPlayerView$1","noOp","loadMedia","destroy","play","isInFullScreenMode","addMediaEventListener","removeMediaEventListener","getCaptionsVisible","setCaptionsVisible","getScrubbing","setScrubbing","triggerVideoStartEventCallbacks","getSafeSeekTime","initializedPromise","Promise","currentSrc","paused","volume","muted","playbackRate","ended","seeking","buffered","played","seekable","uuidGenerator$1","_p8","_analyticsCategory","analyticsService","analyticsCategory","action","category","eventParams","readyStates","VideoPlaybackQualityMetrics$1","videoElementView","triggerRumDataEventCallback","eventLabelSuffixRetriever","playerState","_readyStateHasAtLeastEnoughDataOnce","_readyStateHasEnoughDataAfterSeeked","_timeToReachFirstHaveEnoughData","_videoLoadStartTimeInMilliseconds","_uniqueID","_mediaLocation","_eventListeners","_currentReadyState","_isSeeking","_playingEventShouldFireAfterStalled","_mediaElement","mediaElement","_eventLabel","_queuedEvents","_sendEventsDelayID","getEventLabel","triggerShowVideoBufferingViewEvent","triggerHideVideoBufferingView","sendQueuedEvents","queuedEvent","ga4Event","checkVideoReadyState","currentReadyState","previousReadyState","pausedForQuiz","eventLabel","eventTime","video_session_id","onStalledEventHandler","onProgressEventHandler","removeStoppedToBufferEventIfNeeded","onVideoSeekingHandler","onVideoSeekedHandler","onVideoWaitingHandler","onVideoTimeUpdateHandler","onVideoLoadStartHandler","onVideoMetadataLoadedHandler","onVideoLoadedDataHandler","onVideoCanPlayHandler","onVideoDurationChange","onMediaPlayingEventHandler","setEventLabel","Disabled","DomOrder","escaped","padIfNecessary","getHourMinuteSecondsFromTimeInSeconds","timeInSeconds","secondsWithoutHours","timeFormatter","timeComponents","timeInterval","timecode","multiplier","timecodeParts","lowTimeBounds","timePartAsNumber","PLACEHOLDER_GLYPH_DATA_URL","templateGenerator","_ref","fullscreenIndex","audioDescriptionIndex","audioDescriptionTrackSrc","playButtonIndex","playIndex","accessBtnClickToPlay","replayButtonIndex","replayIndex","accessBtnClickToReplay","templateContext","closedCaptionIndex","questionAnswers","placeHolderImg","answerIndex","isChecked","_ref2","choiceAnswerTemplate","autoFocus","inputLabel","inputId","inputName","useAutofocus","fillAnswerTemplate","buttonTitle","hotspotContainerWidth","hotspotContainerHeight","hotspotIndex","descriptionId","hotspotDescription","hotspotShape","hotspotCoordinatesSeparationBySpace","hotspotLinkClassName","hotspotDescriptionId","hotspotViewTemplate","screenReaderAlertText","screenReaderAlertTemplate","hotspotsContainerId","hotspotsTemplate","hotspotsAltText","videoTagUniqueId","videoViewTemplate","mediaTagUniqueId","imageViewTemplate","loaderImg","loaderAltText","messageText","primaryActionButtonText","messageBarViewTemplate","link","headerText","subHeaderText","replayText","openButtonScreenReaderText","visitSiteText","openExternalLinkTemplate","pipButtonIndex","skipDuration","rewindIndex","forwardIndex","videoWrapperIndex","preRollSizeClass","preRollContainerTemplate","previousIndex","nextIndex","progressIndex","chapterIndex","progressBarChapterSegmentTemplate","questionTextTemplate","questionFeedbackContextText","questionFeedbackContextTextTemplate","correctTextString","incorrectTextString","questionGradedStatusContext","reviewText","confirmationText","alertText","questionSetConfirmationTemplate","totalQuestions","questionCountText","questionCountContext","quizTime","submittingImg","submittingImgAltText","previousQuestionButtonA11yText","previousButtonName","nextQuestionButtonA11yText","nextButtonName","submitButtonName","continueButtonName","hideQuizA11yText","hideQuizText","showQuizText","videoId","questionSetTemplate","numberCorrectText","percentCorrectText","numberInCorrectText","percentInCorrectText","continueText","numberCorrect","percentCorrect","numberInCorrect","percentInCorrect","reviewAnswerText","questionSetReviewConfirmationTemplate","gradableDetails","unGradeableDetails","questionSetResultsTabIndex","txtAnswersSubmitted","gradeableDetails","txtViewAnswers","txtHideAnswers","questionSetReviewStatusTemplate","enterName1","enterName2","name1Class","name2Class","reverseNames","setupMessage","enterEmail","beginButtonText","skipControlText","quizSetupTemplate","hasMultipleLanguages","playbackRatesList","ccLanguageList","captionsExist","settingsIndex","speedSettingIndex","playbackRates","ccLanguageSettingIndex","ccLanguages","acknowledgmentUrl","languageValue","languageLabel","_ref3","rateValue","rateLabel","settingsViewTemplate","shortAnswerTemplate","tocIndex","dataTocTime","dataFileText","showThumbnail","centerContent","showText","tocText","tocRawText","tocItemRawText","tocItemIndex","tocItemText","tocItemTemplate","searchLabel","msgSearch","msgSearchIsDisabledInFS","tocSearchIndex","tocEraseIndex","cachedVolume","volumeIndex","accessVolumeSlider","minVolume","maxVolume","currentVolume","buttonLabel","isPrimaryButton","completeSessionButtonLabel","scormNavigationBarTemplate","confirmText","dismissButtonText","dismissButtonScreenReaderText","confirmButtonText","confirmButtonScreenReaderText","isDestructiveButton","scormConfirmCompleteModalTemplate","sessionEndedText","theaterModeIndex","VideoSeekingSpinnerView$1","$container","_viewOpen","_displayTimeoutId","_$seekingSpinnerContainer","showViewAfterDelay","hideView","showView","quizController","videoApiUtils","questionSetMarker","timeInMilliseconds","quizModel","quizEnabled","newQuizController","mediaView","wrapperWidth","wrapperHeight","mediaWidth","mediaHeight","ratioOfWidth","ratioOfHeight","playerControlsType","video","videoPlaylist","mediaViewType","playlist","VideoElementView$1","$mediaContainer","includeControls","triggerRumDataEvent","firstPlayCallback","includePosterIfAvailable","_view","_mediaWrapper","_videoSeekingSpinnerView","_videoPlaybackQualityMetrics","_containsWebTrackCaptions","_videoFirstPlayTriggered","_$videoAndVideoSources","_captionTrackElements","showVideoBufferingView","hideVideoBufferingView","onVideoErrorHandler","errorString","onFirstPlayHandler","unbindVideoEvents","bindVideoSourceEvents","videoElementMarkup","languageDisplayName","$videoElementContainer","createView","captionTrackElements","textTracks","numberTracks","captionLanguage","cacheCaptionTrackElements","hotfixViewAndControlsCSS","$controlsView","showCaptionTrack","mode","hideCaptionTrack","onEventHandler","reshowVideoAfterClickToReplay","processVideoEnd","numberMediaSource","mediaWrapper","containsWebTrackCaptions","videoWidth","videoHeight","currentTimeInMilliseconds","currentTimeInSeconds","canDragContentOnVideo","playerControlType","supportsClickToPlayControls","supportsSCORM","playbackQualityMetrics","timingMeasureList","messageBarType","info","warning","MessageBarView$1","customActionButtonHandler","_$messageBarContainer","_$actionButton","onActionClick","playedTracker","tracker","internalPlayed","currentMediaSegmentIndex","lastTimeUpdate","segmentIndex","createNewPlayedMediaSegment","newIndex","numberPlayedSegments","PlayedMediaSegment","onMediaSeekEnd","mediaSegmentIndexForTime","getPlayedMediaSegmentIndexByTime","mergeOverlappingMediaSegments","numberSegments","areMediaSegmentsOverlapping","mergeMediaSegments","segmentOneIndex","segmentTwoIndex","mergedIndex","notMergedIndex","timeChangeSinceLastUpdate","recordTime","segment1","segment2","startInOuterSegment","endInOuterSegment","segment","youtubeIdParser","videoUrl","videoIdMatch","_playbackReadyPromise","youTube","onFirstPlay","onError","startTimeInSeconds","disableFullScreen","loadedPercent","supportPlaybackRate","availableRateSettings","displayAnnotations","heartbeatIntervalId","playbackReadyPromise","handlerIndex","arg1","arg2","firstPlay","player","getDuration","YT","playerVars","wmode","loop","autoplay","disablekb","rel","showsearch","showinfo","iv_load_policy","playsinline","fs","modestbranding","onReady","playerIFrame","getAvailablePlaybackRates","onStateChange","PlayerState","PAUSED","ENDED","PLAYING","BUFFERING","onPlaybackRateChange","eventHandlers","_playedTracker","getCurrentTime","seekTo","setPlaybackRate","scaledValue","setVolume","mute","unMute","playVideo","pauseVideo","cueVideoById","onYouTubeIframeAPIReady","clearInterval","setInterval","getPlayerState","videoLoadedFraction","getVideoLoadedFraction","percentLoaded","queued","youTubeApiFound","YoutubeElementView$1","containerElementUniqueId","_youtubePlayer","_errorMessageBarView","_$youtubePointerEventWorkaround","internalFirstPlayCallback","onControlsHidden","onControlsVisible","bindToEvents","youtubeElementViewObject","mediaHasQuizQuestions","SEGMENT_CHOICES","segmentLength","_videoDuration","_segmentLength","_numberSegments","_videoSegments","_numberVideoSegmentWatched","_currentPlayTime","_enabled","videoAnalytics","loadTime","videoDurationInMilliseconds","videoTimeInMilliseconds","startTimeInMilliseconds","endTimeInMilliseconds","percentageWatched","startSegmentIndex","endSegmentIndex","numberSegmentsWatched","totalSegmentsInRange","segmentValue","videoSegmentSnapshot","videoSegmentSnapshotList","PlaylistElementView$1","_videoElementView","initCurrentMedia","enablePreviousButton","enableNextButton","clickPrevHandler","clickNextHandler","wasPlaylistLastMediaItem","fullscreenHelper","elementToFullScreen","requestFullscreen","webkitRequestFullscreen","webkitEnterFullscreen","fullScreenElement","exitFullscreen","webkitExitFullscreen","ImageView$1","imageSrc","_$imageEl","imageViewMarkup","_imageTapActive","_$document","onImageError","switchToFullscreenMode","exitFullscreenMode","onFullscreenChange","fullscreenElement","onImageTouchToggle","naturalWidth","naturalHeight","MediaViewFactory$1","playerMarkup","disableHighlights","$element","highlightDisabler","highlightState","_keyTypes","space","leftArrow","upArrow","rightArrow","downArrow","tab","tableOfContents","isKeyPassedOfSameType","isKeyOfLanguageSpecificType","isKeyOfEnglishSpecificType","isKeyOfGermanSpecificType","isKeyOfJapaneseSpecificType","isKeyOfType","keyTypes","_$focusTrapElement","_firstFocusableEl","_lastFocusableEl","_$window$1","scrollIntoView","scrollParent","scrollIntoViewIfNeeded","elementFitsInsideContainer","innerHeight","saveActiveElement","disableHighlightsOnPreviousActiveElement","$previousActiveElement","onFocusTrapTab","removeFocusTrap","viewHelper","trapFocus","focusableEls","scrollActiveElementIntoView","focusPreviousElement","elementOrChildHasFocus","getActiveElement","iframes","focused","contentWindow","rightParenRegex$1","leftParenRegex$1","playReplayControlStates","playVideoDisplayed","replayVideoDisplayed","BeforeAfterPlayControlsView$1","_markup","_$videoClickToPlayLink","_$videoClickToReplayLink","_$videoClickToPlayGraphic","_$videoClickToReplayGraphic","_$pluginContainer","_viewState","onPlayHandler","hideVideoClickToPlayLink","hideVideoClickToReplayLink","replayHandler","enableControls","toggleFullscreen","initPlugins","viewElementType","initializePluginsForViewElement","showVideoClickToPlayLink","setVideoClickToPlayErrorState","showVideoClickToReplayLink","addVideoClickToPlayBackground","posterSrc","disableClickToPlayEvents","viewState","mouseButtons","mainButton","auxiliaryButton","secondaryButton","ProgressChapterModel$1","startAsPercent","endAsPercent","durationAsPercent","$chapterElement","_index","_startAsPercent","_endAsPercent","_durationAsPercent","_$chapterElement","_$loadProgressElement","_$seekHintProgressElement","_$playProgressElement","$loadProgressElement","$seekHintProgressElement","$playProgressElement","getThumbnailRectangleByTime","timeIndex","row","ProgressBarControlView$1","_videoThumbnailImage","_formattedDuration","_readableDuration","_documentRef","_windowRef","_requestAnimationId","_scrubbing","_lastScrubTime","_wasPlayingBeforeSeek","_playStatusAfterSeek","_quizModel","_$playTimeDisplay","_$scrubBar","_$scrubbarTrack","_$quizMarkers","_$scrubPreview","_$scrubVideoThumbnail","_$hiddenVideoThumbnail","_scrubVideoThumbnailCanvasCtx","_$scrubPreviewChapterName","_$scrubPreviewVideoTime","_keysEnabled","_durationDisplayInitialized","_markersCreated","_lastUpdatedFormattedMediaTime","_lastUpdatedScrubTime","_showSeekPreview","_lastSeekHintVideoPercent","_lastSeekPreviewDetails","hideThumbnail","videoTimeInSeconds","displayAtVideoPercent","chapterName","formattedVideoTime","_chaptersCache","_shouldRespectQuizMarkers","_updateBufferedTimeout","_hideSeekPreviewTimeoutId","_currentProgressBarWidth","shouldRespectQuizMarkers","getClickX","allowSkipQuestionSetMarkersBeforeTime","getChapterPercentageFromTotalPercentage","totalPercent","chapter","getVideoTimeFromXPosition","xPos","relativeXPos","scrubBarWidth","amountPlayedPercentage","pendingVideoTime","videoTime","closestRequiredQuizMarker","getClosestRequiredQuizMarkerTimeBeforeVideoTime","updateLoadProgress","onDownSeek","onMoveSeek","onUpSeek","setPlayProgress","setScrubPreviewDetailsAtTime","videoSeekTimes","unrestrictedVideoPercent","restrictedVideoPercent","getChapterNameAtVideoTime","onMouseMoveToPreview","clearHideScrubPreviewDelay","showScrubPreview","updateSeekHint","hideScrubPreview","onScrubBarMouseOut","atVideoEndTime","videoTimes","previewDisplayText","videoPercent","previewLeftPos","scrubPreviewWidth","thumbnailRect","drawImage","updateVideoThumbnail","videoPercentNormalized","drawSeekHint","updateUi","percentPlayed","updateTimeDisplay","formattedCurrentTime","progressDisplayText","ariaValueText","cacheProgressBarWidth","onPlayerResize","updateQuizMarkers","createQuizMarkers","updateMarkerVisibility","mediaDurationInMilliseconds","timePercent","quizMarkerContainerWidth","marker","markerSize","onselectstart","keyPressed","fastForwardDisabledText","screenReaderAlertMarkup","$screenReaderAlert","timeToSkip","onMousedown","disableKeyListeners","enableKeyListeners","onQuizzingCompleteHandler","onMediaSeekedEvent","resetSeekPastFlagForQuizMarkersPastTime","onLoadedMetadata","onVideoThumbnailLoaded","getContext","onAddPlugin","onVideoProgress","downloadedPercent","progressBarChapterSegmentMarkup","onRequestAnimationFrame","playAfterSeek","updatePlayProgress","Image","getXPositionForQuestionSetMarker","questionSetMarkerId","measuredContainerWidth","measuredQuizMarkerWidth","usedElementWidth","scrubBarLeftOffset","durationHasChanged","createTocChapters","xmpTocItems","lastStartTime","lastChapterDuration","nextChapterTimeOrDuration","chapterPercentage","cancelAnimationFrame","setShouldRespectQuizMarkers","newShouldRespectQuizMarkers","scrubbing","lastScrubTime","controlElement","displayWidth","PlayRewindControlsView$1","_disabled","_$playControl","_$rewindControl","_$forwardControl","_$playButtonGlyph","_$pauseButtonGlyph","pauseMedia","togglePlay","seekVideo","rewindVideo","skipVideoForward","setInitialFocus","PrevNextControlsView$1","_$previousControl","_$nextControl","disablePreviousButton","disableNextButton","localStorageWrapper","localStorage","setItem","getItem","VOLUME_STRING","VolumeControlView$1","cachedVolumeValue","_showVolumeSlider","_secondaryControlsHidden","_cachedVolume","_cachedMuted","_sliderShowTimeoutId","_$controlsContainer","_$primaryControlsContainer","_$secondaryControlsContainer","_$volumeContainer","_$volumeSliderContainer","_$volumeSlider","_$volumeSliderTrack","_$volumeControl","_initialVolume","_initialMuted","_sliderVolumeValue","_sliderActive","onKeyDownHandler","onKeyHandler","setSliderValue","updateVolumeSliderPositionByVolume","clampVolumePercentage","volumeAsPercent","volumePercentageValue","onSliderMouseDownHandler","volumeSliderLeftOffset","pendingVolumeValue","updateSliderValue","onMouseMove","onMouseUp","updateSliderOnAnimationFrame","volumeFromMedia","volumeConverted","volumeSliderLeftCssValue","volumeTrackWidthCssValue","showVolumeSlider","handleSecondaryControls","shouldHideSecondaryControls","setSecondaryControlsVisibility","isHidden","hideVolumeSlider","updateUI","volumeValue","setMuted","newVolumeAsPercent","startHideSliderTimeout","onContainerMouseOver","onContainerMouseLeave","hideVolumeSliderOnFocusOut","onVolumeButtonClick","onResize","onMediaVolumeChange","hideControls","AudioDescriptionControlView$1","_$audioDescriptionButton","_$audioDescriptionGlyph","_audioDescriptionEnabled","onButtonClick","audioDescriptionEnabled","onAudioDescriptionChange","eventData","audioDescriptionFailedToPlay","disableControl","enableControl","CaptionsControlView$1","_$closedCaptionButton","_$closedCaptionGlyph","_normalButtonClass","_activeButtonClass","savePreference","onCaptionsToggle","savedStateLoaded","setCaptionButtonVisible","captionButtonVisible","_hotkeysEnabled","hotkeyService","TocControlView$1","_$tocButton","_$tocGlyph","tocButtonMarkup","_tocDisplayed","setTocDisplayState","displayToc","classList","onHideToc","onShowToc","focusTocButton","_defaultAvailablePlaybackRates","PlayerSettingsView$1","_isOpen","_currentPlaybackRate","_availablePlaybackRates","_minPlaybackRate","_maxPlaybackRate","defaultPlaybackRate","playerSettingsViewMarkup","playerRateOptionsLocalizedStrings","rate","getPlaybackRates","selectedLanguageIdentifier","foundSelectedLanguageInAvailableList","languageShouldBeSelected","getClosedCaptionLanguages","_$playerSettingsWrapper","_$playerSettingsViewEl","_$playbackRateSelectEl","_$ccLanguageSelectEl","_$playerSettingsButton","_$playerSettingsButtonGlyph","_$closedCaptionToggleContainer","_$closedCaptionToggle","_$closedCaptionToggleElement","_$audioDescriptionToggle","_$audioDescriptionToggleElement","_$settingsCloseButton","_$settingsHeaderContainer","savedPlayBackSpeedFromLocalStorage","removeClickHandler","addClickHandler","trapFocusInModalView","hideSettingsViewOnClickOutside","playbackSpeed","onPlaybackRateControlChange","onCCLanguageControlChange","ccLanguageCode","onAudioDescriptionToggleChange","onClosedCaptionToggleChange","onCaptionsToggled","onPlaybackRateValueChange","realPlaybackRate","onKeyboardShortCut","indexOfCurrentRate","decrementPlaybackRate","onPlayerSettingsButtonClick","onDisplayCaptionControl","displayCaptionControl","isOpen","nullPipController","exit","bindChangeEvent","unbindChangeEvent","inPip","isSupported","StandardsPipController$1","requestPictureInPicture","exitPictureInPicture","onChangeHandler","pictureInPictureElement","pictureInPictureEnabled","LegacySafariPipController$1","webkitSetPresentationMode","webkitPresentationMode","webkitSupportsPresentationMode","pipControllerFactory","PipControlView$1","_$pipButton","_pipApiController","onPresentationModeChange","pipViewActive","onPipControlClick","handleSmartPlayerActionEvents","initialize","DisplayModes","Normal","Theater","Fullscreen","PictureInPicture","TheaterModeControlView$1","_$theaterModeButton","_$theaterModeGlyph","_theaterModeEnabled","sendTheaterModeChangedEvent","displayMode","setDisplayMode","loadSavedSettings","savedDisplayStateStorage","inFullScreen","FullscreenControlView$1","_$fullScreenButton","_$fullScreenGlyph","_elementToFullscreen","_inFullScreen","_inFullFrame","_fullScreenDomElement","_buttonMode","_legacyIOSFullScreenMode","findButtonMode","canSupportExpandVideoMode","setButtonDisplay","onFullScreenChange","cancelFullScreen","switchFromFullScreenMode","toggleFullScreenMode","toggleFullFrameMode","onFullScreenClick","checkToExitFullScreen","onFullButtonClick","initializeHandlers","fullScreenEventNames","initializeFullScreenSupport","onVideoEnd","onDoubleClick","isFullScreen","isFullFrame","ClickControlsView$1","fullscreenControlView","progressBarControlView","doubleClickDelay","_$clickControls","_$playPauseStateContainer","_$playPauseStateIndicator","_clicks","_doubleClickTimer","_draggingCaption","_mediaPluginInteractionActive","_doubleClickDelay","processHotspotActiveChange","hasTimeChangeAction","enable","onControlClick","mediaPaused","onCaptionDragStart","onCaptionDragEnd","processMediaAreaPluginInteractiveHandler","VideoControlsController$1","$rootSmartPlayerElement","_$videoControlsContainer","_beforeAfterPlayControlsView","_progressBarControlView","_playRewindControlsView","_prevNextControlsView","_volumeControlView","_audioDescriptionControlView","_captionsControlView","_tocControlView","_playerSettingsView","_pipControlView","_theaterModeControlView","_fullScreenControlView","_clickControlsView","_lastClickTime","_displayStartScreenOnPlaybackError","_mediaIsSeeking","_timeToSeekAfterCurrentSeekOperation","_displayMode","_playbackInitialized","_userNeedToClickHeroPlayControl","_controlsHidden","_autoHideControlsTimeoutId","_lastMouseMoveCoords","forceHide","hideElementAfterFadeOut","controlsAreBusy","hideControlsOnTimeout","clearHideControlsTimeout","resetHideControlsTimeout","enableClickControlsIfNotPausedForHotspot","oneOrMoreHotspotsWithTimeActionArePaused","showControls","showControlsWithAutoHide","onContainerClick","getTime","onContainerLeave","onContainerMousemove","enableAutoHideControls","disableAutoHideControls","resetTime","onPlaybackInitialized","playPromise","setControlsDisplayMode","onSeekToTime","onSetVolume","onSetMuted","isMuted","onSetPlaybackRate","onVideoSeeking","onVideoSeeked","onVideoMetadataLoaded","seekToInitialTimeIfSet","teardownHideShowControls","onDisplayTocControl","onTocScroll","timeToSeek","initializePlayback","onQuizSetupComplete","onHeroPlayControlClick","onMediaError","onHotspotInactive","onTryToAutoPlay","userNeedToClickHeroPlayControl","playbackInitialized","beforeAfterPlayControlsView","CAPTION_POSITION","CAPTION_ALIGNMENT","VideoControlsDisplayModeController$1","videoControlsController","_quizUIVisible","_quizUIMinimized","_pipViewActive","_captionViewPosition","_searchIsFocused","_isScrubbing","_externalLinkViewOpen","_mediaError","getDisplayMode","updateVideoControlsDisplayMode","captionViewPosition","onPipChanged","onQuizUIVisible","onQuizUIHidden","onMinimizeQuizUI","onMaximizeQuizUI","onShowQuizSetup","handleControlsUpdated","onSearchFocusChange","searchIsFocused","onScrubbingStarted","onScrubbingEnded","onExternalLinkViewOpen","onExternalLinkViewClosed","hotspotViewState","firstVisible","HotspotViewModel$1","hotspotXmpModel","videoNativeWidth","videoNativeHeight","_hotspotXmpModel","_hotspotIndex","_isActive","_hasPausedAtEnd","_viewPoints","viewPoints","coordinate","hsViewData","xOrig","yOrig","xScale","yScale","getHotspotViewPoints","hotspotText","jumpMediaText","jumpTimeText","openLinkText","playText","createHotspotDescription","isTimeNearEndOfHotspot","getTimeLeftUntilEnd","getCoordinates","hotspotViewWidth","hotspotViewHeight","viewPoint","isHotspotWithinTime","shouldPauseAtTheEnd","isActive","hasPausedAtEnd","HotspotView$1","spContainer","$hotspotsContainerElement","hotspotViewModel","_$hotspotSvgElement","_$hotspotLinkElement","_timerId","svgViewMarkup","$svgView","enableTabbing","disableTabbing","onQuizEventHandler","onControlsUpdatedHandler","hideHotspot","getCurrentTimeInMilliseconds","displayHotspot","addHotspotViewToDom","$svgElementWithLowerIndex","$svg","getSvgElementWithLowerIndex","pauseOnHotspot","initPauseOnHotspot","mediaPlaybackRate","frameBuffer","getTimeToHotspotEnd","resetHasPaused","update","hotspotState","HotspotsView$1","tabController","_$hotspots","_currentFile","hotspotsMarkup","_xmp","_eventContainer","_hotspotsContainerId","_hotspotXmpModels","_hotspotViews","_mediaNativeWidth","_mediaNativeHeight","_oneOrMoreHotspotActive","preventEvent","onHotspotActiveChange","oneOrMoreHotspotActive","numberHotspotsJustDisplayed","isHotspotWithTimeActionPaused","lastActiveHotspotView","getLastActiveHotspotView","lastTabEnabledElement","hotspotAlertText","addScreenReaderAlert","onHotspotClick","targetHotspotXmpModel","targetHotspotViewModel","currentFile","hotspotView","currentMediaTimeInMilliseconds","$hotspots","HotspotController$1","_hotspotsView","_$hotspotsContainer","onVideoTimeUpdate","updateHotSpotsViewTime","processHotspotClick","opened_url","targetWindow","onSeeked","eventsToBind","loadedmetadata","timeupdate","seeked","unbindToEvents","_scaledFontSize$1","_currentCaptionWidth$1","xmpCaptionView","setStyle","captionsService","$positionContainer","$textContainer","background","setWidth","scaledVideoWidth","captionPositionUnderVideo","setScale","canvasScale","maxRequiredHeight","scaledFontSize","captionWidth","_scaledFontSize","_currentCaptionWidth","adaCaptionView","captionViewFactory","CaptionsView$1","canDragCaptions","_lastUpdateCurrentFile","_window","_$positionContainer","_$textContainer","_canvasScale","_visible","_currentCaptionIndex","_lastUpdateCurrentTime","_initDragClientPosition","_onStartDragCaptionContainerSize","_initCaptionTextPosition","_customCaptionPosition","onCaptionLanguageChanged","updateCaption","onDragAnimationFrame","getInteractionPointFromEvent","onCaptionDrag","point","dragXOffset","dragYOffset","offsetXPercent","offsetYPercent","maxWidthPercentage","currentCaptionWidth","innerWidth","currentCaptionHeight","currentCaptionOffset","currentTextOffset","topPercent","leftPercent","setVisible","handleDisplayCaptions","resizeCaptionsContainer","updateView","captionStylesHaveChanged","onSizeChange","forceActiveCaptionUpdate","newCaptionIndex","getHorizontalAlignmentClass","setupDomStructure","showVideoTrackCaptions","hideVideoTrackCaptions","CaptionController$1","captionService","_captionsView","_$controls","setupCaptionView","isNotNullOrUndefined","resizeCaptions","scaleContainer","updateCaptions","onNewCaptionTrack","savedCaptionsStateFromLocalStorage","initialState","videoCaptionsSetting","loadInitialState","getCaptionCollection","getCaptionTrack","setCaptionTrack","showCaptionControls","EMAIL_REGEX","textSanitizer","email","TIME_SALT","getMilliseconds","UNIQUE_TOKEN_1","UNIQUE_TOKEN_2","REGEX_REPLACEMENT_STRING","TOKEN_1_REGEX","TOKEN_2_REGEX","REGEX_ESCAPE","createHighlightedText","searchRegex","textWithSearchMatchPlaceholders","searchTool","searchString","itemsToSearch","itemText","rawText","imageRef","imageRect","simpleSearch","TocView$1","_viewVisible","_viewIsOpen","_searchFocus","_scrolledToc","_$tocHeadContainer","_$searchContainer","_$searchInput","_$titleHeader","_$clearSearchButton","_$tocPipImageContainer","_$searchInputDisabled","_$tocContentScrollContainer","_$tocContent","_$tocContentScreenReaderLabel","_$tocItemDomList","_$tocContainer","_$noSearchResultsAlert","_tocThumbsImage","_tocPipImage","_pointerDownClientPoint","animationSpeed","openView","resizeView","headerHeight","tocTopPosition","displayTocPipImage","targetWidth","targetHeight","imageWidth","imageHeight","TOC_WIDTH","pipImageBackgroundStyle","pipImageBackground","setupTocHeader","clearTocContent","createTocItem","tocTime","tocFile","tocItemThumbnailCanvasEl","imageThumbRect","tocItemMarkup","$tocItem","yPos","thumbScale","TOC_MAX_HEIGHT","verticalThumbScale","ctx","fillStyle","fillRect","generateTocItemThumbnail","displayTocItems","tocItem","thumbnailCanvasEl","tocItemClickHandler","seekToTocItem","clickTocItem","$currentTarget","timeToSeekTo","fileToSeekTo","onTocItemPointerDown","onTocItemPointerMove","onSearchTextInput","updateSearchResults","$tocButtons","searchResults","searchResultsTocItems","updatedSearchAlertText","alertScreenReader","clearSearch","clearSearchAlertText","onSearchInputFocus","onSearchInputBlur","onTocItemKeyUp","onTocItemKeyDown","onTocContentScrollHandler","tocMarkup","blurSearchInput","disableSearch","enableSearch","resize","tocContainsActiveElement","TableOfContentsController$1","_tocView","resizeTableOfContents","onTocItemClicked","videoIndex","hideToc","mobileOrientationChange","onQuizMinimizeUI","onQuizMaximizeUI","onQuizReview","onQuizPaused","onTocDisplayToggled","AudioDescriptionTrackView$1","_audioDescriptionAudioEl","_audioTrackEnabled","_videoIsSeeking","_videoIsBuffering","_lastBufferedVideoTime","onAudioError","syncAudioTimeWithVideoTime","syncAudioVolumeWithVideoVolume","pauseAudioDescription","onVideoPlaying","onVideoStartSeeking","onWaiting","playAudioDescriptionIfVideoIsPlaying","onRateChange","onAudioTrackSeeked","onAudioDescriptionControlChange","onTimeUpdate","AudioDescriptionController$1","_audioDescriptionTrackView","ConfirmOpenUrlView$1","_$view","_$externalLinkReplayButton","_$externalLinkVisitButton","onConfirmHandler","onReplay","bindEvents","notAvailable","jumpToTimeAndPlay","jumpToTImeAndStop","showReplayControls","hideReplayControls","openUrl","openUrlInNewWindow","xmpEndActionType","xmpEndActionTypeLowerCase","executeSeekAction","onReplayHandler","seekTime","displayConfirmOpenUrlView","$localContainer","inNewWindow","urlString","executeEndAction","replayVideoHandler","showReplayControlsHandler","EndActionsController$1","_processingEndOfVideo","replayVideo","showClickToReplay","onVideoReplayHandler","replayTime","processEndOfMedia","isPlaybackEnded","BubbleView$1","containerId","_viewIsMinimized","_viewBottom","_ignoreBreakpoints","_containerId","_topContainer","_$container","_$overlay","_$arrowBubble","clickCapture","isDesktopBreakpoint","cacheElements","ignoreBreakpoints","maximizeView","minimizeView","updateViewPosition","removeView","destroyOverlay","getOverlayMarkup","setBottomOffset","bottom","pointAt","quizXPos","arrowPos","outerWidth","viewWidth","halfViewWidth","borderWidth","arrowWidth","viewIsMinimized","rationaleActionType","CONTINUE","LOCATION","JUMP_TO_TIME","CORRECT_GLYPH_DATA_URL","INCORRECT_GLYPH_DATA_URL","CORRECT_ANSWER_TEXT","YOUR_ANSWER_TEXT","AnswersView$1","showResults","answersMarkup","_$window","_$textInput","getCorrectAnswerIndex","numberAnswers","correctAnswerBitshifted","displayResults","$labelEls","correctAnswerIndex","$placeHolderImgEls","$userResponseInputImageEl","$correctResponseInputImageEl","$correctImage","$incorrectImage","displayResponseFillInResults","$inputEls","disableInput","getAnswersMarkup","getUserResponse","getCorrectAnswerText","userAnsweredQuestion","responseSuffix","getTextResponseSuffix","usersAnswer","getUsersAnswer","fullAnswerText","isTextInputOrAreaFocused","QuestionView$1","$questionTextContainer","$questionGradedStatusContainer","$feedbackContainer","$answersContainer","_answersView","feedbackMarkup","_feedbackContextMarkup","questionTextMarkup","questionGradedStatusMarkup","QuestionSetView$1","displayOverlay","mediaIsImage","showQuestionSetResults","_resolveInitPromise","questionSetViewMarkup","_currentQuestionIndex","_startTimeForQuestion","_currentQuestionView","_initTimeoutId","_alertScreenReaderTimeoutId","_$questionSetContainer","_$questionSetContent","_$questionTextContainer","_$answersContainer","_$feedbackContainer","_$questionCountContainer","_$questionGradedStatusContainer","_$hideControl","_$showControl","_$prevControl","_$continueControl","_$submitControl","_$minimizedContainer","_minimizedByKeyboardShortcut","_superView","initPromise","onHideQuizClick","onShowQuizHandler","onKeyUpHandler","isOnLastQuestion","saveQuestionUserInput","timeBetween","executeContinueAction","displayNextQuestion","executeRationaleAction","feedbackInfo","actionType","feedbackReason","getFeedbackInfoForCurrentQuestion","displayQuestion","onPreviousQuestion","onNextQuestion","onContinue","onSubmit","onIphoneTouchstart","getControlsConfig","currentQuestion","onFirstQuestion","onLastQuestion","hasOneQuestion","controlsConfig","showSubmitNav","showContinueNav","showPrevNav","showNextNav","prevDisabled","nextDisabled","updateControls","updateQuestionCount","questionCountMarkup","checkQuestionSetProgress","completeCallback","showFeedbackForCurrentQuestion","viewInitializedPromise","_superView$2","questionSetConfirmationView","getViewMarkup","getReviewControlRef","getConfirmControlRef","$confirmControl","sessionStorageWrapper","sessionStorage","rightParenRegex","leftParenRegex","QuizSetupView$1","quizSetupMarkup","_$quizSetupView","_$firstNameInput","_$lastNameInput","_$emailInput","_$beginButton","_$skipButton","getKeys","validateInput","firstName","lastName","beginQuiz","cacheSelfIdentity","skipQuiz","hideSkipButton","$view","_superView$1","reviewAnswersConfirmationView","getContinueControlRef","$reviewControl","BackoffStrategyFactory","retryLimit","backoffTime","maxDelay","tries","backoff","statusCodes","Unauthorized","UnprocessableEntity","_quizInstanceDataPromiseResolve","_quizInstanceDataPromiseReject","_gradeableDetails","_unGradeableDetails","_onPreRollStartedCallback","$preRollView","NO_RETRY_STATUS_CODES","HttpService$1","retryStrategyFactory","logFailures","_pendingRequestPromises","removePendingRequestPromise","requestPromise","UUID","addRequestToPendingList","requestUUID","sendRequest","httpVerb","retryStrategy","request","retries","responseData","canRetryFromStatusCode","retryResponse","sendFormDataPost","quizDataXmlConverter","recipient","choice","httpService$1","tokenService","AccessToken","_quizCreateInstanceUrl","_quizInstanceDataPromise","httpService","httpServiceWithUnlimitedRetries","httpServiceWithNoLogging","getBaseURL","quizService","setQuizCreateInstanceUrl","quizCreateInstanceUrl","getQuizCreateInstanceUrl","startQuizInstance","playerConfig","QuizId","CheckForQuizDefinition","FirstName","LastName","Email","getInstanceFormData","DefinitionRequired","quizJsonData","quizDefinitionXml","DefinitionText","submitQuizDefinition","analyticsSampleRate","SampleRate","reportingRate","ReportingRate","Id","submitQuestionSet","quizInstanceData","questionSetXml","ResponseText","sendProgress","sampleRateInMilliseconds","completedSamples","InstanceId","Interval","ViewedSegments","getAnalyticsRate","QuizProgressTracker$1","videoToTrack","reportingRateInMilliseconds","_intervalId","_playCallbackFunction","_didAttachToEndedEvent","_didAttachToPlayEvent","attachToEndedEvent","stopInterval","setupProgressInterval","attachToPlayEvent","videoStartMilliseconds","videoEndMilliseconds","isEndOfVideo","firstSample","lastSample","mergedPlayedInMilliseconds","mergedPlayedIndex","processPlayedSegments","computePercentageViewed","questionGrader","FATHOM","XMP","fathomGrader","processQuestionSetResults","questionResult","isCorrect","processQuestionResults","doesLocalGrading","gradeQuestion","responseNumber","gradeChoiceQuestion","responseLowerCase","possibleAnswers","numberPossibleAnswers","gradeFillInTheBlankQuestion","xmpGrader","gradeQuestionSet","questionSetReviewStatusView","setGradeableDetails","setUngradeableDetails","getHideAnswersControlRef","getShowAnswersControlRef","$readableElement","scormConstants","terminate","setValue","commit","dataModelID","cmiExit","cmiLocation","cmiSuspendData","cmiProgressMeasure","cmiScaledPassingScore","cmiScoreMin","cmiScoreMax","cmiScoreRaw","cmiScoreScaled","cmiSuccessStatus","cmiCompletionStatus","cmiSessionTime","adlNavRequest","scorm1Dot2DataModel","scorm2004DataModel","incomplete","notAttempted","unknown","passed","failed","browsed","exitStates","suspend","logout","navRequestStates","exitAll","suspendAll","versions","NOT_DETECTED","SCORM_1_2","SCORM_2004","assessment","minScore","maxScore","scoreNormalizationDivider","ScormDataModel$1","_percentageComplete","_quizPercentageCorrect","_quizCompletionStatus","_quizModelSnapshot","_videoAnalyticsSnapshot","_videoTimeInSecondsSnapshot","_videoTimeInSeconds","_completionStatus","_passingStatus","parseSuspendedDataString","suspendedDataString","suspendedData","pc","vas","cvt","getSuspendedDataString","percentageComplete","quizPercentageCorrect","quizPercentageCorrectAsString","quizCompletionStatus","videoAnalyticsSnapshot","snapshot","videoTimeInSecondsSnapshot","completionStatus","passingStatus","ScormApiWrapper$1","scormApi","noAPIFound","apiVersion","scormManifestDocString","apiCall","scormFunctionName","dataModalID","dmeValue","dataModel","Initialize","LMSInitialize","GetValue","LMSGetValue","Terminate","LMSFinish","SetValue","canSetValue","lessonStatus","LMSSetValue","Commit","LMSCommit","getScormManifestDoc","getScormApiOnWindow","windowRef","API_1484_11","manifestDocAsString","scormApiVersion","findAPI","findAPITries","lookForApiOnWindowTopOpener","getAPI","lookForApiOnParentWindow","getTitleFromManifestDoc","manifestXml","api","getTitle","getLastError","errorNumber","diagnostic","GetLastError","GetErrorString","GetDiagnostic","LMSGetLastError","LMSGetErrorString","LMSGetDiagnostic","ScormNavigationBarView$1","_$scormNavigationBarContainer","_$scormHeaderElement","_$scormCompleteSessionButton","_scoObjectiveHasBeenCompleted","onCompleteSessionHandler","scormNavigationBarMarkup","setTitle","scormTitle","scoObjectiveHasBeenCompleted","ScormConfirmCompleteModalView$1","_$confirmButton","_$dismissButton","_$scormConfirmCompleteModalWrapper","onDismissClickHandler","onCompleteClickHandler","failedToSaveSuspendedData","finalConfirmText","canResumeVideo","scormConfirmCompleteModalMarkup","ScormSessionEndedView$1","_$scormSessionEndedWrapper","scormSessionEndedMarkup","scormController$1","_scormApiWrapper","_isDisposed","_initialized","_scormModel","_scormNavigationBarView","_scormConfirmCompleteModalView","_minimumScoreToPass","_minimumViewPercentageToCompleteLesson","_sessionStartTimeInMilliseconds","_preventWindowClose","_ignoreFailedToSuspendError","_pendingScoExitValue","_scoSessionHasEnded","scoHasQuiz","scormSessionHasUnfinishedQuiz","canSuspendScormSession","endScormSession","timeInSecondsAsString","scoSuccessStatusValue","scoCompletionStatusValue","submitScore","suspendSuccess","sessionTimeInMilliseconds","sessionTimeInSeconds","onExitSessionHandler","exitScormSession","onExitSessionConfirmedHandler","onExitSessionWithOutProgressConfirmed","tryAndTerminateSessionOnPageUnloadIfNeeded","currentScore","allQuestionsAnswered","scoreNeededToPass","scoreNeededMultiplier","maxPassingScoreValue","lmsPassingScore","apiResult","onbeforeunload","preventPopUpWindowClose","initView","submitVideoWatchedPercentage","initialized","initialPercentageComplete","initialVideoAnalyticsSnapshot","initialQuizModelSnapshot","initialVideoTimeInSeconds","minScoreToPassLesson","minimumScoreToPass","minViewPercentageToCompleteLesson","minimumViewPercentageToCompleteLesson","supportsResumeSession","scormController","quizServiceErrorIds","badDefinition","QuizController$1","_questionGrader","_quizUserDetails","_quizSetupPromise","_resolveQuizSetup","_quizSetupView","_currentView","_retrySubmissionMessageDisplayBar","_quizOutOfDateMessageView","_quizBadDefinitionMessageView","_progressTracker","_numberQuestionSets","_currentQuestionSetIndex","_bottomOffset","_pointAt","_quizEnabled","_quizReady","_mediaIsImage","_lastStatusMessage","_shouldReportViewedOnPageLoad","submitScoreToScormController","userSubmitToLMS","onNetworkRetryEvent","completeQuestionSetEventDispatch","questionSetCompleteHandler","onContinueHandler","createQuestionSetFeedbackView","needOverlay","questionSetView","continueVideoHandler","initQuestionSetFeedback","initFeedbackFromReviewStatusView","hideQuizStatus","onRationaleActionHandler","onCloseQuestionSetView","possibleCorrect","numberUngradable","createQuestionSetReviewStatusView","numberIncorrectText","percentIncorrectText","numberIncorrect","updateViewBottom","createReviewAnswersConfirmationView","submitResults","ioMessage","gradeResults","onGradingComplete","apiErrorEventHandler","createQuestionSetView","reviewHandler","confirmHandler","destroyQuizSetupView","beginQuizHandler","skipQuizHandler","createSetupView","startQuizApiInstance","errorID","responseJSON","errorId","displaySetupView","removeSubmissionRetryMessage","showSubmissionRetryMessage","showQuizIsOutOfDateMessage","reload","showQuizBadDefinitionMessage","setQuestionGrader","grader","forceProgressUpdate","segmentsCompleted","onMediaFirstPlayerHandler","onMediaControlsReady","setQuizModel","newQuizModel","resolveQuizSetup","hasMultipleQuestionSets","getLastStatusMessage","displayNextQuestionSet","findQuestionSet","activeQuestionSetId","numberMarkers","findPrevMarkerTimeForMarker","updatePercentWatchedForQuestionSet","percentWatched","displayConfirm","createConfirmView","showQuiz","hideQuiz","pointViewAt","startTrackingProgress","populateQuizModel","suspendedQuizData","quizIsSetupPromise","quizReady","viewIsOpen","hasQuizQuestions","QuizEventController$1","ioOverlayView","_lastQuestionSetId","_lastQuestionSetMarkerTime","_quizzingErrorMessageBarView","updateQuizPointAtPosition","playerXOffset","pointAtXPosition","seekToTime","safeSeekTime","updateQuizzing","intervalId","quizEventHandler","prevMarkerTimeInSeconds","displayMessage","jumpToTimeInSeconds","lastStatusMessage","onVideoControlsVisible","MediaAnalyticsController$1","_eventPlayTracking","_eventLastPercentReported","initVideoAnalytics","resumeSCORMSession","handleTimeUpdate","percent_viewed","updateAnalytics","onCanPlayVideo","eventAction","loading_duration","resetPlayStartAnalytics","videoStartedEventAction","onMediaEnd","finished_action","onMediaWrapperMediaEnd","onOpenExternalLink","onClickExternalLink","onStartedPlayback","quizRequiresAnalytics","playerConfigurationRequiresAnalytics","onPlayerInitialized","canplay","metadataReady","canPlayReady","PluginEventsController$1","_$mediaPluginContainer","onMediaPluginContainerKeyHandler","onMediaPluginContainerMouseHandler","initMediaPlugins","onPluginAdded","MediaSessionController$1","mediaPosterImageSrc","_navigatorRef","_mediaSessionRef","mediaSession","setActionHandler","MediaMetadata","_metaDataSet","setMetaData","artwork","updateMediaSessionState","playbackState","setPositionState","onPlayAction","onPauseAction","onSeekToAction","MediaExtensionsController$1","responsiveController","_hotspotController","_tableOfContentsController","_audioDescriptionController","_endActionsController","_quizController","_quizEventController","_mediaAnalyticsController","_pluginEventsController","_mediaSessionController","hasAnEnabledQuiz","setupVideoControllers","disableHighlightOnMouseDown","TabController$1","$defaultFirstTabEnabledElement","$defaultLastTabEnabledElement","_defaultFirstTabEnabledElement","_defaultLastTabEnabledElement","_firstTabEnabledElement","_lastTabEnabledElement","_playerInFullScreenMode","unbindEventsToTabEnabledElement","setFirstTabEnabledElement","firstTabEnabledElement","setLastTabEnabledElement","initController","ExternalEventsController$1","playerViewEventCallbacks","onTheaterModeChanged","newDisplayMode","onVideoError","onPlayingEvent","onStartedPlaybackHandler","triggerQuizVisible","triggerQuizHidden","triggerQuizPromptVisible","triggerQuizPromptHidden","processCaptionChanged","processCaptionToggled","externalCaptionEvent","onCaptionsReadyHandler","triggerPlayerSettingsOpen","triggerPlayerSettingsClose","triggerVideoControlsHidden","triggerVideoControlsVisible","triggerExternalPlayerResize","triggerHeroControlHidden","triggerImagePointerOver","triggerImagePointerLeave","playing","PlayerState$1","_oneOrMoreHotspotsWithTimeActionArePaused","_videoHasQuizQuestions","_pausedForQuiz","videoHasQuizQuestions","IoOverlayView$1","_$ioContainer","_$ioMessage","_$ioImg","shouldHideLoadingGraphic","setViewMessage","SmartPlayerView$1","playerInstanceUUID","xmpInErrorState","_viewHasBeenInitialized","_mediaExtensionsController","_tabController","_externalEventsController","_scormErrorMessageBarView","_$playerPluginContainer","_mediaElementUniqueID","_viewInitializedPromise","_playerViewEventCallbacks","_queuedMediaBinds","_mediaView","_ioOverlayView","_videoControlsController","_videoControlsDisplayModeController","_controlsReady","_mediaExtensionsReady","_mediaHasBeenLoaded","_playerState","_$mediaContainer","_$playerLayoutControlsContainer","eventCategorySuffix","categorySuffix","rum","externalEventIsSupported","eventKey","onHideLoadingMessage","loadMediaWhenComponentsAreReady","onControlsReady","onMediaExtensionsReady","onFailedToFindSCORMApi","startViewPortObserver","onImagePointerOver","onImagePointerLeave","isScrubbingVideo","progressBarDisplayWidth","currentDisplayMode","smartPlayerPreRollEventConstants","PRE_ROLL_STARTED","PRE_ROLL_FINISHED","PRE_ROLL_FINISHED_ACTIONS","REMOVE_NOW","preRollView","$window","preRollMessage","destroyView","onIFrameContentLoaded","preRollController","onPreRollStartedCallback","viewExists","_$spElement","setTheme$1","applyTheme","getClassNameForTheme","themeClassNameAsString","currentThemeClassName","themeController","externalVideoEventIsSupported","_$rootSmartPlayerElement","_responsiveController","_currentPlayerType","_captionService","_smartPlayerView","_viewCreated","_viewInitialized","_queuedExternalConfiguration","_playerInstanceUUID","_xmpInErrorState","mediaListError","onPreRollStart","continueInit","currentInstanceUUID","mediaListReady","playbackInitiatedHandler","processMediaAssets","initIntrinsicSizingFromImageUrl","imgUrl","img","TSC","embedded_config_xml","setupPlayer","captionChangeHandler","initPlayerView","displayLocalWarning","addEventListener$1","playMedia","queueEventHandler","setCurrentTime","mediaPlayer","rootElementID","$parentNode","getSmartPlayerRootElement","getVersion","jsSeekTime","jsPlay","getCurrentSrc","getEnded","getPaused","getPlaybackRate","getBuffered","getPlayed","getSeekable","getSeeking","getVolume","getMuted","isScrubbing","dequeueEventHandler","triggerEvent","isVisible","getIsYouTube","getTocChapters","getProgressBarDisplayWidth","getCurrentDisplayMode","Plugin$1","pluginName","_initializedPromiseResolve","_initializedPromise","_pluginName","_viewElementType","pluginContainerElement","REMOVE_SPACES_REGEX","PluginController$1","_plugins","isViewElementTypeSupported","registerPlugin","pluginSameNameMessage","pluginUnsupportedViewElementMessage","plugin","$viewElementPluginContainer","elementTypePlugins","getPluginsForViewElementType","pluginNameNoSpaces","pluginNamedContainerClassName","getPluginContainerElement","CamtasiaQuizPreviewView$1","xmpString","previewElement","packageJson","timeCodeRegex","newlineRegex","defaultChapterName","chapterParams","parseTableOfContentsItemFromString","lineString","timecodes","getChapterNameFromLineString","chapterStartTime","_started","_controls","_authInfo","_lastError","_pluginController","generalErrorHandler","mediaInterfaceController","addSrc","$spElement","pluginInitPromise","displayQuizPreview","containerElement","displayImageFullscreen","exitImageFullscreen","createTocFromDescription","descriptionText","tocModel","textString","textSplitNewlines","chapterItems","previousTocItemStartTime","textLine","textToTocModel","decodeURIComponent","lowerCaseValue","tocSrc","tocChapters","prerollSrc","captionsVisible","ignoreStoredCaptionVisible","isYouTube","authInfo","contextMenu","isIphoneOrIpod","singleClickControlEnabled","doubleClickControlEnabled","progressBarWidth","environment","deprecatedName"],"sourceRoot":""}