!function (e) {
    var t = {};

    function n(i) {
        if (t[i]) return t[i].exports;
        var r = t[i] = {i: i, l: !1, exports: {}};
        return e[i].call(r.exports, r, r.exports, n), r.l = !0, r.exports
    }

    n.m = e, n.c = t, n.d = function (e, t, i) {
        n.o(e, t) || Object.defineProperty(e, t, {enumerable: !0, get: i})
    }, n.r = function (e) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {value: "Module"}), Object.defineProperty(e, "__esModule", {value: !0})
    }, n.t = function (e, t) {
        if (1 & t && (e = n(e)), 8 & t) return e;
        if (4 & t && "object" == typeof e && e && e.__esModule) return e;
        var i = Object.create(null);
        if (n.r(i), Object.defineProperty(i, "default", {enumerable: !0, value: e}), 2 & t && "string" != typeof e) for (var r in e) n.d(i, r, function (t) {
            return e[t]
        }.bind(null, r));
        return i
    }, n.n = function (e) {
        var t = e && e.__esModule ? function () {
            return e.default
        } : function () {
            return e
        };
        return n.d(t, "a", t), t
    }, n.o = function (e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
    }, n.p = "/", n(n.s = 27)
}([function (e, t, n) {
    (function (t) {
        var n;
        n = "undefined" != typeof window ? window : void 0 !== t ? t : "undefined" != typeof self ? self : {}, e.exports = n
    }).call(this, n(6))
}, function (e, t, n) {
    (function (t) {
        var i, r = void 0 !== t ? t : "undefined" != typeof window ? window : {}, s = n(30);
        "undefined" != typeof document ? i = document : (i = r["__GLOBAL_DOCUMENT_CACHE@4"]) || (i = r["__GLOBAL_DOCUMENT_CACHE@4"] = s), e.exports = i
    }).call(this, n(6))
}, function (e, t) {
    e.exports = function (e, t) {
        e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t
    }
}, function (e, t) {
    function n(e) {
        if (e && "object" == typeof e) {
            var t = e.which || e.keyCode || e.charCode;
            t && (e = t)
        }
        if ("number" == typeof e) return a[e];
        var n, s = String(e);
        return (n = i[s.toLowerCase()]) ? n : (n = r[s.toLowerCase()]) || (1 === s.length ? s.charCodeAt(0) : void 0)
    }

    n.isEventKey = function (e, t) {
        if (e && "object" == typeof e) {
            var n = e.which || e.keyCode || e.charCode;
            if (null == n) return !1;
            if ("string" == typeof t) {
                var s;
                if (s = i[t.toLowerCase()]) return s === n;
                if (s = r[t.toLowerCase()]) return s === n
            } else if ("number" == typeof t) return t === n;
            return !1
        }
    };
    var i = (t = e.exports = n).code = t.codes = {backspace: 8, tab: 9, enter: 13, shift: 16, ctrl: 17, alt: 18, "pause/break": 19, "caps lock": 20, esc: 27, space: 32, "page up": 33, "page down": 34, end: 35, home: 36, left: 37, up: 38, right: 39, down: 40, insert: 45, delete: 46, command: 91, "left command": 91, "right command": 93, "numpad *": 106, "numpad +": 107, "numpad -": 109, "numpad .": 110, "numpad /": 111, "num lock": 144, "scroll lock": 145, "my computer": 182, "my calculator": 183, ";": 186, "=": 187, ",": 188, "-": 189, ".": 190, "/": 191, "`": 192, "[": 219, "\\": 220, "]": 221, "'": 222}, r = t.aliases = {windows: 91, "⇧": 16, "⌥": 18, "⌃": 17, "⌘": 91, ctl: 17, control: 17, option: 18, pause: 19, break: 19, caps: 20, return: 13, escape: 27, spc: 32, spacebar: 32, pgup: 33, pgdn: 34, ins: 45, del: 46, cmd: 91};
    for (s = 97; s < 123; s++) i[String.fromCharCode(s)] = s - 32;
    for (var s = 48; s < 58; s++) i[s - 48] = s;
    for (s = 1; s < 13; s++) i["f" + s] = s + 111;
    for (s = 0; s < 10; s++) i["numpad " + s] = s + 96;
    var a = t.names = t.title = {};
    for (s in i) a[i[s]] = s;
    for (var o in r) i[o] = r[o]
}, function (e, t) {
    e.exports = function (e) {
        if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
        return e
    }
}, function (e, t, n) {
    "use strict";
    var i, r, s, a, o, l = n(12).toUnsigned, u = n(12).toHexString, c = n(7);
    i = function (e) {
        return c.findBox(e, ["moov", "trak"]).reduce((function (e, t) {
            var n, i, r, s, a;
            return (n = c.findBox(t, ["tkhd"])[0]) ? (i = n[0], s = l(n[r = 0 === i ? 12 : 20] << 24 | n[r + 1] << 16 | n[r + 2] << 8 | n[r + 3]), (a = c.findBox(t, ["mdia", "mdhd"])[0]) ? (r = 0 === (i = a[0]) ? 12 : 20, e[s] = l(a[r] << 24 | a[r + 1] << 16 | a[r + 2] << 8 | a[r + 3]), e) : null) : null
        }), {})
    }, r = function (e, t) {
        var n, i, r;
        return n = c.findBox(t, ["moof", "traf"]), i = [].concat.apply([], n.map((function (t) {
            return c.findBox(t, ["tfhd"]).map((function (n) {
                var i, r;
                return i = l(n[4] << 24 | n[5] << 16 | n[6] << 8 | n[7]), r = e[i] || 9e4, (c.findBox(t, ["tfdt"]).map((function (e) {
                    var t, n;
                    return t = e[0], n = l(e[4] << 24 | e[5] << 16 | e[6] << 8 | e[7]), 1 === t && (n *= Math.pow(2, 32), n += l(e[8] << 24 | e[9] << 16 | e[10] << 8 | e[11])), n
                }))[0] || 1 / 0) / r
            }))
        }))), r = Math.min.apply(null, i), isFinite(r) ? r : 0
    }, s = function (e, t) {
        var n, i = c.findBox(t, ["moof", "traf"]), r = 0, s = 0;
        if (i && i.length) for (var a = c.parseTraf(i[0]), o = 0; o < a.boxes.length; o++) "tfhd" === a.boxes[o].type ? n = a.boxes[o].trackId : "tfdt" === a.boxes[o].type ? r = a.boxes[o].baseMediaDecodeTime : "trun" === a.boxes[o].type && a.boxes[o].samples.length && (s = a.boxes[o].samples[0].compositionTimeOffset || 0);
        return (r + s) / (e[n] || 9e4)
    }, a = function (e) {
        var t = c.findBox(e, ["moov", "trak"]), n = [];
        return t.forEach((function (e) {
            var t = c.findBox(e, ["mdia", "hdlr"]), i = c.findBox(e, ["tkhd"]);
            t.forEach((function (e, t) {
                var r, s, a = c.parseType(e.subarray(8, 12)), o = i[t];
                "vide" === a && (s = 0 === (r = new DataView(o.buffer, o.byteOffset, o.byteLength)).getUint8(0) ? r.getUint32(12) : r.getUint32(20), n.push(s))
            }))
        })), n
    }, o = function (e) {
        var t = c.findBox(e, ["moov", "trak"]), n = [];
        return t.forEach((function (e) {
            var t, i, r = {}, s = c.findBox(e, ["tkhd"])[0];
            s && (i = (t = new DataView(s.buffer, s.byteOffset, s.byteLength)).getUint8(0), r.id = 0 === i ? t.getUint32(12) : t.getUint32(20));
            var a = c.findBox(e, ["mdia", "hdlr"])[0];
            if (a) {
                var o = c.parseType(a.subarray(8, 12));
                r.type = "vide" === o ? "video" : "soun" === o ? "audio" : o
            }
            var h = c.findBox(e, ["mdia", "minf", "stbl", "stsd"])[0];
            if (h) {
                var d = h.subarray(8);
                r.codec = c.parseType(d.subarray(4, 8));
                var f, p = c.findBox(d, [r.codec])[0];
                p && (/^[a-z]vc[1-9]$/i.test(r.codec) ? (f = p.subarray(78), "avcC" === c.parseType(f.subarray(4, 8)) && f.length > 11 ? (r.codec += ".", r.codec += u(f[9]), r.codec += u(f[10]), r.codec += u(f[11])) : r.codec = "avc1.4d400d") : /^mp4[a,v]$/i.test(r.codec) && (f = p.subarray(28), "esds" === c.parseType(f.subarray(4, 8)) && f.length > 20 && 0 !== f[19] ? (r.codec += "." + u(f[19]), r.codec += "." + u(f[20] >>> 2 & 63).replace(/^0/, "")) : r.codec = "mp4a.40.2"))
            }
            var m = c.findBox(e, ["mdia", "mdhd"])[0];
            if (m && s) {
                var g = 0 === i ? 12 : 20;
                r.timescale = l(m[g] << 24 | m[g + 1] << 16 | m[g + 2] << 8 | m[g + 3])
            }
            n.push(r)
        })), n
    }, e.exports = {findBox: c.findBox, parseType: c.parseType, timescale: i, startTime: r, compositionStartTime: s, videoTrackIds: a, tracks: o}
}, function (e, t) {
    var n;
    n = function () {
        return this
    }();
    try {
        n = n || new Function("return this")()
    } catch (e) {
        "object" == typeof window && (n = window)
    }
    e.exports = n
}, function (e, t, n) {
    "use strict";
    var i, r, s = n(12).toUnsigned, a = function (e) {
        return new Date(1e3 * e - 20828448e5)
    }, o = function (e) {
        return {isLeading: (12 & e[0]) >>> 2, dependsOn: 3 & e[0], isDependedOn: (192 & e[1]) >>> 6, hasRedundancy: (48 & e[1]) >>> 4, paddingValue: (14 & e[1]) >>> 1, isNonSyncSample: 1 & e[1], degradationPriority: e[2] << 8 | e[3]}
    }, l = function (e) {
        var t = "";
        return t += String.fromCharCode(e[0]), t += String.fromCharCode(e[1]), t += String.fromCharCode(e[2]), t += String.fromCharCode(e[3])
    }, u = function (e, t) {
        var n, i, r, a, o, c = [];
        if (!t.length) return null;
        for (n = 0; n < e.byteLength;) i = s(e[n] << 24 | e[n + 1] << 16 | e[n + 2] << 8 | e[n + 3]), r = l(e.subarray(n + 4, n + 8)), a = i > 1 ? n + i : e.byteLength, r === t[0] && (1 === t.length ? c.push(e.subarray(n + 8, a)) : (o = u(e.subarray(n + 8, a), t.slice(1))).length && (c = c.concat(o))), n = a;
        return c
    }, c = function (e) {
        var t, n, i = new DataView(e.buffer, e.byteOffset, e.byteLength), r = [];
        for (t = 0; t + 4 < e.length; t += n) if (n = i.getUint32(t), t += 4, n <= 0) r.push("<span style='color:red;'>MALFORMED DATA</span>"); else switch (31 & e[t]) {
            case 1:
                r.push("slice_layer_without_partitioning_rbsp");
                break;
            case 5:
                r.push("slice_layer_without_partitioning_rbsp_idr");
                break;
            case 6:
                r.push("sei_rbsp");
                break;
            case 7:
                r.push("seq_parameter_set_rbsp");
                break;
            case 8:
                r.push("pic_parameter_set_rbsp");
                break;
            case 9:
                r.push("access_unit_delimiter_rbsp");
                break;
            default:
                r.push("UNKNOWN NAL - " + e[t] & 31)
        }
        return r
    }, h = {
        avc1: function (e) {
            var t = new DataView(e.buffer, e.byteOffset, e.byteLength);
            return {dataReferenceIndex: t.getUint16(6), width: t.getUint16(24), height: t.getUint16(26), horizresolution: t.getUint16(28) + t.getUint16(30) / 16, vertresolution: t.getUint16(32) + t.getUint16(34) / 16, frameCount: t.getUint16(40), depth: t.getUint16(74), config: i(e.subarray(78, e.byteLength))}
        }, avcC: function (e) {
            var t, n, i, r, s = new DataView(e.buffer, e.byteOffset, e.byteLength), a = {configurationVersion: e[0], avcProfileIndication: e[1], profileCompatibility: e[2], avcLevelIndication: e[3], lengthSizeMinusOne: 3 & e[4], sps: [], pps: []}, o = 31 & e[5];
            for (i = 6, r = 0; r < o; r++) n = s.getUint16(i), i += 2, a.sps.push(new Uint8Array(e.subarray(i, i + n))), i += n;
            for (t = e[i], i++, r = 0; r < t; r++) n = s.getUint16(i), i += 2, a.pps.push(new Uint8Array(e.subarray(i, i + n))), i += n;
            return a
        }, btrt: function (e) {
            var t = new DataView(e.buffer, e.byteOffset, e.byteLength);
            return {bufferSizeDB: t.getUint32(0), maxBitrate: t.getUint32(4), avgBitrate: t.getUint32(8)}
        }, esds: function (e) {
            return {version: e[0], flags: new Uint8Array(e.subarray(1, 4)), esId: e[6] << 8 | e[7], streamPriority: 31 & e[8], decoderConfig: {objectProfileIndication: e[11], streamType: e[12] >>> 2 & 63, bufferSize: e[13] << 16 | e[14] << 8 | e[15], maxBitrate: e[16] << 24 | e[17] << 16 | e[18] << 8 | e[19], avgBitrate: e[20] << 24 | e[21] << 16 | e[22] << 8 | e[23], decoderConfigDescriptor: {tag: e[24], length: e[25], audioObjectType: e[26] >>> 3 & 31, samplingFrequencyIndex: (7 & e[26]) << 1 | e[27] >>> 7 & 1, channelConfiguration: e[27] >>> 3 & 15}}}
        }, ftyp: function (e) {
            for (var t = new DataView(e.buffer, e.byteOffset, e.byteLength), n = {majorBrand: l(e.subarray(0, 4)), minorVersion: t.getUint32(4), compatibleBrands: []}, i = 8; i < e.byteLength;) n.compatibleBrands.push(l(e.subarray(i, i + 4))), i += 4;
            return n
        }, dinf: function (e) {
            return {boxes: i(e)}
        }, dref: function (e) {
            return {version: e[0], flags: new Uint8Array(e.subarray(1, 4)), dataReferences: i(e.subarray(8))}
        }, hdlr: function (e) {
            var t = {version: new DataView(e.buffer, e.byteOffset, e.byteLength).getUint8(0), flags: new Uint8Array(e.subarray(1, 4)), handlerType: l(e.subarray(8, 12)), name: ""}, n = 8;
            for (n = 24; n < e.byteLength; n++) {
                if (0 === e[n]) {
                    n++;
                    break
                }
                t.name += String.fromCharCode(e[n])
            }
            return t.name = decodeURIComponent(escape(t.name)), t
        }, mdat: function (e) {
            return {byteLength: e.byteLength, nals: c(e)}
        }, mdhd: function (e) {
            var t, n = new DataView(e.buffer, e.byteOffset, e.byteLength), i = 4, r = {version: n.getUint8(0), flags: new Uint8Array(e.subarray(1, 4)), language: ""};
            return 1 === r.version ? (i += 4, r.creationTime = a(n.getUint32(i)), i += 8, r.modificationTime = a(n.getUint32(i)), i += 4, r.timescale = n.getUint32(i), i += 8, r.duration = n.getUint32(i)) : (r.creationTime = a(n.getUint32(i)), i += 4, r.modificationTime = a(n.getUint32(i)), i += 4, r.timescale = n.getUint32(i), i += 4, r.duration = n.getUint32(i)), i += 4, t = n.getUint16(i), r.language += String.fromCharCode(96 + (t >> 10)), r.language += String.fromCharCode(96 + ((992 & t) >> 5)), r.language += String.fromCharCode(96 + (31 & t)), r
        }, mdia: function (e) {
            return {boxes: i(e)}
        }, mfhd: function (e) {
            return {version: e[0], flags: new Uint8Array(e.subarray(1, 4)), sequenceNumber: e[4] << 24 | e[5] << 16 | e[6] << 8 | e[7]}
        }, minf: function (e) {
            return {boxes: i(e)}
        }, mp4a: function (e) {
            var t = new DataView(e.buffer, e.byteOffset, e.byteLength), n = {dataReferenceIndex: t.getUint16(6), channelcount: t.getUint16(16), samplesize: t.getUint16(18), samplerate: t.getUint16(24) + t.getUint16(26) / 65536};
            return e.byteLength > 28 && (n.streamDescriptor = i(e.subarray(28))[0]), n
        }, moof: function (e) {
            return {boxes: i(e)}
        }, moov: function (e) {
            return {boxes: i(e)}
        }, mvex: function (e) {
            return {boxes: i(e)}
        }, mvhd: function (e) {
            var t = new DataView(e.buffer, e.byteOffset, e.byteLength), n = 4, i = {version: t.getUint8(0), flags: new Uint8Array(e.subarray(1, 4))};
            return 1 === i.version ? (n += 4, i.creationTime = a(t.getUint32(n)), n += 8, i.modificationTime = a(t.getUint32(n)), n += 4, i.timescale = t.getUint32(n), n += 8, i.duration = t.getUint32(n)) : (i.creationTime = a(t.getUint32(n)), n += 4, i.modificationTime = a(t.getUint32(n)), n += 4, i.timescale = t.getUint32(n), n += 4, i.duration = t.getUint32(n)), n += 4, i.rate = t.getUint16(n) + t.getUint16(n + 2) / 16, n += 4, i.volume = t.getUint8(n) + t.getUint8(n + 1) / 8, n += 2, n += 2, n += 8, i.matrix = new Uint32Array(e.subarray(n, n + 36)), n += 36, n += 24, i.nextTrackId = t.getUint32(n), i
        }, pdin: function (e) {
            var t = new DataView(e.buffer, e.byteOffset, e.byteLength);
            return {version: t.getUint8(0), flags: new Uint8Array(e.subarray(1, 4)), rate: t.getUint32(4), initialDelay: t.getUint32(8)}
        }, sdtp: function (e) {
            var t, n = {version: e[0], flags: new Uint8Array(e.subarray(1, 4)), samples: []};
            for (t = 4; t < e.byteLength; t++) n.samples.push({dependsOn: (48 & e[t]) >> 4, isDependedOn: (12 & e[t]) >> 2, hasRedundancy: 3 & e[t]});
            return n
        }, sidx: function (e) {
            var t, n = new DataView(e.buffer, e.byteOffset, e.byteLength), i = {version: e[0], flags: new Uint8Array(e.subarray(1, 4)), references: [], referenceId: n.getUint32(4), timescale: n.getUint32(8), earliestPresentationTime: n.getUint32(12), firstOffset: n.getUint32(16)}, r = n.getUint16(22);
            for (t = 24; r; t += 12, r--) i.references.push({referenceType: (128 & e[t]) >>> 7, referencedSize: 2147483647 & n.getUint32(t), subsegmentDuration: n.getUint32(t + 4), startsWithSap: !!(128 & e[t + 8]), sapType: (112 & e[t + 8]) >>> 4, sapDeltaTime: 268435455 & n.getUint32(t + 8)});
            return i
        }, smhd: function (e) {
            return {version: e[0], flags: new Uint8Array(e.subarray(1, 4)), balance: e[4] + e[5] / 256}
        }, stbl: function (e) {
            return {boxes: i(e)}
        }, stco: function (e) {
            var t, n = new DataView(e.buffer, e.byteOffset, e.byteLength), i = {version: e[0], flags: new Uint8Array(e.subarray(1, 4)), chunkOffsets: []}, r = n.getUint32(4);
            for (t = 8; r; t += 4, r--) i.chunkOffsets.push(n.getUint32(t));
            return i
        }, stsc: function (e) {
            var t, n = new DataView(e.buffer, e.byteOffset, e.byteLength), i = n.getUint32(4), r = {version: e[0], flags: new Uint8Array(e.subarray(1, 4)), sampleToChunks: []};
            for (t = 8; i; t += 12, i--) r.sampleToChunks.push({firstChunk: n.getUint32(t), samplesPerChunk: n.getUint32(t + 4), sampleDescriptionIndex: n.getUint32(t + 8)});
            return r
        }, stsd: function (e) {
            return {version: e[0], flags: new Uint8Array(e.subarray(1, 4)), sampleDescriptions: i(e.subarray(8))}
        }, stsz: function (e) {
            var t, n = new DataView(e.buffer, e.byteOffset, e.byteLength), i = {version: e[0], flags: new Uint8Array(e.subarray(1, 4)), sampleSize: n.getUint32(4), entries: []};
            for (t = 12; t < e.byteLength; t += 4) i.entries.push(n.getUint32(t));
            return i
        }, stts: function (e) {
            var t, n = new DataView(e.buffer, e.byteOffset, e.byteLength), i = {version: e[0], flags: new Uint8Array(e.subarray(1, 4)), timeToSamples: []}, r = n.getUint32(4);
            for (t = 8; r; t += 8, r--) i.timeToSamples.push({sampleCount: n.getUint32(t), sampleDelta: n.getUint32(t + 4)});
            return i
        }, styp: function (e) {
            return h.ftyp(e)
        }, tfdt: function (e) {
            var t = {version: e[0], flags: new Uint8Array(e.subarray(1, 4)), baseMediaDecodeTime: s(e[4] << 24 | e[5] << 16 | e[6] << 8 | e[7])};
            return 1 === t.version && (t.baseMediaDecodeTime *= Math.pow(2, 32), t.baseMediaDecodeTime += s(e[8] << 24 | e[9] << 16 | e[10] << 8 | e[11])), t
        }, tfhd: function (e) {
            var t, n = new DataView(e.buffer, e.byteOffset, e.byteLength), i = {version: e[0], flags: new Uint8Array(e.subarray(1, 4)), trackId: n.getUint32(4)}, r = 1 & i.flags[2], s = 2 & i.flags[2], a = 8 & i.flags[2], o = 16 & i.flags[2], l = 32 & i.flags[2], u = 65536 & i.flags[0], c = 131072 & i.flags[0];
            return t = 8, r && (t += 4, i.baseDataOffset = n.getUint32(12), t += 4), s && (i.sampleDescriptionIndex = n.getUint32(t), t += 4), a && (i.defaultSampleDuration = n.getUint32(t), t += 4), o && (i.defaultSampleSize = n.getUint32(t), t += 4), l && (i.defaultSampleFlags = n.getUint32(t)), u && (i.durationIsEmpty = !0), !r && c && (i.baseDataOffsetIsMoof = !0), i
        }, tkhd: function (e) {
            var t = new DataView(e.buffer, e.byteOffset, e.byteLength), n = 4, i = {version: t.getUint8(0), flags: new Uint8Array(e.subarray(1, 4))};
            return 1 === i.version ? (n += 4, i.creationTime = a(t.getUint32(n)), n += 8, i.modificationTime = a(t.getUint32(n)), n += 4, i.trackId = t.getUint32(n), n += 4, n += 8, i.duration = t.getUint32(n)) : (i.creationTime = a(t.getUint32(n)), n += 4, i.modificationTime = a(t.getUint32(n)), n += 4, i.trackId = t.getUint32(n), n += 4, n += 4, i.duration = t.getUint32(n)), n += 4, n += 8, i.layer = t.getUint16(n), n += 2, i.alternateGroup = t.getUint16(n), n += 2, i.volume = t.getUint8(n) + t.getUint8(n + 1) / 8, n += 2, n += 2, i.matrix = new Uint32Array(e.subarray(n, n + 36)), n += 36, i.width = t.getUint16(n) + t.getUint16(n + 2) / 16, n += 4, i.height = t.getUint16(n) + t.getUint16(n + 2) / 16, i
        }, traf: function (e) {
            return {boxes: i(e)}
        }, trak: function (e) {
            return {boxes: i(e)}
        }, trex: function (e) {
            var t = new DataView(e.buffer, e.byteOffset, e.byteLength);
            return {version: e[0], flags: new Uint8Array(e.subarray(1, 4)), trackId: t.getUint32(4), defaultSampleDescriptionIndex: t.getUint32(8), defaultSampleDuration: t.getUint32(12), defaultSampleSize: t.getUint32(16), sampleDependsOn: 3 & e[20], sampleIsDependedOn: (192 & e[21]) >> 6, sampleHasRedundancy: (48 & e[21]) >> 4, samplePaddingValue: (14 & e[21]) >> 1, sampleIsDifferenceSample: !!(1 & e[21]), sampleDegradationPriority: t.getUint16(22)}
        }, trun: function (e) {
            var t, n = {version: e[0], flags: new Uint8Array(e.subarray(1, 4)), samples: []}, i = new DataView(e.buffer, e.byteOffset, e.byteLength), r = 1 & n.flags[2], s = 4 & n.flags[2], a = 1 & n.flags[1], l = 2 & n.flags[1], u = 4 & n.flags[1], c = 8 & n.flags[1], h = i.getUint32(4), d = 8;
            for (r && (n.dataOffset = i.getInt32(d), d += 4), s && h && (t = {flags: o(e.subarray(d, d + 4))}, d += 4, a && (t.duration = i.getUint32(d), d += 4), l && (t.size = i.getUint32(d), d += 4), c && (t.compositionTimeOffset = i.getUint32(d), d += 4), n.samples.push(t), h--); h--;) t = {}, a && (t.duration = i.getUint32(d), d += 4), l && (t.size = i.getUint32(d), d += 4), u && (t.flags = o(e.subarray(d, d + 4)), d += 4), c && (t.compositionTimeOffset = i.getUint32(d), d += 4), n.samples.push(t);
            return n
        }, "url ": function (e) {
            return {version: e[0], flags: new Uint8Array(e.subarray(1, 4))}
        }, vmhd: function (e) {
            var t = new DataView(e.buffer, e.byteOffset, e.byteLength);
            return {version: e[0], flags: new Uint8Array(e.subarray(1, 4)), graphicsmode: t.getUint16(4), opcolor: new Uint16Array([t.getUint16(6), t.getUint16(8), t.getUint16(10)])}
        }
    };
    i = function (e) {
        for (var t, n, i, r, s, a = 0, o = [], u = new ArrayBuffer(e.length), c = new Uint8Array(u), d = 0; d < e.length; ++d) c[d] = e[d];
        for (t = new DataView(u); a < e.byteLength;) n = t.getUint32(a), i = l(e.subarray(a + 4, a + 8)), r = n > 1 ? a + n : e.byteLength, (s = (h[i] || function (e) {
            return {data: e}
        })(e.subarray(a + 8, r))).size = n, s.type = i, o.push(s), a = r;
        return o
    }, r = function (e, t) {
        var n;
        return t = t || 0, n = new Array(2 * t + 1).join(" "), e.map((function (e, i) {
            return n + e.type + "\n" + Object.keys(e).filter((function (e) {
                return "type" !== e && "boxes" !== e
            })).map((function (t) {
                var i = n + "  " + t + ": ", r = e[t];
                if (r instanceof Uint8Array || r instanceof Uint32Array) {
                    var s = Array.prototype.slice.call(new Uint8Array(r.buffer, r.byteOffset, r.byteLength)).map((function (e) {
                        return " " + ("00" + e.toString(16)).slice(-2)
                    })).join("").match(/.{1,24}/g);
                    return s ? 1 === s.length ? i + "<" + s.join("").slice(1) + ">" : i + "<\n" + s.map((function (e) {
                        return n + "  " + e
                    })).join("\n") + "\n" + n + "  >" : i + "<>"
                }
                return i + JSON.stringify(r, null, 2).split("\n").map((function (e, t) {
                    return 0 === t ? e : n + "  " + e
                })).join("\n")
            })).join("\n") + (e.boxes ? "\n" + r(e.boxes, t + 1) : "")
        })).join("\n")
    }, e.exports = {inspect: i, textify: r, parseType: l, findBox: u, parseTraf: h.traf, parseTfdt: h.tfdt, parseHdlr: h.hdlr, parseTfhd: h.tfhd, parseTrun: h.trun, parseSidx: h.sidx}
}, function (e, t, n) {
    var i, r, s, a, o;
    i = /^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/?#]*)?((?:[^\/?#]*\/)*[^;?#]*)?(;[^?#]*)?(\?[^#]*)?(#.*)?$/, r = /^([^\/?#]*)(.*)$/, s = /(?:\/|^)\.(?=\/)/g, a = /(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g, o = {
        buildAbsoluteURL: function (e, t, n) {
            if (n = n || {}, e = e.trim(), !(t = t.trim())) {
                if (!n.alwaysNormalize) return e;
                var i = o.parseURL(e);
                if (!i) throw new Error("Error trying to parse base URL.");
                return i.path = o.normalizePath(i.path), o.buildURLFromParts(i)
            }
            var s = o.parseURL(t);
            if (!s) throw new Error("Error trying to parse relative URL.");
            if (s.scheme) return n.alwaysNormalize ? (s.path = o.normalizePath(s.path), o.buildURLFromParts(s)) : t;
            var a = o.parseURL(e);
            if (!a) throw new Error("Error trying to parse base URL.");
            if (!a.netLoc && a.path && "/" !== a.path[0]) {
                var l = r.exec(a.path);
                a.netLoc = l[1], a.path = l[2]
            }
            a.netLoc && !a.path && (a.path = "/");
            var u = {scheme: a.scheme, netLoc: s.netLoc, path: null, params: s.params, query: s.query, fragment: s.fragment};
            if (!s.netLoc && (u.netLoc = a.netLoc, "/" !== s.path[0])) if (s.path) {
                var c = a.path, h = c.substring(0, c.lastIndexOf("/") + 1) + s.path;
                u.path = o.normalizePath(h)
            } else u.path = a.path, s.params || (u.params = a.params, s.query || (u.query = a.query));
            return null === u.path && (u.path = n.alwaysNormalize ? o.normalizePath(s.path) : s.path), o.buildURLFromParts(u)
        }, parseURL: function (e) {
            var t = i.exec(e);
            return t ? {scheme: t[1] || "", netLoc: t[2] || "", path: t[3] || "", params: t[4] || "", query: t[5] || "", fragment: t[6] || ""} : null
        }, normalizePath: function (e) {
            for (e = e.split("").reverse().join("").replace(s, ""); e.length !== (e = e.replace(a, "")).length;) ;
            return e.split("").reverse().join("")
        }, buildURLFromParts: function (e) {
            return e.scheme + e.netLoc + e.path + e.params + e.query + e.fragment
        }
    }, e.exports = o
}, function (e, t) {
    function n() {
        return e.exports = n = Object.assign || function (e) {
            for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i])
            }
            return e
        }, n.apply(this, arguments)
    }

    e.exports = n
}, function (e, t, n) {
    "use strict";

    function i(e) {
        return e && "object" == typeof e && "default" in e ? e.default : e
    }

    var r = i(n(8)), s = i(n(0));
    e.exports = function (e, t) {
        return /^[a-z]+:/i.test(t) ? t : (/\/\//i.test(e) || (e = r.buildAbsoluteURL(s.location && s.location.href || "", e)), r.buildAbsoluteURL(e, t))
    }
}, function (e, t, n) {
    var i;
    !function (t, n) {
        "use strict";
        "object" == typeof e.exports ? e.exports = t.document ? n(t, !0) : function (e) {
            if (!e.document) throw new Error("jQuery requires a window with a document");
            return n(e)
        } : n(t)
    }("undefined" != typeof window ? window : this, (function (n, r) {
        "use strict";
        var s = [], a = n.document, o = Object.getPrototypeOf, l = s.slice, u = s.concat, c = s.push, h = s.indexOf, d = {}, f = d.toString, p = d.hasOwnProperty, m = p.toString, g = m.call(Object), v = {}, y = function (e) {
            return "function" == typeof e && "number" != typeof e.nodeType
        }, _ = function (e) {
            return null != e && e === e.window
        }, b = {type: !0, src: !0, nonce: !0, noModule: !0};

        function T(e, t, n) {
            var i, r, s = (n = n || a).createElement("script");
            if (s.text = e, t) for (i in b) (r = t[i] || t.getAttribute && t.getAttribute(i)) && s.setAttribute(i, r);
            n.head.appendChild(s).parentNode.removeChild(s)
        }

        function w(e) {
            return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? d[f.call(e)] || "object" : typeof e
        }

        var S = function (e, t) {
            return new S.fn.init(e, t)
        }, E = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;

        function C(e) {
            var t = !!e && "length" in e && e.length, n = w(e);
            return !y(e) && !_(e) && ("array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e)
        }

        S.fn = S.prototype = {
            jquery: "3.4.1", constructor: S, length: 0, toArray: function () {
                return l.call(this)
            }, get: function (e) {
                return null == e ? l.call(this) : e < 0 ? this[e + this.length] : this[e]
            }, pushStack: function (e) {
                var t = S.merge(this.constructor(), e);
                return t.prevObject = this, t
            }, each: function (e) {
                return S.each(this, e)
            }, map: function (e) {
                return this.pushStack(S.map(this, (function (t, n) {
                    return e.call(t, n, t)
                })))
            }, slice: function () {
                return this.pushStack(l.apply(this, arguments))
            }, first: function () {
                return this.eq(0)
            }, last: function () {
                return this.eq(-1)
            }, eq: function (e) {
                var t = this.length, n = +e + (e < 0 ? t : 0);
                return this.pushStack(n >= 0 && n < t ? [this[n]] : [])
            }, end: function () {
                return this.prevObject || this.constructor()
            }, push: c, sort: s.sort, splice: s.splice
        }, S.extend = S.fn.extend = function () {
            var e, t, n, i, r, s, a = arguments[0] || {}, o = 1, l = arguments.length, u = !1;
            for ("boolean" == typeof a && (u = a, a = arguments[o] || {}, o++), "object" == typeof a || y(a) || (a = {}), o === l && (a = this, o--); o < l; o++) if (null != (e = arguments[o])) for (t in e) i = e[t], "__proto__" !== t && a !== i && (u && i && (S.isPlainObject(i) || (r = Array.isArray(i))) ? (n = a[t], s = r && !Array.isArray(n) ? [] : r || S.isPlainObject(n) ? n : {}, r = !1, a[t] = S.extend(u, s, i)) : void 0 !== i && (a[t] = i));
            return a
        }, S.extend({
            expando: "jQuery" + ("3.4.1" + Math.random()).replace(/\D/g, ""), isReady: !0, error: function (e) {
                throw new Error(e)
            }, noop: function () {
            }, isPlainObject: function (e) {
                var t, n;
                return !(!e || "[object Object]" !== f.call(e)) && (!(t = o(e)) || "function" == typeof (n = p.call(t, "constructor") && t.constructor) && m.call(n) === g)
            }, isEmptyObject: function (e) {
                var t;
                for (t in e) return !1;
                return !0
            }, globalEval: function (e, t) {
                T(e, {nonce: t && t.nonce})
            }, each: function (e, t) {
                var n, i = 0;
                if (C(e)) for (n = e.length; i < n && !1 !== t.call(e[i], i, e[i]); i++) ; else for (i in e) if (!1 === t.call(e[i], i, e[i])) break;
                return e
            }, trim: function (e) {
                return null == e ? "" : (e + "").replace(E, "")
            }, makeArray: function (e, t) {
                var n = t || [];
                return null != e && (C(Object(e)) ? S.merge(n, "string" == typeof e ? [e] : e) : c.call(n, e)), n
            }, inArray: function (e, t, n) {
                return null == t ? -1 : h.call(t, e, n)
            }, merge: function (e, t) {
                for (var n = +t.length, i = 0, r = e.length; i < n; i++) e[r++] = t[i];
                return e.length = r, e
            }, grep: function (e, t, n) {
                for (var i = [], r = 0, s = e.length, a = !n; r < s; r++) !t(e[r], r) !== a && i.push(e[r]);
                return i
            }, map: function (e, t, n) {
                var i, r, s = 0, a = [];
                if (C(e)) for (i = e.length; s < i; s++) null != (r = t(e[s], s, n)) && a.push(r); else for (s in e) null != (r = t(e[s], s, n)) && a.push(r);
                return u.apply([], a)
            }, guid: 1, support: v
        }), "function" == typeof Symbol && (S.fn[Symbol.iterator] = s[Symbol.iterator]), S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), (function (e, t) {
            d["[object " + t + "]"] = t.toLowerCase()
        }));
        var k = function (e) {
            var t, n, i, r, s, a, o, l, u, c, h, d, f, p, m, g, v, y, _, b = "sizzle" + 1 * new Date, T = e.document, w = 0, S = 0, E = le(), C = le(), k = le(), x = le(), A = function (e, t) {
                    return e === t && (h = !0), 0
                }, D = {}.hasOwnProperty, I = [], P = I.pop, O = I.push, L = I.push, N = I.slice, R = function (e, t) {
                    for (var n = 0, i = e.length; n < i; n++) if (e[n] === t) return n;
                    return -1
                }, U = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", M = "[\\x20\\t\\r\\n\\f]", B = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", j = "\\[" + M + "*(" + B + ")(?:" + M + "*([*^$|!~]?=)" + M + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + B + "))|)" + M + "*\\]", F = ":(" + B + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + j + ")*)|.*)\\)|)", H = new RegExp(M + "+", "g"), q = new RegExp("^" + M + "+|((?:^|[^\\\\])(?:\\\\.)*)" + M + "+$", "g"), V = new RegExp("^" + M + "*," + M + "*"), W = new RegExp("^" + M + "*([>+~]|" + M + ")" + M + "*"), z = new RegExp(M + "|>"), G = new RegExp(F), Y = new RegExp("^" + B + "$"),
                X = {ID: new RegExp("^#(" + B + ")"), CLASS: new RegExp("^\\.(" + B + ")"), TAG: new RegExp("^(" + B + "|[*])"), ATTR: new RegExp("^" + j), PSEUDO: new RegExp("^" + F), CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + M + "*(even|odd|(([+-]|)(\\d*)n|)" + M + "*(?:([+-]|)" + M + "*(\\d+)|))" + M + "*\\)|)", "i"), bool: new RegExp("^(?:" + U + ")$", "i"), needsContext: new RegExp("^" + M + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + M + "*((?:-\\d)?\\d*)" + M + "*\\)|)(?=[^-]|$)", "i")}, K = /HTML$/i, $ = /^(?:input|select|textarea|button)$/i, Q = /^h\d$/i, J = /^[^{]+\{\s*\[native \w/, Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, ee = /[+~]/, te = new RegExp("\\\\([\\da-f]{1,6}" + M + "?|(" + M + ")|.)", "ig"), ne = function (e, t, n) {
                    var i = "0x" + t - 65536;
                    return i != i || n ? t : i < 0 ? String.fromCharCode(i + 65536) : String.fromCharCode(i >> 10 | 55296, 1023 & i | 56320)
                }, ie = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, re = function (e, t) {
                    return t ? "\0" === e ? "�" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e
                }, se = function () {
                    d()
                }, ae = be((function (e) {
                    return !0 === e.disabled && "fieldset" === e.nodeName.toLowerCase()
                }), {dir: "parentNode", next: "legend"});
            try {
                L.apply(I = N.call(T.childNodes), T.childNodes), I[T.childNodes.length].nodeType
            } catch (e) {
                L = {
                    apply: I.length ? function (e, t) {
                        O.apply(e, N.call(t))
                    } : function (e, t) {
                        for (var n = e.length, i = 0; e[n++] = t[i++];) ;
                        e.length = n - 1
                    }
                }
            }

            function oe(e, t, i, r) {
                var s, o, u, c, h, p, v, y = t && t.ownerDocument, w = t ? t.nodeType : 9;
                if (i = i || [], "string" != typeof e || !e || 1 !== w && 9 !== w && 11 !== w) return i;
                if (!r && ((t ? t.ownerDocument || t : T) !== f && d(t), t = t || f, m)) {
                    if (11 !== w && (h = Z.exec(e))) if (s = h[1]) {
                        if (9 === w) {
                            if (!(u = t.getElementById(s))) return i;
                            if (u.id === s) return i.push(u), i
                        } else if (y && (u = y.getElementById(s)) && _(t, u) && u.id === s) return i.push(u), i
                    } else {
                        if (h[2]) return L.apply(i, t.getElementsByTagName(e)), i;
                        if ((s = h[3]) && n.getElementsByClassName && t.getElementsByClassName) return L.apply(i, t.getElementsByClassName(s)), i
                    }
                    if (n.qsa && !x[e + " "] && (!g || !g.test(e)) && (1 !== w || "object" !== t.nodeName.toLowerCase())) {
                        if (v = e, y = t, 1 === w && z.test(e)) {
                            for ((c = t.getAttribute("id")) ? c = c.replace(ie, re) : t.setAttribute("id", c = b), o = (p = a(e)).length; o--;) p[o] = "#" + c + " " + _e(p[o]);
                            v = p.join(","), y = ee.test(e) && ve(t.parentNode) || t
                        }
                        try {
                            return L.apply(i, y.querySelectorAll(v)), i
                        } catch (t) {
                            x(e, !0)
                        } finally {
                            c === b && t.removeAttribute("id")
                        }
                    }
                }
                return l(e.replace(q, "$1"), t, i, r)
            }

            function le() {
                var e = [];
                return function t(n, r) {
                    return e.push(n + " ") > i.cacheLength && delete t[e.shift()], t[n + " "] = r
                }
            }

            function ue(e) {
                return e[b] = !0, e
            }

            function ce(e) {
                var t = f.createElement("fieldset");
                try {
                    return !!e(t)
                } catch (e) {
                    return !1
                } finally {
                    t.parentNode && t.parentNode.removeChild(t), t = null
                }
            }

            function he(e, t) {
                for (var n = e.split("|"), r = n.length; r--;) i.attrHandle[n[r]] = t
            }

            function de(e, t) {
                var n = t && e, i = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex;
                if (i) return i;
                if (n) for (; n = n.nextSibling;) if (n === t) return -1;
                return e ? 1 : -1
            }

            function fe(e) {
                return function (t) {
                    return "input" === t.nodeName.toLowerCase() && t.type === e
                }
            }

            function pe(e) {
                return function (t) {
                    var n = t.nodeName.toLowerCase();
                    return ("input" === n || "button" === n) && t.type === e
                }
            }

            function me(e) {
                return function (t) {
                    return "form" in t ? t.parentNode && !1 === t.disabled ? "label" in t ? "label" in t.parentNode ? t.parentNode.disabled === e : t.disabled === e : t.isDisabled === e || t.isDisabled !== !e && ae(t) === e : t.disabled === e : "label" in t && t.disabled === e
                }
            }

            function ge(e) {
                return ue((function (t) {
                    return t = +t, ue((function (n, i) {
                        for (var r, s = e([], n.length, t), a = s.length; a--;) n[r = s[a]] && (n[r] = !(i[r] = n[r]))
                    }))
                }))
            }

            function ve(e) {
                return e && void 0 !== e.getElementsByTagName && e
            }

            for (t in n = oe.support = {}, s = oe.isXML = function (e) {
                var t = e.namespaceURI, n = (e.ownerDocument || e).documentElement;
                return !K.test(t || n && n.nodeName || "HTML")
            }, d = oe.setDocument = function (e) {
                var t, r, a = e ? e.ownerDocument || e : T;
                return a !== f && 9 === a.nodeType && a.documentElement ? (p = (f = a).documentElement, m = !s(f), T !== f && (r = f.defaultView) && r.top !== r && (r.addEventListener ? r.addEventListener("unload", se, !1) : r.attachEvent && r.attachEvent("onunload", se)), n.attributes = ce((function (e) {
                    return e.className = "i", !e.getAttribute("className")
                })), n.getElementsByTagName = ce((function (e) {
                    return e.appendChild(f.createComment("")), !e.getElementsByTagName("*").length
                })), n.getElementsByClassName = J.test(f.getElementsByClassName), n.getById = ce((function (e) {
                    return p.appendChild(e).id = b, !f.getElementsByName || !f.getElementsByName(b).length
                })), n.getById ? (i.filter.ID = function (e) {
                    var t = e.replace(te, ne);
                    return function (e) {
                        return e.getAttribute("id") === t
                    }
                }, i.find.ID = function (e, t) {
                    if (void 0 !== t.getElementById && m) {
                        var n = t.getElementById(e);
                        return n ? [n] : []
                    }
                }) : (i.filter.ID = function (e) {
                    var t = e.replace(te, ne);
                    return function (e) {
                        var n = void 0 !== e.getAttributeNode && e.getAttributeNode("id");
                        return n && n.value === t
                    }
                }, i.find.ID = function (e, t) {
                    if (void 0 !== t.getElementById && m) {
                        var n, i, r, s = t.getElementById(e);
                        if (s) {
                            if ((n = s.getAttributeNode("id")) && n.value === e) return [s];
                            for (r = t.getElementsByName(e), i = 0; s = r[i++];) if ((n = s.getAttributeNode("id")) && n.value === e) return [s]
                        }
                        return []
                    }
                }), i.find.TAG = n.getElementsByTagName ? function (e, t) {
                    return void 0 !== t.getElementsByTagName ? t.getElementsByTagName(e) : n.qsa ? t.querySelectorAll(e) : void 0
                } : function (e, t) {
                    var n, i = [], r = 0, s = t.getElementsByTagName(e);
                    if ("*" === e) {
                        for (; n = s[r++];) 1 === n.nodeType && i.push(n);
                        return i
                    }
                    return s
                }, i.find.CLASS = n.getElementsByClassName && function (e, t) {
                    if (void 0 !== t.getElementsByClassName && m) return t.getElementsByClassName(e)
                }, v = [], g = [], (n.qsa = J.test(f.querySelectorAll)) && (ce((function (e) {
                    p.appendChild(e).innerHTML = "<a id='" + b + "'></a><select id='" + b + "-\r\\' msallowcapture=''><option selected=''></option></select>", e.querySelectorAll("[msallowcapture^='']").length && g.push("[*^$]=" + M + "*(?:''|\"\")"), e.querySelectorAll("[selected]").length || g.push("\\[" + M + "*(?:value|" + U + ")"), e.querySelectorAll("[id~=" + b + "-]").length || g.push("~="), e.querySelectorAll(":checked").length || g.push(":checked"), e.querySelectorAll("a#" + b + "+*").length || g.push(".#.+[+~]")
                })), ce((function (e) {
                    e.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
                    var t = f.createElement("input");
                    t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), e.querySelectorAll("[name=d]").length && g.push("name" + M + "*[*^$|!~]?="), 2 !== e.querySelectorAll(":enabled").length && g.push(":enabled", ":disabled"), p.appendChild(e).disabled = !0, 2 !== e.querySelectorAll(":disabled").length && g.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), g.push(",.*:")
                }))), (n.matchesSelector = J.test(y = p.matches || p.webkitMatchesSelector || p.mozMatchesSelector || p.oMatchesSelector || p.msMatchesSelector)) && ce((function (e) {
                    n.disconnectedMatch = y.call(e, "*"), y.call(e, "[s!='']:x"), v.push("!=", F)
                })), g = g.length && new RegExp(g.join("|")), v = v.length && new RegExp(v.join("|")), t = J.test(p.compareDocumentPosition), _ = t || J.test(p.contains) ? function (e, t) {
                    var n = 9 === e.nodeType ? e.documentElement : e, i = t && t.parentNode;
                    return e === i || !(!i || 1 !== i.nodeType || !(n.contains ? n.contains(i) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(i)))
                } : function (e, t) {
                    if (t) for (; t = t.parentNode;) if (t === e) return !0;
                    return !1
                }, A = t ? function (e, t) {
                    if (e === t) return h = !0, 0;
                    var i = !e.compareDocumentPosition - !t.compareDocumentPosition;
                    return i || (1 & (i = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !n.sortDetached && t.compareDocumentPosition(e) === i ? e === f || e.ownerDocument === T && _(T, e) ? -1 : t === f || t.ownerDocument === T && _(T, t) ? 1 : c ? R(c, e) - R(c, t) : 0 : 4 & i ? -1 : 1)
                } : function (e, t) {
                    if (e === t) return h = !0, 0;
                    var n, i = 0, r = e.parentNode, s = t.parentNode, a = [e], o = [t];
                    if (!r || !s) return e === f ? -1 : t === f ? 1 : r ? -1 : s ? 1 : c ? R(c, e) - R(c, t) : 0;
                    if (r === s) return de(e, t);
                    for (n = e; n = n.parentNode;) a.unshift(n);
                    for (n = t; n = n.parentNode;) o.unshift(n);
                    for (; a[i] === o[i];) i++;
                    return i ? de(a[i], o[i]) : a[i] === T ? -1 : o[i] === T ? 1 : 0
                }, f) : f
            }, oe.matches = function (e, t) {
                return oe(e, null, null, t)
            }, oe.matchesSelector = function (e, t) {
                if ((e.ownerDocument || e) !== f && d(e), n.matchesSelector && m && !x[t + " "] && (!v || !v.test(t)) && (!g || !g.test(t))) try {
                    var i = y.call(e, t);
                    if (i || n.disconnectedMatch || e.document && 11 !== e.document.nodeType) return i
                } catch (e) {
                    x(t, !0)
                }
                return oe(t, f, null, [e]).length > 0
            }, oe.contains = function (e, t) {
                return (e.ownerDocument || e) !== f && d(e), _(e, t)
            }, oe.attr = function (e, t) {
                (e.ownerDocument || e) !== f && d(e);
                var r = i.attrHandle[t.toLowerCase()], s = r && D.call(i.attrHandle, t.toLowerCase()) ? r(e, t, !m) : void 0;
                return void 0 !== s ? s : n.attributes || !m ? e.getAttribute(t) : (s = e.getAttributeNode(t)) && s.specified ? s.value : null
            }, oe.escape = function (e) {
                return (e + "").replace(ie, re)
            }, oe.error = function (e) {
                throw new Error("Syntax error, unrecognized expression: " + e)
            }, oe.uniqueSort = function (e) {
                var t, i = [], r = 0, s = 0;
                if (h = !n.detectDuplicates, c = !n.sortStable && e.slice(0), e.sort(A), h) {
                    for (; t = e[s++];) t === e[s] && (r = i.push(s));
                    for (; r--;) e.splice(i[r], 1)
                }
                return c = null, e
            }, r = oe.getText = function (e) {
                var t, n = "", i = 0, s = e.nodeType;
                if (s) {
                    if (1 === s || 9 === s || 11 === s) {
                        if ("string" == typeof e.textContent) return e.textContent;
                        for (e = e.firstChild; e; e = e.nextSibling) n += r(e)
                    } else if (3 === s || 4 === s) return e.nodeValue
                } else for (; t = e[i++];) n += r(t);
                return n
            }, (i = oe.selectors = {
                cacheLength: 50, createPseudo: ue, match: X, attrHandle: {}, find: {}, relative: {">": {dir: "parentNode", first: !0}, " ": {dir: "parentNode"}, "+": {dir: "previousSibling", first: !0}, "~": {dir: "previousSibling"}}, preFilter: {
                    ATTR: function (e) {
                        return e[1] = e[1].replace(te, ne), e[3] = (e[3] || e[4] || e[5] || "").replace(te, ne), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4)
                    }, CHILD: function (e) {
                        return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || oe.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && oe.error(e[0]), e
                    }, PSEUDO: function (e) {
                        var t, n = !e[6] && e[2];
                        return X.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && G.test(n) && (t = a(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3))
                    }
                }, filter: {
                    TAG: function (e) {
                        var t = e.replace(te, ne).toLowerCase();
                        return "*" === e ? function () {
                            return !0
                        } : function (e) {
                            return e.nodeName && e.nodeName.toLowerCase() === t
                        }
                    }, CLASS: function (e) {
                        var t = E[e + " "];
                        return t || (t = new RegExp("(^|" + M + ")" + e + "(" + M + "|$)")) && E(e, (function (e) {
                            return t.test("string" == typeof e.className && e.className || void 0 !== e.getAttribute && e.getAttribute("class") || "")
                        }))
                    }, ATTR: function (e, t, n) {
                        return function (i) {
                            var r = oe.attr(i, e);
                            return null == r ? "!=" === t : !t || (r += "", "=" === t ? r === n : "!=" === t ? r !== n : "^=" === t ? n && 0 === r.indexOf(n) : "*=" === t ? n && r.indexOf(n) > -1 : "$=" === t ? n && r.slice(-n.length) === n : "~=" === t ? (" " + r.replace(H, " ") + " ").indexOf(n) > -1 : "|=" === t && (r === n || r.slice(0, n.length + 1) === n + "-"))
                        }
                    }, CHILD: function (e, t, n, i, r) {
                        var s = "nth" !== e.slice(0, 3), a = "last" !== e.slice(-4), o = "of-type" === t;
                        return 1 === i && 0 === r ? function (e) {
                            return !!e.parentNode
                        } : function (t, n, l) {
                            var u, c, h, d, f, p, m = s !== a ? "nextSibling" : "previousSibling", g = t.parentNode, v = o && t.nodeName.toLowerCase(), y = !l && !o, _ = !1;
                            if (g) {
                                if (s) {
                                    for (; m;) {
                                        for (d = t; d = d[m];) if (o ? d.nodeName.toLowerCase() === v : 1 === d.nodeType) return !1;
                                        p = m = "only" === e && !p && "nextSibling"
                                    }
                                    return !0
                                }
                                if (p = [a ? g.firstChild : g.lastChild], a && y) {
                                    for (_ = (f = (u = (c = (h = (d = g)[b] || (d[b] = {}))[d.uniqueID] || (h[d.uniqueID] = {}))[e] || [])[0] === w && u[1]) && u[2], d = f && g.childNodes[f]; d = ++f && d && d[m] || (_ = f = 0) || p.pop();) if (1 === d.nodeType && ++_ && d === t) {
                                        c[e] = [w, f, _];
                                        break
                                    }
                                } else if (y && (_ = f = (u = (c = (h = (d = t)[b] || (d[b] = {}))[d.uniqueID] || (h[d.uniqueID] = {}))[e] || [])[0] === w && u[1]), !1 === _) for (; (d = ++f && d && d[m] || (_ = f = 0) || p.pop()) && ((o ? d.nodeName.toLowerCase() !== v : 1 !== d.nodeType) || !++_ || (y && ((c = (h = d[b] || (d[b] = {}))[d.uniqueID] || (h[d.uniqueID] = {}))[e] = [w, _]), d !== t));) ;
                                return (_ -= r) === i || _ % i == 0 && _ / i >= 0
                            }
                        }
                    }, PSEUDO: function (e, t) {
                        var n, r = i.pseudos[e] || i.setFilters[e.toLowerCase()] || oe.error("unsupported pseudo: " + e);
                        return r[b] ? r(t) : r.length > 1 ? (n = [e, e, "", t], i.setFilters.hasOwnProperty(e.toLowerCase()) ? ue((function (e, n) {
                            for (var i, s = r(e, t), a = s.length; a--;) e[i = R(e, s[a])] = !(n[i] = s[a])
                        })) : function (e) {
                            return r(e, 0, n)
                        }) : r
                    }
                }, pseudos: {
                    not: ue((function (e) {
                        var t = [], n = [], i = o(e.replace(q, "$1"));
                        return i[b] ? ue((function (e, t, n, r) {
                            for (var s, a = i(e, null, r, []), o = e.length; o--;) (s = a[o]) && (e[o] = !(t[o] = s))
                        })) : function (e, r, s) {
                            return t[0] = e, i(t, null, s, n), t[0] = null, !n.pop()
                        }
                    })), has: ue((function (e) {
                        return function (t) {
                            return oe(e, t).length > 0
                        }
                    })), contains: ue((function (e) {
                        return e = e.replace(te, ne), function (t) {
                            return (t.textContent || r(t)).indexOf(e) > -1
                        }
                    })), lang: ue((function (e) {
                        return Y.test(e || "") || oe.error("unsupported lang: " + e), e = e.replace(te, ne).toLowerCase(), function (t) {
                            var n;
                            do {
                                if (n = m ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang")) return (n = n.toLowerCase()) === e || 0 === n.indexOf(e + "-")
                            } while ((t = t.parentNode) && 1 === t.nodeType);
                            return !1
                        }
                    })), target: function (t) {
                        var n = e.location && e.location.hash;
                        return n && n.slice(1) === t.id
                    }, root: function (e) {
                        return e === p
                    }, focus: function (e) {
                        return e === f.activeElement && (!f.hasFocus || f.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
                    }, enabled: me(!1), disabled: me(!0), checked: function (e) {
                        var t = e.nodeName.toLowerCase();
                        return "input" === t && !!e.checked || "option" === t && !!e.selected
                    }, selected: function (e) {
                        return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected
                    }, empty: function (e) {
                        for (e = e.firstChild; e; e = e.nextSibling) if (e.nodeType < 6) return !1;
                        return !0
                    }, parent: function (e) {
                        return !i.pseudos.empty(e)
                    }, header: function (e) {
                        return Q.test(e.nodeName)
                    }, input: function (e) {
                        return $.test(e.nodeName)
                    }, button: function (e) {
                        var t = e.nodeName.toLowerCase();
                        return "input" === t && "button" === e.type || "button" === t
                    }, text: function (e) {
                        var t;
                        return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
                    }, first: ge((function () {
                        return [0]
                    })), last: ge((function (e, t) {
                        return [t - 1]
                    })), eq: ge((function (e, t, n) {
                        return [n < 0 ? n + t : n]
                    })), even: ge((function (e, t) {
                        for (var n = 0; n < t; n += 2) e.push(n);
                        return e
                    })), odd: ge((function (e, t) {
                        for (var n = 1; n < t; n += 2) e.push(n);
                        return e
                    })), lt: ge((function (e, t, n) {
                        for (var i = n < 0 ? n + t : n > t ? t : n; --i >= 0;) e.push(i);
                        return e
                    })), gt: ge((function (e, t, n) {
                        for (var i = n < 0 ? n + t : n; ++i < t;) e.push(i);
                        return e
                    }))
                }
            }).pseudos.nth = i.pseudos.eq, {radio: !0, checkbox: !0, file: !0, password: !0, image: !0}) i.pseudos[t] = fe(t);
            for (t in {submit: !0, reset: !0}) i.pseudos[t] = pe(t);

            function ye() {
            }

            function _e(e) {
                for (var t = 0, n = e.length, i = ""; t < n; t++) i += e[t].value;
                return i
            }

            function be(e, t, n) {
                var i = t.dir, r = t.next, s = r || i, a = n && "parentNode" === s, o = S++;
                return t.first ? function (t, n, r) {
                    for (; t = t[i];) if (1 === t.nodeType || a) return e(t, n, r);
                    return !1
                } : function (t, n, l) {
                    var u, c, h, d = [w, o];
                    if (l) {
                        for (; t = t[i];) if ((1 === t.nodeType || a) && e(t, n, l)) return !0
                    } else for (; t = t[i];) if (1 === t.nodeType || a) if (c = (h = t[b] || (t[b] = {}))[t.uniqueID] || (h[t.uniqueID] = {}), r && r === t.nodeName.toLowerCase()) t = t[i] || t; else {
                        if ((u = c[s]) && u[0] === w && u[1] === o) return d[2] = u[2];
                        if (c[s] = d, d[2] = e(t, n, l)) return !0
                    }
                    return !1
                }
            }

            function Te(e) {
                return e.length > 1 ? function (t, n, i) {
                    for (var r = e.length; r--;) if (!e[r](t, n, i)) return !1;
                    return !0
                } : e[0]
            }

            function we(e, t, n, i, r) {
                for (var s, a = [], o = 0, l = e.length, u = null != t; o < l; o++) (s = e[o]) && (n && !n(s, i, r) || (a.push(s), u && t.push(o)));
                return a
            }

            function Se(e, t, n, i, r, s) {
                return i && !i[b] && (i = Se(i)), r && !r[b] && (r = Se(r, s)), ue((function (s, a, o, l) {
                    var u, c, h, d = [], f = [], p = a.length, m = s || function (e, t, n) {
                        for (var i = 0, r = t.length; i < r; i++) oe(e, t[i], n);
                        return n
                    }(t || "*", o.nodeType ? [o] : o, []), g = !e || !s && t ? m : we(m, d, e, o, l), v = n ? r || (s ? e : p || i) ? [] : a : g;
                    if (n && n(g, v, o, l), i) for (u = we(v, f), i(u, [], o, l), c = u.length; c--;) (h = u[c]) && (v[f[c]] = !(g[f[c]] = h));
                    if (s) {
                        if (r || e) {
                            if (r) {
                                for (u = [], c = v.length; c--;) (h = v[c]) && u.push(g[c] = h);
                                r(null, v = [], u, l)
                            }
                            for (c = v.length; c--;) (h = v[c]) && (u = r ? R(s, h) : d[c]) > -1 && (s[u] = !(a[u] = h))
                        }
                    } else v = we(v === a ? v.splice(p, v.length) : v), r ? r(null, a, v, l) : L.apply(a, v)
                }))
            }

            function Ee(e) {
                for (var t, n, r, s = e.length, a = i.relative[e[0].type], o = a || i.relative[" "], l = a ? 1 : 0, c = be((function (e) {
                    return e === t
                }), o, !0), h = be((function (e) {
                    return R(t, e) > -1
                }), o, !0), d = [function (e, n, i) {
                    var r = !a && (i || n !== u) || ((t = n).nodeType ? c(e, n, i) : h(e, n, i));
                    return t = null, r
                }]; l < s; l++) if (n = i.relative[e[l].type]) d = [be(Te(d), n)]; else {
                    if ((n = i.filter[e[l].type].apply(null, e[l].matches))[b]) {
                        for (r = ++l; r < s && !i.relative[e[r].type]; r++) ;
                        return Se(l > 1 && Te(d), l > 1 && _e(e.slice(0, l - 1).concat({value: " " === e[l - 2].type ? "*" : ""})).replace(q, "$1"), n, l < r && Ee(e.slice(l, r)), r < s && Ee(e = e.slice(r)), r < s && _e(e))
                    }
                    d.push(n)
                }
                return Te(d)
            }

            return ye.prototype = i.filters = i.pseudos, i.setFilters = new ye, a = oe.tokenize = function (e, t) {
                var n, r, s, a, o, l, u, c = C[e + " "];
                if (c) return t ? 0 : c.slice(0);
                for (o = e, l = [], u = i.preFilter; o;) {
                    for (a in n && !(r = V.exec(o)) || (r && (o = o.slice(r[0].length) || o), l.push(s = [])), n = !1, (r = W.exec(o)) && (n = r.shift(), s.push({value: n, type: r[0].replace(q, " ")}), o = o.slice(n.length)), i.filter) !(r = X[a].exec(o)) || u[a] && !(r = u[a](r)) || (n = r.shift(), s.push({value: n, type: a, matches: r}), o = o.slice(n.length));
                    if (!n) break
                }
                return t ? o.length : o ? oe.error(e) : C(e, l).slice(0)
            }, o = oe.compile = function (e, t) {
                var n, r = [], s = [], o = k[e + " "];
                if (!o) {
                    for (t || (t = a(e)), n = t.length; n--;) (o = Ee(t[n]))[b] ? r.push(o) : s.push(o);
                    (o = k(e, function (e, t) {
                        var n = t.length > 0, r = e.length > 0, s = function (s, a, o, l, c) {
                            var h, p, g, v = 0, y = "0", _ = s && [], b = [], T = u, S = s || r && i.find.TAG("*", c), E = w += null == T ? 1 : Math.random() || .1, C = S.length;
                            for (c && (u = a === f || a || c); y !== C && null != (h = S[y]); y++) {
                                if (r && h) {
                                    for (p = 0, a || h.ownerDocument === f || (d(h), o = !m); g = e[p++];) if (g(h, a || f, o)) {
                                        l.push(h);
                                        break
                                    }
                                    c && (w = E)
                                }
                                n && ((h = !g && h) && v--, s && _.push(h))
                            }
                            if (v += y, n && y !== v) {
                                for (p = 0; g = t[p++];) g(_, b, a, o);
                                if (s) {
                                    if (v > 0) for (; y--;) _[y] || b[y] || (b[y] = P.call(l));
                                    b = we(b)
                                }
                                L.apply(l, b), c && !s && b.length > 0 && v + t.length > 1 && oe.uniqueSort(l)
                            }
                            return c && (w = E, u = T), _
                        };
                        return n ? ue(s) : s
                    }(s, r))).selector = e
                }
                return o
            }, l = oe.select = function (e, t, n, r) {
                var s, l, u, c, h, d = "function" == typeof e && e, f = !r && a(e = d.selector || e);
                if (n = n || [], 1 === f.length) {
                    if ((l = f[0] = f[0].slice(0)).length > 2 && "ID" === (u = l[0]).type && 9 === t.nodeType && m && i.relative[l[1].type]) {
                        if (!(t = (i.find.ID(u.matches[0].replace(te, ne), t) || [])[0])) return n;
                        d && (t = t.parentNode), e = e.slice(l.shift().value.length)
                    }
                    for (s = X.needsContext.test(e) ? 0 : l.length; s-- && (u = l[s], !i.relative[c = u.type]);) if ((h = i.find[c]) && (r = h(u.matches[0].replace(te, ne), ee.test(l[0].type) && ve(t.parentNode) || t))) {
                        if (l.splice(s, 1), !(e = r.length && _e(l))) return L.apply(n, r), n;
                        break
                    }
                }
                return (d || o(e, f))(r, t, !m, n, !t || ee.test(e) && ve(t.parentNode) || t), n
            }, n.sortStable = b.split("").sort(A).join("") === b, n.detectDuplicates = !!h, d(), n.sortDetached = ce((function (e) {
                return 1 & e.compareDocumentPosition(f.createElement("fieldset"))
            })), ce((function (e) {
                return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href")
            })) || he("type|href|height|width", (function (e, t, n) {
                if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
            })), n.attributes && ce((function (e) {
                return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value")
            })) || he("value", (function (e, t, n) {
                if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue
            })), ce((function (e) {
                return null == e.getAttribute("disabled")
            })) || he(U, (function (e, t, n) {
                var i;
                if (!n) return !0 === e[t] ? t.toLowerCase() : (i = e.getAttributeNode(t)) && i.specified ? i.value : null
            })), oe
        }(n);
        S.find = k, S.expr = k.selectors, S.expr[":"] = S.expr.pseudos, S.uniqueSort = S.unique = k.uniqueSort, S.text = k.getText, S.isXMLDoc = k.isXML, S.contains = k.contains, S.escapeSelector = k.escape;
        var x = function (e, t, n) {
            for (var i = [], r = void 0 !== n; (e = e[t]) && 9 !== e.nodeType;) if (1 === e.nodeType) {
                if (r && S(e).is(n)) break;
                i.push(e)
            }
            return i
        }, A = function (e, t) {
            for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
            return n
        }, D = S.expr.match.needsContext;

        function I(e, t) {
            return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
        }

        var P = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;

        function O(e, t, n) {
            return y(t) ? S.grep(e, (function (e, i) {
                return !!t.call(e, i, e) !== n
            })) : t.nodeType ? S.grep(e, (function (e) {
                return e === t !== n
            })) : "string" != typeof t ? S.grep(e, (function (e) {
                return h.call(t, e) > -1 !== n
            })) : S.filter(t, e, n)
        }

        S.filter = function (e, t, n) {
            var i = t[0];
            return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === i.nodeType ? S.find.matchesSelector(i, e) ? [i] : [] : S.find.matches(e, S.grep(t, (function (e) {
                return 1 === e.nodeType
            })))
        }, S.fn.extend({
            find: function (e) {
                var t, n, i = this.length, r = this;
                if ("string" != typeof e) return this.pushStack(S(e).filter((function () {
                    for (t = 0; t < i; t++) if (S.contains(r[t], this)) return !0
                })));
                for (n = this.pushStack([]), t = 0; t < i; t++) S.find(e, r[t], n);
                return i > 1 ? S.uniqueSort(n) : n
            }, filter: function (e) {
                return this.pushStack(O(this, e || [], !1))
            }, not: function (e) {
                return this.pushStack(O(this, e || [], !0))
            }, is: function (e) {
                return !!O(this, "string" == typeof e && D.test(e) ? S(e) : e || [], !1).length
            }
        });
        var L, N = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
        (S.fn.init = function (e, t, n) {
            var i, r;
            if (!e) return this;
            if (n = n || L, "string" == typeof e) {
                if (!(i = "<" === e[0] && ">" === e[e.length - 1] && e.length >= 3 ? [null, e, null] : N.exec(e)) || !i[1] && t) return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e);
                if (i[1]) {
                    if (t = t instanceof S ? t[0] : t, S.merge(this, S.parseHTML(i[1], t && t.nodeType ? t.ownerDocument || t : a, !0)), P.test(i[1]) && S.isPlainObject(t)) for (i in t) y(this[i]) ? this[i](t[i]) : this.attr(i, t[i]);
                    return this
                }
                return (r = a.getElementById(i[2])) && (this[0] = r, this.length = 1), this
            }
            return e.nodeType ? (this[0] = e, this.length = 1, this) : y(e) ? void 0 !== n.ready ? n.ready(e) : e(S) : S.makeArray(e, this)
        }).prototype = S.fn, L = S(a);
        var R = /^(?:parents|prev(?:Until|All))/, U = {children: !0, contents: !0, next: !0, prev: !0};

        function M(e, t) {
            for (; (e = e[t]) && 1 !== e.nodeType;) ;
            return e
        }

        S.fn.extend({
            has: function (e) {
                var t = S(e, this), n = t.length;
                return this.filter((function () {
                    for (var e = 0; e < n; e++) if (S.contains(this, t[e])) return !0
                }))
            }, closest: function (e, t) {
                var n, i = 0, r = this.length, s = [], a = "string" != typeof e && S(e);
                if (!D.test(e)) for (; i < r; i++) for (n = this[i]; n && n !== t; n = n.parentNode) if (n.nodeType < 11 && (a ? a.index(n) > -1 : 1 === n.nodeType && S.find.matchesSelector(n, e))) {
                    s.push(n);
                    break
                }
                return this.pushStack(s.length > 1 ? S.uniqueSort(s) : s)
            }, index: function (e) {
                return e ? "string" == typeof e ? h.call(S(e), this[0]) : h.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
            }, add: function (e, t) {
                return this.pushStack(S.uniqueSort(S.merge(this.get(), S(e, t))))
            }, addBack: function (e) {
                return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
            }
        }), S.each({
            parent: function (e) {
                var t = e.parentNode;
                return t && 11 !== t.nodeType ? t : null
            }, parents: function (e) {
                return x(e, "parentNode")
            }, parentsUntil: function (e, t, n) {
                return x(e, "parentNode", n)
            }, next: function (e) {
                return M(e, "nextSibling")
            }, prev: function (e) {
                return M(e, "previousSibling")
            }, nextAll: function (e) {
                return x(e, "nextSibling")
            }, prevAll: function (e) {
                return x(e, "previousSibling")
            }, nextUntil: function (e, t, n) {
                return x(e, "nextSibling", n)
            }, prevUntil: function (e, t, n) {
                return x(e, "previousSibling", n)
            }, siblings: function (e) {
                return A((e.parentNode || {}).firstChild, e)
            }, children: function (e) {
                return A(e.firstChild)
            }, contents: function (e) {
                return void 0 !== e.contentDocument ? e.contentDocument : (I(e, "template") && (e = e.content || e), S.merge([], e.childNodes))
            }
        }, (function (e, t) {
            S.fn[e] = function (n, i) {
                var r = S.map(this, t, n);
                return "Until" !== e.slice(-5) && (i = n), i && "string" == typeof i && (r = S.filter(i, r)), this.length > 1 && (U[e] || S.uniqueSort(r), R.test(e) && r.reverse()), this.pushStack(r)
            }
        }));
        var B = /[^\x20\t\r\n\f]+/g;

        function j(e) {
            return e
        }

        function F(e) {
            throw e
        }

        function H(e, t, n, i) {
            var r;
            try {
                e && y(r = e.promise) ? r.call(e).done(t).fail(n) : e && y(r = e.then) ? r.call(e, t, n) : t.apply(void 0, [e].slice(i))
            } catch (e) {
                n.apply(void 0, [e])
            }
        }

        S.Callbacks = function (e) {
            e = "string" == typeof e ? function (e) {
                var t = {};
                return S.each(e.match(B) || [], (function (e, n) {
                    t[n] = !0
                })), t
            }(e) : S.extend({}, e);
            var t, n, i, r, s = [], a = [], o = -1, l = function () {
                for (r = r || e.once, i = t = !0; a.length; o = -1) for (n = a.shift(); ++o < s.length;) !1 === s[o].apply(n[0], n[1]) && e.stopOnFalse && (o = s.length, n = !1);
                e.memory || (n = !1), t = !1, r && (s = n ? [] : "")
            }, u = {
                add: function () {
                    return s && (n && !t && (o = s.length - 1, a.push(n)), function t(n) {
                        S.each(n, (function (n, i) {
                            y(i) ? e.unique && u.has(i) || s.push(i) : i && i.length && "string" !== w(i) && t(i)
                        }))
                    }(arguments), n && !t && l()), this
                }, remove: function () {
                    return S.each(arguments, (function (e, t) {
                        for (var n; (n = S.inArray(t, s, n)) > -1;) s.splice(n, 1), n <= o && o--
                    })), this
                }, has: function (e) {
                    return e ? S.inArray(e, s) > -1 : s.length > 0
                }, empty: function () {
                    return s && (s = []), this
                }, disable: function () {
                    return r = a = [], s = n = "", this
                }, disabled: function () {
                    return !s
                }, lock: function () {
                    return r = a = [], n || t || (s = n = ""), this
                }, locked: function () {
                    return !!r
                }, fireWith: function (e, n) {
                    return r || (n = [e, (n = n || []).slice ? n.slice() : n], a.push(n), t || l()), this
                }, fire: function () {
                    return u.fireWith(this, arguments), this
                }, fired: function () {
                    return !!i
                }
            };
            return u
        }, S.extend({
            Deferred: function (e) {
                var t = [["notify", "progress", S.Callbacks("memory"), S.Callbacks("memory"), 2], ["resolve", "done", S.Callbacks("once memory"), S.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", S.Callbacks("once memory"), S.Callbacks("once memory"), 1, "rejected"]], i = "pending", r = {
                    state: function () {
                        return i
                    }, always: function () {
                        return s.done(arguments).fail(arguments), this
                    }, catch: function (e) {
                        return r.then(null, e)
                    }, pipe: function () {
                        var e = arguments;
                        return S.Deferred((function (n) {
                            S.each(t, (function (t, i) {
                                var r = y(e[i[4]]) && e[i[4]];
                                s[i[1]]((function () {
                                    var e = r && r.apply(this, arguments);
                                    e && y(e.promise) ? e.promise().progress(n.notify).done(n.resolve).fail(n.reject) : n[i[0] + "With"](this, r ? [e] : arguments)
                                }))
                            })), e = null
                        })).promise()
                    }, then: function (e, i, r) {
                        var s = 0;

                        function a(e, t, i, r) {
                            return function () {
                                var o = this, l = arguments, u = function () {
                                    var n, u;
                                    if (!(e < s)) {
                                        if ((n = i.apply(o, l)) === t.promise()) throw new TypeError("Thenable self-resolution");
                                        u = n && ("object" == typeof n || "function" == typeof n) && n.then, y(u) ? r ? u.call(n, a(s, t, j, r), a(s, t, F, r)) : (s++, u.call(n, a(s, t, j, r), a(s, t, F, r), a(s, t, j, t.notifyWith))) : (i !== j && (o = void 0, l = [n]), (r || t.resolveWith)(o, l))
                                    }
                                }, c = r ? u : function () {
                                    try {
                                        u()
                                    } catch (n) {
                                        S.Deferred.exceptionHook && S.Deferred.exceptionHook(n, c.stackTrace), e + 1 >= s && (i !== F && (o = void 0, l = [n]), t.rejectWith(o, l))
                                    }
                                };
                                e ? c() : (S.Deferred.getStackHook && (c.stackTrace = S.Deferred.getStackHook()), n.setTimeout(c))
                            }
                        }

                        return S.Deferred((function (n) {
                            t[0][3].add(a(0, n, y(r) ? r : j, n.notifyWith)), t[1][3].add(a(0, n, y(e) ? e : j)), t[2][3].add(a(0, n, y(i) ? i : F))
                        })).promise()
                    }, promise: function (e) {
                        return null != e ? S.extend(e, r) : r
                    }
                }, s = {};
                return S.each(t, (function (e, n) {
                    var a = n[2], o = n[5];
                    r[n[1]] = a.add, o && a.add((function () {
                        i = o
                    }), t[3 - e][2].disable, t[3 - e][3].disable, t[0][2].lock, t[0][3].lock), a.add(n[3].fire), s[n[0]] = function () {
                        return s[n[0] + "With"](this === s ? void 0 : this, arguments), this
                    }, s[n[0] + "With"] = a.fireWith
                })), r.promise(s), e && e.call(s, s), s
            }, when: function (e) {
                var t = arguments.length, n = t, i = Array(n), r = l.call(arguments), s = S.Deferred(), a = function (e) {
                    return function (n) {
                        i[e] = this, r[e] = arguments.length > 1 ? l.call(arguments) : n, --t || s.resolveWith(i, r)
                    }
                };
                if (t <= 1 && (H(e, s.done(a(n)).resolve, s.reject, !t), "pending" === s.state() || y(r[n] && r[n].then))) return s.then();
                for (; n--;) H(r[n], a(n), s.reject);
                return s.promise()
            }
        });
        var q = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
        S.Deferred.exceptionHook = function (e, t) {
            n.console && n.console.warn && e && q.test(e.name) && n.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t)
        }, S.readyException = function (e) {
            n.setTimeout((function () {
                throw e
            }))
        };
        var V = S.Deferred();

        function W() {
            a.removeEventListener("DOMContentLoaded", W), n.removeEventListener("load", W), S.ready()
        }

        S.fn.ready = function (e) {
            return V.then(e).catch((function (e) {
                S.readyException(e)
            })), this
        }, S.extend({
            isReady: !1, readyWait: 1, ready: function (e) {
                (!0 === e ? --S.readyWait : S.isReady) || (S.isReady = !0, !0 !== e && --S.readyWait > 0 || V.resolveWith(a, [S]))
            }
        }), S.ready.then = V.then, "complete" === a.readyState || "loading" !== a.readyState && !a.documentElement.doScroll ? n.setTimeout(S.ready) : (a.addEventListener("DOMContentLoaded", W), n.addEventListener("load", W));
        var z = function (e, t, n, i, r, s, a) {
            var o = 0, l = e.length, u = null == n;
            if ("object" === w(n)) for (o in r = !0, n) z(e, t, o, n[o], !0, s, a); else if (void 0 !== i && (r = !0, y(i) || (a = !0), u && (a ? (t.call(e, i), t = null) : (u = t, t = function (e, t, n) {
                return u.call(S(e), n)
            })), t)) for (; o < l; o++) t(e[o], n, a ? i : i.call(e[o], o, t(e[o], n)));
            return r ? e : u ? t.call(e) : l ? t(e[0], n) : s
        }, G = /^-ms-/, Y = /-([a-z])/g;

        function X(e, t) {
            return t.toUpperCase()
        }

        function K(e) {
            return e.replace(G, "ms-").replace(Y, X)
        }

        var $ = function (e) {
            return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
        };

        function Q() {
            this.expando = S.expando + Q.uid++
        }

        Q.uid = 1, Q.prototype = {
            cache: function (e) {
                var t = e[this.expando];
                return t || (t = {}, $(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, {value: t, configurable: !0}))), t
            }, set: function (e, t, n) {
                var i, r = this.cache(e);
                if ("string" == typeof t) r[K(t)] = n; else for (i in t) r[K(i)] = t[i];
                return r
            }, get: function (e, t) {
                return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][K(t)]
            }, access: function (e, t, n) {
                return void 0 === t || t && "string" == typeof t && void 0 === n ? this.get(e, t) : (this.set(e, t, n), void 0 !== n ? n : t)
            }, remove: function (e, t) {
                var n, i = e[this.expando];
                if (void 0 !== i) {
                    if (void 0 !== t) {
                        n = (t = Array.isArray(t) ? t.map(K) : (t = K(t)) in i ? [t] : t.match(B) || []).length;
                        for (; n--;) delete i[t[n]]
                    }
                    (void 0 === t || S.isEmptyObject(i)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
                }
            }, hasData: function (e) {
                var t = e[this.expando];
                return void 0 !== t && !S.isEmptyObject(t)
            }
        };
        var J = new Q, Z = new Q, ee = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, te = /[A-Z]/g;

        function ne(e, t, n) {
            var i;
            if (void 0 === n && 1 === e.nodeType) if (i = "data-" + t.replace(te, "-$&").toLowerCase(), "string" == typeof (n = e.getAttribute(i))) {
                try {
                    n = function (e) {
                        return "true" === e || "false" !== e && ("null" === e ? null : e === +e + "" ? +e : ee.test(e) ? JSON.parse(e) : e)
                    }(n)
                } catch (e) {
                }
                Z.set(e, t, n)
            } else n = void 0;
            return n
        }

        S.extend({
            hasData: function (e) {
                return Z.hasData(e) || J.hasData(e)
            }, data: function (e, t, n) {
                return Z.access(e, t, n)
            }, removeData: function (e, t) {
                Z.remove(e, t)
            }, _data: function (e, t, n) {
                return J.access(e, t, n)
            }, _removeData: function (e, t) {
                J.remove(e, t)
            }
        }), S.fn.extend({
            data: function (e, t) {
                var n, i, r, s = this[0], a = s && s.attributes;
                if (void 0 === e) {
                    if (this.length && (r = Z.get(s), 1 === s.nodeType && !J.get(s, "hasDataAttrs"))) {
                        for (n = a.length; n--;) a[n] && 0 === (i = a[n].name).indexOf("data-") && (i = K(i.slice(5)), ne(s, i, r[i]));
                        J.set(s, "hasDataAttrs", !0)
                    }
                    return r
                }
                return "object" == typeof e ? this.each((function () {
                    Z.set(this, e)
                })) : z(this, (function (t) {
                    var n;
                    if (s && void 0 === t) return void 0 !== (n = Z.get(s, e)) ? n : void 0 !== (n = ne(s, e)) ? n : void 0;
                    this.each((function () {
                        Z.set(this, e, t)
                    }))
                }), null, t, arguments.length > 1, null, !0)
            }, removeData: function (e) {
                return this.each((function () {
                    Z.remove(this, e)
                }))
            }
        }), S.extend({
            queue: function (e, t, n) {
                var i;
                if (e) return t = (t || "fx") + "queue", i = J.get(e, t), n && (!i || Array.isArray(n) ? i = J.access(e, t, S.makeArray(n)) : i.push(n)), i || []
            }, dequeue: function (e, t) {
                t = t || "fx";
                var n = S.queue(e, t), i = n.length, r = n.shift(), s = S._queueHooks(e, t);
                "inprogress" === r && (r = n.shift(), i--), r && ("fx" === t && n.unshift("inprogress"), delete s.stop, r.call(e, (function () {
                    S.dequeue(e, t)
                }), s)), !i && s && s.empty.fire()
            }, _queueHooks: function (e, t) {
                var n = t + "queueHooks";
                return J.get(e, n) || J.access(e, n, {
                    empty: S.Callbacks("once memory").add((function () {
                        J.remove(e, [t + "queue", n])
                    }))
                })
            }
        }), S.fn.extend({
            queue: function (e, t) {
                var n = 2;
                return "string" != typeof e && (t = e, e = "fx", n--), arguments.length < n ? S.queue(this[0], e) : void 0 === t ? this : this.each((function () {
                    var n = S.queue(this, e, t);
                    S._queueHooks(this, e), "fx" === e && "inprogress" !== n[0] && S.dequeue(this, e)
                }))
            }, dequeue: function (e) {
                return this.each((function () {
                    S.dequeue(this, e)
                }))
            }, clearQueue: function (e) {
                return this.queue(e || "fx", [])
            }, promise: function (e, t) {
                var n, i = 1, r = S.Deferred(), s = this, a = this.length, o = function () {
                    --i || r.resolveWith(s, [s])
                };
                for ("string" != typeof e && (t = e, e = void 0), e = e || "fx"; a--;) (n = J.get(s[a], e + "queueHooks")) && n.empty && (i++, n.empty.add(o));
                return o(), r.promise(t)
            }
        });
        var ie = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, re = new RegExp("^(?:([+-])=|)(" + ie + ")([a-z%]*)$", "i"), se = ["Top", "Right", "Bottom", "Left"], ae = a.documentElement, oe = function (e) {
            return S.contains(e.ownerDocument, e)
        }, le = {composed: !0};
        ae.getRootNode && (oe = function (e) {
            return S.contains(e.ownerDocument, e) || e.getRootNode(le) === e.ownerDocument
        });
        var ue = function (e, t) {
            return "none" === (e = t || e).style.display || "" === e.style.display && oe(e) && "none" === S.css(e, "display")
        }, ce = function (e, t, n, i) {
            var r, s, a = {};
            for (s in t) a[s] = e.style[s], e.style[s] = t[s];
            for (s in r = n.apply(e, i || []), t) e.style[s] = a[s];
            return r
        };

        function he(e, t, n, i) {
            var r, s, a = 20, o = i ? function () {
                return i.cur()
            } : function () {
                return S.css(e, t, "")
            }, l = o(), u = n && n[3] || (S.cssNumber[t] ? "" : "px"), c = e.nodeType && (S.cssNumber[t] || "px" !== u && +l) && re.exec(S.css(e, t));
            if (c && c[3] !== u) {
                for (l /= 2, u = u || c[3], c = +l || 1; a--;) S.style(e, t, c + u), (1 - s) * (1 - (s = o() / l || .5)) <= 0 && (a = 0), c /= s;
                c *= 2, S.style(e, t, c + u), n = n || []
            }
            return n && (c = +c || +l || 0, r = n[1] ? c + (n[1] + 1) * n[2] : +n[2], i && (i.unit = u, i.start = c, i.end = r)), r
        }

        var de = {};

        function fe(e) {
            var t, n = e.ownerDocument, i = e.nodeName, r = de[i];
            return r || (t = n.body.appendChild(n.createElement(i)), r = S.css(t, "display"), t.parentNode.removeChild(t), "none" === r && (r = "block"), de[i] = r, r)
        }

        function pe(e, t) {
            for (var n, i, r = [], s = 0, a = e.length; s < a; s++) (i = e[s]).style && (n = i.style.display, t ? ("none" === n && (r[s] = J.get(i, "display") || null, r[s] || (i.style.display = "")), "" === i.style.display && ue(i) && (r[s] = fe(i))) : "none" !== n && (r[s] = "none", J.set(i, "display", n)));
            for (s = 0; s < a; s++) null != r[s] && (e[s].style.display = r[s]);
            return e
        }

        S.fn.extend({
            show: function () {
                return pe(this, !0)
            }, hide: function () {
                return pe(this)
            }, toggle: function (e) {
                return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each((function () {
                    ue(this) ? S(this).show() : S(this).hide()
                }))
            }
        });
        var me = /^(?:checkbox|radio)$/i, ge = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i, ve = /^$|^module$|\/(?:java|ecma)script/i, ye = {option: [1, "<select multiple='multiple'>", "</select>"], thead: [1, "<table>", "</table>"], col: [2, "<table><colgroup>", "</colgroup></table>"], tr: [2, "<table><tbody>", "</tbody></table>"], td: [3, "<table><tbody><tr>", "</tr></tbody></table>"], _default: [0, "", ""]};

        function _e(e, t) {
            var n;
            return n = void 0 !== e.getElementsByTagName ? e.getElementsByTagName(t || "*") : void 0 !== e.querySelectorAll ? e.querySelectorAll(t || "*") : [], void 0 === t || t && I(e, t) ? S.merge([e], n) : n
        }

        function be(e, t) {
            for (var n = 0, i = e.length; n < i; n++) J.set(e[n], "globalEval", !t || J.get(t[n], "globalEval"))
        }

        ye.optgroup = ye.option, ye.tbody = ye.tfoot = ye.colgroup = ye.caption = ye.thead, ye.th = ye.td;
        var Te, we, Se = /<|&#?\w+;/;

        function Ee(e, t, n, i, r) {
            for (var s, a, o, l, u, c, h = t.createDocumentFragment(), d = [], f = 0, p = e.length; f < p; f++) if ((s = e[f]) || 0 === s) if ("object" === w(s)) S.merge(d, s.nodeType ? [s] : s); else if (Se.test(s)) {
                for (a = a || h.appendChild(t.createElement("div")), o = (ge.exec(s) || ["", ""])[1].toLowerCase(), l = ye[o] || ye._default, a.innerHTML = l[1] + S.htmlPrefilter(s) + l[2], c = l[0]; c--;) a = a.lastChild;
                S.merge(d, a.childNodes), (a = h.firstChild).textContent = ""
            } else d.push(t.createTextNode(s));
            for (h.textContent = "", f = 0; s = d[f++];) if (i && S.inArray(s, i) > -1) r && r.push(s); else if (u = oe(s), a = _e(h.appendChild(s), "script"), u && be(a), n) for (c = 0; s = a[c++];) ve.test(s.type || "") && n.push(s);
            return h
        }

        Te = a.createDocumentFragment().appendChild(a.createElement("div")), (we = a.createElement("input")).setAttribute("type", "radio"), we.setAttribute("checked", "checked"), we.setAttribute("name", "t"), Te.appendChild(we), v.checkClone = Te.cloneNode(!0).cloneNode(!0).lastChild.checked, Te.innerHTML = "<textarea>x</textarea>", v.noCloneChecked = !!Te.cloneNode(!0).lastChild.defaultValue;
        var Ce = /^key/, ke = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, xe = /^([^.]*)(?:\.(.+)|)/;

        function Ae() {
            return !0
        }

        function De() {
            return !1
        }

        function Ie(e, t) {
            return e === function () {
                try {
                    return a.activeElement
                } catch (e) {
                }
            }() == ("focus" === t)
        }

        function Pe(e, t, n, i, r, s) {
            var a, o;
            if ("object" == typeof t) {
                for (o in "string" != typeof n && (i = i || n, n = void 0), t) Pe(e, o, n, i, t[o], s);
                return e
            }
            if (null == i && null == r ? (r = n, i = n = void 0) : null == r && ("string" == typeof n ? (r = i, i = void 0) : (r = i, i = n, n = void 0)), !1 === r) r = De; else if (!r) return e;
            return 1 === s && (a = r, (r = function (e) {
                return S().off(e), a.apply(this, arguments)
            }).guid = a.guid || (a.guid = S.guid++)), e.each((function () {
                S.event.add(this, t, r, i, n)
            }))
        }

        function Oe(e, t, n) {
            n ? (J.set(e, t, !1), S.event.add(e, t, {
                namespace: !1, handler: function (e) {
                    var i, r, s = J.get(this, t);
                    if (1 & e.isTrigger && this[t]) {
                        if (s.length) (S.event.special[t] || {}).delegateType && e.stopPropagation(); else if (s = l.call(arguments), J.set(this, t, s), i = n(this, t), this[t](), s !== (r = J.get(this, t)) || i ? J.set(this, t, !1) : r = {}, s !== r) return e.stopImmediatePropagation(), e.preventDefault(), r.value
                    } else s.length && (J.set(this, t, {value: S.event.trigger(S.extend(s[0], S.Event.prototype), s.slice(1), this)}), e.stopImmediatePropagation())
                }
            })) : void 0 === J.get(e, t) && S.event.add(e, t, Ae)
        }

        S.event = {
            global: {}, add: function (e, t, n, i, r) {
                var s, a, o, l, u, c, h, d, f, p, m, g = J.get(e);
                if (g) for (n.handler && (n = (s = n).handler, r = s.selector), r && S.find.matchesSelector(ae, r), n.guid || (n.guid = S.guid++), (l = g.events) || (l = g.events = {}), (a = g.handle) || (a = g.handle = function (t) {
                    return void 0 !== S && S.event.triggered !== t.type ? S.event.dispatch.apply(e, arguments) : void 0
                }), u = (t = (t || "").match(B) || [""]).length; u--;) f = m = (o = xe.exec(t[u]) || [])[1], p = (o[2] || "").split(".").sort(), f && (h = S.event.special[f] || {}, f = (r ? h.delegateType : h.bindType) || f, h = S.event.special[f] || {}, c = S.extend({type: f, origType: m, data: i, handler: n, guid: n.guid, selector: r, needsContext: r && S.expr.match.needsContext.test(r), namespace: p.join(".")}, s), (d = l[f]) || ((d = l[f] = []).delegateCount = 0, h.setup && !1 !== h.setup.call(e, i, p, a) || e.addEventListener && e.addEventListener(f, a)), h.add && (h.add.call(e, c), c.handler.guid || (c.handler.guid = n.guid)), r ? d.splice(d.delegateCount++, 0, c) : d.push(c), S.event.global[f] = !0)
            }, remove: function (e, t, n, i, r) {
                var s, a, o, l, u, c, h, d, f, p, m, g = J.hasData(e) && J.get(e);
                if (g && (l = g.events)) {
                    for (u = (t = (t || "").match(B) || [""]).length; u--;) if (f = m = (o = xe.exec(t[u]) || [])[1], p = (o[2] || "").split(".").sort(), f) {
                        for (h = S.event.special[f] || {}, d = l[f = (i ? h.delegateType : h.bindType) || f] || [], o = o[2] && new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)"), a = s = d.length; s--;) c = d[s], !r && m !== c.origType || n && n.guid !== c.guid || o && !o.test(c.namespace) || i && i !== c.selector && ("**" !== i || !c.selector) || (d.splice(s, 1), c.selector && d.delegateCount--, h.remove && h.remove.call(e, c));
                        a && !d.length && (h.teardown && !1 !== h.teardown.call(e, p, g.handle) || S.removeEvent(e, f, g.handle), delete l[f])
                    } else for (f in l) S.event.remove(e, f + t[u], n, i, !0);
                    S.isEmptyObject(l) && J.remove(e, "handle events")
                }
            }, dispatch: function (e) {
                var t, n, i, r, s, a, o = S.event.fix(e), l = new Array(arguments.length), u = (J.get(this, "events") || {})[o.type] || [], c = S.event.special[o.type] || {};
                for (l[0] = o, t = 1; t < arguments.length; t++) l[t] = arguments[t];
                if (o.delegateTarget = this, !c.preDispatch || !1 !== c.preDispatch.call(this, o)) {
                    for (a = S.event.handlers.call(this, o, u), t = 0; (r = a[t++]) && !o.isPropagationStopped();) for (o.currentTarget = r.elem, n = 0; (s = r.handlers[n++]) && !o.isImmediatePropagationStopped();) o.rnamespace && !1 !== s.namespace && !o.rnamespace.test(s.namespace) || (o.handleObj = s, o.data = s.data, void 0 !== (i = ((S.event.special[s.origType] || {}).handle || s.handler).apply(r.elem, l)) && !1 === (o.result = i) && (o.preventDefault(), o.stopPropagation()));
                    return c.postDispatch && c.postDispatch.call(this, o), o.result
                }
            }, handlers: function (e, t) {
                var n, i, r, s, a, o = [], l = t.delegateCount, u = e.target;
                if (l && u.nodeType && !("click" === e.type && e.button >= 1)) for (; u !== this; u = u.parentNode || this) if (1 === u.nodeType && ("click" !== e.type || !0 !== u.disabled)) {
                    for (s = [], a = {}, n = 0; n < l; n++) void 0 === a[r = (i = t[n]).selector + " "] && (a[r] = i.needsContext ? S(r, this).index(u) > -1 : S.find(r, this, null, [u]).length), a[r] && s.push(i);
                    s.length && o.push({elem: u, handlers: s})
                }
                return u = this, l < t.length && o.push({elem: u, handlers: t.slice(l)}), o
            }, addProp: function (e, t) {
                Object.defineProperty(S.Event.prototype, e, {
                    enumerable: !0, configurable: !0, get: y(t) ? function () {
                        if (this.originalEvent) return t(this.originalEvent)
                    } : function () {
                        if (this.originalEvent) return this.originalEvent[e]
                    }, set: function (t) {
                        Object.defineProperty(this, e, {enumerable: !0, configurable: !0, writable: !0, value: t})
                    }
                })
            }, fix: function (e) {
                return e[S.expando] ? e : new S.Event(e)
            }, special: {
                load: {noBubble: !0}, click: {
                    setup: function (e) {
                        var t = this || e;
                        return me.test(t.type) && t.click && I(t, "input") && Oe(t, "click", Ae), !1
                    }, trigger: function (e) {
                        var t = this || e;
                        return me.test(t.type) && t.click && I(t, "input") && Oe(t, "click"), !0
                    }, _default: function (e) {
                        var t = e.target;
                        return me.test(t.type) && t.click && I(t, "input") && J.get(t, "click") || I(t, "a")
                    }
                }, beforeunload: {
                    postDispatch: function (e) {
                        void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
                    }
                }
            }
        }, S.removeEvent = function (e, t, n) {
            e.removeEventListener && e.removeEventListener(t, n)
        }, S.Event = function (e, t) {
            if (!(this instanceof S.Event)) return new S.Event(e, t);
            e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? Ae : De, this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target, this.currentTarget = e.currentTarget, this.relatedTarget = e.relatedTarget) : this.type = e, t && S.extend(this, t), this.timeStamp = e && e.timeStamp || Date.now(), this[S.expando] = !0
        }, S.Event.prototype = {
            constructor: S.Event, isDefaultPrevented: De, isPropagationStopped: De, isImmediatePropagationStopped: De, isSimulated: !1, preventDefault: function () {
                var e = this.originalEvent;
                this.isDefaultPrevented = Ae, e && !this.isSimulated && e.preventDefault()
            }, stopPropagation: function () {
                var e = this.originalEvent;
                this.isPropagationStopped = Ae, e && !this.isSimulated && e.stopPropagation()
            }, stopImmediatePropagation: function () {
                var e = this.originalEvent;
                this.isImmediatePropagationStopped = Ae, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation()
            }
        }, S.each({
            altKey: !0, bubbles: !0, cancelable: !0, changedTouches: !0, ctrlKey: !0, detail: !0, eventPhase: !0, metaKey: !0, pageX: !0, pageY: !0, shiftKey: !0, view: !0, char: !0, code: !0, charCode: !0, key: !0, keyCode: !0, button: !0, buttons: !0, clientX: !0, clientY: !0, offsetX: !0, offsetY: !0, pointerId: !0, pointerType: !0, screenX: !0, screenY: !0, targetTouches: !0, toElement: !0, touches: !0, which: function (e) {
                var t = e.button;
                return null == e.which && Ce.test(e.type) ? null != e.charCode ? e.charCode : e.keyCode : !e.which && void 0 !== t && ke.test(e.type) ? 1 & t ? 1 : 2 & t ? 3 : 4 & t ? 2 : 0 : e.which
            }
        }, S.event.addProp), S.each({focus: "focusin", blur: "focusout"}, (function (e, t) {
            S.event.special[e] = {
                setup: function () {
                    return Oe(this, e, Ie), !1
                }, trigger: function () {
                    return Oe(this, e), !0
                }, delegateType: t
            }
        })), S.each({mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout"}, (function (e, t) {
            S.event.special[e] = {
                delegateType: t, bindType: t, handle: function (e) {
                    var n, i = this, r = e.relatedTarget, s = e.handleObj;
                    return r && (r === i || S.contains(i, r)) || (e.type = s.origType, n = s.handler.apply(this, arguments), e.type = t), n
                }
            }
        })), S.fn.extend({
            on: function (e, t, n, i) {
                return Pe(this, e, t, n, i)
            }, one: function (e, t, n, i) {
                return Pe(this, e, t, n, i, 1)
            }, off: function (e, t, n) {
                var i, r;
                if (e && e.preventDefault && e.handleObj) return i = e.handleObj, S(e.delegateTarget).off(i.namespace ? i.origType + "." + i.namespace : i.origType, i.selector, i.handler), this;
                if ("object" == typeof e) {
                    for (r in e) this.off(r, t, e[r]);
                    return this
                }
                return !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = De), this.each((function () {
                    S.event.remove(this, e, n, t)
                }))
            }
        });
        var Le = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, Ne = /<script|<style|<link/i, Re = /checked\s*(?:[^=]|=\s*.checked.)/i, Ue = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;

        function Me(e, t) {
            return I(e, "table") && I(11 !== t.nodeType ? t : t.firstChild, "tr") && S(e).children("tbody")[0] || e
        }

        function Be(e) {
            return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e
        }

        function je(e) {
            return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"), e
        }

        function Fe(e, t) {
            var n, i, r, s, a, o, l, u;
            if (1 === t.nodeType) {
                if (J.hasData(e) && (s = J.access(e), a = J.set(t, s), u = s.events)) for (r in delete a.handle, a.events = {}, u) for (n = 0, i = u[r].length; n < i; n++) S.event.add(t, r, u[r][n]);
                Z.hasData(e) && (o = Z.access(e), l = S.extend({}, o), Z.set(t, l))
            }
        }

        function He(e, t) {
            var n = t.nodeName.toLowerCase();
            "input" === n && me.test(e.type) ? t.checked = e.checked : "input" !== n && "textarea" !== n || (t.defaultValue = e.defaultValue)
        }

        function qe(e, t, n, i) {
            t = u.apply([], t);
            var r, s, a, o, l, c, h = 0, d = e.length, f = d - 1, p = t[0], m = y(p);
            if (m || d > 1 && "string" == typeof p && !v.checkClone && Re.test(p)) return e.each((function (r) {
                var s = e.eq(r);
                m && (t[0] = p.call(this, r, s.html())), qe(s, t, n, i)
            }));
            if (d && (s = (r = Ee(t, e[0].ownerDocument, !1, e, i)).firstChild, 1 === r.childNodes.length && (r = s), s || i)) {
                for (o = (a = S.map(_e(r, "script"), Be)).length; h < d; h++) l = r, h !== f && (l = S.clone(l, !0, !0), o && S.merge(a, _e(l, "script"))), n.call(e[h], l, h);
                if (o) for (c = a[a.length - 1].ownerDocument, S.map(a, je), h = 0; h < o; h++) l = a[h], ve.test(l.type || "") && !J.access(l, "globalEval") && S.contains(c, l) && (l.src && "module" !== (l.type || "").toLowerCase() ? S._evalUrl && !l.noModule && S._evalUrl(l.src, {nonce: l.nonce || l.getAttribute("nonce")}) : T(l.textContent.replace(Ue, ""), l, c))
            }
            return e
        }

        function Ve(e, t, n) {
            for (var i, r = t ? S.filter(t, e) : e, s = 0; null != (i = r[s]); s++) n || 1 !== i.nodeType || S.cleanData(_e(i)), i.parentNode && (n && oe(i) && be(_e(i, "script")), i.parentNode.removeChild(i));
            return e
        }

        S.extend({
            htmlPrefilter: function (e) {
                return e.replace(Le, "<$1></$2>")
            }, clone: function (e, t, n) {
                var i, r, s, a, o = e.cloneNode(!0), l = oe(e);
                if (!(v.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || S.isXMLDoc(e))) for (a = _e(o), i = 0, r = (s = _e(e)).length; i < r; i++) He(s[i], a[i]);
                if (t) if (n) for (s = s || _e(e), a = a || _e(o), i = 0, r = s.length; i < r; i++) Fe(s[i], a[i]); else Fe(e, o);
                return (a = _e(o, "script")).length > 0 && be(a, !l && _e(e, "script")), o
            }, cleanData: function (e) {
                for (var t, n, i, r = S.event.special, s = 0; void 0 !== (n = e[s]); s++) if ($(n)) {
                    if (t = n[J.expando]) {
                        if (t.events) for (i in t.events) r[i] ? S.event.remove(n, i) : S.removeEvent(n, i, t.handle);
                        n[J.expando] = void 0
                    }
                    n[Z.expando] && (n[Z.expando] = void 0)
                }
            }
        }), S.fn.extend({
            detach: function (e) {
                return Ve(this, e, !0)
            }, remove: function (e) {
                return Ve(this, e)
            }, text: function (e) {
                return z(this, (function (e) {
                    return void 0 === e ? S.text(this) : this.empty().each((function () {
                        1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e)
                    }))
                }), null, e, arguments.length)
            }, append: function () {
                return qe(this, arguments, (function (e) {
                    1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || Me(this, e).appendChild(e)
                }))
            }, prepend: function () {
                return qe(this, arguments, (function (e) {
                    if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                        var t = Me(this, e);
                        t.insertBefore(e, t.firstChild)
                    }
                }))
            }, before: function () {
                return qe(this, arguments, (function (e) {
                    this.parentNode && this.parentNode.insertBefore(e, this)
                }))
            }, after: function () {
                return qe(this, arguments, (function (e) {
                    this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
                }))
            }, empty: function () {
                for (var e, t = 0; null != (e = this[t]); t++) 1 === e.nodeType && (S.cleanData(_e(e, !1)), e.textContent = "");
                return this
            }, clone: function (e, t) {
                return e = null != e && e, t = null == t ? e : t, this.map((function () {
                    return S.clone(this, e, t)
                }))
            }, html: function (e) {
                return z(this, (function (e) {
                    var t = this[0] || {}, n = 0, i = this.length;
                    if (void 0 === e && 1 === t.nodeType) return t.innerHTML;
                    if ("string" == typeof e && !Ne.test(e) && !ye[(ge.exec(e) || ["", ""])[1].toLowerCase()]) {
                        e = S.htmlPrefilter(e);
                        try {
                            for (; n < i; n++) 1 === (t = this[n] || {}).nodeType && (S.cleanData(_e(t, !1)), t.innerHTML = e);
                            t = 0
                        } catch (e) {
                        }
                    }
                    t && this.empty().append(e)
                }), null, e, arguments.length)
            }, replaceWith: function () {
                var e = [];
                return qe(this, arguments, (function (t) {
                    var n = this.parentNode;
                    S.inArray(this, e) < 0 && (S.cleanData(_e(this)), n && n.replaceChild(t, this))
                }), e)
            }
        }), S.each({appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith"}, (function (e, t) {
            S.fn[e] = function (e) {
                for (var n, i = [], r = S(e), s = r.length - 1, a = 0; a <= s; a++) n = a === s ? this : this.clone(!0), S(r[a])[t](n), c.apply(i, n.get());
                return this.pushStack(i)
            }
        }));
        var We = new RegExp("^(" + ie + ")(?!px)[a-z%]+$", "i"), ze = function (e) {
            var t = e.ownerDocument.defaultView;
            return t && t.opener || (t = n), t.getComputedStyle(e)
        }, Ge = new RegExp(se.join("|"), "i");

        function Ye(e, t, n) {
            var i, r, s, a, o = e.style;
            return (n = n || ze(e)) && ("" !== (a = n.getPropertyValue(t) || n[t]) || oe(e) || (a = S.style(e, t)), !v.pixelBoxStyles() && We.test(a) && Ge.test(t) && (i = o.width, r = o.minWidth, s = o.maxWidth, o.minWidth = o.maxWidth = o.width = a, a = n.width, o.width = i, o.minWidth = r, o.maxWidth = s)), void 0 !== a ? a + "" : a
        }

        function Xe(e, t) {
            return {
                get: function () {
                    if (!e()) return (this.get = t).apply(this, arguments);
                    delete this.get
                }
            }
        }

        !function () {
            function e() {
                if (c) {
                    u.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0", c.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%", ae.appendChild(u).appendChild(c);
                    var e = n.getComputedStyle(c);
                    i = "1%" !== e.top, l = 12 === t(e.marginLeft), c.style.right = "60%", o = 36 === t(e.right), r = 36 === t(e.width), c.style.position = "absolute", s = 12 === t(c.offsetWidth / 3), ae.removeChild(u), c = null
                }
            }

            function t(e) {
                return Math.round(parseFloat(e))
            }

            var i, r, s, o, l, u = a.createElement("div"), c = a.createElement("div");
            c.style && (c.style.backgroundClip = "content-box", c.cloneNode(!0).style.backgroundClip = "", v.clearCloneStyle = "content-box" === c.style.backgroundClip, S.extend(v, {
                boxSizingReliable: function () {
                    return e(), r
                }, pixelBoxStyles: function () {
                    return e(), o
                }, pixelPosition: function () {
                    return e(), i
                }, reliableMarginLeft: function () {
                    return e(), l
                }, scrollboxSize: function () {
                    return e(), s
                }
            }))
        }();
        var Ke = ["Webkit", "Moz", "ms"], $e = a.createElement("div").style, Qe = {};

        function Je(e) {
            var t = S.cssProps[e] || Qe[e];
            return t || (e in $e ? e : Qe[e] = function (e) {
                for (var t = e[0].toUpperCase() + e.slice(1), n = Ke.length; n--;) if ((e = Ke[n] + t) in $e) return e
            }(e) || e)
        }

        var Ze = /^(none|table(?!-c[ea]).+)/, et = /^--/, tt = {position: "absolute", visibility: "hidden", display: "block"}, nt = {letterSpacing: "0", fontWeight: "400"};

        function it(e, t, n) {
            var i = re.exec(t);
            return i ? Math.max(0, i[2] - (n || 0)) + (i[3] || "px") : t
        }

        function rt(e, t, n, i, r, s) {
            var a = "width" === t ? 1 : 0, o = 0, l = 0;
            if (n === (i ? "border" : "content")) return 0;
            for (; a < 4; a += 2) "margin" === n && (l += S.css(e, n + se[a], !0, r)), i ? ("content" === n && (l -= S.css(e, "padding" + se[a], !0, r)), "margin" !== n && (l -= S.css(e, "border" + se[a] + "Width", !0, r))) : (l += S.css(e, "padding" + se[a], !0, r), "padding" !== n ? l += S.css(e, "border" + se[a] + "Width", !0, r) : o += S.css(e, "border" + se[a] + "Width", !0, r));
            return !i && s >= 0 && (l += Math.max(0, Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - s - l - o - .5)) || 0), l
        }

        function st(e, t, n) {
            var i = ze(e), r = (!v.boxSizingReliable() || n) && "border-box" === S.css(e, "boxSizing", !1, i), s = r, a = Ye(e, t, i), o = "offset" + t[0].toUpperCase() + t.slice(1);
            if (We.test(a)) {
                if (!n) return a;
                a = "auto"
            }
            return (!v.boxSizingReliable() && r || "auto" === a || !parseFloat(a) && "inline" === S.css(e, "display", !1, i)) && e.getClientRects().length && (r = "border-box" === S.css(e, "boxSizing", !1, i), (s = o in e) && (a = e[o])), (a = parseFloat(a) || 0) + rt(e, t, n || (r ? "border" : "content"), s, i, a) + "px"
        }

        function at(e, t, n, i, r) {
            return new at.prototype.init(e, t, n, i, r)
        }

        S.extend({
            cssHooks: {
                opacity: {
                    get: function (e, t) {
                        if (t) {
                            var n = Ye(e, "opacity");
                            return "" === n ? "1" : n
                        }
                    }
                }
            }, cssNumber: {animationIterationCount: !0, columnCount: !0, fillOpacity: !0, flexGrow: !0, flexShrink: !0, fontWeight: !0, gridArea: !0, gridColumn: !0, gridColumnEnd: !0, gridColumnStart: !0, gridRow: !0, gridRowEnd: !0, gridRowStart: !0, lineHeight: !0, opacity: !0, order: !0, orphans: !0, widows: !0, zIndex: !0, zoom: !0}, cssProps: {}, style: function (e, t, n, i) {
                if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
                    var r, s, a, o = K(t), l = et.test(t), u = e.style;
                    if (l || (t = Je(o)), a = S.cssHooks[t] || S.cssHooks[o], void 0 === n) return a && "get" in a && void 0 !== (r = a.get(e, !1, i)) ? r : u[t];
                    "string" === (s = typeof n) && (r = re.exec(n)) && r[1] && (n = he(e, t, r), s = "number"), null != n && n == n && ("number" !== s || l || (n += r && r[3] || (S.cssNumber[o] ? "" : "px")), v.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (u[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, i)) || (l ? u.setProperty(t, n) : u[t] = n))
                }
            }, css: function (e, t, n, i) {
                var r, s, a, o = K(t);
                return et.test(t) || (t = Je(o)), (a = S.cssHooks[t] || S.cssHooks[o]) && "get" in a && (r = a.get(e, !0, n)), void 0 === r && (r = Ye(e, t, i)), "normal" === r && t in nt && (r = nt[t]), "" === n || n ? (s = parseFloat(r), !0 === n || isFinite(s) ? s || 0 : r) : r
            }
        }), S.each(["height", "width"], (function (e, t) {
            S.cssHooks[t] = {
                get: function (e, n, i) {
                    if (n) return !Ze.test(S.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? st(e, t, i) : ce(e, tt, (function () {
                        return st(e, t, i)
                    }))
                }, set: function (e, n, i) {
                    var r, s = ze(e), a = !v.scrollboxSize() && "absolute" === s.position, o = (a || i) && "border-box" === S.css(e, "boxSizing", !1, s), l = i ? rt(e, t, i, o, s) : 0;
                    return o && a && (l -= Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - parseFloat(s[t]) - rt(e, t, "border", !1, s) - .5)), l && (r = re.exec(n)) && "px" !== (r[3] || "px") && (e.style[t] = n, n = S.css(e, t)), it(0, n, l)
                }
            }
        })), S.cssHooks.marginLeft = Xe(v.reliableMarginLeft, (function (e, t) {
            if (t) return (parseFloat(Ye(e, "marginLeft")) || e.getBoundingClientRect().left - ce(e, {marginLeft: 0}, (function () {
                return e.getBoundingClientRect().left
            }))) + "px"
        })), S.each({margin: "", padding: "", border: "Width"}, (function (e, t) {
            S.cssHooks[e + t] = {
                expand: function (n) {
                    for (var i = 0, r = {}, s = "string" == typeof n ? n.split(" ") : [n]; i < 4; i++) r[e + se[i] + t] = s[i] || s[i - 2] || s[0];
                    return r
                }
            }, "margin" !== e && (S.cssHooks[e + t].set = it)
        })), S.fn.extend({
            css: function (e, t) {
                return z(this, (function (e, t, n) {
                    var i, r, s = {}, a = 0;
                    if (Array.isArray(t)) {
                        for (i = ze(e), r = t.length; a < r; a++) s[t[a]] = S.css(e, t[a], !1, i);
                        return s
                    }
                    return void 0 !== n ? S.style(e, t, n) : S.css(e, t)
                }), e, t, arguments.length > 1)
            }
        }), S.Tween = at, at.prototype = {
            constructor: at, init: function (e, t, n, i, r, s) {
                this.elem = e, this.prop = n, this.easing = r || S.easing._default, this.options = t, this.start = this.now = this.cur(), this.end = i, this.unit = s || (S.cssNumber[n] ? "" : "px")
            }, cur: function () {
                var e = at.propHooks[this.prop];
                return e && e.get ? e.get(this) : at.propHooks._default.get(this)
            }, run: function (e) {
                var t, n = at.propHooks[this.prop];
                return this.options.duration ? this.pos = t = S.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : at.propHooks._default.set(this), this
            }
        }, at.prototype.init.prototype = at.prototype, at.propHooks = {
            _default: {
                get: function (e) {
                    var t;
                    return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = S.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0
                }, set: function (e) {
                    S.fx.step[e.prop] ? S.fx.step[e.prop](e) : 1 !== e.elem.nodeType || !S.cssHooks[e.prop] && null == e.elem.style[Je(e.prop)] ? e.elem[e.prop] = e.now : S.style(e.elem, e.prop, e.now + e.unit)
                }
            }
        }, at.propHooks.scrollTop = at.propHooks.scrollLeft = {
            set: function (e) {
                e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
            }
        }, S.easing = {
            linear: function (e) {
                return e
            }, swing: function (e) {
                return .5 - Math.cos(e * Math.PI) / 2
            }, _default: "swing"
        }, S.fx = at.prototype.init, S.fx.step = {};
        var ot, lt, ut = /^(?:toggle|show|hide)$/, ct = /queueHooks$/;

        function ht() {
            lt && (!1 === a.hidden && n.requestAnimationFrame ? n.requestAnimationFrame(ht) : n.setTimeout(ht, S.fx.interval), S.fx.tick())
        }

        function dt() {
            return n.setTimeout((function () {
                ot = void 0
            })), ot = Date.now()
        }

        function ft(e, t) {
            var n, i = 0, r = {height: e};
            for (t = t ? 1 : 0; i < 4; i += 2 - t) r["margin" + (n = se[i])] = r["padding" + n] = e;
            return t && (r.opacity = r.width = e), r
        }

        function pt(e, t, n) {
            for (var i, r = (mt.tweeners[t] || []).concat(mt.tweeners["*"]), s = 0, a = r.length; s < a; s++) if (i = r[s].call(n, t, e)) return i
        }

        function mt(e, t, n) {
            var i, r, s = 0, a = mt.prefilters.length, o = S.Deferred().always((function () {
                delete l.elem
            })), l = function () {
                if (r) return !1;
                for (var t = ot || dt(), n = Math.max(0, u.startTime + u.duration - t), i = 1 - (n / u.duration || 0), s = 0, a = u.tweens.length; s < a; s++) u.tweens[s].run(i);
                return o.notifyWith(e, [u, i, n]), i < 1 && a ? n : (a || o.notifyWith(e, [u, 1, 0]), o.resolveWith(e, [u]), !1)
            }, u = o.promise({
                elem: e, props: S.extend({}, t), opts: S.extend(!0, {specialEasing: {}, easing: S.easing._default}, n), originalProperties: t, originalOptions: n, startTime: ot || dt(), duration: n.duration, tweens: [], createTween: function (t, n) {
                    var i = S.Tween(e, u.opts, t, n, u.opts.specialEasing[t] || u.opts.easing);
                    return u.tweens.push(i), i
                }, stop: function (t) {
                    var n = 0, i = t ? u.tweens.length : 0;
                    if (r) return this;
                    for (r = !0; n < i; n++) u.tweens[n].run(1);
                    return t ? (o.notifyWith(e, [u, 1, 0]), o.resolveWith(e, [u, t])) : o.rejectWith(e, [u, t]), this
                }
            }), c = u.props;
            for (!function (e, t) {
                var n, i, r, s, a;
                for (n in e) if (r = t[i = K(n)], s = e[n], Array.isArray(s) && (r = s[1], s = e[n] = s[0]), n !== i && (e[i] = s, delete e[n]), (a = S.cssHooks[i]) && "expand" in a) for (n in s = a.expand(s), delete e[i], s) n in e || (e[n] = s[n], t[n] = r); else t[i] = r
            }(c, u.opts.specialEasing); s < a; s++) if (i = mt.prefilters[s].call(u, e, c, u.opts)) return y(i.stop) && (S._queueHooks(u.elem, u.opts.queue).stop = i.stop.bind(i)), i;
            return S.map(c, pt, u), y(u.opts.start) && u.opts.start.call(e, u), u.progress(u.opts.progress).done(u.opts.done, u.opts.complete).fail(u.opts.fail).always(u.opts.always), S.fx.timer(S.extend(l, {elem: e, anim: u, queue: u.opts.queue})), u
        }

        S.Animation = S.extend(mt, {
            tweeners: {
                "*": [function (e, t) {
                    var n = this.createTween(e, t);
                    return he(n.elem, e, re.exec(t), n), n
                }]
            }, tweener: function (e, t) {
                y(e) ? (t = e, e = ["*"]) : e = e.match(B);
                for (var n, i = 0, r = e.length; i < r; i++) n = e[i], mt.tweeners[n] = mt.tweeners[n] || [], mt.tweeners[n].unshift(t)
            }, prefilters: [function (e, t, n) {
                var i, r, s, a, o, l, u, c, h = "width" in t || "height" in t, d = this, f = {}, p = e.style, m = e.nodeType && ue(e), g = J.get(e, "fxshow");
                for (i in n.queue || (null == (a = S._queueHooks(e, "fx")).unqueued && (a.unqueued = 0, o = a.empty.fire, a.empty.fire = function () {
                    a.unqueued || o()
                }), a.unqueued++, d.always((function () {
                    d.always((function () {
                        a.unqueued--, S.queue(e, "fx").length || a.empty.fire()
                    }))
                }))), t) if (r = t[i], ut.test(r)) {
                    if (delete t[i], s = s || "toggle" === r, r === (m ? "hide" : "show")) {
                        if ("show" !== r || !g || void 0 === g[i]) continue;
                        m = !0
                    }
                    f[i] = g && g[i] || S.style(e, i)
                }
                if ((l = !S.isEmptyObject(t)) || !S.isEmptyObject(f)) for (i in h && 1 === e.nodeType && (n.overflow = [p.overflow, p.overflowX, p.overflowY], null == (u = g && g.display) && (u = J.get(e, "display")), "none" === (c = S.css(e, "display")) && (u ? c = u : (pe([e], !0), u = e.style.display || u, c = S.css(e, "display"), pe([e]))), ("inline" === c || "inline-block" === c && null != u) && "none" === S.css(e, "float") && (l || (d.done((function () {
                    p.display = u
                })), null == u && (c = p.display, u = "none" === c ? "" : c)), p.display = "inline-block")), n.overflow && (p.overflow = "hidden", d.always((function () {
                    p.overflow = n.overflow[0], p.overflowX = n.overflow[1], p.overflowY = n.overflow[2]
                }))), l = !1, f) l || (g ? "hidden" in g && (m = g.hidden) : g = J.access(e, "fxshow", {display: u}), s && (g.hidden = !m), m && pe([e], !0), d.done((function () {
                    for (i in m || pe([e]), J.remove(e, "fxshow"), f) S.style(e, i, f[i])
                }))), l = pt(m ? g[i] : 0, i, d), i in g || (g[i] = l.start, m && (l.end = l.start, l.start = 0))
            }], prefilter: function (e, t) {
                t ? mt.prefilters.unshift(e) : mt.prefilters.push(e)
            }
        }), S.speed = function (e, t, n) {
            var i = e && "object" == typeof e ? S.extend({}, e) : {complete: n || !n && t || y(e) && e, duration: e, easing: n && t || t && !y(t) && t};
            return S.fx.off ? i.duration = 0 : "number" != typeof i.duration && (i.duration in S.fx.speeds ? i.duration = S.fx.speeds[i.duration] : i.duration = S.fx.speeds._default), null != i.queue && !0 !== i.queue || (i.queue = "fx"), i.old = i.complete, i.complete = function () {
                y(i.old) && i.old.call(this), i.queue && S.dequeue(this, i.queue)
            }, i
        }, S.fn.extend({
            fadeTo: function (e, t, n, i) {
                return this.filter(ue).css("opacity", 0).show().end().animate({opacity: t}, e, n, i)
            }, animate: function (e, t, n, i) {
                var r = S.isEmptyObject(e), s = S.speed(t, n, i), a = function () {
                    var t = mt(this, S.extend({}, e), s);
                    (r || J.get(this, "finish")) && t.stop(!0)
                };
                return a.finish = a, r || !1 === s.queue ? this.each(a) : this.queue(s.queue, a)
            }, stop: function (e, t, n) {
                var i = function (e) {
                    var t = e.stop;
                    delete e.stop, t(n)
                };
                return "string" != typeof e && (n = t, t = e, e = void 0), t && !1 !== e && this.queue(e || "fx", []), this.each((function () {
                    var t = !0, r = null != e && e + "queueHooks", s = S.timers, a = J.get(this);
                    if (r) a[r] && a[r].stop && i(a[r]); else for (r in a) a[r] && a[r].stop && ct.test(r) && i(a[r]);
                    for (r = s.length; r--;) s[r].elem !== this || null != e && s[r].queue !== e || (s[r].anim.stop(n), t = !1, s.splice(r, 1));
                    !t && n || S.dequeue(this, e)
                }))
            }, finish: function (e) {
                return !1 !== e && (e = e || "fx"), this.each((function () {
                    var t, n = J.get(this), i = n[e + "queue"], r = n[e + "queueHooks"], s = S.timers, a = i ? i.length : 0;
                    for (n.finish = !0, S.queue(this, e, []), r && r.stop && r.stop.call(this, !0), t = s.length; t--;) s[t].elem === this && s[t].queue === e && (s[t].anim.stop(!0), s.splice(t, 1));
                    for (t = 0; t < a; t++) i[t] && i[t].finish && i[t].finish.call(this);
                    delete n.finish
                }))
            }
        }), S.each(["toggle", "show", "hide"], (function (e, t) {
            var n = S.fn[t];
            S.fn[t] = function (e, i, r) {
                return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(ft(t, !0), e, i, r)
            }
        })), S.each({slideDown: ft("show"), slideUp: ft("hide"), slideToggle: ft("toggle"), fadeIn: {opacity: "show"}, fadeOut: {opacity: "hide"}, fadeToggle: {opacity: "toggle"}}, (function (e, t) {
            S.fn[e] = function (e, n, i) {
                return this.animate(t, e, n, i)
            }
        })), S.timers = [], S.fx.tick = function () {
            var e, t = 0, n = S.timers;
            for (ot = Date.now(); t < n.length; t++) (e = n[t])() || n[t] !== e || n.splice(t--, 1);
            n.length || S.fx.stop(), ot = void 0
        }, S.fx.timer = function (e) {
            S.timers.push(e), S.fx.start()
        }, S.fx.interval = 13, S.fx.start = function () {
            lt || (lt = !0, ht())
        }, S.fx.stop = function () {
            lt = null
        }, S.fx.speeds = {slow: 600, fast: 200, _default: 400}, S.fn.delay = function (e, t) {
            return e = S.fx && S.fx.speeds[e] || e, t = t || "fx", this.queue(t, (function (t, i) {
                var r = n.setTimeout(t, e);
                i.stop = function () {
                    n.clearTimeout(r)
                }
            }))
        }, function () {
            var e = a.createElement("input"), t = a.createElement("select").appendChild(a.createElement("option"));
            e.type = "checkbox", v.checkOn = "" !== e.value, v.optSelected = t.selected, (e = a.createElement("input")).value = "t", e.type = "radio", v.radioValue = "t" === e.value
        }();
        var gt, vt = S.expr.attrHandle;
        S.fn.extend({
            attr: function (e, t) {
                return z(this, S.attr, e, t, arguments.length > 1)
            }, removeAttr: function (e) {
                return this.each((function () {
                    S.removeAttr(this, e)
                }))
            }
        }), S.extend({
            attr: function (e, t, n) {
                var i, r, s = e.nodeType;
                if (3 !== s && 8 !== s && 2 !== s) return void 0 === e.getAttribute ? S.prop(e, t, n) : (1 === s && S.isXMLDoc(e) || (r = S.attrHooks[t.toLowerCase()] || (S.expr.match.bool.test(t) ? gt : void 0)), void 0 !== n ? null === n ? void S.removeAttr(e, t) : r && "set" in r && void 0 !== (i = r.set(e, n, t)) ? i : (e.setAttribute(t, n + ""), n) : r && "get" in r && null !== (i = r.get(e, t)) ? i : null == (i = S.find.attr(e, t)) ? void 0 : i)
            }, attrHooks: {
                type: {
                    set: function (e, t) {
                        if (!v.radioValue && "radio" === t && I(e, "input")) {
                            var n = e.value;
                            return e.setAttribute("type", t), n && (e.value = n), t
                        }
                    }
                }
            }, removeAttr: function (e, t) {
                var n, i = 0, r = t && t.match(B);
                if (r && 1 === e.nodeType) for (; n = r[i++];) e.removeAttribute(n)
            }
        }), gt = {
            set: function (e, t, n) {
                return !1 === t ? S.removeAttr(e, n) : e.setAttribute(n, n), n
            }
        }, S.each(S.expr.match.bool.source.match(/\w+/g), (function (e, t) {
            var n = vt[t] || S.find.attr;
            vt[t] = function (e, t, i) {
                var r, s, a = t.toLowerCase();
                return i || (s = vt[a], vt[a] = r, r = null != n(e, t, i) ? a : null, vt[a] = s), r
            }
        }));
        var yt = /^(?:input|select|textarea|button)$/i, _t = /^(?:a|area)$/i;

        function bt(e) {
            return (e.match(B) || []).join(" ")
        }

        function Tt(e) {
            return e.getAttribute && e.getAttribute("class") || ""
        }

        function wt(e) {
            return Array.isArray(e) ? e : "string" == typeof e && e.match(B) || []
        }

        S.fn.extend({
            prop: function (e, t) {
                return z(this, S.prop, e, t, arguments.length > 1)
            }, removeProp: function (e) {
                return this.each((function () {
                    delete this[S.propFix[e] || e]
                }))
            }
        }), S.extend({
            prop: function (e, t, n) {
                var i, r, s = e.nodeType;
                if (3 !== s && 8 !== s && 2 !== s) return 1 === s && S.isXMLDoc(e) || (t = S.propFix[t] || t, r = S.propHooks[t]), void 0 !== n ? r && "set" in r && void 0 !== (i = r.set(e, n, t)) ? i : e[t] = n : r && "get" in r && null !== (i = r.get(e, t)) ? i : e[t]
            }, propHooks: {
                tabIndex: {
                    get: function (e) {
                        var t = S.find.attr(e, "tabindex");
                        return t ? parseInt(t, 10) : yt.test(e.nodeName) || _t.test(e.nodeName) && e.href ? 0 : -1
                    }
                }
            }, propFix: {for: "htmlFor", class: "className"}
        }), v.optSelected || (S.propHooks.selected = {
            get: function (e) {
                var t = e.parentNode;
                return t && t.parentNode && t.parentNode.selectedIndex, null
            }, set: function (e) {
                var t = e.parentNode;
                t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex)
            }
        }), S.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], (function () {
            S.propFix[this.toLowerCase()] = this
        })), S.fn.extend({
            addClass: function (e) {
                var t, n, i, r, s, a, o, l = 0;
                if (y(e)) return this.each((function (t) {
                    S(this).addClass(e.call(this, t, Tt(this)))
                }));
                if ((t = wt(e)).length) for (; n = this[l++];) if (r = Tt(n), i = 1 === n.nodeType && " " + bt(r) + " ") {
                    for (a = 0; s = t[a++];) i.indexOf(" " + s + " ") < 0 && (i += s + " ");
                    r !== (o = bt(i)) && n.setAttribute("class", o)
                }
                return this
            }, removeClass: function (e) {
                var t, n, i, r, s, a, o, l = 0;
                if (y(e)) return this.each((function (t) {
                    S(this).removeClass(e.call(this, t, Tt(this)))
                }));
                if (!arguments.length) return this.attr("class", "");
                if ((t = wt(e)).length) for (; n = this[l++];) if (r = Tt(n), i = 1 === n.nodeType && " " + bt(r) + " ") {
                    for (a = 0; s = t[a++];) for (; i.indexOf(" " + s + " ") > -1;) i = i.replace(" " + s + " ", " ");
                    r !== (o = bt(i)) && n.setAttribute("class", o)
                }
                return this
            }, toggleClass: function (e, t) {
                var n = typeof e, i = "string" === n || Array.isArray(e);
                return "boolean" == typeof t && i ? t ? this.addClass(e) : this.removeClass(e) : y(e) ? this.each((function (n) {
                    S(this).toggleClass(e.call(this, n, Tt(this), t), t)
                })) : this.each((function () {
                    var t, r, s, a;
                    if (i) for (r = 0, s = S(this), a = wt(e); t = a[r++];) s.hasClass(t) ? s.removeClass(t) : s.addClass(t); else void 0 !== e && "boolean" !== n || ((t = Tt(this)) && J.set(this, "__className__", t), this.setAttribute && this.setAttribute("class", t || !1 === e ? "" : J.get(this, "__className__") || ""))
                }))
            }, hasClass: function (e) {
                var t, n, i = 0;
                for (t = " " + e + " "; n = this[i++];) if (1 === n.nodeType && (" " + bt(Tt(n)) + " ").indexOf(t) > -1) return !0;
                return !1
            }
        });
        var St = /\r/g;
        S.fn.extend({
            val: function (e) {
                var t, n, i, r = this[0];
                return arguments.length ? (i = y(e), this.each((function (n) {
                    var r;
                    1 === this.nodeType && (null == (r = i ? e.call(this, n, S(this).val()) : e) ? r = "" : "number" == typeof r ? r += "" : Array.isArray(r) && (r = S.map(r, (function (e) {
                        return null == e ? "" : e + ""
                    }))), (t = S.valHooks[this.type] || S.valHooks[this.nodeName.toLowerCase()]) && "set" in t && void 0 !== t.set(this, r, "value") || (this.value = r))
                }))) : r ? (t = S.valHooks[r.type] || S.valHooks[r.nodeName.toLowerCase()]) && "get" in t && void 0 !== (n = t.get(r, "value")) ? n : "string" == typeof (n = r.value) ? n.replace(St, "") : null == n ? "" : n : void 0
            }
        }), S.extend({
            valHooks: {
                option: {
                    get: function (e) {
                        var t = S.find.attr(e, "value");
                        return null != t ? t : bt(S.text(e))
                    }
                }, select: {
                    get: function (e) {
                        var t, n, i, r = e.options, s = e.selectedIndex, a = "select-one" === e.type, o = a ? null : [], l = a ? s + 1 : r.length;
                        for (i = s < 0 ? l : a ? s : 0; i < l; i++) if (((n = r[i]).selected || i === s) && !n.disabled && (!n.parentNode.disabled || !I(n.parentNode, "optgroup"))) {
                            if (t = S(n).val(), a) return t;
                            o.push(t)
                        }
                        return o
                    }, set: function (e, t) {
                        for (var n, i, r = e.options, s = S.makeArray(t), a = r.length; a--;) ((i = r[a]).selected = S.inArray(S.valHooks.option.get(i), s) > -1) && (n = !0);
                        return n || (e.selectedIndex = -1), s
                    }
                }
            }
        }), S.each(["radio", "checkbox"], (function () {
            S.valHooks[this] = {
                set: function (e, t) {
                    if (Array.isArray(t)) return e.checked = S.inArray(S(e).val(), t) > -1
                }
            }, v.checkOn || (S.valHooks[this].get = function (e) {
                return null === e.getAttribute("value") ? "on" : e.value
            })
        })), v.focusin = "onfocusin" in n;
        var Et = /^(?:focusinfocus|focusoutblur)$/, Ct = function (e) {
            e.stopPropagation()
        };
        S.extend(S.event, {
            trigger: function (e, t, i, r) {
                var s, o, l, u, c, h, d, f, m = [i || a], g = p.call(e, "type") ? e.type : e, v = p.call(e, "namespace") ? e.namespace.split(".") : [];
                if (o = f = l = i = i || a, 3 !== i.nodeType && 8 !== i.nodeType && !Et.test(g + S.event.triggered) && (g.indexOf(".") > -1 && (v = g.split("."), g = v.shift(), v.sort()), c = g.indexOf(":") < 0 && "on" + g, (e = e[S.expando] ? e : new S.Event(g, "object" == typeof e && e)).isTrigger = r ? 2 : 3, e.namespace = v.join("."), e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + v.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, e.result = void 0, e.target || (e.target = i), t = null == t ? [e] : S.makeArray(t, [e]), d = S.event.special[g] || {}, r || !d.trigger || !1 !== d.trigger.apply(i, t))) {
                    if (!r && !d.noBubble && !_(i)) {
                        for (u = d.delegateType || g, Et.test(u + g) || (o = o.parentNode); o; o = o.parentNode) m.push(o), l = o;
                        l === (i.ownerDocument || a) && m.push(l.defaultView || l.parentWindow || n)
                    }
                    for (s = 0; (o = m[s++]) && !e.isPropagationStopped();) f = o, e.type = s > 1 ? u : d.bindType || g, (h = (J.get(o, "events") || {})[e.type] && J.get(o, "handle")) && h.apply(o, t), (h = c && o[c]) && h.apply && $(o) && (e.result = h.apply(o, t), !1 === e.result && e.preventDefault());
                    return e.type = g, r || e.isDefaultPrevented() || d._default && !1 !== d._default.apply(m.pop(), t) || !$(i) || c && y(i[g]) && !_(i) && ((l = i[c]) && (i[c] = null), S.event.triggered = g, e.isPropagationStopped() && f.addEventListener(g, Ct), i[g](), e.isPropagationStopped() && f.removeEventListener(g, Ct), S.event.triggered = void 0, l && (i[c] = l)), e.result
                }
            }, simulate: function (e, t, n) {
                var i = S.extend(new S.Event, n, {type: e, isSimulated: !0});
                S.event.trigger(i, null, t)
            }
        }), S.fn.extend({
            trigger: function (e, t) {
                return this.each((function () {
                    S.event.trigger(e, t, this)
                }))
            }, triggerHandler: function (e, t) {
                var n = this[0];
                if (n) return S.event.trigger(e, t, n, !0)
            }
        }), v.focusin || S.each({focus: "focusin", blur: "focusout"}, (function (e, t) {
            var n = function (e) {
                S.event.simulate(t, e.target, S.event.fix(e))
            };
            S.event.special[t] = {
                setup: function () {
                    var i = this.ownerDocument || this, r = J.access(i, t);
                    r || i.addEventListener(e, n, !0), J.access(i, t, (r || 0) + 1)
                }, teardown: function () {
                    var i = this.ownerDocument || this, r = J.access(i, t) - 1;
                    r ? J.access(i, t, r) : (i.removeEventListener(e, n, !0), J.remove(i, t))
                }
            }
        }));
        var kt = n.location, xt = Date.now(), At = /\?/;
        S.parseXML = function (e) {
            var t;
            if (!e || "string" != typeof e) return null;
            try {
                t = (new n.DOMParser).parseFromString(e, "text/xml")
            } catch (e) {
                t = void 0
            }
            return t && !t.getElementsByTagName("parsererror").length || S.error("Invalid XML: " + e), t
        };
        var Dt = /\[\]$/, It = /\r?\n/g, Pt = /^(?:submit|button|image|reset|file)$/i, Ot = /^(?:input|select|textarea|keygen)/i;

        function Lt(e, t, n, i) {
            var r;
            if (Array.isArray(t)) S.each(t, (function (t, r) {
                n || Dt.test(e) ? i(e, r) : Lt(e + "[" + ("object" == typeof r && null != r ? t : "") + "]", r, n, i)
            })); else if (n || "object" !== w(t)) i(e, t); else for (r in t) Lt(e + "[" + r + "]", t[r], n, i)
        }

        S.param = function (e, t) {
            var n, i = [], r = function (e, t) {
                var n = y(t) ? t() : t;
                i[i.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n)
            };
            if (null == e) return "";
            if (Array.isArray(e) || e.jquery && !S.isPlainObject(e)) S.each(e, (function () {
                r(this.name, this.value)
            })); else for (n in e) Lt(n, e[n], t, r);
            return i.join("&")
        }, S.fn.extend({
            serialize: function () {
                return S.param(this.serializeArray())
            }, serializeArray: function () {
                return this.map((function () {
                    var e = S.prop(this, "elements");
                    return e ? S.makeArray(e) : this
                })).filter((function () {
                    var e = this.type;
                    return this.name && !S(this).is(":disabled") && Ot.test(this.nodeName) && !Pt.test(e) && (this.checked || !me.test(e))
                })).map((function (e, t) {
                    var n = S(this).val();
                    return null == n ? null : Array.isArray(n) ? S.map(n, (function (e) {
                        return {name: t.name, value: e.replace(It, "\r\n")}
                    })) : {name: t.name, value: n.replace(It, "\r\n")}
                })).get()
            }
        });
        var Nt = /%20/g, Rt = /#.*$/, Ut = /([?&])_=[^&]*/, Mt = /^(.*?):[ \t]*([^\r\n]*)$/gm, Bt = /^(?:GET|HEAD)$/, jt = /^\/\//, Ft = {}, Ht = {}, qt = "*/".concat("*"), Vt = a.createElement("a");

        function Wt(e) {
            return function (t, n) {
                "string" != typeof t && (n = t, t = "*");
                var i, r = 0, s = t.toLowerCase().match(B) || [];
                if (y(n)) for (; i = s[r++];) "+" === i[0] ? (i = i.slice(1) || "*", (e[i] = e[i] || []).unshift(n)) : (e[i] = e[i] || []).push(n)
            }
        }

        function zt(e, t, n, i) {
            var r = {}, s = e === Ht;

            function a(o) {
                var l;
                return r[o] = !0, S.each(e[o] || [], (function (e, o) {
                    var u = o(t, n, i);
                    return "string" != typeof u || s || r[u] ? s ? !(l = u) : void 0 : (t.dataTypes.unshift(u), a(u), !1)
                })), l
            }

            return a(t.dataTypes[0]) || !r["*"] && a("*")
        }

        function Gt(e, t) {
            var n, i, r = S.ajaxSettings.flatOptions || {};
            for (n in t) void 0 !== t[n] && ((r[n] ? e : i || (i = {}))[n] = t[n]);
            return i && S.extend(!0, e, i), e
        }

        Vt.href = kt.href, S.extend({
            active: 0, lastModified: {}, etag: {}, ajaxSettings: {url: kt.href, type: "GET", isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(kt.protocol), global: !0, processData: !0, async: !0, contentType: "application/x-www-form-urlencoded; charset=UTF-8", accepts: {"*": qt, text: "text/plain", html: "text/html", xml: "application/xml, text/xml", json: "application/json, text/javascript"}, contents: {xml: /\bxml\b/, html: /\bhtml/, json: /\bjson\b/}, responseFields: {xml: "responseXML", text: "responseText", json: "responseJSON"}, converters: {"* text": String, "text html": !0, "text json": JSON.parse, "text xml": S.parseXML}, flatOptions: {url: !0, context: !0}}, ajaxSetup: function (e, t) {
                return t ? Gt(Gt(e, S.ajaxSettings), t) : Gt(S.ajaxSettings, e)
            }, ajaxPrefilter: Wt(Ft), ajaxTransport: Wt(Ht), ajax: function (e, t) {
                "object" == typeof e && (t = e, e = void 0), t = t || {};
                var i, r, s, o, l, u, c, h, d, f, p = S.ajaxSetup({}, t), m = p.context || p, g = p.context && (m.nodeType || m.jquery) ? S(m) : S.event, v = S.Deferred(), y = S.Callbacks("once memory"), _ = p.statusCode || {}, b = {}, T = {}, w = "canceled", E = {
                    readyState: 0, getResponseHeader: function (e) {
                        var t;
                        if (c) {
                            if (!o) for (o = {}; t = Mt.exec(s);) o[t[1].toLowerCase() + " "] = (o[t[1].toLowerCase() + " "] || []).concat(t[2]);
                            t = o[e.toLowerCase() + " "]
                        }
                        return null == t ? null : t.join(", ")
                    }, getAllResponseHeaders: function () {
                        return c ? s : null
                    }, setRequestHeader: function (e, t) {
                        return null == c && (e = T[e.toLowerCase()] = T[e.toLowerCase()] || e, b[e] = t), this
                    }, overrideMimeType: function (e) {
                        return null == c && (p.mimeType = e), this
                    }, statusCode: function (e) {
                        var t;
                        if (e) if (c) E.always(e[E.status]); else for (t in e) _[t] = [_[t], e[t]];
                        return this
                    }, abort: function (e) {
                        var t = e || w;
                        return i && i.abort(t), C(0, t), this
                    }
                };
                if (v.promise(E), p.url = ((e || p.url || kt.href) + "").replace(jt, kt.protocol + "//"), p.type = t.method || t.type || p.method || p.type, p.dataTypes = (p.dataType || "*").toLowerCase().match(B) || [""], null == p.crossDomain) {
                    u = a.createElement("a");
                    try {
                        u.href = p.url, u.href = u.href, p.crossDomain = Vt.protocol + "//" + Vt.host != u.protocol + "//" + u.host
                    } catch (e) {
                        p.crossDomain = !0
                    }
                }
                if (p.data && p.processData && "string" != typeof p.data && (p.data = S.param(p.data, p.traditional)), zt(Ft, p, t, E), c) return E;
                for (d in (h = S.event && p.global) && 0 == S.active++ && S.event.trigger("ajaxStart"), p.type = p.type.toUpperCase(), p.hasContent = !Bt.test(p.type), r = p.url.replace(Rt, ""), p.hasContent ? p.data && p.processData && 0 === (p.contentType || "").indexOf("application/x-www-form-urlencoded") && (p.data = p.data.replace(Nt, "+")) : (f = p.url.slice(r.length), p.data && (p.processData || "string" == typeof p.data) && (r += (At.test(r) ? "&" : "?") + p.data, delete p.data), !1 === p.cache && (r = r.replace(Ut, "$1"), f = (At.test(r) ? "&" : "?") + "_=" + xt++ + f), p.url = r + f), p.ifModified && (S.lastModified[r] && E.setRequestHeader("If-Modified-Since", S.lastModified[r]), S.etag[r] && E.setRequestHeader("If-None-Match", S.etag[r])), (p.data && p.hasContent && !1 !== p.contentType || t.contentType) && E.setRequestHeader("Content-Type", p.contentType), E.setRequestHeader("Accept", p.dataTypes[0] && p.accepts[p.dataTypes[0]] ? p.accepts[p.dataTypes[0]] + ("*" !== p.dataTypes[0] ? ", " + qt + "; q=0.01" : "") : p.accepts["*"]), p.headers) E.setRequestHeader(d, p.headers[d]);
                if (p.beforeSend && (!1 === p.beforeSend.call(m, E, p) || c)) return E.abort();
                if (w = "abort", y.add(p.complete), E.done(p.success), E.fail(p.error), i = zt(Ht, p, t, E)) {
                    if (E.readyState = 1, h && g.trigger("ajaxSend", [E, p]), c) return E;
                    p.async && p.timeout > 0 && (l = n.setTimeout((function () {
                        E.abort("timeout")
                    }), p.timeout));
                    try {
                        c = !1, i.send(b, C)
                    } catch (e) {
                        if (c) throw e;
                        C(-1, e)
                    }
                } else C(-1, "No Transport");

                function C(e, t, a, o) {
                    var u, d, f, b, T, w = t;
                    c || (c = !0, l && n.clearTimeout(l), i = void 0, s = o || "", E.readyState = e > 0 ? 4 : 0, u = e >= 200 && e < 300 || 304 === e, a && (b = function (e, t, n) {
                        for (var i, r, s, a, o = e.contents, l = e.dataTypes; "*" === l[0];) l.shift(), void 0 === i && (i = e.mimeType || t.getResponseHeader("Content-Type"));
                        if (i) for (r in o) if (o[r] && o[r].test(i)) {
                            l.unshift(r);
                            break
                        }
                        if (l[0] in n) s = l[0]; else {
                            for (r in n) {
                                if (!l[0] || e.converters[r + " " + l[0]]) {
                                    s = r;
                                    break
                                }
                                a || (a = r)
                            }
                            s = s || a
                        }
                        if (s) return s !== l[0] && l.unshift(s), n[s]
                    }(p, E, a)), b = function (e, t, n, i) {
                        var r, s, a, o, l, u = {}, c = e.dataTypes.slice();
                        if (c[1]) for (a in e.converters) u[a.toLowerCase()] = e.converters[a];
                        for (s = c.shift(); s;) if (e.responseFields[s] && (n[e.responseFields[s]] = t), !l && i && e.dataFilter && (t = e.dataFilter(t, e.dataType)), l = s, s = c.shift()) if ("*" === s) s = l; else if ("*" !== l && l !== s) {
                            if (!(a = u[l + " " + s] || u["* " + s])) for (r in u) if ((o = r.split(" "))[1] === s && (a = u[l + " " + o[0]] || u["* " + o[0]])) {
                                !0 === a ? a = u[r] : !0 !== u[r] && (s = o[0], c.unshift(o[1]));
                                break
                            }
                            if (!0 !== a) if (a && e.throws) t = a(t); else try {
                                t = a(t)
                            } catch (e) {
                                return {state: "parsererror", error: a ? e : "No conversion from " + l + " to " + s}
                            }
                        }
                        return {state: "success", data: t}
                    }(p, b, E, u), u ? (p.ifModified && ((T = E.getResponseHeader("Last-Modified")) && (S.lastModified[r] = T), (T = E.getResponseHeader("etag")) && (S.etag[r] = T)), 204 === e || "HEAD" === p.type ? w = "nocontent" : 304 === e ? w = "notmodified" : (w = b.state, d = b.data, u = !(f = b.error))) : (f = w, !e && w || (w = "error", e < 0 && (e = 0))), E.status = e, E.statusText = (t || w) + "", u ? v.resolveWith(m, [d, w, E]) : v.rejectWith(m, [E, w, f]), E.statusCode(_), _ = void 0, h && g.trigger(u ? "ajaxSuccess" : "ajaxError", [E, p, u ? d : f]), y.fireWith(m, [E, w]), h && (g.trigger("ajaxComplete", [E, p]), --S.active || S.event.trigger("ajaxStop")))
                }

                return E
            }, getJSON: function (e, t, n) {
                return S.get(e, t, n, "json")
            }, getScript: function (e, t) {
                return S.get(e, void 0, t, "script")
            }
        }), S.each(["get", "post"], (function (e, t) {
            S[t] = function (e, n, i, r) {
                return y(n) && (r = r || i, i = n, n = void 0), S.ajax(S.extend({url: e, type: t, dataType: r, data: n, success: i}, S.isPlainObject(e) && e))
            }
        })), S._evalUrl = function (e, t) {
            return S.ajax({
                url: e, type: "GET", dataType: "script", cache: !0, async: !1, global: !1, converters: {
                    "text script": function () {
                    }
                }, dataFilter: function (e) {
                    S.globalEval(e, t)
                }
            })
        }, S.fn.extend({
            wrapAll: function (e) {
                var t;
                return this[0] && (y(e) && (e = e.call(this[0])), t = S(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map((function () {
                    for (var e = this; e.firstElementChild;) e = e.firstElementChild;
                    return e
                })).append(this)), this
            }, wrapInner: function (e) {
                return y(e) ? this.each((function (t) {
                    S(this).wrapInner(e.call(this, t))
                })) : this.each((function () {
                    var t = S(this), n = t.contents();
                    n.length ? n.wrapAll(e) : t.append(e)
                }))
            }, wrap: function (e) {
                var t = y(e);
                return this.each((function (n) {
                    S(this).wrapAll(t ? e.call(this, n) : e)
                }))
            }, unwrap: function (e) {
                return this.parent(e).not("body").each((function () {
                    S(this).replaceWith(this.childNodes)
                })), this
            }
        }), S.expr.pseudos.hidden = function (e) {
            return !S.expr.pseudos.visible(e)
        }, S.expr.pseudos.visible = function (e) {
            return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
        }, S.ajaxSettings.xhr = function () {
            try {
                return new n.XMLHttpRequest
            } catch (e) {
            }
        };
        var Yt = {0: 200, 1223: 204}, Xt = S.ajaxSettings.xhr();
        v.cors = !!Xt && "withCredentials" in Xt, v.ajax = Xt = !!Xt, S.ajaxTransport((function (e) {
            var t, i;
            if (v.cors || Xt && !e.crossDomain) return {
                send: function (r, s) {
                    var a, o = e.xhr();
                    if (o.open(e.type, e.url, e.async, e.username, e.password), e.xhrFields) for (a in e.xhrFields) o[a] = e.xhrFields[a];
                    for (a in e.mimeType && o.overrideMimeType && o.overrideMimeType(e.mimeType), e.crossDomain || r["X-Requested-With"] || (r["X-Requested-With"] = "XMLHttpRequest"), r) o.setRequestHeader(a, r[a]);
                    t = function (e) {
                        return function () {
                            t && (t = i = o.onload = o.onerror = o.onabort = o.ontimeout = o.onreadystatechange = null, "abort" === e ? o.abort() : "error" === e ? "number" != typeof o.status ? s(0, "error") : s(o.status, o.statusText) : s(Yt[o.status] || o.status, o.statusText, "text" !== (o.responseType || "text") || "string" != typeof o.responseText ? {binary: o.response} : {text: o.responseText}, o.getAllResponseHeaders()))
                        }
                    }, o.onload = t(), i = o.onerror = o.ontimeout = t("error"), void 0 !== o.onabort ? o.onabort = i : o.onreadystatechange = function () {
                        4 === o.readyState && n.setTimeout((function () {
                            t && i()
                        }))
                    }, t = t("abort");
                    try {
                        o.send(e.hasContent && e.data || null)
                    } catch (e) {
                        if (t) throw e
                    }
                }, abort: function () {
                    t && t()
                }
            }
        })), S.ajaxPrefilter((function (e) {
            e.crossDomain && (e.contents.script = !1)
        })), S.ajaxSetup({
            accepts: {script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"}, contents: {script: /\b(?:java|ecma)script\b/}, converters: {
                "text script": function (e) {
                    return S.globalEval(e), e
                }
            }
        }), S.ajaxPrefilter("script", (function (e) {
            void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET")
        })), S.ajaxTransport("script", (function (e) {
            var t, n;
            if (e.crossDomain || e.scriptAttrs) return {
                send: function (i, r) {
                    t = S("<script>").attr(e.scriptAttrs || {}).prop({charset: e.scriptCharset, src: e.url}).on("load error", n = function (e) {
                        t.remove(), n = null, e && r("error" === e.type ? 404 : 200, e.type)
                    }), a.head.appendChild(t[0])
                }, abort: function () {
                    n && n()
                }
            }
        }));
        var Kt, $t = [], Qt = /(=)\?(?=&|$)|\?\?/;
        S.ajaxSetup({
            jsonp: "callback", jsonpCallback: function () {
                var e = $t.pop() || S.expando + "_" + xt++;
                return this[e] = !0, e
            }
        }), S.ajaxPrefilter("json jsonp", (function (e, t, i) {
            var r, s, a, o = !1 !== e.jsonp && (Qt.test(e.url) ? "url" : "string" == typeof e.data && 0 === (e.contentType || "").indexOf("application/x-www-form-urlencoded") && Qt.test(e.data) && "data");
            if (o || "jsonp" === e.dataTypes[0]) return r = e.jsonpCallback = y(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback, o ? e[o] = e[o].replace(Qt, "$1" + r) : !1 !== e.jsonp && (e.url += (At.test(e.url) ? "&" : "?") + e.jsonp + "=" + r), e.converters["script json"] = function () {
                return a || S.error(r + " was not called"), a[0]
            }, e.dataTypes[0] = "json", s = n[r], n[r] = function () {
                a = arguments
            }, i.always((function () {
                void 0 === s ? S(n).removeProp(r) : n[r] = s, e[r] && (e.jsonpCallback = t.jsonpCallback, $t.push(r)), a && y(s) && s(a[0]), a = s = void 0
            })), "script"
        })), v.createHTMLDocument = ((Kt = a.implementation.createHTMLDocument("").body).innerHTML = "<form></form><form></form>", 2 === Kt.childNodes.length), S.parseHTML = function (e, t, n) {
            return "string" != typeof e ? [] : ("boolean" == typeof t && (n = t, t = !1), t || (v.createHTMLDocument ? ((i = (t = a.implementation.createHTMLDocument("")).createElement("base")).href = a.location.href, t.head.appendChild(i)) : t = a), s = !n && [], (r = P.exec(e)) ? [t.createElement(r[1])] : (r = Ee([e], t, s), s && s.length && S(s).remove(), S.merge([], r.childNodes)));
            var i, r, s
        }, S.fn.load = function (e, t, n) {
            var i, r, s, a = this, o = e.indexOf(" ");
            return o > -1 && (i = bt(e.slice(o)), e = e.slice(0, o)), y(t) ? (n = t, t = void 0) : t && "object" == typeof t && (r = "POST"), a.length > 0 && S.ajax({url: e, type: r || "GET", dataType: "html", data: t}).done((function (e) {
                s = arguments, a.html(i ? S("<div>").append(S.parseHTML(e)).find(i) : e)
            })).always(n && function (e, t) {
                a.each((function () {
                    n.apply(this, s || [e.responseText, t, e])
                }))
            }), this
        }, S.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], (function (e, t) {
            S.fn[t] = function (e) {
                return this.on(t, e)
            }
        })), S.expr.pseudos.animated = function (e) {
            return S.grep(S.timers, (function (t) {
                return e === t.elem
            })).length
        }, S.offset = {
            setOffset: function (e, t, n) {
                var i, r, s, a, o, l, u = S.css(e, "position"), c = S(e), h = {};
                "static" === u && (e.style.position = "relative"), o = c.offset(), s = S.css(e, "top"), l = S.css(e, "left"), ("absolute" === u || "fixed" === u) && (s + l).indexOf("auto") > -1 ? (a = (i = c.position()).top, r = i.left) : (a = parseFloat(s) || 0, r = parseFloat(l) || 0), y(t) && (t = t.call(e, n, S.extend({}, o))), null != t.top && (h.top = t.top - o.top + a), null != t.left && (h.left = t.left - o.left + r), "using" in t ? t.using.call(e, h) : c.css(h)
            }
        }, S.fn.extend({
            offset: function (e) {
                if (arguments.length) return void 0 === e ? this : this.each((function (t) {
                    S.offset.setOffset(this, e, t)
                }));
                var t, n, i = this[0];
                return i ? i.getClientRects().length ? (t = i.getBoundingClientRect(), n = i.ownerDocument.defaultView, {top: t.top + n.pageYOffset, left: t.left + n.pageXOffset}) : {top: 0, left: 0} : void 0
            }, position: function () {
                if (this[0]) {
                    var e, t, n, i = this[0], r = {top: 0, left: 0};
                    if ("fixed" === S.css(i, "position")) t = i.getBoundingClientRect(); else {
                        for (t = this.offset(), n = i.ownerDocument, e = i.offsetParent || n.documentElement; e && (e === n.body || e === n.documentElement) && "static" === S.css(e, "position");) e = e.parentNode;
                        e && e !== i && 1 === e.nodeType && ((r = S(e).offset()).top += S.css(e, "borderTopWidth", !0), r.left += S.css(e, "borderLeftWidth", !0))
                    }
                    return {top: t.top - r.top - S.css(i, "marginTop", !0), left: t.left - r.left - S.css(i, "marginLeft", !0)}
                }
            }, offsetParent: function () {
                return this.map((function () {
                    for (var e = this.offsetParent; e && "static" === S.css(e, "position");) e = e.offsetParent;
                    return e || ae
                }))
            }
        }), S.each({scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, (function (e, t) {
            var n = "pageYOffset" === t;
            S.fn[e] = function (i) {
                return z(this, (function (e, i, r) {
                    var s;
                    if (_(e) ? s = e : 9 === e.nodeType && (s = e.defaultView), void 0 === r) return s ? s[t] : e[i];
                    s ? s.scrollTo(n ? s.pageXOffset : r, n ? r : s.pageYOffset) : e[i] = r
                }), e, i, arguments.length)
            }
        })), S.each(["top", "left"], (function (e, t) {
            S.cssHooks[t] = Xe(v.pixelPosition, (function (e, n) {
                if (n) return n = Ye(e, t), We.test(n) ? S(e).position()[t] + "px" : n
            }))
        })), S.each({Height: "height", Width: "width"}, (function (e, t) {
            S.each({padding: "inner" + e, content: t, "": "outer" + e}, (function (n, i) {
                S.fn[i] = function (r, s) {
                    var a = arguments.length && (n || "boolean" != typeof r), o = n || (!0 === r || !0 === s ? "margin" : "border");
                    return z(this, (function (t, n, r) {
                        var s;
                        return _(t) ? 0 === i.indexOf("outer") ? t["inner" + e] : t.document.documentElement["client" + e] : 9 === t.nodeType ? (s = t.documentElement, Math.max(t.body["scroll" + e], s["scroll" + e], t.body["offset" + e], s["offset" + e], s["client" + e])) : void 0 === r ? S.css(t, n, o) : S.style(t, n, r, o)
                    }), t, a ? r : void 0, a)
                }
            }))
        })), S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), (function (e, t) {
            S.fn[t] = function (e, n) {
                return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
            }
        })), S.fn.extend({
            hover: function (e, t) {
                return this.mouseenter(e).mouseleave(t || e)
            }
        }), S.fn.extend({
            bind: function (e, t, n) {
                return this.on(e, null, t, n)
            }, unbind: function (e, t) {
                return this.off(e, null, t)
            }, delegate: function (e, t, n, i) {
                return this.on(t, e, n, i)
            }, undelegate: function (e, t, n) {
                return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
            }
        }), S.proxy = function (e, t) {
            var n, i, r;
            if ("string" == typeof t && (n = e[t], t = e, e = n), y(e)) return i = l.call(arguments, 2), (r = function () {
                return e.apply(t || this, i.concat(l.call(arguments)))
            }).guid = e.guid = e.guid || S.guid++, r
        }, S.holdReady = function (e) {
            e ? S.readyWait++ : S.ready(!0)
        }, S.isArray = Array.isArray, S.parseJSON = JSON.parse, S.nodeName = I, S.isFunction = y, S.isWindow = _, S.camelCase = K, S.type = w, S.now = Date.now, S.isNumeric = function (e) {
            var t = S.type(e);
            return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e))
        }, void 0 === (i = function () {
            return S
        }.apply(t, [])) || (e.exports = i);
        var Jt = n.jQuery, Zt = n.$;
        return S.noConflict = function (e) {
            return n.$ === S && (n.$ = Zt), e && n.jQuery === S && (n.jQuery = Jt), S
        }, r || (n.jQuery = n.$ = S), S
    }))
}, function (e, t) {
    e.exports = {
        toUnsigned: function (e) {
            return e >>> 0
        }, toHexString: function (e) {
            return ("00" + e.toString(16)).slice(-2)
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = n(34), r = n(35), s = n(36), a = function (e) {
        var t = {};
        return e ? (e.trim().split("\n").forEach((function (e) {
            var n = e.indexOf(":"), i = e.slice(0, n).trim().toLowerCase(), r = e.slice(n + 1).trim();
            void 0 === t[i] ? t[i] = r : Array.isArray(t[i]) ? t[i].push(r) : t[i] = [t[i], r]
        })), t) : t
    };

    function o(e, t, n) {
        var i = e;
        return s(t) ? (n = t, "string" == typeof e && (i = {uri: e})) : i = r({}, t, {uri: e}), i.callback = n, i
    }

    function l(e, t, n) {
        return u(t = o(e, t, n))
    }

    function u(e) {
        if (void 0 === e.callback) throw new Error("callback argument missing");
        var t = !1, n = function (n, i, r) {
            t || (t = !0, e.callback(n, i, r))
        };

        function i() {
            var e = void 0;
            if (e = c.response ? c.response : c.responseText || function (e) {
                try {
                    if ("document" === e.responseType) return e.responseXML;
                    var t = e.responseXML && "parsererror" === e.responseXML.documentElement.nodeName;
                    if ("" === e.responseType && !t) return e.responseXML
                } catch (e) {
                }
                return null
            }(c), v) try {
                e = JSON.parse(e)
            } catch (e) {
            }
            return e
        }

        function r(e) {
            return clearTimeout(h), e instanceof Error || (e = new Error("" + (e || "Unknown XMLHttpRequest Error"))), e.statusCode = 0, n(e, y)
        }

        function s() {
            if (!u) {
                var t;
                clearTimeout(h), t = e.useXDR && void 0 === c.status ? 200 : 1223 === c.status ? 204 : c.status;
                var r = y, s = null;
                return 0 !== t ? (r = {body: i(), statusCode: t, method: f, headers: {}, url: d, rawRequest: c}, c.getAllResponseHeaders && (r.headers = a(c.getAllResponseHeaders()))) : s = new Error("Internal XMLHttpRequest Error"), n(s, r, r.body)
            }
        }

        var o, u, c = e.xhr || null;
        c || (c = e.cors || e.useXDR ? new l.XDomainRequest : new l.XMLHttpRequest);
        var h, d = c.url = e.uri || e.url, f = c.method = e.method || "GET", p = e.body || e.data, m = c.headers = e.headers || {}, g = !!e.sync, v = !1, y = {body: void 0, headers: {}, statusCode: 0, method: f, url: d, rawRequest: c};
        if ("json" in e && !1 !== e.json && (v = !0, m.accept || m.Accept || (m.Accept = "application/json"), "GET" !== f && "HEAD" !== f && (m["content-type"] || m["Content-Type"] || (m["Content-Type"] = "application/json"), p = JSON.stringify(!0 === e.json ? p : e.json))), c.onreadystatechange = function () {
            4 === c.readyState && setTimeout(s, 0)
        }, c.onload = s, c.onerror = r, c.onprogress = function () {
        }, c.onabort = function () {
            u = !0
        }, c.ontimeout = r, c.open(f, d, !g, e.username, e.password), g || (c.withCredentials = !!e.withCredentials), !g && e.timeout > 0 && (h = setTimeout((function () {
            if (!u) {
                u = !0, c.abort("timeout");
                var e = new Error("XMLHttpRequest timeout");
                e.code = "ETIMEDOUT", r(e)
            }
        }), e.timeout)), c.setRequestHeader) for (o in m) m.hasOwnProperty(o) && c.setRequestHeader(o, m[o]); else if (e.headers && !function (e) {
            for (var t in e) if (e.hasOwnProperty(t)) return !1;
            return !0
        }(e.headers)) throw new Error("Headers cannot be set on an XDomainRequest object");
        return "responseType" in e && (c.responseType = e.responseType), "beforeSend" in e && "function" == typeof e.beforeSend && e.beforeSend(c), c.send(p || null), c
    }

    e.exports = l, e.exports.default = l, l.XMLHttpRequest = i.XMLHttpRequest || function () {
    }, l.XDomainRequest = "withCredentials" in new l.XMLHttpRequest ? l.XMLHttpRequest : i.XDomainRequest, function (e, t) {
        for (var n = 0; n < e.length; n++) t(e[n])
    }(["get", "put", "post", "patch", "head", "delete"], (function (e) {
        l["delete" === e ? "del" : e] = function (t, n, i) {
            return (n = o(t, n, i)).method = e.toUpperCase(), u(n)
        }
    }))
}, function (e, t, n) {
    var i = n(0), r = e.exports = {WebVTT: n(37), VTTCue: n(38), VTTRegion: n(39)};
    i.vttjs = r, i.WebVTT = r.WebVTT;
    var s = r.VTTCue, a = r.VTTRegion, o = i.VTTCue, l = i.VTTRegion;
    r.shim = function () {
        i.VTTCue = s, i.VTTRegion = a
    }, r.restore = function () {
        i.VTTCue = o, i.VTTRegion = l
    }, i.VTTCue || r.shim()
}, function (e, t) {
    function n(t, i) {
        return e.exports = n = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        }, n(t, i)
    }

    e.exports = n
}, function (e, t) {
    function n(e, t) {
        for (var n in e) t[n] = e[n]
    }

    function i(e, t) {
        var i = e.prototype;
        if (Object.create) {
            var r = Object.create(t.prototype);
            i.__proto__ = r
        }
        if (!(i instanceof t)) {
            function s() {
            }

            s.prototype = t.prototype, n(i, s = new s), e.prototype = i = s
        }
        i.constructor != e && ("function" != typeof e && console.error("unknow Class:" + e), i.constructor = e)
    }

    var r = "http://www.w3.org/1999/xhtml", s = {}, a = s.ELEMENT_NODE = 1, o = s.ATTRIBUTE_NODE = 2, l = s.TEXT_NODE = 3, u = s.CDATA_SECTION_NODE = 4, c = s.ENTITY_REFERENCE_NODE = 5, h = s.ENTITY_NODE = 6, d = s.PROCESSING_INSTRUCTION_NODE = 7, f = s.COMMENT_NODE = 8, p = s.DOCUMENT_NODE = 9, m = s.DOCUMENT_TYPE_NODE = 10, g = s.DOCUMENT_FRAGMENT_NODE = 11, v = s.NOTATION_NODE = 12, y = {}, _ = {}, b = (y.INDEX_SIZE_ERR = (_[1] = "Index size error", 1), y.DOMSTRING_SIZE_ERR = (_[2] = "DOMString size error", 2), y.HIERARCHY_REQUEST_ERR = (_[3] = "Hierarchy request error", 3)), T = (y.WRONG_DOCUMENT_ERR = (_[4] = "Wrong document", 4), y.INVALID_CHARACTER_ERR = (_[5] = "Invalid character", 5), y.NO_DATA_ALLOWED_ERR = (_[6] = "No data allowed", 6), y.NO_MODIFICATION_ALLOWED_ERR = (_[7] = "No modification allowed", 7), y.NOT_FOUND_ERR = (_[8] = "Not found", 8)), w = (y.NOT_SUPPORTED_ERR = (_[9] = "Not supported", 9), y.INUSE_ATTRIBUTE_ERR = (_[10] = "Attribute in use", 10));
    y.INVALID_STATE_ERR = (_[11] = "Invalid state", 11), y.SYNTAX_ERR = (_[12] = "Syntax error", 12), y.INVALID_MODIFICATION_ERR = (_[13] = "Invalid modification", 13), y.NAMESPACE_ERR = (_[14] = "Invalid namespace", 14), y.INVALID_ACCESS_ERR = (_[15] = "Invalid access", 15);

    function S(e, t) {
        if (t instanceof Error) var n = t; else n = this, Error.call(this, _[e]), this.message = _[e], Error.captureStackTrace && Error.captureStackTrace(this, S);
        return n.code = e, t && (this.message = this.message + ": " + t), n
    }

    function E() {
    }

    function C(e, t) {
        this._node = e, this._refresh = t, k(this)
    }

    function k(e) {
        var t = e._node._inc || e._node.ownerDocument._inc;
        if (e._inc != t) {
            var i = e._refresh(e._node);
            ne(e, "length", i.length), n(i, e), e._inc = t
        }
    }

    function x() {
    }

    function A(e, t) {
        for (var n = e.length; n--;) if (e[n] === t) return n
    }

    function D(e, t, n, i) {
        if (i ? t[A(t, i)] = n : t[t.length++] = n, e) {
            n.ownerElement = e;
            var r = e.ownerDocument;
            r && (i && U(r, e, i), function (e, t, n) {
                e && e._inc++, "http://www.w3.org/2000/xmlns/" == n.namespaceURI && (t._nsMap[n.prefix ? n.localName : ""] = n.value)
            }(r, e, n))
        }
    }

    function I(e, t, n) {
        var i = A(t, n);
        if (!(i >= 0)) throw S(T, new Error(e.tagName + "@" + n));
        for (var r = t.length - 1; i < r;) t[i] = t[++i];
        if (t.length = r, e) {
            var s = e.ownerDocument;
            s && (U(s, e, n), n.ownerElement = null)
        }
    }

    function P(e) {
        if (this._features = {}, e) for (var t in e) this._features = e[t]
    }

    function O() {
    }

    function L(e) {
        return ("<" == e ? "&lt;" : ">" == e && "&gt;") || "&" == e && "&amp;" || '"' == e && "&quot;" || "&#" + e.charCodeAt() + ";"
    }

    function N(e, t) {
        if (t(e)) return !0;
        if (e = e.firstChild) do {
            if (N(e, t)) return !0
        } while (e = e.nextSibling)
    }

    function R() {
    }

    function U(e, t, n, i) {
        e && e._inc++, "http://www.w3.org/2000/xmlns/" == n.namespaceURI && delete t._nsMap[n.prefix ? n.localName : ""]
    }

    function M(e, t, n) {
        if (e && e._inc) {
            e._inc++;
            var i = t.childNodes;
            if (n) i[i.length++] = n; else {
                for (var r = t.firstChild, s = 0; r;) i[s++] = r, r = r.nextSibling;
                i.length = s
            }
        }
    }

    function B(e, t) {
        var n = t.previousSibling, i = t.nextSibling;
        return n ? n.nextSibling = i : e.firstChild = i, i ? i.previousSibling = n : e.lastChild = n, M(e.ownerDocument, e), t
    }

    function j(e, t, n) {
        var i = t.parentNode;
        if (i && i.removeChild(t), t.nodeType === g) {
            var r = t.firstChild;
            if (null == r) return t;
            var s = t.lastChild
        } else r = s = t;
        var a = n ? n.previousSibling : e.lastChild;
        r.previousSibling = a, s.nextSibling = n, a ? a.nextSibling = r : e.firstChild = r, null == n ? e.lastChild = s : n.previousSibling = s;
        do {
            r.parentNode = e
        } while (r !== s && (r = r.nextSibling));
        return M(e.ownerDocument || e, e), t.nodeType == g && (t.firstChild = t.lastChild = null), t
    }

    function F() {
        this._nsMap = {}
    }

    function H() {
    }

    function q() {
    }

    function V() {
    }

    function W() {
    }

    function z() {
    }

    function G() {
    }

    function Y() {
    }

    function X() {
    }

    function K() {
    }

    function $() {
    }

    function Q() {
    }

    function J() {
    }

    function Z(e, t) {
        var n = [], i = 9 == this.nodeType ? this.documentElement : this, r = i.prefix, s = i.namespaceURI;
        if (s && null == r && null == (r = i.lookupPrefix(s))) var a = [{namespace: s, prefix: null}];
        return te(this, n, e, t, a), n.join("")
    }

    function ee(e, t, n) {
        var i = e.prefix || "", r = e.namespaceURI;
        if (!i && !r) return !1;
        if ("xml" === i && "http://www.w3.org/XML/1998/namespace" === r || "http://www.w3.org/2000/xmlns/" == r) return !1;
        for (var s = n.length; s--;) {
            var a = n[s];
            if (a.prefix == i) return a.namespace != r
        }
        return !0
    }

    function te(e, t, n, i, s) {
        if (i) {
            if (!(e = i(e))) return;
            if ("string" == typeof e) return void t.push(e)
        }
        switch (e.nodeType) {
            case a:
                s || (s = []);
                s.length;
                var h = e.attributes, v = h.length, y = e.firstChild, _ = e.tagName;
                n = r === e.namespaceURI || n, t.push("<", _);
                for (var b = 0; b < v; b++) {
                    "xmlns" == (T = h.item(b)).prefix ? s.push({prefix: T.localName, namespace: T.value}) : "xmlns" == T.nodeName && s.push({prefix: "", namespace: T.value})
                }
                for (b = 0; b < v; b++) {
                    var T;
                    if (ee(T = h.item(b), 0, s)) {
                        var w = T.prefix || "", S = T.namespaceURI, E = w ? " xmlns:" + w : " xmlns";
                        t.push(E, '="', S, '"'), s.push({prefix: w, namespace: S})
                    }
                    te(T, t, n, i, s)
                }
                if (ee(e, 0, s)) {
                    w = e.prefix || "", S = e.namespaceURI, E = w ? " xmlns:" + w : " xmlns";
                    t.push(E, '="', S, '"'), s.push({prefix: w, namespace: S})
                }
                if (y || n && !/^(?:meta|link|img|br|hr|input)$/i.test(_)) {
                    if (t.push(">"), n && /^script$/i.test(_)) for (; y;) y.data ? t.push(y.data) : te(y, t, n, i, s), y = y.nextSibling; else for (; y;) te(y, t, n, i, s), y = y.nextSibling;
                    t.push("</", _, ">")
                } else t.push("/>");
                return;
            case p:
            case g:
                for (y = e.firstChild; y;) te(y, t, n, i, s), y = y.nextSibling;
                return;
            case o:
                return t.push(" ", e.name, '="', e.value.replace(/[<&"]/g, L), '"');
            case l:
                return t.push(e.data.replace(/[<&]/g, L));
            case u:
                return t.push("<![CDATA[", e.data, "]]>");
            case f:
                return t.push("\x3c!--", e.data, "--\x3e");
            case m:
                var C = e.publicId, k = e.systemId;
                if (t.push("<!DOCTYPE ", e.name), C) t.push(' PUBLIC "', C), k && "." != k && t.push('" "', k), t.push('">'); else if (k && "." != k) t.push(' SYSTEM "', k, '">'); else {
                    var x = e.internalSubset;
                    x && t.push(" [", x, "]"), t.push(">")
                }
                return;
            case d:
                return t.push("<?", e.target, " ", e.data, "?>");
            case c:
                return t.push("&", e.nodeName, ";");
            default:
                t.push("??", e.nodeName)
        }
    }

    function ne(e, t, n) {
        e[t] = n
    }

    S.prototype = Error.prototype, n(y, S), E.prototype = {
        length: 0, item: function (e) {
            return this[e] || null
        }, toString: function (e, t) {
            for (var n = [], i = 0; i < this.length; i++) te(this[i], n, e, t);
            return n.join("")
        }
    }, C.prototype.item = function (e) {
        return k(this), this[e]
    }, i(C, E), x.prototype = {
        length: 0, item: E.prototype.item, getNamedItem: function (e) {
            for (var t = this.length; t--;) {
                var n = this[t];
                if (n.nodeName == e) return n
            }
        }, setNamedItem: function (e) {
            var t = e.ownerElement;
            if (t && t != this._ownerElement) throw new S(w);
            var n = this.getNamedItem(e.nodeName);
            return D(this._ownerElement, this, e, n), n
        }, setNamedItemNS: function (e) {
            var t, n = e.ownerElement;
            if (n && n != this._ownerElement) throw new S(w);
            return t = this.getNamedItemNS(e.namespaceURI, e.localName), D(this._ownerElement, this, e, t), t
        }, removeNamedItem: function (e) {
            var t = this.getNamedItem(e);
            return I(this._ownerElement, this, t), t
        }, removeNamedItemNS: function (e, t) {
            var n = this.getNamedItemNS(e, t);
            return I(this._ownerElement, this, n), n
        }, getNamedItemNS: function (e, t) {
            for (var n = this.length; n--;) {
                var i = this[n];
                if (i.localName == t && i.namespaceURI == e) return i
            }
            return null
        }
    }, P.prototype = {
        hasFeature: function (e, t) {
            var n = this._features[e.toLowerCase()];
            return !(!n || t && !(t in n))
        }, createDocument: function (e, t, n) {
            var i = new R;
            if (i.implementation = this, i.childNodes = new E, i.doctype = n, n && i.appendChild(n), t) {
                var r = i.createElementNS(e, t);
                i.appendChild(r)
            }
            return i
        }, createDocumentType: function (e, t, n) {
            var i = new G;
            return i.name = e, i.nodeName = e, i.publicId = t, i.systemId = n, i
        }
    }, O.prototype = {
        firstChild: null, lastChild: null, previousSibling: null, nextSibling: null, attributes: null, parentNode: null, childNodes: null, ownerDocument: null, nodeValue: null, namespaceURI: null, prefix: null, localName: null, insertBefore: function (e, t) {
            return j(this, e, t)
        }, replaceChild: function (e, t) {
            this.insertBefore(e, t), t && this.removeChild(t)
        }, removeChild: function (e) {
            return B(this, e)
        }, appendChild: function (e) {
            return this.insertBefore(e, null)
        }, hasChildNodes: function () {
            return null != this.firstChild
        }, cloneNode: function (e) {
            return function e(t, n, i) {
                var r = new n.constructor;
                for (var s in n) {
                    var l = n[s];
                    "object" != typeof l && l != r[s] && (r[s] = l)
                }
                n.childNodes && (r.childNodes = new E);
                switch (r.ownerDocument = t, r.nodeType) {
                    case a:
                        var u = n.attributes, c = r.attributes = new x, h = u.length;
                        c._ownerElement = r;
                        for (var d = 0; d < h; d++) r.setAttributeNode(e(t, u.item(d), !0));
                        break;
                    case o:
                        i = !0
                }
                if (i) for (var f = n.firstChild; f;) r.appendChild(e(t, f, i)), f = f.nextSibling;
                return r
            }(this.ownerDocument || this, this, e)
        }, normalize: function () {
            for (var e = this.firstChild; e;) {
                var t = e.nextSibling;
                t && t.nodeType == l && e.nodeType == l ? (this.removeChild(t), e.appendData(t.data)) : (e.normalize(), e = t)
            }
        }, isSupported: function (e, t) {
            return this.ownerDocument.implementation.hasFeature(e, t)
        }, hasAttributes: function () {
            return this.attributes.length > 0
        }, lookupPrefix: function (e) {
            for (var t = this; t;) {
                var n = t._nsMap;
                if (n) for (var i in n) if (n[i] == e) return i;
                t = t.nodeType == o ? t.ownerDocument : t.parentNode
            }
            return null
        }, lookupNamespaceURI: function (e) {
            for (var t = this; t;) {
                var n = t._nsMap;
                if (n && e in n) return n[e];
                t = t.nodeType == o ? t.ownerDocument : t.parentNode
            }
            return null
        }, isDefaultNamespace: function (e) {
            return null == this.lookupPrefix(e)
        }
    }, n(s, O), n(s, O.prototype), R.prototype = {
        nodeName: "#document", nodeType: p, doctype: null, documentElement: null, _inc: 1, insertBefore: function (e, t) {
            if (e.nodeType == g) {
                for (var n = e.firstChild; n;) {
                    var i = n.nextSibling;
                    this.insertBefore(n, t), n = i
                }
                return e
            }
            return null == this.documentElement && e.nodeType == a && (this.documentElement = e), j(this, e, t), e.ownerDocument = this, e
        }, removeChild: function (e) {
            return this.documentElement == e && (this.documentElement = null), B(this, e)
        }, importNode: function (e, t) {
            return function e(t, n, i) {
                var r;
                switch (n.nodeType) {
                    case a:
                        (r = n.cloneNode(!1)).ownerDocument = t;
                    case g:
                        break;
                    case o:
                        i = !0
                }
                r || (r = n.cloneNode(!1));
                if (r.ownerDocument = t, r.parentNode = null, i) for (var s = n.firstChild; s;) r.appendChild(e(t, s, i)), s = s.nextSibling;
                return r
            }(this, e, t)
        }, getElementById: function (e) {
            var t = null;
            return N(this.documentElement, (function (n) {
                if (n.nodeType == a && n.getAttribute("id") == e) return t = n, !0
            })), t
        }, createElement: function (e) {
            var t = new F;
            return t.ownerDocument = this, t.nodeName = e, t.tagName = e, t.childNodes = new E, (t.attributes = new x)._ownerElement = t, t
        }, createDocumentFragment: function () {
            var e = new $;
            return e.ownerDocument = this, e.childNodes = new E, e
        }, createTextNode: function (e) {
            var t = new V;
            return t.ownerDocument = this, t.appendData(e), t
        }, createComment: function (e) {
            var t = new W;
            return t.ownerDocument = this, t.appendData(e), t
        }, createCDATASection: function (e) {
            var t = new z;
            return t.ownerDocument = this, t.appendData(e), t
        }, createProcessingInstruction: function (e, t) {
            var n = new Q;
            return n.ownerDocument = this, n.tagName = n.target = e, n.nodeValue = n.data = t, n
        }, createAttribute: function (e) {
            var t = new H;
            return t.ownerDocument = this, t.name = e, t.nodeName = e, t.localName = e, t.specified = !0, t
        }, createEntityReference: function (e) {
            var t = new K;
            return t.ownerDocument = this, t.nodeName = e, t
        }, createElementNS: function (e, t) {
            var n = new F, i = t.split(":"), r = n.attributes = new x;
            return n.childNodes = new E, n.ownerDocument = this, n.nodeName = t, n.tagName = t, n.namespaceURI = e, 2 == i.length ? (n.prefix = i[0], n.localName = i[1]) : n.localName = t, r._ownerElement = n, n
        }, createAttributeNS: function (e, t) {
            var n = new H, i = t.split(":");
            return n.ownerDocument = this, n.nodeName = t, n.name = t, n.namespaceURI = e, n.specified = !0, 2 == i.length ? (n.prefix = i[0], n.localName = i[1]) : n.localName = t, n
        }
    }, i(R, O), F.prototype = {
        nodeType: a, hasAttribute: function (e) {
            return null != this.getAttributeNode(e)
        }, getAttribute: function (e) {
            var t = this.getAttributeNode(e);
            return t && t.value || ""
        }, getAttributeNode: function (e) {
            return this.attributes.getNamedItem(e)
        }, setAttribute: function (e, t) {
            var n = this.ownerDocument.createAttribute(e);
            n.value = n.nodeValue = "" + t, this.setAttributeNode(n)
        }, removeAttribute: function (e) {
            var t = this.getAttributeNode(e);
            t && this.removeAttributeNode(t)
        }, appendChild: function (e) {
            return e.nodeType === g ? this.insertBefore(e, null) : function (e, t) {
                var n = t.parentNode;
                if (n) {
                    var i = e.lastChild;
                    n.removeChild(t);
                    i = e.lastChild
                }
                return i = e.lastChild, t.parentNode = e, t.previousSibling = i, t.nextSibling = null, i ? i.nextSibling = t : e.firstChild = t, e.lastChild = t, M(e.ownerDocument, e, t), t
            }(this, e)
        }, setAttributeNode: function (e) {
            return this.attributes.setNamedItem(e)
        }, setAttributeNodeNS: function (e) {
            return this.attributes.setNamedItemNS(e)
        }, removeAttributeNode: function (e) {
            return this.attributes.removeNamedItem(e.nodeName)
        }, removeAttributeNS: function (e, t) {
            var n = this.getAttributeNodeNS(e, t);
            n && this.removeAttributeNode(n)
        }, hasAttributeNS: function (e, t) {
            return null != this.getAttributeNodeNS(e, t)
        }, getAttributeNS: function (e, t) {
            var n = this.getAttributeNodeNS(e, t);
            return n && n.value || ""
        }, setAttributeNS: function (e, t, n) {
            var i = this.ownerDocument.createAttributeNS(e, t);
            i.value = i.nodeValue = "" + n, this.setAttributeNode(i)
        }, getAttributeNodeNS: function (e, t) {
            return this.attributes.getNamedItemNS(e, t)
        }, getElementsByTagName: function (e) {
            return new C(this, (function (t) {
                var n = [];
                return N(t, (function (i) {
                    i === t || i.nodeType != a || "*" !== e && i.tagName != e || n.push(i)
                })), n
            }))
        }, getElementsByTagNameNS: function (e, t) {
            return new C(this, (function (n) {
                var i = [];
                return N(n, (function (r) {
                    r === n || r.nodeType !== a || "*" !== e && r.namespaceURI !== e || "*" !== t && r.localName != t || i.push(r)
                })), i
            }))
        }
    }, R.prototype.getElementsByTagName = F.prototype.getElementsByTagName, R.prototype.getElementsByTagNameNS = F.prototype.getElementsByTagNameNS, i(F, O), H.prototype.nodeType = o, i(H, O), q.prototype = {
        data: "", substringData: function (e, t) {
            return this.data.substring(e, e + t)
        }, appendData: function (e) {
            e = this.data + e, this.nodeValue = this.data = e, this.length = e.length
        }, insertData: function (e, t) {
            this.replaceData(e, 0, t)
        }, appendChild: function (e) {
            throw new Error(_[b])
        }, deleteData: function (e, t) {
            this.replaceData(e, t, "")
        }, replaceData: function (e, t, n) {
            n = this.data.substring(0, e) + n + this.data.substring(e + t), this.nodeValue = this.data = n, this.length = n.length
        }
    }, i(q, O), V.prototype = {
        nodeName: "#text", nodeType: l, splitText: function (e) {
            var t = this.data, n = t.substring(e);
            t = t.substring(0, e), this.data = this.nodeValue = t, this.length = t.length;
            var i = this.ownerDocument.createTextNode(n);
            return this.parentNode && this.parentNode.insertBefore(i, this.nextSibling), i
        }
    }, i(V, q), W.prototype = {nodeName: "#comment", nodeType: f}, i(W, q), z.prototype = {nodeName: "#cdata-section", nodeType: u}, i(z, q), G.prototype.nodeType = m, i(G, O), Y.prototype.nodeType = v, i(Y, O), X.prototype.nodeType = h, i(X, O), K.prototype.nodeType = c, i(K, O), $.prototype.nodeName = "#document-fragment", $.prototype.nodeType = g, i($, O), Q.prototype.nodeType = d, i(Q, O), J.prototype.serializeToString = function (e, t, n) {
        return Z.call(e, t, n)
    }, O.prototype.toString = Z;
    try {
        if (Object.defineProperty) {
            Object.defineProperty(C.prototype, "length", {
                get: function () {
                    return k(this), this.$$length
                }
            }), Object.defineProperty(O.prototype, "textContent", {
                get: function () {
                    return function e(t) {
                        switch (t.nodeType) {
                            case a:
                            case g:
                                var n = [];
                                for (t = t.firstChild; t;) 7 !== t.nodeType && 8 !== t.nodeType && n.push(e(t)), t = t.nextSibling;
                                return n.join("");
                            default:
                                return t.nodeValue
                        }
                    }(this)
                }, set: function (e) {
                    switch (this.nodeType) {
                        case a:
                        case g:
                            for (; this.firstChild;) this.removeChild(this.firstChild);
                            (e || String(e)) && this.appendChild(this.ownerDocument.createTextNode(e));
                            break;
                        default:
                            this.data = e, this.value = e, this.nodeValue = e
                    }
                }
            }), ne = function (e, t, n) {
                e["$$" + t] = n
            }
        }
    } catch (e) {
    }
    t.DOMImplementation = P, t.XMLSerializer = J
}, function (e, t, n) {
    "use strict";
    e.exports = {
        parseSei: function (e) {
            for (var t = 0, n = {payloadType: -1, payloadSize: 0}, i = 0, r = 0; t < e.byteLength && 128 !== e[t];) {
                for (; 255 === e[t];) i += 255, t++;
                for (i += e[t++]; 255 === e[t];) r += 255, t++;
                if (r += e[t++], !n.payload && 4 === i) {
                    n.payloadType = i, n.payloadSize = r, n.payload = e.subarray(t, t + r);
                    break
                }
                t += r, i = 0, r = 0
            }
            return n
        }, parseUserData: function (e) {
            return 181 !== e.payload[0] ? null : 49 != (e.payload[1] << 8 | e.payload[2]) ? null : "GA94" !== String.fromCharCode(e.payload[3], e.payload[4], e.payload[5], e.payload[6]) ? null : 3 !== e.payload[7] ? null : e.payload.subarray(8, e.payload.length - 1)
        }, parseCaptionPackets: function (e, t) {
            var n, i, r, s, a = [];
            if (!(64 & t[0])) return a;
            for (i = 31 & t[0], n = 0; n < i; n++) s = {type: 3 & t[(r = 3 * n) + 2], pts: e}, 4 & t[r + 2] && (s.ccData = t[r + 3] << 8 | t[r + 4], a.push(s));
            return a
        }, discardEmulationPreventionBytes: function (e) {
            for (var t, n, i = e.byteLength, r = [], s = 1; s < i - 2;) 0 === e[s] && 0 === e[s + 1] && 3 === e[s + 2] ? (r.push(s + 2), s += 2) : s++;
            if (0 === r.length) return e;
            t = i - r.length, n = new Uint8Array(t);
            var a = 0;
            for (s = 0; s < t; a++, s++) a === r[0] && (a++, r.shift()), n[s] = e[a];
            return n
        }, USER_DATA_REGISTERED_ITU_T_T35: 4
    }
}, function (e, t, n) {
    "use strict";
    var i = function () {
        this.init = function () {
            var e = {};
            this.on = function (t, n) {
                e[t] || (e[t] = []), e[t] = e[t].concat(n)
            }, this.off = function (t, n) {
                var i;
                return !!e[t] && (i = e[t].indexOf(n), e[t] = e[t].slice(), e[t].splice(i, 1), i > -1)
            }, this.trigger = function (t) {
                var n, i, r, s;
                if (n = e[t]) if (2 === arguments.length) for (r = n.length, i = 0; i < r; ++i) n[i].call(this, arguments[1]); else {
                    for (s = [], i = arguments.length, i = 1; i < arguments.length; ++i) s.push(arguments[i]);
                    for (r = n.length, i = 0; i < r; ++i) n[i].apply(this, s)
                }
            }, this.dispose = function () {
                e = {}
            }
        }
    };
    i.prototype.pipe = function (e) {
        return this.on("data", (function (t) {
            e.push(t)
        })), this.on("done", (function (t) {
            e.flush(t)
        })), this.on("partialdone", (function (t) {
            e.partialFlush(t)
        })), this.on("endedtimeline", (function (t) {
            e.endTimeline(t)
        })), this.on("reset", (function (t) {
            e.reset(t)
        })), e
    }, i.prototype.push = function (e) {
        this.trigger("data", e)
    }, i.prototype.flush = function (e) {
        this.trigger("done", e)
    }, i.prototype.partialFlush = function (e) {
        this.trigger("partialdone", e)
    }, i.prototype.endTimeline = function (e) {
        this.trigger("endedtimeline", e)
    }, i.prototype.reset = function (e) {
        this.trigger("reset", e)
    }, e.exports = i
}, function (e, t, n) {
    "use strict";
    e.exports = {H264_STREAM_TYPE: 27, ADTS_STREAM_TYPE: 15, METADATA_STREAM_TYPE: 21}
}, function (e, t) {
    e.exports = function (e, t) {
        var n, i = null;
        try {
            n = JSON.parse(e, t)
        } catch (e) {
            i = e
        }
        return [i, n]
    }
}, function (e, t, n) {
    var i = n(15), r = n(40);

    function s(t, n, a) {
        return r() ? e.exports = s = Reflect.construct : e.exports = s = function (e, t, n) {
            var r = [null];
            r.push.apply(r, t);
            var s = new (Function.bind.apply(e, r));
            return n && i(s, n.prototype), s
        }, s.apply(null, arguments)
    }

    e.exports = s
}, function (e, t, n) {
    var i = n(15);
    e.exports = function (e, t) {
        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
        e.prototype = Object.create(t && t.prototype, {constructor: {value: e, writable: !0, configurable: !0}}), t && i(e, t)
    }
}, function (e, t, n) {
    "use strict";
    (function (t) {
        var i, r = (i = n(0)) && "object" == typeof i && "default" in i ? i.default : i, s = function (e) {
            return r.atob ? r.atob(e) : t.from(e, "base64").toString("binary")
        };
        e.exports = function (e) {
            for (var t = s(e), n = new Uint8Array(t.length), i = 0; i < t.length; i++) n[i] = t.charCodeAt(i);
            return n
        }
    }).call(this, n(41).Buffer)
}, function (e, t, n) {
    function i(e) {
        this.options = e || {locator: {}}
    }

    function r() {
        this.cdata = !1
    }

    function s(e, t) {
        t.lineNumber = e.lineNumber, t.columnNumber = e.columnNumber
    }

    function a(e) {
        if (e) return "\n@" + (e.systemId || "") + "#[line:" + e.lineNumber + ",col:" + e.columnNumber + "]"
    }

    function o(e, t, n) {
        return "string" == typeof e ? e.substr(t, n) : e.length >= t + n || t ? new java.lang.String(e, t, n) + "" : e
    }

    function l(e, t) {
        e.currentElement ? e.currentElement.appendChild(t) : e.doc.appendChild(t)
    }

    i.prototype.parseFromString = function (e, t) {
        var n = this.options, i = new u, s = n.domBuilder || new r, o = n.errorHandler, l = n.locator, c = n.xmlns || {}, h = {lt: "<", gt: ">", amp: "&", quot: '"', apos: "'"};
        return l && s.setDocumentLocator(l), i.errorHandler = function (e, t, n) {
            if (!e) {
                if (t instanceof r) return t;
                e = t
            }
            var i = {}, s = e instanceof Function;

            function o(t) {
                var r = e[t];
                !r && s && (r = 2 == e.length ? function (n) {
                    e(t, n)
                } : e), i[t] = r && function (e) {
                    r("[xmldom " + t + "]\t" + e + a(n))
                } || function () {
                }
            }

            return n = n || {}, o("warning"), o("error"), o("fatalError"), i
        }(o, s, l), i.domBuilder = n.domBuilder || s, /\/x?html?$/.test(t) && (h.nbsp = " ", h.copy = "©", c[""] = "http://www.w3.org/1999/xhtml"), c.xml = c.xml || "http://www.w3.org/XML/1998/namespace", e ? i.parse(e, c, h) : i.errorHandler.error("invalid doc source"), s.doc
    }, r.prototype = {
        startDocument: function () {
            this.doc = (new c).createDocument(null, null, null), this.locator && (this.doc.documentURI = this.locator.systemId)
        }, startElement: function (e, t, n, i) {
            var r = this.doc, a = r.createElementNS(e, n || t), o = i.length;
            l(this, a), this.currentElement = a, this.locator && s(this.locator, a);
            for (var u = 0; u < o; u++) {
                e = i.getURI(u);
                var c = i.getValue(u), h = (n = i.getQName(u), r.createAttributeNS(e, n));
                this.locator && s(i.getLocator(u), h), h.value = h.nodeValue = c, a.setAttributeNode(h)
            }
        }, endElement: function (e, t, n) {
            var i = this.currentElement;
            i.tagName;
            this.currentElement = i.parentNode
        }, startPrefixMapping: function (e, t) {
        }, endPrefixMapping: function (e) {
        }, processingInstruction: function (e, t) {
            var n = this.doc.createProcessingInstruction(e, t);
            this.locator && s(this.locator, n), l(this, n)
        }, ignorableWhitespace: function (e, t, n) {
        }, characters: function (e, t, n) {
            if (e = o.apply(this, arguments)) {
                if (this.cdata) var i = this.doc.createCDATASection(e); else i = this.doc.createTextNode(e);
                this.currentElement ? this.currentElement.appendChild(i) : /^\s*$/.test(e) && this.doc.appendChild(i), this.locator && s(this.locator, i)
            }
        }, skippedEntity: function (e) {
        }, endDocument: function () {
            this.doc.normalize()
        }, setDocumentLocator: function (e) {
            (this.locator = e) && (e.lineNumber = 0)
        }, comment: function (e, t, n) {
            e = o.apply(this, arguments);
            var i = this.doc.createComment(e);
            this.locator && s(this.locator, i), l(this, i)
        }, startCDATA: function () {
            this.cdata = !0
        }, endCDATA: function () {
            this.cdata = !1
        }, startDTD: function (e, t, n) {
            var i = this.doc.implementation;
            if (i && i.createDocumentType) {
                var r = i.createDocumentType(e, t, n);
                this.locator && s(this.locator, r), l(this, r)
            }
        }, warning: function (e) {
            console.warn("[xmldom warning]\t" + e, a(this.locator))
        }, error: function (e) {
            console.error("[xmldom error]\t" + e, a(this.locator))
        }, fatalError: function (e) {
            throw console.error("[xmldom fatalError]\t" + e, a(this.locator)), e
        }
    }, "endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g, (function (e) {
        r.prototype[e] = function () {
            return null
        }
    }));
    var u = n(45).XMLReader, c = t.DOMImplementation = n(16).DOMImplementation;
    t.XMLSerializer = n(16).XMLSerializer, t.DOMParser = i
}, function (e, t, n) {
    "use strict";
    var i = n(17).discardEmulationPreventionBytes, r = n(46).CaptionStream, s = n(5), a = n(7), o = function (e, t) {
        for (var n = e, i = 0; i < t.length; i++) {
            var r = t[i];
            if (n < r.size) return r;
            n -= r.size
        }
        return null
    }, l = function (e, t) {
        var n = s.findBox(e, ["moof", "traf"]), r = s.findBox(e, ["mdat"]), l = {}, u = [];
        return r.forEach((function (e, t) {
            var i = n[t];
            u.push({mdat: e, traf: i})
        })), u.forEach((function (e) {
            var n, r = e.mdat, u = e.traf, c = s.findBox(u, ["tfhd"]), h = a.parseTfhd(c[0]), d = h.trackId, f = s.findBox(u, ["tfdt"]), p = f.length > 0 ? a.parseTfdt(f[0]).baseMediaDecodeTime : 0, m = s.findBox(u, ["trun"]);
            t === d && m.length > 0 && (n = function (e, t, n) {
                var r, s, a, l, u = new DataView(e.buffer, e.byteOffset, e.byteLength), c = [];
                for (s = 0; s + 4 < e.length; s += a) if (a = u.getUint32(s), s += 4, !(a <= 0)) switch (31 & e[s]) {
                    case 6:
                        var h = e.subarray(s + 1, s + 1 + a), d = o(s, t);
                        r = {nalUnitType: "sei_rbsp", size: a, data: h, escapedRBSP: i(h), trackId: n}, d ? (r.pts = d.pts, r.dts = d.dts, l = d) : (r.pts = l.pts, r.dts = l.dts), c.push(r)
                }
                return c
            }(r, function (e, t, n) {
                var i = t, r = n.defaultSampleDuration || 0, s = n.defaultSampleSize || 0, o = n.trackId, l = [];
                return e.forEach((function (e) {
                    var t = a.parseTrun(e).samples;
                    t.forEach((function (e) {
                        void 0 === e.duration && (e.duration = r), void 0 === e.size && (e.size = s), e.trackId = o, e.dts = i, void 0 === e.compositionTimeOffset && (e.compositionTimeOffset = 0), e.pts = i + e.compositionTimeOffset, i += e.duration
                    })), l = l.concat(t)
                })), l
            }(m, p, h), d), l[d] || (l[d] = []), l[d] = l[d].concat(n))
        })), l
    };
    e.exports = function () {
        var e, t, n, i, s, a, o = !1;
        this.isInitialized = function () {
            return o
        }, this.init = function (t) {
            e = new r, o = !0, a = !!t && t.isPartial, e.on("data", (function (e) {
                e.startTime = e.startPts / i, e.endTime = e.endPts / i, s.captions.push(e), s.captionStreams[e.stream] = !0
            }))
        }, this.isNewInit = function (e, t) {
            return !(e && 0 === e.length || t && "object" == typeof t && 0 === Object.keys(t).length) && (n !== e[0] || i !== t[n])
        }, this.parse = function (e, r, a) {
            var o;
            if (!this.isInitialized()) return null;
            if (!r || !a) return null;
            if (this.isNewInit(r, a)) n = r[0], i = a[n]; else if (null === n || !i) return t.push(e), null;
            for (; t.length > 0;) {
                var u = t.shift();
                this.parse(u, r, a)
            }
            return null !== (o = function (e, t, n) {
                return null === t ? null : {seiNals: l(e, t)[t], timescale: n}
            }(e, n, i)) && o.seiNals ? (this.pushNals(o.seiNals), this.flushStream(), s) : null
        }, this.pushNals = function (t) {
            if (!this.isInitialized() || !t || 0 === t.length) return null;
            t.forEach((function (t) {
                e.push(t)
            }))
        }, this.flushStream = function () {
            if (!this.isInitialized()) return null;
            a ? e.partialFlush() : e.flush()
        }, this.clearParsedCaptions = function () {
            s.captions = [], s.captionStreams = {}
        }, this.resetCaptionStream = function () {
            if (!this.isInitialized()) return null;
            e.reset()
        }, this.clearAllCaptions = function () {
            this.clearParsedCaptions(), this.resetCaptionStream()
        }, this.reset = function () {
            t = [], n = null, i = null, s ? this.clearParsedCaptions() : s = {captions: [], captionStreams: {}}, this.resetCaptionStream()
        }, this.reset()
    }
}, function (e, t, n) {
    "use strict";
    var i = n(19), r = n(47).handleRollover, s = {};
    s.ts = n(48), s.aac = n(49);
    var a = n(50).ONE_SECOND_IN_TS, o = function (e, t, n) {
        for (var i, r, a, o, l = 0, u = 188, c = !1; u <= e.byteLength;) if (71 !== e[l] || 71 !== e[u] && u !== e.byteLength) l++, u++; else {
            switch (i = e.subarray(l, u), s.ts.parseType(i, t.pid)) {
                case"pes":
                    r = s.ts.parsePesType(i, t.table), a = s.ts.parsePayloadUnitStartIndicator(i), "audio" === r && a && (o = s.ts.parsePesTime(i)) && (o.type = "audio", n.audio.push(o), c = !0)
            }
            if (c) break;
            l += 188, u += 188
        }
        for (l = (u = e.byteLength) - 188, c = !1; l >= 0;) if (71 !== e[l] || 71 !== e[u] && u !== e.byteLength) l--, u--; else {
            switch (i = e.subarray(l, u), s.ts.parseType(i, t.pid)) {
                case"pes":
                    r = s.ts.parsePesType(i, t.table), a = s.ts.parsePayloadUnitStartIndicator(i), "audio" === r && a && (o = s.ts.parsePesTime(i)) && (o.type = "audio", n.audio.push(o), c = !0)
            }
            if (c) break;
            l -= 188, u -= 188
        }
    }, l = function (e, t, n) {
        for (var i, r, a, o, l, u, c, h = 0, d = 188, f = !1, p = {data: [], size: 0}; d < e.byteLength;) if (71 !== e[h] || 71 !== e[d]) h++, d++; else {
            switch (i = e.subarray(h, d), s.ts.parseType(i, t.pid)) {
                case"pes":
                    if (r = s.ts.parsePesType(i, t.table), a = s.ts.parsePayloadUnitStartIndicator(i), "video" === r && (a && !f && (o = s.ts.parsePesTime(i)) && (o.type = "video", n.video.push(o), f = !0), !n.firstKeyFrame)) {
                        if (a && 0 !== p.size) {
                            for (l = new Uint8Array(p.size), u = 0; p.data.length;) c = p.data.shift(), l.set(c, u), u += c.byteLength;
                            if (s.ts.videoPacketContainsKeyFrame(l)) {
                                var m = s.ts.parsePesTime(l);
                                m ? (n.firstKeyFrame = m, n.firstKeyFrame.type = "video") : console.warn("Failed to extract PTS/DTS from PES at first keyframe. This could be an unusual TS segment, or else mux.js did not parse your TS segment correctly. If you know your TS segments do contain PTS/DTS on keyframes please file a bug report! You can try ffprobe to double check for yourself.")
                            }
                            p.size = 0
                        }
                        p.data.push(i), p.size += i.byteLength
                    }
            }
            if (f && n.firstKeyFrame) break;
            h += 188, d += 188
        }
        for (h = (d = e.byteLength) - 188, f = !1; h >= 0;) if (71 !== e[h] || 71 !== e[d]) h--, d--; else {
            switch (i = e.subarray(h, d), s.ts.parseType(i, t.pid)) {
                case"pes":
                    r = s.ts.parsePesType(i, t.table), a = s.ts.parsePayloadUnitStartIndicator(i), "video" === r && a && (o = s.ts.parsePesTime(i)) && (o.type = "video", n.video.push(o), f = !0)
            }
            if (f) break;
            h -= 188, d -= 188
        }
    }, u = function (e) {
        var t = {pid: null, table: null}, n = {};
        for (var r in function (e, t) {
            for (var n, i = 0, r = 188; r < e.byteLength;) if (71 !== e[i] || 71 !== e[r]) i++, r++; else {
                switch (n = e.subarray(i, r), s.ts.parseType(n, t.pid)) {
                    case"pat":
                        t.pid || (t.pid = s.ts.parsePat(n));
                        break;
                    case"pmt":
                        t.table || (t.table = s.ts.parsePmt(n))
                }
                if (t.pid && t.table) return;
                i += 188, r += 188
            }
        }(e, t), t.table) {
            if (t.table.hasOwnProperty(r)) switch (t.table[r]) {
                case i.H264_STREAM_TYPE:
                    n.video = [], l(e, t, n), 0 === n.video.length && delete n.video;
                    break;
                case i.ADTS_STREAM_TYPE:
                    n.audio = [], o(e, t, n), 0 === n.audio.length && delete n.audio
            }
        }
        return n
    };
    e.exports = {
        inspect: function (e, t) {
            var n;
            return (n = s.aac.isLikelyAacData(e) ? function (e) {
                for (var t, n = !1, i = 0, r = null, o = null, l = 0, u = 0; e.length - u >= 3;) {
                    switch (s.aac.parseType(e, u)) {
                        case"timed-metadata":
                            if (e.length - u < 10) {
                                n = !0;
                                break
                            }
                            if ((l = s.aac.parseId3TagSize(e, u)) > e.length) {
                                n = !0;
                                break
                            }
                            null === o && (t = e.subarray(u, u + l), o = s.aac.parseAacTimestamp(t)), u += l;
                            break;
                        case"audio":
                            if (e.length - u < 7) {
                                n = !0;
                                break
                            }
                            if ((l = s.aac.parseAdtsSize(e, u)) > e.length) {
                                n = !0;
                                break
                            }
                            null === r && (t = e.subarray(u, u + l), r = s.aac.parseSampleRate(t)), i++, u += l;
                            break;
                        default:
                            u++
                    }
                    if (n) return null
                }
                if (null === r || null === o) return null;
                var c = a / r;
                return {audio: [{type: "audio", dts: o, pts: o}, {type: "audio", dts: o + 1024 * i * c, pts: o + 1024 * i * c}]}
            }(e) : u(e)) && (n.audio || n.video) ? (function (e, t) {
                if (e.audio && e.audio.length) {
                    var n = t;
                    void 0 === n && (n = e.audio[0].dts), e.audio.forEach((function (e) {
                        e.dts = r(e.dts, n), e.pts = r(e.pts, n), e.dtsTime = e.dts / a, e.ptsTime = e.pts / a
                    }))
                }
                if (e.video && e.video.length) {
                    var i = t;
                    if (void 0 === i && (i = e.video[0].dts), e.video.forEach((function (e) {
                        e.dts = r(e.dts, i), e.pts = r(e.pts, i), e.dtsTime = e.dts / a, e.ptsTime = e.pts / a
                    })), e.firstKeyFrame) {
                        var s = e.firstKeyFrame;
                        s.dts = r(s.dts, i), s.pts = r(s.pts, i), s.dtsTime = s.dts / a, s.ptsTime = s.dts / a
                    }
                }
            }(n, t), n) : null
        }, parseAudioPes_: o
    }
}, function (e, t, n) {
    n(53), e.exports = n(54)
}, function (e, t, n) {
    !function (e, t, n) {
        "use strict";

        function i(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        function r(e, t, n) {
            return t && i(e.prototype, t), n && i(e, n), e
        }

        function s() {
            return (s = Object.assign || function (e) {
                for (var t = 1; t < arguments.length; t++) {
                    var n = arguments[t];
                    for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i])
                }
                return e
            }).apply(this, arguments)
        }

        t = t && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t, n = n && Object.prototype.hasOwnProperty.call(n, "default") ? n.default : n;
        var a = "transitionend";

        function o(e) {
            var n = this, i = !1;
            return t(this).one(l.TRANSITION_END, (function () {
                i = !0
            })), setTimeout((function () {
                i || l.triggerTransitionEnd(n)
            }), e), this
        }

        var l = {
            TRANSITION_END: "bsTransitionEnd", getUID: function (e) {
                do {
                    e += ~~(1e6 * Math.random())
                } while (document.getElementById(e));
                return e
            }, getSelectorFromElement: function (e) {
                var t = e.getAttribute("data-target");
                if (!t || "#" === t) {
                    var n = e.getAttribute("href");
                    t = n && "#" !== n ? n.trim() : ""
                }
                try {
                    return document.querySelector(t) ? t : null
                } catch (e) {
                    return null
                }
            }, getTransitionDurationFromElement: function (e) {
                if (!e) return 0;
                var n = t(e).css("transition-duration"), i = t(e).css("transition-delay"), r = parseFloat(n), s = parseFloat(i);
                return r || s ? (n = n.split(",")[0], i = i.split(",")[0], 1e3 * (parseFloat(n) + parseFloat(i))) : 0
            }, reflow: function (e) {
                return e.offsetHeight
            }, triggerTransitionEnd: function (e) {
                t(e).trigger(a)
            }, supportsTransitionEnd: function () {
                return Boolean(a)
            }, isElement: function (e) {
                return (e[0] || e).nodeType
            }, typeCheckConfig: function (e, t, n) {
                for (var i in n) if (Object.prototype.hasOwnProperty.call(n, i)) {
                    var r = n[i], s = t[i], a = s && l.isElement(s) ? "element" : null == (o = s) ? "" + o : {}.toString.call(o).match(/\s([a-z]+)/i)[1].toLowerCase();
                    if (!new RegExp(r).test(a)) throw new Error(e.toUpperCase() + ': Option "' + i + '" provided type "' + a + '" but expected type "' + r + '".')
                }
                var o
            }, findShadowRoot: function (e) {
                if (!document.documentElement.attachShadow) return null;
                if ("function" == typeof e.getRootNode) {
                    var t = e.getRootNode();
                    return t instanceof ShadowRoot ? t : null
                }
                return e instanceof ShadowRoot ? e : e.parentNode ? l.findShadowRoot(e.parentNode) : null
            }, jQueryDetection: function () {
                if (void 0 === t) throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");
                var e = t.fn.jquery.split(" ")[0].split(".");
                if (e[0] < 2 && e[1] < 9 || 1 === e[0] && 9 === e[1] && e[2] < 1 || e[0] >= 4) throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")
            }
        };
        l.jQueryDetection(), t.fn.emulateTransitionEnd = o, t.event.special[l.TRANSITION_END] = {
            bindType: a, delegateType: a, handle: function (e) {
                if (t(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
            }
        };
        var u = t.fn.alert, c = function () {
            function e(e) {
                this._element = e
            }

            var n = e.prototype;
            return n.close = function (e) {
                var t = this._element;
                e && (t = this._getRootElement(e)), this._triggerCloseEvent(t).isDefaultPrevented() || this._removeElement(t)
            }, n.dispose = function () {
                t.removeData(this._element, "bs.alert"), this._element = null
            }, n._getRootElement = function (e) {
                var n = l.getSelectorFromElement(e), i = !1;
                return n && (i = document.querySelector(n)), i || (i = t(e).closest(".alert")[0]), i
            }, n._triggerCloseEvent = function (e) {
                var n = t.Event("close.bs.alert");
                return t(e).trigger(n), n
            }, n._removeElement = function (e) {
                var n = this;
                if (t(e).removeClass("show"), t(e).hasClass("fade")) {
                    var i = l.getTransitionDurationFromElement(e);
                    t(e).one(l.TRANSITION_END, (function (t) {
                        return n._destroyElement(e, t)
                    })).emulateTransitionEnd(i)
                } else this._destroyElement(e)
            }, n._destroyElement = function (e) {
                t(e).detach().trigger("closed.bs.alert").remove()
            }, e._jQueryInterface = function (n) {
                return this.each((function () {
                    var i = t(this), r = i.data("bs.alert");
                    r || (r = new e(this), i.data("bs.alert", r)), "close" === n && r[n](this)
                }))
            }, e._handleDismiss = function (e) {
                return function (t) {
                    t && t.preventDefault(), e.close(this)
                }
            }, r(e, null, [{
                key: "VERSION", get: function () {
                    return "4.5.2"
                }
            }]), e
        }();
        t(document).on("click.bs.alert.data-api", '[data-dismiss="alert"]', c._handleDismiss(new c)), t.fn.alert = c._jQueryInterface, t.fn.alert.Constructor = c, t.fn.alert.noConflict = function () {
            return t.fn.alert = u, c._jQueryInterface
        };
        var h = t.fn.button, d = function () {
            function e(e) {
                this._element = e
            }

            var n = e.prototype;
            return n.toggle = function () {
                var e = !0, n = !0, i = t(this._element).closest('[data-toggle="buttons"]')[0];
                if (i) {
                    var r = this._element.querySelector('input:not([type="hidden"])');
                    if (r) {
                        if ("radio" === r.type) if (r.checked && this._element.classList.contains("active")) e = !1; else {
                            var s = i.querySelector(".active");
                            s && t(s).removeClass("active")
                        }
                        e && ("checkbox" !== r.type && "radio" !== r.type || (r.checked = !this._element.classList.contains("active")), t(r).trigger("change")), r.focus(), n = !1
                    }
                }
                this._element.hasAttribute("disabled") || this._element.classList.contains("disabled") || (n && this._element.setAttribute("aria-pressed", !this._element.classList.contains("active")), e && t(this._element).toggleClass("active"))
            }, n.dispose = function () {
                t.removeData(this._element, "bs.button"), this._element = null
            }, e._jQueryInterface = function (n) {
                return this.each((function () {
                    var i = t(this).data("bs.button");
                    i || (i = new e(this), t(this).data("bs.button", i)), "toggle" === n && i[n]()
                }))
            }, r(e, null, [{
                key: "VERSION", get: function () {
                    return "4.5.2"
                }
            }]), e
        }();
        t(document).on("click.bs.button.data-api", '[data-toggle^="button"]', (function (e) {
            var n = e.target, i = n;
            if (t(n).hasClass("btn") || (n = t(n).closest(".btn")[0]), !n || n.hasAttribute("disabled") || n.classList.contains("disabled")) e.preventDefault(); else {
                var r = n.querySelector('input:not([type="hidden"])');
                if (r && (r.hasAttribute("disabled") || r.classList.contains("disabled"))) return void e.preventDefault();
                ("LABEL" !== i.tagName || r && "checkbox" !== r.type) && d._jQueryInterface.call(t(n), "toggle")
            }
        })).on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', (function (e) {
            var n = t(e.target).closest(".btn")[0];
            t(n).toggleClass("focus", /^focus(in)?$/.test(e.type))
        })), t(window).on("load.bs.button.data-api", (function () {
            for (var e = [].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')), t = 0, n = e.length; t < n; t++) {
                var i = e[t], r = i.querySelector('input:not([type="hidden"])');
                r.checked || r.hasAttribute("checked") ? i.classList.add("active") : i.classList.remove("active")
            }
            for (var s = 0, a = (e = [].slice.call(document.querySelectorAll('[data-toggle="button"]'))).length; s < a; s++) {
                var o = e[s];
                "true" === o.getAttribute("aria-pressed") ? o.classList.add("active") : o.classList.remove("active")
            }
        })), t.fn.button = d._jQueryInterface, t.fn.button.Constructor = d, t.fn.button.noConflict = function () {
            return t.fn.button = h, d._jQueryInterface
        };
        var f = "carousel", p = ".bs.carousel", m = t.fn[f], g = {interval: 5e3, keyboard: !0, slide: !1, pause: "hover", wrap: !0, touch: !0}, v = {interval: "(number|boolean)", keyboard: "boolean", slide: "(boolean|string)", pause: "(string|boolean)", wrap: "boolean", touch: "boolean"}, y = ".carousel-indicators", _ = {TOUCH: "touch", PEN: "pen"}, b = function () {
            function e(e, t) {
                this._items = null, this._interval = null, this._activeElement = null, this._isPaused = !1, this._isSliding = !1, this.touchTimeout = null, this.touchStartX = 0, this.touchDeltaX = 0, this._config = this._getConfig(t), this._element = e, this._indicatorsElement = this._element.querySelector(y), this._touchSupported = "ontouchstart" in document.documentElement || navigator.maxTouchPoints > 0, this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent), this._addEventListeners()
            }

            var n = e.prototype;
            return n.next = function () {
                this._isSliding || this._slide("next")
            }, n.nextWhenVisible = function () {
                !document.hidden && t(this._element).is(":visible") && "hidden" !== t(this._element).css("visibility") && this.next()
            }, n.prev = function () {
                this._isSliding || this._slide("prev")
            }, n.pause = function (e) {
                e || (this._isPaused = !0), this._element.querySelector(".carousel-item-next, .carousel-item-prev") && (l.triggerTransitionEnd(this._element), this.cycle(!0)), clearInterval(this._interval), this._interval = null
            }, n.cycle = function (e) {
                e || (this._isPaused = !1), this._interval && (clearInterval(this._interval), this._interval = null), this._config.interval && !this._isPaused && (this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval))
            }, n.to = function (e) {
                var n = this;
                this._activeElement = this._element.querySelector(".active.carousel-item");
                var i = this._getItemIndex(this._activeElement);
                if (!(e > this._items.length - 1 || e < 0)) if (this._isSliding) t(this._element).one("slid.bs.carousel", (function () {
                    return n.to(e)
                })); else {
                    if (i === e) return this.pause(), void this.cycle();
                    var r = e > i ? "next" : "prev";
                    this._slide(r, this._items[e])
                }
            }, n.dispose = function () {
                t(this._element).off(p), t.removeData(this._element, "bs.carousel"), this._items = null, this._config = null, this._element = null, this._interval = null, this._isPaused = null, this._isSliding = null, this._activeElement = null, this._indicatorsElement = null
            }, n._getConfig = function (e) {
                return e = s({}, g, e), l.typeCheckConfig(f, e, v), e
            }, n._handleSwipe = function () {
                var e = Math.abs(this.touchDeltaX);
                if (!(e <= 40)) {
                    var t = e / this.touchDeltaX;
                    this.touchDeltaX = 0, t > 0 && this.prev(), t < 0 && this.next()
                }
            }, n._addEventListeners = function () {
                var e = this;
                this._config.keyboard && t(this._element).on("keydown.bs.carousel", (function (t) {
                    return e._keydown(t)
                })), "hover" === this._config.pause && t(this._element).on("mouseenter.bs.carousel", (function (t) {
                    return e.pause(t)
                })).on("mouseleave.bs.carousel", (function (t) {
                    return e.cycle(t)
                })), this._config.touch && this._addTouchEventListeners()
            }, n._addTouchEventListeners = function () {
                var e = this;
                if (this._touchSupported) {
                    var n = function (t) {
                        e._pointerEvent && _[t.originalEvent.pointerType.toUpperCase()] ? e.touchStartX = t.originalEvent.clientX : e._pointerEvent || (e.touchStartX = t.originalEvent.touches[0].clientX)
                    }, i = function (t) {
                        e._pointerEvent && _[t.originalEvent.pointerType.toUpperCase()] && (e.touchDeltaX = t.originalEvent.clientX - e.touchStartX), e._handleSwipe(), "hover" === e._config.pause && (e.pause(), e.touchTimeout && clearTimeout(e.touchTimeout), e.touchTimeout = setTimeout((function (t) {
                            return e.cycle(t)
                        }), 500 + e._config.interval))
                    };
                    t(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel", (function (e) {
                        return e.preventDefault()
                    })), this._pointerEvent ? (t(this._element).on("pointerdown.bs.carousel", (function (e) {
                        return n(e)
                    })), t(this._element).on("pointerup.bs.carousel", (function (e) {
                        return i(e)
                    })), this._element.classList.add("pointer-event")) : (t(this._element).on("touchstart.bs.carousel", (function (e) {
                        return n(e)
                    })), t(this._element).on("touchmove.bs.carousel", (function (t) {
                        return function (t) {
                            t.originalEvent.touches && t.originalEvent.touches.length > 1 ? e.touchDeltaX = 0 : e.touchDeltaX = t.originalEvent.touches[0].clientX - e.touchStartX
                        }(t)
                    })), t(this._element).on("touchend.bs.carousel", (function (e) {
                        return i(e)
                    })))
                }
            }, n._keydown = function (e) {
                if (!/input|textarea/i.test(e.target.tagName)) switch (e.which) {
                    case 37:
                        e.preventDefault(), this.prev();
                        break;
                    case 39:
                        e.preventDefault(), this.next()
                }
            }, n._getItemIndex = function (e) {
                return this._items = e && e.parentNode ? [].slice.call(e.parentNode.querySelectorAll(".carousel-item")) : [], this._items.indexOf(e)
            }, n._getItemByDirection = function (e, t) {
                var n = "next" === e, i = "prev" === e, r = this._getItemIndex(t), s = this._items.length - 1;
                if ((i && 0 === r || n && r === s) && !this._config.wrap) return t;
                var a = (r + ("prev" === e ? -1 : 1)) % this._items.length;
                return -1 === a ? this._items[this._items.length - 1] : this._items[a]
            }, n._triggerSlideEvent = function (e, n) {
                var i = this._getItemIndex(e), r = this._getItemIndex(this._element.querySelector(".active.carousel-item")), s = t.Event("slide.bs.carousel", {relatedTarget: e, direction: n, from: r, to: i});
                return t(this._element).trigger(s), s
            }, n._setActiveIndicatorElement = function (e) {
                if (this._indicatorsElement) {
                    var n = [].slice.call(this._indicatorsElement.querySelectorAll(".active"));
                    t(n).removeClass("active");
                    var i = this._indicatorsElement.children[this._getItemIndex(e)];
                    i && t(i).addClass("active")
                }
            }, n._slide = function (e, n) {
                var i, r, s, a = this, o = this._element.querySelector(".active.carousel-item"), u = this._getItemIndex(o), c = n || o && this._getItemByDirection(e, o), h = this._getItemIndex(c), d = Boolean(this._interval);
                if ("next" === e ? (i = "carousel-item-left", r = "carousel-item-next", s = "left") : (i = "carousel-item-right", r = "carousel-item-prev", s = "right"), c && t(c).hasClass("active")) this._isSliding = !1; else if (!this._triggerSlideEvent(c, s).isDefaultPrevented() && o && c) {
                    this._isSliding = !0, d && this.pause(), this._setActiveIndicatorElement(c);
                    var f = t.Event("slid.bs.carousel", {relatedTarget: c, direction: s, from: u, to: h});
                    if (t(this._element).hasClass("slide")) {
                        t(c).addClass(r), l.reflow(c), t(o).addClass(i), t(c).addClass(i);
                        var p = parseInt(c.getAttribute("data-interval"), 10);
                        p ? (this._config.defaultInterval = this._config.defaultInterval || this._config.interval, this._config.interval = p) : this._config.interval = this._config.defaultInterval || this._config.interval;
                        var m = l.getTransitionDurationFromElement(o);
                        t(o).one(l.TRANSITION_END, (function () {
                            t(c).removeClass(i + " " + r).addClass("active"), t(o).removeClass("active " + r + " " + i), a._isSliding = !1, setTimeout((function () {
                                return t(a._element).trigger(f)
                            }), 0)
                        })).emulateTransitionEnd(m)
                    } else t(o).removeClass("active"), t(c).addClass("active"), this._isSliding = !1, t(this._element).trigger(f);
                    d && this.cycle()
                }
            }, e._jQueryInterface = function (n) {
                return this.each((function () {
                    var i = t(this).data("bs.carousel"), r = s({}, g, t(this).data());
                    "object" == typeof n && (r = s({}, r, n));
                    var a = "string" == typeof n ? n : r.slide;
                    if (i || (i = new e(this, r), t(this).data("bs.carousel", i)), "number" == typeof n) i.to(n); else if ("string" == typeof a) {
                        if (void 0 === i[a]) throw new TypeError('No method named "' + a + '"');
                        i[a]()
                    } else r.interval && r.ride && (i.pause(), i.cycle())
                }))
            }, e._dataApiClickHandler = function (n) {
                var i = l.getSelectorFromElement(this);
                if (i) {
                    var r = t(i)[0];
                    if (r && t(r).hasClass("carousel")) {
                        var a = s({}, t(r).data(), t(this).data()), o = this.getAttribute("data-slide-to");
                        o && (a.interval = !1), e._jQueryInterface.call(t(r), a), o && t(r).data("bs.carousel").to(o), n.preventDefault()
                    }
                }
            }, r(e, null, [{
                key: "VERSION", get: function () {
                    return "4.5.2"
                }
            }, {
                key: "Default", get: function () {
                    return g
                }
            }]), e
        }();
        t(document).on("click.bs.carousel.data-api", "[data-slide], [data-slide-to]", b._dataApiClickHandler), t(window).on("load.bs.carousel.data-api", (function () {
            for (var e = [].slice.call(document.querySelectorAll('[data-ride="carousel"]')), n = 0, i = e.length; n < i; n++) {
                var r = t(e[n]);
                b._jQueryInterface.call(r, r.data())
            }
        })), t.fn[f] = b._jQueryInterface, t.fn[f].Constructor = b, t.fn[f].noConflict = function () {
            return t.fn[f] = m, b._jQueryInterface
        };
        var T = "collapse", w = t.fn[T], S = {toggle: !0, parent: ""}, E = {toggle: "boolean", parent: "(string|element)"}, C = '[data-toggle="collapse"]', k = function () {
            function e(e, t) {
                this._isTransitioning = !1, this._element = e, this._config = this._getConfig(t), this._triggerArray = [].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#' + e.id + '"],[data-toggle="collapse"][data-target="#' + e.id + '"]'));
                for (var n = [].slice.call(document.querySelectorAll(C)), i = 0, r = n.length; i < r; i++) {
                    var s = n[i], a = l.getSelectorFromElement(s), o = [].slice.call(document.querySelectorAll(a)).filter((function (t) {
                        return t === e
                    }));
                    null !== a && o.length > 0 && (this._selector = a, this._triggerArray.push(s))
                }
                this._parent = this._config.parent ? this._getParent() : null, this._config.parent || this._addAriaAndCollapsedClass(this._element, this._triggerArray), this._config.toggle && this.toggle()
            }

            var n = e.prototype;
            return n.toggle = function () {
                t(this._element).hasClass("show") ? this.hide() : this.show()
            }, n.show = function () {
                var n, i, r = this;
                if (!(this._isTransitioning || t(this._element).hasClass("show") || (this._parent && 0 === (n = [].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function (e) {
                    return "string" == typeof r._config.parent ? e.getAttribute("data-parent") === r._config.parent : e.classList.contains("collapse")
                }))).length && (n = null), n && (i = t(n).not(this._selector).data("bs.collapse")) && i._isTransitioning))) {
                    var s = t.Event("show.bs.collapse");
                    if (t(this._element).trigger(s), !s.isDefaultPrevented()) {
                        n && (e._jQueryInterface.call(t(n).not(this._selector), "hide"), i || t(n).data("bs.collapse", null));
                        var a = this._getDimension();
                        t(this._element).removeClass("collapse").addClass("collapsing"), this._element.style[a] = 0, this._triggerArray.length && t(this._triggerArray).removeClass("collapsed").attr("aria-expanded", !0), this.setTransitioning(!0);
                        var o = "scroll" + (a[0].toUpperCase() + a.slice(1)), u = l.getTransitionDurationFromElement(this._element);
                        t(this._element).one(l.TRANSITION_END, (function () {
                            t(r._element).removeClass("collapsing").addClass("collapse show"), r._element.style[a] = "", r.setTransitioning(!1), t(r._element).trigger("shown.bs.collapse")
                        })).emulateTransitionEnd(u), this._element.style[a] = this._element[o] + "px"
                    }
                }
            }, n.hide = function () {
                var e = this;
                if (!this._isTransitioning && t(this._element).hasClass("show")) {
                    var n = t.Event("hide.bs.collapse");
                    if (t(this._element).trigger(n), !n.isDefaultPrevented()) {
                        var i = this._getDimension();
                        this._element.style[i] = this._element.getBoundingClientRect()[i] + "px", l.reflow(this._element), t(this._element).addClass("collapsing").removeClass("collapse show");
                        var r = this._triggerArray.length;
                        if (r > 0) for (var s = 0; s < r; s++) {
                            var a = this._triggerArray[s], o = l.getSelectorFromElement(a);
                            null !== o && (t([].slice.call(document.querySelectorAll(o))).hasClass("show") || t(a).addClass("collapsed").attr("aria-expanded", !1))
                        }
                        this.setTransitioning(!0), this._element.style[i] = "";
                        var u = l.getTransitionDurationFromElement(this._element);
                        t(this._element).one(l.TRANSITION_END, (function () {
                            e.setTransitioning(!1), t(e._element).removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")
                        })).emulateTransitionEnd(u)
                    }
                }
            }, n.setTransitioning = function (e) {
                this._isTransitioning = e
            }, n.dispose = function () {
                t.removeData(this._element, "bs.collapse"), this._config = null, this._parent = null, this._element = null, this._triggerArray = null, this._isTransitioning = null
            }, n._getConfig = function (e) {
                return (e = s({}, S, e)).toggle = Boolean(e.toggle), l.typeCheckConfig(T, e, E), e
            }, n._getDimension = function () {
                return t(this._element).hasClass("width") ? "width" : "height"
            }, n._getParent = function () {
                var n, i = this;
                l.isElement(this._config.parent) ? (n = this._config.parent, void 0 !== this._config.parent.jquery && (n = this._config.parent[0])) : n = document.querySelector(this._config.parent);
                var r = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]', s = [].slice.call(n.querySelectorAll(r));
                return t(s).each((function (t, n) {
                    i._addAriaAndCollapsedClass(e._getTargetFromElement(n), [n])
                })), n
            }, n._addAriaAndCollapsedClass = function (e, n) {
                var i = t(e).hasClass("show");
                n.length && t(n).toggleClass("collapsed", !i).attr("aria-expanded", i)
            }, e._getTargetFromElement = function (e) {
                var t = l.getSelectorFromElement(e);
                return t ? document.querySelector(t) : null
            }, e._jQueryInterface = function (n) {
                return this.each((function () {
                    var i = t(this), r = i.data("bs.collapse"), a = s({}, S, i.data(), "object" == typeof n && n ? n : {});
                    if (!r && a.toggle && "string" == typeof n && /show|hide/.test(n) && (a.toggle = !1), r || (r = new e(this, a), i.data("bs.collapse", r)), "string" == typeof n) {
                        if (void 0 === r[n]) throw new TypeError('No method named "' + n + '"');
                        r[n]()
                    }
                }))
            }, r(e, null, [{
                key: "VERSION", get: function () {
                    return "4.5.2"
                }
            }, {
                key: "Default", get: function () {
                    return S
                }
            }]), e
        }();
        t(document).on("click.bs.collapse.data-api", C, (function (e) {
            "A" === e.currentTarget.tagName && e.preventDefault();
            var n = t(this), i = l.getSelectorFromElement(this), r = [].slice.call(document.querySelectorAll(i));
            t(r).each((function () {
                var e = t(this), i = e.data("bs.collapse") ? "toggle" : n.data();
                k._jQueryInterface.call(e, i)
            }))
        })), t.fn[T] = k._jQueryInterface, t.fn[T].Constructor = k, t.fn[T].noConflict = function () {
            return t.fn[T] = w, k._jQueryInterface
        };
        var x = "dropdown", A = t.fn[x], D = new RegExp("38|40|27"), I = {offset: 0, flip: !0, boundary: "scrollParent", reference: "toggle", display: "dynamic", popperConfig: null}, P = {offset: "(number|string|function)", flip: "boolean", boundary: "(string|element)", reference: "(string|element)", display: "string", popperConfig: "(null|object)"}, O = function () {
            function e(e, t) {
                this._element = e, this._popper = null, this._config = this._getConfig(t), this._menu = this._getMenuElement(), this._inNavbar = this._detectNavbar(), this._addEventListeners()
            }

            var i = e.prototype;
            return i.toggle = function () {
                if (!this._element.disabled && !t(this._element).hasClass("disabled")) {
                    var n = t(this._menu).hasClass("show");
                    e._clearMenus(), n || this.show(!0)
                }
            }, i.show = function (i) {
                if (void 0 === i && (i = !1), !(this._element.disabled || t(this._element).hasClass("disabled") || t(this._menu).hasClass("show"))) {
                    var r = {relatedTarget: this._element}, s = t.Event("show.bs.dropdown", r), a = e._getParentFromElement(this._element);
                    if (t(a).trigger(s), !s.isDefaultPrevented()) {
                        if (!this._inNavbar && i) {
                            if (void 0 === n) throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");
                            var o = this._element;
                            "parent" === this._config.reference ? o = a : l.isElement(this._config.reference) && (o = this._config.reference, void 0 !== this._config.reference.jquery && (o = this._config.reference[0])), "scrollParent" !== this._config.boundary && t(a).addClass("position-static"), this._popper = new n(o, this._menu, this._getPopperConfig())
                        }
                        "ontouchstart" in document.documentElement && 0 === t(a).closest(".navbar-nav").length && t(document.body).children().on("mouseover", null, t.noop), this._element.focus(), this._element.setAttribute("aria-expanded", !0), t(this._menu).toggleClass("show"), t(a).toggleClass("show").trigger(t.Event("shown.bs.dropdown", r))
                    }
                }
            }, i.hide = function () {
                if (!this._element.disabled && !t(this._element).hasClass("disabled") && t(this._menu).hasClass("show")) {
                    var n = {relatedTarget: this._element}, i = t.Event("hide.bs.dropdown", n), r = e._getParentFromElement(this._element);
                    t(r).trigger(i), i.isDefaultPrevented() || (this._popper && this._popper.destroy(), t(this._menu).toggleClass("show"), t(r).toggleClass("show").trigger(t.Event("hidden.bs.dropdown", n)))
                }
            }, i.dispose = function () {
                t.removeData(this._element, "bs.dropdown"), t(this._element).off(".bs.dropdown"), this._element = null, this._menu = null, null !== this._popper && (this._popper.destroy(), this._popper = null)
            }, i.update = function () {
                this._inNavbar = this._detectNavbar(), null !== this._popper && this._popper.scheduleUpdate()
            }, i._addEventListeners = function () {
                var e = this;
                t(this._element).on("click.bs.dropdown", (function (t) {
                    t.preventDefault(), t.stopPropagation(), e.toggle()
                }))
            }, i._getConfig = function (e) {
                return e = s({}, this.constructor.Default, t(this._element).data(), e), l.typeCheckConfig(x, e, this.constructor.DefaultType), e
            }, i._getMenuElement = function () {
                if (!this._menu) {
                    var t = e._getParentFromElement(this._element);
                    t && (this._menu = t.querySelector(".dropdown-menu"))
                }
                return this._menu
            }, i._getPlacement = function () {
                var e = t(this._element.parentNode), n = "bottom-start";
                return e.hasClass("dropup") ? n = t(this._menu).hasClass("dropdown-menu-right") ? "top-end" : "top-start" : e.hasClass("dropright") ? n = "right-start" : e.hasClass("dropleft") ? n = "left-start" : t(this._menu).hasClass("dropdown-menu-right") && (n = "bottom-end"), n
            }, i._detectNavbar = function () {
                return t(this._element).closest(".navbar").length > 0
            }, i._getOffset = function () {
                var e = this, t = {};
                return "function" == typeof this._config.offset ? t.fn = function (t) {
                    return t.offsets = s({}, t.offsets, e._config.offset(t.offsets, e._element) || {}), t
                } : t.offset = this._config.offset, t
            }, i._getPopperConfig = function () {
                var e = {placement: this._getPlacement(), modifiers: {offset: this._getOffset(), flip: {enabled: this._config.flip}, preventOverflow: {boundariesElement: this._config.boundary}}};
                return "static" === this._config.display && (e.modifiers.applyStyle = {enabled: !1}), s({}, e, this._config.popperConfig)
            }, e._jQueryInterface = function (n) {
                return this.each((function () {
                    var i = t(this).data("bs.dropdown");
                    if (i || (i = new e(this, "object" == typeof n ? n : null), t(this).data("bs.dropdown", i)), "string" == typeof n) {
                        if (void 0 === i[n]) throw new TypeError('No method named "' + n + '"');
                        i[n]()
                    }
                }))
            }, e._clearMenus = function (n) {
                if (!n || 3 !== n.which && ("keyup" !== n.type || 9 === n.which)) for (var i = [].slice.call(document.querySelectorAll('[data-toggle="dropdown"]')), r = 0, s = i.length; r < s; r++) {
                    var a = e._getParentFromElement(i[r]), o = t(i[r]).data("bs.dropdown"), l = {relatedTarget: i[r]};
                    if (n && "click" === n.type && (l.clickEvent = n), o) {
                        var u = o._menu;
                        if (t(a).hasClass("show") && !(n && ("click" === n.type && /input|textarea/i.test(n.target.tagName) || "keyup" === n.type && 9 === n.which) && t.contains(a, n.target))) {
                            var c = t.Event("hide.bs.dropdown", l);
                            t(a).trigger(c), c.isDefaultPrevented() || ("ontouchstart" in document.documentElement && t(document.body).children().off("mouseover", null, t.noop), i[r].setAttribute("aria-expanded", "false"), o._popper && o._popper.destroy(), t(u).removeClass("show"), t(a).removeClass("show").trigger(t.Event("hidden.bs.dropdown", l)))
                        }
                    }
                }
            }, e._getParentFromElement = function (e) {
                var t, n = l.getSelectorFromElement(e);
                return n && (t = document.querySelector(n)), t || e.parentNode
            }, e._dataApiKeydownHandler = function (n) {
                if ((/input|textarea/i.test(n.target.tagName) ? !(32 === n.which || 27 !== n.which && (40 !== n.which && 38 !== n.which || t(n.target).closest(".dropdown-menu").length)) : D.test(n.which)) && !this.disabled && !t(this).hasClass("disabled")) {
                    var i = e._getParentFromElement(this), r = t(i).hasClass("show");
                    if (r || 27 !== n.which) {
                        if (n.preventDefault(), n.stopPropagation(), !r || r && (27 === n.which || 32 === n.which)) return 27 === n.which && t(i.querySelector('[data-toggle="dropdown"]')).trigger("focus"), void t(this).trigger("click");
                        var s = [].slice.call(i.querySelectorAll(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)")).filter((function (e) {
                            return t(e).is(":visible")
                        }));
                        if (0 !== s.length) {
                            var a = s.indexOf(n.target);
                            38 === n.which && a > 0 && a--, 40 === n.which && a < s.length - 1 && a++, a < 0 && (a = 0), s[a].focus()
                        }
                    }
                }
            }, r(e, null, [{
                key: "VERSION", get: function () {
                    return "4.5.2"
                }
            }, {
                key: "Default", get: function () {
                    return I
                }
            }, {
                key: "DefaultType", get: function () {
                    return P
                }
            }]), e
        }();
        t(document).on("keydown.bs.dropdown.data-api", '[data-toggle="dropdown"]', O._dataApiKeydownHandler).on("keydown.bs.dropdown.data-api", ".dropdown-menu", O._dataApiKeydownHandler).on("click.bs.dropdown.data-api keyup.bs.dropdown.data-api", O._clearMenus).on("click.bs.dropdown.data-api", '[data-toggle="dropdown"]', (function (e) {
            e.preventDefault(), e.stopPropagation(), O._jQueryInterface.call(t(this), "toggle")
        })).on("click.bs.dropdown.data-api", ".dropdown form", (function (e) {
            e.stopPropagation()
        })), t.fn[x] = O._jQueryInterface, t.fn[x].Constructor = O, t.fn[x].noConflict = function () {
            return t.fn[x] = A, O._jQueryInterface
        };
        var L = t.fn.modal, N = {backdrop: !0, keyboard: !0, focus: !0, show: !0}, R = {backdrop: "(boolean|string)", keyboard: "boolean", focus: "boolean", show: "boolean"}, U = ".modal-dialog", M = function () {
            function e(e, t) {
                this._config = this._getConfig(t), this._element = e, this._dialog = e.querySelector(U), this._backdrop = null, this._isShown = !1, this._isBodyOverflowing = !1, this._ignoreBackdropClick = !1, this._isTransitioning = !1, this._scrollbarWidth = 0
            }

            var n = e.prototype;
            return n.toggle = function (e) {
                return this._isShown ? this.hide() : this.show(e)
            }, n.show = function (e) {
                var n = this;
                if (!this._isShown && !this._isTransitioning) {
                    t(this._element).hasClass("fade") && (this._isTransitioning = !0);
                    var i = t.Event("show.bs.modal", {relatedTarget: e});
                    t(this._element).trigger(i), this._isShown || i.isDefaultPrevented() || (this._isShown = !0, this._checkScrollbar(), this._setScrollbar(), this._adjustDialog(), this._setEscapeEvent(), this._setResizeEvent(), t(this._element).on("click.dismiss.bs.modal", '[data-dismiss="modal"]', (function (e) {
                        return n.hide(e)
                    })), t(this._dialog).on("mousedown.dismiss.bs.modal", (function () {
                        t(n._element).one("mouseup.dismiss.bs.modal", (function (e) {
                            t(e.target).is(n._element) && (n._ignoreBackdropClick = !0)
                        }))
                    })), this._showBackdrop((function () {
                        return n._showElement(e)
                    })))
                }
            }, n.hide = function (e) {
                var n = this;
                if (e && e.preventDefault(), this._isShown && !this._isTransitioning) {
                    var i = t.Event("hide.bs.modal");
                    if (t(this._element).trigger(i), this._isShown && !i.isDefaultPrevented()) {
                        this._isShown = !1;
                        var r = t(this._element).hasClass("fade");
                        if (r && (this._isTransitioning = !0), this._setEscapeEvent(), this._setResizeEvent(), t(document).off("focusin.bs.modal"), t(this._element).removeClass("show"), t(this._element).off("click.dismiss.bs.modal"), t(this._dialog).off("mousedown.dismiss.bs.modal"), r) {
                            var s = l.getTransitionDurationFromElement(this._element);
                            t(this._element).one(l.TRANSITION_END, (function (e) {
                                return n._hideModal(e)
                            })).emulateTransitionEnd(s)
                        } else this._hideModal()
                    }
                }
            }, n.dispose = function () {
                [window, this._element, this._dialog].forEach((function (e) {
                    return t(e).off(".bs.modal")
                })), t(document).off("focusin.bs.modal"), t.removeData(this._element, "bs.modal"), this._config = null, this._element = null, this._dialog = null, this._backdrop = null, this._isShown = null, this._isBodyOverflowing = null, this._ignoreBackdropClick = null, this._isTransitioning = null, this._scrollbarWidth = null
            }, n.handleUpdate = function () {
                this._adjustDialog()
            }, n._getConfig = function (e) {
                return e = s({}, N, e), l.typeCheckConfig("modal", e, R), e
            }, n._triggerBackdropTransition = function () {
                var e = this;
                if ("static" === this._config.backdrop) {
                    var n = t.Event("hidePrevented.bs.modal");
                    if (t(this._element).trigger(n), n.defaultPrevented) return;
                    var i = this._element.scrollHeight > document.documentElement.clientHeight;
                    i || (this._element.style.overflowY = "hidden"), this._element.classList.add("modal-static");
                    var r = l.getTransitionDurationFromElement(this._dialog);
                    t(this._element).off(l.TRANSITION_END), t(this._element).one(l.TRANSITION_END, (function () {
                        e._element.classList.remove("modal-static"), i || t(e._element).one(l.TRANSITION_END, (function () {
                            e._element.style.overflowY = ""
                        })).emulateTransitionEnd(e._element, r)
                    })).emulateTransitionEnd(r), this._element.focus()
                } else this.hide()
            }, n._showElement = function (e) {
                var n = this, i = t(this._element).hasClass("fade"), r = this._dialog ? this._dialog.querySelector(".modal-body") : null;
                this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE || document.body.appendChild(this._element), this._element.style.display = "block", this._element.removeAttribute("aria-hidden"), this._element.setAttribute("aria-modal", !0), this._element.setAttribute("role", "dialog"), t(this._dialog).hasClass("modal-dialog-scrollable") && r ? r.scrollTop = 0 : this._element.scrollTop = 0, i && l.reflow(this._element), t(this._element).addClass("show"), this._config.focus && this._enforceFocus();
                var s = t.Event("shown.bs.modal", {relatedTarget: e}), a = function () {
                    n._config.focus && n._element.focus(), n._isTransitioning = !1, t(n._element).trigger(s)
                };
                if (i) {
                    var o = l.getTransitionDurationFromElement(this._dialog);
                    t(this._dialog).one(l.TRANSITION_END, a).emulateTransitionEnd(o)
                } else a()
            }, n._enforceFocus = function () {
                var e = this;
                t(document).off("focusin.bs.modal").on("focusin.bs.modal", (function (n) {
                    document !== n.target && e._element !== n.target && 0 === t(e._element).has(n.target).length && e._element.focus()
                }))
            }, n._setEscapeEvent = function () {
                var e = this;
                this._isShown ? t(this._element).on("keydown.dismiss.bs.modal", (function (t) {
                    e._config.keyboard && 27 === t.which ? (t.preventDefault(), e.hide()) : e._config.keyboard || 27 !== t.which || e._triggerBackdropTransition()
                })) : this._isShown || t(this._element).off("keydown.dismiss.bs.modal")
            }, n._setResizeEvent = function () {
                var e = this;
                this._isShown ? t(window).on("resize.bs.modal", (function (t) {
                    return e.handleUpdate(t)
                })) : t(window).off("resize.bs.modal")
            }, n._hideModal = function () {
                var e = this;
                this._element.style.display = "none", this._element.setAttribute("aria-hidden", !0), this._element.removeAttribute("aria-modal"), this._element.removeAttribute("role"), this._isTransitioning = !1, this._showBackdrop((function () {
                    t(document.body).removeClass("modal-open"), e._resetAdjustments(), e._resetScrollbar(), t(e._element).trigger("hidden.bs.modal")
                }))
            }, n._removeBackdrop = function () {
                this._backdrop && (t(this._backdrop).remove(), this._backdrop = null)
            }, n._showBackdrop = function (e) {
                var n = this, i = t(this._element).hasClass("fade") ? "fade" : "";
                if (this._isShown && this._config.backdrop) {
                    if (this._backdrop = document.createElement("div"), this._backdrop.className = "modal-backdrop", i && this._backdrop.classList.add(i), t(this._backdrop).appendTo(document.body), t(this._element).on("click.dismiss.bs.modal", (function (e) {
                        n._ignoreBackdropClick ? n._ignoreBackdropClick = !1 : e.target === e.currentTarget && n._triggerBackdropTransition()
                    })), i && l.reflow(this._backdrop), t(this._backdrop).addClass("show"), !e) return;
                    if (!i) return void e();
                    var r = l.getTransitionDurationFromElement(this._backdrop);
                    t(this._backdrop).one(l.TRANSITION_END, e).emulateTransitionEnd(r)
                } else if (!this._isShown && this._backdrop) {
                    t(this._backdrop).removeClass("show");
                    var s = function () {
                        n._removeBackdrop(), e && e()
                    };
                    if (t(this._element).hasClass("fade")) {
                        var a = l.getTransitionDurationFromElement(this._backdrop);
                        t(this._backdrop).one(l.TRANSITION_END, s).emulateTransitionEnd(a)
                    } else s()
                } else e && e()
            }, n._adjustDialog = function () {
                var e = this._element.scrollHeight > document.documentElement.clientHeight;
                !this._isBodyOverflowing && e && (this._element.style.paddingLeft = this._scrollbarWidth + "px"), this._isBodyOverflowing && !e && (this._element.style.paddingRight = this._scrollbarWidth + "px")
            }, n._resetAdjustments = function () {
                this._element.style.paddingLeft = "", this._element.style.paddingRight = ""
            }, n._checkScrollbar = function () {
                var e = document.body.getBoundingClientRect();
                this._isBodyOverflowing = Math.round(e.left + e.right) < window.innerWidth, this._scrollbarWidth = this._getScrollbarWidth()
            }, n._setScrollbar = function () {
                var e = this;
                if (this._isBodyOverflowing) {
                    var n = [].slice.call(document.querySelectorAll(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top")), i = [].slice.call(document.querySelectorAll(".sticky-top"));
                    t(n).each((function (n, i) {
                        var r = i.style.paddingRight, s = t(i).css("padding-right");
                        t(i).data("padding-right", r).css("padding-right", parseFloat(s) + e._scrollbarWidth + "px")
                    })), t(i).each((function (n, i) {
                        var r = i.style.marginRight, s = t(i).css("margin-right");
                        t(i).data("margin-right", r).css("margin-right", parseFloat(s) - e._scrollbarWidth + "px")
                    }));
                    var r = document.body.style.paddingRight, s = t(document.body).css("padding-right");
                    t(document.body).data("padding-right", r).css("padding-right", parseFloat(s) + this._scrollbarWidth + "px")
                }
                t(document.body).addClass("modal-open")
            }, n._resetScrollbar = function () {
                var e = [].slice.call(document.querySelectorAll(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top"));
                t(e).each((function (e, n) {
                    var i = t(n).data("padding-right");
                    t(n).removeData("padding-right"), n.style.paddingRight = i || ""
                }));
                var n = [].slice.call(document.querySelectorAll(".sticky-top"));
                t(n).each((function (e, n) {
                    var i = t(n).data("margin-right");
                    void 0 !== i && t(n).css("margin-right", i).removeData("margin-right")
                }));
                var i = t(document.body).data("padding-right");
                t(document.body).removeData("padding-right"), document.body.style.paddingRight = i || ""
            }, n._getScrollbarWidth = function () {
                var e = document.createElement("div");
                e.className = "modal-scrollbar-measure", document.body.appendChild(e);
                var t = e.getBoundingClientRect().width - e.clientWidth;
                return document.body.removeChild(e), t
            }, e._jQueryInterface = function (n, i) {
                return this.each((function () {
                    var r = t(this).data("bs.modal"), a = s({}, N, t(this).data(), "object" == typeof n && n ? n : {});
                    if (r || (r = new e(this, a), t(this).data("bs.modal", r)), "string" == typeof n) {
                        if (void 0 === r[n]) throw new TypeError('No method named "' + n + '"');
                        r[n](i)
                    } else a.show && r.show(i)
                }))
            }, r(e, null, [{
                key: "VERSION", get: function () {
                    return "4.5.2"
                }
            }, {
                key: "Default", get: function () {
                    return N
                }
            }]), e
        }();
        t(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', (function (e) {
            var n, i = this, r = l.getSelectorFromElement(this);
            r && (n = document.querySelector(r));
            var a = t(n).data("bs.modal") ? "toggle" : s({}, t(n).data(), t(this).data());
            "A" !== this.tagName && "AREA" !== this.tagName || e.preventDefault();
            var o = t(n).one("show.bs.modal", (function (e) {
                e.isDefaultPrevented() || o.one("hidden.bs.modal", (function () {
                    t(i).is(":visible") && i.focus()
                }))
            }));
            M._jQueryInterface.call(t(n), a, this)
        })), t.fn.modal = M._jQueryInterface, t.fn.modal.Constructor = M, t.fn.modal.noConflict = function () {
            return t.fn.modal = L, M._jQueryInterface
        };
        var B = ["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"], j = {"*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i], a: ["target", "href", "title", "rel"], area: [], b: [], br: [], col: [], code: [], div: [], em: [], hr: [], h1: [], h2: [], h3: [], h4: [], h5: [], h6: [], i: [], img: ["src", "srcset", "alt", "title", "width", "height"], li: [], ol: [], p: [], pre: [], s: [], small: [], span: [], sub: [], sup: [], strong: [], u: [], ul: []}, F = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi, H = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;

        function q(e, t, n) {
            if (0 === e.length) return e;
            if (n && "function" == typeof n) return n(e);
            for (var i = (new window.DOMParser).parseFromString(e, "text/html"), r = Object.keys(t), s = [].slice.call(i.body.querySelectorAll("*")), a = function (e, n) {
                var i = s[e], a = i.nodeName.toLowerCase();
                if (-1 === r.indexOf(i.nodeName.toLowerCase())) return i.parentNode.removeChild(i), "continue";
                var o = [].slice.call(i.attributes), l = [].concat(t["*"] || [], t[a] || []);
                o.forEach((function (e) {
                    (function (e, t) {
                        var n = e.nodeName.toLowerCase();
                        if (-1 !== t.indexOf(n)) return -1 === B.indexOf(n) || Boolean(e.nodeValue.match(F) || e.nodeValue.match(H));
                        for (var i = t.filter((function (e) {
                            return e instanceof RegExp
                        })), r = 0, s = i.length; r < s; r++) if (n.match(i[r])) return !0;
                        return !1
                    })(e, l) || i.removeAttribute(e.nodeName)
                }))
            }, o = 0, l = s.length; o < l; o++) a(o);
            return i.body.innerHTML
        }

        var V = "tooltip", W = t.fn.tooltip, z = new RegExp("(^|\\s)bs-tooltip\\S+", "g"), G = ["sanitize", "whiteList", "sanitizeFn"], Y = {animation: "boolean", template: "string", title: "(string|element|function)", trigger: "string", delay: "(number|object)", html: "boolean", selector: "(string|boolean)", placement: "(string|function)", offset: "(number|string|function)", container: "(string|element|boolean)", fallbackPlacement: "(string|array)", boundary: "(string|element)", sanitize: "boolean", sanitizeFn: "(null|function)", whiteList: "object", popperConfig: "(null|object)"}, X = {AUTO: "auto", TOP: "top", RIGHT: "right", BOTTOM: "bottom", LEFT: "left"},
            K = {animation: !0, template: '<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>', trigger: "hover focus", title: "", delay: 0, html: !1, selector: !1, placement: "top", offset: 0, container: !1, fallbackPlacement: "flip", boundary: "scrollParent", sanitize: !0, sanitizeFn: null, whiteList: j, popperConfig: null}, $ = {HIDE: "hide.bs.tooltip", HIDDEN: "hidden.bs.tooltip", SHOW: "show.bs.tooltip", SHOWN: "shown.bs.tooltip", INSERTED: "inserted.bs.tooltip", CLICK: "click.bs.tooltip", FOCUSIN: "focusin.bs.tooltip", FOCUSOUT: "focusout.bs.tooltip", MOUSEENTER: "mouseenter.bs.tooltip", MOUSELEAVE: "mouseleave.bs.tooltip"}, Q = function () {
                function e(e, t) {
                    if (void 0 === n) throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");
                    this._isEnabled = !0, this._timeout = 0, this._hoverState = "", this._activeTrigger = {}, this._popper = null, this.element = e, this.config = this._getConfig(t), this.tip = null, this._setListeners()
                }

                var i = e.prototype;
                return i.enable = function () {
                    this._isEnabled = !0
                }, i.disable = function () {
                    this._isEnabled = !1
                }, i.toggleEnabled = function () {
                    this._isEnabled = !this._isEnabled
                }, i.toggle = function (e) {
                    if (this._isEnabled) if (e) {
                        var n = this.constructor.DATA_KEY, i = t(e.currentTarget).data(n);
                        i || (i = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(n, i)), i._activeTrigger.click = !i._activeTrigger.click, i._isWithActiveTrigger() ? i._enter(null, i) : i._leave(null, i)
                    } else {
                        if (t(this.getTipElement()).hasClass("show")) return void this._leave(null, this);
                        this._enter(null, this)
                    }
                }, i.dispose = function () {
                    clearTimeout(this._timeout), t.removeData(this.element, this.constructor.DATA_KEY), t(this.element).off(this.constructor.EVENT_KEY), t(this.element).closest(".modal").off("hide.bs.modal", this._hideModalHandler), this.tip && t(this.tip).remove(), this._isEnabled = null, this._timeout = null, this._hoverState = null, this._activeTrigger = null, this._popper && this._popper.destroy(), this._popper = null, this.element = null, this.config = null, this.tip = null
                }, i.show = function () {
                    var e = this;
                    if ("none" === t(this.element).css("display")) throw new Error("Please use show on visible elements");
                    var i = t.Event(this.constructor.Event.SHOW);
                    if (this.isWithContent() && this._isEnabled) {
                        t(this.element).trigger(i);
                        var r = l.findShadowRoot(this.element), s = t.contains(null !== r ? r : this.element.ownerDocument.documentElement, this.element);
                        if (i.isDefaultPrevented() || !s) return;
                        var a = this.getTipElement(), o = l.getUID(this.constructor.NAME);
                        a.setAttribute("id", o), this.element.setAttribute("aria-describedby", o), this.setContent(), this.config.animation && t(a).addClass("fade");
                        var u = "function" == typeof this.config.placement ? this.config.placement.call(this, a, this.element) : this.config.placement, c = this._getAttachment(u);
                        this.addAttachmentClass(c);
                        var h = this._getContainer();
                        t(a).data(this.constructor.DATA_KEY, this), t.contains(this.element.ownerDocument.documentElement, this.tip) || t(a).appendTo(h), t(this.element).trigger(this.constructor.Event.INSERTED), this._popper = new n(this.element, a, this._getPopperConfig(c)), t(a).addClass("show"), "ontouchstart" in document.documentElement && t(document.body).children().on("mouseover", null, t.noop);
                        var d = function () {
                            e.config.animation && e._fixTransition();
                            var n = e._hoverState;
                            e._hoverState = null, t(e.element).trigger(e.constructor.Event.SHOWN), "out" === n && e._leave(null, e)
                        };
                        if (t(this.tip).hasClass("fade")) {
                            var f = l.getTransitionDurationFromElement(this.tip);
                            t(this.tip).one(l.TRANSITION_END, d).emulateTransitionEnd(f)
                        } else d()
                    }
                }, i.hide = function (e) {
                    var n = this, i = this.getTipElement(), r = t.Event(this.constructor.Event.HIDE), s = function () {
                        "show" !== n._hoverState && i.parentNode && i.parentNode.removeChild(i), n._cleanTipClass(), n.element.removeAttribute("aria-describedby"), t(n.element).trigger(n.constructor.Event.HIDDEN), null !== n._popper && n._popper.destroy(), e && e()
                    };
                    if (t(this.element).trigger(r), !r.isDefaultPrevented()) {
                        if (t(i).removeClass("show"), "ontouchstart" in document.documentElement && t(document.body).children().off("mouseover", null, t.noop), this._activeTrigger.click = !1, this._activeTrigger.focus = !1, this._activeTrigger.hover = !1, t(this.tip).hasClass("fade")) {
                            var a = l.getTransitionDurationFromElement(i);
                            t(i).one(l.TRANSITION_END, s).emulateTransitionEnd(a)
                        } else s();
                        this._hoverState = ""
                    }
                }, i.update = function () {
                    null !== this._popper && this._popper.scheduleUpdate()
                }, i.isWithContent = function () {
                    return Boolean(this.getTitle())
                }, i.addAttachmentClass = function (e) {
                    t(this.getTipElement()).addClass("bs-tooltip-" + e)
                }, i.getTipElement = function () {
                    return this.tip = this.tip || t(this.config.template)[0], this.tip
                }, i.setContent = function () {
                    var e = this.getTipElement();
                    this.setElementContent(t(e.querySelectorAll(".tooltip-inner")), this.getTitle()), t(e).removeClass("fade show")
                }, i.setElementContent = function (e, n) {
                    "object" != typeof n || !n.nodeType && !n.jquery ? this.config.html ? (this.config.sanitize && (n = q(n, this.config.whiteList, this.config.sanitizeFn)), e.html(n)) : e.text(n) : this.config.html ? t(n).parent().is(e) || e.empty().append(n) : e.text(t(n).text())
                }, i.getTitle = function () {
                    var e = this.element.getAttribute("data-original-title");
                    return e || (e = "function" == typeof this.config.title ? this.config.title.call(this.element) : this.config.title), e
                }, i._getPopperConfig = function (e) {
                    var t = this;
                    return s({}, {
                        placement: e, modifiers: {offset: this._getOffset(), flip: {behavior: this.config.fallbackPlacement}, arrow: {element: ".arrow"}, preventOverflow: {boundariesElement: this.config.boundary}}, onCreate: function (e) {
                            e.originalPlacement !== e.placement && t._handlePopperPlacementChange(e)
                        }, onUpdate: function (e) {
                            return t._handlePopperPlacementChange(e)
                        }
                    }, this.config.popperConfig)
                }, i._getOffset = function () {
                    var e = this, t = {};
                    return "function" == typeof this.config.offset ? t.fn = function (t) {
                        return t.offsets = s({}, t.offsets, e.config.offset(t.offsets, e.element) || {}), t
                    } : t.offset = this.config.offset, t
                }, i._getContainer = function () {
                    return !1 === this.config.container ? document.body : l.isElement(this.config.container) ? t(this.config.container) : t(document).find(this.config.container)
                }, i._getAttachment = function (e) {
                    return X[e.toUpperCase()]
                }, i._setListeners = function () {
                    var e = this;
                    this.config.trigger.split(" ").forEach((function (n) {
                        if ("click" === n) t(e.element).on(e.constructor.Event.CLICK, e.config.selector, (function (t) {
                            return e.toggle(t)
                        })); else if ("manual" !== n) {
                            var i = "hover" === n ? e.constructor.Event.MOUSEENTER : e.constructor.Event.FOCUSIN, r = "hover" === n ? e.constructor.Event.MOUSELEAVE : e.constructor.Event.FOCUSOUT;
                            t(e.element).on(i, e.config.selector, (function (t) {
                                return e._enter(t)
                            })).on(r, e.config.selector, (function (t) {
                                return e._leave(t)
                            }))
                        }
                    })), this._hideModalHandler = function () {
                        e.element && e.hide()
                    }, t(this.element).closest(".modal").on("hide.bs.modal", this._hideModalHandler), this.config.selector ? this.config = s({}, this.config, {trigger: "manual", selector: ""}) : this._fixTitle()
                }, i._fixTitle = function () {
                    var e = typeof this.element.getAttribute("data-original-title");
                    (this.element.getAttribute("title") || "string" !== e) && (this.element.setAttribute("data-original-title", this.element.getAttribute("title") || ""), this.element.setAttribute("title", ""))
                }, i._enter = function (e, n) {
                    var i = this.constructor.DATA_KEY;
                    (n = n || t(e.currentTarget).data(i)) || (n = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(i, n)), e && (n._activeTrigger["focusin" === e.type ? "focus" : "hover"] = !0), t(n.getTipElement()).hasClass("show") || "show" === n._hoverState ? n._hoverState = "show" : (clearTimeout(n._timeout), n._hoverState = "show", n.config.delay && n.config.delay.show ? n._timeout = setTimeout((function () {
                        "show" === n._hoverState && n.show()
                    }), n.config.delay.show) : n.show())
                }, i._leave = function (e, n) {
                    var i = this.constructor.DATA_KEY;
                    (n = n || t(e.currentTarget).data(i)) || (n = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(i, n)), e && (n._activeTrigger["focusout" === e.type ? "focus" : "hover"] = !1), n._isWithActiveTrigger() || (clearTimeout(n._timeout), n._hoverState = "out", n.config.delay && n.config.delay.hide ? n._timeout = setTimeout((function () {
                        "out" === n._hoverState && n.hide()
                    }), n.config.delay.hide) : n.hide())
                }, i._isWithActiveTrigger = function () {
                    for (var e in this._activeTrigger) if (this._activeTrigger[e]) return !0;
                    return !1
                }, i._getConfig = function (e) {
                    var n = t(this.element).data();
                    return Object.keys(n).forEach((function (e) {
                        -1 !== G.indexOf(e) && delete n[e]
                    })), "number" == typeof (e = s({}, this.constructor.Default, n, "object" == typeof e && e ? e : {})).delay && (e.delay = {show: e.delay, hide: e.delay}), "number" == typeof e.title && (e.title = e.title.toString()), "number" == typeof e.content && (e.content = e.content.toString()), l.typeCheckConfig(V, e, this.constructor.DefaultType), e.sanitize && (e.template = q(e.template, e.whiteList, e.sanitizeFn)), e
                }, i._getDelegateConfig = function () {
                    var e = {};
                    if (this.config) for (var t in this.config) this.constructor.Default[t] !== this.config[t] && (e[t] = this.config[t]);
                    return e
                }, i._cleanTipClass = function () {
                    var e = t(this.getTipElement()), n = e.attr("class").match(z);
                    null !== n && n.length && e.removeClass(n.join(""))
                }, i._handlePopperPlacementChange = function (e) {
                    this.tip = e.instance.popper, this._cleanTipClass(), this.addAttachmentClass(this._getAttachment(e.placement))
                }, i._fixTransition = function () {
                    var e = this.getTipElement(), n = this.config.animation;
                    null === e.getAttribute("x-placement") && (t(e).removeClass("fade"), this.config.animation = !1, this.hide(), this.show(), this.config.animation = n)
                }, e._jQueryInterface = function (n) {
                    return this.each((function () {
                        var i = t(this).data("bs.tooltip"), r = "object" == typeof n && n;
                        if ((i || !/dispose|hide/.test(n)) && (i || (i = new e(this, r), t(this).data("bs.tooltip", i)), "string" == typeof n)) {
                            if (void 0 === i[n]) throw new TypeError('No method named "' + n + '"');
                            i[n]()
                        }
                    }))
                }, r(e, null, [{
                    key: "VERSION", get: function () {
                        return "4.5.2"
                    }
                }, {
                    key: "Default", get: function () {
                        return K
                    }
                }, {
                    key: "NAME", get: function () {
                        return V
                    }
                }, {
                    key: "DATA_KEY", get: function () {
                        return "bs.tooltip"
                    }
                }, {
                    key: "Event", get: function () {
                        return $
                    }
                }, {
                    key: "EVENT_KEY", get: function () {
                        return ".bs.tooltip"
                    }
                }, {
                    key: "DefaultType", get: function () {
                        return Y
                    }
                }]), e
            }();
        t.fn.tooltip = Q._jQueryInterface, t.fn.tooltip.Constructor = Q, t.fn.tooltip.noConflict = function () {
            return t.fn.tooltip = W, Q._jQueryInterface
        };
        var J = "popover", Z = t.fn.popover, ee = new RegExp("(^|\\s)bs-popover\\S+", "g"), te = s({}, Q.Default, {placement: "right", trigger: "click", content: "", template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}), ne = s({}, Q.DefaultType, {content: "(string|element|function)"}), ie = {HIDE: "hide.bs.popover", HIDDEN: "hidden.bs.popover", SHOW: "show.bs.popover", SHOWN: "shown.bs.popover", INSERTED: "inserted.bs.popover", CLICK: "click.bs.popover", FOCUSIN: "focusin.bs.popover", FOCUSOUT: "focusout.bs.popover", MOUSEENTER: "mouseenter.bs.popover", MOUSELEAVE: "mouseleave.bs.popover"}, re = function (e) {
            var n, i;

            function s() {
                return e.apply(this, arguments) || this
            }

            i = e, (n = s).prototype = Object.create(i.prototype), n.prototype.constructor = n, n.__proto__ = i;
            var a = s.prototype;
            return a.isWithContent = function () {
                return this.getTitle() || this._getContent()
            }, a.addAttachmentClass = function (e) {
                t(this.getTipElement()).addClass("bs-popover-" + e)
            }, a.getTipElement = function () {
                return this.tip = this.tip || t(this.config.template)[0], this.tip
            }, a.setContent = function () {
                var e = t(this.getTipElement());
                this.setElementContent(e.find(".popover-header"), this.getTitle());
                var n = this._getContent();
                "function" == typeof n && (n = n.call(this.element)), this.setElementContent(e.find(".popover-body"), n), e.removeClass("fade show")
            }, a._getContent = function () {
                return this.element.getAttribute("data-content") || this.config.content
            }, a._cleanTipClass = function () {
                var e = t(this.getTipElement()), n = e.attr("class").match(ee);
                null !== n && n.length > 0 && e.removeClass(n.join(""))
            }, s._jQueryInterface = function (e) {
                return this.each((function () {
                    var n = t(this).data("bs.popover"), i = "object" == typeof e ? e : null;
                    if ((n || !/dispose|hide/.test(e)) && (n || (n = new s(this, i), t(this).data("bs.popover", n)), "string" == typeof e)) {
                        if (void 0 === n[e]) throw new TypeError('No method named "' + e + '"');
                        n[e]()
                    }
                }))
            }, r(s, null, [{
                key: "VERSION", get: function () {
                    return "4.5.2"
                }
            }, {
                key: "Default", get: function () {
                    return te
                }
            }, {
                key: "NAME", get: function () {
                    return J
                }
            }, {
                key: "DATA_KEY", get: function () {
                    return "bs.popover"
                }
            }, {
                key: "Event", get: function () {
                    return ie
                }
            }, {
                key: "EVENT_KEY", get: function () {
                    return ".bs.popover"
                }
            }, {
                key: "DefaultType", get: function () {
                    return ne
                }
            }]), s
        }(Q);
        t.fn.popover = re._jQueryInterface, t.fn.popover.Constructor = re, t.fn.popover.noConflict = function () {
            return t.fn.popover = Z, re._jQueryInterface
        };
        var se = "scrollspy", ae = t.fn[se], oe = {offset: 10, method: "auto", target: ""}, le = {offset: "number", method: "string", target: "(string|element)"}, ue = "scroll.bs.scrollspy", ce = ".nav-link", he = ".list-group-item", de = ".dropdown-item", fe = function () {
            function e(e, n) {
                var i = this;
                this._element = e, this._scrollElement = "BODY" === e.tagName ? window : e, this._config = this._getConfig(n), this._selector = this._config.target + " " + ce + "," + this._config.target + " " + he + "," + this._config.target + " " + de, this._offsets = [], this._targets = [], this._activeTarget = null, this._scrollHeight = 0, t(this._scrollElement).on(ue, (function (e) {
                    return i._process(e)
                })), this.refresh(), this._process()
            }

            var n = e.prototype;
            return n.refresh = function () {
                var e = this, n = this._scrollElement === this._scrollElement.window ? "offset" : "position", i = "auto" === this._config.method ? n : this._config.method, r = "position" === i ? this._getScrollTop() : 0;
                this._offsets = [], this._targets = [], this._scrollHeight = this._getScrollHeight(), [].slice.call(document.querySelectorAll(this._selector)).map((function (e) {
                    var n, s = l.getSelectorFromElement(e);
                    if (s && (n = document.querySelector(s)), n) {
                        var a = n.getBoundingClientRect();
                        if (a.width || a.height) return [t(n)[i]().top + r, s]
                    }
                    return null
                })).filter((function (e) {
                    return e
                })).sort((function (e, t) {
                    return e[0] - t[0]
                })).forEach((function (t) {
                    e._offsets.push(t[0]), e._targets.push(t[1])
                }))
            }, n.dispose = function () {
                t.removeData(this._element, "bs.scrollspy"), t(this._scrollElement).off(".bs.scrollspy"), this._element = null, this._scrollElement = null, this._config = null, this._selector = null, this._offsets = null, this._targets = null, this._activeTarget = null, this._scrollHeight = null
            }, n._getConfig = function (e) {
                if ("string" != typeof (e = s({}, oe, "object" == typeof e && e ? e : {})).target && l.isElement(e.target)) {
                    var n = t(e.target).attr("id");
                    n || (n = l.getUID(se), t(e.target).attr("id", n)), e.target = "#" + n
                }
                return l.typeCheckConfig(se, e, le), e
            }, n._getScrollTop = function () {
                return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop
            }, n._getScrollHeight = function () {
                return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)
            }, n._getOffsetHeight = function () {
                return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height
            }, n._process = function () {
                var e = this._getScrollTop() + this._config.offset, t = this._getScrollHeight(), n = this._config.offset + t - this._getOffsetHeight();
                if (this._scrollHeight !== t && this.refresh(), e >= n) {
                    var i = this._targets[this._targets.length - 1];
                    this._activeTarget !== i && this._activate(i)
                } else {
                    if (this._activeTarget && e < this._offsets[0] && this._offsets[0] > 0) return this._activeTarget = null, void this._clear();
                    for (var r = this._offsets.length; r--;) this._activeTarget !== this._targets[r] && e >= this._offsets[r] && (void 0 === this._offsets[r + 1] || e < this._offsets[r + 1]) && this._activate(this._targets[r])
                }
            }, n._activate = function (e) {
                this._activeTarget = e, this._clear();
                var n = this._selector.split(",").map((function (t) {
                    return t + '[data-target="' + e + '"],' + t + '[href="' + e + '"]'
                })), i = t([].slice.call(document.querySelectorAll(n.join(","))));
                i.hasClass("dropdown-item") ? (i.closest(".dropdown").find(".dropdown-toggle").addClass("active"), i.addClass("active")) : (i.addClass("active"), i.parents(".nav, .list-group").prev(ce + ", " + he).addClass("active"), i.parents(".nav, .list-group").prev(".nav-item").children(ce).addClass("active")), t(this._scrollElement).trigger("activate.bs.scrollspy", {relatedTarget: e})
            }, n._clear = function () {
                [].slice.call(document.querySelectorAll(this._selector)).filter((function (e) {
                    return e.classList.contains("active")
                })).forEach((function (e) {
                    return e.classList.remove("active")
                }))
            }, e._jQueryInterface = function (n) {
                return this.each((function () {
                    var i = t(this).data("bs.scrollspy");
                    if (i || (i = new e(this, "object" == typeof n && n), t(this).data("bs.scrollspy", i)), "string" == typeof n) {
                        if (void 0 === i[n]) throw new TypeError('No method named "' + n + '"');
                        i[n]()
                    }
                }))
            }, r(e, null, [{
                key: "VERSION", get: function () {
                    return "4.5.2"
                }
            }, {
                key: "Default", get: function () {
                    return oe
                }
            }]), e
        }();
        t(window).on("load.bs.scrollspy.data-api", (function () {
            for (var e = [].slice.call(document.querySelectorAll('[data-spy="scroll"]')), n = e.length; n--;) {
                var i = t(e[n]);
                fe._jQueryInterface.call(i, i.data())
            }
        })), t.fn[se] = fe._jQueryInterface, t.fn[se].Constructor = fe, t.fn[se].noConflict = function () {
            return t.fn[se] = ae, fe._jQueryInterface
        };
        var pe = t.fn.tab, me = function () {
            function e(e) {
                this._element = e
            }

            var n = e.prototype;
            return n.show = function () {
                var e = this;
                if (!(this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && t(this._element).hasClass("active") || t(this._element).hasClass("disabled"))) {
                    var n, i, r = t(this._element).closest(".nav, .list-group")[0], s = l.getSelectorFromElement(this._element);
                    if (r) {
                        var a = "UL" === r.nodeName || "OL" === r.nodeName ? "> li > .active" : ".active";
                        i = (i = t.makeArray(t(r).find(a)))[i.length - 1]
                    }
                    var o = t.Event("hide.bs.tab", {relatedTarget: this._element}), u = t.Event("show.bs.tab", {relatedTarget: i});
                    if (i && t(i).trigger(o), t(this._element).trigger(u), !u.isDefaultPrevented() && !o.isDefaultPrevented()) {
                        s && (n = document.querySelector(s)), this._activate(this._element, r);
                        var c = function () {
                            var n = t.Event("hidden.bs.tab", {relatedTarget: e._element}), r = t.Event("shown.bs.tab", {relatedTarget: i});
                            t(i).trigger(n), t(e._element).trigger(r)
                        };
                        n ? this._activate(n, n.parentNode, c) : c()
                    }
                }
            }, n.dispose = function () {
                t.removeData(this._element, "bs.tab"), this._element = null
            }, n._activate = function (e, n, i) {
                var r = this, s = (!n || "UL" !== n.nodeName && "OL" !== n.nodeName ? t(n).children(".active") : t(n).find("> li > .active"))[0], a = i && s && t(s).hasClass("fade"), o = function () {
                    return r._transitionComplete(e, s, i)
                };
                if (s && a) {
                    var u = l.getTransitionDurationFromElement(s);
                    t(s).removeClass("show").one(l.TRANSITION_END, o).emulateTransitionEnd(u)
                } else o()
            }, n._transitionComplete = function (e, n, i) {
                if (n) {
                    t(n).removeClass("active");
                    var r = t(n.parentNode).find("> .dropdown-menu .active")[0];
                    r && t(r).removeClass("active"), "tab" === n.getAttribute("role") && n.setAttribute("aria-selected", !1)
                }
                if (t(e).addClass("active"), "tab" === e.getAttribute("role") && e.setAttribute("aria-selected", !0), l.reflow(e), e.classList.contains("fade") && e.classList.add("show"), e.parentNode && t(e.parentNode).hasClass("dropdown-menu")) {
                    var s = t(e).closest(".dropdown")[0];
                    if (s) {
                        var a = [].slice.call(s.querySelectorAll(".dropdown-toggle"));
                        t(a).addClass("active")
                    }
                    e.setAttribute("aria-expanded", !0)
                }
                i && i()
            }, e._jQueryInterface = function (n) {
                return this.each((function () {
                    var i = t(this), r = i.data("bs.tab");
                    if (r || (r = new e(this), i.data("bs.tab", r)), "string" == typeof n) {
                        if (void 0 === r[n]) throw new TypeError('No method named "' + n + '"');
                        r[n]()
                    }
                }))
            }, r(e, null, [{
                key: "VERSION", get: function () {
                    return "4.5.2"
                }
            }]), e
        }();
        t(document).on("click.bs.tab.data-api", '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', (function (e) {
            e.preventDefault(), me._jQueryInterface.call(t(this), "show")
        })), t.fn.tab = me._jQueryInterface, t.fn.tab.Constructor = me, t.fn.tab.noConflict = function () {
            return t.fn.tab = pe, me._jQueryInterface
        };
        var ge = t.fn.toast, ve = {animation: "boolean", autohide: "boolean", delay: "number"}, ye = {animation: !0, autohide: !0, delay: 500}, _e = function () {
            function e(e, t) {
                this._element = e, this._config = this._getConfig(t), this._timeout = null, this._setListeners()
            }

            var n = e.prototype;
            return n.show = function () {
                var e = this, n = t.Event("show.bs.toast");
                if (t(this._element).trigger(n), !n.isDefaultPrevented()) {
                    this._clearTimeout(), this._config.animation && this._element.classList.add("fade");
                    var i = function () {
                        e._element.classList.remove("showing"), e._element.classList.add("show"), t(e._element).trigger("shown.bs.toast"), e._config.autohide && (e._timeout = setTimeout((function () {
                            e.hide()
                        }), e._config.delay))
                    };
                    if (this._element.classList.remove("hide"), l.reflow(this._element), this._element.classList.add("showing"), this._config.animation) {
                        var r = l.getTransitionDurationFromElement(this._element);
                        t(this._element).one(l.TRANSITION_END, i).emulateTransitionEnd(r)
                    } else i()
                }
            }, n.hide = function () {
                if (this._element.classList.contains("show")) {
                    var e = t.Event("hide.bs.toast");
                    t(this._element).trigger(e), e.isDefaultPrevented() || this._close()
                }
            }, n.dispose = function () {
                this._clearTimeout(), this._element.classList.contains("show") && this._element.classList.remove("show"), t(this._element).off("click.dismiss.bs.toast"), t.removeData(this._element, "bs.toast"), this._element = null, this._config = null
            }, n._getConfig = function (e) {
                return e = s({}, ye, t(this._element).data(), "object" == typeof e && e ? e : {}), l.typeCheckConfig("toast", e, this.constructor.DefaultType), e
            }, n._setListeners = function () {
                var e = this;
                t(this._element).on("click.dismiss.bs.toast", '[data-dismiss="toast"]', (function () {
                    return e.hide()
                }))
            }, n._close = function () {
                var e = this, n = function () {
                    e._element.classList.add("hide"), t(e._element).trigger("hidden.bs.toast")
                };
                if (this._element.classList.remove("show"), this._config.animation) {
                    var i = l.getTransitionDurationFromElement(this._element);
                    t(this._element).one(l.TRANSITION_END, n).emulateTransitionEnd(i)
                } else n()
            }, n._clearTimeout = function () {
                clearTimeout(this._timeout), this._timeout = null
            }, e._jQueryInterface = function (n) {
                return this.each((function () {
                    var i = t(this), r = i.data("bs.toast");
                    if (r || (r = new e(this, "object" == typeof n && n), i.data("bs.toast", r)), "string" == typeof n) {
                        if (void 0 === r[n]) throw new TypeError('No method named "' + n + '"');
                        r[n](this)
                    }
                }))
            }, r(e, null, [{
                key: "VERSION", get: function () {
                    return "4.5.2"
                }
            }, {
                key: "DefaultType", get: function () {
                    return ve
                }
            }, {
                key: "Default", get: function () {
                    return ye
                }
            }]), e
        }();
        t.fn.toast = _e._jQueryInterface, t.fn.toast.Constructor = _e, t.fn.toast.noConflict = function () {
            return t.fn.toast = ge, _e._jQueryInterface
        }, e.Alert = c, e.Button = d, e.Carousel = b, e.Collapse = k, e.Dropdown = O, e.Modal = M, e.Popover = re, e.Scrollspy = fe, e.Tab = me, e.Toast = _e, e.Tooltip = Q, e.Util = l, Object.defineProperty(e, "__esModule", {value: !0})
    }(t, n(11), n(29))
}, function (e, t, n) {
    "use strict";
    n.r(t), function (e) {
        var n = "undefined" != typeof window && "undefined" != typeof document && "undefined" != typeof navigator, i = function () {
            for (var e = ["Edge", "Trident", "Firefox"], t = 0; t < e.length; t += 1) if (n && navigator.userAgent.indexOf(e[t]) >= 0) return 1;
            return 0
        }();
        var r = n && window.Promise ? function (e) {
            var t = !1;
            return function () {
                t || (t = !0, window.Promise.resolve().then((function () {
                    t = !1, e()
                })))
            }
        } : function (e) {
            var t = !1;
            return function () {
                t || (t = !0, setTimeout((function () {
                    t = !1, e()
                }), i))
            }
        };

        function s(e) {
            return e && "[object Function]" === {}.toString.call(e)
        }

        function a(e, t) {
            if (1 !== e.nodeType) return [];
            var n = e.ownerDocument.defaultView.getComputedStyle(e, null);
            return t ? n[t] : n
        }

        function o(e) {
            return "HTML" === e.nodeName ? e : e.parentNode || e.host
        }

        function l(e) {
            if (!e) return document.body;
            switch (e.nodeName) {
                case"HTML":
                case"BODY":
                    return e.ownerDocument.body;
                case"#document":
                    return e.body
            }
            var t = a(e), n = t.overflow, i = t.overflowX, r = t.overflowY;
            return /(auto|scroll|overlay)/.test(n + r + i) ? e : l(o(e))
        }

        function u(e) {
            return e && e.referenceNode ? e.referenceNode : e
        }

        var c = n && !(!window.MSInputMethodContext || !document.documentMode), h = n && /MSIE 10/.test(navigator.userAgent);

        function d(e) {
            return 11 === e ? c : 10 === e ? h : c || h
        }

        function f(e) {
            if (!e) return document.documentElement;
            for (var t = d(10) ? document.body : null, n = e.offsetParent || null; n === t && e.nextElementSibling;) n = (e = e.nextElementSibling).offsetParent;
            var i = n && n.nodeName;
            return i && "BODY" !== i && "HTML" !== i ? -1 !== ["TH", "TD", "TABLE"].indexOf(n.nodeName) && "static" === a(n, "position") ? f(n) : n : e ? e.ownerDocument.documentElement : document.documentElement
        }

        function p(e) {
            return null !== e.parentNode ? p(e.parentNode) : e
        }

        function m(e, t) {
            if (!(e && e.nodeType && t && t.nodeType)) return document.documentElement;
            var n = e.compareDocumentPosition(t) & Node.DOCUMENT_POSITION_FOLLOWING, i = n ? e : t, r = n ? t : e, s = document.createRange();
            s.setStart(i, 0), s.setEnd(r, 0);
            var a, o, l = s.commonAncestorContainer;
            if (e !== l && t !== l || i.contains(r)) return "BODY" === (o = (a = l).nodeName) || "HTML" !== o && f(a.firstElementChild) !== a ? f(l) : l;
            var u = p(e);
            return u.host ? m(u.host, t) : m(e, p(t).host)
        }

        function g(e) {
            var t = "top" === (arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "top") ? "scrollTop" : "scrollLeft", n = e.nodeName;
            if ("BODY" === n || "HTML" === n) {
                var i = e.ownerDocument.documentElement;
                return (e.ownerDocument.scrollingElement || i)[t]
            }
            return e[t]
        }

        function v(e, t) {
            var n = "x" === t ? "Left" : "Top", i = "Left" === n ? "Right" : "Bottom";
            return parseFloat(e["border" + n + "Width"]) + parseFloat(e["border" + i + "Width"])
        }

        function y(e, t, n, i) {
            return Math.max(t["offset" + e], t["scroll" + e], n["client" + e], n["offset" + e], n["scroll" + e], d(10) ? parseInt(n["offset" + e]) + parseInt(i["margin" + ("Height" === e ? "Top" : "Left")]) + parseInt(i["margin" + ("Height" === e ? "Bottom" : "Right")]) : 0)
        }

        function _(e) {
            var t = e.body, n = e.documentElement, i = d(10) && getComputedStyle(n);
            return {height: y("Height", t, n, i), width: y("Width", t, n, i)}
        }

        var b = function (e, t) {
            if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
        }, T = function () {
            function e(e, t) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                }
            }

            return function (t, n, i) {
                return n && e(t.prototype, n), i && e(t, i), t
            }
        }(), w = function (e, t, n) {
            return t in e ? Object.defineProperty(e, t, {value: n, enumerable: !0, configurable: !0, writable: !0}) : e[t] = n, e
        }, S = Object.assign || function (e) {
            for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i])
            }
            return e
        };

        function E(e) {
            return S({}, e, {right: e.left + e.width, bottom: e.top + e.height})
        }

        function C(e) {
            var t = {};
            try {
                if (d(10)) {
                    t = e.getBoundingClientRect();
                    var n = g(e, "top"), i = g(e, "left");
                    t.top += n, t.left += i, t.bottom += n, t.right += i
                } else t = e.getBoundingClientRect()
            } catch (e) {
            }
            var r = {left: t.left, top: t.top, width: t.right - t.left, height: t.bottom - t.top}, s = "HTML" === e.nodeName ? _(e.ownerDocument) : {}, o = s.width || e.clientWidth || r.width, l = s.height || e.clientHeight || r.height, u = e.offsetWidth - o, c = e.offsetHeight - l;
            if (u || c) {
                var h = a(e);
                u -= v(h, "x"), c -= v(h, "y"), r.width -= u, r.height -= c
            }
            return E(r)
        }

        function k(e, t) {
            var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], i = d(10), r = "HTML" === t.nodeName, s = C(e), o = C(t), u = l(e), c = a(t), h = parseFloat(c.borderTopWidth), f = parseFloat(c.borderLeftWidth);
            n && r && (o.top = Math.max(o.top, 0), o.left = Math.max(o.left, 0));
            var p = E({top: s.top - o.top - h, left: s.left - o.left - f, width: s.width, height: s.height});
            if (p.marginTop = 0, p.marginLeft = 0, !i && r) {
                var m = parseFloat(c.marginTop), v = parseFloat(c.marginLeft);
                p.top -= h - m, p.bottom -= h - m, p.left -= f - v, p.right -= f - v, p.marginTop = m, p.marginLeft = v
            }
            return (i && !n ? t.contains(u) : t === u && "BODY" !== u.nodeName) && (p = function (e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], i = g(t, "top"), r = g(t, "left"), s = n ? -1 : 1;
                return e.top += i * s, e.bottom += i * s, e.left += r * s, e.right += r * s, e
            }(p, t)), p
        }

        function x(e) {
            if (!e || !e.parentElement || d()) return document.documentElement;
            for (var t = e.parentElement; t && "none" === a(t, "transform");) t = t.parentElement;
            return t || document.documentElement
        }

        function A(e, t, n, i) {
            var r = arguments.length > 4 && void 0 !== arguments[4] && arguments[4], s = {top: 0, left: 0}, c = r ? x(e) : m(e, u(t));
            if ("viewport" === i) s = function (e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = e.ownerDocument.documentElement, i = k(e, n), r = Math.max(n.clientWidth, window.innerWidth || 0), s = Math.max(n.clientHeight, window.innerHeight || 0), a = t ? 0 : g(n), o = t ? 0 : g(n, "left");
                return E({top: a - i.top + i.marginTop, left: o - i.left + i.marginLeft, width: r, height: s})
            }(c, r); else {
                var h = void 0;
                "scrollParent" === i ? "BODY" === (h = l(o(t))).nodeName && (h = e.ownerDocument.documentElement) : h = "window" === i ? e.ownerDocument.documentElement : i;
                var d = k(h, c, r);
                if ("HTML" !== h.nodeName || function e(t) {
                    var n = t.nodeName;
                    if ("BODY" === n || "HTML" === n) return !1;
                    if ("fixed" === a(t, "position")) return !0;
                    var i = o(t);
                    return !!i && e(i)
                }(c)) s = d; else {
                    var f = _(e.ownerDocument), p = f.height, v = f.width;
                    s.top += d.top - d.marginTop, s.bottom = p + d.top, s.left += d.left - d.marginLeft, s.right = v + d.left
                }
            }
            var y = "number" == typeof (n = n || 0);
            return s.left += y ? n : n.left || 0, s.top += y ? n : n.top || 0, s.right -= y ? n : n.right || 0, s.bottom -= y ? n : n.bottom || 0, s
        }

        function D(e, t, n, i, r) {
            var s = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0;
            if (-1 === e.indexOf("auto")) return e;
            var a = A(n, i, s, r), o = {top: {width: a.width, height: t.top - a.top}, right: {width: a.right - t.right, height: a.height}, bottom: {width: a.width, height: a.bottom - t.bottom}, left: {width: t.left - a.left, height: a.height}}, l = Object.keys(o).map((function (e) {
                return S({key: e}, o[e], {area: (t = o[e], t.width * t.height)});
                var t
            })).sort((function (e, t) {
                return t.area - e.area
            })), u = l.filter((function (e) {
                var t = e.width, i = e.height;
                return t >= n.clientWidth && i >= n.clientHeight
            })), c = u.length > 0 ? u[0].key : l[0].key, h = e.split("-")[1];
            return c + (h ? "-" + h : "")
        }

        function I(e, t, n) {
            var i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null;
            return k(n, i ? x(t) : m(t, u(n)), i)
        }

        function P(e) {
            var t = e.ownerDocument.defaultView.getComputedStyle(e), n = parseFloat(t.marginTop || 0) + parseFloat(t.marginBottom || 0), i = parseFloat(t.marginLeft || 0) + parseFloat(t.marginRight || 0);
            return {width: e.offsetWidth + i, height: e.offsetHeight + n}
        }

        function O(e) {
            var t = {left: "right", right: "left", bottom: "top", top: "bottom"};
            return e.replace(/left|right|bottom|top/g, (function (e) {
                return t[e]
            }))
        }

        function L(e, t, n) {
            n = n.split("-")[0];
            var i = P(e), r = {width: i.width, height: i.height}, s = -1 !== ["right", "left"].indexOf(n), a = s ? "top" : "left", o = s ? "left" : "top", l = s ? "height" : "width", u = s ? "width" : "height";
            return r[a] = t[a] + t[l] / 2 - i[l] / 2, r[o] = n === o ? t[o] - i[u] : t[O(o)], r
        }

        function N(e, t) {
            return Array.prototype.find ? e.find(t) : e.filter(t)[0]
        }

        function R(e, t, n) {
            return (void 0 === n ? e : e.slice(0, function (e, t, n) {
                if (Array.prototype.findIndex) return e.findIndex((function (e) {
                    return e[t] === n
                }));
                var i = N(e, (function (e) {
                    return e[t] === n
                }));
                return e.indexOf(i)
            }(e, "name", n))).forEach((function (e) {
                e.function && console.warn("`modifier.function` is deprecated, use `modifier.fn`!");
                var n = e.function || e.fn;
                e.enabled && s(n) && (t.offsets.popper = E(t.offsets.popper), t.offsets.reference = E(t.offsets.reference), t = n(t, e))
            })), t
        }

        function U() {
            if (!this.state.isDestroyed) {
                var e = {instance: this, styles: {}, arrowStyles: {}, attributes: {}, flipped: !1, offsets: {}};
                e.offsets.reference = I(this.state, this.popper, this.reference, this.options.positionFixed), e.placement = D(this.options.placement, e.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding), e.originalPlacement = e.placement, e.positionFixed = this.options.positionFixed, e.offsets.popper = L(this.popper, e.offsets.reference, e.placement), e.offsets.popper.position = this.options.positionFixed ? "fixed" : "absolute", e = R(this.modifiers, e), this.state.isCreated ? this.options.onUpdate(e) : (this.state.isCreated = !0, this.options.onCreate(e))
            }
        }

        function M(e, t) {
            return e.some((function (e) {
                var n = e.name;
                return e.enabled && n === t
            }))
        }

        function B(e) {
            for (var t = [!1, "ms", "Webkit", "Moz", "O"], n = e.charAt(0).toUpperCase() + e.slice(1), i = 0; i < t.length; i++) {
                var r = t[i], s = r ? "" + r + n : e;
                if (void 0 !== document.body.style[s]) return s
            }
            return null
        }

        function j() {
            return this.state.isDestroyed = !0, M(this.modifiers, "applyStyle") && (this.popper.removeAttribute("x-placement"), this.popper.style.position = "", this.popper.style.top = "", this.popper.style.left = "", this.popper.style.right = "", this.popper.style.bottom = "", this.popper.style.willChange = "", this.popper.style[B("transform")] = ""), this.disableEventListeners(), this.options.removeOnDestroy && this.popper.parentNode.removeChild(this.popper), this
        }

        function F(e) {
            var t = e.ownerDocument;
            return t ? t.defaultView : window
        }

        function H(e, t, n, i) {
            n.updateBound = i, F(e).addEventListener("resize", n.updateBound, {passive: !0});
            var r = l(e);
            return function e(t, n, i, r) {
                var s = "BODY" === t.nodeName, a = s ? t.ownerDocument.defaultView : t;
                a.addEventListener(n, i, {passive: !0}), s || e(l(a.parentNode), n, i, r), r.push(a)
            }(r, "scroll", n.updateBound, n.scrollParents), n.scrollElement = r, n.eventsEnabled = !0, n
        }

        function q() {
            this.state.eventsEnabled || (this.state = H(this.reference, this.options, this.state, this.scheduleUpdate))
        }

        function V() {
            var e, t;
            this.state.eventsEnabled && (cancelAnimationFrame(this.scheduleUpdate), this.state = (e = this.reference, t = this.state, F(e).removeEventListener("resize", t.updateBound), t.scrollParents.forEach((function (e) {
                e.removeEventListener("scroll", t.updateBound)
            })), t.updateBound = null, t.scrollParents = [], t.scrollElement = null, t.eventsEnabled = !1, t))
        }

        function W(e) {
            return "" !== e && !isNaN(parseFloat(e)) && isFinite(e)
        }

        function z(e, t) {
            Object.keys(t).forEach((function (n) {
                var i = "";
                -1 !== ["width", "height", "top", "right", "bottom", "left"].indexOf(n) && W(t[n]) && (i = "px"), e.style[n] = t[n] + i
            }))
        }

        var G = n && /Firefox/i.test(navigator.userAgent);

        function Y(e, t, n) {
            var i = N(e, (function (e) {
                return e.name === t
            })), r = !!i && e.some((function (e) {
                return e.name === n && e.enabled && e.order < i.order
            }));
            if (!r) {
                var s = "`" + t + "`", a = "`" + n + "`";
                console.warn(a + " modifier is required by " + s + " modifier in order to work, be sure to include it before " + s + "!")
            }
            return r
        }

        var X = ["auto-start", "auto", "auto-end", "top-start", "top", "top-end", "right-start", "right", "right-end", "bottom-end", "bottom", "bottom-start", "left-end", "left", "left-start"], K = X.slice(3);

        function $(e) {
            var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = K.indexOf(e), i = K.slice(n + 1).concat(K.slice(0, n));
            return t ? i.reverse() : i
        }

        var Q = {FLIP: "flip", CLOCKWISE: "clockwise", COUNTERCLOCKWISE: "counterclockwise"};

        function J(e, t, n, i) {
            var r = [0, 0], s = -1 !== ["right", "left"].indexOf(i), a = e.split(/(\+|\-)/).map((function (e) {
                return e.trim()
            })), o = a.indexOf(N(a, (function (e) {
                return -1 !== e.search(/,|\s/)
            })));
            a[o] && -1 === a[o].indexOf(",") && console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");
            var l = /\s*,\s*|\s+/, u = -1 !== o ? [a.slice(0, o).concat([a[o].split(l)[0]]), [a[o].split(l)[1]].concat(a.slice(o + 1))] : [a];
            return (u = u.map((function (e, i) {
                var r = (1 === i ? !s : s) ? "height" : "width", a = !1;
                return e.reduce((function (e, t) {
                    return "" === e[e.length - 1] && -1 !== ["+", "-"].indexOf(t) ? (e[e.length - 1] = t, a = !0, e) : a ? (e[e.length - 1] += t, a = !1, e) : e.concat(t)
                }), []).map((function (e) {
                    return function (e, t, n, i) {
                        var r = e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/), s = +r[1], a = r[2];
                        if (!s) return e;
                        if (0 === a.indexOf("%")) {
                            var o = void 0;
                            switch (a) {
                                case"%p":
                                    o = n;
                                    break;
                                case"%":
                                case"%r":
                                default:
                                    o = i
                            }
                            return E(o)[t] / 100 * s
                        }
                        if ("vh" === a || "vw" === a) {
                            return ("vh" === a ? Math.max(document.documentElement.clientHeight, window.innerHeight || 0) : Math.max(document.documentElement.clientWidth, window.innerWidth || 0)) / 100 * s
                        }
                        return s
                    }(e, r, t, n)
                }))
            }))).forEach((function (e, t) {
                e.forEach((function (n, i) {
                    W(n) && (r[t] += n * ("-" === e[i - 1] ? -1 : 1))
                }))
            })), r
        }

        var Z = {
            placement: "bottom", positionFixed: !1, eventsEnabled: !0, removeOnDestroy: !1, onCreate: function () {
            }, onUpdate: function () {
            }, modifiers: {
                shift: {
                    order: 100, enabled: !0, fn: function (e) {
                        var t = e.placement, n = t.split("-")[0], i = t.split("-")[1];
                        if (i) {
                            var r = e.offsets, s = r.reference, a = r.popper, o = -1 !== ["bottom", "top"].indexOf(n), l = o ? "left" : "top", u = o ? "width" : "height", c = {start: w({}, l, s[l]), end: w({}, l, s[l] + s[u] - a[u])};
                            e.offsets.popper = S({}, a, c[i])
                        }
                        return e
                    }
                }, offset: {
                    order: 200, enabled: !0, fn: function (e, t) {
                        var n = t.offset, i = e.placement, r = e.offsets, s = r.popper, a = r.reference, o = i.split("-")[0], l = void 0;
                        return l = W(+n) ? [+n, 0] : J(n, s, a, o), "left" === o ? (s.top += l[0], s.left -= l[1]) : "right" === o ? (s.top += l[0], s.left += l[1]) : "top" === o ? (s.left += l[0], s.top -= l[1]) : "bottom" === o && (s.left += l[0], s.top += l[1]), e.popper = s, e
                    }, offset: 0
                }, preventOverflow: {
                    order: 300, enabled: !0, fn: function (e, t) {
                        var n = t.boundariesElement || f(e.instance.popper);
                        e.instance.reference === n && (n = f(n));
                        var i = B("transform"), r = e.instance.popper.style, s = r.top, a = r.left, o = r[i];
                        r.top = "", r.left = "", r[i] = "";
                        var l = A(e.instance.popper, e.instance.reference, t.padding, n, e.positionFixed);
                        r.top = s, r.left = a, r[i] = o, t.boundaries = l;
                        var u = t.priority, c = e.offsets.popper, h = {
                            primary: function (e) {
                                var n = c[e];
                                return c[e] < l[e] && !t.escapeWithReference && (n = Math.max(c[e], l[e])), w({}, e, n)
                            }, secondary: function (e) {
                                var n = "right" === e ? "left" : "top", i = c[n];
                                return c[e] > l[e] && !t.escapeWithReference && (i = Math.min(c[n], l[e] - ("right" === e ? c.width : c.height))), w({}, n, i)
                            }
                        };
                        return u.forEach((function (e) {
                            var t = -1 !== ["left", "top"].indexOf(e) ? "primary" : "secondary";
                            c = S({}, c, h[t](e))
                        })), e.offsets.popper = c, e
                    }, priority: ["left", "right", "top", "bottom"], padding: 5, boundariesElement: "scrollParent"
                }, keepTogether: {
                    order: 400, enabled: !0, fn: function (e) {
                        var t = e.offsets, n = t.popper, i = t.reference, r = e.placement.split("-")[0], s = Math.floor, a = -1 !== ["top", "bottom"].indexOf(r), o = a ? "right" : "bottom", l = a ? "left" : "top", u = a ? "width" : "height";
                        return n[o] < s(i[l]) && (e.offsets.popper[l] = s(i[l]) - n[u]), n[l] > s(i[o]) && (e.offsets.popper[l] = s(i[o])), e
                    }
                }, arrow: {
                    order: 500, enabled: !0, fn: function (e, t) {
                        var n;
                        if (!Y(e.instance.modifiers, "arrow", "keepTogether")) return e;
                        var i = t.element;
                        if ("string" == typeof i) {
                            if (!(i = e.instance.popper.querySelector(i))) return e
                        } else if (!e.instance.popper.contains(i)) return console.warn("WARNING: `arrow.element` must be child of its popper element!"), e;
                        var r = e.placement.split("-")[0], s = e.offsets, o = s.popper, l = s.reference, u = -1 !== ["left", "right"].indexOf(r), c = u ? "height" : "width", h = u ? "Top" : "Left", d = h.toLowerCase(), f = u ? "left" : "top", p = u ? "bottom" : "right", m = P(i)[c];
                        l[p] - m < o[d] && (e.offsets.popper[d] -= o[d] - (l[p] - m)), l[d] + m > o[p] && (e.offsets.popper[d] += l[d] + m - o[p]), e.offsets.popper = E(e.offsets.popper);
                        var g = l[d] + l[c] / 2 - m / 2, v = a(e.instance.popper), y = parseFloat(v["margin" + h]), _ = parseFloat(v["border" + h + "Width"]), b = g - e.offsets.popper[d] - y - _;
                        return b = Math.max(Math.min(o[c] - m, b), 0), e.arrowElement = i, e.offsets.arrow = (w(n = {}, d, Math.round(b)), w(n, f, ""), n), e
                    }, element: "[x-arrow]"
                }, flip: {
                    order: 600, enabled: !0, fn: function (e, t) {
                        if (M(e.instance.modifiers, "inner")) return e;
                        if (e.flipped && e.placement === e.originalPlacement) return e;
                        var n = A(e.instance.popper, e.instance.reference, t.padding, t.boundariesElement, e.positionFixed), i = e.placement.split("-")[0], r = O(i), s = e.placement.split("-")[1] || "", a = [];
                        switch (t.behavior) {
                            case Q.FLIP:
                                a = [i, r];
                                break;
                            case Q.CLOCKWISE:
                                a = $(i);
                                break;
                            case Q.COUNTERCLOCKWISE:
                                a = $(i, !0);
                                break;
                            default:
                                a = t.behavior
                        }
                        return a.forEach((function (o, l) {
                            if (i !== o || a.length === l + 1) return e;
                            i = e.placement.split("-")[0], r = O(i);
                            var u = e.offsets.popper, c = e.offsets.reference, h = Math.floor, d = "left" === i && h(u.right) > h(c.left) || "right" === i && h(u.left) < h(c.right) || "top" === i && h(u.bottom) > h(c.top) || "bottom" === i && h(u.top) < h(c.bottom), f = h(u.left) < h(n.left), p = h(u.right) > h(n.right), m = h(u.top) < h(n.top), g = h(u.bottom) > h(n.bottom), v = "left" === i && f || "right" === i && p || "top" === i && m || "bottom" === i && g, y = -1 !== ["top", "bottom"].indexOf(i), _ = !!t.flipVariations && (y && "start" === s && f || y && "end" === s && p || !y && "start" === s && m || !y && "end" === s && g), b = !!t.flipVariationsByContent && (y && "start" === s && p || y && "end" === s && f || !y && "start" === s && g || !y && "end" === s && m), T = _ || b;
                            (d || v || T) && (e.flipped = !0, (d || v) && (i = a[l + 1]), T && (s = function (e) {
                                return "end" === e ? "start" : "start" === e ? "end" : e
                            }(s)), e.placement = i + (s ? "-" + s : ""), e.offsets.popper = S({}, e.offsets.popper, L(e.instance.popper, e.offsets.reference, e.placement)), e = R(e.instance.modifiers, e, "flip"))
                        })), e
                    }, behavior: "flip", padding: 5, boundariesElement: "viewport", flipVariations: !1, flipVariationsByContent: !1
                }, inner: {
                    order: 700, enabled: !1, fn: function (e) {
                        var t = e.placement, n = t.split("-")[0], i = e.offsets, r = i.popper, s = i.reference, a = -1 !== ["left", "right"].indexOf(n), o = -1 === ["top", "left"].indexOf(n);
                        return r[a ? "left" : "top"] = s[n] - (o ? r[a ? "width" : "height"] : 0), e.placement = O(t), e.offsets.popper = E(r), e
                    }
                }, hide: {
                    order: 800, enabled: !0, fn: function (e) {
                        if (!Y(e.instance.modifiers, "hide", "preventOverflow")) return e;
                        var t = e.offsets.reference, n = N(e.instance.modifiers, (function (e) {
                            return "preventOverflow" === e.name
                        })).boundaries;
                        if (t.bottom < n.top || t.left > n.right || t.top > n.bottom || t.right < n.left) {
                            if (!0 === e.hide) return e;
                            e.hide = !0, e.attributes["x-out-of-boundaries"] = ""
                        } else {
                            if (!1 === e.hide) return e;
                            e.hide = !1, e.attributes["x-out-of-boundaries"] = !1
                        }
                        return e
                    }
                }, computeStyle: {
                    order: 850, enabled: !0, fn: function (e, t) {
                        var n = t.x, i = t.y, r = e.offsets.popper, s = N(e.instance.modifiers, (function (e) {
                            return "applyStyle" === e.name
                        })).gpuAcceleration;
                        void 0 !== s && console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");
                        var a = void 0 !== s ? s : t.gpuAcceleration, o = f(e.instance.popper), l = C(o), u = {position: r.position}, c = function (e, t) {
                            var n = e.offsets, i = n.popper, r = n.reference, s = Math.round, a = Math.floor, o = function (e) {
                                return e
                            }, l = s(r.width), u = s(i.width), c = -1 !== ["left", "right"].indexOf(e.placement), h = -1 !== e.placement.indexOf("-"), d = t ? c || h || l % 2 == u % 2 ? s : a : o, f = t ? s : o;
                            return {left: d(l % 2 == 1 && u % 2 == 1 && !h && t ? i.left - 1 : i.left), top: f(i.top), bottom: f(i.bottom), right: d(i.right)}
                        }(e, window.devicePixelRatio < 2 || !G), h = "bottom" === n ? "top" : "bottom", d = "right" === i ? "left" : "right", p = B("transform"), m = void 0, g = void 0;
                        if (g = "bottom" === h ? "HTML" === o.nodeName ? -o.clientHeight + c.bottom : -l.height + c.bottom : c.top, m = "right" === d ? "HTML" === o.nodeName ? -o.clientWidth + c.right : -l.width + c.right : c.left, a && p) u[p] = "translate3d(" + m + "px, " + g + "px, 0)", u[h] = 0, u[d] = 0, u.willChange = "transform"; else {
                            var v = "bottom" === h ? -1 : 1, y = "right" === d ? -1 : 1;
                            u[h] = g * v, u[d] = m * y, u.willChange = h + ", " + d
                        }
                        var _ = {"x-placement": e.placement};
                        return e.attributes = S({}, _, e.attributes), e.styles = S({}, u, e.styles), e.arrowStyles = S({}, e.offsets.arrow, e.arrowStyles), e
                    }, gpuAcceleration: !0, x: "bottom", y: "right"
                }, applyStyle: {
                    order: 900, enabled: !0, fn: function (e) {
                        var t, n;
                        return z(e.instance.popper, e.styles), t = e.instance.popper, n = e.attributes, Object.keys(n).forEach((function (e) {
                            !1 !== n[e] ? t.setAttribute(e, n[e]) : t.removeAttribute(e)
                        })), e.arrowElement && Object.keys(e.arrowStyles).length && z(e.arrowElement, e.arrowStyles), e
                    }, onLoad: function (e, t, n, i, r) {
                        var s = I(r, t, e, n.positionFixed), a = D(n.placement, s, t, e, n.modifiers.flip.boundariesElement, n.modifiers.flip.padding);
                        return t.setAttribute("x-placement", a), z(t, {position: n.positionFixed ? "fixed" : "absolute"}), n
                    }, gpuAcceleration: void 0
                }
            }
        }, ee = function () {
            function e(t, n) {
                var i = this, a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                b(this, e), this.scheduleUpdate = function () {
                    return requestAnimationFrame(i.update)
                }, this.update = r(this.update.bind(this)), this.options = S({}, e.Defaults, a), this.state = {isDestroyed: !1, isCreated: !1, scrollParents: []}, this.reference = t && t.jquery ? t[0] : t, this.popper = n && n.jquery ? n[0] : n, this.options.modifiers = {}, Object.keys(S({}, e.Defaults.modifiers, a.modifiers)).forEach((function (t) {
                    i.options.modifiers[t] = S({}, e.Defaults.modifiers[t] || {}, a.modifiers ? a.modifiers[t] : {})
                })), this.modifiers = Object.keys(this.options.modifiers).map((function (e) {
                    return S({name: e}, i.options.modifiers[e])
                })).sort((function (e, t) {
                    return e.order - t.order
                })), this.modifiers.forEach((function (e) {
                    e.enabled && s(e.onLoad) && e.onLoad(i.reference, i.popper, i.options, e, i.state)
                })), this.update();
                var o = this.options.eventsEnabled;
                o && this.enableEventListeners(), this.state.eventsEnabled = o
            }

            return T(e, [{
                key: "update", value: function () {
                    return U.call(this)
                }
            }, {
                key: "destroy", value: function () {
                    return j.call(this)
                }
            }, {
                key: "enableEventListeners", value: function () {
                    return q.call(this)
                }
            }, {
                key: "disableEventListeners", value: function () {
                    return V.call(this)
                }
            }]), e
        }();
        ee.Utils = ("undefined" != typeof window ? window : e).PopperUtils, ee.placements = X, ee.Defaults = Z, t.default = ee
    }.call(this, n(6))
}, function (e, t) {
}, function (e, t, n) {
    var i = n(32), r = n(4);
    e.exports = function (e, t) {
        return !t || "object" !== i(t) && "function" != typeof t ? r(e) : t
    }
}, function (e, t) {
    function n(t) {
        return "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? e.exports = n = function (e) {
            return typeof e
        } : e.exports = n = function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        }, n(t)
    }

    e.exports = n
}, function (e, t) {
    function n(t) {
        return e.exports = n = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        }, n(t)
    }

    e.exports = n
}, function (e, t, n) {
    (function (t) {
        var n;
        n = "undefined" != typeof window ? window : void 0 !== t ? t : "undefined" != typeof self ? self : {}, e.exports = n
    }).call(this, n(6))
}, function (e, t) {
    function n() {
        return e.exports = n = Object.assign || function (e) {
            for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i])
            }
            return e
        }, n.apply(this, arguments)
    }

    e.exports = n
}, function (e, t) {
    e.exports = function (e) {
        if (!e) return !1;
        var t = n.call(e);
        return "[object Function]" === t || "function" == typeof e && "[object RegExp]" !== t || "undefined" != typeof window && (e === window.setTimeout || e === window.alert || e === window.confirm || e === window.prompt)
    };
    var n = Object.prototype.toString
}, function (e, t, n) {
    var i = n(1), r = Object.create || function () {
        function e() {
        }

        return function (t) {
            if (1 !== arguments.length) throw new Error("Object.create shim only accepts one parameter.");
            return e.prototype = t, new e
        }
    }();

    function s(e, t) {
        this.name = "ParsingError", this.code = e.code, this.message = t || e.message
    }

    function a(e) {
        function t(e, t, n, i) {
            return 3600 * (0 | e) + 60 * (0 | t) + (0 | n) + (0 | i) / 1e3
        }

        var n = e.match(/^(\d+):(\d{1,2})(:\d{1,2})?\.(\d{3})/);
        return n ? n[3] ? t(n[1], n[2], n[3].replace(":", ""), n[4]) : n[1] > 59 ? t(n[1], n[2], 0, n[4]) : t(0, n[1], n[2], n[4]) : null
    }

    function o() {
        this.values = r(null)
    }

    function l(e, t, n, i) {
        var r = i ? e.split(i) : [e];
        for (var s in r) if ("string" == typeof r[s]) {
            var a = r[s].split(n);
            if (2 === a.length) t(a[0], a[1])
        }
    }

    function u(e, t, n) {
        var i = e;

        function r() {
            var t = a(e);
            if (null === t) throw new s(s.Errors.BadTimeStamp, "Malformed timestamp: " + i);
            return e = e.replace(/^[^\sa-zA-Z-]+/, ""), t
        }

        function u() {
            e = e.replace(/^\s+/, "")
        }

        if (u(), t.startTime = r(), u(), "--\x3e" !== e.substr(0, 3)) throw new s(s.Errors.BadTimeStamp, "Malformed time stamp (time stamps must be separated by '--\x3e'): " + i);
        e = e.substr(3), u(), t.endTime = r(), u(), function (e, t) {
            var i = new o;
            l(e, (function (e, t) {
                switch (e) {
                    case"region":
                        for (var r = n.length - 1; r >= 0; r--) if (n[r].id === t) {
                            i.set(e, n[r].region);
                            break
                        }
                        break;
                    case"vertical":
                        i.alt(e, t, ["rl", "lr"]);
                        break;
                    case"line":
                        var s = t.split(","), a = s[0];
                        i.integer(e, a), i.percent(e, a) && i.set("snapToLines", !1), i.alt(e, a, ["auto"]), 2 === s.length && i.alt("lineAlign", s[1], ["start", "center", "end"]);
                        break;
                    case"position":
                        s = t.split(","), i.percent(e, s[0]), 2 === s.length && i.alt("positionAlign", s[1], ["start", "center", "end"]);
                        break;
                    case"size":
                        i.percent(e, t);
                        break;
                    case"align":
                        i.alt(e, t, ["start", "center", "end", "left", "right"])
                }
            }), /:/, /\s/), t.region = i.get("region", null), t.vertical = i.get("vertical", "");
            try {
                t.line = i.get("line", "auto")
            } catch (e) {
            }
            t.lineAlign = i.get("lineAlign", "start"), t.snapToLines = i.get("snapToLines", !0), t.size = i.get("size", 100);
            try {
                t.align = i.get("align", "center")
            } catch (e) {
                t.align = i.get("align", "middle")
            }
            try {
                t.position = i.get("position", "auto")
            } catch (e) {
                t.position = i.get("position", {start: 0, left: 0, center: 50, middle: 50, end: 100, right: 100}, t.align)
            }
            t.positionAlign = i.get("positionAlign", {start: "start", left: "start", center: "center", middle: "center", end: "end", right: "end"}, t.align)
        }(e, t)
    }

    s.prototype = r(Error.prototype), s.prototype.constructor = s, s.Errors = {BadSignature: {code: 0, message: "Malformed WebVTT signature."}, BadTimeStamp: {code: 1, message: "Malformed time stamp."}}, o.prototype = {
        set: function (e, t) {
            this.get(e) || "" === t || (this.values[e] = t)
        }, get: function (e, t, n) {
            return n ? this.has(e) ? this.values[e] : t[n] : this.has(e) ? this.values[e] : t
        }, has: function (e) {
            return e in this.values
        }, alt: function (e, t, n) {
            for (var i = 0; i < n.length; ++i) if (t === n[i]) {
                this.set(e, t);
                break
            }
        }, integer: function (e, t) {
            /^-?\d+$/.test(t) && this.set(e, parseInt(t, 10))
        }, percent: function (e, t) {
            return !!(t.match(/^([\d]{1,3})(\.[\d]*)?%$/) && (t = parseFloat(t)) >= 0 && t <= 100) && (this.set(e, t), !0)
        }
    };
    var c = i.createElement("textarea"), h = {c: "span", i: "i", b: "b", u: "u", ruby: "ruby", rt: "rt", v: "span", lang: "span"}, d = {white: "rgba(255,255,255,1)", lime: "rgba(0,255,0,1)", cyan: "rgba(0,255,255,1)", red: "rgba(255,0,0,1)", yellow: "rgba(255,255,0,1)", magenta: "rgba(255,0,255,1)", blue: "rgba(0,0,255,1)", black: "rgba(0,0,0,1)"}, f = {v: "title", lang: "lang"}, p = {rt: "ruby"};

    function m(e, t) {
        function n() {
            if (!t) return null;
            var e, n = t.match(/^([^<]*)(<[^>]*>?)?/);
            return e = n[1] ? n[1] : n[2], t = t.substr(e.length), e
        }

        function i(e, t) {
            return !p[t.localName] || p[t.localName] === e.localName
        }

        function r(t, n) {
            var i = h[t];
            if (!i) return null;
            var r = e.document.createElement(i), s = f[t];
            return s && n && (r[s] = n.trim()), r
        }

        for (var s, o, l = e.document.createElement("div"), u = l, m = []; null !== (s = n());) if ("<" !== s[0]) u.appendChild(e.document.createTextNode((o = s, c.innerHTML = o, o = c.textContent, c.textContent = "", o))); else {
            if ("/" === s[1]) {
                m.length && m[m.length - 1] === s.substr(2).replace(">", "") && (m.pop(), u = u.parentNode);
                continue
            }
            var g, v = a(s.substr(1, s.length - 2));
            if (v) {
                g = e.document.createProcessingInstruction("timestamp", v), u.appendChild(g);
                continue
            }
            var y = s.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/);
            if (!y) continue;
            if (!(g = r(y[1], y[3]))) continue;
            if (!i(u, g)) continue;
            if (y[2]) {
                var _ = y[2].split(".");
                _.forEach((function (e) {
                    var t = /^bg_/.test(e), n = t ? e.slice(3) : e;
                    if (d.hasOwnProperty(n)) {
                        var i = t ? "background-color" : "color", r = d[n];
                        g.style[i] = r
                    }
                })), g.className = _.join(" ")
            }
            m.push(y[1]), u.appendChild(g), u = g
        }
        return l
    }

    var g = [[1470, 1470], [1472, 1472], [1475, 1475], [1478, 1478], [1488, 1514], [1520, 1524], [1544, 1544], [1547, 1547], [1549, 1549], [1563, 1563], [1566, 1610], [1645, 1647], [1649, 1749], [1765, 1766], [1774, 1775], [1786, 1805], [1807, 1808], [1810, 1839], [1869, 1957], [1969, 1969], [1984, 2026], [2036, 2037], [2042, 2042], [2048, 2069], [2074, 2074], [2084, 2084], [2088, 2088], [2096, 2110], [2112, 2136], [2142, 2142], [2208, 2208], [2210, 2220], [8207, 8207], [64285, 64285], [64287, 64296], [64298, 64310], [64312, 64316], [64318, 64318], [64320, 64321], [64323, 64324], [64326, 64449], [64467, 64829], [64848, 64911], [64914, 64967], [65008, 65020], [65136, 65140], [65142, 65276], [67584, 67589], [67592, 67592], [67594, 67637], [67639, 67640], [67644, 67644], [67647, 67669], [67671, 67679], [67840, 67867], [67872, 67897], [67903, 67903], [67968, 68023], [68030, 68031], [68096, 68096], [68112, 68115], [68117, 68119], [68121, 68147], [68160, 68167], [68176, 68184], [68192, 68223], [68352, 68405], [68416, 68437], [68440, 68466], [68472, 68479], [68608, 68680], [126464, 126467], [126469, 126495], [126497, 126498], [126500, 126500], [126503, 126503], [126505, 126514], [126516, 126519], [126521, 126521], [126523, 126523], [126530, 126530], [126535, 126535], [126537, 126537], [126539, 126539], [126541, 126543], [126545, 126546], [126548, 126548], [126551, 126551], [126553, 126553], [126555, 126555], [126557, 126557], [126559, 126559], [126561, 126562], [126564, 126564], [126567, 126570], [126572, 126578], [126580, 126583], [126585, 126588], [126590, 126590], [126592, 126601], [126603, 126619], [126625, 126627], [126629, 126633], [126635, 126651], [1114109, 1114109]];

    function v(e) {
        for (var t = 0; t < g.length; t++) {
            var n = g[t];
            if (e >= n[0] && e <= n[1]) return !0
        }
        return !1
    }

    function y(e) {
        var t = [], n = "";
        if (!e || !e.childNodes) return "ltr";

        function i(e, t) {
            for (var n = t.childNodes.length - 1; n >= 0; n--) e.push(t.childNodes[n])
        }

        function r(e) {
            if (!e || !e.length) return null;
            var t = e.pop(), n = t.textContent || t.innerText;
            if (n) {
                var s = n.match(/^.*(\n|\r)/);
                return s ? (e.length = 0, s[0]) : n
            }
            return "ruby" === t.tagName ? r(e) : t.childNodes ? (i(e, t), r(e)) : void 0
        }

        for (i(t, e); n = r(t);) for (var s = 0; s < n.length; s++) if (v(n.charCodeAt(s))) return "rtl";
        return "ltr"
    }

    function _() {
    }

    function b(e, t, n) {
        _.call(this), this.cue = t, this.cueDiv = m(e, t.text);
        var i = {color: "rgba(255, 255, 255, 1)", backgroundColor: "rgba(0, 0, 0, 0.8)", position: "relative", left: 0, right: 0, top: 0, bottom: 0, display: "inline", writingMode: "" === t.vertical ? "horizontal-tb" : "lr" === t.vertical ? "vertical-lr" : "vertical-rl", unicodeBidi: "plaintext"};
        this.applyStyles(i, this.cueDiv), this.div = e.document.createElement("div"), i = {direction: y(this.cueDiv), writingMode: "" === t.vertical ? "horizontal-tb" : "lr" === t.vertical ? "vertical-lr" : "vertical-rl", unicodeBidi: "plaintext", textAlign: "middle" === t.align ? "center" : t.align, font: n.font, whiteSpace: "pre-line", position: "absolute"}, this.applyStyles(i), this.div.appendChild(this.cueDiv);
        var r = 0;
        switch (t.positionAlign) {
            case"start":
                r = t.position;
                break;
            case"center":
                r = t.position - t.size / 2;
                break;
            case"end":
                r = t.position - t.size
        }
        "" === t.vertical ? this.applyStyles({left: this.formatStyle(r, "%"), width: this.formatStyle(t.size, "%")}) : this.applyStyles({top: this.formatStyle(r, "%"), height: this.formatStyle(t.size, "%")}), this.move = function (e) {
            this.applyStyles({top: this.formatStyle(e.top, "px"), bottom: this.formatStyle(e.bottom, "px"), left: this.formatStyle(e.left, "px"), right: this.formatStyle(e.right, "px"), height: this.formatStyle(e.height, "px"), width: this.formatStyle(e.width, "px")})
        }
    }

    function T(e) {
        var t, n, i, r;
        if (e.div) {
            n = e.div.offsetHeight, i = e.div.offsetWidth, r = e.div.offsetTop;
            var s = (s = e.div.childNodes) && (s = s[0]) && s.getClientRects && s.getClientRects();
            e = e.div.getBoundingClientRect(), t = s ? Math.max(s[0] && s[0].height || 0, e.height / s.length) : 0
        }
        this.left = e.left, this.right = e.right, this.top = e.top || r, this.height = e.height || n, this.bottom = e.bottom || r + (e.height || n), this.width = e.width || i, this.lineHeight = void 0 !== t ? t : e.lineHeight
    }

    function w(e, t, n, i) {
        var r = new T(t), s = t.cue, a = function (e) {
            if ("number" == typeof e.line && (e.snapToLines || e.line >= 0 && e.line <= 100)) return e.line;
            if (!e.track || !e.track.textTrackList || !e.track.textTrackList.mediaElement) return -1;
            for (var t = e.track, n = t.textTrackList, i = 0, r = 0; r < n.length && n[r] !== t; r++) "showing" === n[r].mode && i++;
            return -1 * ++i
        }(s), o = [];
        if (s.snapToLines) {
            var l;
            switch (s.vertical) {
                case"":
                    o = ["+y", "-y"], l = "height";
                    break;
                case"rl":
                    o = ["+x", "-x"], l = "width";
                    break;
                case"lr":
                    o = ["-x", "+x"], l = "width"
            }
            var u = r.lineHeight, c = u * Math.round(a), h = n[l] + u, d = o[0];
            Math.abs(c) > h && (c = c < 0 ? -1 : 1, c *= Math.ceil(h / u) * u), a < 0 && (c += "" === s.vertical ? n.height : n.width, o = o.reverse()), r.move(d, c)
        } else {
            var f = r.lineHeight / n.height * 100;
            switch (s.lineAlign) {
                case"center":
                    a -= f / 2;
                    break;
                case"end":
                    a -= f
            }
            switch (s.vertical) {
                case"":
                    t.applyStyles({top: t.formatStyle(a, "%")});
                    break;
                case"rl":
                    t.applyStyles({left: t.formatStyle(a, "%")});
                    break;
                case"lr":
                    t.applyStyles({right: t.formatStyle(a, "%")})
            }
            o = ["+y", "-x", "+x", "-y"], r = new T(t)
        }
        var p = function (e, t) {
            for (var r, s = new T(e), a = 1, o = 0; o < t.length; o++) {
                for (; e.overlapsOppositeAxis(n, t[o]) || e.within(n) && e.overlapsAny(i);) e.move(t[o]);
                if (e.within(n)) return e;
                var l = e.intersectPercentage(n);
                a > l && (r = new T(e), a = l), e = new T(s)
            }
            return r || s
        }(r, o);
        t.move(p.toCSSCompatValues(n))
    }

    function S() {
    }

    _.prototype.applyStyles = function (e, t) {
        for (var n in t = t || this.div, e) e.hasOwnProperty(n) && (t.style[n] = e[n])
    }, _.prototype.formatStyle = function (e, t) {
        return 0 === e ? 0 : e + t
    }, b.prototype = r(_.prototype), b.prototype.constructor = b, T.prototype.move = function (e, t) {
        switch (t = void 0 !== t ? t : this.lineHeight, e) {
            case"+x":
                this.left += t, this.right += t;
                break;
            case"-x":
                this.left -= t, this.right -= t;
                break;
            case"+y":
                this.top += t, this.bottom += t;
                break;
            case"-y":
                this.top -= t, this.bottom -= t
        }
    }, T.prototype.overlaps = function (e) {
        return this.left < e.right && this.right > e.left && this.top < e.bottom && this.bottom > e.top
    }, T.prototype.overlapsAny = function (e) {
        for (var t = 0; t < e.length; t++) if (this.overlaps(e[t])) return !0;
        return !1
    }, T.prototype.within = function (e) {
        return this.top >= e.top && this.bottom <= e.bottom && this.left >= e.left && this.right <= e.right
    }, T.prototype.overlapsOppositeAxis = function (e, t) {
        switch (t) {
            case"+x":
                return this.left < e.left;
            case"-x":
                return this.right > e.right;
            case"+y":
                return this.top < e.top;
            case"-y":
                return this.bottom > e.bottom
        }
    }, T.prototype.intersectPercentage = function (e) {
        return Math.max(0, Math.min(this.right, e.right) - Math.max(this.left, e.left)) * Math.max(0, Math.min(this.bottom, e.bottom) - Math.max(this.top, e.top)) / (this.height * this.width)
    }, T.prototype.toCSSCompatValues = function (e) {
        return {top: this.top - e.top, bottom: e.bottom - this.bottom, left: this.left - e.left, right: e.right - this.right, height: this.height, width: this.width}
    }, T.getSimpleBoxPosition = function (e) {
        var t = e.div ? e.div.offsetHeight : e.tagName ? e.offsetHeight : 0, n = e.div ? e.div.offsetWidth : e.tagName ? e.offsetWidth : 0, i = e.div ? e.div.offsetTop : e.tagName ? e.offsetTop : 0;
        return {left: (e = e.div ? e.div.getBoundingClientRect() : e.tagName ? e.getBoundingClientRect() : e).left, right: e.right, top: e.top || i, height: e.height || t, bottom: e.bottom || i + (e.height || t), width: e.width || n}
    }, S.StringDecoder = function () {
        return {
            decode: function (e) {
                if (!e) return "";
                if ("string" != typeof e) throw new Error("Error - expected string data.");
                return decodeURIComponent(encodeURIComponent(e))
            }
        }
    }, S.convertCueToDOMTree = function (e, t) {
        return e && t ? m(e, t) : null
    };
    S.processCues = function (e, t, n) {
        if (!e || !t || !n) return null;
        for (; n.firstChild;) n.removeChild(n.firstChild);
        var i = e.document.createElement("div");
        if (i.style.position = "absolute", i.style.left = "0", i.style.right = "0", i.style.top = "0", i.style.bottom = "0", i.style.margin = "1.5%", n.appendChild(i), function (e) {
            for (var t = 0; t < e.length; t++) if (e[t].hasBeenReset || !e[t].displayState) return !0;
            return !1
        }(t)) {
            var r = [], s = T.getSimpleBoxPosition(i), a = {font: Math.round(.05 * s.height * 100) / 100 + "px sans-serif"};
            !function () {
                for (var n, o, l = 0; l < t.length; l++) o = t[l], n = new b(e, o, a), i.appendChild(n.div), w(0, n, s, r), o.displayState = n.div, r.push(T.getSimpleBoxPosition(n))
            }()
        } else for (var o = 0; o < t.length; o++) i.appendChild(t[o].displayState)
    }, S.Parser = function (e, t, n) {
        n || (n = t, t = {}), t || (t = {}), this.window = e, this.vttjs = t, this.state = "INITIAL", this.buffer = "", this.decoder = n || new TextDecoder("utf8"), this.regionList = []
    }, S.Parser.prototype = {
        reportOrThrowError: function (e) {
            if (!(e instanceof s)) throw e;
            this.onparsingerror && this.onparsingerror(e)
        }, parse: function (e) {
            var t = this;

            function n() {
                for (var e = t.buffer, n = 0; n < e.length && "\r" !== e[n] && "\n" !== e[n];) ++n;
                var i = e.substr(0, n);
                return "\r" === e[n] && ++n, "\n" === e[n] && ++n, t.buffer = e.substr(n), i
            }

            function i(e) {
                e.match(/X-TIMESTAMP-MAP/) ? l(e, (function (e, n) {
                    switch (e) {
                        case"X-TIMESTAMP-MAP":
                            !function (e) {
                                var n = new o;
                                l(e, (function (e, t) {
                                    switch (e) {
                                        case"MPEGT":
                                            n.integer(e + "S", t);
                                            break;
                                        case"LOCA":
                                            n.set(e + "L", a(t))
                                    }
                                }), /[^\d]:/, /,/), t.ontimestampmap && t.ontimestampmap({MPEGTS: n.get("MPEGTS"), LOCAL: n.get("LOCAL")})
                            }(n)
                    }
                }), /=/) : l(e, (function (e, n) {
                    switch (e) {
                        case"Region":
                            !function (e) {
                                var n = new o;
                                if (l(e, (function (e, t) {
                                    switch (e) {
                                        case"id":
                                            n.set(e, t);
                                            break;
                                        case"width":
                                            n.percent(e, t);
                                            break;
                                        case"lines":
                                            n.integer(e, t);
                                            break;
                                        case"regionanchor":
                                        case"viewportanchor":
                                            var i = t.split(",");
                                            if (2 !== i.length) break;
                                            var r = new o;
                                            if (r.percent("x", i[0]), r.percent("y", i[1]), !r.has("x") || !r.has("y")) break;
                                            n.set(e + "X", r.get("x")), n.set(e + "Y", r.get("y"));
                                            break;
                                        case"scroll":
                                            n.alt(e, t, ["up"])
                                    }
                                }), /=/, /\s/), n.has("id")) {
                                    var i = new (t.vttjs.VTTRegion || t.window.VTTRegion);
                                    i.width = n.get("width", 100), i.lines = n.get("lines", 3), i.regionAnchorX = n.get("regionanchorX", 0), i.regionAnchorY = n.get("regionanchorY", 100), i.viewportAnchorX = n.get("viewportanchorX", 0), i.viewportAnchorY = n.get("viewportanchorY", 100), i.scroll = n.get("scroll", ""), t.onregion && t.onregion(i), t.regionList.push({id: n.get("id"), region: i})
                                }
                            }(n)
                    }
                }), /:/)
            }

            e && (t.buffer += t.decoder.decode(e, {stream: !0}));
            try {
                var r;
                if ("INITIAL" === t.state) {
                    if (!/\r\n|\n/.test(t.buffer)) return this;
                    var c = (r = n()).match(/^WEBVTT([ \t].*)?$/);
                    if (!c || !c[0]) throw new s(s.Errors.BadSignature);
                    t.state = "HEADER"
                }
                for (var h = !1; t.buffer;) {
                    if (!/\r\n|\n/.test(t.buffer)) return this;
                    switch (h ? h = !1 : r = n(), t.state) {
                        case"HEADER":
                            /:/.test(r) ? i(r) : r || (t.state = "ID");
                            continue;
                        case"NOTE":
                            r || (t.state = "ID");
                            continue;
                        case"ID":
                            if (/^NOTE($|[ \t])/.test(r)) {
                                t.state = "NOTE";
                                break
                            }
                            if (!r) continue;
                            t.cue = new (t.vttjs.VTTCue || t.window.VTTCue)(0, 0, "");
                            try {
                                t.cue.align = "center"
                            } catch (e) {
                                t.cue.align = "middle"
                            }
                            if (t.state = "CUE", -1 === r.indexOf("--\x3e")) {
                                t.cue.id = r;
                                continue
                            }
                        case"CUE":
                            try {
                                u(r, t.cue, t.regionList)
                            } catch (e) {
                                t.reportOrThrowError(e), t.cue = null, t.state = "BADCUE";
                                continue
                            }
                            t.state = "CUETEXT";
                            continue;
                        case"CUETEXT":
                            var d = -1 !== r.indexOf("--\x3e");
                            if (!r || d && (h = !0)) {
                                t.oncue && t.oncue(t.cue), t.cue = null, t.state = "ID";
                                continue
                            }
                            t.cue.text && (t.cue.text += "\n"), t.cue.text += r.replace(/\u2028/g, "\n").replace(/u2029/g, "\n");
                            continue;
                        case"BADCUE":
                            r || (t.state = "ID");
                            continue
                    }
                }
            } catch (e) {
                t.reportOrThrowError(e), "CUETEXT" === t.state && t.cue && t.oncue && t.oncue(t.cue), t.cue = null, t.state = "INITIAL" === t.state ? "BADWEBVTT" : "BADCUE"
            }
            return this
        }, flush: function () {
            try {
                if (this.buffer += this.decoder.decode(), (this.cue || "HEADER" === this.state) && (this.buffer += "\n\n", this.parse()), "INITIAL" === this.state) throw new s(s.Errors.BadSignature)
            } catch (e) {
                this.reportOrThrowError(e)
            }
            return this.onflush && this.onflush(), this
        }
    }, e.exports = S
}, function (e, t) {
    var n = "auto", i = {"": 1, lr: 1, rl: 1}, r = {start: 1, center: 1, end: 1, left: 1, right: 1, auto: 1, "line-left": 1, "line-right": 1};

    function s(e) {
        return "string" == typeof e && (!!r[e.toLowerCase()] && e.toLowerCase())
    }

    function a(e, t, r) {
        this.hasBeenReset = !1;
        var a = "", o = !1, l = e, u = t, c = r, h = null, d = "", f = !0, p = "auto", m = "start", g = "auto", v = "auto", y = 100, _ = "center";
        Object.defineProperties(this, {
            id: {
                enumerable: !0, get: function () {
                    return a
                }, set: function (e) {
                    a = "" + e
                }
            }, pauseOnExit: {
                enumerable: !0, get: function () {
                    return o
                }, set: function (e) {
                    o = !!e
                }
            }, startTime: {
                enumerable: !0, get: function () {
                    return l
                }, set: function (e) {
                    if ("number" != typeof e) throw new TypeError("Start time must be set to a number.");
                    l = e, this.hasBeenReset = !0
                }
            }, endTime: {
                enumerable: !0, get: function () {
                    return u
                }, set: function (e) {
                    if ("number" != typeof e) throw new TypeError("End time must be set to a number.");
                    u = e, this.hasBeenReset = !0
                }
            }, text: {
                enumerable: !0, get: function () {
                    return c
                }, set: function (e) {
                    c = "" + e, this.hasBeenReset = !0
                }
            }, region: {
                enumerable: !0, get: function () {
                    return h
                }, set: function (e) {
                    h = e, this.hasBeenReset = !0
                }
            }, vertical: {
                enumerable: !0, get: function () {
                    return d
                }, set: function (e) {
                    var t = function (e) {
                        return "string" == typeof e && (!!i[e.toLowerCase()] && e.toLowerCase())
                    }(e);
                    if (!1 === t) throw new SyntaxError("Vertical: an invalid or illegal direction string was specified.");
                    d = t, this.hasBeenReset = !0
                }
            }, snapToLines: {
                enumerable: !0, get: function () {
                    return f
                }, set: function (e) {
                    f = !!e, this.hasBeenReset = !0
                }
            }, line: {
                enumerable: !0, get: function () {
                    return p
                }, set: function (e) {
                    if ("number" != typeof e && e !== n) throw new SyntaxError("Line: an invalid number or illegal string was specified.");
                    p = e, this.hasBeenReset = !0
                }
            }, lineAlign: {
                enumerable: !0, get: function () {
                    return m
                }, set: function (e) {
                    var t = s(e);
                    t ? (m = t, this.hasBeenReset = !0) : console.warn("lineAlign: an invalid or illegal string was specified.")
                }
            }, position: {
                enumerable: !0, get: function () {
                    return g
                }, set: function (e) {
                    if (e < 0 || e > 100) throw new Error("Position must be between 0 and 100.");
                    g = e, this.hasBeenReset = !0
                }
            }, positionAlign: {
                enumerable: !0, get: function () {
                    return v
                }, set: function (e) {
                    var t = s(e);
                    t ? (v = t, this.hasBeenReset = !0) : console.warn("positionAlign: an invalid or illegal string was specified.")
                }
            }, size: {
                enumerable: !0, get: function () {
                    return y
                }, set: function (e) {
                    if (e < 0 || e > 100) throw new Error("Size must be between 0 and 100.");
                    y = e, this.hasBeenReset = !0
                }
            }, align: {
                enumerable: !0, get: function () {
                    return _
                }, set: function (e) {
                    var t = s(e);
                    if (!t) throw new SyntaxError("align: an invalid or illegal alignment string was specified.");
                    _ = t, this.hasBeenReset = !0
                }
            }
        }), this.displayState = void 0
    }

    a.prototype.getCueAsHTML = function () {
        return WebVTT.convertCueToDOMTree(window, this.text)
    }, e.exports = a
}, function (e, t) {
    var n = {"": !0, up: !0};

    function i(e) {
        return "number" == typeof e && e >= 0 && e <= 100
    }

    e.exports = function () {
        var e = 100, t = 3, r = 0, s = 100, a = 0, o = 100, l = "";
        Object.defineProperties(this, {
            width: {
                enumerable: !0, get: function () {
                    return e
                }, set: function (t) {
                    if (!i(t)) throw new Error("Width must be between 0 and 100.");
                    e = t
                }
            }, lines: {
                enumerable: !0, get: function () {
                    return t
                }, set: function (e) {
                    if ("number" != typeof e) throw new TypeError("Lines must be set to a number.");
                    t = e
                }
            }, regionAnchorY: {
                enumerable: !0, get: function () {
                    return s
                }, set: function (e) {
                    if (!i(e)) throw new Error("RegionAnchorX must be between 0 and 100.");
                    s = e
                }
            }, regionAnchorX: {
                enumerable: !0, get: function () {
                    return r
                }, set: function (e) {
                    if (!i(e)) throw new Error("RegionAnchorY must be between 0 and 100.");
                    r = e
                }
            }, viewportAnchorY: {
                enumerable: !0, get: function () {
                    return o
                }, set: function (e) {
                    if (!i(e)) throw new Error("ViewportAnchorY must be between 0 and 100.");
                    o = e
                }
            }, viewportAnchorX: {
                enumerable: !0, get: function () {
                    return a
                }, set: function (e) {
                    if (!i(e)) throw new Error("ViewportAnchorX must be between 0 and 100.");
                    a = e
                }
            }, scroll: {
                enumerable: !0, get: function () {
                    return l
                }, set: function (e) {
                    var t = function (e) {
                        return "string" == typeof e && (!!n[e.toLowerCase()] && e.toLowerCase())
                    }(e);
                    !1 === t ? console.warn("Scroll: an invalid or illegal string was specified.") : l = t
                }
            }
        })
    }
}, function (e, t) {
    e.exports = function () {
        if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
        if (Reflect.construct.sham) return !1;
        if ("function" == typeof Proxy) return !0;
        try {
            return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
            }))), !0
        } catch (e) {
            return !1
        }
    }
}, function (e, t, n) {
    "use strict";
    (function (e) {
        var i = n(42), r = n(43), s = n(44);

        function a() {
            return l.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823
        }

        function o(e, t) {
            if (a() < t) throw new RangeError("Invalid typed array length");
            return l.TYPED_ARRAY_SUPPORT ? (e = new Uint8Array(t)).__proto__ = l.prototype : (null === e && (e = new l(t)), e.length = t), e
        }

        function l(e, t, n) {
            if (!(l.TYPED_ARRAY_SUPPORT || this instanceof l)) return new l(e, t, n);
            if ("number" == typeof e) {
                if ("string" == typeof t) throw new Error("If encoding is specified then the first argument must be a string");
                return h(this, e)
            }
            return u(this, e, t, n)
        }

        function u(e, t, n, i) {
            if ("number" == typeof t) throw new TypeError('"value" argument must not be a number');
            return "undefined" != typeof ArrayBuffer && t instanceof ArrayBuffer ? function (e, t, n, i) {
                if (t.byteLength, n < 0 || t.byteLength < n) throw new RangeError("'offset' is out of bounds");
                if (t.byteLength < n + (i || 0)) throw new RangeError("'length' is out of bounds");
                t = void 0 === n && void 0 === i ? new Uint8Array(t) : void 0 === i ? new Uint8Array(t, n) : new Uint8Array(t, n, i);
                l.TYPED_ARRAY_SUPPORT ? (e = t).__proto__ = l.prototype : e = d(e, t);
                return e
            }(e, t, n, i) : "string" == typeof t ? function (e, t, n) {
                "string" == typeof n && "" !== n || (n = "utf8");
                if (!l.isEncoding(n)) throw new TypeError('"encoding" must be a valid string encoding');
                var i = 0 | p(t, n), r = (e = o(e, i)).write(t, n);
                r !== i && (e = e.slice(0, r));
                return e
            }(e, t, n) : function (e, t) {
                if (l.isBuffer(t)) {
                    var n = 0 | f(t.length);
                    return 0 === (e = o(e, n)).length ? e : (t.copy(e, 0, 0, n), e)
                }
                if (t) {
                    if ("undefined" != typeof ArrayBuffer && t.buffer instanceof ArrayBuffer || "length" in t) return "number" != typeof t.length || (i = t.length) != i ? o(e, 0) : d(e, t);
                    if ("Buffer" === t.type && s(t.data)) return d(e, t.data)
                }
                var i;
                throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")
            }(e, t)
        }

        function c(e) {
            if ("number" != typeof e) throw new TypeError('"size" argument must be a number');
            if (e < 0) throw new RangeError('"size" argument must not be negative')
        }

        function h(e, t) {
            if (c(t), e = o(e, t < 0 ? 0 : 0 | f(t)), !l.TYPED_ARRAY_SUPPORT) for (var n = 0; n < t; ++n) e[n] = 0;
            return e
        }

        function d(e, t) {
            var n = t.length < 0 ? 0 : 0 | f(t.length);
            e = o(e, n);
            for (var i = 0; i < n; i += 1) e[i] = 255 & t[i];
            return e
        }

        function f(e) {
            if (e >= a()) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + a().toString(16) + " bytes");
            return 0 | e
        }

        function p(e, t) {
            if (l.isBuffer(e)) return e.length;
            if ("undefined" != typeof ArrayBuffer && "function" == typeof ArrayBuffer.isView && (ArrayBuffer.isView(e) || e instanceof ArrayBuffer)) return e.byteLength;
            "string" != typeof e && (e = "" + e);
            var n = e.length;
            if (0 === n) return 0;
            for (var i = !1; ;) switch (t) {
                case"ascii":
                case"latin1":
                case"binary":
                    return n;
                case"utf8":
                case"utf-8":
                case void 0:
                    return H(e).length;
                case"ucs2":
                case"ucs-2":
                case"utf16le":
                case"utf-16le":
                    return 2 * n;
                case"hex":
                    return n >>> 1;
                case"base64":
                    return q(e).length;
                default:
                    if (i) return H(e).length;
                    t = ("" + t).toLowerCase(), i = !0
            }
        }

        function m(e, t, n) {
            var i = !1;
            if ((void 0 === t || t < 0) && (t = 0), t > this.length) return "";
            if ((void 0 === n || n > this.length) && (n = this.length), n <= 0) return "";
            if ((n >>>= 0) <= (t >>>= 0)) return "";
            for (e || (e = "utf8"); ;) switch (e) {
                case"hex":
                    return I(this, t, n);
                case"utf8":
                case"utf-8":
                    return k(this, t, n);
                case"ascii":
                    return A(this, t, n);
                case"latin1":
                case"binary":
                    return D(this, t, n);
                case"base64":
                    return C(this, t, n);
                case"ucs2":
                case"ucs-2":
                case"utf16le":
                case"utf-16le":
                    return P(this, t, n);
                default:
                    if (i) throw new TypeError("Unknown encoding: " + e);
                    e = (e + "").toLowerCase(), i = !0
            }
        }

        function g(e, t, n) {
            var i = e[t];
            e[t] = e[n], e[n] = i
        }

        function v(e, t, n, i, r) {
            if (0 === e.length) return -1;
            if ("string" == typeof n ? (i = n, n = 0) : n > 2147483647 ? n = 2147483647 : n < -2147483648 && (n = -2147483648), n = +n, isNaN(n) && (n = r ? 0 : e.length - 1), n < 0 && (n = e.length + n), n >= e.length) {
                if (r) return -1;
                n = e.length - 1
            } else if (n < 0) {
                if (!r) return -1;
                n = 0
            }
            if ("string" == typeof t && (t = l.from(t, i)), l.isBuffer(t)) return 0 === t.length ? -1 : y(e, t, n, i, r);
            if ("number" == typeof t) return t &= 255, l.TYPED_ARRAY_SUPPORT && "function" == typeof Uint8Array.prototype.indexOf ? r ? Uint8Array.prototype.indexOf.call(e, t, n) : Uint8Array.prototype.lastIndexOf.call(e, t, n) : y(e, [t], n, i, r);
            throw new TypeError("val must be string, number or Buffer")
        }

        function y(e, t, n, i, r) {
            var s, a = 1, o = e.length, l = t.length;
            if (void 0 !== i && ("ucs2" === (i = String(i).toLowerCase()) || "ucs-2" === i || "utf16le" === i || "utf-16le" === i)) {
                if (e.length < 2 || t.length < 2) return -1;
                a = 2, o /= 2, l /= 2, n /= 2
            }

            function u(e, t) {
                return 1 === a ? e[t] : e.readUInt16BE(t * a)
            }

            if (r) {
                var c = -1;
                for (s = n; s < o; s++) if (u(e, s) === u(t, -1 === c ? 0 : s - c)) {
                    if (-1 === c && (c = s), s - c + 1 === l) return c * a
                } else -1 !== c && (s -= s - c), c = -1
            } else for (n + l > o && (n = o - l), s = n; s >= 0; s--) {
                for (var h = !0, d = 0; d < l; d++) if (u(e, s + d) !== u(t, d)) {
                    h = !1;
                    break
                }
                if (h) return s
            }
            return -1
        }

        function _(e, t, n, i) {
            n = Number(n) || 0;
            var r = e.length - n;
            i ? (i = Number(i)) > r && (i = r) : i = r;
            var s = t.length;
            if (s % 2 != 0) throw new TypeError("Invalid hex string");
            i > s / 2 && (i = s / 2);
            for (var a = 0; a < i; ++a) {
                var o = parseInt(t.substr(2 * a, 2), 16);
                if (isNaN(o)) return a;
                e[n + a] = o
            }
            return a
        }

        function b(e, t, n, i) {
            return V(H(t, e.length - n), e, n, i)
        }

        function T(e, t, n, i) {
            return V(function (e) {
                for (var t = [], n = 0; n < e.length; ++n) t.push(255 & e.charCodeAt(n));
                return t
            }(t), e, n, i)
        }

        function w(e, t, n, i) {
            return T(e, t, n, i)
        }

        function S(e, t, n, i) {
            return V(q(t), e, n, i)
        }

        function E(e, t, n, i) {
            return V(function (e, t) {
                for (var n, i, r, s = [], a = 0; a < e.length && !((t -= 2) < 0); ++a) n = e.charCodeAt(a), i = n >> 8, r = n % 256, s.push(r), s.push(i);
                return s
            }(t, e.length - n), e, n, i)
        }

        function C(e, t, n) {
            return 0 === t && n === e.length ? i.fromByteArray(e) : i.fromByteArray(e.slice(t, n))
        }

        function k(e, t, n) {
            n = Math.min(e.length, n);
            for (var i = [], r = t; r < n;) {
                var s, a, o, l, u = e[r], c = null, h = u > 239 ? 4 : u > 223 ? 3 : u > 191 ? 2 : 1;
                if (r + h <= n) switch (h) {
                    case 1:
                        u < 128 && (c = u);
                        break;
                    case 2:
                        128 == (192 & (s = e[r + 1])) && (l = (31 & u) << 6 | 63 & s) > 127 && (c = l);
                        break;
                    case 3:
                        s = e[r + 1], a = e[r + 2], 128 == (192 & s) && 128 == (192 & a) && (l = (15 & u) << 12 | (63 & s) << 6 | 63 & a) > 2047 && (l < 55296 || l > 57343) && (c = l);
                        break;
                    case 4:
                        s = e[r + 1], a = e[r + 2], o = e[r + 3], 128 == (192 & s) && 128 == (192 & a) && 128 == (192 & o) && (l = (15 & u) << 18 | (63 & s) << 12 | (63 & a) << 6 | 63 & o) > 65535 && l < 1114112 && (c = l)
                }
                null === c ? (c = 65533, h = 1) : c > 65535 && (c -= 65536, i.push(c >>> 10 & 1023 | 55296), c = 56320 | 1023 & c), i.push(c), r += h
            }
            return function (e) {
                var t = e.length;
                if (t <= x) return String.fromCharCode.apply(String, e);
                var n = "", i = 0;
                for (; i < t;) n += String.fromCharCode.apply(String, e.slice(i, i += x));
                return n
            }(i)
        }

        t.Buffer = l, t.SlowBuffer = function (e) {
            +e != e && (e = 0);
            return l.alloc(+e)
        }, t.INSPECT_MAX_BYTES = 50, l.TYPED_ARRAY_SUPPORT = void 0 !== e.TYPED_ARRAY_SUPPORT ? e.TYPED_ARRAY_SUPPORT : function () {
            try {
                var e = new Uint8Array(1);
                return e.__proto__ = {
                    __proto__: Uint8Array.prototype, foo: function () {
                        return 42
                    }
                }, 42 === e.foo() && "function" == typeof e.subarray && 0 === e.subarray(1, 1).byteLength
            } catch (e) {
                return !1
            }
        }(), t.kMaxLength = a(), l.poolSize = 8192, l._augment = function (e) {
            return e.__proto__ = l.prototype, e
        }, l.from = function (e, t, n) {
            return u(null, e, t, n)
        }, l.TYPED_ARRAY_SUPPORT && (l.prototype.__proto__ = Uint8Array.prototype, l.__proto__ = Uint8Array, "undefined" != typeof Symbol && Symbol.species && l[Symbol.species] === l && Object.defineProperty(l, Symbol.species, {value: null, configurable: !0})), l.alloc = function (e, t, n) {
            return function (e, t, n, i) {
                return c(t), t <= 0 ? o(e, t) : void 0 !== n ? "string" == typeof i ? o(e, t).fill(n, i) : o(e, t).fill(n) : o(e, t)
            }(null, e, t, n)
        }, l.allocUnsafe = function (e) {
            return h(null, e)
        }, l.allocUnsafeSlow = function (e) {
            return h(null, e)
        }, l.isBuffer = function (e) {
            return !(null == e || !e._isBuffer)
        }, l.compare = function (e, t) {
            if (!l.isBuffer(e) || !l.isBuffer(t)) throw new TypeError("Arguments must be Buffers");
            if (e === t) return 0;
            for (var n = e.length, i = t.length, r = 0, s = Math.min(n, i); r < s; ++r) if (e[r] !== t[r]) {
                n = e[r], i = t[r];
                break
            }
            return n < i ? -1 : i < n ? 1 : 0
        }, l.isEncoding = function (e) {
            switch (String(e).toLowerCase()) {
                case"hex":
                case"utf8":
                case"utf-8":
                case"ascii":
                case"latin1":
                case"binary":
                case"base64":
                case"ucs2":
                case"ucs-2":
                case"utf16le":
                case"utf-16le":
                    return !0;
                default:
                    return !1
            }
        }, l.concat = function (e, t) {
            if (!s(e)) throw new TypeError('"list" argument must be an Array of Buffers');
            if (0 === e.length) return l.alloc(0);
            var n;
            if (void 0 === t) for (t = 0, n = 0; n < e.length; ++n) t += e[n].length;
            var i = l.allocUnsafe(t), r = 0;
            for (n = 0; n < e.length; ++n) {
                var a = e[n];
                if (!l.isBuffer(a)) throw new TypeError('"list" argument must be an Array of Buffers');
                a.copy(i, r), r += a.length
            }
            return i
        }, l.byteLength = p, l.prototype._isBuffer = !0, l.prototype.swap16 = function () {
            var e = this.length;
            if (e % 2 != 0) throw new RangeError("Buffer size must be a multiple of 16-bits");
            for (var t = 0; t < e; t += 2) g(this, t, t + 1);
            return this
        }, l.prototype.swap32 = function () {
            var e = this.length;
            if (e % 4 != 0) throw new RangeError("Buffer size must be a multiple of 32-bits");
            for (var t = 0; t < e; t += 4) g(this, t, t + 3), g(this, t + 1, t + 2);
            return this
        }, l.prototype.swap64 = function () {
            var e = this.length;
            if (e % 8 != 0) throw new RangeError("Buffer size must be a multiple of 64-bits");
            for (var t = 0; t < e; t += 8) g(this, t, t + 7), g(this, t + 1, t + 6), g(this, t + 2, t + 5), g(this, t + 3, t + 4);
            return this
        }, l.prototype.toString = function () {
            var e = 0 | this.length;
            return 0 === e ? "" : 0 === arguments.length ? k(this, 0, e) : m.apply(this, arguments)
        }, l.prototype.equals = function (e) {
            if (!l.isBuffer(e)) throw new TypeError("Argument must be a Buffer");
            return this === e || 0 === l.compare(this, e)
        }, l.prototype.inspect = function () {
            var e = "", n = t.INSPECT_MAX_BYTES;
            return this.length > 0 && (e = this.toString("hex", 0, n).match(/.{2}/g).join(" "), this.length > n && (e += " ... ")), "<Buffer " + e + ">"
        }, l.prototype.compare = function (e, t, n, i, r) {
            if (!l.isBuffer(e)) throw new TypeError("Argument must be a Buffer");
            if (void 0 === t && (t = 0), void 0 === n && (n = e ? e.length : 0), void 0 === i && (i = 0), void 0 === r && (r = this.length), t < 0 || n > e.length || i < 0 || r > this.length) throw new RangeError("out of range index");
            if (i >= r && t >= n) return 0;
            if (i >= r) return -1;
            if (t >= n) return 1;
            if (this === e) return 0;
            for (var s = (r >>>= 0) - (i >>>= 0), a = (n >>>= 0) - (t >>>= 0), o = Math.min(s, a), u = this.slice(i, r), c = e.slice(t, n), h = 0; h < o; ++h) if (u[h] !== c[h]) {
                s = u[h], a = c[h];
                break
            }
            return s < a ? -1 : a < s ? 1 : 0
        }, l.prototype.includes = function (e, t, n) {
            return -1 !== this.indexOf(e, t, n)
        }, l.prototype.indexOf = function (e, t, n) {
            return v(this, e, t, n, !0)
        }, l.prototype.lastIndexOf = function (e, t, n) {
            return v(this, e, t, n, !1)
        }, l.prototype.write = function (e, t, n, i) {
            if (void 0 === t) i = "utf8", n = this.length, t = 0; else if (void 0 === n && "string" == typeof t) i = t, n = this.length, t = 0; else {
                if (!isFinite(t)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
                t |= 0, isFinite(n) ? (n |= 0, void 0 === i && (i = "utf8")) : (i = n, n = void 0)
            }
            var r = this.length - t;
            if ((void 0 === n || n > r) && (n = r), e.length > 0 && (n < 0 || t < 0) || t > this.length) throw new RangeError("Attempt to write outside buffer bounds");
            i || (i = "utf8");
            for (var s = !1; ;) switch (i) {
                case"hex":
                    return _(this, e, t, n);
                case"utf8":
                case"utf-8":
                    return b(this, e, t, n);
                case"ascii":
                    return T(this, e, t, n);
                case"latin1":
                case"binary":
                    return w(this, e, t, n);
                case"base64":
                    return S(this, e, t, n);
                case"ucs2":
                case"ucs-2":
                case"utf16le":
                case"utf-16le":
                    return E(this, e, t, n);
                default:
                    if (s) throw new TypeError("Unknown encoding: " + i);
                    i = ("" + i).toLowerCase(), s = !0
            }
        }, l.prototype.toJSON = function () {
            return {type: "Buffer", data: Array.prototype.slice.call(this._arr || this, 0)}
        };
        var x = 4096;

        function A(e, t, n) {
            var i = "";
            n = Math.min(e.length, n);
            for (var r = t; r < n; ++r) i += String.fromCharCode(127 & e[r]);
            return i
        }

        function D(e, t, n) {
            var i = "";
            n = Math.min(e.length, n);
            for (var r = t; r < n; ++r) i += String.fromCharCode(e[r]);
            return i
        }

        function I(e, t, n) {
            var i = e.length;
            (!t || t < 0) && (t = 0), (!n || n < 0 || n > i) && (n = i);
            for (var r = "", s = t; s < n; ++s) r += F(e[s]);
            return r
        }

        function P(e, t, n) {
            for (var i = e.slice(t, n), r = "", s = 0; s < i.length; s += 2) r += String.fromCharCode(i[s] + 256 * i[s + 1]);
            return r
        }

        function O(e, t, n) {
            if (e % 1 != 0 || e < 0) throw new RangeError("offset is not uint");
            if (e + t > n) throw new RangeError("Trying to access beyond buffer length")
        }

        function L(e, t, n, i, r, s) {
            if (!l.isBuffer(e)) throw new TypeError('"buffer" argument must be a Buffer instance');
            if (t > r || t < s) throw new RangeError('"value" argument is out of bounds');
            if (n + i > e.length) throw new RangeError("Index out of range")
        }

        function N(e, t, n, i) {
            t < 0 && (t = 65535 + t + 1);
            for (var r = 0, s = Math.min(e.length - n, 2); r < s; ++r) e[n + r] = (t & 255 << 8 * (i ? r : 1 - r)) >>> 8 * (i ? r : 1 - r)
        }

        function R(e, t, n, i) {
            t < 0 && (t = 4294967295 + t + 1);
            for (var r = 0, s = Math.min(e.length - n, 4); r < s; ++r) e[n + r] = t >>> 8 * (i ? r : 3 - r) & 255
        }

        function U(e, t, n, i, r, s) {
            if (n + i > e.length) throw new RangeError("Index out of range");
            if (n < 0) throw new RangeError("Index out of range")
        }

        function M(e, t, n, i, s) {
            return s || U(e, 0, n, 4), r.write(e, t, n, i, 23, 4), n + 4
        }

        function B(e, t, n, i, s) {
            return s || U(e, 0, n, 8), r.write(e, t, n, i, 52, 8), n + 8
        }

        l.prototype.slice = function (e, t) {
            var n, i = this.length;
            if ((e = ~~e) < 0 ? (e += i) < 0 && (e = 0) : e > i && (e = i), (t = void 0 === t ? i : ~~t) < 0 ? (t += i) < 0 && (t = 0) : t > i && (t = i), t < e && (t = e), l.TYPED_ARRAY_SUPPORT) (n = this.subarray(e, t)).__proto__ = l.prototype; else {
                var r = t - e;
                n = new l(r, void 0);
                for (var s = 0; s < r; ++s) n[s] = this[s + e]
            }
            return n
        }, l.prototype.readUIntLE = function (e, t, n) {
            e |= 0, t |= 0, n || O(e, t, this.length);
            for (var i = this[e], r = 1, s = 0; ++s < t && (r *= 256);) i += this[e + s] * r;
            return i
        }, l.prototype.readUIntBE = function (e, t, n) {
            e |= 0, t |= 0, n || O(e, t, this.length);
            for (var i = this[e + --t], r = 1; t > 0 && (r *= 256);) i += this[e + --t] * r;
            return i
        }, l.prototype.readUInt8 = function (e, t) {
            return t || O(e, 1, this.length), this[e]
        }, l.prototype.readUInt16LE = function (e, t) {
            return t || O(e, 2, this.length), this[e] | this[e + 1] << 8
        }, l.prototype.readUInt16BE = function (e, t) {
            return t || O(e, 2, this.length), this[e] << 8 | this[e + 1]
        }, l.prototype.readUInt32LE = function (e, t) {
            return t || O(e, 4, this.length), (this[e] | this[e + 1] << 8 | this[e + 2] << 16) + 16777216 * this[e + 3]
        }, l.prototype.readUInt32BE = function (e, t) {
            return t || O(e, 4, this.length), 16777216 * this[e] + (this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3])
        }, l.prototype.readIntLE = function (e, t, n) {
            e |= 0, t |= 0, n || O(e, t, this.length);
            for (var i = this[e], r = 1, s = 0; ++s < t && (r *= 256);) i += this[e + s] * r;
            return i >= (r *= 128) && (i -= Math.pow(2, 8 * t)), i
        }, l.prototype.readIntBE = function (e, t, n) {
            e |= 0, t |= 0, n || O(e, t, this.length);
            for (var i = t, r = 1, s = this[e + --i]; i > 0 && (r *= 256);) s += this[e + --i] * r;
            return s >= (r *= 128) && (s -= Math.pow(2, 8 * t)), s
        }, l.prototype.readInt8 = function (e, t) {
            return t || O(e, 1, this.length), 128 & this[e] ? -1 * (255 - this[e] + 1) : this[e]
        }, l.prototype.readInt16LE = function (e, t) {
            t || O(e, 2, this.length);
            var n = this[e] | this[e + 1] << 8;
            return 32768 & n ? 4294901760 | n : n
        }, l.prototype.readInt16BE = function (e, t) {
            t || O(e, 2, this.length);
            var n = this[e + 1] | this[e] << 8;
            return 32768 & n ? 4294901760 | n : n
        }, l.prototype.readInt32LE = function (e, t) {
            return t || O(e, 4, this.length), this[e] | this[e + 1] << 8 | this[e + 2] << 16 | this[e + 3] << 24
        }, l.prototype.readInt32BE = function (e, t) {
            return t || O(e, 4, this.length), this[e] << 24 | this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3]
        }, l.prototype.readFloatLE = function (e, t) {
            return t || O(e, 4, this.length), r.read(this, e, !0, 23, 4)
        }, l.prototype.readFloatBE = function (e, t) {
            return t || O(e, 4, this.length), r.read(this, e, !1, 23, 4)
        }, l.prototype.readDoubleLE = function (e, t) {
            return t || O(e, 8, this.length), r.read(this, e, !0, 52, 8)
        }, l.prototype.readDoubleBE = function (e, t) {
            return t || O(e, 8, this.length), r.read(this, e, !1, 52, 8)
        }, l.prototype.writeUIntLE = function (e, t, n, i) {
            (e = +e, t |= 0, n |= 0, i) || L(this, e, t, n, Math.pow(2, 8 * n) - 1, 0);
            var r = 1, s = 0;
            for (this[t] = 255 & e; ++s < n && (r *= 256);) this[t + s] = e / r & 255;
            return t + n
        }, l.prototype.writeUIntBE = function (e, t, n, i) {
            (e = +e, t |= 0, n |= 0, i) || L(this, e, t, n, Math.pow(2, 8 * n) - 1, 0);
            var r = n - 1, s = 1;
            for (this[t + r] = 255 & e; --r >= 0 && (s *= 256);) this[t + r] = e / s & 255;
            return t + n
        }, l.prototype.writeUInt8 = function (e, t, n) {
            return e = +e, t |= 0, n || L(this, e, t, 1, 255, 0), l.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), this[t] = 255 & e, t + 1
        }, l.prototype.writeUInt16LE = function (e, t, n) {
            return e = +e, t |= 0, n || L(this, e, t, 2, 65535, 0), l.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8) : N(this, e, t, !0), t + 2
        }, l.prototype.writeUInt16BE = function (e, t, n) {
            return e = +e, t |= 0, n || L(this, e, t, 2, 65535, 0), l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8, this[t + 1] = 255 & e) : N(this, e, t, !1), t + 2
        }, l.prototype.writeUInt32LE = function (e, t, n) {
            return e = +e, t |= 0, n || L(this, e, t, 4, 4294967295, 0), l.TYPED_ARRAY_SUPPORT ? (this[t + 3] = e >>> 24, this[t + 2] = e >>> 16, this[t + 1] = e >>> 8, this[t] = 255 & e) : R(this, e, t, !0), t + 4
        }, l.prototype.writeUInt32BE = function (e, t, n) {
            return e = +e, t |= 0, n || L(this, e, t, 4, 4294967295, 0), l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = 255 & e) : R(this, e, t, !1), t + 4
        }, l.prototype.writeIntLE = function (e, t, n, i) {
            if (e = +e, t |= 0, !i) {
                var r = Math.pow(2, 8 * n - 1);
                L(this, e, t, n, r - 1, -r)
            }
            var s = 0, a = 1, o = 0;
            for (this[t] = 255 & e; ++s < n && (a *= 256);) e < 0 && 0 === o && 0 !== this[t + s - 1] && (o = 1), this[t + s] = (e / a >> 0) - o & 255;
            return t + n
        }, l.prototype.writeIntBE = function (e, t, n, i) {
            if (e = +e, t |= 0, !i) {
                var r = Math.pow(2, 8 * n - 1);
                L(this, e, t, n, r - 1, -r)
            }
            var s = n - 1, a = 1, o = 0;
            for (this[t + s] = 255 & e; --s >= 0 && (a *= 256);) e < 0 && 0 === o && 0 !== this[t + s + 1] && (o = 1), this[t + s] = (e / a >> 0) - o & 255;
            return t + n
        }, l.prototype.writeInt8 = function (e, t, n) {
            return e = +e, t |= 0, n || L(this, e, t, 1, 127, -128), l.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), e < 0 && (e = 255 + e + 1), this[t] = 255 & e, t + 1
        }, l.prototype.writeInt16LE = function (e, t, n) {
            return e = +e, t |= 0, n || L(this, e, t, 2, 32767, -32768), l.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8) : N(this, e, t, !0), t + 2
        }, l.prototype.writeInt16BE = function (e, t, n) {
            return e = +e, t |= 0, n || L(this, e, t, 2, 32767, -32768), l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8, this[t + 1] = 255 & e) : N(this, e, t, !1), t + 2
        }, l.prototype.writeInt32LE = function (e, t, n) {
            return e = +e, t |= 0, n || L(this, e, t, 4, 2147483647, -2147483648), l.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8, this[t + 2] = e >>> 16, this[t + 3] = e >>> 24) : R(this, e, t, !0), t + 4
        }, l.prototype.writeInt32BE = function (e, t, n) {
            return e = +e, t |= 0, n || L(this, e, t, 4, 2147483647, -2147483648), e < 0 && (e = 4294967295 + e + 1), l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = 255 & e) : R(this, e, t, !1), t + 4
        }, l.prototype.writeFloatLE = function (e, t, n) {
            return M(this, e, t, !0, n)
        }, l.prototype.writeFloatBE = function (e, t, n) {
            return M(this, e, t, !1, n)
        }, l.prototype.writeDoubleLE = function (e, t, n) {
            return B(this, e, t, !0, n)
        }, l.prototype.writeDoubleBE = function (e, t, n) {
            return B(this, e, t, !1, n)
        }, l.prototype.copy = function (e, t, n, i) {
            if (n || (n = 0), i || 0 === i || (i = this.length), t >= e.length && (t = e.length), t || (t = 0), i > 0 && i < n && (i = n), i === n) return 0;
            if (0 === e.length || 0 === this.length) return 0;
            if (t < 0) throw new RangeError("targetStart out of bounds");
            if (n < 0 || n >= this.length) throw new RangeError("sourceStart out of bounds");
            if (i < 0) throw new RangeError("sourceEnd out of bounds");
            i > this.length && (i = this.length), e.length - t < i - n && (i = e.length - t + n);
            var r, s = i - n;
            if (this === e && n < t && t < i) for (r = s - 1; r >= 0; --r) e[r + t] = this[r + n]; else if (s < 1e3 || !l.TYPED_ARRAY_SUPPORT) for (r = 0; r < s; ++r) e[r + t] = this[r + n]; else Uint8Array.prototype.set.call(e, this.subarray(n, n + s), t);
            return s
        }, l.prototype.fill = function (e, t, n, i) {
            if ("string" == typeof e) {
                if ("string" == typeof t ? (i = t, t = 0, n = this.length) : "string" == typeof n && (i = n, n = this.length), 1 === e.length) {
                    var r = e.charCodeAt(0);
                    r < 256 && (e = r)
                }
                if (void 0 !== i && "string" != typeof i) throw new TypeError("encoding must be a string");
                if ("string" == typeof i && !l.isEncoding(i)) throw new TypeError("Unknown encoding: " + i)
            } else "number" == typeof e && (e &= 255);
            if (t < 0 || this.length < t || this.length < n) throw new RangeError("Out of range index");
            if (n <= t) return this;
            var s;
            if (t >>>= 0, n = void 0 === n ? this.length : n >>> 0, e || (e = 0), "number" == typeof e) for (s = t; s < n; ++s) this[s] = e; else {
                var a = l.isBuffer(e) ? e : H(new l(e, i).toString()), o = a.length;
                for (s = 0; s < n - t; ++s) this[s + t] = a[s % o]
            }
            return this
        };
        var j = /[^+\/0-9A-Za-z-_]/g;

        function F(e) {
            return e < 16 ? "0" + e.toString(16) : e.toString(16)
        }

        function H(e, t) {
            var n;
            t = t || 1 / 0;
            for (var i = e.length, r = null, s = [], a = 0; a < i; ++a) {
                if ((n = e.charCodeAt(a)) > 55295 && n < 57344) {
                    if (!r) {
                        if (n > 56319) {
                            (t -= 3) > -1 && s.push(239, 191, 189);
                            continue
                        }
                        if (a + 1 === i) {
                            (t -= 3) > -1 && s.push(239, 191, 189);
                            continue
                        }
                        r = n;
                        continue
                    }
                    if (n < 56320) {
                        (t -= 3) > -1 && s.push(239, 191, 189), r = n;
                        continue
                    }
                    n = 65536 + (r - 55296 << 10 | n - 56320)
                } else r && (t -= 3) > -1 && s.push(239, 191, 189);
                if (r = null, n < 128) {
                    if ((t -= 1) < 0) break;
                    s.push(n)
                } else if (n < 2048) {
                    if ((t -= 2) < 0) break;
                    s.push(n >> 6 | 192, 63 & n | 128)
                } else if (n < 65536) {
                    if ((t -= 3) < 0) break;
                    s.push(n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128)
                } else {
                    if (!(n < 1114112)) throw new Error("Invalid code point");
                    if ((t -= 4) < 0) break;
                    s.push(n >> 18 | 240, n >> 12 & 63 | 128, n >> 6 & 63 | 128, 63 & n | 128)
                }
            }
            return s
        }

        function q(e) {
            return i.toByteArray(function (e) {
                if ((e = function (e) {
                    return e.trim ? e.trim() : e.replace(/^\s+|\s+$/g, "")
                }(e).replace(j, "")).length < 2) return "";
                for (; e.length % 4 != 0;) e += "=";
                return e
            }(e))
        }

        function V(e, t, n, i) {
            for (var r = 0; r < i && !(r + n >= t.length || r >= e.length); ++r) t[r + n] = e[r];
            return r
        }
    }).call(this, n(6))
}, function (e, t, n) {
    "use strict";
    t.byteLength = function (e) {
        var t = u(e), n = t[0], i = t[1];
        return 3 * (n + i) / 4 - i
    }, t.toByteArray = function (e) {
        var t, n, i = u(e), a = i[0], o = i[1], l = new s(function (e, t, n) {
            return 3 * (t + n) / 4 - n
        }(0, a, o)), c = 0, h = o > 0 ? a - 4 : a;
        for (n = 0; n < h; n += 4) t = r[e.charCodeAt(n)] << 18 | r[e.charCodeAt(n + 1)] << 12 | r[e.charCodeAt(n + 2)] << 6 | r[e.charCodeAt(n + 3)], l[c++] = t >> 16 & 255, l[c++] = t >> 8 & 255, l[c++] = 255 & t;
        2 === o && (t = r[e.charCodeAt(n)] << 2 | r[e.charCodeAt(n + 1)] >> 4, l[c++] = 255 & t);
        1 === o && (t = r[e.charCodeAt(n)] << 10 | r[e.charCodeAt(n + 1)] << 4 | r[e.charCodeAt(n + 2)] >> 2, l[c++] = t >> 8 & 255, l[c++] = 255 & t);
        return l
    }, t.fromByteArray = function (e) {
        for (var t, n = e.length, r = n % 3, s = [], a = 0, o = n - r; a < o; a += 16383) s.push(c(e, a, a + 16383 > o ? o : a + 16383));
        1 === r ? (t = e[n - 1], s.push(i[t >> 2] + i[t << 4 & 63] + "==")) : 2 === r && (t = (e[n - 2] << 8) + e[n - 1], s.push(i[t >> 10] + i[t >> 4 & 63] + i[t << 2 & 63] + "="));
        return s.join("")
    };
    for (var i = [], r = [], s = "undefined" != typeof Uint8Array ? Uint8Array : Array, a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", o = 0, l = a.length; o < l; ++o) i[o] = a[o], r[a.charCodeAt(o)] = o;

    function u(e) {
        var t = e.length;
        if (t % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4");
        var n = e.indexOf("=");
        return -1 === n && (n = t), [n, n === t ? 0 : 4 - n % 4]
    }

    function c(e, t, n) {
        for (var r, s, a = [], o = t; o < n; o += 3) r = (e[o] << 16 & 16711680) + (e[o + 1] << 8 & 65280) + (255 & e[o + 2]), a.push(i[(s = r) >> 18 & 63] + i[s >> 12 & 63] + i[s >> 6 & 63] + i[63 & s]);
        return a.join("")
    }

    r["-".charCodeAt(0)] = 62, r["_".charCodeAt(0)] = 63
}, function (e, t) {
    t.read = function (e, t, n, i, r) {
        var s, a, o = 8 * r - i - 1, l = (1 << o) - 1, u = l >> 1, c = -7, h = n ? r - 1 : 0, d = n ? -1 : 1, f = e[t + h];
        for (h += d, s = f & (1 << -c) - 1, f >>= -c, c += o; c > 0; s = 256 * s + e[t + h], h += d, c -= 8) ;
        for (a = s & (1 << -c) - 1, s >>= -c, c += i; c > 0; a = 256 * a + e[t + h], h += d, c -= 8) ;
        if (0 === s) s = 1 - u; else {
            if (s === l) return a ? NaN : 1 / 0 * (f ? -1 : 1);
            a += Math.pow(2, i), s -= u
        }
        return (f ? -1 : 1) * a * Math.pow(2, s - i)
    }, t.write = function (e, t, n, i, r, s) {
        var a, o, l, u = 8 * s - r - 1, c = (1 << u) - 1, h = c >> 1, d = 23 === r ? Math.pow(2, -24) - Math.pow(2, -77) : 0, f = i ? 0 : s - 1, p = i ? 1 : -1, m = t < 0 || 0 === t && 1 / t < 0 ? 1 : 0;
        for (t = Math.abs(t), isNaN(t) || t === 1 / 0 ? (o = isNaN(t) ? 1 : 0, a = c) : (a = Math.floor(Math.log(t) / Math.LN2), t * (l = Math.pow(2, -a)) < 1 && (a--, l *= 2), (t += a + h >= 1 ? d / l : d * Math.pow(2, 1 - h)) * l >= 2 && (a++, l /= 2), a + h >= c ? (o = 0, a = c) : a + h >= 1 ? (o = (t * l - 1) * Math.pow(2, r), a += h) : (o = t * Math.pow(2, h - 1) * Math.pow(2, r), a = 0)); r >= 8; e[n + f] = 255 & o, f += p, o /= 256, r -= 8) ;
        for (a = a << r | o, u += r; u > 0; e[n + f] = 255 & a, f += p, a /= 256, u -= 8) ;
        e[n + f - p] |= 128 * m
    }
}, function (e, t) {
    var n = {}.toString;
    e.exports = Array.isArray || function (e) {
        return "[object Array]" == n.call(e)
    }
}, function (e, t) {
    var n = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/, i = new RegExp("[\\-\\.0-9" + n.source.slice(1, -1) + "\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"), r = new RegExp("^" + n.source + i.source + "*(?::" + n.source + i.source + "*)?$"), s = 0, a = 1, o = 2, l = 3, u = 4, c = 5, h = 6, d = 7;

    function f() {
    }

    function p(e, t) {
        return t.lineNumber = e.lineNumber, t.columnNumber = e.columnNumber, t
    }

    function m(e, t, n, i, r, f) {
        for (var p, m = ++t, g = s; ;) {
            var v = e.charAt(m);
            switch (v) {
                case"=":
                    if (g === a) p = e.slice(t, m), g = l; else {
                        if (g !== o) throw new Error("attribute equal must after attrName");
                        g = l
                    }
                    break;
                case"'":
                case'"':
                    if (g === l || g === a) {
                        if (g === a && (f.warning('attribute value must after "="'), p = e.slice(t, m)), t = m + 1, !((m = e.indexOf(v, t)) > 0)) throw new Error("attribute value no end '" + v + "' match");
                        y = e.slice(t, m).replace(/&#?\w+;/g, r), n.add(p, y, t - 1), g = c
                    } else {
                        if (g != u) throw new Error('attribute value must after "="');
                        y = e.slice(t, m).replace(/&#?\w+;/g, r), n.add(p, y, t), f.warning('attribute "' + p + '" missed start quot(' + v + ")!!"), t = m + 1, g = c
                    }
                    break;
                case"/":
                    switch (g) {
                        case s:
                            n.setTagName(e.slice(t, m));
                        case c:
                        case h:
                        case d:
                            g = d, n.closed = !0;
                        case u:
                        case a:
                        case o:
                            break;
                        default:
                            throw new Error("attribute invalid close char('/')")
                    }
                    break;
                case"":
                    return f.error("unexpected end of input"), g == s && n.setTagName(e.slice(t, m)), m;
                case">":
                    switch (g) {
                        case s:
                            n.setTagName(e.slice(t, m));
                        case c:
                        case h:
                        case d:
                            break;
                        case u:
                        case a:
                            "/" === (y = e.slice(t, m)).slice(-1) && (n.closed = !0, y = y.slice(0, -1));
                        case o:
                            g === o && (y = p), g == u ? (f.warning('attribute "' + y + '" missed quot(")!!'), n.add(p, y.replace(/&#?\w+;/g, r), t)) : ("http://www.w3.org/1999/xhtml" === i[""] && y.match(/^(?:disabled|checked|selected)$/i) || f.warning('attribute "' + y + '" missed value!! "' + y + '" instead!!'), n.add(y, y, t));
                            break;
                        case l:
                            throw new Error("attribute value missed!!")
                    }
                    return m;
                case"":
                    v = " ";
                default:
                    if (v <= " ") switch (g) {
                        case s:
                            n.setTagName(e.slice(t, m)), g = h;
                            break;
                        case a:
                            p = e.slice(t, m), g = o;
                            break;
                        case u:
                            var y = e.slice(t, m).replace(/&#?\w+;/g, r);
                            f.warning('attribute "' + y + '" missed quot(")!!'), n.add(p, y, t);
                        case c:
                            g = h
                    } else switch (g) {
                        case o:
                            n.tagName;
                            "http://www.w3.org/1999/xhtml" === i[""] && p.match(/^(?:disabled|checked|selected)$/i) || f.warning('attribute "' + p + '" missed value!! "' + p + '" instead2!!'), n.add(p, p, t), t = m, g = a;
                            break;
                        case c:
                            f.warning('attribute space is required"' + p + '"!!');
                        case h:
                            g = a, t = m;
                            break;
                        case l:
                            g = u, t = m;
                            break;
                        case d:
                            throw new Error("elements closed character '/' and '>' must be connected to")
                    }
            }
            m++
        }
    }

    function g(e, t, n) {
        for (var i = e.tagName, r = null, s = e.length; s--;) {
            var a = e[s], o = a.qName, l = a.value;
            if ((d = o.indexOf(":")) > 0) var u = a.prefix = o.slice(0, d), c = o.slice(d + 1), h = "xmlns" === u && c; else c = o, u = null, h = "xmlns" === o && "";
            a.localName = c, !1 !== h && (null == r && (r = {}, _(n, n = {})), n[h] = r[h] = l, a.uri = "http://www.w3.org/2000/xmlns/", t.startPrefixMapping(h, l))
        }
        for (s = e.length; s--;) {
            (u = (a = e[s]).prefix) && ("xml" === u && (a.uri = "http://www.w3.org/XML/1998/namespace"), "xmlns" !== u && (a.uri = n[u || ""]))
        }
        var d;
        (d = i.indexOf(":")) > 0 ? (u = e.prefix = i.slice(0, d), c = e.localName = i.slice(d + 1)) : (u = null, c = e.localName = i);
        var f = e.uri = n[u || ""];
        if (t.startElement(f, c, i, e), !e.closed) return e.currentNSMap = n, e.localNSMap = r, !0;
        if (t.endElement(f, c, i), r) for (u in r) t.endPrefixMapping(u)
    }

    function v(e, t, n, i, r) {
        if (/^(?:script|textarea)$/i.test(n)) {
            var s = e.indexOf("</" + n + ">", t), a = e.substring(t + 1, s);
            if (/[&<]/.test(a)) return /^script$/i.test(n) ? (r.characters(a, 0, a.length), s) : (a = a.replace(/&#?\w+;/g, i), r.characters(a, 0, a.length), s)
        }
        return t + 1
    }

    function y(e, t, n, i) {
        var r = i[n];
        return null == r && ((r = e.lastIndexOf("</" + n + ">")) < t && (r = e.lastIndexOf("</" + n)), i[n] = r), r < t
    }

    function _(e, t) {
        for (var n in e) t[n] = e[n]
    }

    function b(e, t, n, i) {
        switch (e.charAt(t + 2)) {
            case"-":
                return "-" === e.charAt(t + 3) ? (r = e.indexOf("--\x3e", t + 4)) > t ? (n.comment(e, t + 4, r - t - 4), r + 3) : (i.error("Unclosed comment"), -1) : -1;
            default:
                if ("CDATA[" == e.substr(t + 3, 6)) {
                    var r = e.indexOf("]]>", t + 9);
                    return n.startCDATA(), n.characters(e, t + 9, r - t - 9), n.endCDATA(), r + 3
                }
                var s = function (e, t) {
                    var n, i = [], r = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;
                    r.lastIndex = t, r.exec(e);
                    for (; n = r.exec(e);) if (i.push(n), n[1]) return i
                }(e, t), a = s.length;
                if (a > 1 && /!doctype/i.test(s[0][0])) {
                    var o = s[1][0], l = a > 3 && /^public$/i.test(s[2][0]) && s[3][0], u = a > 4 && s[4][0], c = s[a - 1];
                    return n.startDTD(o, l && l.replace(/^(['"])(.*?)\1$/, "$2"), u && u.replace(/^(['"])(.*?)\1$/, "$2")), n.endDTD(), c.index + c[0].length
                }
        }
        return -1
    }

    function T(e, t, n) {
        var i = e.indexOf("?>", t);
        if (i) {
            var r = e.substring(t, i).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);
            if (r) {
                r[0].length;
                return n.processingInstruction(r[1], r[2]), i + 2
            }
            return -1
        }
        return -1
    }

    function w(e) {
    }

    function S(e, t) {
        return e.__proto__ = t, e
    }

    f.prototype = {
        parse: function (e, t, n) {
            var i = this.domBuilder;
            i.startDocument(), _(t, t = {}), function (e, t, n, i, r) {
                function s(e) {
                    var t = e.slice(1, -1);
                    return t in n ? n[t] : "#" === t.charAt(0) ? function (e) {
                        if (e > 65535) {
                            var t = 55296 + ((e -= 65536) >> 10), n = 56320 + (1023 & e);
                            return String.fromCharCode(t, n)
                        }
                        return String.fromCharCode(e)
                    }(parseInt(t.substr(1).replace("x", "0x"))) : (r.error("entity not found:" + e), e)
                }

                function a(t) {
                    if (t > _) {
                        var n = e.substring(_, t).replace(/&#?\w+;/g, s);
                        h && o(_), i.characters(n, 0, t - _), _ = t
                    }
                }

                function o(t, n) {
                    for (; t >= u && (n = c.exec(e));) l = n.index, u = l + n[0].length, h.lineNumber++;
                    h.columnNumber = t - l + 1
                }

                var l = 0, u = 0, c = /.*(?:\r\n?|\n)|.*$/g, h = i.locator, d = [{currentNSMap: t}], f = {}, _ = 0;
                for (; ;) {
                    try {
                        var S = e.indexOf("<", _);
                        if (S < 0) {
                            if (!e.substr(_).match(/^\s*$/)) {
                                var E = i.doc, C = E.createTextNode(e.substr(_));
                                E.appendChild(C), i.currentElement = C
                            }
                            return
                        }
                        switch (S > _ && a(S), e.charAt(S + 1)) {
                            case"/":
                                var k = e.indexOf(">", S + 3), x = e.substring(S + 2, k), A = d.pop();
                                k < 0 ? (x = e.substring(S + 2).replace(/[\s<].*/, ""), r.error("end tag name: " + x + " is not complete:" + A.tagName), k = S + 1 + x.length) : x.match(/\s</) && (x = x.replace(/[\s<].*/, ""), r.error("end tag name: " + x + " maybe not complete"), k = S + 1 + x.length);
                                var D = A.localNSMap, I = A.tagName == x;
                                if (I || A.tagName && A.tagName.toLowerCase() == x.toLowerCase()) {
                                    if (i.endElement(A.uri, A.localName, x), D) for (var P in D) i.endPrefixMapping(P);
                                    I || r.fatalError("end tag name: " + x + " is not match the current start tagName:" + A.tagName)
                                } else d.push(A);
                                k++;
                                break;
                            case"?":
                                h && o(S), k = T(e, S, i);
                                break;
                            case"!":
                                h && o(S), k = b(e, S, i, r);
                                break;
                            default:
                                h && o(S);
                                var O = new w, L = d[d.length - 1].currentNSMap, N = (k = m(e, S, O, L, s, r), O.length);
                                if (!O.closed && y(e, k, O.tagName, f) && (O.closed = !0, n.nbsp || r.warning("unclosed xml attribute")), h && N) {
                                    for (var R = p(h, {}), U = 0; U < N; U++) {
                                        var M = O[U];
                                        o(M.offset), M.locator = p(h, {})
                                    }
                                    i.locator = R, g(O, i, L) && d.push(O), i.locator = h
                                } else g(O, i, L) && d.push(O);
                                "http://www.w3.org/1999/xhtml" !== O.uri || O.closed ? k++ : k = v(e, k, O.tagName, s, i)
                        }
                    } catch (e) {
                        r.error("element parse error: " + e), k = -1
                    }
                    k > _ ? _ = k : a(Math.max(S, _) + 1)
                }
            }(e, t, n, i, this.errorHandler), i.endDocument()
        }
    }, w.prototype = {
        setTagName: function (e) {
            if (!r.test(e)) throw new Error("invalid tagName:" + e);
            this.tagName = e
        }, add: function (e, t, n) {
            if (!r.test(e)) throw new Error("invalid attribute:" + e);
            this[this.length++] = {qName: e, value: t, offset: n}
        }, length: 0, getLocalName: function (e) {
            return this[e].localName
        }, getLocator: function (e) {
            return this[e].locator
        }, getQName: function (e) {
            return this[e].qName
        }, getURI: function (e) {
            return this[e].uri
        }, getValue: function (e) {
            return this[e].value
        }
    }, S({}, S.prototype) instanceof S || (S = function (e, t) {
        function n() {
        }

        for (t in n.prototype = t, n = new n, e) n[t] = e[t];
        return n
    }), t.XMLReader = f
}, function (e, t, n) {
    "use strict";
    var i = n(18), r = n(17), s = function () {
        s.prototype.init.call(this), this.captionPackets_ = [], this.ccStreams_ = [new c(0, 0), new c(0, 1), new c(1, 0), new c(1, 1)], this.reset(), this.ccStreams_.forEach((function (e) {
            e.on("data", this.trigger.bind(this, "data")), e.on("partialdone", this.trigger.bind(this, "partialdone")), e.on("done", this.trigger.bind(this, "done"))
        }), this)
    };
    s.prototype = new i, s.prototype.push = function (e) {
        var t, n, i;
        if ("sei_rbsp" === e.nalUnitType && (t = r.parseSei(e.escapedRBSP)).payloadType === r.USER_DATA_REGISTERED_ITU_T_T35 && (n = r.parseUserData(t))) if (e.dts < this.latestDts_) this.ignoreNextEqualDts_ = !0; else {
            if (e.dts === this.latestDts_ && this.ignoreNextEqualDts_) return this.numSameDts_--, void (this.numSameDts_ || (this.ignoreNextEqualDts_ = !1));
            i = r.parseCaptionPackets(e.pts, n), this.captionPackets_ = this.captionPackets_.concat(i), this.latestDts_ !== e.dts && (this.numSameDts_ = 0), this.numSameDts_++, this.latestDts_ = e.dts
        }
    }, s.prototype.flushCCStreams = function (e) {
        this.ccStreams_.forEach((function (t) {
            return "flush" === e ? t.flush() : t.partialFlush()
        }), this)
    }, s.prototype.flushStream = function (e) {
        this.captionPackets_.length ? (this.captionPackets_.forEach((function (e, t) {
            e.presortIndex = t
        })), this.captionPackets_.sort((function (e, t) {
            return e.pts === t.pts ? e.presortIndex - t.presortIndex : e.pts - t.pts
        })), this.captionPackets_.forEach((function (e) {
            e.type < 2 && this.dispatchCea608Packet(e)
        }), this), this.captionPackets_.length = 0, this.flushCCStreams(e)) : this.flushCCStreams(e)
    }, s.prototype.flush = function () {
        return this.flushStream("flush")
    }, s.prototype.partialFlush = function () {
        return this.flushStream("partialFlush")
    }, s.prototype.reset = function () {
        this.latestDts_ = null, this.ignoreNextEqualDts_ = !1, this.numSameDts_ = 0, this.activeCea608Channel_ = [null, null], this.ccStreams_.forEach((function (e) {
            e.reset()
        }))
    }, s.prototype.dispatchCea608Packet = function (e) {
        this.setsTextOrXDSActive(e) ? this.activeCea608Channel_[e.type] = null : this.setsChannel1Active(e) ? this.activeCea608Channel_[e.type] = 0 : this.setsChannel2Active(e) && (this.activeCea608Channel_[e.type] = 1), null !== this.activeCea608Channel_[e.type] && this.ccStreams_[(e.type << 1) + this.activeCea608Channel_[e.type]].push(e)
    }, s.prototype.setsChannel1Active = function (e) {
        return 4096 == (30720 & e.ccData)
    }, s.prototype.setsChannel2Active = function (e) {
        return 6144 == (30720 & e.ccData)
    }, s.prototype.setsTextOrXDSActive = function (e) {
        return 256 == (28928 & e.ccData) || 4138 == (30974 & e.ccData) || 6186 == (30974 & e.ccData)
    };
    var a = {42: 225, 92: 233, 94: 237, 95: 243, 96: 250, 123: 231, 124: 247, 125: 209, 126: 241, 127: 9608, 304: 174, 305: 176, 306: 189, 307: 191, 308: 8482, 309: 162, 310: 163, 311: 9834, 312: 224, 313: 160, 314: 232, 315: 226, 316: 234, 317: 238, 318: 244, 319: 251, 544: 193, 545: 201, 546: 211, 547: 218, 548: 220, 549: 252, 550: 8216, 551: 161, 552: 42, 553: 39, 554: 8212, 555: 169, 556: 8480, 557: 8226, 558: 8220, 559: 8221, 560: 192, 561: 194, 562: 199, 563: 200, 564: 202, 565: 203, 566: 235, 567: 206, 568: 207, 569: 239, 570: 212, 571: 217, 572: 249, 573: 219, 574: 171, 575: 187, 800: 195, 801: 227, 802: 205, 803: 204, 804: 236, 805: 210, 806: 242, 807: 213, 808: 245, 809: 123, 810: 125, 811: 92, 812: 94, 813: 95, 814: 124, 815: 126, 816: 196, 817: 228, 818: 214, 819: 246, 820: 223, 821: 165, 822: 164, 823: 9474, 824: 197, 825: 229, 826: 216, 827: 248, 828: 9484, 829: 9488, 830: 9492, 831: 9496}, o = function (e) {
        return null === e ? "" : (e = a[e] || e, String.fromCharCode(e))
    }, l = [4352, 4384, 4608, 4640, 5376, 5408, 5632, 5664, 5888, 5920, 4096, 4864, 4896, 5120, 5152], u = function () {
        for (var e = [], t = 15; t--;) e.push("");
        return e
    }, c = function (e, t) {
        c.prototype.init.call(this), this.field_ = e || 0, this.dataChannel_ = t || 0, this.name_ = "CC" + (1 + (this.field_ << 1 | this.dataChannel_)), this.setConstants(), this.reset(), this.push = function (e) {
            var t, n, i, r, s;
            if ((t = 32639 & e.ccData) !== this.lastControlCode_) {
                if (4096 == (61440 & t) ? this.lastControlCode_ = t : t !== this.PADDING_ && (this.lastControlCode_ = null), i = t >>> 8, r = 255 & t, t !== this.PADDING_) if (t === this.RESUME_CAPTION_LOADING_) this.mode_ = "popOn"; else if (t === this.END_OF_CAPTION_) this.mode_ = "popOn", this.clearFormatting(e.pts), this.flushDisplayed(e.pts), n = this.displayed_, this.displayed_ = this.nonDisplayed_, this.nonDisplayed_ = n, this.startPts_ = e.pts; else if (t === this.ROLL_UP_2_ROWS_) this.rollUpRows_ = 2, this.setRollUp(e.pts); else if (t === this.ROLL_UP_3_ROWS_) this.rollUpRows_ = 3, this.setRollUp(e.pts); else if (t === this.ROLL_UP_4_ROWS_) this.rollUpRows_ = 4, this.setRollUp(e.pts); else if (t === this.CARRIAGE_RETURN_) this.clearFormatting(e.pts), this.flushDisplayed(e.pts), this.shiftRowsUp_(), this.startPts_ = e.pts; else if (t === this.BACKSPACE_) "popOn" === this.mode_ ? this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1) : this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1); else if (t === this.ERASE_DISPLAYED_MEMORY_) this.flushDisplayed(e.pts), this.displayed_ = u(); else if (t === this.ERASE_NON_DISPLAYED_MEMORY_) this.nonDisplayed_ = u(); else if (t === this.RESUME_DIRECT_CAPTIONING_) "paintOn" !== this.mode_ && (this.flushDisplayed(e.pts), this.displayed_ = u()), this.mode_ = "paintOn", this.startPts_ = e.pts; else if (this.isSpecialCharacter(i, r)) s = o((i = (3 & i) << 8) | r), this[this.mode_](e.pts, s), this.column_++; else if (this.isExtCharacter(i, r)) "popOn" === this.mode_ ? this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1) : this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1), s = o((i = (3 & i) << 8) | r), this[this.mode_](e.pts, s), this.column_++; else if (this.isMidRowCode(i, r)) this.clearFormatting(e.pts), this[this.mode_](e.pts, " "), this.column_++, 14 == (14 & r) && this.addFormatting(e.pts, ["i"]), 1 == (1 & r) && this.addFormatting(e.pts, ["u"]); else if (this.isOffsetControlCode(i, r)) this.column_ += 3 & r; else if (this.isPAC(i, r)) {
                    var a = l.indexOf(7968 & t);
                    "rollUp" === this.mode_ && (a - this.rollUpRows_ + 1 < 0 && (a = this.rollUpRows_ - 1), this.setRollUp(e.pts, a)), a !== this.row_ && (this.clearFormatting(e.pts), this.row_ = a), 1 & r && -1 === this.formatting_.indexOf("u") && this.addFormatting(e.pts, ["u"]), 16 == (16 & t) && (this.column_ = 4 * ((14 & t) >> 1)), this.isColorPAC(r) && 14 == (14 & r) && this.addFormatting(e.pts, ["i"])
                } else this.isNormalChar(i) && (0 === r && (r = null), s = o(i), s += o(r), this[this.mode_](e.pts, s), this.column_ += s.length)
            } else this.lastControlCode_ = null
        }
    };
    c.prototype = new i, c.prototype.flushDisplayed = function (e) {
        var t = this.displayed_.map((function (e) {
            try {
                return e.trim()
            } catch (e) {
                return console.error("Skipping malformed caption."), ""
            }
        })).join("\n").replace(/^\n+|\n+$/g, "");
        t.length && this.trigger("data", {startPts: this.startPts_, endPts: e, text: t, stream: this.name_})
    }, c.prototype.reset = function () {
        this.mode_ = "popOn", this.topRow_ = 0, this.startPts_ = 0, this.displayed_ = u(), this.nonDisplayed_ = u(), this.lastControlCode_ = null, this.column_ = 0, this.row_ = 14, this.rollUpRows_ = 2, this.formatting_ = []
    }, c.prototype.setConstants = function () {
        0 === this.dataChannel_ ? (this.BASE_ = 16, this.EXT_ = 17, this.CONTROL_ = (20 | this.field_) << 8, this.OFFSET_ = 23) : 1 === this.dataChannel_ && (this.BASE_ = 24, this.EXT_ = 25, this.CONTROL_ = (28 | this.field_) << 8, this.OFFSET_ = 31), this.PADDING_ = 0, this.RESUME_CAPTION_LOADING_ = 32 | this.CONTROL_, this.END_OF_CAPTION_ = 47 | this.CONTROL_, this.ROLL_UP_2_ROWS_ = 37 | this.CONTROL_, this.ROLL_UP_3_ROWS_ = 38 | this.CONTROL_, this.ROLL_UP_4_ROWS_ = 39 | this.CONTROL_, this.CARRIAGE_RETURN_ = 45 | this.CONTROL_, this.RESUME_DIRECT_CAPTIONING_ = 41 | this.CONTROL_, this.BACKSPACE_ = 33 | this.CONTROL_, this.ERASE_DISPLAYED_MEMORY_ = 44 | this.CONTROL_, this.ERASE_NON_DISPLAYED_MEMORY_ = 46 | this.CONTROL_
    }, c.prototype.isSpecialCharacter = function (e, t) {
        return e === this.EXT_ && t >= 48 && t <= 63
    }, c.prototype.isExtCharacter = function (e, t) {
        return (e === this.EXT_ + 1 || e === this.EXT_ + 2) && t >= 32 && t <= 63
    }, c.prototype.isMidRowCode = function (e, t) {
        return e === this.EXT_ && t >= 32 && t <= 47
    }, c.prototype.isOffsetControlCode = function (e, t) {
        return e === this.OFFSET_ && t >= 33 && t <= 35
    }, c.prototype.isPAC = function (e, t) {
        return e >= this.BASE_ && e < this.BASE_ + 8 && t >= 64 && t <= 127
    }, c.prototype.isColorPAC = function (e) {
        return e >= 64 && e <= 79 || e >= 96 && e <= 127
    }, c.prototype.isNormalChar = function (e) {
        return e >= 32 && e <= 127
    }, c.prototype.setRollUp = function (e, t) {
        if ("rollUp" !== this.mode_ && (this.row_ = 14, this.mode_ = "rollUp", this.flushDisplayed(e), this.nonDisplayed_ = u(), this.displayed_ = u()), void 0 !== t && t !== this.row_) for (var n = 0; n < this.rollUpRows_; n++) this.displayed_[t - n] = this.displayed_[this.row_ - n], this.displayed_[this.row_ - n] = "";
        void 0 === t && (t = this.row_), this.topRow_ = t - this.rollUpRows_ + 1
    }, c.prototype.addFormatting = function (e, t) {
        this.formatting_ = this.formatting_.concat(t);
        var n = t.reduce((function (e, t) {
            return e + "<" + t + ">"
        }), "");
        this[this.mode_](e, n)
    }, c.prototype.clearFormatting = function (e) {
        if (this.formatting_.length) {
            var t = this.formatting_.reverse().reduce((function (e, t) {
                return e + "</" + t + ">"
            }), "");
            this.formatting_ = [], this[this.mode_](e, t)
        }
    }, c.prototype.popOn = function (e, t) {
        var n = this.nonDisplayed_[this.row_];
        n += t, this.nonDisplayed_[this.row_] = n
    }, c.prototype.rollUp = function (e, t) {
        var n = this.displayed_[this.row_];
        n += t, this.displayed_[this.row_] = n
    }, c.prototype.shiftRowsUp_ = function () {
        var e;
        for (e = 0; e < this.topRow_; e++) this.displayed_[e] = "";
        for (e = this.row_ + 1; e < 15; e++) this.displayed_[e] = "";
        for (e = this.topRow_; e < this.row_; e++) this.displayed_[e] = this.displayed_[e + 1];
        this.displayed_[this.row_] = ""
    }, c.prototype.paintOn = function (e, t) {
        var n = this.displayed_[this.row_];
        n += t, this.displayed_[this.row_] = n
    }, e.exports = {CaptionStream: s, Cea608Stream: c}
}, function (e, t, n) {
    "use strict";
    var i = n(18), r = function (e, t) {
        var n = 1;
        for (e > t && (n = -1); Math.abs(t - e) > 4294967296;) e += 8589934592 * n;
        return e
    }, s = function (e) {
        var t, n;
        s.prototype.init.call(this), this.type_ = e || "shared", this.push = function (e) {
            "shared" !== this.type_ && e.type !== this.type_ || (void 0 === n && (n = e.dts), e.dts = r(e.dts, n), e.pts = r(e.pts, n), t = e.dts, this.trigger("data", e))
        }, this.flush = function () {
            n = t, this.trigger("done")
        }, this.endTimeline = function () {
            this.flush(), this.trigger("endedtimeline")
        }, this.discontinuity = function () {
            n = void 0, t = void 0
        }, this.reset = function () {
            this.discontinuity(), this.trigger("reset")
        }
    };
    s.prototype = new i, e.exports = {TimestampRolloverStream: s, handleRollover: r}
}, function (e, t, n) {
    "use strict";
    var i = n(19), r = function (e) {
        var t = 31 & e[1];
        return t <<= 8, t |= e[2]
    }, s = function (e) {
        return !!(64 & e[1])
    }, a = function (e) {
        var t = 0;
        return (48 & e[3]) >>> 4 > 1 && (t += e[4] + 1), t
    }, o = function (e) {
        switch (e) {
            case 5:
                return "slice_layer_without_partitioning_rbsp_idr";
            case 6:
                return "sei_rbsp";
            case 7:
                return "seq_parameter_set_rbsp";
            case 8:
                return "pic_parameter_set_rbsp";
            case 9:
                return "access_unit_delimiter_rbsp";
            default:
                return null
        }
    };
    e.exports = {
        parseType: function (e, t) {
            var n = r(e);
            return 0 === n ? "pat" : n === t ? "pmt" : t ? "pes" : null
        }, parsePat: function (e) {
            var t = s(e), n = 4 + a(e);
            return t && (n += e[n] + 1), (31 & e[n + 10]) << 8 | e[n + 11]
        }, parsePmt: function (e) {
            var t = {}, n = s(e), i = 4 + a(e);
            if (n && (i += e[i] + 1), 1 & e[i + 5]) {
                var r;
                r = 3 + ((15 & e[i + 1]) << 8 | e[i + 2]) - 4;
                for (var o = 12 + ((15 & e[i + 10]) << 8 | e[i + 11]); o < r;) {
                    var l = i + o;
                    t[(31 & e[l + 1]) << 8 | e[l + 2]] = e[l], o += 5 + ((15 & e[l + 3]) << 8 | e[l + 4])
                }
                return t
            }
        }, parsePayloadUnitStartIndicator: s, parsePesType: function (e, t) {
            switch (t[r(e)]) {
                case i.H264_STREAM_TYPE:
                    return "video";
                case i.ADTS_STREAM_TYPE:
                    return "audio";
                case i.METADATA_STREAM_TYPE:
                    return "timed-metadata";
                default:
                    return null
            }
        }, parsePesTime: function (e) {
            if (!s(e)) return null;
            var t = 4 + a(e);
            if (t >= e.byteLength) return null;
            var n, i = null;
            return 192 & (n = e[t + 7]) && ((i = {}).pts = (14 & e[t + 9]) << 27 | (255 & e[t + 10]) << 20 | (254 & e[t + 11]) << 12 | (255 & e[t + 12]) << 5 | (254 & e[t + 13]) >>> 3, i.pts *= 4, i.pts += (6 & e[t + 13]) >>> 1, i.dts = i.pts, 64 & n && (i.dts = (14 & e[t + 14]) << 27 | (255 & e[t + 15]) << 20 | (254 & e[t + 16]) << 12 | (255 & e[t + 17]) << 5 | (254 & e[t + 18]) >>> 3, i.dts *= 4, i.dts += (6 & e[t + 18]) >>> 1)), i
        }, videoPacketContainsKeyFrame: function (e) {
            for (var t = 4 + a(e), n = e.subarray(t), i = 0, r = 0, s = !1; r < n.byteLength - 3; r++) if (1 === n[r + 2]) {
                i = r + 5;
                break
            }
            for (; i < n.byteLength;) switch (n[i]) {
                case 0:
                    if (0 !== n[i - 1]) {
                        i += 2;
                        break
                    }
                    if (0 !== n[i - 2]) {
                        i++;
                        break
                    }
                    r + 3 !== i - 2 && "slice_layer_without_partitioning_rbsp_idr" === o(31 & n[r + 3]) && (s = !0);
                    do {
                        i++
                    } while (1 !== n[i] && i < n.length);
                    r = i - 2, i += 3;
                    break;
                case 1:
                    if (0 !== n[i - 1] || 0 !== n[i - 2]) {
                        i += 3;
                        break
                    }
                    "slice_layer_without_partitioning_rbsp_idr" === o(31 & n[r + 3]) && (s = !0), r = i - 2, i += 3;
                    break;
                default:
                    i += 3
            }
            return n = n.subarray(r), i -= r, r = 0, n && n.byteLength > 3 && "slice_layer_without_partitioning_rbsp_idr" === o(31 & n[r + 3]) && (s = !0), s
        }
    }
}, function (e, t, n) {
    "use strict";
    var i = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350], r = function (e) {
        return e[0] << 21 | e[1] << 14 | e[2] << 7 | e[3]
    };
    e.exports = {
        isLikelyAacData: function (e) {
            return e[0] === "I".charCodeAt(0) && e[1] === "D".charCodeAt(0) && e[2] === "3".charCodeAt(0)
        }, parseId3TagSize: function (e, t) {
            var n = e[t + 6] << 21 | e[t + 7] << 14 | e[t + 8] << 7 | e[t + 9];
            return (16 & e[t + 5]) >> 4 ? n + 20 : n + 10
        }, parseAdtsSize: function (e, t) {
            var n = (224 & e[t + 5]) >> 5, i = e[t + 4] << 3;
            return 6144 & e[t + 3] | i | n
        }, parseType: function (e, t) {
            return e[t] === "I".charCodeAt(0) && e[t + 1] === "D".charCodeAt(0) && e[t + 2] === "3".charCodeAt(0) ? "timed-metadata" : !0 & e[t] && 240 == (240 & e[t + 1]) ? "audio" : null
        }, parseSampleRate: function (e) {
            for (var t = 0; t + 5 < e.length;) {
                if (255 === e[t] && 240 == (246 & e[t + 1])) return i[(60 & e[t + 2]) >>> 2];
                t++
            }
            return null
        }, parseAacTimestamp: function (e) {
            var t, n, i;
            t = 10, 64 & e[5] && (t += 4, t += r(e.subarray(10, 14)));
            do {
                if ((n = r(e.subarray(t + 4, t + 8))) < 1) return null;
                if ("PRIV" === String.fromCharCode(e[t], e[t + 1], e[t + 2], e[t + 3])) {
                    i = e.subarray(t + 10, t + n + 10);
                    for (var s = 0; s < i.byteLength; s++) if (0 === i[s]) {
                        if ("com.apple.streaming.transportStreamTimestamp" === unescape(function (e, t, n) {
                            var i, r = "";
                            for (i = t; i < n; i++) r += "%" + ("00" + e[i].toString(16)).slice(-2);
                            return r
                        }(i, 0, s))) {
                            var a = i.subarray(s + 1), o = (1 & a[3]) << 30 | a[4] << 22 | a[5] << 14 | a[6] << 6 | a[7] >>> 2;
                            return o *= 4, o += 3 & a[7]
                        }
                        break
                    }
                }
                t += 10, t += n
            } while (t < e.byteLength);
            return null
        }
    }
}, function (e, t) {
    var n, i, r, s, a, o, l;
    n = function (e) {
        return 9e4 * e
    }, i = function (e, t) {
        return e * t
    }, r = function (e) {
        return e / 9e4
    }, s = function (e, t) {
        return e / t
    }, a = function (e, t) {
        return n(s(e, t))
    }, o = function (e, t) {
        return i(r(e), t)
    }, l = function (e, t, n) {
        return r(n ? e : e - t)
    }, e.exports = {ONE_SECOND_IN_TS: 9e4, secondsToVideoTs: n, secondsToAudioTs: i, videoTsToSeconds: r, audioTsToSeconds: s, audioTsToVideoTs: a, videoTsToAudioTs: o, metadataTsToSeconds: l}
}, function (e, t, n) {
    (function (e) {
        e((function () {
            e(document).on("registering", (function () {
                e("body").addClass("loading")
            })), e(document).on("registrationError", (function () {
                e("body").removeClass("loading")
            }))
        }))
    }).call(this, n(11))
}, function (e, t, n) {
    (function (e) {
        e(document).ready((function () {
            e(".scroll-top").on("click", (function () {
                e([document.documentElement, document.body]).animate({scrollTop: e(e(this).attr("href")).offset().top}, 1e3)
            }))
        }))
    }).call(this, n(11))
}, function (e, t, n) {
    "use strict";
    n.r(t);
    n(28);
    var i = n(0), r = n.n(i), s = n(1), a = n.n(s), o = n(9), l = n.n(o), u = n(4), c = n.n(u), h = (n(31), n(33), n(2)), d = n.n(h), f = n(20), p = n.n(f), m = n(3), g = n.n(m), v = n(13), y = n.n(v), _ = n(14), b = n.n(_), T = n(21), w = n.n(T), S = n(22), E = n.n(S), C = n(8), k = n.n(C);

    function x() {
        return (x = Object.assign || function (e) {
            for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i])
            }
            return e
        }).apply(this, arguments)
    }

    function A(e, t) {
        e.prototype = Object.create(t.prototype), e.prototype.constructor = e, e.__proto__ = t
    }

    var D = function () {
        function e() {
            this.listeners = {}
        }

        var t = e.prototype;
        return t.on = function (e, t) {
            this.listeners[e] || (this.listeners[e] = []), this.listeners[e].push(t)
        }, t.off = function (e, t) {
            if (!this.listeners[e]) return !1;
            var n = this.listeners[e].indexOf(t);
            return this.listeners[e].splice(n, 1), n > -1
        }, t.trigger = function (e) {
            var t, n, i, r = this.listeners[e];
            if (r) if (2 === arguments.length) for (n = r.length, t = 0; t < n; ++t) r[t].call(this, arguments[1]); else for (i = Array.prototype.slice.call(arguments, 1), n = r.length, t = 0; t < n; ++t) r[t].apply(this, i)
        }, t.dispose = function () {
            this.listeners = {}
        }, t.pipe = function (e) {
            this.on("data", (function (t) {
                e.push(t)
            }))
        }, e
    }(), I = function (e) {
        function t() {
            var t;
            return (t = e.call(this) || this).buffer = "", t
        }

        return A(t, e), t.prototype.push = function (e) {
            var t;
            for (this.buffer += e, t = this.buffer.indexOf("\n"); t > -1; t = this.buffer.indexOf("\n")) this.trigger("data", this.buffer.substring(0, t)), this.buffer = this.buffer.substring(t + 1)
        }, t
    }(D), P = function (e) {
        for (var t, n = e.split(new RegExp('(?:^|,)((?:[^=]*)=(?:"[^"]*"|[^,]*))')), i = {}, r = n.length; r--;) "" !== n[r] && ((t = /([^=]*)=(.*)/.exec(n[r]).slice(1))[0] = t[0].replace(/^\s+|\s+$/g, ""), t[1] = t[1].replace(/^\s+|\s+$/g, ""), t[1] = t[1].replace(/^['"](.*)['"]$/g, "$1"), i[t[0]] = t[1]);
        return i
    }, O = function (e) {
        function t() {
            var t;
            return (t = e.call(this) || this).customParsers = [], t.tagMappers = [], t
        }

        A(t, e);
        var n = t.prototype;
        return n.push = function (e) {
            var t, n, i = this;
            0 !== (e = e.trim()).length && ("#" === e[0] ? this.tagMappers.reduce((function (t, n) {
                var i = n(e);
                return i === e ? t : t.concat([i])
            }), [e]).forEach((function (e) {
                for (var r = 0; r < i.customParsers.length; r++) if (i.customParsers[r].call(i, e)) return;
                if (0 === e.indexOf("#EXT")) if (e = e.replace("\r", ""), t = /^#EXTM3U/.exec(e)) i.trigger("data", {type: "tag", tagType: "m3u"}); else {
                    if (t = /^#EXTINF:?([0-9\.]*)?,?(.*)?$/.exec(e)) return n = {type: "tag", tagType: "inf"}, t[1] && (n.duration = parseFloat(t[1])), t[2] && (n.title = t[2]), void i.trigger("data", n);
                    if (t = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(e)) return n = {type: "tag", tagType: "targetduration"}, t[1] && (n.duration = parseInt(t[1], 10)), void i.trigger("data", n);
                    if (t = /^#ZEN-TOTAL-DURATION:?([0-9.]*)?/.exec(e)) return n = {type: "tag", tagType: "totalduration"}, t[1] && (n.duration = parseInt(t[1], 10)), void i.trigger("data", n);
                    if (t = /^#EXT-X-VERSION:?([0-9.]*)?/.exec(e)) return n = {type: "tag", tagType: "version"}, t[1] && (n.version = parseInt(t[1], 10)), void i.trigger("data", n);
                    if (t = /^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/.exec(e)) return n = {type: "tag", tagType: "media-sequence"}, t[1] && (n.number = parseInt(t[1], 10)), void i.trigger("data", n);
                    if (t = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\-?[0-9.]*)?/.exec(e)) return n = {type: "tag", tagType: "discontinuity-sequence"}, t[1] && (n.number = parseInt(t[1], 10)), void i.trigger("data", n);
                    if (t = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(e)) return n = {type: "tag", tagType: "playlist-type"}, t[1] && (n.playlistType = t[1]), void i.trigger("data", n);
                    if (t = /^#EXT-X-BYTERANGE:?([0-9.]*)?@?([0-9.]*)?/.exec(e)) return n = {type: "tag", tagType: "byterange"}, t[1] && (n.length = parseInt(t[1], 10)), t[2] && (n.offset = parseInt(t[2], 10)), void i.trigger("data", n);
                    if (t = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(e)) return n = {type: "tag", tagType: "allow-cache"}, t[1] && (n.allowed = !/NO/.test(t[1])), void i.trigger("data", n);
                    if (t = /^#EXT-X-MAP:?(.*)$/.exec(e)) {
                        if (n = {type: "tag", tagType: "map"}, t[1]) {
                            var s = P(t[1]);
                            if (s.URI && (n.uri = s.URI), s.BYTERANGE) {
                                var a = s.BYTERANGE.split("@"), o = a[0], l = a[1];
                                n.byterange = {}, o && (n.byterange.length = parseInt(o, 10)), l && (n.byterange.offset = parseInt(l, 10))
                            }
                        }
                        i.trigger("data", n)
                    } else if (t = /^#EXT-X-STREAM-INF:?(.*)$/.exec(e)) {
                        if (n = {type: "tag", tagType: "stream-inf"}, t[1]) {
                            if (n.attributes = P(t[1]), n.attributes.RESOLUTION) {
                                var u = n.attributes.RESOLUTION.split("x"), c = {};
                                u[0] && (c.width = parseInt(u[0], 10)), u[1] && (c.height = parseInt(u[1], 10)), n.attributes.RESOLUTION = c
                            }
                            n.attributes.BANDWIDTH && (n.attributes.BANDWIDTH = parseInt(n.attributes.BANDWIDTH, 10)), n.attributes["PROGRAM-ID"] && (n.attributes["PROGRAM-ID"] = parseInt(n.attributes["PROGRAM-ID"], 10))
                        }
                        i.trigger("data", n)
                    } else {
                        if (t = /^#EXT-X-MEDIA:?(.*)$/.exec(e)) return n = {type: "tag", tagType: "media"}, t[1] && (n.attributes = P(t[1])), void i.trigger("data", n);
                        if (t = /^#EXT-X-ENDLIST/.exec(e)) i.trigger("data", {type: "tag", tagType: "endlist"}); else if (t = /^#EXT-X-DISCONTINUITY/.exec(e)) i.trigger("data", {type: "tag", tagType: "discontinuity"}); else {
                            if (t = /^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(e)) return n = {type: "tag", tagType: "program-date-time"}, t[1] && (n.dateTimeString = t[1], n.dateTimeObject = new Date(t[1])), void i.trigger("data", n);
                            if (t = /^#EXT-X-KEY:?(.*)$/.exec(e)) return n = {type: "tag", tagType: "key"}, t[1] && (n.attributes = P(t[1]), n.attributes.IV && ("0x" === n.attributes.IV.substring(0, 2).toLowerCase() && (n.attributes.IV = n.attributes.IV.substring(2)), n.attributes.IV = n.attributes.IV.match(/.{8}/g), n.attributes.IV[0] = parseInt(n.attributes.IV[0], 16), n.attributes.IV[1] = parseInt(n.attributes.IV[1], 16), n.attributes.IV[2] = parseInt(n.attributes.IV[2], 16), n.attributes.IV[3] = parseInt(n.attributes.IV[3], 16), n.attributes.IV = new Uint32Array(n.attributes.IV))), void i.trigger("data", n);
                            if (t = /^#EXT-X-START:?(.*)$/.exec(e)) return n = {type: "tag", tagType: "start"}, t[1] && (n.attributes = P(t[1]), n.attributes["TIME-OFFSET"] = parseFloat(n.attributes["TIME-OFFSET"]), n.attributes.PRECISE = /YES/.test(n.attributes.PRECISE)), void i.trigger("data", n);
                            if (t = /^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(e)) return n = {type: "tag", tagType: "cue-out-cont"}, t[1] ? n.data = t[1] : n.data = "", void i.trigger("data", n);
                            if (t = /^#EXT-X-CUE-OUT:?(.*)?$/.exec(e)) return n = {type: "tag", tagType: "cue-out"}, t[1] ? n.data = t[1] : n.data = "", void i.trigger("data", n);
                            if (t = /^#EXT-X-CUE-IN:?(.*)?$/.exec(e)) return n = {type: "tag", tagType: "cue-in"}, t[1] ? n.data = t[1] : n.data = "", void i.trigger("data", n);
                            i.trigger("data", {type: "tag", data: e.slice(4)})
                        }
                    }
                } else i.trigger("data", {type: "comment", text: e.slice(1)})
            })) : this.trigger("data", {type: "uri", uri: e}))
        }, n.addParser = function (e) {
            var t = this, n = e.expression, i = e.customType, r = e.dataParser, s = e.segment;
            "function" != typeof r && (r = function (e) {
                return e
            }), this.customParsers.push((function (e) {
                if (n.exec(e)) return t.trigger("data", {type: "custom", data: r(e), customType: i, segment: s}), !0
            }))
        }, n.addTagMapper = function (e) {
            var t = e.expression, n = e.map;
            this.tagMappers.push((function (e) {
                return t.test(e) ? n(e) : e
            }))
        }, t
    }(D);

    function L(e) {
        for (var t = r.a.atob(e || ""), n = new Uint8Array(t.length), i = 0; i < t.length; i++) n[i] = t.charCodeAt(i);
        return n
    }

    var N = function (e) {
        function t() {
            var t;
            (t = e.call(this) || this).lineStream = new I, t.parseStream = new O, t.lineStream.pipe(t.parseStream);
            var n, i, r = function (e) {
                if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return e
            }(t), s = [], a = {}, o = function () {
            }, l = {AUDIO: {}, VIDEO: {}, "CLOSED-CAPTIONS": {}, SUBTITLES: {}}, u = 0;
            return t.manifest = {allowCache: !0, discontinuityStarts: [], segments: []}, t.parseStream.on("data", (function (e) {
                var t, c;
                ({
                    tag: function () {
                        ({
                            "allow-cache": function () {
                                this.manifest.allowCache = e.allowed, "allowed" in e || (this.trigger("info", {message: "defaulting allowCache to YES"}), this.manifest.allowCache = !0)
                            }, byterange: function () {
                                var t = {};
                                "length" in e && (a.byterange = t, t.length = e.length, "offset" in e || (this.trigger("info", {message: "defaulting offset to zero"}), e.offset = 0)), "offset" in e && (a.byterange = t, t.offset = e.offset)
                            }, endlist: function () {
                                this.manifest.endList = !0
                            }, inf: function () {
                                "mediaSequence" in this.manifest || (this.manifest.mediaSequence = 0, this.trigger("info", {message: "defaulting media sequence to zero"})), "discontinuitySequence" in this.manifest || (this.manifest.discontinuitySequence = 0, this.trigger("info", {message: "defaulting discontinuity sequence to zero"})), e.duration > 0 && (a.duration = e.duration), 0 === e.duration && (a.duration = .01, this.trigger("info", {message: "updating zero segment duration to a small value"})), this.manifest.segments = s
                            }, key: function () {
                                if (e.attributes) if ("NONE" !== e.attributes.METHOD) if (e.attributes.URI) {
                                    if ("urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" === e.attributes.KEYFORMAT) {
                                        return -1 === ["SAMPLE-AES", "SAMPLE-AES-CTR", "SAMPLE-AES-CENC"].indexOf(e.attributes.METHOD) ? void this.trigger("warn", {message: "invalid key method provided for Widevine"}) : ("SAMPLE-AES-CENC" === e.attributes.METHOD && this.trigger("warn", {message: "SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead"}), "data:text/plain;base64," !== e.attributes.URI.substring(0, 23) ? void this.trigger("warn", {message: "invalid key URI provided for Widevine"}) : e.attributes.KEYID && "0x" === e.attributes.KEYID.substring(0, 2) ? void (this.manifest.contentProtection = {"com.widevine.alpha": {attributes: {schemeIdUri: e.attributes.KEYFORMAT, keyId: e.attributes.KEYID.substring(2)}, pssh: L(e.attributes.URI.split(",")[1])}}) : void this.trigger("warn", {message: "invalid key ID provided for Widevine"}))
                                    }
                                    e.attributes.METHOD || this.trigger("warn", {message: "defaulting key method to AES-128"}), i = {method: e.attributes.METHOD || "AES-128", uri: e.attributes.URI}, void 0 !== e.attributes.IV && (i.iv = e.attributes.IV)
                                } else this.trigger("warn", {message: "ignoring key declaration without URI"}); else i = null; else this.trigger("warn", {message: "ignoring key declaration without attribute list"})
                            }, "media-sequence": function () {
                                isFinite(e.number) ? this.manifest.mediaSequence = e.number : this.trigger("warn", {message: "ignoring invalid media sequence: " + e.number})
                            }, "discontinuity-sequence": function () {
                                isFinite(e.number) ? (this.manifest.discontinuitySequence = e.number, u = e.number) : this.trigger("warn", {message: "ignoring invalid discontinuity sequence: " + e.number})
                            }, "playlist-type": function () {
                                /VOD|EVENT/.test(e.playlistType) ? this.manifest.playlistType = e.playlistType : this.trigger("warn", {message: "ignoring unknown playlist type: " + e.playlist})
                            }, map: function () {
                                n = {}, e.uri && (n.uri = e.uri), e.byterange && (n.byterange = e.byterange)
                            }, "stream-inf": function () {
                                this.manifest.playlists = s, this.manifest.mediaGroups = this.manifest.mediaGroups || l, e.attributes ? (a.attributes || (a.attributes = {}), x(a.attributes, e.attributes)) : this.trigger("warn", {message: "ignoring empty stream-inf attributes"})
                            }, media: function () {
                                if (this.manifest.mediaGroups = this.manifest.mediaGroups || l, e.attributes && e.attributes.TYPE && e.attributes["GROUP-ID"] && e.attributes.NAME) {
                                    var n = this.manifest.mediaGroups[e.attributes.TYPE];
                                    n[e.attributes["GROUP-ID"]] = n[e.attributes["GROUP-ID"]] || {}, t = n[e.attributes["GROUP-ID"]], (c = {default: /yes/i.test(e.attributes.DEFAULT)}).default ? c.autoselect = !0 : c.autoselect = /yes/i.test(e.attributes.AUTOSELECT), e.attributes.LANGUAGE && (c.language = e.attributes.LANGUAGE), e.attributes.URI && (c.uri = e.attributes.URI), e.attributes["INSTREAM-ID"] && (c.instreamId = e.attributes["INSTREAM-ID"]), e.attributes.CHARACTERISTICS && (c.characteristics = e.attributes.CHARACTERISTICS), e.attributes.FORCED && (c.forced = /yes/i.test(e.attributes.FORCED)), t[e.attributes.NAME] = c
                                } else this.trigger("warn", {message: "ignoring incomplete or missing media group"})
                            }, discontinuity: function () {
                                u += 1, a.discontinuity = !0, this.manifest.discontinuityStarts.push(s.length)
                            }, "program-date-time": function () {
                                void 0 === this.manifest.dateTimeString && (this.manifest.dateTimeString = e.dateTimeString, this.manifest.dateTimeObject = e.dateTimeObject), a.dateTimeString = e.dateTimeString, a.dateTimeObject = e.dateTimeObject
                            }, targetduration: function () {
                                !isFinite(e.duration) || e.duration < 0 ? this.trigger("warn", {message: "ignoring invalid target duration: " + e.duration}) : this.manifest.targetDuration = e.duration
                            }, totalduration: function () {
                                !isFinite(e.duration) || e.duration < 0 ? this.trigger("warn", {message: "ignoring invalid total duration: " + e.duration}) : this.manifest.totalDuration = e.duration
                            }, start: function () {
                                e.attributes && !isNaN(e.attributes["TIME-OFFSET"]) ? this.manifest.start = {timeOffset: e.attributes["TIME-OFFSET"], precise: e.attributes.PRECISE} : this.trigger("warn", {message: "ignoring start declaration without appropriate attribute list"})
                            }, "cue-out": function () {
                                a.cueOut = e.data
                            }, "cue-out-cont": function () {
                                a.cueOutCont = e.data
                            }, "cue-in": function () {
                                a.cueIn = e.data
                            }
                        }[e.tagType] || o).call(r)
                    }, uri: function () {
                        a.uri = e.uri, s.push(a), !this.manifest.targetDuration || "duration" in a || (this.trigger("warn", {message: "defaulting segment duration to the target duration"}), a.duration = this.manifest.targetDuration), i && (a.key = i), a.timeline = u, n && (a.map = n), a = {}
                    }, comment: function () {
                    }, custom: function () {
                        e.segment ? (a.custom = a.custom || {}, a.custom[e.customType] = e.data) : (this.manifest.custom = this.manifest.custom || {}, this.manifest.custom[e.customType] = e.data)
                    }
                })[e.type].call(r)
            })), t
        }

        A(t, e);
        var n = t.prototype;
        return n.push = function (e) {
            this.lineStream.push(e)
        }, n.end = function () {
            this.lineStream.push("\n")
        }, n.addParser = function (e) {
            this.parseStream.addParser(e)
        }, n.addTagMapper = function (e) {
            this.parseStream.addTagMapper(e)
        }, t
    }(D), R = n(10), U = n.n(R), M = n(23), B = n.n(M), j = n(24), F = function (e) {
        return !!e && "object" == typeof e
    }, H = function e() {
        for (var t = arguments.length, n = new Array(t), i = 0; i < t; i++) n[i] = arguments[i];
        return n.reduce((function (t, n) {
            return Object.keys(n).forEach((function (i) {
                Array.isArray(t[i]) && Array.isArray(n[i]) ? t[i] = t[i].concat(n[i]) : F(t[i]) && F(n[i]) ? t[i] = e(t[i], n[i]) : t[i] = n[i]
            })), t
        }), {})
    }, q = function (e) {
        return e.reduce((function (e, t) {
            return e.concat(t)
        }), [])
    }, V = function (e) {
        if (!e.length) return [];
        for (var t = [], n = 0; n < e.length; n++) t.push(e[n]);
        return t
    }, W = "INVALID_NUMBER_OF_PERIOD", z = "DASH_EMPTY_MANIFEST", G = "DASH_INVALID_XML", Y = "NO_BASE_URL", X = "SEGMENT_TIME_UNSPECIFIED", K = "UNSUPPORTED_UTC_TIMING_SCHEME", $ = function (e) {
        var t = e.baseUrl, n = void 0 === t ? "" : t, i = e.source, r = void 0 === i ? "" : i, s = e.range, a = void 0 === s ? "" : s, o = e.indexRange, l = void 0 === o ? "" : o, u = {uri: r, resolvedUri: U()(n || "", r)};
        if (a || l) {
            var c = (a || l).split("-"), h = parseInt(c[0], 10), d = parseInt(c[1], 10);
            u.byterange = {length: d - h + 1, offset: h}
        }
        return u
    }, Q = {
        static: function (e) {
            var t = e.duration, n = e.timescale, i = void 0 === n ? 1 : n, r = e.sourceDuration;
            return {start: 0, end: Math.ceil(r / (t / i))}
        }, dynamic: function (e) {
            var t = e.NOW, n = e.clientOffset, i = e.availabilityStartTime, r = e.timescale, s = void 0 === r ? 1 : r, a = e.duration, o = e.start, l = void 0 === o ? 0 : o, u = e.minimumUpdatePeriod, c = void 0 === u ? 0 : u, h = e.timeShiftBufferDepth, d = void 0 === h ? 1 / 0 : h, f = (t + n) / 1e3, p = i + l, m = f + c - p, g = Math.ceil(m * s / a), v = Math.floor((f - p - d) * s / a), y = Math.floor((f - p) * s / a);
            return {start: Math.max(0, v), end: Math.min(g, y)}
        }
    }, J = function (e) {
        var t = e.type, n = void 0 === t ? "static" : t, i = e.duration, r = e.timescale, s = void 0 === r ? 1 : r, a = e.sourceDuration, o = Q[n](e), l = function (e, t) {
            for (var n = [], i = e; i < t; i++) n.push(i);
            return n
        }(o.start, o.end).map(function (e) {
            return function (t, n) {
                var i = e.duration, r = e.timescale, s = void 0 === r ? 1 : r, a = e.periodIndex, o = e.startNumber;
                return {number: (void 0 === o ? 1 : o) + t, duration: i / s, timeline: a, time: n * i}
            }
        }(e));
        if ("static" === n) {
            var u = l.length - 1;
            l[u].duration = a - i / s * u
        }
        return l
    }, Z = function (e) {
        var t = e.baseUrl, n = e.initialization, i = void 0 === n ? {} : n, r = e.sourceDuration, s = e.timescale, a = void 0 === s ? 1 : s, o = e.indexRange, l = void 0 === o ? "" : o, u = e.duration;
        if (!t) throw new Error(Y);
        var c = $({baseUrl: t, source: i.sourceURL, range: i.range}), h = $({baseUrl: t, source: t, indexRange: l});
        if (h.map = c, u) {
            var d = J(e);
            d.length && (h.duration = d[0].duration, h.timeline = d[0].timeline)
        } else r && (h.duration = r / a, h.timeline = 0);
        return h.number = 0, [h]
    }, ee = function (e, t, n) {
        for (var i = e.sidx.map ? e.sidx.map : null, r = e.sidx.duration, s = e.timeline || 0, a = e.sidx.byterange, o = a.offset + a.length, l = t.timescale, u = t.references.filter((function (e) {
            return 1 !== e.referenceType
        })), c = [], h = o + t.firstOffset, d = 0; d < u.length; d++) {
            var f = t.references[d], p = f.referencedSize, m = f.subsegmentDuration, g = Z({baseUrl: n, timescale: l, timeline: s, periodIndex: s, duration: m, sourceDuration: r, indexRange: h + "-" + (h + p - 1)})[0];
            i && (g.map = i), c.push(g), h += p
        }
        return e.segments = c, e
    }, te = function (e) {
        var t;
        return (t = e.reduce((function (e, t) {
            var n, i = t.attributes.id + (t.attributes.lang || "");
            return e[i] ? (t.segments[0] && (t.segments[0].discontinuity = !0), (n = e[i].segments).push.apply(n, t.segments), t.attributes.contentProtection && (e[i].attributes.contentProtection = t.attributes.contentProtection)) : e[i] = t, e
        }), {}), Object.keys(t).map((function (e) {
            return t[e]
        }))).map((function (e) {
            var t, n;
            return e.discontinuityStarts = (t = e.segments, n = "discontinuity", t.reduce((function (e, t, i) {
                return t[n] && e.push(i), e
            }), [])), e
        }))
    }, ne = function (e, t) {
        if (void 0 === t && (t = {}), !Object.keys(t).length) return e;
        for (var n in e) {
            var i = e[n];
            if (i.sidx) {
                var r = i.sidx.uri + "-" + (a = i.sidx.byterange, o = void 0, o = a.offset + a.length - 1, a.offset + "-" + o), s = t[r] && t[r].sidx;
                i.sidx && s && ee(i, s, i.sidx.resolvedUri)
            }
        }
        var a, o;
        return e
    }, ie = function (e) {
        var t, n = e.attributes, i = e.segments, r = e.sidx, s = {attributes: (t = {NAME: n.id, BANDWIDTH: n.bandwidth, CODECS: n.codecs}, t["PROGRAM-ID"] = 1, t), uri: "", endList: "static" === (n.type || "static"), timeline: n.periodIndex, resolvedUri: "", targetDuration: n.duration, segments: i, mediaSequence: i.length ? i[0].number : 1};
        return n.contentProtection && (s.contentProtection = n.contentProtection), r && (s.sidx = r), s
    }, re = function (e) {
        var t, n = e.attributes, i = e.segments, r = e.sidx, s = {attributes: (t = {NAME: n.id, AUDIO: "audio", SUBTITLES: "subs", RESOLUTION: {width: n.width, height: n.height}, CODECS: n.codecs, BANDWIDTH: n.bandwidth}, t["PROGRAM-ID"] = 1, t), uri: "", endList: "static" === (n.type || "static"), timeline: n.periodIndex, resolvedUri: "", targetDuration: n.duration, segments: i, mediaSequence: i.length ? i[0].number : 1};
        return n.contentProtection && (s.contentProtection = n.contentProtection), r && (s.sidx = r), s
    }, se = function (e, t) {
        var n;
        if (void 0 === t && (t = {}), !e.length) return {};
        var i = e[0].attributes, r = i.sourceDuration, s = i.type, a = void 0 === s ? "static" : s, o = i.suggestedPresentationDelay, l = i.minimumUpdatePeriod, u = void 0 === l ? 0 : l, c = te(e.filter((function (e) {
            var t = e.attributes;
            return "video/mp4" === t.mimeType || "video" === t.contentType
        }))).map(re), h = te(e.filter((function (e) {
            var t = e.attributes;
            return "audio/mp4" === t.mimeType || "audio" === t.contentType
        }))), d = e.filter((function (e) {
            var t = e.attributes;
            return "text/vtt" === t.mimeType || "text" === t.contentType
        })), f = {allowCache: !0, discontinuityStarts: [], segments: [], endList: !0, mediaGroups: (n = {AUDIO: {}, VIDEO: {}}, n["CLOSED-CAPTIONS"] = {}, n.SUBTITLES = {}, n), uri: "", duration: r, playlists: ne(c, t), minimumUpdatePeriod: 1e3 * u};
        return "dynamic" === a && (f.suggestedPresentationDelay = o), h.length && (f.mediaGroups.AUDIO.audio = function (e, t) {
            var n;
            void 0 === t && (t = {});
            var i = e.reduce((function (e, i) {
                var r = i.attributes.role && i.attributes.role.value || "", s = i.attributes.lang || "", a = "main";
                if (s) {
                    var o = r ? " (" + r + ")" : "";
                    a = "" + i.attributes.lang + o
                }
                return e[a] && e[a].playlists[0].attributes.BANDWIDTH > i.attributes.bandwidth ? e : (e[a] = {language: s, autoselect: !0, default: "main" === r, playlists: ne([ie(i)], t), uri: ""}, void 0 === n && "main" === r && ((n = i).default = !0), e)
            }), {});
            n || (i[Object.keys(i)[0]].default = !0);
            return i
        }(h, t)), d.length && (f.mediaGroups.SUBTITLES.subs = function (e, t) {
            return void 0 === t && (t = {}), e.reduce((function (e, n) {
                var i, r, s, a, o = n.attributes.lang || "text";
                return e[o] ? e : (e[o] = {language: o, default: !1, autoselect: !1, playlists: ne([(i = n, s = i.attributes, a = i.segments, void 0 === a && (a = [{uri: s.baseUrl, timeline: s.periodIndex, resolvedUri: s.baseUrl || "", duration: s.sourceDuration, number: 0}], s.duration = s.sourceDuration), {attributes: (r = {NAME: s.id, BANDWIDTH: s.bandwidth}, r["PROGRAM-ID"] = 1, r), uri: "", endList: "static" === (s.type || "static"), timeline: s.periodIndex, resolvedUri: s.baseUrl || "", targetDuration: s.duration, segments: a, mediaSequence: a.length ? a[0].number : 1})], t), uri: ""}, e)
            }), {})
        }(d, t)), f
    }, ae = function (e, t, n) {
        var i = e.NOW, r = e.clientOffset, s = e.availabilityStartTime, a = e.timescale, o = void 0 === a ? 1 : a, l = e.start, u = void 0 === l ? 0 : l, c = e.minimumUpdatePeriod, h = (i + r) / 1e3 + (void 0 === c ? 0 : c) - (s + u);
        return Math.ceil((h * o - t) / n)
    }, oe = function (e, t) {
        for (var n = e.type, i = void 0 === n ? "static" : n, r = e.minimumUpdatePeriod, s = void 0 === r ? 0 : r, a = e.media, o = void 0 === a ? "" : a, l = e.sourceDuration, u = e.timescale, c = void 0 === u ? 1 : u, h = e.startNumber, d = void 0 === h ? 1 : h, f = e.periodIndex, p = [], m = -1, g = 0; g < t.length; g++) {
            var v = t[g], y = v.d, _ = v.r || 0, b = v.t || 0;
            m < 0 && (m = b), b && b > m && (m = b);
            var T = void 0;
            if (_ < 0) {
                var w = g + 1;
                T = w === t.length ? "dynamic" === i && s > 0 && o.indexOf("$Number$") > 0 ? ae(e, m, y) : (l * c - m) / y : (t[w].t - m) / y
            } else T = _ + 1;
            for (var S = d + p.length + T, E = d + p.length; E < S;) p.push({number: E, duration: y / c, time: m, timeline: f}), m += y, E++
        }
        return p
    }, le = /\$([A-z]*)(?:(%0)([0-9]+)d)?\$/g, ue = function (e, t) {
        return e.replace(le, function (e) {
            return function (t, n, i, r) {
                if ("$$" === t) return "$";
                if (void 0 === e[n]) return t;
                var s = "" + e[n];
                return "RepresentationID" === n ? s : (r = i ? parseInt(r, 10) : 1, s.length >= r ? s : "" + new Array(r - s.length + 1).join("0") + s)
            }
        }(t))
    }, ce = function (e, t) {
        var n = {RepresentationID: e.id, Bandwidth: e.bandwidth || 0}, i = e.initialization, r = void 0 === i ? {sourceURL: "", range: ""} : i, s = $({baseUrl: e.baseUrl, source: ue(r.sourceURL, n), range: r.range});
        return function (e, t) {
            return e.duration || t ? e.duration ? J(e) : oe(e, t) : [{number: e.startNumber || 1, duration: e.sourceDuration, time: 0, timeline: e.periodIndex}]
        }(e, t).map((function (t) {
            n.Number = t.number, n.Time = t.time;
            var i = ue(e.media || "", n);
            return {uri: i, timeline: t.timeline, duration: t.duration, resolvedUri: U()(e.baseUrl || "", i), map: s, number: t.number}
        }))
    }, he = function (e, t) {
        var n = e.duration, i = e.segmentUrls, r = void 0 === i ? [] : i;
        if (!n && !t || n && t) throw new Error(X);
        var s, a = r.map((function (t) {
            return function (e, t) {
                var n = e.baseUrl, i = e.initialization, r = void 0 === i ? {} : i, s = $({baseUrl: n, source: r.sourceURL, range: r.range}), a = $({baseUrl: n, source: t.media, range: t.mediaRange});
                return a.map = s, a
            }(e, t)
        }));
        return n && (s = J(e)), t && (s = oe(e, t)), s.map((function (e, t) {
            if (a[t]) {
                var n = a[t];
                return n.timeline = e.timeline, n.duration = e.duration, n.number = e.number, n
            }
        })).filter((function (e) {
            return e
        }))
    }, de = function (e) {
        var t, n, i = e.attributes, r = e.segmentInfo;
        r.template ? (n = ce, t = H(i, r.template)) : r.base ? (n = Z, t = H(i, r.base)) : r.list && (n = he, t = H(i, r.list));
        var s = {attributes: i};
        if (!n) return s;
        var a = n(t, r.timeline);
        if (t.duration) {
            var o = t, l = o.duration, u = o.timescale, c = void 0 === u ? 1 : u;
            t.duration = l / c
        } else a.length ? t.duration = a.reduce((function (e, t) {
            return Math.max(e, Math.ceil(t.duration))
        }), 0) : t.duration = 0;
        return s.attributes = t, s.segments = a, r.base && t.indexRange && (s.sidx = a[0], s.segments = []), s
    }, fe = function (e, t) {
        return V(e.childNodes).filter((function (e) {
            return e.tagName === t
        }))
    }, pe = function (e) {
        return e.textContent.trim()
    }, me = function (e) {
        var t = /P(?:(\d*)Y)?(?:(\d*)M)?(?:(\d*)D)?(?:T(?:(\d*)H)?(?:(\d*)M)?(?:([\d.]*)S)?)?/.exec(e);
        if (!t) return 0;
        var n = t.slice(1), i = n[0], r = n[1], s = n[2], a = n[3], o = n[4], l = n[5];
        return 31536e3 * parseFloat(i || 0) + 2592e3 * parseFloat(r || 0) + 86400 * parseFloat(s || 0) + 3600 * parseFloat(a || 0) + 60 * parseFloat(o || 0) + parseFloat(l || 0)
    }, ge = {
        mediaPresentationDuration: function (e) {
            return me(e)
        }, availabilityStartTime: function (e) {
            return /^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/.test(t = e) && (t += "Z"), Date.parse(t) / 1e3;
            var t
        }, minimumUpdatePeriod: function (e) {
            return me(e)
        }, suggestedPresentationDelay: function (e) {
            return me(e)
        }, type: function (e) {
            return e
        }, timeShiftBufferDepth: function (e) {
            return me(e)
        }, start: function (e) {
            return me(e)
        }, width: function (e) {
            return parseInt(e, 10)
        }, height: function (e) {
            return parseInt(e, 10)
        }, bandwidth: function (e) {
            return parseInt(e, 10)
        }, startNumber: function (e) {
            return parseInt(e, 10)
        }, timescale: function (e) {
            return parseInt(e, 10)
        }, duration: function (e) {
            var t = parseInt(e, 10);
            return isNaN(t) ? me(e) : t
        }, d: function (e) {
            return parseInt(e, 10)
        }, t: function (e) {
            return parseInt(e, 10)
        }, r: function (e) {
            return parseInt(e, 10)
        }, DEFAULT: function (e) {
            return e
        }
    }, ve = function (e) {
        return e && e.attributes ? V(e.attributes).reduce((function (e, t) {
            var n = ge[t.name] || ge.DEFAULT;
            return e[t.name] = n(t.value), e
        }), {}) : {}
    }, ye = {"urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b": "org.w3.clearkey", "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed": "com.widevine.alpha", "urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95": "com.microsoft.playready", "urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb": "com.adobe.primetime"}, _e = function (e, t) {
        return t.length ? q(e.map((function (e) {
            return t.map((function (t) {
                return U()(e, pe(t))
            }))
        }))) : e
    }, be = function (e) {
        var t = fe(e, "SegmentTemplate")[0], n = fe(e, "SegmentList")[0], i = n && fe(n, "SegmentURL").map((function (e) {
            return H({tag: "SegmentURL"}, ve(e))
        })), r = fe(e, "SegmentBase")[0], s = n || t, a = s && fe(s, "SegmentTimeline")[0], o = n || r || t, l = o && fe(o, "Initialization")[0], u = t && ve(t);
        u && l ? u.initialization = l && ve(l) : u && u.initialization && (u.initialization = {sourceURL: u.initialization});
        var c = {
            template: u, timeline: a && fe(a, "S").map((function (e) {
                return ve(e)
            })), list: n && H(ve(n), {segmentUrls: i, initialization: ve(l)}), base: r && H(ve(r), {initialization: ve(l)})
        };
        return Object.keys(c).forEach((function (e) {
            c[e] || delete c[e]
        })), c
    }, Te = function (e, t, n) {
        return function (i) {
            var r = ve(i), s = _e(t, fe(i, "BaseURL")), a = fe(i, "Role")[0], o = {role: ve(a)}, l = H(e, r, o), u = fe(i, "ContentProtection").reduce((function (e, t) {
                var n = ve(t), i = ye[n.schemeIdUri];
                if (i) {
                    e[i] = {attributes: n};
                    var r = fe(t, "cenc:pssh")[0];
                    if (r) {
                        var s = pe(r), a = s && B()(s);
                        e[i].pssh = a
                    }
                }
                return e
            }), {});
            Object.keys(u).length && (l = H(l, {contentProtection: u}));
            var c = be(i), h = fe(i, "Representation"), d = H(n, c);
            return q(h.map(function (e, t, n) {
                return function (i) {
                    var r = fe(i, "BaseURL"), s = _e(t, r), a = H(e, ve(i)), o = be(i);
                    return s.map((function (e) {
                        return {segmentInfo: H(n, o), attributes: H(a, {baseUrl: e})}
                    }))
                }
            }(l, s, d)))
        }
    }, we = function (e, t) {
        void 0 === t && (t = {});
        var n = t, i = n.manifestUri, s = void 0 === i ? "" : i, a = n.NOW, o = void 0 === a ? Date.now() : a, l = n.clientOffset, u = void 0 === l ? 0 : l, c = fe(e, "Period");
        if (!c.length) throw new Error(W);
        var h = ve(e), d = _e([s], fe(e, "BaseURL"));
        return h.sourceDuration = h.mediaPresentationDuration || 0, h.NOW = o, h.clientOffset = u, q(c.map(function (e, t) {
            return function (n, i) {
                var s = _e(t, fe(n, "BaseURL")), a = ve(n), o = parseInt(a.id, 10), l = r.a.isNaN(o) ? i : o, u = H(e, {periodIndex: l}), c = fe(n, "AdaptationSet"), h = be(n);
                return q(c.map(Te(u, s, h)))
            }
        }(h, d)))
    }, Se = function (e) {
        if ("" === e) throw new Error(z);
        var t = (new j.DOMParser).parseFromString(e, "application/xml"), n = t && "MPD" === t.documentElement.tagName ? t.documentElement : null;
        if (!n || n && n.getElementsByTagName("parsererror").length > 0) throw new Error(G);
        return n
    }, Ee = function (e, t) {
        return void 0 === t && (t = {}), se(we(Se(e), t).map(de), t.sidxMapping)
    }, Ce = function (e) {
        return function (e) {
            var t = fe(e, "UTCTiming")[0];
            if (!t) return null;
            var n = ve(t);
            switch (n.schemeIdUri) {
                case"urn:mpeg:dash:utc:http-head:2014":
                case"urn:mpeg:dash:utc:http-head:2012":
                    n.method = "HEAD";
                    break;
                case"urn:mpeg:dash:utc:http-xsdate:2014":
                case"urn:mpeg:dash:utc:http-iso:2014":
                case"urn:mpeg:dash:utc:http-xsdate:2012":
                case"urn:mpeg:dash:utc:http-iso:2012":
                    n.method = "GET";
                    break;
                case"urn:mpeg:dash:utc:direct:2014":
                case"urn:mpeg:dash:utc:direct:2012":
                    n.method = "DIRECT", n.value = Date.parse(n.value);
                    break;
                case"urn:mpeg:dash:utc:http-ntp:2014":
                case"urn:mpeg:dash:utc:ntp:2014":
                case"urn:mpeg:dash:utc:sntp:2014":
                default:
                    throw new Error(K)
            }
            return n
        }(Se(e))
    }, ke = n(7), xe = n.n(ke), Ae = n(5), De = n.n(Ae), Ie = n(25), Pe = n.n(Ie), Oe = n(26), Le = n.n(Oe);
    var Ne = function (e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }, Re = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), Ue = function (e, t) {
        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
        return !t || "object" != typeof t && "function" != typeof t ? e : t
    }, Me = function () {
        var e = [[[], [], [], [], []], [[], [], [], [], []]], t = e[0], n = e[1], i = t[4], r = n[4], s = void 0, a = void 0, o = void 0, l = [], u = [], c = void 0, h = void 0, d = void 0, f = void 0, p = void 0;
        for (s = 0; s < 256; s++) u[(l[s] = s << 1 ^ 283 * (s >> 7)) ^ s] = s;
        for (a = o = 0; !i[a]; a ^= c || 1, o = u[o] || 1) for (d = (d = o ^ o << 1 ^ o << 2 ^ o << 3 ^ o << 4) >> 8 ^ 255 & d ^ 99, i[a] = d, r[d] = a, p = 16843009 * l[h = l[c = l[a]]] ^ 65537 * h ^ 257 * c ^ 16843008 * a, f = 257 * l[d] ^ 16843008 * d, s = 0; s < 4; s++) t[s][a] = f = f << 24 ^ f >>> 8, n[s][d] = p = p << 24 ^ p >>> 8;
        for (s = 0; s < 5; s++) t[s] = t[s].slice(0), n[s] = n[s].slice(0);
        return e
    }, Be = null, je = function () {
        function e(t) {
            Ne(this, e), Be || (Be = Me()), this._tables = [[Be[0][0].slice(), Be[0][1].slice(), Be[0][2].slice(), Be[0][3].slice(), Be[0][4].slice()], [Be[1][0].slice(), Be[1][1].slice(), Be[1][2].slice(), Be[1][3].slice(), Be[1][4].slice()]];
            var n = void 0, i = void 0, r = void 0, s = void 0, a = void 0, o = this._tables[0][4], l = this._tables[1], u = t.length, c = 1;
            if (4 !== u && 6 !== u && 8 !== u) throw new Error("Invalid aes key size");
            for (s = t.slice(0), a = [], this._key = [s, a], n = u; n < 4 * u + 28; n++) r = s[n - 1], (n % u == 0 || 8 === u && n % u == 4) && (r = o[r >>> 24] << 24 ^ o[r >> 16 & 255] << 16 ^ o[r >> 8 & 255] << 8 ^ o[255 & r], n % u == 0 && (r = r << 8 ^ r >>> 24 ^ c << 24, c = c << 1 ^ 283 * (c >> 7))), s[n] = s[n - u] ^ r;
            for (i = 0; n; i++, n--) r = s[3 & i ? n : n - 4], a[i] = n <= 4 || i < 4 ? r : l[0][o[r >>> 24]] ^ l[1][o[r >> 16 & 255]] ^ l[2][o[r >> 8 & 255]] ^ l[3][o[255 & r]]
        }

        return e.prototype.decrypt = function (e, t, n, i, r, s) {
            var a = this._key[1], o = e ^ a[0], l = i ^ a[1], u = n ^ a[2], c = t ^ a[3], h = void 0, d = void 0, f = void 0, p = a.length / 4 - 2, m = void 0, g = 4, v = this._tables[1], y = v[0], _ = v[1], b = v[2], T = v[3], w = v[4];
            for (m = 0; m < p; m++) h = y[o >>> 24] ^ _[l >> 16 & 255] ^ b[u >> 8 & 255] ^ T[255 & c] ^ a[g], d = y[l >>> 24] ^ _[u >> 16 & 255] ^ b[c >> 8 & 255] ^ T[255 & o] ^ a[g + 1], f = y[u >>> 24] ^ _[c >> 16 & 255] ^ b[o >> 8 & 255] ^ T[255 & l] ^ a[g + 2], c = y[c >>> 24] ^ _[o >> 16 & 255] ^ b[l >> 8 & 255] ^ T[255 & u] ^ a[g + 3], g += 4, o = h, l = d, u = f;
            for (m = 0; m < 4; m++) r[(3 & -m) + s] = w[o >>> 24] << 24 ^ w[l >> 16 & 255] << 16 ^ w[u >> 8 & 255] << 8 ^ w[255 & c] ^ a[g++], h = o, o = l, l = u, u = c, c = h
        }, e
    }(), Fe = function () {
        function e() {
            Ne(this, e), this.listeners = {}
        }

        return e.prototype.on = function (e, t) {
            this.listeners[e] || (this.listeners[e] = []), this.listeners[e].push(t)
        }, e.prototype.off = function (e, t) {
            if (!this.listeners[e]) return !1;
            var n = this.listeners[e].indexOf(t);
            return this.listeners[e].splice(n, 1), n > -1
        }, e.prototype.trigger = function (e) {
            var t = this.listeners[e];
            if (t) if (2 === arguments.length) for (var n = t.length, i = 0; i < n; ++i) t[i].call(this, arguments[1]); else for (var r = Array.prototype.slice.call(arguments, 1), s = t.length, a = 0; a < s; ++a) t[a].apply(this, r)
        }, e.prototype.dispose = function () {
            this.listeners = {}
        }, e.prototype.pipe = function (e) {
            this.on("data", (function (t) {
                e.push(t)
            }))
        }, e
    }(), He = function (e) {
        function t() {
            Ne(this, t);
            var n = Ue(this, e.call(this, Fe));
            return n.jobs = [], n.delay = 1, n.timeout_ = null, n
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {constructor: {value: e, enumerable: !1, writable: !0, configurable: !0}}), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), t.prototype.processJob_ = function () {
            this.jobs.shift()(), this.jobs.length ? this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay) : this.timeout_ = null
        }, t.prototype.push = function (e) {
            this.jobs.push(e), this.timeout_ || (this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay))
        }, t
    }(Fe), qe = function (e) {
        return e << 24 | (65280 & e) << 8 | (16711680 & e) >> 8 | e >>> 24
    }, Ve = function (e, t, n) {
        var i = new Int32Array(e.buffer, e.byteOffset, e.byteLength >> 2), r = new je(Array.prototype.slice.call(t)), s = new Uint8Array(e.byteLength), a = new Int32Array(s.buffer), o = void 0, l = void 0, u = void 0, c = void 0, h = void 0, d = void 0, f = void 0, p = void 0, m = void 0;
        for (o = n[0], l = n[1], u = n[2], c = n[3], m = 0; m < i.length; m += 4) h = qe(i[m]), d = qe(i[m + 1]), f = qe(i[m + 2]), p = qe(i[m + 3]), r.decrypt(h, d, f, p, a, m), a[m] = qe(a[m] ^ o), a[m + 1] = qe(a[m + 1] ^ l), a[m + 2] = qe(a[m + 2] ^ u), a[m + 3] = qe(a[m + 3] ^ c), o = h, l = d, u = f, c = p;
        return s
    }, We = function () {
        function e(t, n, i, r) {
            Ne(this, e);
            var s = e.STEP, a = new Int32Array(t.buffer), o = new Uint8Array(t.byteLength), l = 0;
            for (this.asyncStream_ = new He, this.asyncStream_.push(this.decryptChunk_(a.subarray(l, l + s), n, i, o)), l = s; l < a.length; l += s) i = new Uint32Array([qe(a[l - 4]), qe(a[l - 3]), qe(a[l - 2]), qe(a[l - 1])]), this.asyncStream_.push(this.decryptChunk_(a.subarray(l, l + s), n, i, o));
            this.asyncStream_.push((function () {
                var e;
                r(null, (e = o).subarray(0, e.byteLength - e[e.byteLength - 1]))
            }))
        }

        return e.prototype.decryptChunk_ = function (e, t, n, i) {
            return function () {
                var r = Ve(e, t, n);
                i.set(r, e.byteOffset)
            }
        }, Re(e, null, [{
            key: "STEP", get: function () {
                return 32e3
            }
        }]), e
    }(), ze = "7.8.4", Ge = [], Ye = function (e, t) {
        return function (n, i, s) {
            var a = t.levels[i], o = new RegExp("^(" + a + ")$");
            if ("log" !== n && s.unshift(n.toUpperCase() + ":"), s.unshift(e + ":"), Ge) {
                Ge.push([].concat(s));
                var l = Ge.length - 1e3;
                Ge.splice(0, l > 0 ? l : 0)
            }
            if (r.a.console) {
                var u = r.a.console[n];
                u || "debug" !== n || (u = r.a.console.info || r.a.console.log), u && a && o.test(n) && u[Array.isArray(s) ? "apply" : "call"](r.a.console, s)
            }
        }
    };
    var Xe = function e(t) {
        var n, i = "info", r = function () {
            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
            n("log", i, t)
        };
        return n = Ye(t, r), r.createLogger = function (n) {
            return e(t + ": " + n)
        }, r.levels = {all: "debug|log|warn|error", off: "", debug: "debug|log|warn|error", info: "log|warn|error", warn: "warn|error", error: "error", DEFAULT: i}, r.level = function (e) {
            if ("string" == typeof e) {
                if (!r.levels.hasOwnProperty(e)) throw new Error('"' + e + '" in not a valid log level');
                i = e
            }
            return i
        }, (r.history = function () {
            return Ge ? [].concat(Ge) : []
        }).filter = function (e) {
            return (Ge || []).filter((function (t) {
                return new RegExp(".*" + e + ".*").test(t[0])
            }))
        }, r.history.clear = function () {
            Ge && (Ge.length = 0)
        }, r.history.disable = function () {
            null !== Ge && (Ge.length = 0, Ge = null)
        }, r.history.enable = function () {
            null === Ge && (Ge = [])
        }, r.error = function () {
            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
            return n("error", i, t)
        }, r.warn = function () {
            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
            return n("warn", i, t)
        }, r.debug = function () {
            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
            return n("debug", i, t)
        }, r
    }("VIDEOJS"), Ke = Xe.createLogger, $e = Object.prototype.toString, Qe = function (e) {
        return et(e) ? Object.keys(e) : []
    };

    function Je(e, t) {
        Qe(e).forEach((function (n) {
            return t(e[n], n)
        }))
    }

    function Ze(e) {
        for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), i = 1; i < t; i++) n[i - 1] = arguments[i];
        return Object.assign ? l.a.apply(void 0, [e].concat(n)) : (n.forEach((function (t) {
            t && Je(t, (function (t, n) {
                e[n] = t
            }))
        })), e)
    }

    function et(e) {
        return !!e && "object" == typeof e
    }

    function tt(e) {
        return et(e) && "[object Object]" === $e.call(e) && e.constructor === Object
    }

    function nt(e, t) {
        if (!e || !t) return "";
        if ("function" == typeof r.a.getComputedStyle) {
            var n = r.a.getComputedStyle(e);
            return n ? n.getPropertyValue(t) || n[t] : ""
        }
        return ""
    }

    function it(e) {
        return "string" == typeof e && Boolean(e.trim())
    }

    function rt(e) {
        if (e.indexOf(" ") >= 0) throw new Error("class has illegal whitespace characters")
    }

    function st() {
        return a.a === r.a.document
    }

    function at(e) {
        return et(e) && 1 === e.nodeType
    }

    function ot() {
        try {
            return r.a.parent !== r.a.self
        } catch (e) {
            return !0
        }
    }

    function lt(e) {
        return function (t, n) {
            if (!it(t)) return a.a[e](null);
            it(n) && (n = a.a.querySelector(n));
            var i = at(n) ? n : a.a;
            return i[e] && i[e](t)
        }
    }

    function ut(e, t, n, i) {
        void 0 === e && (e = "div"), void 0 === t && (t = {}), void 0 === n && (n = {});
        var r = a.a.createElement(e);
        return Object.getOwnPropertyNames(t).forEach((function (e) {
            var n = t[e];
            -1 !== e.indexOf("aria-") || "role" === e || "type" === e ? (Xe.warn("Setting attributes in the second argument of createEl()\nhas been deprecated. Use the third argument instead.\ncreateEl(type, properties, attributes). Attempting to set " + e + " to " + n + "."), r.setAttribute(e, n)) : "textContent" === e ? ct(r, n) : r[e] !== n && (r[e] = n)
        })), Object.getOwnPropertyNames(n).forEach((function (e) {
            r.setAttribute(e, n[e])
        })), i && Dt(r, i), r
    }

    function ct(e, t) {
        return void 0 === e.textContent ? e.innerText = t : e.textContent = t, e
    }

    function ht(e, t) {
        t.firstChild ? t.insertBefore(e, t.firstChild) : t.appendChild(e)
    }

    function dt(e, t) {
        return rt(t), e.classList ? e.classList.contains(t) : (n = t, new RegExp("(^|\\s)" + n + "($|\\s)")).test(e.className);
        var n
    }

    function ft(e, t) {
        return e.classList ? e.classList.add(t) : dt(e, t) || (e.className = (e.className + " " + t).trim()), e
    }

    function pt(e, t) {
        return e.classList ? e.classList.remove(t) : (rt(t), e.className = e.className.split(/\s+/).filter((function (e) {
            return e !== t
        })).join(" ")), e
    }

    function mt(e, t, n) {
        var i = dt(e, t);
        if ("function" == typeof n && (n = n(e, t)), "boolean" != typeof n && (n = !i), n !== i) return n ? ft(e, t) : pt(e, t), e
    }

    function gt(e, t) {
        Object.getOwnPropertyNames(t).forEach((function (n) {
            var i = t[n];
            null == i || !1 === i ? e.removeAttribute(n) : e.setAttribute(n, !0 === i ? "" : i)
        }))
    }

    function vt(e) {
        var t = {}, n = ",autoplay,controls,playsinline,loop,muted,default,defaultMuted,";
        if (e && e.attributes && e.attributes.length > 0) for (var i = e.attributes, r = i.length - 1; r >= 0; r--) {
            var s = i[r].name, a = i[r].value;
            "boolean" != typeof e[s] && -1 === n.indexOf("," + s + ",") || (a = null !== a), t[s] = a
        }
        return t
    }

    function yt(e, t) {
        return e.getAttribute(t)
    }

    function _t(e, t, n) {
        e.setAttribute(t, n)
    }

    function bt(e, t) {
        e.removeAttribute(t)
    }

    function Tt() {
        a.a.body.focus(), a.a.onselectstart = function () {
            return !1
        }
    }

    function wt() {
        a.a.onselectstart = function () {
            return !0
        }
    }

    function St(e) {
        if (e && e.getBoundingClientRect && e.parentNode) {
            var t = e.getBoundingClientRect(), n = {};
            return ["bottom", "height", "left", "right", "top", "width"].forEach((function (e) {
                void 0 !== t[e] && (n[e] = t[e])
            })), n.height || (n.height = parseFloat(nt(e, "height"))), n.width || (n.width = parseFloat(nt(e, "width"))), n
        }
    }

    function Et(e) {
        var t;
        if (e.getBoundingClientRect && e.parentNode && (t = e.getBoundingClientRect()), !t) return {left: 0, top: 0};
        var n = a.a.documentElement, i = a.a.body, s = n.clientLeft || i.clientLeft || 0, o = r.a.pageXOffset || i.scrollLeft, l = t.left + o - s, u = n.clientTop || i.clientTop || 0, c = r.a.pageYOffset || i.scrollTop, h = t.top + c - u;
        return {left: Math.round(l), top: Math.round(h)}
    }

    function Ct(e, t) {
        var n = {}, i = Et(e), r = e.offsetWidth, s = e.offsetHeight, a = i.top, o = i.left, l = t.pageY, u = t.pageX;
        return t.changedTouches && (u = t.changedTouches[0].pageX, l = t.changedTouches[0].pageY), n.y = Math.max(0, Math.min(1, (a - l + s) / s)), n.x = Math.max(0, Math.min(1, (u - o) / r)), n
    }

    function kt(e) {
        return et(e) && 3 === e.nodeType
    }

    function xt(e) {
        for (; e.firstChild;) e.removeChild(e.firstChild);
        return e
    }

    function At(e) {
        return "function" == typeof e && (e = e()), (Array.isArray(e) ? e : [e]).map((function (e) {
            return "function" == typeof e && (e = e()), at(e) || kt(e) ? e : "string" == typeof e && /\S/.test(e) ? a.a.createTextNode(e) : void 0
        })).filter((function (e) {
            return e
        }))
    }

    function Dt(e, t) {
        return At(t).forEach((function (t) {
            return e.appendChild(t)
        })), e
    }

    function It(e, t) {
        return Dt(xt(e), t)
    }

    function Pt(e) {
        return void 0 === e.button && void 0 === e.buttons || (0 === e.button && void 0 === e.buttons || ("mouseup" === e.type && 0 === e.button && 0 === e.buttons || 0 === e.button && 1 === e.buttons))
    }

    var Ot, Lt = lt("querySelector"), Nt = lt("querySelectorAll"), Rt = Object.freeze({__proto__: null, isReal: st, isEl: at, isInFrame: ot, createEl: ut, textContent: ct, prependTo: ht, hasClass: dt, addClass: ft, removeClass: pt, toggleClass: mt, setAttributes: gt, getAttributes: vt, getAttribute: yt, setAttribute: _t, removeAttribute: bt, blockTextSelection: Tt, unblockTextSelection: wt, getBoundingClientRect: St, findPosition: Et, getPointerPosition: Ct, isTextNode: kt, emptyEl: xt, normalizeContent: At, appendContent: Dt, insertContent: It, isSingleLeftClick: Pt, $: Lt, $$: Nt}), Ut = !1, Mt = function () {
        if (st() && !1 !== Ot.options.autoSetup) {
            var e = Array.prototype.slice.call(a.a.getElementsByTagName("video")), t = Array.prototype.slice.call(a.a.getElementsByTagName("audio")), n = Array.prototype.slice.call(a.a.getElementsByTagName("video-js")), i = e.concat(t, n);
            if (i && i.length > 0) for (var r = 0, s = i.length; r < s; r++) {
                var o = i[r];
                if (!o || !o.getAttribute) {
                    Bt(1);
                    break
                }
                void 0 === o.player && null !== o.getAttribute("data-setup") && Ot(o)
            } else Ut || Bt(1)
        }
    };

    function Bt(e, t) {
        t && (Ot = t), r.a.setTimeout(Mt, e)
    }

    function jt() {
        Ut = !0, r.a.removeEventListener("load", jt)
    }

    st() && ("complete" === a.a.readyState ? jt() : r.a.addEventListener("load", jt));
    var Ft, Ht = function (e) {
        var t = a.a.createElement("style");
        return t.className = e, t
    }, qt = function (e, t) {
        e.styleSheet ? e.styleSheet.cssText = t : e.textContent = t
    }, Vt = 3;

    function Wt() {
        return Vt++
    }

    r.a.WeakMap || (Ft = function () {
        function e() {
            this.vdata = "vdata" + Math.floor(r.a.performance && r.a.performance.now() || Date.now()), this.data = {}
        }

        var t = e.prototype;
        return t.set = function (e, t) {
            var n = e[this.vdata] || Wt();
            return e[this.vdata] || (e[this.vdata] = n), this.data[n] = t, this
        }, t.get = function (e) {
            var t = e[this.vdata];
            if (t) return this.data[t];
            Xe("We have no data for this element", e)
        }, t.has = function (e) {
            return e[this.vdata] in this.data
        }, t.delete = function (e) {
            var t = e[this.vdata];
            t && (delete this.data[t], delete e[this.vdata])
        }, e
    }());
    var zt, Gt = r.a.WeakMap ? new WeakMap : new Ft;

    function Yt(e, t) {
        if (Gt.has(e)) {
            var n = Gt.get(e);
            0 === n.handlers[t].length && (delete n.handlers[t], e.removeEventListener ? e.removeEventListener(t, n.dispatcher, !1) : e.detachEvent && e.detachEvent("on" + t, n.dispatcher)), Object.getOwnPropertyNames(n.handlers).length <= 0 && (delete n.handlers, delete n.dispatcher, delete n.disabled), 0 === Object.getOwnPropertyNames(n).length && Gt.delete(e)
        }
    }

    function Xt(e, t, n, i) {
        n.forEach((function (n) {
            e(t, n, i)
        }))
    }

    function Kt(e) {
        if (e.fixed_) return e;

        function t() {
            return !0
        }

        function n() {
            return !1
        }

        if (!e || !e.isPropagationStopped) {
            var i = e || r.a.event;
            for (var s in e = {}, i) "layerX" !== s && "layerY" !== s && "keyLocation" !== s && "webkitMovementX" !== s && "webkitMovementY" !== s && ("returnValue" === s && i.preventDefault || (e[s] = i[s]));
            if (e.target || (e.target = e.srcElement || a.a), e.relatedTarget || (e.relatedTarget = e.fromElement === e.target ? e.toElement : e.fromElement), e.preventDefault = function () {
                i.preventDefault && i.preventDefault(), e.returnValue = !1, i.returnValue = !1, e.defaultPrevented = !0
            }, e.defaultPrevented = !1, e.stopPropagation = function () {
                i.stopPropagation && i.stopPropagation(), e.cancelBubble = !0, i.cancelBubble = !0, e.isPropagationStopped = t
            }, e.isPropagationStopped = n, e.stopImmediatePropagation = function () {
                i.stopImmediatePropagation && i.stopImmediatePropagation(), e.isImmediatePropagationStopped = t, e.stopPropagation()
            }, e.isImmediatePropagationStopped = n, null !== e.clientX && void 0 !== e.clientX) {
                var o = a.a.documentElement, l = a.a.body;
                e.pageX = e.clientX + (o && o.scrollLeft || l && l.scrollLeft || 0) - (o && o.clientLeft || l && l.clientLeft || 0), e.pageY = e.clientY + (o && o.scrollTop || l && l.scrollTop || 0) - (o && o.clientTop || l && l.clientTop || 0)
            }
            e.which = e.charCode || e.keyCode, null !== e.button && void 0 !== e.button && (e.button = 1 & e.button ? 0 : 4 & e.button ? 1 : 2 & e.button ? 2 : 0)
        }
        return e.fixed_ = !0, e
    }

    var $t = function () {
        if ("boolean" != typeof zt) {
            zt = !1;
            try {
                var e = Object.defineProperty({}, "passive", {
                    get: function () {
                        zt = !0
                    }
                });
                r.a.addEventListener("test", null, e), r.a.removeEventListener("test", null, e)
            } catch (e) {
            }
        }
        return zt
    }, Qt = ["touchstart", "touchmove"];

    function Jt(e, t, n) {
        if (Array.isArray(t)) return Xt(Jt, e, t, n);
        Gt.has(e) || Gt.set(e, {});
        var i = Gt.get(e);
        if (i.handlers || (i.handlers = {}), i.handlers[t] || (i.handlers[t] = []), n.guid || (n.guid = Wt()), i.handlers[t].push(n), i.dispatcher || (i.disabled = !1, i.dispatcher = function (t, n) {
            if (!i.disabled) {
                t = Kt(t);
                var r = i.handlers[t.type];
                if (r) for (var s = r.slice(0), a = 0, o = s.length; a < o && !t.isImmediatePropagationStopped(); a++) try {
                    s[a].call(e, t, n)
                } catch (e) {
                    Xe.error(e)
                }
            }
        }), 1 === i.handlers[t].length) if (e.addEventListener) {
            var r = !1;
            $t() && Qt.indexOf(t) > -1 && (r = {passive: !0}), e.addEventListener(t, i.dispatcher, r)
        } else e.attachEvent && e.attachEvent("on" + t, i.dispatcher)
    }

    function Zt(e, t, n) {
        if (Gt.has(e)) {
            var i = Gt.get(e);
            if (i.handlers) {
                if (Array.isArray(t)) return Xt(Zt, e, t, n);
                var r = function (e, t) {
                    i.handlers[t] = [], Yt(e, t)
                };
                if (void 0 !== t) {
                    var s = i.handlers[t];
                    if (s) if (n) {
                        if (n.guid) for (var a = 0; a < s.length; a++) s[a].guid === n.guid && s.splice(a--, 1);
                        Yt(e, t)
                    } else r(e, t)
                } else for (var o in i.handlers) Object.prototype.hasOwnProperty.call(i.handlers || {}, o) && r(e, o)
            }
        }
    }

    function en(e, t, n) {
        var i = Gt.has(e) ? Gt.get(e) : {}, r = e.parentNode || e.ownerDocument;
        if ("string" == typeof t ? t = {type: t, target: e} : t.target || (t.target = e), t = Kt(t), i.dispatcher && i.dispatcher.call(e, t, n), r && !t.isPropagationStopped() && !0 === t.bubbles) en.call(null, r, t, n); else if (!r && !t.defaultPrevented && t.target && t.target[t.type]) {
            Gt.has(t.target) || Gt.set(t.target, {});
            var s = Gt.get(t.target);
            t.target[t.type] && (s.disabled = !0, "function" == typeof t.target[t.type] && t.target[t.type](), s.disabled = !1)
        }
        return !t.defaultPrevented
    }

    function tn(e, t, n) {
        if (Array.isArray(t)) return Xt(tn, e, t, n);
        var i = function i() {
            Zt(e, t, i), n.apply(this, arguments)
        };
        i.guid = n.guid = n.guid || Wt(), Jt(e, t, i)
    }

    function nn(e, t, n) {
        var i = function i() {
            Zt(e, t, i), n.apply(this, arguments)
        };
        i.guid = n.guid = n.guid || Wt(), Jt(e, t, i)
    }

    var rn, sn = Object.freeze({__proto__: null, fixEvent: Kt, on: Jt, off: Zt, trigger: en, one: tn, any: nn}), an = 30, on = function (e, t, n) {
        t.guid || (t.guid = Wt());
        var i = t.bind(e);
        return i.guid = n ? n + "_" + t.guid : t.guid, i
    }, ln = function (e, t) {
        var n = r.a.performance.now();
        return function () {
            var i = r.a.performance.now();
            i - n >= t && (e.apply(void 0, arguments), n = i)
        }
    }, un = function (e, t, n, i) {
        var s;
        void 0 === i && (i = r.a);
        var a = function () {
            var r = this, a = arguments, o = function () {
                s = null, o = null, n || e.apply(r, a)
            };
            !s && n && e.apply(r, a), i.clearTimeout(s), s = i.setTimeout(o, t)
        };
        return a.cancel = function () {
            i.clearTimeout(s), s = null
        }, a
    }, cn = function () {
    };
    cn.prototype.allowedEvents_ = {}, cn.prototype.on = function (e, t) {
        var n = this.addEventListener;
        this.addEventListener = function () {
        }, Jt(this, e, t), this.addEventListener = n
    }, cn.prototype.addEventListener = cn.prototype.on, cn.prototype.off = function (e, t) {
        Zt(this, e, t)
    }, cn.prototype.removeEventListener = cn.prototype.off, cn.prototype.one = function (e, t) {
        var n = this.addEventListener;
        this.addEventListener = function () {
        }, tn(this, e, t), this.addEventListener = n
    }, cn.prototype.any = function (e, t) {
        var n = this.addEventListener;
        this.addEventListener = function () {
        }, nn(this, e, t), this.addEventListener = n
    }, cn.prototype.trigger = function (e) {
        var t = e.type || e;
        "string" == typeof e && (e = {type: t}), e = Kt(e), this.allowedEvents_[t] && this["on" + t] && this["on" + t](e), en(this, e)
    }, cn.prototype.dispatchEvent = cn.prototype.trigger, cn.prototype.queueTrigger = function (e) {
        var t = this;
        rn || (rn = new Map);
        var n = e.type || e, i = rn.get(this);
        i || (i = new Map, rn.set(this, i));
        var s = i.get(n);
        i.delete(n), r.a.clearTimeout(s);
        var a = r.a.setTimeout((function () {
            0 === i.size && (i = null, rn.delete(t)), t.trigger(e)
        }), 0);
        i.set(n, a)
    };
    var hn = function (e) {
        return e instanceof cn || !!e.eventBusEl_ && ["on", "one", "off", "trigger"].every((function (t) {
            return "function" == typeof e[t]
        }))
    }, dn = function (e) {
        return "string" == typeof e && /\S/.test(e) || Array.isArray(e) && !!e.length
    }, fn = function (e) {
        if (!e.nodeName && !hn(e)) throw new Error("Invalid target; must be a DOM node or evented object.")
    }, pn = function (e) {
        if (!dn(e)) throw new Error("Invalid event type; must be a non-empty string or array.")
    }, mn = function (e) {
        if ("function" != typeof e) throw new Error("Invalid listener; must be a function.")
    }, gn = function (e, t) {
        var n, i, r, s = t.length < 3 || t[0] === e || t[0] === e.eventBusEl_;
        return s ? (n = e.eventBusEl_, t.length >= 3 && t.shift(), i = t[0], r = t[1]) : (n = t[0], i = t[1], r = t[2]), fn(n), pn(i), mn(r), {isTargetingSelf: s, target: n, type: i, listener: r = on(e, r)}
    }, vn = function (e, t, n, i) {
        fn(e), e.nodeName ? sn[t](e, n, i) : e[t](n, i)
    }, yn = {
        on: function () {
            for (var e = this, t = arguments.length, n = new Array(t), i = 0; i < t; i++) n[i] = arguments[i];
            var r = gn(this, n), s = r.isTargetingSelf, a = r.target, o = r.type, l = r.listener;
            if (vn(a, "on", o, l), !s) {
                var u = function () {
                    return e.off(a, o, l)
                };
                u.guid = l.guid;
                var c = function () {
                    return e.off("dispose", u)
                };
                c.guid = l.guid, vn(this, "on", "dispose", u), vn(a, "on", "dispose", c)
            }
        }, one: function () {
            for (var e = this, t = arguments.length, n = new Array(t), i = 0; i < t; i++) n[i] = arguments[i];
            var r = gn(this, n), s = r.isTargetingSelf, a = r.target, o = r.type, l = r.listener;
            if (s) vn(a, "one", o, l); else {
                var u = function t() {
                    e.off(a, o, t);
                    for (var n = arguments.length, i = new Array(n), r = 0; r < n; r++) i[r] = arguments[r];
                    l.apply(null, i)
                };
                u.guid = l.guid, vn(a, "one", o, u)
            }
        }, any: function () {
            for (var e = this, t = arguments.length, n = new Array(t), i = 0; i < t; i++) n[i] = arguments[i];
            var r = gn(this, n), s = r.isTargetingSelf, a = r.target, o = r.type, l = r.listener;
            if (s) vn(a, "any", o, l); else {
                var u = function t() {
                    e.off(a, o, t);
                    for (var n = arguments.length, i = new Array(n), r = 0; r < n; r++) i[r] = arguments[r];
                    l.apply(null, i)
                };
                u.guid = l.guid, vn(a, "any", o, u)
            }
        }, off: function (e, t, n) {
            if (!e || dn(e)) Zt(this.eventBusEl_, e, t); else {
                var i = e, r = t;
                fn(i), pn(r), mn(n), n = on(this, n), this.off("dispose", n), i.nodeName ? (Zt(i, r, n), Zt(i, "dispose", n)) : hn(i) && (i.off(r, n), i.off("dispose", n))
            }
        }, trigger: function (e, t) {
            return en(this.eventBusEl_, e, t)
        }
    };

    function _n(e, t) {
        void 0 === t && (t = {});
        var n = t.eventBusKey;
        if (n) {
            if (!e[n].nodeName) throw new Error('The eventBusKey "' + n + '" does not refer to an element.');
            e.eventBusEl_ = e[n]
        } else e.eventBusEl_ = ut("span", {className: "vjs-event-bus"});
        return Ze(e, yn), e.eventedCallbacks && e.eventedCallbacks.forEach((function (e) {
            e()
        })), e.on("dispose", (function () {
            e.off(), r.a.setTimeout((function () {
                e.eventBusEl_ = null
            }), 0)
        })), e
    }

    var bn = {
        state: {}, setState: function (e) {
            var t, n = this;
            return "function" == typeof e && (e = e()), Je(e, (function (e, i) {
                n.state[i] !== e && ((t = t || {})[i] = {from: n.state[i], to: e}), n.state[i] = e
            })), t && hn(this) && this.trigger({changes: t, type: "statechanged"}), t
        }
    };

    function Tn(e, t) {
        return Ze(e, bn), e.state = Ze({}, e.state, t), "function" == typeof e.handleStateChanged && hn(e) && e.on("statechanged", e.handleStateChanged), e
    }

    var wn = function (e) {
        return "string" != typeof e ? e : e.replace(/./, (function (e) {
            return e.toLowerCase()
        }))
    }, Sn = function (e) {
        return "string" != typeof e ? e : e.replace(/./, (function (e) {
            return e.toUpperCase()
        }))
    };

    function En() {
        for (var e = {}, t = arguments.length, n = new Array(t), i = 0; i < t; i++) n[i] = arguments[i];
        return n.forEach((function (t) {
            t && Je(t, (function (t, n) {
                tt(t) ? (tt(e[n]) || (e[n] = {}), e[n] = En(e[n], t)) : e[n] = t
            }))
        })), e
    }

    var Cn = function () {
        function e(e, t, n) {
            if (!e && this.play ? this.player_ = e = this : this.player_ = e, this.isDisposed_ = !1, this.parentComponent_ = null, this.options_ = En({}, this.options_), t = this.options_ = En(this.options_, t), this.id_ = t.id || t.el && t.el.id, !this.id_) {
                var i = e && e.id && e.id() || "no_player";
                this.id_ = i + "_component_" + Wt()
            }
            var s;
            this.name_ = t.name || null, t.el ? this.el_ = t.el : !1 !== t.createEl && (this.el_ = this.createEl()), !1 !== t.evented && _n(this, {eventBusKey: this.el_ ? "el_" : null}), Tn(this, this.constructor.defaultState), this.children_ = [], this.childIndex_ = {}, this.childNameIndex_ = {}, r.a.Set || (s = function () {
                function e() {
                    this.set_ = {}
                }

                var t = e.prototype;
                return t.has = function (e) {
                    return e in this.set_
                }, t.delete = function (e) {
                    var t = this.has(e);
                    return delete this.set_[e], t
                }, t.add = function (e) {
                    return this.set_[e] = 1, this
                }, t.forEach = function (e, t) {
                    for (var n in this.set_) e.call(t, n, n, this)
                }, e
            }()), this.setTimeoutIds_ = r.a.Set ? new Set : new s, this.setIntervalIds_ = r.a.Set ? new Set : new s, this.rafIds_ = r.a.Set ? new Set : new s, this.clearingTimersOnDispose_ = !1, !1 !== t.initChildren && this.initChildren(), this.ready(n), !1 !== t.reportTouchActivity && this.enableTouchActivity()
        }

        var t = e.prototype;
        return t.dispose = function () {
            if (!this.isDisposed_) {
                if (this.trigger({type: "dispose", bubbles: !1}), this.isDisposed_ = !0, this.children_) for (var e = this.children_.length - 1; e >= 0; e--) this.children_[e].dispose && this.children_[e].dispose();
                this.children_ = null, this.childIndex_ = null, this.childNameIndex_ = null, this.parentComponent_ = null, this.el_ && (this.el_.parentNode && this.el_.parentNode.removeChild(this.el_), Gt.has(this.el_) && Gt.delete(this.el_), this.el_ = null), this.player_ = null
            }
        }, t.isDisposed = function () {
            return Boolean(this.isDisposed_)
        }, t.player = function () {
            return this.player_
        }, t.options = function (e) {
            return e ? (this.options_ = En(this.options_, e), this.options_) : this.options_
        }, t.el = function () {
            return this.el_
        }, t.createEl = function (e, t, n) {
            return ut(e, t, n)
        }, t.localize = function (e, t, n) {
            void 0 === n && (n = e);
            var i = this.player_.language && this.player_.language(), r = this.player_.languages && this.player_.languages(), s = r && r[i], a = i && i.split("-")[0], o = r && r[a], l = n;
            return s && s[e] ? l = s[e] : o && o[e] && (l = o[e]), t && (l = l.replace(/\{(\d+)\}/g, (function (e, n) {
                var i = t[n - 1], r = i;
                return void 0 === i && (r = e), r
            }))), l
        }, t.contentEl = function () {
            return this.contentEl_ || this.el_
        }, t.id = function () {
            return this.id_
        }, t.name = function () {
            return this.name_
        }, t.children = function () {
            return this.children_
        }, t.getChildById = function (e) {
            return this.childIndex_[e]
        }, t.getChild = function (e) {
            if (e) return this.childNameIndex_[e]
        }, t.getDescendant = function () {
            for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
            t = t.reduce((function (e, t) {
                return e.concat(t)
            }), []);
            for (var i = this, r = 0; r < t.length; r++) if (!(i = i.getChild(t[r])) || !i.getChild) return;
            return i
        }, t.addChild = function (t, n, i) {
            var r, s;
            if (void 0 === n && (n = {}), void 0 === i && (i = this.children_.length), "string" == typeof t) {
                s = Sn(t);
                var a = n.componentClass || s;
                n.name = s;
                var o = e.getComponent(a);
                if (!o) throw new Error("Component " + a + " does not exist");
                if ("function" != typeof o) return null;
                r = new o(this.player_ || this, n)
            } else r = t;
            if (r.parentComponent_ && r.parentComponent_.removeChild(r), this.children_.splice(i, 0, r), r.parentComponent_ = this, "function" == typeof r.id && (this.childIndex_[r.id()] = r), (s = s || r.name && Sn(r.name())) && (this.childNameIndex_[s] = r, this.childNameIndex_[wn(s)] = r), "function" == typeof r.el && r.el()) {
                var l = null;
                this.children_[i + 1] && (this.children_[i + 1].el_ ? l = this.children_[i + 1].el_ : at(this.children_[i + 1]) && (l = this.children_[i + 1])), this.contentEl().insertBefore(r.el(), l)
            }
            return r
        }, t.removeChild = function (e) {
            if ("string" == typeof e && (e = this.getChild(e)), e && this.children_) {
                for (var t = !1, n = this.children_.length - 1; n >= 0; n--) if (this.children_[n] === e) {
                    t = !0, this.children_.splice(n, 1);
                    break
                }
                if (t) {
                    e.parentComponent_ = null, this.childIndex_[e.id()] = null, this.childNameIndex_[Sn(e.name())] = null, this.childNameIndex_[wn(e.name())] = null;
                    var i = e.el();
                    i && i.parentNode === this.contentEl() && this.contentEl().removeChild(e.el())
                }
            }
        }, t.initChildren = function () {
            var t = this, n = this.options_.children;
            if (n) {
                var i, r = this.options_, s = e.getComponent("Tech");
                (i = Array.isArray(n) ? n : Object.keys(n)).concat(Object.keys(this.options_).filter((function (e) {
                    return !i.some((function (t) {
                        return "string" == typeof t ? e === t : e === t.name
                    }))
                }))).map((function (e) {
                    var i, r;
                    return "string" == typeof e ? r = n[i = e] || t.options_[i] || {} : (i = e.name, r = e), {name: i, opts: r}
                })).filter((function (t) {
                    var n = e.getComponent(t.opts.componentClass || Sn(t.name));
                    return n && !s.isTech(n)
                })).forEach((function (e) {
                    var n = e.name, i = e.opts;
                    if (void 0 !== r[n] && (i = r[n]), !1 !== i) {
                        !0 === i && (i = {}), i.playerOptions = t.options_.playerOptions;
                        var s = t.addChild(n, i);
                        s && (t[n] = s)
                    }
                }))
            }
        }, t.buildCSSClass = function () {
            return ""
        }, t.ready = function (e, t) {
            if (void 0 === t && (t = !1), e) return this.isReady_ ? void (t ? e.call(this) : this.setTimeout(e, 1)) : (this.readyQueue_ = this.readyQueue_ || [], void this.readyQueue_.push(e))
        }, t.triggerReady = function () {
            this.isReady_ = !0, this.setTimeout((function () {
                var e = this.readyQueue_;
                this.readyQueue_ = [], e && e.length > 0 && e.forEach((function (e) {
                    e.call(this)
                }), this), this.trigger("ready")
            }), 1)
        }, t.$ = function (e, t) {
            return Lt(e, t || this.contentEl())
        }, t.$$ = function (e, t) {
            return Nt(e, t || this.contentEl())
        }, t.hasClass = function (e) {
            return dt(this.el_, e)
        }, t.addClass = function (e) {
            ft(this.el_, e)
        }, t.removeClass = function (e) {
            pt(this.el_, e)
        }, t.toggleClass = function (e, t) {
            mt(this.el_, e, t)
        }, t.show = function () {
            this.removeClass("vjs-hidden")
        }, t.hide = function () {
            this.addClass("vjs-hidden")
        }, t.lockShowing = function () {
            this.addClass("vjs-lock-showing")
        }, t.unlockShowing = function () {
            this.removeClass("vjs-lock-showing")
        }, t.getAttribute = function (e) {
            return yt(this.el_, e)
        }, t.setAttribute = function (e, t) {
            _t(this.el_, e, t)
        }, t.removeAttribute = function (e) {
            bt(this.el_, e)
        }, t.width = function (e, t) {
            return this.dimension("width", e, t)
        }, t.height = function (e, t) {
            return this.dimension("height", e, t)
        }, t.dimensions = function (e, t) {
            this.width(e, !0), this.height(t)
        }, t.dimension = function (e, t, n) {
            if (void 0 !== t) return null !== t && t == t || (t = 0), -1 !== ("" + t).indexOf("%") || -1 !== ("" + t).indexOf("px") ? this.el_.style[e] = t : this.el_.style[e] = "auto" === t ? "" : t + "px", void (n || this.trigger("componentresize"));
            if (!this.el_) return 0;
            var i = this.el_.style[e], r = i.indexOf("px");
            return -1 !== r ? parseInt(i.slice(0, r), 10) : parseInt(this.el_["offset" + Sn(e)], 10)
        }, t.currentDimension = function (e) {
            var t = 0;
            if ("width" !== e && "height" !== e) throw new Error("currentDimension only accepts width or height value");
            if (t = nt(this.el_, e), 0 === (t = parseFloat(t)) || isNaN(t)) {
                var n = "offset" + Sn(e);
                t = this.el_[n]
            }
            return t
        }, t.currentDimensions = function () {
            return {width: this.currentDimension("width"), height: this.currentDimension("height")}
        }, t.currentWidth = function () {
            return this.currentDimension("width")
        }, t.currentHeight = function () {
            return this.currentDimension("height")
        }, t.focus = function () {
            this.el_.focus()
        }, t.blur = function () {
            this.el_.blur()
        }, t.handleKeyDown = function (e) {
            this.player_ && (e.stopPropagation(), this.player_.handleKeyDown(e))
        }, t.handleKeyPress = function (e) {
            this.handleKeyDown(e)
        }, t.emitTapEvents = function () {
            var e, t = 0, n = null;
            this.on("touchstart", (function (i) {
                1 === i.touches.length && (n = {pageX: i.touches[0].pageX, pageY: i.touches[0].pageY}, t = r.a.performance.now(), e = !0)
            })), this.on("touchmove", (function (t) {
                if (t.touches.length > 1) e = !1; else if (n) {
                    var i = t.touches[0].pageX - n.pageX, r = t.touches[0].pageY - n.pageY;
                    Math.sqrt(i * i + r * r) > 10 && (e = !1)
                }
            }));
            var i = function () {
                e = !1
            };
            this.on("touchleave", i), this.on("touchcancel", i), this.on("touchend", (function (i) {
                (n = null, !0 === e) && (r.a.performance.now() - t < 200 && (i.preventDefault(), this.trigger("tap")))
            }))
        }, t.enableTouchActivity = function () {
            if (this.player() && this.player().reportUserActivity) {
                var e, t = on(this.player(), this.player().reportUserActivity);
                this.on("touchstart", (function () {
                    t(), this.clearInterval(e), e = this.setInterval(t, 250)
                }));
                var n = function (n) {
                    t(), this.clearInterval(e)
                };
                this.on("touchmove", t), this.on("touchend", n), this.on("touchcancel", n)
            }
        }, t.setTimeout = function (e, t) {
            var n, i = this;
            return e = on(this, e), this.clearTimersOnDispose_(), n = r.a.setTimeout((function () {
                i.setTimeoutIds_.has(n) && i.setTimeoutIds_.delete(n), e()
            }), t), this.setTimeoutIds_.add(n), n
        }, t.clearTimeout = function (e) {
            return this.setTimeoutIds_.has(e) && (this.setTimeoutIds_.delete(e), r.a.clearTimeout(e)), e
        }, t.setInterval = function (e, t) {
            e = on(this, e), this.clearTimersOnDispose_();
            var n = r.a.setInterval(e, t);
            return this.setIntervalIds_.add(n), n
        }, t.clearInterval = function (e) {
            return this.setIntervalIds_.has(e) && (this.setIntervalIds_.delete(e), r.a.clearInterval(e)), e
        }, t.requestAnimationFrame = function (e) {
            var t, n = this;
            return this.supportsRaf_ ? (this.clearTimersOnDispose_(), e = on(this, e), t = r.a.requestAnimationFrame((function () {
                n.rafIds_.has(t) && n.rafIds_.delete(t), e()
            })), this.rafIds_.add(t), t) : this.setTimeout(e, 1e3 / 60)
        }, t.cancelAnimationFrame = function (e) {
            return this.supportsRaf_ ? (this.rafIds_.has(e) && (this.rafIds_.delete(e), r.a.cancelAnimationFrame(e)), e) : this.clearTimeout(e)
        }, t.clearTimersOnDispose_ = function () {
            var e = this;
            this.clearingTimersOnDispose_ || (this.clearingTimersOnDispose_ = !0, this.one("dispose", (function () {
                [["rafIds_", "cancelAnimationFrame"], ["setTimeoutIds_", "clearTimeout"], ["setIntervalIds_", "clearInterval"]].forEach((function (t) {
                    var n = t[0], i = t[1];
                    e[n].forEach(e[i], e)
                })), e.clearingTimersOnDispose_ = !1
            })))
        }, e.registerComponent = function (t, n) {
            if ("string" != typeof t || !t) throw new Error('Illegal component name, "' + t + '"; must be a non-empty string.');
            var i, r = e.getComponent("Tech"), s = r && r.isTech(n), a = e === n || e.prototype.isPrototypeOf(n.prototype);
            if (s || !a) throw i = s ? "techs must be registered using Tech.registerTech()" : "must be a Component subclass", new Error('Illegal component, "' + t + '"; ' + i + ".");
            t = Sn(t), e.components_ || (e.components_ = {});
            var o = e.getComponent("Player");
            if ("Player" === t && o && o.players) {
                var l = o.players, u = Object.keys(l);
                if (l && u.length > 0 && u.map((function (e) {
                    return l[e]
                })).every(Boolean)) throw new Error("Can not register Player component after player has been created.")
            }
            return e.components_[t] = n, e.components_[wn(t)] = n, n
        }, e.getComponent = function (t) {
            if (t && e.components_) return e.components_[t]
        }, e
    }();
    Cn.prototype.supportsRaf_ = "function" == typeof r.a.requestAnimationFrame && "function" == typeof r.a.cancelAnimationFrame, Cn.registerComponent("Component", Cn);
    var kn, xn = r.a.navigator && r.a.navigator.userAgent || "", An = /AppleWebKit\/([\d.]+)/i.exec(xn), Dn = An ? parseFloat(An.pop()) : null, In = /iPod/i.test(xn), Pn = (kn = xn.match(/OS (\d+)_/i)) && kn[1] ? kn[1] : null, On = /Android/i.test(xn), Ln = function () {
        var e = xn.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);
        if (!e) return null;
        var t = e[1] && parseFloat(e[1]), n = e[2] && parseFloat(e[2]);
        return t && n ? parseFloat(e[1] + "." + e[2]) : t || null
    }(), Nn = On && Ln < 5 && Dn < 537, Rn = /Firefox/i.test(xn), Un = /Edg/i.test(xn), Mn = !Un && (/Chrome/i.test(xn) || /CriOS/i.test(xn)), Bn = function () {
        var e = xn.match(/(Chrome|CriOS)\/(\d+)/);
        return e && e[2] ? parseFloat(e[2]) : null
    }(), jn = function () {
        var e = /MSIE\s(\d+)\.\d/.exec(xn), t = e && parseFloat(e[1]);
        return !t && /Trident\/7.0/i.test(xn) && /rv:11.0/.test(xn) && (t = 11), t
    }(), Fn = /Safari/i.test(xn) && !Mn && !On && !Un, Hn = /Windows/i.test(xn), qn = st() && ("ontouchstart" in r.a || r.a.navigator.maxTouchPoints || r.a.DocumentTouch && r.a.document instanceof r.a.DocumentTouch), Vn = /iPad/i.test(xn) || Fn && qn && !/iPhone/i.test(xn), Wn = /iPhone/i.test(xn) && !Vn, zn = Wn || Vn || In, Gn = (Fn || zn) && !Mn, Yn = Object.freeze({__proto__: null, IS_IPOD: In, IOS_VERSION: Pn, IS_ANDROID: On, ANDROID_VERSION: Ln, IS_NATIVE_ANDROID: Nn, IS_FIREFOX: Rn, IS_EDGE: Un, IS_CHROME: Mn, CHROME_VERSION: Bn, IE_VERSION: jn, IS_SAFARI: Fn, IS_WINDOWS: Hn, TOUCH_ENABLED: qn, IS_IPAD: Vn, IS_IPHONE: Wn, IS_IOS: zn, IS_ANY_SAFARI: Gn});

    function Xn(e, t, n, i) {
        return function (e, t, n) {
            if ("number" != typeof t || t < 0 || t > n) throw new Error("Failed to execute '" + e + "' on 'TimeRanges': The index provided (" + t + ") is non-numeric or out of bounds (0-" + n + ").")
        }(e, i, n.length - 1), n[i][t]
    }

    function Kn(e) {
        return void 0 === e || 0 === e.length ? {
            length: 0, start: function () {
                throw new Error("This TimeRanges object is empty")
            }, end: function () {
                throw new Error("This TimeRanges object is empty")
            }
        } : {length: e.length, start: Xn.bind(null, "start", 0, e), end: Xn.bind(null, "end", 1, e)}
    }

    function $n(e, t) {
        return Array.isArray(e) ? Kn(e) : void 0 === e || void 0 === t ? Kn() : Kn([[e, t]])
    }

    function Qn(e, t) {
        var n, i, r = 0;
        if (!t) return 0;
        e && e.length || (e = $n(0, 0));
        for (var s = 0; s < e.length; s++) n = e.start(s), (i = e.end(s)) > t && (i = t), r += i - n;
        return r / t
    }

    for (var Jn, Zn = {prefixed: !0}, ei = [["requestFullscreen", "exitFullscreen", "fullscreenElement", "fullscreenEnabled", "fullscreenchange", "fullscreenerror", "fullscreen"], ["webkitRequestFullscreen", "webkitExitFullscreen", "webkitFullscreenElement", "webkitFullscreenEnabled", "webkitfullscreenchange", "webkitfullscreenerror", "-webkit-full-screen"], ["mozRequestFullScreen", "mozCancelFullScreen", "mozFullScreenElement", "mozFullScreenEnabled", "mozfullscreenchange", "mozfullscreenerror", "-moz-full-screen"], ["msRequestFullscreen", "msExitFullscreen", "msFullscreenElement", "msFullscreenEnabled", "MSFullscreenChange", "MSFullscreenError", "-ms-fullscreen"]], ti = ei[0], ni = 0; ni < ei.length; ni++) if (ei[ni][1] in a.a) {
        Jn = ei[ni];
        break
    }
    if (Jn) {
        for (var ii = 0; ii < Jn.length; ii++) Zn[ti[ii]] = Jn[ii];
        Zn.prefixed = Jn[0] !== ti[0]
    }

    function ri(e) {
        if (e instanceof ri) return e;
        "number" == typeof e ? this.code = e : "string" == typeof e ? this.message = e : et(e) && ("number" == typeof e.code && (this.code = e.code), Ze(this, e)), this.message || (this.message = ri.defaultMessages[this.code] || "")
    }

    ri.prototype.code = 0, ri.prototype.message = "", ri.prototype.status = null, ri.errorTypes = ["MEDIA_ERR_CUSTOM", "MEDIA_ERR_ABORTED", "MEDIA_ERR_NETWORK", "MEDIA_ERR_DECODE", "MEDIA_ERR_SRC_NOT_SUPPORTED", "MEDIA_ERR_ENCRYPTED"], ri.defaultMessages = {1: "You aborted the media playback", 2: "A network error caused the media download to fail part-way.", 3: "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.", 4: "The media could not be loaded, either because the server or network failed or because the format is not supported.", 5: "The media is encrypted and we do not have the keys to decrypt it."};
    for (var si = 0; si < ri.errorTypes.length; si++) ri[ri.errorTypes[si]] = si, ri.prototype[ri.errorTypes[si]] = si;

    function ai(e) {
        return null != e && "function" == typeof e.then
    }

    function oi(e) {
        ai(e) && e.then(null, (function (e) {
        }))
    }

    var li = function (e) {
        return ["kind", "label", "language", "id", "inBandMetadataTrackDispatchType", "mode", "src"].reduce((function (t, n, i) {
            return e[n] && (t[n] = e[n]), t
        }), {
            cues: e.cues && Array.prototype.map.call(e.cues, (function (e) {
                return {startTime: e.startTime, endTime: e.endTime, text: e.text, id: e.id}
            }))
        })
    }, ui = function (e) {
        var t = e.$$("track"), n = Array.prototype.map.call(t, (function (e) {
            return e.track
        }));
        return Array.prototype.map.call(t, (function (e) {
            var t = li(e.track);
            return e.src && (t.src = e.src), t
        })).concat(Array.prototype.filter.call(e.textTracks(), (function (e) {
            return -1 === n.indexOf(e)
        })).map(li))
    }, ci = function (e, t) {
        return e.forEach((function (e) {
            var n = t.addRemoteTextTrack(e).track;
            !e.src && e.cues && e.cues.forEach((function (e) {
                return n.addCue(e)
            }))
        })), t.textTracks()
    }, hi = "vjs-modal-dialog", di = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).opened_ = i.hasBeenOpened_ = i.hasBeenFilled_ = !1, i.closeable(!i.options_.uncloseable), i.content(i.options_.content), i.contentEl_ = ut("div", {className: hi + "-content"}, {role: "document"}), i.descEl_ = ut("p", {className: hi + "-description vjs-control-text", id: i.el().getAttribute("aria-describedby")}), ct(i.descEl_, i.description()), i.el_.appendChild(i.descEl_), i.el_.appendChild(i.contentEl_), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function () {
            return e.prototype.createEl.call(this, "div", {className: this.buildCSSClass(), tabIndex: -1}, {"aria-describedby": this.id() + "_description", "aria-hidden": "true", "aria-label": this.label(), role: "dialog"})
        }, n.dispose = function () {
            this.contentEl_ = null, this.descEl_ = null, this.previouslyActiveEl_ = null, e.prototype.dispose.call(this)
        }, n.buildCSSClass = function () {
            return hi + " vjs-hidden " + e.prototype.buildCSSClass.call(this)
        }, n.label = function () {
            return this.localize(this.options_.label || "Modal Window")
        }, n.description = function () {
            var e = this.options_.description || this.localize("This is a modal window.");
            return this.closeable() && (e += " " + this.localize("This modal can be closed by pressing the Escape key or activating the close button.")), e
        }, n.open = function () {
            if (!this.opened_) {
                var e = this.player();
                this.trigger("beforemodalopen"), this.opened_ = !0, (this.options_.fillAlways || !this.hasBeenOpened_ && !this.hasBeenFilled_) && this.fill(), this.wasPlaying_ = !e.paused(), this.options_.pauseOnOpen && this.wasPlaying_ && e.pause(), this.on("keydown", this.handleKeyDown), this.hadControls_ = e.controls(), e.controls(!1), this.show(), this.conditionalFocus_(), this.el().setAttribute("aria-hidden", "false"), this.trigger("modalopen"), this.hasBeenOpened_ = !0
            }
        }, n.opened = function (e) {
            return "boolean" == typeof e && this[e ? "open" : "close"](), this.opened_
        }, n.close = function () {
            if (this.opened_) {
                var e = this.player();
                this.trigger("beforemodalclose"), this.opened_ = !1, this.wasPlaying_ && this.options_.pauseOnOpen && e.play(), this.off("keydown", this.handleKeyDown), this.hadControls_ && e.controls(!0), this.hide(), this.el().setAttribute("aria-hidden", "true"), this.trigger("modalclose"), this.conditionalBlur_(), this.options_.temporary && this.dispose()
            }
        }, n.closeable = function (e) {
            if ("boolean" == typeof e) {
                var t = this.closeable_ = !!e, n = this.getChild("closeButton");
                if (t && !n) {
                    var i = this.contentEl_;
                    this.contentEl_ = this.el_, n = this.addChild("closeButton", {controlText: "Close Modal Dialog"}), this.contentEl_ = i, this.on(n, "close", this.close)
                }
                !t && n && (this.off(n, "close", this.close), this.removeChild(n), n.dispose())
            }
            return this.closeable_
        }, n.fill = function () {
            this.fillWith(this.content())
        }, n.fillWith = function (e) {
            var t = this.contentEl(), n = t.parentNode, i = t.nextSibling;
            this.trigger("beforemodalfill"), this.hasBeenFilled_ = !0, n.removeChild(t), this.empty(), It(t, e), this.trigger("modalfill"), i ? n.insertBefore(t, i) : n.appendChild(t);
            var r = this.getChild("closeButton");
            r && n.appendChild(r.el_)
        }, n.empty = function () {
            this.trigger("beforemodalempty"), xt(this.contentEl()), this.trigger("modalempty")
        }, n.content = function (e) {
            return void 0 !== e && (this.content_ = e), this.content_
        }, n.conditionalFocus_ = function () {
            var e = a.a.activeElement, t = this.player_.el_;
            this.previouslyActiveEl_ = null, (t.contains(e) || t === e) && (this.previouslyActiveEl_ = e, this.focus())
        }, n.conditionalBlur_ = function () {
            this.previouslyActiveEl_ && (this.previouslyActiveEl_.focus(), this.previouslyActiveEl_ = null)
        }, n.handleKeyDown = function (e) {
            if (e.stopPropagation(), g.a.isEventKey(e, "Escape") && this.closeable()) return e.preventDefault(), void this.close();
            if (g.a.isEventKey(e, "Tab")) {
                for (var t, n = this.focusableEls_(), i = this.el_.querySelector(":focus"), r = 0; r < n.length; r++) if (i === n[r]) {
                    t = r;
                    break
                }
                a.a.activeElement === this.el_ && (t = 0), e.shiftKey && 0 === t ? (n[n.length - 1].focus(), e.preventDefault()) : e.shiftKey || t !== n.length - 1 || (n[0].focus(), e.preventDefault())
            }
        }, n.focusableEls_ = function () {
            var e = this.el_.querySelectorAll("*");
            return Array.prototype.filter.call(e, (function (e) {
                return (e instanceof r.a.HTMLAnchorElement || e instanceof r.a.HTMLAreaElement) && e.hasAttribute("href") || (e instanceof r.a.HTMLInputElement || e instanceof r.a.HTMLSelectElement || e instanceof r.a.HTMLTextAreaElement || e instanceof r.a.HTMLButtonElement) && !e.hasAttribute("disabled") || e instanceof r.a.HTMLIFrameElement || e instanceof r.a.HTMLObjectElement || e instanceof r.a.HTMLEmbedElement || e.hasAttribute("tabindex") && -1 !== e.getAttribute("tabindex") || e.hasAttribute("contenteditable")
            }))
        }, t
    }(Cn);
    di.prototype.options_ = {pauseOnOpen: !0, temporary: !0}, Cn.registerComponent("ModalDialog", di);
    var fi = function (e) {
        function t(t) {
            var n;
            void 0 === t && (t = []), (n = e.call(this) || this).tracks_ = [], Object.defineProperty(c()(n), "length", {
                get: function () {
                    return this.tracks_.length
                }
            });
            for (var i = 0; i < t.length; i++) n.addTrack(t[i]);
            return n
        }

        d()(t, e);
        var n = t.prototype;
        return n.addTrack = function (e) {
            var t = this.tracks_.length;
            "" + t in this || Object.defineProperty(this, t, {
                get: function () {
                    return this.tracks_[t]
                }
            }), -1 === this.tracks_.indexOf(e) && (this.tracks_.push(e), this.trigger({track: e, type: "addtrack", target: this}))
        }, n.removeTrack = function (e) {
            for (var t, n = 0, i = this.length; n < i; n++) if (this[n] === e) {
                (t = this[n]).off && t.off(), this.tracks_.splice(n, 1);
                break
            }
            t && this.trigger({track: t, type: "removetrack", target: this})
        }, n.getTrackById = function (e) {
            for (var t = null, n = 0, i = this.length; n < i; n++) {
                var r = this[n];
                if (r.id === e) {
                    t = r;
                    break
                }
            }
            return t
        }, t
    }(cn);
    for (var pi in fi.prototype.allowedEvents_ = {change: "change", addtrack: "addtrack", removetrack: "removetrack"}, fi.prototype.allowedEvents_) fi.prototype["on" + pi] = null;
    var mi = function (e, t) {
        for (var n = 0; n < e.length; n++) Object.keys(e[n]).length && t.id !== e[n].id && (e[n].enabled = !1)
    }, gi = function (e) {
        function t(t) {
            var n;
            void 0 === t && (t = []);
            for (var i = t.length - 1; i >= 0; i--) if (t[i].enabled) {
                mi(t, t[i]);
                break
            }
            return (n = e.call(this, t) || this).changing_ = !1, n
        }

        d()(t, e);
        var n = t.prototype;
        return n.addTrack = function (t) {
            var n = this;
            t.enabled && mi(this, t), e.prototype.addTrack.call(this, t), t.addEventListener && (t.enabledChange_ = function () {
                n.changing_ || (n.changing_ = !0, mi(n, t), n.changing_ = !1, n.trigger("change"))
            }, t.addEventListener("enabledchange", t.enabledChange_))
        }, n.removeTrack = function (t) {
            e.prototype.removeTrack.call(this, t), t.removeEventListener && t.enabledChange_ && (t.removeEventListener("enabledchange", t.enabledChange_), t.enabledChange_ = null)
        }, t
    }(fi), vi = function (e, t) {
        for (var n = 0; n < e.length; n++) Object.keys(e[n]).length && t.id !== e[n].id && (e[n].selected = !1)
    }, yi = function (e) {
        function t(t) {
            var n;
            void 0 === t && (t = []);
            for (var i = t.length - 1; i >= 0; i--) if (t[i].selected) {
                vi(t, t[i]);
                break
            }
            return (n = e.call(this, t) || this).changing_ = !1, Object.defineProperty(c()(n), "selectedIndex", {
                get: function () {
                    for (var e = 0; e < this.length; e++) if (this[e].selected) return e;
                    return -1
                }, set: function () {
                }
            }), n
        }

        d()(t, e);
        var n = t.prototype;
        return n.addTrack = function (t) {
            var n = this;
            t.selected && vi(this, t), e.prototype.addTrack.call(this, t), t.addEventListener && (t.selectedChange_ = function () {
                n.changing_ || (n.changing_ = !0, vi(n, t), n.changing_ = !1, n.trigger("change"))
            }, t.addEventListener("selectedchange", t.selectedChange_))
        }, n.removeTrack = function (t) {
            e.prototype.removeTrack.call(this, t), t.removeEventListener && t.selectedChange_ && (t.removeEventListener("selectedchange", t.selectedChange_), t.selectedChange_ = null)
        }, t
    }(fi), _i = function (e) {
        function t() {
            return e.apply(this, arguments) || this
        }

        d()(t, e);
        var n = t.prototype;
        return n.addTrack = function (t) {
            var n = this;
            e.prototype.addTrack.call(this, t), this.queueChange_ || (this.queueChange_ = function () {
                return n.queueTrigger("change")
            }), this.triggerSelectedlanguagechange || (this.triggerSelectedlanguagechange_ = function () {
                return n.trigger("selectedlanguagechange")
            }), t.addEventListener("modechange", this.queueChange_);
            -1 === ["metadata", "chapters"].indexOf(t.kind) && t.addEventListener("modechange", this.triggerSelectedlanguagechange_)
        }, n.removeTrack = function (t) {
            e.prototype.removeTrack.call(this, t), t.removeEventListener && (this.queueChange_ && t.removeEventListener("modechange", this.queueChange_), this.selectedlanguagechange_ && t.removeEventListener("modechange", this.triggerSelectedlanguagechange_))
        }, t
    }(fi), bi = function () {
        function e(e) {
            void 0 === e && (e = []), this.trackElements_ = [], Object.defineProperty(this, "length", {
                get: function () {
                    return this.trackElements_.length
                }
            });
            for (var t = 0, n = e.length; t < n; t++) this.addTrackElement_(e[t])
        }

        var t = e.prototype;
        return t.addTrackElement_ = function (e) {
            var t = this.trackElements_.length;
            "" + t in this || Object.defineProperty(this, t, {
                get: function () {
                    return this.trackElements_[t]
                }
            }), -1 === this.trackElements_.indexOf(e) && this.trackElements_.push(e)
        }, t.getTrackElementByTrack_ = function (e) {
            for (var t, n = 0, i = this.trackElements_.length; n < i; n++) if (e === this.trackElements_[n].track) {
                t = this.trackElements_[n];
                break
            }
            return t
        }, t.removeTrackElement_ = function (e) {
            for (var t = 0, n = this.trackElements_.length; t < n; t++) if (e === this.trackElements_[t]) {
                this.trackElements_[t].track && "function" == typeof this.trackElements_[t].track.off && this.trackElements_[t].track.off(), "function" == typeof this.trackElements_[t].off && this.trackElements_[t].off(), this.trackElements_.splice(t, 1);
                break
            }
        }, e
    }(), Ti = function () {
        function e(t) {
            e.prototype.setCues_.call(this, t), Object.defineProperty(this, "length", {
                get: function () {
                    return this.length_
                }
            })
        }

        var t = e.prototype;
        return t.setCues_ = function (e) {
            var t = this.length || 0, n = 0, i = e.length;
            this.cues_ = e, this.length_ = e.length;
            var r = function (e) {
                "" + e in this || Object.defineProperty(this, "" + e, {
                    get: function () {
                        return this.cues_[e]
                    }
                })
            };
            if (t < i) for (n = t; n < i; n++) r.call(this, n)
        }, t.getCueById = function (e) {
            for (var t = null, n = 0, i = this.length; n < i; n++) {
                var r = this[n];
                if (r.id === e) {
                    t = r;
                    break
                }
            }
            return t
        }, e
    }(), wi = {alternative: "alternative", captions: "captions", main: "main", sign: "sign", subtitles: "subtitles", commentary: "commentary"}, Si = {alternative: "alternative", descriptions: "descriptions", main: "main", "main-desc": "main-desc", translation: "translation", commentary: "commentary"}, Ei = {subtitles: "subtitles", captions: "captions", descriptions: "descriptions", chapters: "chapters", metadata: "metadata"}, Ci = {disabled: "disabled", hidden: "hidden", showing: "showing"}, ki = function (e) {
        function t(t) {
            var n;
            void 0 === t && (t = {}), n = e.call(this) || this;
            var i = {id: t.id || "vjs_track_" + Wt(), kind: t.kind || "", label: t.label || "", language: t.language || ""}, r = function (e) {
                Object.defineProperty(c()(n), e, {
                    get: function () {
                        return i[e]
                    }, set: function () {
                    }
                })
            };
            for (var s in i) r(s);
            return n
        }

        return d()(t, e), t
    }(cn), xi = function (e) {
        var t = ["protocol", "hostname", "port", "pathname", "search", "hash", "host"], n = a.a.createElement("a");
        n.href = e;
        var i, s = "" === n.host && "file:" !== n.protocol;
        s && ((i = a.a.createElement("div")).innerHTML = '<a href="' + e + '"></a>', n = i.firstChild, i.setAttribute("style", "display:none; position:absolute;"), a.a.body.appendChild(i));
        for (var o = {}, l = 0; l < t.length; l++) o[t[l]] = n[t[l]];
        return "http:" === o.protocol && (o.host = o.host.replace(/:80$/, "")), "https:" === o.protocol && (o.host = o.host.replace(/:443$/, "")), o.protocol || (o.protocol = r.a.location.protocol), s && a.a.body.removeChild(i), o
    }, Ai = function (e) {
        if (!e.match(/^https?:\/\//)) {
            var t = a.a.createElement("div");
            t.innerHTML = '<a href="' + e + '">x</a>', e = t.firstChild.href
        }
        return e
    }, Di = function (e) {
        if ("string" == typeof e) {
            var t = /^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/.exec(e);
            if (t) return t.pop().toLowerCase()
        }
        return ""
    }, Ii = function (e, t) {
        void 0 === t && (t = r.a.location);
        var n = xi(e);
        return (":" === n.protocol ? t.protocol : n.protocol) + n.host !== t.protocol + t.host
    }, Pi = Object.freeze({__proto__: null, parseUrl: xi, getAbsoluteURL: Ai, getFileExtension: Di, isCrossOrigin: Ii}), Oi = function (e, t) {
        var n = new r.a.WebVTT.Parser(r.a, r.a.vttjs, r.a.WebVTT.StringDecoder()), i = [];
        n.oncue = function (e) {
            t.addCue(e)
        }, n.onparsingerror = function (e) {
            i.push(e)
        }, n.onflush = function () {
            t.trigger({type: "loadeddata", target: t})
        }, n.parse(e), i.length > 0 && (r.a.console && r.a.console.groupCollapsed && r.a.console.groupCollapsed("Text Track parsing errors for " + t.src), i.forEach((function (e) {
            return Xe.error(e)
        })), r.a.console && r.a.console.groupEnd && r.a.console.groupEnd()), n.flush()
    }, Li = function (e, t) {
        var n = {uri: e}, i = Ii(e);
        i && (n.cors = i), y()(n, on(this, (function (e, n, i) {
            if (e) return Xe.error(e, n);
            t.loaded_ = !0, "function" != typeof r.a.WebVTT ? t.tech_ && t.tech_.any(["vttjsloaded", "vttjserror"], (function (e) {
                if ("vttjserror" !== e.type) return Oi(i, t);
                Xe.error("vttjs failed to load, stopping trying to process " + t.src)
            })) : Oi(i, t)
        })))
    }, Ni = function (e) {
        function t(t) {
            var n;
            if (void 0 === t && (t = {}), !t.tech) throw new Error("A tech was not provided.");
            var i = En(t, {kind: Ei[t.kind] || "subtitles", language: t.language || t.srclang || ""}), r = Ci[i.mode] || "disabled", s = i.default;
            "metadata" !== i.kind && "chapters" !== i.kind || (r = "hidden"), (n = e.call(this, i) || this).tech_ = i.tech, n.cues_ = [], n.activeCues_ = [], n.preload_ = !1 !== n.tech_.preloadTextTracks;
            var a = new Ti(n.cues_), o = new Ti(n.activeCues_), l = !1, u = on(c()(n), (function () {
                this.activeCues = this.activeCues, l && (this.trigger("cuechange"), l = !1)
            }));
            return "disabled" !== r && n.tech_.ready((function () {
                n.tech_.on("timeupdate", u)
            }), !0), Object.defineProperties(c()(n), {
                default: {
                    get: function () {
                        return s
                    }, set: function () {
                    }
                }, mode: {
                    get: function () {
                        return r
                    }, set: function (e) {
                        var t = this;
                        Ci[e] && (r = e, this.preload_ || "disabled" === r || 0 !== this.cues.length || Li(this.src, this), "disabled" !== r ? this.tech_.ready((function () {
                            t.tech_.on("timeupdate", u)
                        }), !0) : this.tech_.off("timeupdate", u), this.trigger("modechange"))
                    }
                }, cues: {
                    get: function () {
                        return this.loaded_ ? a : null
                    }, set: function () {
                    }
                }, activeCues: {
                    get: function () {
                        if (!this.loaded_) return null;
                        if (0 === this.cues.length) return o;
                        for (var e = this.tech_.currentTime(), t = [], n = 0, i = this.cues.length; n < i; n++) {
                            var r = this.cues[n];
                            r.startTime <= e && r.endTime >= e ? t.push(r) : r.startTime === r.endTime && r.startTime <= e && r.startTime + .5 >= e && t.push(r)
                        }
                        if (l = !1, t.length !== this.activeCues_.length) l = !0; else for (var s = 0; s < t.length; s++) -1 === this.activeCues_.indexOf(t[s]) && (l = !0);
                        return this.activeCues_ = t, o.setCues_(this.activeCues_), o
                    }, set: function () {
                    }
                }
            }), i.src ? (n.src = i.src, n.preload_ || (n.loaded_ = !0), (n.preload_ || s || "subtitles" !== i.kind && "captions" !== i.kind) && Li(n.src, c()(n))) : n.loaded_ = !0, n
        }

        d()(t, e);
        var n = t.prototype;
        return n.addCue = function (e) {
            var t = e;
            if (r.a.vttjs && !(e instanceof r.a.vttjs.VTTCue)) {
                for (var n in t = new r.a.vttjs.VTTCue(e.startTime, e.endTime, e.text), e) n in t || (t[n] = e[n]);
                t.id = e.id, t.originalCue_ = e
            }
            for (var i = this.tech_.textTracks(), s = 0; s < i.length; s++) i[s] !== this && i[s].removeCue(t);
            this.cues_.push(t), this.cues.setCues_(this.cues_)
        }, n.removeCue = function (e) {
            for (var t = this.cues_.length; t--;) {
                var n = this.cues_[t];
                if (n === e || n.originalCue_ && n.originalCue_ === e) {
                    this.cues_.splice(t, 1), this.cues.setCues_(this.cues_);
                    break
                }
            }
        }, t
    }(ki);
    Ni.prototype.allowedEvents_ = {cuechange: "cuechange"};
    var Ri = function (e) {
        function t(t) {
            var n;
            void 0 === t && (t = {});
            var i = En(t, {kind: Si[t.kind] || ""});
            n = e.call(this, i) || this;
            var r = !1;
            return Object.defineProperty(c()(n), "enabled", {
                get: function () {
                    return r
                }, set: function (e) {
                    "boolean" == typeof e && e !== r && (r = e, this.trigger("enabledchange"))
                }
            }), i.enabled && (n.enabled = i.enabled), n.loaded_ = !0, n
        }

        return d()(t, e), t
    }(ki), Ui = function (e) {
        function t(t) {
            var n;
            void 0 === t && (t = {});
            var i = En(t, {kind: wi[t.kind] || ""});
            n = e.call(this, i) || this;
            var r = !1;
            return Object.defineProperty(c()(n), "selected", {
                get: function () {
                    return r
                }, set: function (e) {
                    "boolean" == typeof e && e !== r && (r = e, this.trigger("selectedchange"))
                }
            }), i.selected && (n.selected = i.selected), n
        }

        return d()(t, e), t
    }(ki), Mi = 0, Bi = 2, ji = function (e) {
        function t(t) {
            var n, i;
            void 0 === t && (t = {}), n = e.call(this) || this;
            var r = new Ni(t);
            return n.kind = r.kind, n.src = r.src, n.srclang = r.language, n.label = r.label, n.default = r.default, Object.defineProperties(c()(n), {
                readyState: {
                    get: function () {
                        return i
                    }
                }, track: {
                    get: function () {
                        return r
                    }
                }
            }), i = Mi, r.addEventListener("loadeddata", (function () {
                i = Bi, n.trigger({type: "load", target: c()(n)})
            })), n
        }

        return d()(t, e), t
    }(cn);
    ji.prototype.allowedEvents_ = {load: "load"}, ji.NONE = Mi, ji.LOADING = 1, ji.LOADED = Bi, ji.ERROR = 3;
    var Fi = {audio: {ListClass: gi, TrackClass: Ri, capitalName: "Audio"}, video: {ListClass: yi, TrackClass: Ui, capitalName: "Video"}, text: {ListClass: _i, TrackClass: Ni, capitalName: "Text"}};
    Object.keys(Fi).forEach((function (e) {
        Fi[e].getterName = e + "Tracks", Fi[e].privateName = e + "Tracks_"
    }));
    var Hi = {remoteText: {ListClass: _i, TrackClass: Ni, capitalName: "RemoteText", getterName: "remoteTextTracks", privateName: "remoteTextTracks_"}, remoteTextEl: {ListClass: bi, TrackClass: ji, capitalName: "RemoteTextTrackEls", getterName: "remoteTextTrackEls", privateName: "remoteTextTrackEls_"}}, qi = l()({}, Fi, Hi);
    Hi.names = Object.keys(Hi), Fi.names = Object.keys(Fi), qi.names = [].concat(Hi.names).concat(Fi.names);
    var Vi = function (e) {
        function t(t, n) {
            var i;
            return void 0 === t && (t = {}), void 0 === n && (n = function () {
            }), t.reportTouchActivity = !1, (i = e.call(this, null, t, n) || this).hasStarted_ = !1, i.on("playing", (function () {
                this.hasStarted_ = !0
            })), i.on("loadstart", (function () {
                this.hasStarted_ = !1
            })), qi.names.forEach((function (e) {
                var n = qi[e];
                t && t[n.getterName] && (i[n.privateName] = t[n.getterName])
            })), i.featuresProgressEvents || i.manualProgressOn(), i.featuresTimeupdateEvents || i.manualTimeUpdatesOn(), ["Text", "Audio", "Video"].forEach((function (e) {
                !1 === t["native" + e + "Tracks"] && (i["featuresNative" + e + "Tracks"] = !1)
            })), !1 === t.nativeCaptions || !1 === t.nativeTextTracks ? i.featuresNativeTextTracks = !1 : !0 !== t.nativeCaptions && !0 !== t.nativeTextTracks || (i.featuresNativeTextTracks = !0), i.featuresNativeTextTracks || i.emulateTextTracks(), i.preloadTextTracks = !1 !== t.preloadTextTracks, i.autoRemoteTextTracks_ = new qi.text.ListClass, i.initTrackListeners(), t.nativeControlsForTouch || i.emitTapEvents(), i.constructor && (i.name_ = i.constructor.name || "Unknown Tech"), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.triggerSourceset = function (e) {
            var t = this;
            this.isReady_ || this.one("ready", (function () {
                return t.setTimeout((function () {
                    return t.triggerSourceset(e)
                }), 1)
            })), this.trigger({src: e, type: "sourceset"})
        }, n.manualProgressOn = function () {
            this.on("durationchange", this.onDurationChange), this.manualProgress = !0, this.one("ready", this.trackProgress)
        }, n.manualProgressOff = function () {
            this.manualProgress = !1, this.stopTrackingProgress(), this.off("durationchange", this.onDurationChange)
        }, n.trackProgress = function (e) {
            this.stopTrackingProgress(), this.progressInterval = this.setInterval(on(this, (function () {
                var e = this.bufferedPercent();
                this.bufferedPercent_ !== e && this.trigger("progress"), this.bufferedPercent_ = e, 1 === e && this.stopTrackingProgress()
            })), 500)
        }, n.onDurationChange = function (e) {
            this.duration_ = this.duration()
        }, n.buffered = function () {
            return $n(0, 0)
        }, n.bufferedPercent = function () {
            return Qn(this.buffered(), this.duration_)
        }, n.stopTrackingProgress = function () {
            this.clearInterval(this.progressInterval)
        }, n.manualTimeUpdatesOn = function () {
            this.manualTimeUpdates = !0, this.on("play", this.trackCurrentTime), this.on("pause", this.stopTrackingCurrentTime)
        }, n.manualTimeUpdatesOff = function () {
            this.manualTimeUpdates = !1, this.stopTrackingCurrentTime(), this.off("play", this.trackCurrentTime), this.off("pause", this.stopTrackingCurrentTime)
        }, n.trackCurrentTime = function () {
            this.currentTimeInterval && this.stopTrackingCurrentTime(), this.currentTimeInterval = this.setInterval((function () {
                this.trigger({type: "timeupdate", target: this, manuallyTriggered: !0})
            }), 250)
        }, n.stopTrackingCurrentTime = function () {
            this.clearInterval(this.currentTimeInterval), this.trigger({type: "timeupdate", target: this, manuallyTriggered: !0})
        }, n.dispose = function () {
            this.clearTracks(Fi.names), this.manualProgress && this.manualProgressOff(), this.manualTimeUpdates && this.manualTimeUpdatesOff(), e.prototype.dispose.call(this)
        }, n.clearTracks = function (e) {
            var t = this;
            (e = [].concat(e)).forEach((function (e) {
                for (var n = t[e + "Tracks"]() || [], i = n.length; i--;) {
                    var r = n[i];
                    "text" === e && t.removeRemoteTextTrack(r), n.removeTrack(r)
                }
            }))
        }, n.cleanupAutoTextTracks = function () {
            for (var e = this.autoRemoteTextTracks_ || [], t = e.length; t--;) {
                var n = e[t];
                this.removeRemoteTextTrack(n)
            }
        }, n.reset = function () {
        }, n.error = function (e) {
            return void 0 !== e && (this.error_ = new ri(e), this.trigger("error")), this.error_
        }, n.played = function () {
            return this.hasStarted_ ? $n(0, 0) : $n()
        }, n.setCurrentTime = function () {
            this.manualTimeUpdates && this.trigger({type: "timeupdate", target: this, manuallyTriggered: !0})
        }, n.initTrackListeners = function () {
            var e = this;
            Fi.names.forEach((function (t) {
                var n = Fi[t], i = function () {
                    e.trigger(t + "trackchange")
                }, r = e[n.getterName]();
                r.addEventListener("removetrack", i), r.addEventListener("addtrack", i), e.on("dispose", (function () {
                    r.removeEventListener("removetrack", i), r.removeEventListener("addtrack", i)
                }))
            }))
        }, n.addWebVttScript_ = function () {
            var e = this;
            if (!r.a.WebVTT) if (a.a.body.contains(this.el())) {
                if (!this.options_["vtt.js"] && tt(b.a) && Object.keys(b.a).length > 0) return void this.trigger("vttjsloaded");
                var t = a.a.createElement("script");
                t.src = this.options_["vtt.js"] || "https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js", t.onload = function () {
                    e.trigger("vttjsloaded")
                }, t.onerror = function () {
                    e.trigger("vttjserror")
                }, this.on("dispose", (function () {
                    t.onload = null, t.onerror = null
                })), r.a.WebVTT = !0, this.el().parentNode.appendChild(t)
            } else this.ready(this.addWebVttScript_)
        }, n.emulateTextTracks = function () {
            var e = this, t = this.textTracks(), n = this.remoteTextTracks(), i = function (e) {
                return t.addTrack(e.track)
            }, r = function (e) {
                return t.removeTrack(e.track)
            };
            n.on("addtrack", i), n.on("removetrack", r), this.addWebVttScript_();
            var s = function () {
                return e.trigger("texttrackchange")
            }, a = function () {
                s();
                for (var e = 0; e < t.length; e++) {
                    var n = t[e];
                    n.removeEventListener("cuechange", s), "showing" === n.mode && n.addEventListener("cuechange", s)
                }
            };
            a(), t.addEventListener("change", a), t.addEventListener("addtrack", a), t.addEventListener("removetrack", a), this.on("dispose", (function () {
                n.off("addtrack", i), n.off("removetrack", r), t.removeEventListener("change", a), t.removeEventListener("addtrack", a), t.removeEventListener("removetrack", a);
                for (var e = 0; e < t.length; e++) {
                    t[e].removeEventListener("cuechange", s)
                }
            }))
        }, n.addTextTrack = function (e, t, n) {
            if (!e) throw new Error("TextTrack kind is required but was not provided");
            return function (e, t, n, i, r) {
                void 0 === r && (r = {});
                var s = e.textTracks();
                r.kind = t, n && (r.label = n), i && (r.language = i), r.tech = e;
                var a = new qi.text.TrackClass(r);
                return s.addTrack(a), a
            }(this, e, t, n)
        }, n.createRemoteTextTrack = function (e) {
            var t = En(e, {tech: this});
            return new Hi.remoteTextEl.TrackClass(t)
        }, n.addRemoteTextTrack = function (e, t) {
            var n = this;
            void 0 === e && (e = {});
            var i = this.createRemoteTextTrack(e);
            return !0 !== t && !1 !== t && (Xe.warn('Calling addRemoteTextTrack without explicitly setting the "manualCleanup" parameter to `true` is deprecated and default to `false` in future version of video.js'), t = !0), this.remoteTextTrackEls().addTrackElement_(i), this.remoteTextTracks().addTrack(i.track), !0 !== t && this.ready((function () {
                return n.autoRemoteTextTracks_.addTrack(i.track)
            })), i
        }, n.removeRemoteTextTrack = function (e) {
            var t = this.remoteTextTrackEls().getTrackElementByTrack_(e);
            this.remoteTextTrackEls().removeTrackElement_(t), this.remoteTextTracks().removeTrack(e), this.autoRemoteTextTracks_.removeTrack(e)
        }, n.getVideoPlaybackQuality = function () {
            return {}
        }, n.requestPictureInPicture = function () {
            var e = this.options_.Promise || r.a.Promise;
            if (e) return e.reject()
        }, n.setPoster = function () {
        }, n.playsinline = function () {
        }, n.setPlaysinline = function () {
        }, n.overrideNativeAudioTracks = function () {
        }, n.overrideNativeVideoTracks = function () {
        }, n.canPlayType = function () {
            return ""
        }, t.canPlayType = function () {
            return ""
        }, t.canPlaySource = function (e, n) {
            return t.canPlayType(e.type)
        }, t.isTech = function (e) {
            return e.prototype instanceof t || e instanceof t || e === t
        }, t.registerTech = function (e, n) {
            if (t.techs_ || (t.techs_ = {}), !t.isTech(n)) throw new Error("Tech " + e + " must be a Tech");
            if (!t.canPlayType) throw new Error("Techs must have a static canPlayType method on them");
            if (!t.canPlaySource) throw new Error("Techs must have a static canPlaySource method on them");
            return e = Sn(e), t.techs_[e] = n, t.techs_[wn(e)] = n, "Tech" !== e && t.defaultTechOrder_.push(e), n
        }, t.getTech = function (e) {
            if (e) return t.techs_ && t.techs_[e] ? t.techs_[e] : (e = Sn(e), r.a && r.a.videojs && r.a.videojs[e] ? (Xe.warn("The " + e + " tech was added to the videojs object when it should be registered using videojs.registerTech(name, tech)"), r.a.videojs[e]) : void 0)
        }, t
    }(Cn);
    qi.names.forEach((function (e) {
        var t = qi[e];
        Vi.prototype[t.getterName] = function () {
            return this[t.privateName] = this[t.privateName] || new t.ListClass, this[t.privateName]
        }
    })), Vi.prototype.featuresVolumeControl = !0, Vi.prototype.featuresMuteControl = !0, Vi.prototype.featuresFullscreenResize = !1, Vi.prototype.featuresPlaybackRate = !1, Vi.prototype.featuresProgressEvents = !1, Vi.prototype.featuresSourceset = !1, Vi.prototype.featuresTimeupdateEvents = !1, Vi.prototype.featuresNativeTextTracks = !1, Vi.withSourceHandlers = function (e) {
        e.registerSourceHandler = function (t, n) {
            var i = e.sourceHandlers;
            i || (i = e.sourceHandlers = []), void 0 === n && (n = i.length), i.splice(n, 0, t)
        }, e.canPlayType = function (t) {
            for (var n, i = e.sourceHandlers || [], r = 0; r < i.length; r++) if (n = i[r].canPlayType(t)) return n;
            return ""
        }, e.selectSourceHandler = function (t, n) {
            for (var i = e.sourceHandlers || [], r = 0; r < i.length; r++) if (i[r].canHandleSource(t, n)) return i[r];
            return null
        }, e.canPlaySource = function (t, n) {
            var i = e.selectSourceHandler(t, n);
            return i ? i.canHandleSource(t, n) : ""
        };
        ["seekable", "seeking", "duration"].forEach((function (e) {
            var t = this[e];
            "function" == typeof t && (this[e] = function () {
                return this.sourceHandler_ && this.sourceHandler_[e] ? this.sourceHandler_[e].apply(this.sourceHandler_, arguments) : t.apply(this, arguments)
            })
        }), e.prototype), e.prototype.setSource = function (t) {
            var n = e.selectSourceHandler(t, this.options_);
            n || (e.nativeSourceHandler ? n = e.nativeSourceHandler : Xe.error("No source handler found for the current source.")), this.disposeSourceHandler(), this.off("dispose", this.disposeSourceHandler), n !== e.nativeSourceHandler && (this.currentSource_ = t), this.sourceHandler_ = n.handleSource(t, this, this.options_), this.one("dispose", this.disposeSourceHandler)
        }, e.prototype.disposeSourceHandler = function () {
            this.currentSource_ && (this.clearTracks(["audio", "video"]), this.currentSource_ = null), this.cleanupAutoTextTracks(), this.sourceHandler_ && (this.sourceHandler_.dispose && this.sourceHandler_.dispose(), this.sourceHandler_ = null)
        }
    }, Cn.registerComponent("Tech", Vi), Vi.registerTech("Tech", Vi), Vi.defaultTechOrder_ = [];
    var Wi = {}, zi = {}, Gi = {};

    function Yi(e, t, n) {
        e.setTimeout((function () {
            return function e(t, n, i, r, s, a) {
                void 0 === t && (t = {});
                void 0 === n && (n = []);
                void 0 === s && (s = []);
                void 0 === a && (a = !1);
                var o = n, l = o[0], u = o.slice(1);
                if ("string" == typeof l) e(t, Wi[l], i, r, s, a); else if (l) {
                    var c = function (e, t) {
                        var n = zi[e.id()], i = null;
                        if (null == n) return i = t(e), zi[e.id()] = [[t, i]], i;
                        for (var r = 0; r < n.length; r++) {
                            var s = n[r], a = s[0], o = s[1];
                            a === t && (i = o)
                        }
                        null === i && (i = t(e), n.push([t, i]));
                        return i
                    }(r, l);
                    if (!c.setSource) return s.push(c), e(t, u, i, r, s, a);
                    c.setSource(Ze({}, t), (function (n, o) {
                        if (n) return e(t, u, i, r, s, a);
                        s.push(c), e(o, t.type === o.type ? u : Wi[o.type], i, r, s, a)
                    }))
                } else u.length ? e(t, u, i, r, s, a) : a ? i(t, s) : e(t, Wi["*"], i, r, s, !0)
            }(t, Wi[t.type], n, e)
        }), 1)
    }

    function Xi(e, t, n, i) {
        void 0 === i && (i = null);
        var r = "call" + Sn(n), s = e.reduce(Ji(r), i), a = s === Gi, o = a ? null : t[n](s);
        return function (e, t, n, i) {
            for (var r = e.length - 1; r >= 0; r--) {
                var s = e[r];
                s[t] && s[t](i, n)
            }
        }(e, n, o, a), o
    }

    var Ki = {buffered: 1, currentTime: 1, duration: 1, muted: 1, played: 1, paused: 1, seekable: 1, volume: 1}, $i = {setCurrentTime: 1, setMuted: 1, setVolume: 1}, Qi = {play: 1, pause: 1};

    function Ji(e) {
        return function (t, n) {
            return t === Gi ? Gi : n[e] ? n[e](t) : t
        }
    }

    var Zi = {opus: "video/ogg", ogv: "video/ogg", mp4: "video/mp4", mov: "video/mp4", m4v: "video/mp4", mkv: "video/x-matroska", m4a: "audio/mp4", mp3: "audio/mpeg", aac: "audio/aac", oga: "audio/ogg", m3u8: "application/x-mpegURL", jpg: "image/jpeg", jpeg: "image/jpeg", gif: "image/gif", png: "image/png", svg: "image/svg+xml", webp: "image/webp"}, er = function (e) {
        void 0 === e && (e = "");
        var t = Di(e);
        return Zi[t.toLowerCase()] || ""
    };

    function tr(e) {
        if (!e.type) {
            var t = er(e.src);
            t && (e.type = t)
        }
        return e
    }

    var nr = function (e) {
        function t(t, n, i) {
            var r, s = En({createEl: !1}, n);
            if (r = e.call(this, t, s, i) || this, n.playerOptions.sources && 0 !== n.playerOptions.sources.length) t.src(n.playerOptions.sources); else for (var a = 0, o = n.playerOptions.techOrder; a < o.length; a++) {
                var l = Sn(o[a]), u = Vi.getTech(l);
                if (l || (u = Cn.getComponent(l)), u && u.isSupported()) {
                    t.loadTech_(l);
                    break
                }
            }
            return r
        }

        return d()(t, e), t
    }(Cn);
    Cn.registerComponent("MediaLoader", nr);
    var ir = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).emitTapEvents(), i.enable(), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function (t, n, i) {
            void 0 === t && (t = "div"), void 0 === n && (n = {}), void 0 === i && (i = {}), n = Ze({innerHTML: '<span aria-hidden="true" class="vjs-icon-placeholder"></span>', className: this.buildCSSClass(), tabIndex: 0}, n), "button" === t && Xe.error("Creating a ClickableComponent with an HTML element of " + t + " is not supported; use a Button instead."), i = Ze({role: "button"}, i), this.tabIndex_ = n.tabIndex;
            var r = e.prototype.createEl.call(this, t, n, i);
            return this.createControlTextEl(r), r
        }, n.dispose = function () {
            this.controlTextEl_ = null, e.prototype.dispose.call(this)
        }, n.createControlTextEl = function (e) {
            return this.controlTextEl_ = ut("span", {className: "vjs-control-text"}, {"aria-live": "polite"}), e && e.appendChild(this.controlTextEl_), this.controlText(this.controlText_, e), this.controlTextEl_
        }, n.controlText = function (e, t) {
            if (void 0 === t && (t = this.el()), void 0 === e) return this.controlText_ || "Need Text";
            var n = this.localize(e);
            this.controlText_ = e, ct(this.controlTextEl_, n), this.nonIconControl || t.setAttribute("title", n)
        }, n.buildCSSClass = function () {
            return "vjs-control vjs-button " + e.prototype.buildCSSClass.call(this)
        }, n.enable = function () {
            this.enabled_ || (this.enabled_ = !0, this.removeClass("vjs-disabled"), this.el_.setAttribute("aria-disabled", "false"), void 0 !== this.tabIndex_ && this.el_.setAttribute("tabIndex", this.tabIndex_), this.on(["tap", "click"], this.handleClick), this.on("keydown", this.handleKeyDown))
        }, n.disable = function () {
            this.enabled_ = !1, this.addClass("vjs-disabled"), this.el_.setAttribute("aria-disabled", "true"), void 0 !== this.tabIndex_ && this.el_.removeAttribute("tabIndex"), this.off("mouseover", this.handleMouseOver), this.off("mouseout", this.handleMouseOut), this.off(["tap", "click"], this.handleClick), this.off("keydown", this.handleKeyDown)
        }, n.handleClick = function (e) {
            this.options_.clickHandler && this.options_.clickHandler.call(this, arguments)
        }, n.handleKeyDown = function (t) {
            g.a.isEventKey(t, "Space") || g.a.isEventKey(t, "Enter") ? (t.preventDefault(), t.stopPropagation(), this.trigger("click")) : e.prototype.handleKeyDown.call(this, t)
        }, t
    }(Cn);
    Cn.registerComponent("ClickableComponent", ir);
    var rr = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).update(), t.on("posterchange", on(c()(i), i.update)), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.dispose = function () {
            this.player().off("posterchange", this.update), e.prototype.dispose.call(this)
        }, n.createEl = function () {
            return ut("div", {className: "vjs-poster", tabIndex: -1})
        }, n.update = function (e) {
            var t = this.player().poster();
            this.setSrc(t), t ? this.show() : this.hide()
        }, n.setSrc = function (e) {
            var t = "";
            e && (t = 'url("' + e + '")'), this.el_.style.backgroundImage = t
        }, n.handleClick = function (e) {
            if (this.player_.controls()) {
                var t = this.player_.usingPlugin("eme") && this.player_.eme.sessions && this.player_.eme.sessions.length > 0;
                !this.player_.tech(!0) || (jn || Un) && t || this.player_.tech(!0).focus(), this.player_.paused() ? oi(this.player_.play()) : this.player_.pause()
            }
        }, t
    }(ir);
    Cn.registerComponent("PosterImage", rr);
    var sr = {monospace: "monospace", sansSerif: "sans-serif", serif: "serif", monospaceSansSerif: '"Andale Mono", "Lucida Console", monospace', monospaceSerif: '"Courier New", monospace', proportionalSansSerif: "sans-serif", proportionalSerif: "serif", casual: '"Comic Sans MS", Impact, fantasy', script: '"Monotype Corsiva", cursive', smallcaps: '"Andale Mono", "Lucida Console", monospace, sans-serif'};

    function ar(e, t) {
        var n;
        if (4 === e.length) n = e[1] + e[1] + e[2] + e[2] + e[3] + e[3]; else {
            if (7 !== e.length) throw new Error("Invalid color code provided, " + e + "; must be formatted as e.g. #f0e or #f604e2.");
            n = e.slice(1)
        }
        return "rgba(" + parseInt(n.slice(0, 2), 16) + "," + parseInt(n.slice(2, 4), 16) + "," + parseInt(n.slice(4, 6), 16) + "," + t + ")"
    }

    function or(e, t, n) {
        try {
            e.style[t] = n
        } catch (e) {
            return
        }
    }

    var lr = function (e) {
        function t(t, n, i) {
            var s;
            s = e.call(this, t, n, i) || this;
            var a = on(c()(s), s.updateDisplay);
            return t.on("loadstart", on(c()(s), s.toggleDisplay)), t.on("texttrackchange", a), t.on("loadedmetadata", on(c()(s), s.preselectTrack)), t.ready(on(c()(s), (function () {
                if (t.tech_ && t.tech_.featuresNativeTextTracks) this.hide(); else {
                    t.on("fullscreenchange", a), t.on("playerresize", a), r.a.addEventListener("orientationchange", a), t.on("dispose", (function () {
                        return r.a.removeEventListener("orientationchange", a)
                    }));
                    for (var e = this.options_.playerOptions.tracks || [], n = 0; n < e.length; n++) this.player_.addRemoteTextTrack(e[n], !0);
                    this.preselectTrack()
                }
            }))), s
        }

        d()(t, e);
        var n = t.prototype;
        return n.preselectTrack = function () {
            for (var e, t, n, i = {captions: 1, subtitles: 1}, r = this.player_.textTracks(), s = this.player_.cache_.selectedLanguage, a = 0; a < r.length; a++) {
                var o = r[a];
                s && s.enabled && s.language && s.language === o.language && o.kind in i ? o.kind === s.kind ? n = o : n || (n = o) : s && !s.enabled ? (n = null, e = null, t = null) : o.default && ("descriptions" !== o.kind || e ? o.kind in i && !t && (t = o) : e = o)
            }
            n ? n.mode = "showing" : t ? t.mode = "showing" : e && (e.mode = "showing")
        }, n.toggleDisplay = function () {
            this.player_.tech_ && this.player_.tech_.featuresNativeTextTracks ? this.hide() : this.show()
        }, n.createEl = function () {
            return e.prototype.createEl.call(this, "div", {className: "vjs-text-track-display"}, {"aria-live": "off", "aria-atomic": "true"})
        }, n.clearDisplay = function () {
            "function" == typeof r.a.WebVTT && r.a.WebVTT.processCues(r.a, [], this.el_)
        }, n.updateDisplay = function () {
            var e = this.player_.textTracks(), t = this.options_.allowMultipleShowingTracks;
            if (this.clearDisplay(), t) {
                for (var n = [], i = 0; i < e.length; ++i) {
                    var r = e[i];
                    "showing" === r.mode && n.push(r)
                }
                this.updateForTrack(n)
            } else {
                for (var s = null, a = null, o = e.length; o--;) {
                    var l = e[o];
                    "showing" === l.mode && ("descriptions" === l.kind ? s = l : a = l)
                }
                a ? ("off" !== this.getAttribute("aria-live") && this.setAttribute("aria-live", "off"), this.updateForTrack(a)) : s && ("assertive" !== this.getAttribute("aria-live") && this.setAttribute("aria-live", "assertive"), this.updateForTrack(s))
            }
        }, n.updateDisplayState = function (e) {
            for (var t = this.player_.textTrackSettings.getValues(), n = e.activeCues, i = n.length; i--;) {
                var s = n[i];
                if (s) {
                    var a = s.displayState;
                    if (t.color && (a.firstChild.style.color = t.color), t.textOpacity && or(a.firstChild, "color", ar(t.color || "#fff", t.textOpacity)), t.backgroundColor && (a.firstChild.style.backgroundColor = t.backgroundColor), t.backgroundOpacity && or(a.firstChild, "backgroundColor", ar(t.backgroundColor || "#000", t.backgroundOpacity)), t.windowColor && (t.windowOpacity ? or(a, "backgroundColor", ar(t.windowColor, t.windowOpacity)) : a.style.backgroundColor = t.windowColor), t.edgeStyle && ("dropshadow" === t.edgeStyle ? a.firstChild.style.textShadow = "2px 2px 3px #222, 2px 2px 4px #222, 2px 2px 5px #222" : "raised" === t.edgeStyle ? a.firstChild.style.textShadow = "1px 1px #222, 2px 2px #222, 3px 3px #222" : "depressed" === t.edgeStyle ? a.firstChild.style.textShadow = "1px 1px #ccc, 0 1px #ccc, -1px -1px #222, 0 -1px #222" : "uniform" === t.edgeStyle && (a.firstChild.style.textShadow = "0 0 4px #222, 0 0 4px #222, 0 0 4px #222, 0 0 4px #222")), t.fontPercent && 1 !== t.fontPercent) {
                        var o = r.a.parseFloat(a.style.fontSize);
                        a.style.fontSize = o * t.fontPercent + "px", a.style.height = "auto", a.style.top = "auto", a.style.bottom = "2px"
                    }
                    t.fontFamily && "default" !== t.fontFamily && ("small-caps" === t.fontFamily ? a.firstChild.style.fontVariant = "small-caps" : a.firstChild.style.fontFamily = sr[t.fontFamily])
                }
            }
        }, n.updateForTrack = function (e) {
            if (Array.isArray(e) || (e = [e]), "function" == typeof r.a.WebVTT && !e.every((function (e) {
                return !e.activeCues
            }))) {
                for (var t = [], n = 0; n < e.length; ++n) for (var i = e[n], s = 0; s < i.activeCues.length; ++s) t.push(i.activeCues[s]);
                r.a.WebVTT.processCues(r.a, t, this.el_);
                for (var a = 0; a < e.length; ++a) {
                    for (var o = e[a], l = 0; l < o.activeCues.length; ++l) {
                        var u = o.activeCues[l].displayState;
                        ft(u, "vjs-text-track-cue"), ft(u, "vjs-text-track-cue-" + (o.language ? o.language : a))
                    }
                    this.player_.textTrackSettings && this.updateDisplayState(o)
                }
            }
        }, t
    }(Cn);
    Cn.registerComponent("TextTrackDisplay", lr);
    var ur = function (e) {
        function t() {
            return e.apply(this, arguments) || this
        }

        return d()(t, e), t.prototype.createEl = function () {
            var t = this.player_.isAudio(), n = this.localize(t ? "Audio Player" : "Video Player"), i = ut("span", {className: "vjs-control-text", innerHTML: this.localize("{1} is loading.", [n])}), r = e.prototype.createEl.call(this, "div", {className: "vjs-loading-spinner", dir: "ltr"});
            return r.appendChild(i), r
        }, t
    }(Cn);
    Cn.registerComponent("LoadingSpinner", ur);
    var cr = function (e) {
        function t() {
            return e.apply(this, arguments) || this
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function (e, t, n) {
            void 0 === t && (t = {}), void 0 === n && (n = {}), t = Ze({innerHTML: '<span aria-hidden="true" class="vjs-icon-placeholder"></span>', className: this.buildCSSClass()}, t), n = Ze({type: "button"}, n);
            var i = Cn.prototype.createEl.call(this, "button", t, n);
            return this.createControlTextEl(i), i
        }, n.addChild = function (e, t) {
            void 0 === t && (t = {});
            var n = this.constructor.name;
            return Xe.warn("Adding an actionable (user controllable) child to a Button (" + n + ") is not supported; use a ClickableComponent instead."), Cn.prototype.addChild.call(this, e, t)
        }, n.enable = function () {
            e.prototype.enable.call(this), this.el_.removeAttribute("disabled")
        }, n.disable = function () {
            e.prototype.disable.call(this), this.el_.setAttribute("disabled", "disabled")
        }, n.handleKeyDown = function (t) {
            g.a.isEventKey(t, "Space") || g.a.isEventKey(t, "Enter") ? t.stopPropagation() : e.prototype.handleKeyDown.call(this, t)
        }, t
    }(ir);
    Cn.registerComponent("Button", cr);
    var hr = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).mouseused_ = !1, i.on("mousedown", i.handleMouseDown), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-big-play-button"
        }, n.handleClick = function (e) {
            var t = this.player_.play();
            if (this.mouseused_ && e.clientX && e.clientY) {
                var n = this.player_.usingPlugin("eme") && this.player_.eme.sessions && this.player_.eme.sessions.length > 0;
                return oi(t), void (!this.player_.tech(!0) || (jn || Un) && n || this.player_.tech(!0).focus())
            }
            var i = this.player_.getChild("controlBar"), r = i && i.getChild("playToggle");
            if (r) {
                var s = function () {
                    return r.focus()
                };
                ai(t) ? t.then(s, (function () {
                })) : this.setTimeout(s, 1)
            } else this.player_.tech(!0).focus()
        }, n.handleKeyDown = function (t) {
            this.mouseused_ = !1, e.prototype.handleKeyDown.call(this, t)
        }, n.handleMouseDown = function (e) {
            this.mouseused_ = !0
        }, t
    }(cr);
    hr.prototype.controlText_ = "Play Video", Cn.registerComponent("BigPlayButton", hr);
    var dr = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).controlText(n && n.controlText || i.localize("Close")), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-close-button " + e.prototype.buildCSSClass.call(this)
        }, n.handleClick = function (e) {
            this.trigger({type: "close", bubbles: !1})
        }, n.handleKeyDown = function (t) {
            g.a.isEventKey(t, "Esc") ? (t.preventDefault(), t.stopPropagation(), this.trigger("click")) : e.prototype.handleKeyDown.call(this, t)
        }, t
    }(cr);
    Cn.registerComponent("CloseButton", dr);
    var fr = function (e) {
        function t(t, n) {
            var i;
            return void 0 === n && (n = {}), i = e.call(this, t, n) || this, n.replay = void 0 === n.replay || n.replay, i.on(t, "play", i.handlePlay), i.on(t, "pause", i.handlePause), n.replay && i.on(t, "ended", i.handleEnded), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-play-control " + e.prototype.buildCSSClass.call(this)
        }, n.handleClick = function (e) {
            this.player_.paused() ? this.player_.play() : this.player_.pause()
        }, n.handleSeeked = function (e) {
            this.removeClass("vjs-ended"), this.player_.paused() ? this.handlePause(e) : this.handlePlay(e)
        }, n.handlePlay = function (e) {
            this.removeClass("vjs-ended"), this.removeClass("vjs-paused"), this.addClass("vjs-playing"), this.controlText("Pause")
        }, n.handlePause = function (e) {
            this.removeClass("vjs-playing"), this.addClass("vjs-paused"), this.controlText("Play")
        }, n.handleEnded = function (e) {
            this.removeClass("vjs-playing"), this.addClass("vjs-ended"), this.controlText("Replay"), this.one(this.player_, "seeked", this.handleSeeked)
        }, t
    }(cr);
    fr.prototype.controlText_ = "Play", Cn.registerComponent("PlayToggle", fr);
    var pr = function (e, t) {
        e = e < 0 ? 0 : e;
        var n = Math.floor(e % 60), i = Math.floor(e / 60 % 60), r = Math.floor(e / 3600), s = Math.floor(t / 60 % 60), a = Math.floor(t / 3600);
        return (isNaN(e) || e === 1 / 0) && (r = i = n = "-"), (r = r > 0 || a > 0 ? r + ":" : "") + (i = ((r || s >= 10) && i < 10 ? "0" + i : i) + ":") + (n = n < 10 ? "0" + n : n)
    }, mr = pr;

    function gr(e, t) {
        return void 0 === t && (t = e), mr(e, t)
    }

    var vr = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).on(t, ["timeupdate", "ended"], i.updateContent), i.updateTextNode_(), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function () {
            var t = this.buildCSSClass(), n = e.prototype.createEl.call(this, "div", {className: t + " vjs-time-control vjs-control", innerHTML: '<span class="vjs-control-text" role="presentation">' + this.localize(this.labelText_) + " </span>"});
            return this.contentEl_ = ut("span", {className: t + "-display"}, {"aria-live": "off", role: "presentation"}), n.appendChild(this.contentEl_), n
        }, n.dispose = function () {
            this.contentEl_ = null, this.textNode_ = null, e.prototype.dispose.call(this)
        }, n.updateTextNode_ = function (e) {
            var t = this;
            void 0 === e && (e = 0), e = gr(e), this.formattedTime_ !== e && (this.formattedTime_ = e, this.requestAnimationFrame((function () {
                if (t.contentEl_) {
                    var e = t.textNode_;
                    t.textNode_ = a.a.createTextNode(t.formattedTime_), t.textNode_ && (e ? t.contentEl_.replaceChild(t.textNode_, e) : t.contentEl_.appendChild(t.textNode_))
                }
            })))
        }, n.updateContent = function (e) {
        }, t
    }(Cn);
    vr.prototype.labelText_ = "Time", vr.prototype.controlText_ = "Time", Cn.registerComponent("TimeDisplay", vr);
    var yr = function (e) {
        function t() {
            return e.apply(this, arguments) || this
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-current-time"
        }, n.updateContent = function (e) {
            var t;
            t = this.player_.ended() ? this.player_.duration() : this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime(), this.updateTextNode_(t)
        }, t
    }(vr);
    yr.prototype.labelText_ = "Current Time", yr.prototype.controlText_ = "Current Time", Cn.registerComponent("CurrentTimeDisplay", yr);
    var _r = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).on(t, "durationchange", i.updateContent), i.on(t, "loadstart", i.updateContent), i.on(t, "loadedmetadata", i.updateContent), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-duration"
        }, n.updateContent = function (e) {
            var t = this.player_.duration();
            this.updateTextNode_(t)
        }, t
    }(vr);
    _r.prototype.labelText_ = "Duration", _r.prototype.controlText_ = "Duration", Cn.registerComponent("DurationDisplay", _r);
    var br = function (e) {
        function t() {
            return e.apply(this, arguments) || this
        }

        return d()(t, e), t.prototype.createEl = function () {
            return e.prototype.createEl.call(this, "div", {className: "vjs-time-control vjs-time-divider", innerHTML: "<div><span>/</span></div>"}, {"aria-hidden": !0})
        }, t
    }(Cn);
    Cn.registerComponent("TimeDivider", br);
    var Tr = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).on(t, "durationchange", i.updateContent), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-remaining-time"
        }, n.createEl = function () {
            var t = e.prototype.createEl.call(this);
            return t.insertBefore(ut("span", {}, {"aria-hidden": !0}, "-"), this.contentEl_), t
        }, n.updateContent = function (e) {
            var t;
            "number" == typeof this.player_.duration() && (t = this.player_.ended() ? 0 : this.player_.remainingTimeDisplay ? this.player_.remainingTimeDisplay() : this.player_.remainingTime(), this.updateTextNode_(t))
        }, t
    }(vr);
    Tr.prototype.labelText_ = "Remaining Time", Tr.prototype.controlText_ = "Remaining Time", Cn.registerComponent("RemainingTimeDisplay", Tr);
    var wr = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).updateShowing(), i.on(i.player(), "durationchange", i.updateShowing), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function () {
            var t = e.prototype.createEl.call(this, "div", {className: "vjs-live-control vjs-control"});
            return this.contentEl_ = ut("div", {className: "vjs-live-display", innerHTML: '<span class="vjs-control-text">' + this.localize("Stream Type") + " </span>" + this.localize("LIVE")}, {"aria-live": "off"}), t.appendChild(this.contentEl_), t
        }, n.dispose = function () {
            this.contentEl_ = null, e.prototype.dispose.call(this)
        }, n.updateShowing = function (e) {
            this.player().duration() === 1 / 0 ? this.show() : this.hide()
        }, t
    }(Cn);
    Cn.registerComponent("LiveDisplay", wr);
    var Sr = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).updateLiveEdgeStatus(), i.player_.liveTracker && i.on(i.player_.liveTracker, "liveedgechange", i.updateLiveEdgeStatus), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function () {
            var t = e.prototype.createEl.call(this, "button", {className: "vjs-seek-to-live-control vjs-control"});
            return this.textEl_ = ut("span", {className: "vjs-seek-to-live-text", innerHTML: this.localize("LIVE")}, {"aria-hidden": "true"}), t.appendChild(this.textEl_), t
        }, n.updateLiveEdgeStatus = function () {
            !this.player_.liveTracker || this.player_.liveTracker.atLiveEdge() ? (this.setAttribute("aria-disabled", !0), this.addClass("vjs-at-live-edge"), this.controlText("Seek to live, currently playing live")) : (this.setAttribute("aria-disabled", !1), this.removeClass("vjs-at-live-edge"), this.controlText("Seek to live, currently behind live"))
        }, n.handleClick = function () {
            this.player_.liveTracker.seekToLiveEdge()
        }, n.dispose = function () {
            this.player_.liveTracker && this.off(this.player_.liveTracker, "liveedgechange", this.updateLiveEdgeStatus), this.textEl_ = null, e.prototype.dispose.call(this)
        }, t
    }(cr);
    Sr.prototype.controlText_ = "Seek to live, currently playing live", Cn.registerComponent("SeekToLive", Sr);
    var Er = function (e, t, n) {
        return e = Number(e), Math.min(n, Math.max(t, isNaN(e) ? t : e))
    }, Cr = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).bar = i.getChild(i.options_.barName), i.vertical(!!i.options_.vertical), i.enable(), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.enabled = function () {
            return this.enabled_
        }, n.enable = function () {
            this.enabled() || (this.on("mousedown", this.handleMouseDown), this.on("touchstart", this.handleMouseDown), this.on("keydown", this.handleKeyDown), this.on("click", this.handleClick), this.on(this.player_, "controlsvisible", this.update), this.playerEvent && this.on(this.player_, this.playerEvent, this.update), this.removeClass("disabled"), this.setAttribute("tabindex", 0), this.enabled_ = !0)
        }, n.disable = function () {
            if (this.enabled()) {
                var e = this.bar.el_.ownerDocument;
                this.off("mousedown", this.handleMouseDown), this.off("touchstart", this.handleMouseDown), this.off("keydown", this.handleKeyDown), this.off("click", this.handleClick), this.off(this.player_, "controlsvisible", this.update), this.off(e, "mousemove", this.handleMouseMove), this.off(e, "mouseup", this.handleMouseUp), this.off(e, "touchmove", this.handleMouseMove), this.off(e, "touchend", this.handleMouseUp), this.removeAttribute("tabindex"), this.addClass("disabled"), this.playerEvent && this.off(this.player_, this.playerEvent, this.update), this.enabled_ = !1
            }
        }, n.createEl = function (t, n, i) {
            return void 0 === n && (n = {}), void 0 === i && (i = {}), n.className = n.className + " vjs-slider", n = Ze({tabIndex: 0}, n), i = Ze({role: "slider", "aria-valuenow": 0, "aria-valuemin": 0, "aria-valuemax": 100, tabIndex: 0}, i), e.prototype.createEl.call(this, t, n, i)
        }, n.handleMouseDown = function (e) {
            var t = this.bar.el_.ownerDocument;
            "mousedown" === e.type && e.preventDefault(), "touchstart" !== e.type || Mn || e.preventDefault(), Tt(), this.addClass("vjs-sliding"), this.trigger("slideractive"), this.on(t, "mousemove", this.handleMouseMove), this.on(t, "mouseup", this.handleMouseUp), this.on(t, "touchmove", this.handleMouseMove), this.on(t, "touchend", this.handleMouseUp), this.handleMouseMove(e)
        }, n.handleMouseMove = function (e) {
        }, n.handleMouseUp = function () {
            var e = this.bar.el_.ownerDocument;
            wt(), this.removeClass("vjs-sliding"), this.trigger("sliderinactive"), this.off(e, "mousemove", this.handleMouseMove), this.off(e, "mouseup", this.handleMouseUp), this.off(e, "touchmove", this.handleMouseMove), this.off(e, "touchend", this.handleMouseUp), this.update()
        }, n.update = function () {
            var e = this;
            if (this.el_ && this.bar) {
                var t = this.getProgress();
                return t === this.progress_ ? t : (this.progress_ = t, this.requestAnimationFrame((function () {
                    var n = e.vertical() ? "height" : "width";
                    e.bar.el().style[n] = (100 * t).toFixed(2) + "%"
                })), t)
            }
        }, n.getProgress = function () {
            return Number(Er(this.getPercent(), 0, 1).toFixed(4))
        }, n.calculateDistance = function (e) {
            var t = Ct(this.el_, e);
            return this.vertical() ? t.y : t.x
        }, n.handleKeyDown = function (t) {
            g.a.isEventKey(t, "Left") || g.a.isEventKey(t, "Down") ? (t.preventDefault(), t.stopPropagation(), this.stepBack()) : g.a.isEventKey(t, "Right") || g.a.isEventKey(t, "Up") ? (t.preventDefault(), t.stopPropagation(), this.stepForward()) : e.prototype.handleKeyDown.call(this, t)
        }, n.handleClick = function (e) {
            e.stopPropagation(), e.preventDefault()
        }, n.vertical = function (e) {
            if (void 0 === e) return this.vertical_ || !1;
            this.vertical_ = !!e, this.vertical_ ? this.addClass("vjs-slider-vertical") : this.addClass("vjs-slider-horizontal")
        }, t
    }(Cn);
    Cn.registerComponent("Slider", Cr);
    var kr = function (e, t) {
        return Er(e / t * 100, 0, 100).toFixed(2) + "%"
    }, xr = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).partEls_ = [], i.on(t, "progress", i.update), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function () {
            var t = e.prototype.createEl.call(this, "div", {className: "vjs-load-progress"}), n = ut("span", {className: "vjs-control-text"}), i = ut("span", {textContent: this.localize("Loaded")}), r = a.a.createTextNode(": ");
            return this.percentageEl_ = ut("span", {className: "vjs-control-text-loaded-percentage", textContent: "0%"}), t.appendChild(n), n.appendChild(i), n.appendChild(r), n.appendChild(this.percentageEl_), t
        }, n.dispose = function () {
            this.partEls_ = null, this.percentageEl_ = null, e.prototype.dispose.call(this)
        }, n.update = function (e) {
            var t = this;
            this.requestAnimationFrame((function () {
                var e = t.player_.liveTracker, n = t.player_.buffered(), i = e && e.isLive() ? e.seekableEnd() : t.player_.duration(), r = t.player_.bufferedEnd(), s = t.partEls_, a = kr(r, i);
                t.percent_ !== a && (t.el_.style.width = a, ct(t.percentageEl_, a), t.percent_ = a);
                for (var o = 0; o < n.length; o++) {
                    var l = n.start(o), u = n.end(o), c = s[o];
                    c || (c = t.el_.appendChild(ut()), s[o] = c), c.dataset.start === l && c.dataset.end === u || (c.dataset.start = l, c.dataset.end = u, c.style.left = kr(l, r), c.style.width = kr(u - l, r))
                }
                for (var h = s.length; h > n.length; h--) t.el_.removeChild(s[h - 1]);
                s.length = n.length
            }))
        }, t
    }(Cn);
    Cn.registerComponent("LoadProgressBar", xr);
    var Ar = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).update = ln(on(c()(i), i.update), an), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function () {
            return e.prototype.createEl.call(this, "div", {className: "vjs-time-tooltip"}, {"aria-hidden": "true"})
        }, n.update = function (e, t, n) {
            var i = St(this.el_), r = St(this.player_.el()), s = e.width * t;
            if (r && i) {
                var a = e.left - r.left + s, o = e.width - s + (r.right - e.right), l = i.width / 2;
                a < l ? l += l - a : o < l && (l = o), l < 0 ? l = 0 : l > i.width && (l = i.width), this.el_.style.right = "-" + l + "px", this.write(n)
            }
        }, n.write = function (e) {
            ct(this.el_, e)
        }, n.updateTime = function (e, t, n, i) {
            var r = this;
            this.rafId_ && this.cancelAnimationFrame(this.rafId_), this.rafId_ = this.requestAnimationFrame((function () {
                var s, a = r.player_.duration();
                if (r.player_.liveTracker && r.player_.liveTracker.isLive()) {
                    var o = r.player_.liveTracker.liveWindow(), l = o - t * o;
                    s = (l < 1 ? "" : "-") + gr(l, o)
                } else s = gr(n, a);
                r.update(e, t, s), i && i()
            }))
        }, t
    }(Cn);
    Cn.registerComponent("TimeTooltip", Ar);
    var Dr = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).update = ln(on(c()(i), i.update), an), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function () {
            return e.prototype.createEl.call(this, "div", {className: "vjs-play-progress vjs-slider-bar"}, {"aria-hidden": "true"})
        }, n.update = function (e, t) {
            var n = this.getChild("timeTooltip");
            if (n) {
                var i = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime();
                n.updateTime(e, t, i)
            }
        }, t
    }(Cn);
    Dr.prototype.options_ = {children: []}, zn || On || Dr.prototype.options_.children.push("timeTooltip"), Cn.registerComponent("PlayProgressBar", Dr);
    var Ir = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).update = ln(on(c()(i), i.update), an), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function () {
            return e.prototype.createEl.call(this, "div", {className: "vjs-mouse-display"})
        }, n.update = function (e, t) {
            var n = this, i = t * this.player_.duration();
            this.getChild("timeTooltip").updateTime(e, t, i, (function () {
                n.el_.style.left = e.width * t + "px"
            }))
        }, t
    }(Cn);
    Ir.prototype.options_ = {children: ["timeTooltip"]}, Cn.registerComponent("MouseTimeDisplay", Ir);
    var Pr = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).setEventHandlers_(), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.setEventHandlers_ = function () {
            this.update_ = on(this, this.update), this.update = ln(this.update_, an), this.on(this.player_, ["ended", "durationchange", "timeupdate"], this.update), this.player_.liveTracker && this.on(this.player_.liveTracker, "liveedgechange", this.update), this.updateInterval = null, this.on(this.player_, ["playing"], this.enableInterval_), this.on(this.player_, ["ended", "pause", "waiting"], this.disableInterval_), "hidden" in a.a && "visibilityState" in a.a && this.on(a.a, "visibilitychange", this.toggleVisibility_)
        }, n.toggleVisibility_ = function (e) {
            a.a.hidden ? this.disableInterval_(e) : (this.enableInterval_(), this.update())
        }, n.enableInterval_ = function () {
            this.updateInterval || (this.updateInterval = this.setInterval(this.update, an))
        }, n.disableInterval_ = function (e) {
            this.player_.liveTracker && this.player_.liveTracker.isLive() && e && "ended" !== e.type || this.updateInterval && (this.clearInterval(this.updateInterval), this.updateInterval = null)
        }, n.createEl = function () {
            return e.prototype.createEl.call(this, "div", {className: "vjs-progress-holder"}, {"aria-label": this.localize("Progress Bar")})
        }, n.update = function (t) {
            var n = this, i = e.prototype.update.call(this);
            return this.requestAnimationFrame((function () {
                var e = n.player_.ended() ? n.player_.duration() : n.getCurrentTime_(), t = n.player_.liveTracker, r = n.player_.duration();
                t && t.isLive() && (r = n.player_.liveTracker.liveCurrentTime()), n.percent_ !== i && (n.el_.setAttribute("aria-valuenow", (100 * i).toFixed(2)), n.percent_ = i), n.currentTime_ === e && n.duration_ === r || (n.el_.setAttribute("aria-valuetext", n.localize("progress bar timing: currentTime={1} duration={2}", [gr(e, r), gr(r, r)], "{1} of {2}")), n.currentTime_ = e, n.duration_ = r), n.bar && n.bar.update(St(n.el()), n.getProgress())
            })), i
        }, n.getCurrentTime_ = function () {
            return this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime()
        }, n.getPercent = function () {
            var e, t = this.getCurrentTime_(), n = this.player_.liveTracker;
            return n && n.isLive() ? (e = (t - n.seekableStart()) / n.liveWindow(), n.atLiveEdge() && (e = 1)) : e = t / this.player_.duration(), e
        }, n.handleMouseDown = function (t) {
            Pt(t) && (t.stopPropagation(), this.player_.scrubbing(!0), this.videoWasPlaying = !this.player_.paused(), this.player_.pause(), e.prototype.handleMouseDown.call(this, t))
        }, n.handleMouseMove = function (e) {
            if (Pt(e)) {
                var t, n = this.calculateDistance(e), i = this.player_.liveTracker;
                if (i && i.isLive()) {
                    if (n >= .99) return void i.seekToLiveEdge();
                    var r = i.seekableStart(), s = i.liveCurrentTime();
                    if ((t = r + n * i.liveWindow()) >= s && (t = s), t <= r && (t = r + .1), t === 1 / 0) return
                } else (t = n * this.player_.duration()) === this.player_.duration() && (t -= .1);
                this.player_.currentTime(t)
            }
        }, n.enable = function () {
            e.prototype.enable.call(this);
            var t = this.getChild("mouseTimeDisplay");
            t && t.show()
        }, n.disable = function () {
            e.prototype.disable.call(this);
            var t = this.getChild("mouseTimeDisplay");
            t && t.hide()
        }, n.handleMouseUp = function (t) {
            e.prototype.handleMouseUp.call(this, t), t && t.stopPropagation(), this.player_.scrubbing(!1), this.player_.trigger({type: "timeupdate", target: this, manuallyTriggered: !0}), this.videoWasPlaying ? oi(this.player_.play()) : this.update_()
        }, n.stepForward = function () {
            this.player_.currentTime(this.player_.currentTime() + 5)
        }, n.stepBack = function () {
            this.player_.currentTime(this.player_.currentTime() - 5)
        }, n.handleAction = function (e) {
            this.player_.paused() ? this.player_.play() : this.player_.pause()
        }, n.handleKeyDown = function (t) {
            if (g.a.isEventKey(t, "Space") || g.a.isEventKey(t, "Enter")) t.preventDefault(), t.stopPropagation(), this.handleAction(t); else if (g.a.isEventKey(t, "Home")) t.preventDefault(), t.stopPropagation(), this.player_.currentTime(0); else if (g.a.isEventKey(t, "End")) t.preventDefault(), t.stopPropagation(), this.player_.currentTime(this.player_.duration()); else if (/^[0-9]$/.test(g()(t))) {
                t.preventDefault(), t.stopPropagation();
                var n = 10 * (g.a.codes[g()(t)] - g.a.codes[0]) / 100;
                this.player_.currentTime(this.player_.duration() * n)
            } else g.a.isEventKey(t, "PgDn") ? (t.preventDefault(), t.stopPropagation(), this.player_.currentTime(this.player_.currentTime() - 60)) : g.a.isEventKey(t, "PgUp") ? (t.preventDefault(), t.stopPropagation(), this.player_.currentTime(this.player_.currentTime() + 60)) : e.prototype.handleKeyDown.call(this, t)
        }, n.dispose = function () {
            this.disableInterval_(), this.off(this.player_, ["ended", "durationchange", "timeupdate"], this.update), this.player_.liveTracker && this.on(this.player_.liveTracker, "liveedgechange", this.update), this.off(this.player_, ["playing"], this.enableInterval_), this.off(this.player_, ["ended", "pause", "waiting"], this.disableInterval_), "hidden" in a.a && "visibilityState" in a.a && this.off(a.a, "visibilitychange", this.toggleVisibility_), e.prototype.dispose.call(this)
        }, t
    }(Cr);
    Pr.prototype.options_ = {children: ["loadProgressBar", "playProgressBar"], barName: "playProgressBar"}, zn || On || Pr.prototype.options_.children.splice(1, 0, "mouseTimeDisplay"), Cn.registerComponent("SeekBar", Pr);
    var Or = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).handleMouseMove = ln(on(c()(i), i.handleMouseMove), an), i.throttledHandleMouseSeek = ln(on(c()(i), i.handleMouseSeek), an), i.enable(), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function () {
            return e.prototype.createEl.call(this, "div", {className: "vjs-progress-control vjs-control"})
        }, n.handleMouseMove = function (e) {
            var t = this.getChild("seekBar");
            if (t) {
                var n = t.getChild("playProgressBar"), i = t.getChild("mouseTimeDisplay");
                if (n || i) {
                    var r = t.el(), s = St(r), a = Ct(r, e).x;
                    a = Er(0, 1, a), i && i.update(s, a), n && n.update(s, t.getProgress())
                }
            }
        }, n.handleMouseSeek = function (e) {
            var t = this.getChild("seekBar");
            t && t.handleMouseMove(e)
        }, n.enabled = function () {
            return this.enabled_
        }, n.disable = function () {
            this.children().forEach((function (e) {
                return e.disable && e.disable()
            })), this.enabled() && (this.off(["mousedown", "touchstart"], this.handleMouseDown), this.off(this.el_, "mousemove", this.handleMouseMove), this.handleMouseUp(), this.addClass("disabled"), this.enabled_ = !1)
        }, n.enable = function () {
            this.children().forEach((function (e) {
                return e.enable && e.enable()
            })), this.enabled() || (this.on(["mousedown", "touchstart"], this.handleMouseDown), this.on(this.el_, "mousemove", this.handleMouseMove), this.removeClass("disabled"), this.enabled_ = !0)
        }, n.handleMouseDown = function (e) {
            var t = this.el_.ownerDocument, n = this.getChild("seekBar");
            n && n.handleMouseDown(e), this.on(t, "mousemove", this.throttledHandleMouseSeek), this.on(t, "touchmove", this.throttledHandleMouseSeek), this.on(t, "mouseup", this.handleMouseUp), this.on(t, "touchend", this.handleMouseUp)
        }, n.handleMouseUp = function (e) {
            var t = this.el_.ownerDocument, n = this.getChild("seekBar");
            n && n.handleMouseUp(e), this.off(t, "mousemove", this.throttledHandleMouseSeek), this.off(t, "touchmove", this.throttledHandleMouseSeek), this.off(t, "mouseup", this.handleMouseUp), this.off(t, "touchend", this.handleMouseUp)
        }, t
    }(Cn);
    Or.prototype.options_ = {children: ["seekBar"]}, Cn.registerComponent("ProgressControl", Or);
    var Lr = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).on(t, ["enterpictureinpicture", "leavepictureinpicture"], i.handlePictureInPictureChange), a.a.pictureInPictureEnabled || i.disable(), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-picture-in-picture-control " + e.prototype.buildCSSClass.call(this)
        }, n.handlePictureInPictureChange = function (e) {
            this.player_.isInPictureInPicture() ? this.controlText("Exit Picture-in-Picture") : this.controlText("Picture-in-Picture")
        }, n.handleClick = function (e) {
            this.player_.isInPictureInPicture() ? this.player_.exitPictureInPicture() : this.player_.requestPictureInPicture()
        }, t
    }(cr);
    Lr.prototype.controlText_ = "Picture-in-Picture", Cn.registerComponent("PictureInPictureToggle", Lr);
    var Nr = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).on(t, "fullscreenchange", i.handleFullscreenChange), !1 === a.a[t.fsApi_.fullscreenEnabled] && i.disable(), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-fullscreen-control " + e.prototype.buildCSSClass.call(this)
        }, n.handleFullscreenChange = function (e) {
            this.player_.isFullscreen() ? this.controlText("Non-Fullscreen") : this.controlText("Fullscreen")
        }, n.handleClick = function (e) {
            this.player_.isFullscreen() ? this.player_.exitFullscreen() : this.player_.requestFullscreen()
        }, t
    }(cr);
    Nr.prototype.controlText_ = "Fullscreen", Cn.registerComponent("FullscreenToggle", Nr);
    var Rr = function (e, t) {
        t.tech_ && !t.tech_.featuresVolumeControl && e.addClass("vjs-hidden"), e.on(t, "loadstart", (function () {
            t.tech_.featuresVolumeControl ? e.removeClass("vjs-hidden") : e.addClass("vjs-hidden")
        }))
    }, Ur = function (e) {
        function t() {
            return e.apply(this, arguments) || this
        }

        return d()(t, e), t.prototype.createEl = function () {
            return e.prototype.createEl.call(this, "div", {className: "vjs-volume-level", innerHTML: '<span class="vjs-control-text"></span>'})
        }, t
    }(Cn);
    Cn.registerComponent("VolumeLevel", Ur);
    var Mr = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).on("slideractive", i.updateLastVolume_), i.on(t, "volumechange", i.updateARIAAttributes), t.ready((function () {
                return i.updateARIAAttributes()
            })), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function () {
            return e.prototype.createEl.call(this, "div", {className: "vjs-volume-bar vjs-slider-bar"}, {"aria-label": this.localize("Volume Level"), "aria-live": "polite"})
        }, n.handleMouseDown = function (t) {
            Pt(t) && e.prototype.handleMouseDown.call(this, t)
        }, n.handleMouseMove = function (e) {
            Pt(e) && (this.checkMuted(), this.player_.volume(this.calculateDistance(e)))
        }, n.checkMuted = function () {
            this.player_.muted() && this.player_.muted(!1)
        }, n.getPercent = function () {
            return this.player_.muted() ? 0 : this.player_.volume()
        }, n.stepForward = function () {
            this.checkMuted(), this.player_.volume(this.player_.volume() + .1)
        }, n.stepBack = function () {
            this.checkMuted(), this.player_.volume(this.player_.volume() - .1)
        }, n.updateARIAAttributes = function (e) {
            var t = this.player_.muted() ? 0 : this.volumeAsPercentage_();
            this.el_.setAttribute("aria-valuenow", t), this.el_.setAttribute("aria-valuetext", t + "%")
        }, n.volumeAsPercentage_ = function () {
            return Math.round(100 * this.player_.volume())
        }, n.updateLastVolume_ = function () {
            var e = this, t = this.player_.volume();
            this.one("sliderinactive", (function () {
                0 === e.player_.volume() && e.player_.lastVolume_(t)
            }))
        }, t
    }(Cr);
    Mr.prototype.options_ = {children: ["volumeLevel"], barName: "volumeLevel"}, Mr.prototype.playerEvent = "volumechange", Cn.registerComponent("VolumeBar", Mr);
    var Br = function (e) {
        function t(t, n) {
            var i;
            return void 0 === n && (n = {}), n.vertical = n.vertical || !1, (void 0 === n.volumeBar || tt(n.volumeBar)) && (n.volumeBar = n.volumeBar || {}, n.volumeBar.vertical = n.vertical), i = e.call(this, t, n) || this, Rr(c()(i), t), i.throttledHandleMouseMove = ln(on(c()(i), i.handleMouseMove), an), i.on("mousedown", i.handleMouseDown), i.on("touchstart", i.handleMouseDown), i.on(i.volumeBar, ["focus", "slideractive"], (function () {
                i.volumeBar.addClass("vjs-slider-active"), i.addClass("vjs-slider-active"), i.trigger("slideractive")
            })), i.on(i.volumeBar, ["blur", "sliderinactive"], (function () {
                i.volumeBar.removeClass("vjs-slider-active"), i.removeClass("vjs-slider-active"), i.trigger("sliderinactive")
            })), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function () {
            var t = "vjs-volume-horizontal";
            return this.options_.vertical && (t = "vjs-volume-vertical"), e.prototype.createEl.call(this, "div", {className: "vjs-volume-control vjs-control " + t})
        }, n.handleMouseDown = function (e) {
            var t = this.el_.ownerDocument;
            this.on(t, "mousemove", this.throttledHandleMouseMove), this.on(t, "touchmove", this.throttledHandleMouseMove), this.on(t, "mouseup", this.handleMouseUp), this.on(t, "touchend", this.handleMouseUp)
        }, n.handleMouseUp = function (e) {
            var t = this.el_.ownerDocument;
            this.off(t, "mousemove", this.throttledHandleMouseMove), this.off(t, "touchmove", this.throttledHandleMouseMove), this.off(t, "mouseup", this.handleMouseUp), this.off(t, "touchend", this.handleMouseUp)
        }, n.handleMouseMove = function (e) {
            this.volumeBar.handleMouseMove(e)
        }, t
    }(Cn);
    Br.prototype.options_ = {children: ["volumeBar"]}, Cn.registerComponent("VolumeControl", Br);
    var jr = function (e, t) {
        t.tech_ && !t.tech_.featuresMuteControl && e.addClass("vjs-hidden"), e.on(t, "loadstart", (function () {
            t.tech_.featuresMuteControl ? e.removeClass("vjs-hidden") : e.addClass("vjs-hidden")
        }))
    }, Fr = function (e) {
        function t(t, n) {
            var i;
            return i = e.call(this, t, n) || this, jr(c()(i), t), i.on(t, ["loadstart", "volumechange"], i.update), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-mute-control " + e.prototype.buildCSSClass.call(this)
        }, n.handleClick = function (e) {
            var t = this.player_.volume(), n = this.player_.lastVolume_();
            if (0 === t) {
                var i = n < .1 ? .1 : n;
                this.player_.volume(i), this.player_.muted(!1)
            } else this.player_.muted(!this.player_.muted())
        }, n.update = function (e) {
            this.updateIcon_(), this.updateControlText_()
        }, n.updateIcon_ = function () {
            var e = this.player_.volume(), t = 3;
            zn && this.player_.tech_ && this.player_.tech_.el_ && this.player_.muted(this.player_.tech_.el_.muted), 0 === e || this.player_.muted() ? t = 0 : e < .33 ? t = 1 : e < .67 && (t = 2);
            for (var n = 0; n < 4; n++) pt(this.el_, "vjs-vol-" + n);
            ft(this.el_, "vjs-vol-" + t)
        }, n.updateControlText_ = function () {
            var e = this.player_.muted() || 0 === this.player_.volume() ? "Unmute" : "Mute";
            this.controlText() !== e && this.controlText(e)
        }, t
    }(cr);
    Fr.prototype.controlText_ = "Mute", Cn.registerComponent("MuteToggle", Fr);
    var Hr = function (e) {
        function t(t, n) {
            var i;
            return void 0 === n && (n = {}), void 0 !== n.inline ? n.inline = n.inline : n.inline = !0, (void 0 === n.volumeControl || tt(n.volumeControl)) && (n.volumeControl = n.volumeControl || {}, n.volumeControl.vertical = !n.inline), (i = e.call(this, t, n) || this).on(t, ["loadstart"], i.volumePanelState_), i.on(i.muteToggle, "keyup", i.handleKeyPress), i.on(i.volumeControl, "keyup", i.handleVolumeControlKeyUp), i.on("keydown", i.handleKeyPress), i.on("mouseover", i.handleMouseOver), i.on("mouseout", i.handleMouseOut), i.on(i.volumeControl, ["slideractive"], i.sliderActive_), i.on(i.volumeControl, ["sliderinactive"], i.sliderInactive_), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.sliderActive_ = function () {
            this.addClass("vjs-slider-active")
        }, n.sliderInactive_ = function () {
            this.removeClass("vjs-slider-active")
        }, n.volumePanelState_ = function () {
            this.volumeControl.hasClass("vjs-hidden") && this.muteToggle.hasClass("vjs-hidden") && this.addClass("vjs-hidden"), this.volumeControl.hasClass("vjs-hidden") && !this.muteToggle.hasClass("vjs-hidden") && this.addClass("vjs-mute-toggle-only")
        }, n.createEl = function () {
            var t = "vjs-volume-panel-horizontal";
            return this.options_.inline || (t = "vjs-volume-panel-vertical"), e.prototype.createEl.call(this, "div", {className: "vjs-volume-panel vjs-control " + t})
        }, n.dispose = function () {
            this.handleMouseOut(), e.prototype.dispose.call(this)
        }, n.handleVolumeControlKeyUp = function (e) {
            g.a.isEventKey(e, "Esc") && this.muteToggle.focus()
        }, n.handleMouseOver = function (e) {
            this.addClass("vjs-hover"), Jt(a.a, "keyup", on(this, this.handleKeyPress))
        }, n.handleMouseOut = function (e) {
            this.removeClass("vjs-hover"), Zt(a.a, "keyup", on(this, this.handleKeyPress))
        }, n.handleKeyPress = function (e) {
            g.a.isEventKey(e, "Esc") && this.handleMouseOut()
        }, t
    }(Cn);
    Hr.prototype.options_ = {children: ["muteToggle", "volumeControl"]}, Cn.registerComponent("VolumePanel", Hr);
    var qr = function (e) {
        function t(t, n) {
            var i;
            return i = e.call(this, t, n) || this, n && (i.menuButton_ = n.menuButton), i.focusedChild_ = -1, i.on("keydown", i.handleKeyDown), i.boundHandleBlur_ = on(c()(i), i.handleBlur), i.boundHandleTapClick_ = on(c()(i), i.handleTapClick), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.addEventListenerForItem = function (e) {
            e instanceof Cn && (this.on(e, "blur", this.boundHandleBlur_), this.on(e, ["tap", "click"], this.boundHandleTapClick_))
        }, n.removeEventListenerForItem = function (e) {
            e instanceof Cn && (this.off(e, "blur", this.boundHandleBlur_), this.off(e, ["tap", "click"], this.boundHandleTapClick_))
        }, n.removeChild = function (t) {
            "string" == typeof t && (t = this.getChild(t)), this.removeEventListenerForItem(t), e.prototype.removeChild.call(this, t)
        }, n.addItem = function (e) {
            var t = this.addChild(e);
            t && this.addEventListenerForItem(t)
        }, n.createEl = function () {
            var t = this.options_.contentElType || "ul";
            this.contentEl_ = ut(t, {className: "vjs-menu-content"}), this.contentEl_.setAttribute("role", "menu");
            var n = e.prototype.createEl.call(this, "div", {append: this.contentEl_, className: "vjs-menu"});
            return n.appendChild(this.contentEl_), Jt(n, "click", (function (e) {
                e.preventDefault(), e.stopImmediatePropagation()
            })), n
        }, n.dispose = function () {
            this.contentEl_ = null, this.boundHandleBlur_ = null, this.boundHandleTapClick_ = null, e.prototype.dispose.call(this)
        }, n.handleBlur = function (e) {
            var t = e.relatedTarget || a.a.activeElement;
            if (!this.children().some((function (e) {
                return e.el() === t
            }))) {
                var n = this.menuButton_;
                n && n.buttonPressed_ && t !== n.el().firstChild && n.unpressButton()
            }
        }, n.handleTapClick = function (e) {
            if (this.menuButton_) {
                this.menuButton_.unpressButton();
                var t = this.children();
                if (!Array.isArray(t)) return;
                var n = t.filter((function (t) {
                    return t.el() === e.target
                }))[0];
                if (!n) return;
                "CaptionSettingsMenuItem" !== n.name() && this.menuButton_.focus()
            }
        }, n.handleKeyDown = function (e) {
            g.a.isEventKey(e, "Left") || g.a.isEventKey(e, "Down") ? (e.preventDefault(), e.stopPropagation(), this.stepForward()) : (g.a.isEventKey(e, "Right") || g.a.isEventKey(e, "Up")) && (e.preventDefault(), e.stopPropagation(), this.stepBack())
        }, n.stepForward = function () {
            var e = 0;
            void 0 !== this.focusedChild_ && (e = this.focusedChild_ + 1), this.focus(e)
        }, n.stepBack = function () {
            var e = 0;
            void 0 !== this.focusedChild_ && (e = this.focusedChild_ - 1), this.focus(e)
        }, n.focus = function (e) {
            void 0 === e && (e = 0);
            var t = this.children().slice();
            t.length && t[0].className && /vjs-menu-title/.test(t[0].className) && t.shift(), t.length > 0 && (e < 0 ? e = 0 : e >= t.length && (e = t.length - 1), this.focusedChild_ = e, t[e].el_.focus())
        }, t
    }(Cn);
    Cn.registerComponent("Menu", qr);
    var Vr = function (e) {
        function t(t, n) {
            var i;
            void 0 === n && (n = {}), (i = e.call(this, t, n) || this).menuButton_ = new cr(t, n), i.menuButton_.controlText(i.controlText_), i.menuButton_.el_.setAttribute("aria-haspopup", "true");
            var r = cr.prototype.buildCSSClass();
            return i.menuButton_.el_.className = i.buildCSSClass() + " " + r, i.menuButton_.removeClass("vjs-control"), i.addChild(i.menuButton_), i.update(), i.enabled_ = !0, i.on(i.menuButton_, "tap", i.handleClick), i.on(i.menuButton_, "click", i.handleClick), i.on(i.menuButton_, "keydown", i.handleKeyDown), i.on(i.menuButton_, "mouseenter", (function () {
                i.addClass("vjs-hover"), i.menu.show(), Jt(a.a, "keyup", on(c()(i), i.handleMenuKeyUp))
            })), i.on("mouseleave", i.handleMouseLeave), i.on("keydown", i.handleSubmenuKeyDown), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.update = function () {
            var e = this.createMenu();
            this.menu && (this.menu.dispose(), this.removeChild(this.menu)), this.menu = e, this.addChild(e), this.buttonPressed_ = !1, this.menuButton_.el_.setAttribute("aria-expanded", "false"), this.items && this.items.length <= this.hideThreshold_ ? this.hide() : this.show()
        }, n.createMenu = function () {
            var e = new qr(this.player_, {menuButton: this});
            if (this.hideThreshold_ = 0, this.options_.title) {
                var t = ut("li", {className: "vjs-menu-title", innerHTML: Sn(this.options_.title), tabIndex: -1});
                this.hideThreshold_ += 1;
                var n = new Cn(this.player_, {el: t});
                e.addItem(n)
            }
            if (this.items = this.createItems(), this.items) for (var i = 0; i < this.items.length; i++) e.addItem(this.items[i]);
            return e
        }, n.createItems = function () {
        }, n.createEl = function () {
            return e.prototype.createEl.call(this, "div", {className: this.buildWrapperCSSClass()}, {})
        }, n.buildWrapperCSSClass = function () {
            var t = "vjs-menu-button";
            return !0 === this.options_.inline ? t += "-inline" : t += "-popup", "vjs-menu-button " + t + " " + cr.prototype.buildCSSClass() + " " + e.prototype.buildCSSClass.call(this)
        }, n.buildCSSClass = function () {
            var t = "vjs-menu-button";
            return !0 === this.options_.inline ? t += "-inline" : t += "-popup", "vjs-menu-button " + t + " " + e.prototype.buildCSSClass.call(this)
        }, n.controlText = function (e, t) {
            return void 0 === t && (t = this.menuButton_.el()), this.menuButton_.controlText(e, t)
        }, n.dispose = function () {
            this.handleMouseLeave(), e.prototype.dispose.call(this)
        }, n.handleClick = function (e) {
            this.buttonPressed_ ? this.unpressButton() : this.pressButton()
        }, n.handleMouseLeave = function (e) {
            this.removeClass("vjs-hover"), Zt(a.a, "keyup", on(this, this.handleMenuKeyUp))
        }, n.focus = function () {
            this.menuButton_.focus()
        }, n.blur = function () {
            this.menuButton_.blur()
        }, n.handleKeyDown = function (e) {
            g.a.isEventKey(e, "Esc") || g.a.isEventKey(e, "Tab") ? (this.buttonPressed_ && this.unpressButton(), g.a.isEventKey(e, "Tab") || (e.preventDefault(), this.menuButton_.focus())) : (g.a.isEventKey(e, "Up") || g.a.isEventKey(e, "Down")) && (this.buttonPressed_ || (e.preventDefault(), this.pressButton()))
        }, n.handleMenuKeyUp = function (e) {
            (g.a.isEventKey(e, "Esc") || g.a.isEventKey(e, "Tab")) && this.removeClass("vjs-hover")
        }, n.handleSubmenuKeyPress = function (e) {
            this.handleSubmenuKeyDown(e)
        }, n.handleSubmenuKeyDown = function (e) {
            (g.a.isEventKey(e, "Esc") || g.a.isEventKey(e, "Tab")) && (this.buttonPressed_ && this.unpressButton(), g.a.isEventKey(e, "Tab") || (e.preventDefault(), this.menuButton_.focus()))
        }, n.pressButton = function () {
            if (this.enabled_) {
                if (this.buttonPressed_ = !0, this.menu.show(), this.menu.lockShowing(), this.menuButton_.el_.setAttribute("aria-expanded", "true"), zn && ot()) return;
                this.menu.focus()
            }
        }, n.unpressButton = function () {
            this.enabled_ && (this.buttonPressed_ = !1, this.menu.unlockShowing(), this.menu.hide(), this.menuButton_.el_.setAttribute("aria-expanded", "false"))
        }, n.disable = function () {
            this.unpressButton(), this.enabled_ = !1, this.addClass("vjs-disabled"), this.menuButton_.disable()
        }, n.enable = function () {
            this.enabled_ = !0, this.removeClass("vjs-disabled"), this.menuButton_.enable()
        }, t
    }(Cn);
    Cn.registerComponent("MenuButton", Vr);
    var Wr = function (e) {
        function t(t, n) {
            var i, r = n.tracks;
            if ((i = e.call(this, t, n) || this).items.length <= 1 && i.hide(), !r) return c()(i);
            var s = on(c()(i), i.update);
            return r.addEventListener("removetrack", s), r.addEventListener("addtrack", s), i.player_.on("ready", s), i.player_.on("dispose", (function () {
                r.removeEventListener("removetrack", s), r.removeEventListener("addtrack", s)
            })), i
        }

        return d()(t, e), t
    }(Vr);
    Cn.registerComponent("TrackButton", Wr);
    var zr = ["Tab", "Esc", "Up", "Down", "Right", "Left"], Gr = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).selectable = n.selectable, i.isSelected_ = n.selected || !1, i.multiSelectable = n.multiSelectable, i.selected(i.isSelected_), i.selectable ? i.multiSelectable ? i.el_.setAttribute("role", "menuitemcheckbox") : i.el_.setAttribute("role", "menuitemradio") : i.el_.setAttribute("role", "menuitem"), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function (t, n, i) {
            return this.nonIconControl = !0, e.prototype.createEl.call(this, "li", Ze({className: "vjs-menu-item", innerHTML: '<span class="vjs-menu-item-text">' + this.localize(this.options_.label) + "</span>", tabIndex: -1}, n), i)
        }, n.handleKeyDown = function (t) {
            zr.some((function (e) {
                return g.a.isEventKey(t, e)
            })) || e.prototype.handleKeyDown.call(this, t)
        }, n.handleClick = function (e) {
            this.selected(!0)
        }, n.selected = function (e) {
            this.selectable && (e ? (this.addClass("vjs-selected"), this.el_.setAttribute("aria-checked", "true"), this.controlText(", selected"), this.isSelected_ = !0) : (this.removeClass("vjs-selected"), this.el_.setAttribute("aria-checked", "false"), this.controlText(""), this.isSelected_ = !1))
        }, t
    }(ir);
    Cn.registerComponent("MenuItem", Gr);
    var Yr = function (e) {
        function t(t, n) {
            var i, s = n.track, o = t.textTracks();
            n.label = s.label || s.language || "Unknown", n.selected = "showing" === s.mode, (i = e.call(this, t, n) || this).track = s, i.kinds = (n.kinds || [n.kind || i.track.kind]).filter(Boolean);
            var l, u = function () {
                for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
                i.handleTracksChange.apply(c()(i), t)
            }, h = function () {
                for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
                i.handleSelectedLanguageChange.apply(c()(i), t)
            };
            (t.on(["loadstart", "texttrackchange"], u), o.addEventListener("change", u), o.addEventListener("selectedlanguagechange", h), i.on("dispose", (function () {
                t.off(["loadstart", "texttrackchange"], u), o.removeEventListener("change", u), o.removeEventListener("selectedlanguagechange", h)
            })), void 0 === o.onchange) && i.on(["tap", "click"], (function () {
                if ("object" != typeof r.a.Event) try {
                    l = new r.a.Event("change")
                } catch (e) {
                }
                l || (l = a.a.createEvent("Event")).initEvent("change", !0, !0), o.dispatchEvent(l)
            }));
            return i.handleTracksChange(), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.handleClick = function (t) {
            var n = this.track, i = this.player_.textTracks();
            if (e.prototype.handleClick.call(this, t), i) for (var r = 0; r < i.length; r++) {
                var s = i[r];
                -1 !== this.kinds.indexOf(s.kind) && (s === n ? "showing" !== s.mode && (s.mode = "showing") : "disabled" !== s.mode && (s.mode = "disabled"))
            }
        }, n.handleTracksChange = function (e) {
            var t = "showing" === this.track.mode;
            t !== this.isSelected_ && this.selected(t)
        }, n.handleSelectedLanguageChange = function (e) {
            if ("showing" === this.track.mode) {
                var t = this.player_.cache_.selectedLanguage;
                if (t && t.enabled && t.language === this.track.language && t.kind !== this.track.kind) return;
                this.player_.cache_.selectedLanguage = {enabled: !0, language: this.track.language, kind: this.track.kind}
            }
        }, n.dispose = function () {
            this.track = null, e.prototype.dispose.call(this)
        }, t
    }(Gr);
    Cn.registerComponent("TextTrackMenuItem", Yr);
    var Xr = function (e) {
        function t(t, n) {
            return n.track = {player: t, kind: n.kind, kinds: n.kinds, default: !1, mode: "disabled"}, n.kinds || (n.kinds = [n.kind]), n.label ? n.track.label = n.label : n.track.label = n.kinds.join(" and ") + " off", n.selectable = !0, n.multiSelectable = !1, e.call(this, t, n) || this
        }

        d()(t, e);
        var n = t.prototype;
        return n.handleTracksChange = function (e) {
            for (var t = this.player().textTracks(), n = !0, i = 0, r = t.length; i < r; i++) {
                var s = t[i];
                if (this.options_.kinds.indexOf(s.kind) > -1 && "showing" === s.mode) {
                    n = !1;
                    break
                }
            }
            n !== this.isSelected_ && this.selected(n)
        }, n.handleSelectedLanguageChange = function (e) {
            for (var t = this.player().textTracks(), n = !0, i = 0, r = t.length; i < r; i++) {
                var s = t[i];
                if (["captions", "descriptions", "subtitles"].indexOf(s.kind) > -1 && "showing" === s.mode) {
                    n = !1;
                    break
                }
            }
            n && (this.player_.cache_.selectedLanguage = {enabled: !1})
        }, t
    }(Yr);
    Cn.registerComponent("OffTextTrackMenuItem", Xr);
    var Kr = function (e) {
        function t(t, n) {
            return void 0 === n && (n = {}), n.tracks = t.textTracks(), e.call(this, t, n) || this
        }

        return d()(t, e), t.prototype.createItems = function (e, t) {
            var n;
            void 0 === e && (e = []), void 0 === t && (t = Yr), this.label_ && (n = this.label_ + " off"), e.push(new Xr(this.player_, {kinds: this.kinds_, kind: this.kind_, label: n})), this.hideThreshold_ += 1;
            var i = this.player_.textTracks();
            Array.isArray(this.kinds_) || (this.kinds_ = [this.kind_]);
            for (var r = 0; r < i.length; r++) {
                var s = i[r];
                if (this.kinds_.indexOf(s.kind) > -1) {
                    var a = new t(this.player_, {track: s, kinds: this.kinds_, kind: this.kind_, selectable: !0, multiSelectable: !1});
                    a.addClass("vjs-" + s.kind + "-menu-item"), e.push(a)
                }
            }
            return e
        }, t
    }(Wr);
    Cn.registerComponent("TextTrackButton", Kr);
    var $r = function (e) {
        function t(t, n) {
            var i, r = n.track, s = n.cue, a = t.currentTime();
            return n.selectable = !0, n.multiSelectable = !1, n.label = s.text, n.selected = s.startTime <= a && a < s.endTime, (i = e.call(this, t, n) || this).track = r, i.cue = s, r.addEventListener("cuechange", on(c()(i), i.update)), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.handleClick = function (t) {
            e.prototype.handleClick.call(this), this.player_.currentTime(this.cue.startTime), this.update(this.cue.startTime)
        }, n.update = function (e) {
            var t = this.cue, n = this.player_.currentTime();
            this.selected(t.startTime <= n && n < t.endTime)
        }, t
    }(Gr);
    Cn.registerComponent("ChaptersTrackMenuItem", $r);
    var Qr = function (e) {
        function t(t, n, i) {
            return e.call(this, t, n, i) || this
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-chapters-button " + e.prototype.buildCSSClass.call(this)
        }, n.buildWrapperCSSClass = function () {
            return "vjs-chapters-button " + e.prototype.buildWrapperCSSClass.call(this)
        }, n.update = function (t) {
            this.track_ && (!t || "addtrack" !== t.type && "removetrack" !== t.type) || this.setTrack(this.findChaptersTrack()), e.prototype.update.call(this)
        }, n.setTrack = function (e) {
            if (this.track_ !== e) {
                if (this.updateHandler_ || (this.updateHandler_ = this.update.bind(this)), this.track_) {
                    var t = this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_);
                    t && t.removeEventListener("load", this.updateHandler_), this.track_ = null
                }
                if (this.track_ = e, this.track_) {
                    this.track_.mode = "hidden";
                    var n = this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_);
                    n && n.addEventListener("load", this.updateHandler_)
                }
            }
        }, n.findChaptersTrack = function () {
            for (var e = this.player_.textTracks() || [], t = e.length - 1; t >= 0; t--) {
                var n = e[t];
                if (n.kind === this.kind_) return n
            }
        }, n.getMenuCaption = function () {
            return this.track_ && this.track_.label ? this.track_.label : this.localize(Sn(this.kind_))
        }, n.createMenu = function () {
            return this.options_.title = this.getMenuCaption(), e.prototype.createMenu.call(this)
        }, n.createItems = function () {
            var e = [];
            if (!this.track_) return e;
            var t = this.track_.cues;
            if (!t) return e;
            for (var n = 0, i = t.length; n < i; n++) {
                var r = t[n], s = new $r(this.player_, {track: this.track_, cue: r});
                e.push(s)
            }
            return e
        }, t
    }(Kr);
    Qr.prototype.kind_ = "chapters", Qr.prototype.controlText_ = "Chapters", Cn.registerComponent("ChaptersButton", Qr);
    var Jr = function (e) {
        function t(t, n, i) {
            var r;
            r = e.call(this, t, n, i) || this;
            var s = t.textTracks(), a = on(c()(r), r.handleTracksChange);
            return s.addEventListener("change", a), r.on("dispose", (function () {
                s.removeEventListener("change", a)
            })), r
        }

        d()(t, e);
        var n = t.prototype;
        return n.handleTracksChange = function (e) {
            for (var t = this.player().textTracks(), n = !1, i = 0, r = t.length; i < r; i++) {
                var s = t[i];
                if (s.kind !== this.kind_ && "showing" === s.mode) {
                    n = !0;
                    break
                }
            }
            n ? this.disable() : this.enable()
        }, n.buildCSSClass = function () {
            return "vjs-descriptions-button " + e.prototype.buildCSSClass.call(this)
        }, n.buildWrapperCSSClass = function () {
            return "vjs-descriptions-button " + e.prototype.buildWrapperCSSClass.call(this)
        }, t
    }(Kr);
    Jr.prototype.kind_ = "descriptions", Jr.prototype.controlText_ = "Descriptions", Cn.registerComponent("DescriptionsButton", Jr);
    var Zr = function (e) {
        function t(t, n, i) {
            return e.call(this, t, n, i) || this
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-subtitles-button " + e.prototype.buildCSSClass.call(this)
        }, n.buildWrapperCSSClass = function () {
            return "vjs-subtitles-button " + e.prototype.buildWrapperCSSClass.call(this)
        }, t
    }(Kr);
    Zr.prototype.kind_ = "subtitles", Zr.prototype.controlText_ = "Subtitles", Cn.registerComponent("SubtitlesButton", Zr);
    var es = function (e) {
        function t(t, n) {
            var i;
            return n.track = {player: t, kind: n.kind, label: n.kind + " settings", selectable: !1, default: !1, mode: "disabled"}, n.selectable = !1, n.name = "CaptionSettingsMenuItem", (i = e.call(this, t, n) || this).addClass("vjs-texttrack-settings"), i.controlText(", opens " + n.kind + " settings dialog"), i
        }

        return d()(t, e), t.prototype.handleClick = function (e) {
            this.player().getChild("textTrackSettings").open()
        }, t
    }(Yr);
    Cn.registerComponent("CaptionSettingsMenuItem", es);
    var ts = function (e) {
        function t(t, n, i) {
            return e.call(this, t, n, i) || this
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-captions-button " + e.prototype.buildCSSClass.call(this)
        }, n.buildWrapperCSSClass = function () {
            return "vjs-captions-button " + e.prototype.buildWrapperCSSClass.call(this)
        }, n.createItems = function () {
            var t = [];
            return this.player().tech_ && this.player().tech_.featuresNativeTextTracks || !this.player().getChild("textTrackSettings") || (t.push(new es(this.player_, {kind: this.kind_})), this.hideThreshold_ += 1), e.prototype.createItems.call(this, t)
        }, t
    }(Kr);
    ts.prototype.kind_ = "captions", ts.prototype.controlText_ = "Captions", Cn.registerComponent("CaptionsButton", ts);
    var ns = function (e) {
        function t() {
            return e.apply(this, arguments) || this
        }

        return d()(t, e), t.prototype.createEl = function (t, n, i) {
            var r = '<span class="vjs-menu-item-text">' + this.localize(this.options_.label);
            return "captions" === this.options_.track.kind && (r += '\n        <span aria-hidden="true" class="vjs-icon-placeholder"></span>\n        <span class="vjs-control-text"> ' + this.localize("Captions") + "</span>\n      "), r += "</span>", e.prototype.createEl.call(this, t, Ze({innerHTML: r}, n), i)
        }, t
    }(Yr);
    Cn.registerComponent("SubsCapsMenuItem", ns);
    var is = function (e) {
        function t(t, n) {
            var i;
            return void 0 === n && (n = {}), (i = e.call(this, t, n) || this).label_ = "subtitles", ["en", "en-us", "en-ca", "fr-ca"].indexOf(i.player_.language_) > -1 && (i.label_ = "captions"), i.menuButton_.controlText(Sn(i.label_)), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-subs-caps-button " + e.prototype.buildCSSClass.call(this)
        }, n.buildWrapperCSSClass = function () {
            return "vjs-subs-caps-button " + e.prototype.buildWrapperCSSClass.call(this)
        }, n.createItems = function () {
            var t = [];
            return this.player().tech_ && this.player().tech_.featuresNativeTextTracks || !this.player().getChild("textTrackSettings") || (t.push(new es(this.player_, {kind: this.label_})), this.hideThreshold_ += 1), t = e.prototype.createItems.call(this, t, ns)
        }, t
    }(Kr);
    is.prototype.kinds_ = ["captions", "subtitles"], is.prototype.controlText_ = "Subtitles", Cn.registerComponent("SubsCapsButton", is);
    var rs = function (e) {
        function t(t, n) {
            var i, r = n.track, s = t.audioTracks();
            n.label = r.label || r.language || "Unknown", n.selected = r.enabled, (i = e.call(this, t, n) || this).track = r, i.addClass("vjs-" + r.kind + "-menu-item");
            var a = function () {
                for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
                i.handleTracksChange.apply(c()(i), t)
            };
            return s.addEventListener("change", a), i.on("dispose", (function () {
                s.removeEventListener("change", a)
            })), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function (t, n, i) {
            var r = '<span class="vjs-menu-item-text">' + this.localize(this.options_.label);
            return "main-desc" === this.options_.track.kind && (r += '\n        <span aria-hidden="true" class="vjs-icon-placeholder"></span>\n        <span class="vjs-control-text"> ' + this.localize("Descriptions") + "</span>\n      "), r += "</span>", e.prototype.createEl.call(this, t, Ze({innerHTML: r}, n), i)
        }, n.handleClick = function (t) {
            var n = this.player_.audioTracks();
            e.prototype.handleClick.call(this, t);
            for (var i = 0; i < n.length; i++) {
                var r = n[i];
                r.enabled = r === this.track
            }
        }, n.handleTracksChange = function (e) {
            this.selected(this.track.enabled)
        }, t
    }(Gr);
    Cn.registerComponent("AudioTrackMenuItem", rs);
    var ss = function (e) {
        function t(t, n) {
            return void 0 === n && (n = {}), n.tracks = t.audioTracks(), e.call(this, t, n) || this
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-audio-button " + e.prototype.buildCSSClass.call(this)
        }, n.buildWrapperCSSClass = function () {
            return "vjs-audio-button " + e.prototype.buildWrapperCSSClass.call(this)
        }, n.createItems = function (e) {
            void 0 === e && (e = []), this.hideThreshold_ = 1;
            for (var t = this.player_.audioTracks(), n = 0; n < t.length; n++) {
                var i = t[n];
                e.push(new rs(this.player_, {track: i, selectable: !0, multiSelectable: !1}))
            }
            return e
        }, t
    }(Wr);
    ss.prototype.controlText_ = "Audio Track", Cn.registerComponent("AudioTrackButton", ss);
    var as = function (e) {
        function t(t, n) {
            var i, r = n.rate, s = parseFloat(r, 10);
            return n.label = r, n.selected = 1 === s, n.selectable = !0, n.multiSelectable = !1, (i = e.call(this, t, n) || this).label = r, i.rate = s, i.on(t, "ratechange", i.update), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.handleClick = function (t) {
            e.prototype.handleClick.call(this), this.player().playbackRate(this.rate)
        }, n.update = function (e) {
            this.selected(this.player().playbackRate() === this.rate)
        }, t
    }(Gr);
    as.prototype.contentElType = "button", Cn.registerComponent("PlaybackRateMenuItem", as);
    var os = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).updateVisibility(), i.updateLabel(), i.on(t, "loadstart", i.updateVisibility), i.on(t, "ratechange", i.updateLabel), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function () {
            var t = e.prototype.createEl.call(this);
            return this.labelEl_ = ut("div", {className: "vjs-playback-rate-value", innerHTML: "1x"}), t.appendChild(this.labelEl_), t
        }, n.dispose = function () {
            this.labelEl_ = null, e.prototype.dispose.call(this)
        }, n.buildCSSClass = function () {
            return "vjs-playback-rate " + e.prototype.buildCSSClass.call(this)
        }, n.buildWrapperCSSClass = function () {
            return "vjs-playback-rate " + e.prototype.buildWrapperCSSClass.call(this)
        }, n.createMenu = function () {
            var e = new qr(this.player()), t = this.playbackRates();
            if (t) for (var n = t.length - 1; n >= 0; n--) e.addChild(new as(this.player(), {rate: t[n] + "x"}));
            return e
        }, n.updateARIAAttributes = function () {
            this.el().setAttribute("aria-valuenow", this.player().playbackRate())
        }, n.handleClick = function (e) {
            for (var t = this.player().playbackRate(), n = this.playbackRates(), i = n[0], r = 0; r < n.length; r++) if (n[r] > t) {
                i = n[r];
                break
            }
            this.player().playbackRate(i)
        }, n.playbackRates = function () {
            return this.options_.playbackRates || this.options_.playerOptions && this.options_.playerOptions.playbackRates
        }, n.playbackRateSupported = function () {
            return this.player().tech_ && this.player().tech_.featuresPlaybackRate && this.playbackRates() && this.playbackRates().length > 0
        }, n.updateVisibility = function (e) {
            this.playbackRateSupported() ? this.removeClass("vjs-hidden") : this.addClass("vjs-hidden")
        }, n.updateLabel = function (e) {
            this.playbackRateSupported() && (this.labelEl_.innerHTML = this.player().playbackRate() + "x")
        }, t
    }(Vr);
    os.prototype.controlText_ = "Playback Rate", Cn.registerComponent("PlaybackRateMenuButton", os);
    var ls = function (e) {
        function t() {
            return e.apply(this, arguments) || this
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-spacer " + e.prototype.buildCSSClass.call(this)
        }, n.createEl = function () {
            return e.prototype.createEl.call(this, "div", {className: this.buildCSSClass()})
        }, t
    }(Cn);
    Cn.registerComponent("Spacer", ls);
    var us = function (e) {
        function t() {
            return e.apply(this, arguments) || this
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-custom-control-spacer " + e.prototype.buildCSSClass.call(this)
        }, n.createEl = function () {
            var t = e.prototype.createEl.call(this, {className: this.buildCSSClass()});
            return t.innerHTML = " ", t
        }, t
    }(ls);
    Cn.registerComponent("CustomControlSpacer", us);
    var cs = function (e) {
        function t() {
            return e.apply(this, arguments) || this
        }

        return d()(t, e), t.prototype.createEl = function () {
            return e.prototype.createEl.call(this, "div", {className: "vjs-control-bar", dir: "ltr"})
        }, t
    }(Cn);
    cs.prototype.options_ = {children: ["playToggle", "volumePanel", "currentTimeDisplay", "timeDivider", "durationDisplay", "progressControl", "liveDisplay", "seekToLive", "remainingTimeDisplay", "customControlSpacer", "playbackRateMenuButton", "chaptersButton", "descriptionsButton", "subsCapsButton", "audioTrackButton", "fullscreenToggle"]}, "exitPictureInPicture" in a.a && cs.prototype.options_.children.splice(cs.prototype.options_.children.length - 1, 0, "pictureInPictureToggle"), Cn.registerComponent("ControlBar", cs);
    var hs = function (e) {
        function t(t, n) {
            var i;
            return (i = e.call(this, t, n) || this).on(t, "error", i.open), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.buildCSSClass = function () {
            return "vjs-error-display " + e.prototype.buildCSSClass.call(this)
        }, n.content = function () {
            var e = this.player().error();
            return e ? this.localize(e.message) : ""
        }, t
    }(di);
    hs.prototype.options_ = l()({}, di.prototype.options_, {pauseOnOpen: !1, fillAlways: !0, temporary: !1, uncloseable: !0}), Cn.registerComponent("ErrorDisplay", hs);
    var ds = ["#000", "Black"], fs = ["#00F", "Blue"], ps = ["#0FF", "Cyan"], ms = ["#0F0", "Green"], gs = ["#F0F", "Magenta"], vs = ["#F00", "Red"], ys = ["#FFF", "White"], _s = ["#FF0", "Yellow"], bs = ["1", "Opaque"], Ts = ["0.5", "Semi-Transparent"], ws = ["0", "Transparent"], Ss = {
        backgroundColor: {selector: ".vjs-bg-color > select", id: "captions-background-color-%s", label: "Color", options: [ds, ys, vs, ms, fs, _s, gs, ps]},
        backgroundOpacity: {selector: ".vjs-bg-opacity > select", id: "captions-background-opacity-%s", label: "Transparency", options: [bs, Ts, ws]},
        color: {selector: ".vjs-fg-color > select", id: "captions-foreground-color-%s", label: "Color", options: [ys, ds, vs, ms, fs, _s, gs, ps]},
        edgeStyle: {selector: ".vjs-edge-style > select", id: "%s", label: "Text Edge Style", options: [["none", "None"], ["raised", "Raised"], ["depressed", "Depressed"], ["uniform", "Uniform"], ["dropshadow", "Dropshadow"]]},
        fontFamily: {selector: ".vjs-font-family > select", id: "captions-font-family-%s", label: "Font Family", options: [["proportionalSansSerif", "Proportional Sans-Serif"], ["monospaceSansSerif", "Monospace Sans-Serif"], ["proportionalSerif", "Proportional Serif"], ["monospaceSerif", "Monospace Serif"], ["casual", "Casual"], ["script", "Script"], ["small-caps", "Small Caps"]]},
        fontPercent: {
            selector: ".vjs-font-percent > select", id: "captions-font-size-%s", label: "Font Size", options: [["0.50", "50%"], ["0.75", "75%"], ["1.00", "100%"], ["1.25", "125%"], ["1.50", "150%"], ["1.75", "175%"], ["2.00", "200%"], ["3.00", "300%"], ["4.00", "400%"]], default: 2, parser: function (e) {
                return "1.00" === e ? null : Number(e)
            }
        },
        textOpacity: {selector: ".vjs-text-opacity > select", id: "captions-foreground-opacity-%s", label: "Transparency", options: [bs, Ts]},
        windowColor: {selector: ".vjs-window-color > select", id: "captions-window-color-%s", label: "Color"},
        windowOpacity: {selector: ".vjs-window-opacity > select", id: "captions-window-opacity-%s", label: "Transparency", options: [ws, Ts, bs]}
    };

    function Es(e, t) {
        if (t && (e = t(e)), e && "none" !== e) return e
    }

    Ss.windowColor.options = Ss.backgroundColor.options;
    var Cs = function (e) {
        function t(t, n) {
            var i;
            return n.temporary = !1, (i = e.call(this, t, n) || this).updateDisplay = on(c()(i), i.updateDisplay), i.fill(), i.hasBeenOpened_ = i.hasBeenFilled_ = !0, i.endDialog = ut("p", {className: "vjs-control-text", textContent: i.localize("End of dialog window.")}), i.el().appendChild(i.endDialog), i.setDefaults(), void 0 === n.persistTextTrackSettings && (i.options_.persistTextTrackSettings = i.options_.playerOptions.persistTextTrackSettings), i.on(i.$(".vjs-done-button"), "click", (function () {
                i.saveSettings(), i.close()
            })), i.on(i.$(".vjs-default-button"), "click", (function () {
                i.setDefaults(), i.updateDisplay()
            })), Je(Ss, (function (e) {
                i.on(i.$(e.selector), "change", i.updateDisplay)
            })), i.options_.persistTextTrackSettings && i.restoreSettings(), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.dispose = function () {
            this.endDialog = null, e.prototype.dispose.call(this)
        }, n.createElSelect_ = function (e, t, n) {
            var i = this;
            void 0 === t && (t = ""), void 0 === n && (n = "label");
            var r = Ss[e], s = r.id.replace("%s", this.id_), a = [t, s].join(" ").trim();
            return ["<" + n + ' id="' + s + '" class="' + ("label" === n ? "vjs-label" : "") + '">', this.localize(r.label), "</" + n + ">", '<select aria-labelledby="' + a + '">'].concat(r.options.map((function (e) {
                var t = s + "-" + e[1].replace(/\W+/g, "");
                return ['<option id="' + t + '" value="' + e[0] + '" ', 'aria-labelledby="' + a + " " + t + '">', i.localize(e[1]), "</option>"].join("")
            }))).concat("</select>").join("")
        }, n.createElFgColor_ = function () {
            var e = "captions-text-legend-" + this.id_;
            return ['<fieldset class="vjs-fg-color vjs-track-setting">', '<legend id="' + e + '">', this.localize("Text"), "</legend>", this.createElSelect_("color", e), '<span class="vjs-text-opacity vjs-opacity">', this.createElSelect_("textOpacity", e), "</span>", "</fieldset>"].join("")
        }, n.createElBgColor_ = function () {
            var e = "captions-background-" + this.id_;
            return ['<fieldset class="vjs-bg-color vjs-track-setting">', '<legend id="' + e + '">', this.localize("Background"), "</legend>", this.createElSelect_("backgroundColor", e), '<span class="vjs-bg-opacity vjs-opacity">', this.createElSelect_("backgroundOpacity", e), "</span>", "</fieldset>"].join("")
        }, n.createElWinColor_ = function () {
            var e = "captions-window-" + this.id_;
            return ['<fieldset class="vjs-window-color vjs-track-setting">', '<legend id="' + e + '">', this.localize("Window"), "</legend>", this.createElSelect_("windowColor", e), '<span class="vjs-window-opacity vjs-opacity">', this.createElSelect_("windowOpacity", e), "</span>", "</fieldset>"].join("")
        }, n.createElColors_ = function () {
            return ut("div", {className: "vjs-track-settings-colors", innerHTML: [this.createElFgColor_(), this.createElBgColor_(), this.createElWinColor_()].join("")})
        }, n.createElFont_ = function () {
            return ut("div", {className: "vjs-track-settings-font", innerHTML: ['<fieldset class="vjs-font-percent vjs-track-setting">', this.createElSelect_("fontPercent", "", "legend"), "</fieldset>", '<fieldset class="vjs-edge-style vjs-track-setting">', this.createElSelect_("edgeStyle", "", "legend"), "</fieldset>", '<fieldset class="vjs-font-family vjs-track-setting">', this.createElSelect_("fontFamily", "", "legend"), "</fieldset>"].join("")})
        }, n.createElControls_ = function () {
            var e = this.localize("restore all settings to the default values");
            return ut("div", {className: "vjs-track-settings-controls", innerHTML: ['<button type="button" class="vjs-default-button" title="' + e + '">', this.localize("Reset"), '<span class="vjs-control-text"> ' + e + "</span>", "</button>", '<button type="button" class="vjs-done-button">' + this.localize("Done") + "</button>"].join("")})
        }, n.content = function () {
            return [this.createElColors_(), this.createElFont_(), this.createElControls_()]
        }, n.label = function () {
            return this.localize("Caption Settings Dialog")
        }, n.description = function () {
            return this.localize("Beginning of dialog window. Escape will cancel and close the window.")
        }, n.buildCSSClass = function () {
            return e.prototype.buildCSSClass.call(this) + " vjs-text-track-settings"
        }, n.getValues = function () {
            var e, t, n, i = this;
            return t = function (e, t, n) {
                var r, s, a = (r = i.$(t.selector), s = t.parser, Es(r.options[r.options.selectedIndex].value, s));
                return void 0 !== a && (e[n] = a), e
            }, void 0 === (n = {}) && (n = 0), Qe(e = Ss).reduce((function (n, i) {
                return t(n, e[i], i)
            }), n)
        }, n.setValues = function (e) {
            var t = this;
            Je(Ss, (function (n, i) {
                !function (e, t, n) {
                    if (t) for (var i = 0; i < e.options.length; i++) if (Es(e.options[i].value, n) === t) {
                        e.selectedIndex = i;
                        break
                    }
                }(t.$(n.selector), e[i], n.parser)
            }))
        }, n.setDefaults = function () {
            var e = this;
            Je(Ss, (function (t) {
                var n = t.hasOwnProperty("default") ? t.default : 0;
                e.$(t.selector).selectedIndex = n
            }))
        }, n.restoreSettings = function () {
            var e;
            try {
                e = JSON.parse(r.a.localStorage.getItem("vjs-text-track-settings"))
            } catch (e) {
                Xe.warn(e)
            }
            e && this.setValues(e)
        }, n.saveSettings = function () {
            if (this.options_.persistTextTrackSettings) {
                var e = this.getValues();
                try {
                    Object.keys(e).length ? r.a.localStorage.setItem("vjs-text-track-settings", JSON.stringify(e)) : r.a.localStorage.removeItem("vjs-text-track-settings")
                } catch (e) {
                    Xe.warn(e)
                }
            }
        }, n.updateDisplay = function () {
            var e = this.player_.getChild("textTrackDisplay");
            e && e.updateDisplay()
        }, n.conditionalBlur_ = function () {
            this.previouslyActiveEl_ = null;
            var e = this.player_.controlBar, t = e && e.subsCapsButton, n = e && e.captionsButton;
            t ? t.focus() : n && n.focus()
        }, t
    }(di);
    Cn.registerComponent("TextTrackSettings", Cs);
    var ks = function (e) {
        function t(t, n) {
            var i, s = n.ResizeObserver || r.a.ResizeObserver;
            null === n.ResizeObserver && (s = !1);
            var a = En({createEl: !s, reportTouchActivity: !1}, n);
            return (i = e.call(this, t, a) || this).ResizeObserver = n.ResizeObserver || r.a.ResizeObserver, i.loadListener_ = null, i.resizeObserver_ = null, i.debouncedHandler_ = un((function () {
                i.resizeHandler()
            }), 100, !1, c()(i)), s ? (i.resizeObserver_ = new i.ResizeObserver(i.debouncedHandler_), i.resizeObserver_.observe(t.el())) : (i.loadListener_ = function () {
                if (i.el_ && i.el_.contentWindow) {
                    var e = i.debouncedHandler_, t = i.unloadListener_ = function () {
                        Zt(this, "resize", e), Zt(this, "unload", t), t = null
                    };
                    Jt(i.el_.contentWindow, "unload", t), Jt(i.el_.contentWindow, "resize", e)
                }
            }, i.one("load", i.loadListener_)), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.createEl = function () {
            return e.prototype.createEl.call(this, "iframe", {className: "vjs-resize-manager", tabIndex: -1}, {"aria-hidden": "true"})
        }, n.resizeHandler = function () {
            this.player_ && this.player_.trigger && this.player_.trigger("playerresize")
        }, n.dispose = function () {
            this.debouncedHandler_ && this.debouncedHandler_.cancel(), this.resizeObserver_ && (this.player_.el() && this.resizeObserver_.unobserve(this.player_.el()), this.resizeObserver_.disconnect()), this.loadListener_ && this.off("load", this.loadListener_), this.el_ && this.el_.contentWindow && this.unloadListener_ && this.unloadListener_.call(this.el_.contentWindow), this.ResizeObserver = null, this.resizeObserver = null, this.debouncedHandler_ = null, this.loadListener_ = null, e.prototype.dispose.call(this)
        }, t
    }(Cn);
    Cn.registerComponent("ResizeManager", ks);
    var xs = {trackingThreshold: 30, liveTolerance: 15}, As = function (e) {
        function t(t, n) {
            var i, r = En(xs, n, {createEl: !1});
            return (i = e.call(this, t, r) || this).reset_(), i.on(i.player_, "durationchange", i.handleDurationchange), jn && "hidden" in a.a && "visibilityState" in a.a && i.on(a.a, "visibilitychange", i.handleVisibilityChange), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.handleVisibilityChange = function () {
            this.player_.duration() === 1 / 0 && (a.a.hidden ? this.stopTracking() : this.startTracking())
        }, n.trackLive_ = function () {
            var e = this.player_.seekable();
            if (e && e.length) {
                var t = Number(r.a.performance.now().toFixed(4)), n = -1 === this.lastTime_ ? 0 : (t - this.lastTime_) / 1e3;
                this.lastTime_ = t, this.pastSeekEnd_ = this.pastSeekEnd() + n;
                var i = this.liveCurrentTime(), s = this.player_.currentTime(), a = this.player_.paused() || this.seekedBehindLive_ || Math.abs(i - s) > this.options_.liveTolerance;
                this.timeupdateSeen_ && i !== 1 / 0 || (a = !1), a !== this.behindLiveEdge_ && (this.behindLiveEdge_ = a, this.trigger("liveedgechange"))
            }
        }, n.handleDurationchange = function () {
            this.player_.duration() === 1 / 0 && this.liveWindow() >= this.options_.trackingThreshold ? (this.player_.options_.liveui && this.player_.addClass("vjs-liveui"), this.startTracking()) : (this.player_.removeClass("vjs-liveui"), this.stopTracking())
        }, n.startTracking = function () {
            this.isTracking() || (this.timeupdateSeen_ || (this.timeupdateSeen_ = this.player_.hasStarted()), this.trackingInterval_ = this.setInterval(this.trackLive_, an), this.trackLive_(), this.on(this.player_, ["play", "pause"], this.trackLive_), this.timeupdateSeen_ ? this.on(this.player_, "seeked", this.handleSeeked) : (this.one(this.player_, "play", this.handlePlay), this.one(this.player_, "timeupdate", this.handleFirstTimeupdate)))
        }, n.handleFirstTimeupdate = function () {
            this.timeupdateSeen_ = !0, this.on(this.player_, "seeked", this.handleSeeked)
        }, n.handleSeeked = function () {
            var e = Math.abs(this.liveCurrentTime() - this.player_.currentTime());
            this.seekedBehindLive_ = !this.skipNextSeeked_ && e > 2, this.skipNextSeeked_ = !1, this.trackLive_()
        }, n.handlePlay = function () {
            this.one(this.player_, "timeupdate", this.seekToLiveEdge)
        }, n.reset_ = function () {
            this.lastTime_ = -1, this.pastSeekEnd_ = 0, this.lastSeekEnd_ = -1, this.behindLiveEdge_ = !0, this.timeupdateSeen_ = !1, this.seekedBehindLive_ = !1, this.skipNextSeeked_ = !1, this.clearInterval(this.trackingInterval_), this.trackingInterval_ = null, this.off(this.player_, ["play", "pause"], this.trackLive_), this.off(this.player_, "seeked", this.handleSeeked), this.off(this.player_, "play", this.handlePlay), this.off(this.player_, "timeupdate", this.handleFirstTimeupdate), this.off(this.player_, "timeupdate", this.seekToLiveEdge)
        }, n.stopTracking = function () {
            this.isTracking() && (this.reset_(), this.trigger("liveedgechange"))
        }, n.seekableEnd = function () {
            for (var e = this.player_.seekable(), t = [], n = e ? e.length : 0; n--;) t.push(e.end(n));
            return t.length ? t.sort()[t.length - 1] : 1 / 0
        }, n.seekableStart = function () {
            for (var e = this.player_.seekable(), t = [], n = e ? e.length : 0; n--;) t.push(e.start(n));
            return t.length ? t.sort()[0] : 0
        }, n.liveWindow = function () {
            var e = this.liveCurrentTime();
            return e === 1 / 0 ? 1 / 0 : e - this.seekableStart()
        }, n.isLive = function () {
            return this.isTracking()
        }, n.atLiveEdge = function () {
            return !this.behindLiveEdge()
        }, n.liveCurrentTime = function () {
            return this.pastSeekEnd() + this.seekableEnd()
        }, n.pastSeekEnd = function () {
            var e = this.seekableEnd();
            return -1 !== this.lastSeekEnd_ && e !== this.lastSeekEnd_ && (this.pastSeekEnd_ = 0), this.lastSeekEnd_ = e, this.pastSeekEnd_
        }, n.behindLiveEdge = function () {
            return this.behindLiveEdge_
        }, n.isTracking = function () {
            return "number" == typeof this.trackingInterval_
        }, n.seekToLiveEdge = function () {
            this.seekedBehindLive_ = !1, this.atLiveEdge() || (this.skipNextSeeked_ = !0, this.player_.currentTime(this.liveCurrentTime()))
        }, n.dispose = function () {
            this.off(a.a, "visibilitychange", this.handleVisibilityChange), this.stopTracking(), e.prototype.dispose.call(this)
        }, t
    }(Cn);
    Cn.registerComponent("LiveTracker", As);
    var Ds, Is = function (e) {
        var t = e.el();
        if (t.hasAttribute("src")) return e.triggerSourceset(t.src), !0;
        var n = e.$$("source"), i = [], r = "";
        if (!n.length) return !1;
        for (var s = 0; s < n.length; s++) {
            var a = n[s].src;
            a && -1 === i.indexOf(a) && i.push(a)
        }
        return !!i.length && (1 === i.length && (r = i[0]), e.triggerSourceset(r), !0)
    }, Ps = Object.defineProperty({}, "innerHTML", {
        get: function () {
            return this.cloneNode(!0).innerHTML
        }, set: function (e) {
            var t = a.a.createElement(this.nodeName.toLowerCase());
            t.innerHTML = e;
            for (var n = a.a.createDocumentFragment(); t.childNodes.length;) n.appendChild(t.childNodes[0]);
            return this.innerText = "", r.a.Element.prototype.appendChild.call(this, n), this.innerHTML
        }
    }), Os = function (e, t) {
        for (var n = {}, i = 0; i < e.length && !((n = Object.getOwnPropertyDescriptor(e[i], t)) && n.set && n.get); i++) ;
        return n.enumerable = !0, n.configurable = !0, n
    }, Ls = function (e) {
        var t = e.el();
        if (!t.resetSourceWatch_) {
            var n = {}, i = function (e) {
                return Os([e.el(), r.a.HTMLMediaElement.prototype, r.a.Element.prototype, Ps], "innerHTML")
            }(e), s = function (n) {
                return function () {
                    for (var i = arguments.length, r = new Array(i), s = 0; s < i; s++) r[s] = arguments[s];
                    var a = n.apply(t, r);
                    return Is(e), a
                }
            };
            ["append", "appendChild", "insertAdjacentHTML"].forEach((function (e) {
                t[e] && (n[e] = t[e], t[e] = s(n[e]))
            })), Object.defineProperty(t, "innerHTML", En(i, {set: s(i.set)})), t.resetSourceWatch_ = function () {
                t.resetSourceWatch_ = null, Object.keys(n).forEach((function (e) {
                    t[e] = n[e]
                })), Object.defineProperty(t, "innerHTML", i)
            }, e.one("sourceset", t.resetSourceWatch_)
        }
    }, Ns = Object.defineProperty({}, "src", {
        get: function () {
            return this.hasAttribute("src") ? Ai(r.a.Element.prototype.getAttribute.call(this, "src")) : ""
        }, set: function (e) {
            return r.a.Element.prototype.setAttribute.call(this, "src", e), e
        }
    }), Rs = function (e) {
        if (e.featuresSourceset) {
            var t = e.el();
            if (!t.resetSourceset_) {
                var n = function (e) {
                    return Os([e.el(), r.a.HTMLMediaElement.prototype, Ns], "src")
                }(e), i = t.setAttribute, s = t.load;
                Object.defineProperty(t, "src", En(n, {
                    set: function (i) {
                        var r = n.set.call(t, i);
                        return e.triggerSourceset(t.src), r
                    }
                })), t.setAttribute = function (n, r) {
                    var s = i.call(t, n, r);
                    return /src/i.test(n) && e.triggerSourceset(t.src), s
                }, t.load = function () {
                    var n = s.call(t);
                    return Is(e) || (e.triggerSourceset(""), Ls(e)), n
                }, t.currentSrc ? e.triggerSourceset(t.currentSrc) : Is(e) || Ls(e), t.resetSourceset_ = function () {
                    t.resetSourceset_ = null, t.load = s, t.setAttribute = i, Object.defineProperty(t, "src", n), t.resetSourceWatch_ && t.resetSourceWatch_()
                }
            }
        }
    }, Us = function (e, t, n, i) {
        void 0 === i && (i = !0);
        var r = function (n) {
            return Object.defineProperty(e, t, {value: n, enumerable: !0, writable: !0})
        }, s = {
            configurable: !0, enumerable: !0, get: function () {
                var e = n();
                return r(e), e
            }
        };
        return i && (s.set = r), Object.defineProperty(e, t, s)
    }, Ms = function (e) {
        function t(t, n) {
            var i;
            i = e.call(this, t, n) || this;
            var r = t.source, s = !1;
            if (r && (i.el_.currentSrc !== r.src || t.tag && 3 === t.tag.initNetworkState_) ? i.setSource(r) : i.handleLateInit_(i.el_), t.enableSourceset && i.setupSourcesetHandling_(), i.el_.hasChildNodes()) {
                for (var a = i.el_.childNodes, o = a.length, l = []; o--;) {
                    var u = a[o];
                    "track" === u.nodeName.toLowerCase() && (i.featuresNativeTextTracks ? (i.remoteTextTrackEls().addTrackElement_(u), i.remoteTextTracks().addTrack(u.track), i.textTracks().addTrack(u.track), s || i.el_.hasAttribute("crossorigin") || !Ii(u.src) || (s = !0)) : l.push(u))
                }
                for (var c = 0; c < l.length; c++) i.el_.removeChild(l[c])
            }
            return i.proxyNativeTracks_(), i.featuresNativeTextTracks && s && Xe.warn("Text Tracks are being loaded from another origin but the crossorigin attribute isn't used.\nThis may prevent text tracks from loading."), i.restoreMetadataTracksInIOSNativePlayer_(), (qn || Wn || Nn) && !0 === t.nativeControlsForTouch && i.setControls(!0), i.proxyWebkitFullscreen_(), i.triggerReady(), i
        }

        d()(t, e);
        var n = t.prototype;
        return n.dispose = function () {
            this.el_ && this.el_.resetSourceset_ && this.el_.resetSourceset_(), t.disposeMediaElement(this.el_), this.options_ = null, e.prototype.dispose.call(this)
        }, n.setupSourcesetHandling_ = function () {
            Rs(this)
        }, n.restoreMetadataTracksInIOSNativePlayer_ = function () {
            var e, t = this.textTracks(), n = function () {
                e = [];
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    "metadata" === i.kind && e.push({track: i, storedMode: i.mode})
                }
            };
            n(), t.addEventListener("change", n), this.on("dispose", (function () {
                return t.removeEventListener("change", n)
            }));
            var i = function n() {
                for (var i = 0; i < e.length; i++) {
                    var r = e[i];
                    "disabled" === r.track.mode && r.track.mode !== r.storedMode && (r.track.mode = r.storedMode)
                }
                t.removeEventListener("change", n)
            };
            this.on("webkitbeginfullscreen", (function () {
                t.removeEventListener("change", n), t.removeEventListener("change", i), t.addEventListener("change", i)
            })), this.on("webkitendfullscreen", (function () {
                t.removeEventListener("change", n), t.addEventListener("change", n), t.removeEventListener("change", i)
            }))
        }, n.overrideNative_ = function (e, t) {
            var n = this;
            if (t === this["featuresNative" + e + "Tracks"]) {
                var i = e.toLowerCase();
                this[i + "TracksListeners_"] && Object.keys(this[i + "TracksListeners_"]).forEach((function (e) {
                    n.el()[i + "Tracks"].removeEventListener(e, n[i + "TracksListeners_"][e])
                })), this["featuresNative" + e + "Tracks"] = !t, this[i + "TracksListeners_"] = null, this.proxyNativeTracksForType_(i)
            }
        }, n.overrideNativeAudioTracks = function (e) {
            this.overrideNative_("Audio", e)
        }, n.overrideNativeVideoTracks = function (e) {
            this.overrideNative_("Video", e)
        }, n.proxyNativeTracksForType_ = function (e) {
            var t = this, n = Fi[e], i = this.el()[n.getterName], r = this[n.getterName]();
            if (this["featuresNative" + n.capitalName + "Tracks"] && i && i.addEventListener) {
                var s = {
                    change: function (n) {
                        var i = {type: "change", target: r, currentTarget: r, srcElement: r};
                        r.trigger(i), "text" === e && t[Hi.remoteText.getterName]().trigger(i)
                    }, addtrack: function (e) {
                        r.addTrack(e.track)
                    }, removetrack: function (e) {
                        r.removeTrack(e.track)
                    }
                }, a = function () {
                    for (var e = [], t = 0; t < r.length; t++) {
                        for (var n = !1, s = 0; s < i.length; s++) if (i[s] === r[t]) {
                            n = !0;
                            break
                        }
                        n || e.push(r[t])
                    }
                    for (; e.length;) r.removeTrack(e.shift())
                };
                this[n.getterName + "Listeners_"] = s, Object.keys(s).forEach((function (e) {
                    var n = s[e];
                    i.addEventListener(e, n), t.on("dispose", (function (t) {
                        return i.removeEventListener(e, n)
                    }))
                })), this.on("loadstart", a), this.on("dispose", (function (e) {
                    return t.off("loadstart", a)
                }))
            }
        }, n.proxyNativeTracks_ = function () {
            var e = this;
            Fi.names.forEach((function (t) {
                e.proxyNativeTracksForType_(t)
            }))
        }, n.createEl = function () {
            var e = this.options_.tag;
            if (!e || !this.options_.playerElIngest && !this.movingMediaElementInDOM) {
                if (e) {
                    var n = e.cloneNode(!0);
                    e.parentNode && e.parentNode.insertBefore(n, e), t.disposeMediaElement(e), e = n
                } else {
                    e = a.a.createElement("video");
                    var i = En({}, this.options_.tag && vt(this.options_.tag));
                    qn && !0 === this.options_.nativeControlsForTouch || delete i.controls, gt(e, Ze(i, {id: this.options_.techId, class: "vjs-tech"}))
                }
                e.playerId = this.options_.playerId
            }
            void 0 !== this.options_.preload && _t(e, "preload", this.options_.preload);
            for (var r = ["loop", "muted", "playsinline", "autoplay"], s = 0; s < r.length; s++) {
                var o = r[s], l = this.options_[o];
                void 0 !== l && (l ? _t(e, o, o) : bt(e, o), e[o] = l)
            }
            return e
        }, n.handleLateInit_ = function (e) {
            if (0 !== e.networkState && 3 !== e.networkState) {
                if (0 === e.readyState) {
                    var t = !1, n = function () {
                        t = !0
                    };
                    this.on("loadstart", n);
                    var i = function () {
                        t || this.trigger("loadstart")
                    };
                    return this.on("loadedmetadata", i), void this.ready((function () {
                        this.off("loadstart", n), this.off("loadedmetadata", i), t || this.trigger("loadstart")
                    }))
                }
                var r = ["loadstart"];
                r.push("loadedmetadata"), e.readyState >= 2 && r.push("loadeddata"), e.readyState >= 3 && r.push("canplay"), e.readyState >= 4 && r.push("canplaythrough"), this.ready((function () {
                    r.forEach((function (e) {
                        this.trigger(e)
                    }), this)
                }))
            }
        }, n.setCurrentTime = function (e) {
            try {
                this.el_.currentTime = e
            } catch (e) {
                Xe(e, "Video is not ready. (Video.js)")
            }
        }, n.duration = function () {
            var e = this;
            if (this.el_.duration === 1 / 0 && On && Mn && 0 === this.el_.currentTime) {
                return this.on("timeupdate", (function t() {
                    e.el_.currentTime > 0 && (e.el_.duration === 1 / 0 && e.trigger("durationchange"), e.off("timeupdate", t))
                })), NaN
            }
            return this.el_.duration || NaN
        }, n.width = function () {
            return this.el_.offsetWidth
        }, n.height = function () {
            return this.el_.offsetHeight
        }, n.proxyWebkitFullscreen_ = function () {
            var e = this;
            if ("webkitDisplayingFullscreen" in this.el_) {
                var t = function () {
                    this.trigger("fullscreenchange", {isFullscreen: !1})
                }, n = function () {
                    "webkitPresentationMode" in this.el_ && "picture-in-picture" !== this.el_.webkitPresentationMode && (this.one("webkitendfullscreen", t), this.trigger("fullscreenchange", {isFullscreen: !0, nativeIOSFullscreen: !0}))
                };
                this.on("webkitbeginfullscreen", n), this.on("dispose", (function () {
                    e.off("webkitbeginfullscreen", n), e.off("webkitendfullscreen", t)
                }))
            }
        }, n.supportsFullScreen = function () {
            if ("function" == typeof this.el_.webkitEnterFullScreen) {
                var e = r.a.navigator && r.a.navigator.userAgent || "";
                if (/Android/.test(e) || !/Chrome|Mac OS X 10.5/.test(e)) return !0
            }
            return !1
        }, n.enterFullScreen = function () {
            var e = this.el_;
            if (e.paused && e.networkState <= e.HAVE_METADATA) oi(this.el_.play()), this.setTimeout((function () {
                e.pause();
                try {
                    e.webkitEnterFullScreen()
                } catch (e) {
                    this.trigger("fullscreenerror", e)
                }
            }), 0); else try {
                e.webkitEnterFullScreen()
            } catch (e) {
                this.trigger("fullscreenerror", e)
            }
        }, n.exitFullScreen = function () {
            this.el_.webkitDisplayingFullscreen ? this.el_.webkitExitFullScreen() : this.trigger("fullscreenerror", new Error("The video is not fullscreen"))
        }, n.requestPictureInPicture = function () {
            return this.el_.requestPictureInPicture()
        }, n.src = function (e) {
            if (void 0 === e) return this.el_.src;
            this.setSrc(e)
        }, n.reset = function () {
            t.resetMediaElement(this.el_)
        }, n.currentSrc = function () {
            return this.currentSource_ ? this.currentSource_.src : this.el_.currentSrc
        }, n.setControls = function (e) {
            this.el_.controls = !!e
        }, n.addTextTrack = function (t, n, i) {
            return this.featuresNativeTextTracks ? this.el_.addTextTrack(t, n, i) : e.prototype.addTextTrack.call(this, t, n, i)
        }, n.createRemoteTextTrack = function (t) {
            if (!this.featuresNativeTextTracks) return e.prototype.createRemoteTextTrack.call(this, t);
            var n = a.a.createElement("track");
            return t.kind && (n.kind = t.kind), t.label && (n.label = t.label), (t.language || t.srclang) && (n.srclang = t.language || t.srclang), t.default && (n.default = t.default), t.id && (n.id = t.id), t.src && (n.src = t.src), n
        }, n.addRemoteTextTrack = function (t, n) {
            var i = e.prototype.addRemoteTextTrack.call(this, t, n);
            return this.featuresNativeTextTracks && this.el().appendChild(i), i
        }, n.removeRemoteTextTrack = function (t) {
            if (e.prototype.removeRemoteTextTrack.call(this, t), this.featuresNativeTextTracks) for (var n = this.$$("track"), i = n.length; i--;) t !== n[i] && t !== n[i].track || this.el().removeChild(n[i])
        }, n.getVideoPlaybackQuality = function () {
            if ("function" == typeof this.el().getVideoPlaybackQuality) return this.el().getVideoPlaybackQuality();
            var e = {};
            return void 0 !== this.el().webkitDroppedFrameCount && void 0 !== this.el().webkitDecodedFrameCount && (e.droppedVideoFrames = this.el().webkitDroppedFrameCount, e.totalVideoFrames = this.el().webkitDecodedFrameCount), r.a.performance && "function" == typeof r.a.performance.now ? e.creationTime = r.a.performance.now() : r.a.performance && r.a.performance.timing && "number" == typeof r.a.performance.timing.navigationStart && (e.creationTime = r.a.Date.now() - r.a.performance.timing.navigationStart), e
        }, t
    }(Vi);
    Us(Ms, "TEST_VID", (function () {
        if (st()) {
            var e = a.a.createElement("video"), t = a.a.createElement("track");
            return t.kind = "captions", t.srclang = "en", t.label = "English", e.appendChild(t), e
        }
    })), Ms.isSupported = function () {
        try {
            Ms.TEST_VID.volume = .5
        } catch (e) {
            return !1
        }
        return !(!Ms.TEST_VID || !Ms.TEST_VID.canPlayType)
    }, Ms.canPlayType = function (e) {
        return Ms.TEST_VID.canPlayType(e)
    }, Ms.canPlaySource = function (e, t) {
        return Ms.canPlayType(e.type)
    }, Ms.canControlVolume = function () {
        try {
            var e = Ms.TEST_VID.volume;
            return Ms.TEST_VID.volume = e / 2 + .1, e !== Ms.TEST_VID.volume
        } catch (e) {
            return !1
        }
    }, Ms.canMuteVolume = function () {
        try {
            var e = Ms.TEST_VID.muted;
            return Ms.TEST_VID.muted = !e, Ms.TEST_VID.muted ? _t(Ms.TEST_VID, "muted", "muted") : bt(Ms.TEST_VID, "muted"), e !== Ms.TEST_VID.muted
        } catch (e) {
            return !1
        }
    }, Ms.canControlPlaybackRate = function () {
        if (On && Mn && Bn < 58) return !1;
        try {
            var e = Ms.TEST_VID.playbackRate;
            return Ms.TEST_VID.playbackRate = e / 2 + .1, e !== Ms.TEST_VID.playbackRate
        } catch (e) {
            return !1
        }
    }, Ms.canOverrideAttributes = function () {
        try {
            var e = function () {
            };
            Object.defineProperty(a.a.createElement("video"), "src", {get: e, set: e}), Object.defineProperty(a.a.createElement("audio"), "src", {get: e, set: e}), Object.defineProperty(a.a.createElement("video"), "innerHTML", {get: e, set: e}), Object.defineProperty(a.a.createElement("audio"), "innerHTML", {get: e, set: e})
        } catch (e) {
            return !1
        }
        return !0
    }, Ms.supportsNativeTextTracks = function () {
        return Gn || zn && Mn
    }, Ms.supportsNativeVideoTracks = function () {
        return !(!Ms.TEST_VID || !Ms.TEST_VID.videoTracks)
    }, Ms.supportsNativeAudioTracks = function () {
        return !(!Ms.TEST_VID || !Ms.TEST_VID.audioTracks)
    }, Ms.Events = ["loadstart", "suspend", "abort", "error", "emptied", "stalled", "loadedmetadata", "loadeddata", "canplay", "canplaythrough", "playing", "waiting", "seeking", "seeked", "ended", "durationchange", "timeupdate", "progress", "play", "pause", "ratechange", "resize", "volumechange"], [["featuresVolumeControl", "canControlVolume"], ["featuresMuteControl", "canMuteVolume"], ["featuresPlaybackRate", "canControlPlaybackRate"], ["featuresSourceset", "canOverrideAttributes"], ["featuresNativeTextTracks", "supportsNativeTextTracks"], ["featuresNativeVideoTracks", "supportsNativeVideoTracks"], ["featuresNativeAudioTracks", "supportsNativeAudioTracks"]].forEach((function (e) {
        var t = e[0], n = e[1];
        Us(Ms.prototype, t, (function () {
            return Ms[n]()
        }), !0)
    })), Ms.prototype.movingMediaElementInDOM = !zn, Ms.prototype.featuresFullscreenResize = !0, Ms.prototype.featuresProgressEvents = !0, Ms.prototype.featuresTimeupdateEvents = !0, Ms.patchCanPlayType = function () {
        Ln >= 4 && !Rn && !Mn && (Ds = Ms.TEST_VID && Ms.TEST_VID.constructor.prototype.canPlayType, Ms.TEST_VID.constructor.prototype.canPlayType = function (e) {
            return e && /^application\/(?:x-|vnd\.apple\.)mpegurl/i.test(e) ? "maybe" : Ds.call(this, e)
        })
    }, Ms.unpatchCanPlayType = function () {
        var e = Ms.TEST_VID.constructor.prototype.canPlayType;
        return Ds && (Ms.TEST_VID.constructor.prototype.canPlayType = Ds), e
    }, Ms.patchCanPlayType(), Ms.disposeMediaElement = function (e) {
        if (e) {
            for (e.parentNode && e.parentNode.removeChild(e); e.hasChildNodes();) e.removeChild(e.firstChild);
            e.removeAttribute("src"), "function" == typeof e.load && function () {
                try {
                    e.load()
                } catch (e) {
                }
            }()
        }
    }, Ms.resetMediaElement = function (e) {
        if (e) {
            for (var t = e.querySelectorAll("source"), n = t.length; n--;) e.removeChild(t[n]);
            e.removeAttribute("src"), "function" == typeof e.load && function () {
                try {
                    e.load()
                } catch (e) {
                }
            }()
        }
    }, ["muted", "defaultMuted", "autoplay", "controls", "loop", "playsinline"].forEach((function (e) {
        Ms.prototype[e] = function () {
            return this.el_[e] || this.el_.hasAttribute(e)
        }
    })), ["muted", "defaultMuted", "autoplay", "loop", "playsinline"].forEach((function (e) {
        Ms.prototype["set" + Sn(e)] = function (t) {
            this.el_[e] = t, t ? this.el_.setAttribute(e, e) : this.el_.removeAttribute(e)
        }
    })), ["paused", "currentTime", "buffered", "volume", "poster", "preload", "error", "seeking", "seekable", "ended", "playbackRate", "defaultPlaybackRate", "played", "networkState", "readyState", "videoWidth", "videoHeight", "crossOrigin"].forEach((function (e) {
        Ms.prototype[e] = function () {
            return this.el_[e]
        }
    })), ["volume", "src", "poster", "preload", "playbackRate", "defaultPlaybackRate", "crossOrigin"].forEach((function (e) {
        Ms.prototype["set" + Sn(e)] = function (t) {
            this.el_[e] = t
        }
    })), ["pause", "load", "play"].forEach((function (e) {
        Ms.prototype[e] = function () {
            return this.el_[e]()
        }
    })), Vi.withSourceHandlers(Ms), Ms.nativeSourceHandler = {}, Ms.nativeSourceHandler.canPlayType = function (e) {
        try {
            return Ms.TEST_VID.canPlayType(e)
        } catch (e) {
            return ""
        }
    }, Ms.nativeSourceHandler.canHandleSource = function (e, t) {
        if (e.type) return Ms.nativeSourceHandler.canPlayType(e.type);
        if (e.src) {
            var n = Di(e.src);
            return Ms.nativeSourceHandler.canPlayType("video/" + n)
        }
        return ""
    }, Ms.nativeSourceHandler.handleSource = function (e, t, n) {
        t.setSrc(e.src)
    }, Ms.nativeSourceHandler.dispose = function () {
    }, Ms.registerSourceHandler(Ms.nativeSourceHandler), Vi.registerTech("Html5", Ms);
    var Bs = ["progress", "abort", "suspend", "emptied", "stalled", "loadedmetadata", "loadeddata", "timeupdate", "resize", "volumechange", "texttrackchange"], js = {canplay: "CanPlay", canplaythrough: "CanPlayThrough", playing: "Playing", seeked: "Seeked"}, Fs = ["tiny", "xsmall", "small", "medium", "large", "xlarge", "huge"], Hs = {};
    Fs.forEach((function (e) {
        var t = "x" === e.charAt(0) ? "x-" + e.substring(1) : e;
        Hs[e] = "vjs-layout-" + t
    }));
    var qs = {tiny: 210, xsmall: 320, small: 425, medium: 768, large: 1440, xlarge: 2560, huge: 1 / 0}, Vs = function (e) {
        function t(n, i, r) {
            var s;
            if (n.id = n.id || i.id || "vjs_video_" + Wt(), (i = Ze(t.getTagSettings(n), i)).initChildren = !1, i.createEl = !1, i.evented = !1, i.reportTouchActivity = !1, !i.language) if ("function" == typeof n.closest) {
                var o = n.closest("[lang]");
                o && o.getAttribute && (i.language = o.getAttribute("lang"))
            } else for (var l = n; l && 1 === l.nodeType;) {
                if (vt(l).hasOwnProperty("lang")) {
                    i.language = l.getAttribute("lang");
                    break
                }
                l = l.parentNode
            }
            if ((s = e.call(this, null, i, r) || this).boundDocumentFullscreenChange_ = on(c()(s), s.documentFullscreenChange_), s.boundFullWindowOnEscKey_ = on(c()(s), s.fullWindowOnEscKey), s.isFullscreen_ = !1, s.log = Ke(s.id_), s.fsApi_ = Zn, s.isPosterFromTech_ = !1, s.queuedCallbacks_ = [], s.isReady_ = !1, s.hasStarted_ = !1, s.userActive_ = !1, !s.options_ || !s.options_.techOrder || !s.options_.techOrder.length) throw new Error("No techOrder specified. Did you overwrite videojs.options instead of just changing the properties you want to override?");
            if (s.tag = n, s.tagAttributes = n && vt(n), s.language(s.options_.language), i.languages) {
                var u = {};
                Object.getOwnPropertyNames(i.languages).forEach((function (e) {
                    u[e.toLowerCase()] = i.languages[e]
                })), s.languages_ = u
            } else s.languages_ = t.prototype.options_.languages;
            s.resetCache_(), s.poster_ = i.poster || "", s.controls_ = !!i.controls, n.controls = !1, n.removeAttribute("controls"), s.changingSrc_ = !1, s.playCallbacks_ = [], s.playTerminatedQueue_ = [], n.hasAttribute("autoplay") ? s.autoplay(!0) : s.autoplay(s.options_.autoplay), i.plugins && Object.keys(i.plugins).forEach((function (e) {
                if ("function" != typeof s[e]) throw new Error('plugin "' + e + '" does not exist')
            })), s.scrubbing_ = !1, s.el_ = s.createEl(), _n(c()(s), {eventBusKey: "el_"}), s.fsApi_.requestFullscreen && (Jt(a.a, s.fsApi_.fullscreenchange, s.boundDocumentFullscreenChange_), s.on(s.fsApi_.fullscreenchange, s.boundDocumentFullscreenChange_)), s.fluid_ && s.on("playerreset", s.updateStyleEl_);
            var h = En(s.options_);
            i.plugins && Object.keys(i.plugins).forEach((function (e) {
                s[e](i.plugins[e])
            })), s.options_.playerOptions = h, s.middleware_ = [], s.initChildren(), s.isAudio("audio" === n.nodeName.toLowerCase()), s.controls() ? s.addClass("vjs-controls-enabled") : s.addClass("vjs-controls-disabled"), s.el_.setAttribute("role", "region"), s.isAudio() ? s.el_.setAttribute("aria-label", s.localize("Audio Player")) : s.el_.setAttribute("aria-label", s.localize("Video Player")), s.isAudio() && s.addClass("vjs-audio"), s.flexNotSupported_() && s.addClass("vjs-no-flex"), qn && s.addClass("vjs-touch-enabled"), zn || s.addClass("vjs-workinghover"), t.players[s.id_] = c()(s);
            var d = ze.split(".")[0];
            return s.addClass("vjs-v" + d), s.userActive(!0), s.reportUserActivity(), s.one("play", s.listenForUserActivity_), s.on("stageclick", s.handleStageClick_), s.on("keydown", s.handleKeyDown), s.breakpoints(s.options_.breakpoints), s.responsive(s.options_.responsive), s
        }

        d()(t, e);
        var n = t.prototype;
        return n.dispose = function () {
            var n = this;
            this.trigger("dispose"), this.off("dispose"), Zt(a.a, this.fsApi_.fullscreenchange, this.boundDocumentFullscreenChange_), Zt(a.a, "keydown", this.boundFullWindowOnEscKey_), this.styleEl_ && this.styleEl_.parentNode && (this.styleEl_.parentNode.removeChild(this.styleEl_), this.styleEl_ = null), t.players[this.id_] = null, this.tag && this.tag.player && (this.tag.player = null), this.el_ && this.el_.player && (this.el_.player = null), this.tech_ && (this.tech_.dispose(), this.isPosterFromTech_ = !1, this.poster_ = ""), this.playerElIngest_ && (this.playerElIngest_ = null), this.tag && (this.tag = null), zi[this.id()] = null, qi.names.forEach((function (e) {
                var t = qi[e], i = n[t.getterName]();
                i && i.off && i.off()
            })), e.prototype.dispose.call(this)
        }, n.createEl = function () {
            var t, n = this.tag, i = this.playerElIngest_ = n.parentNode && n.parentNode.hasAttribute && n.parentNode.hasAttribute("data-vjs-player"), s = "video-js" === this.tag.tagName.toLowerCase();
            i ? t = this.el_ = n.parentNode : s || (t = this.el_ = e.prototype.createEl.call(this, "div"));
            var o = vt(n);
            if (s) {
                for (t = this.el_ = n, n = this.tag = a.a.createElement("video"); t.children.length;) n.appendChild(t.firstChild);
                dt(t, "video-js") || ft(t, "video-js"), t.appendChild(n), i = this.playerElIngest_ = t, Object.keys(t).forEach((function (e) {
                    try {
                        n[e] = t[e]
                    } catch (e) {
                    }
                }))
            }
            if (n.setAttribute("tabindex", "-1"), o.tabindex = "-1", (jn || Mn && Hn) && (n.setAttribute("role", "application"), o.role = "application"), n.removeAttribute("width"), n.removeAttribute("height"), "width" in o && delete o.width, "height" in o && delete o.height, Object.getOwnPropertyNames(o).forEach((function (e) {
                s && "class" === e || t.setAttribute(e, o[e]), s && n.setAttribute(e, o[e])
            })), n.playerId = n.id, n.id += "_html5_api", n.className = "vjs-tech", n.player = t.player = this, this.addClass("vjs-paused"), !0 !== r.a.VIDEOJS_NO_DYNAMIC_STYLE) {
                this.styleEl_ = Ht("vjs-styles-dimensions");
                var l = Lt(".vjs-styles-defaults"), u = Lt("head");
                u.insertBefore(this.styleEl_, l ? l.nextSibling : u.firstChild)
            }
            this.fill_ = !1, this.fluid_ = !1, this.width(this.options_.width), this.height(this.options_.height), this.fill(this.options_.fill), this.fluid(this.options_.fluid), this.aspectRatio(this.options_.aspectRatio), this.crossOrigin(this.options_.crossOrigin || this.options_.crossorigin);
            for (var c = n.getElementsByTagName("a"), h = 0; h < c.length; h++) {
                var d = c.item(h);
                ft(d, "vjs-hidden"), d.setAttribute("hidden", "hidden")
            }
            return n.initNetworkState_ = n.networkState, n.parentNode && !i && n.parentNode.insertBefore(t, n), ht(n, t), this.children_.unshift(n), this.el_.setAttribute("lang", this.language_), this.el_ = t, t
        }, n.crossOrigin = function (e) {
            if (!e) return this.techGet_("crossOrigin");
            "anonymous" === e || "use-credentials" === e ? this.techCall_("setCrossOrigin", e) : Xe.warn('crossOrigin must be "anonymous" or "use-credentials", given "' + e + '"')
        }, n.width = function (e) {
            return this.dimension("width", e)
        }, n.height = function (e) {
            return this.dimension("height", e)
        }, n.dimension = function (e, t) {
            var n = e + "_";
            if (void 0 === t) return this[n] || 0;
            if ("" === t || "auto" === t) return this[n] = void 0, void this.updateStyleEl_();
            var i = parseFloat(t);
            isNaN(i) ? Xe.error('Improper value "' + t + '" supplied for for ' + e) : (this[n] = i, this.updateStyleEl_())
        }, n.fluid = function (e) {
            if (void 0 === e) return !!this.fluid_;
            var t, n;
            this.fluid_ = !!e, hn(this) && this.off("playerreset", this.updateStyleEl_), e ? (this.addClass("vjs-fluid"), this.fill(!1), hn(t = function () {
                this.on("playerreset", this.updateStyleEl_)
            }) ? n() : (t.eventedCallbacks || (t.eventedCallbacks = []), t.eventedCallbacks.push(n))) : this.removeClass("vjs-fluid"), this.updateStyleEl_()
        }, n.fill = function (e) {
            if (void 0 === e) return !!this.fill_;
            this.fill_ = !!e, e ? (this.addClass("vjs-fill"), this.fluid(!1)) : this.removeClass("vjs-fill")
        }, n.aspectRatio = function (e) {
            if (void 0 === e) return this.aspectRatio_;
            if (!/^\d+\:\d+$/.test(e)) throw new Error("Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.");
            this.aspectRatio_ = e, this.fluid(!0), this.updateStyleEl_()
        }, n.updateStyleEl_ = function () {
            if (!0 !== r.a.VIDEOJS_NO_DYNAMIC_STYLE) {
                var e, t, n, i = (void 0 !== this.aspectRatio_ && "auto" !== this.aspectRatio_ ? this.aspectRatio_ : this.videoWidth() > 0 ? this.videoWidth() + ":" + this.videoHeight() : "16:9").split(":"), s = i[1] / i[0];
                e = void 0 !== this.width_ ? this.width_ : void 0 !== this.height_ ? this.height_ / s : this.videoWidth() || 300, t = void 0 !== this.height_ ? this.height_ : e * s, n = /^[^a-zA-Z]/.test(this.id()) ? "dimensions-" + this.id() : this.id() + "-dimensions", this.addClass(n), qt(this.styleEl_, "\n      ." + n + " {\n        width: " + e + "px;\n        height: " + t + "px;\n      }\n\n      ." + n + ".vjs-fluid {\n        padding-top: " + 100 * s + "%;\n      }\n    ")
            } else {
                var a = "number" == typeof this.width_ ? this.width_ : this.options_.width, o = "number" == typeof this.height_ ? this.height_ : this.options_.height, l = this.tech_ && this.tech_.el();
                l && (a >= 0 && (l.width = a), o >= 0 && (l.height = o))
            }
        }, n.loadTech_ = function (e, t) {
            var n = this;
            this.tech_ && this.unloadTech_();
            var i = Sn(e), r = e.charAt(0).toLowerCase() + e.slice(1);
            "Html5" !== i && this.tag && (Vi.getTech("Html5").disposeMediaElement(this.tag), this.tag.player = null, this.tag = null), this.techName_ = i, this.isReady_ = !1;
            var s = {source: t, autoplay: "string" != typeof this.autoplay() && this.autoplay(), nativeControlsForTouch: this.options_.nativeControlsForTouch, playerId: this.id(), techId: this.id() + "_" + r + "_api", playsinline: this.options_.playsinline, preload: this.options_.preload, loop: this.options_.loop, muted: this.options_.muted, poster: this.poster(), language: this.language(), playerElIngest: this.playerElIngest_ || !1, "vtt.js": this.options_["vtt.js"], canOverridePoster: !!this.options_.techCanOverridePoster, enableSourceset: this.options_.enableSourceset, Promise: this.options_.Promise};
            qi.names.forEach((function (e) {
                var t = qi[e];
                s[t.getterName] = n[t.privateName]
            })), Ze(s, this.options_[i]), Ze(s, this.options_[r]), Ze(s, this.options_[e.toLowerCase()]), this.tag && (s.tag = this.tag), t && t.src === this.cache_.src && this.cache_.currentTime > 0 && (s.startTime = this.cache_.currentTime);
            var a = Vi.getTech(e);
            if (!a) throw new Error("No Tech named '" + i + "' exists! '" + i + "' should be registered using videojs.registerTech()'");
            this.tech_ = new a(s), this.tech_.ready(on(this, this.handleTechReady_), !0), ci(this.textTracksJson_ || [], this.tech_), Bs.forEach((function (e) {
                n.on(n.tech_, e, n["handleTech" + Sn(e) + "_"])
            })), Object.keys(js).forEach((function (e) {
                n.on(n.tech_, e, (function (t) {
                    0 === n.tech_.playbackRate() && n.tech_.seeking() ? n.queuedCallbacks_.push({callback: n["handleTech" + js[e] + "_"].bind(n), event: t}) : n["handleTech" + js[e] + "_"](t)
                }))
            })), this.on(this.tech_, "loadstart", this.handleTechLoadStart_), this.on(this.tech_, "sourceset", this.handleTechSourceset_), this.on(this.tech_, "waiting", this.handleTechWaiting_), this.on(this.tech_, "ended", this.handleTechEnded_), this.on(this.tech_, "seeking", this.handleTechSeeking_), this.on(this.tech_, "play", this.handleTechPlay_), this.on(this.tech_, "firstplay", this.handleTechFirstPlay_), this.on(this.tech_, "pause", this.handleTechPause_), this.on(this.tech_, "durationchange", this.handleTechDurationChange_), this.on(this.tech_, "fullscreenchange", this.handleTechFullscreenChange_), this.on(this.tech_, "fullscreenerror", this.handleTechFullscreenError_), this.on(this.tech_, "enterpictureinpicture", this.handleTechEnterPictureInPicture_), this.on(this.tech_, "leavepictureinpicture", this.handleTechLeavePictureInPicture_), this.on(this.tech_, "error", this.handleTechError_), this.on(this.tech_, "loadedmetadata", this.updateStyleEl_), this.on(this.tech_, "posterchange", this.handleTechPosterChange_), this.on(this.tech_, "textdata", this.handleTechTextData_), this.on(this.tech_, "ratechange", this.handleTechRateChange_), this.usingNativeControls(this.techGet_("controls")), this.controls() && !this.usingNativeControls() && this.addTechControlsListeners_(), this.tech_.el().parentNode === this.el() || "Html5" === i && this.tag || ht(this.tech_.el(), this.el()), this.tag && (this.tag.player = null, this.tag = null)
        }, n.unloadTech_ = function () {
            var e = this;
            qi.names.forEach((function (t) {
                var n = qi[t];
                e[n.privateName] = e[n.getterName]()
            })), this.textTracksJson_ = ui(this.tech_), this.isReady_ = !1, this.tech_.dispose(), this.tech_ = !1, this.isPosterFromTech_ && (this.poster_ = "", this.trigger("posterchange")), this.isPosterFromTech_ = !1
        }, n.tech = function (e) {
            return void 0 === e && Xe.warn("Using the tech directly can be dangerous. I hope you know what you're doing.\nSee https://github.com/videojs/video.js/issues/2617 for more info.\n"), this.tech_
        }, n.addTechControlsListeners_ = function () {
            this.removeTechControlsListeners_(), this.on(this.tech_, "mouseup", this.handleTechClick_), this.on(this.tech_, "dblclick", this.handleTechDoubleClick_), this.on(this.tech_, "touchstart", this.handleTechTouchStart_), this.on(this.tech_, "touchmove", this.handleTechTouchMove_), this.on(this.tech_, "touchend", this.handleTechTouchEnd_), this.on(this.tech_, "tap", this.handleTechTap_)
        }, n.removeTechControlsListeners_ = function () {
            this.off(this.tech_, "tap", this.handleTechTap_), this.off(this.tech_, "touchstart", this.handleTechTouchStart_), this.off(this.tech_, "touchmove", this.handleTechTouchMove_), this.off(this.tech_, "touchend", this.handleTechTouchEnd_), this.off(this.tech_, "mouseup", this.handleTechClick_), this.off(this.tech_, "dblclick", this.handleTechDoubleClick_)
        }, n.handleTechReady_ = function () {
            this.triggerReady(), this.cache_.volume && this.techCall_("setVolume", this.cache_.volume), this.handleTechPosterChange_(), this.handleTechDurationChange_()
        }, n.handleTechLoadStart_ = function () {
            this.removeClass("vjs-ended"), this.removeClass("vjs-seeking"), this.error(null), this.handleTechDurationChange_(), this.paused() ? (this.hasStarted(!1), this.trigger("loadstart")) : (this.trigger("loadstart"), this.trigger("firstplay")), this.manualAutoplay_(this.autoplay())
        }, n.manualAutoplay_ = function (e) {
            var t = this;
            if (this.tech_ && "string" == typeof e) {
                var n, i = function () {
                    var e = t.muted();
                    t.muted(!0);
                    var n = function () {
                        t.muted(e)
                    };
                    t.playTerminatedQueue_.push(n);
                    var i = t.play();
                    if (ai(i)) return i.catch(n)
                };
                if ("any" === e && !0 !== this.muted() ? ai(n = this.play()) && (n = n.catch(i)) : n = "muted" === e && !0 !== this.muted() ? i() : this.play(), ai(n)) return n.then((function () {
                    t.trigger({type: "autoplay-success", autoplay: e})
                })).catch((function (n) {
                    t.trigger({type: "autoplay-failure", autoplay: e})
                }))
            }
        }, n.updateSourceCaches_ = function (e) {
            void 0 === e && (e = "");
            var t = e, n = "";
            "string" != typeof t && (t = e.src, n = e.type), this.cache_.source = this.cache_.source || {}, this.cache_.sources = this.cache_.sources || [], t && !n && (n = function (e, t) {
                if (!t) return "";
                if (e.cache_.source.src === t && e.cache_.source.type) return e.cache_.source.type;
                var n = e.cache_.sources.filter((function (e) {
                    return e.src === t
                }));
                if (n.length) return n[0].type;
                for (var i = e.$$("source"), r = 0; r < i.length; r++) {
                    var s = i[r];
                    if (s.type && s.src && s.src === t) return s.type
                }
                return er(t)
            }(this, t)), this.cache_.source = En({}, e, {src: t, type: n});
            for (var i = this.cache_.sources.filter((function (e) {
                return e.src && e.src === t
            })), r = [], s = this.$$("source"), a = [], o = 0; o < s.length; o++) {
                var l = vt(s[o]);
                r.push(l), l.src && l.src === t && a.push(l.src)
            }
            a.length && !i.length ? this.cache_.sources = r : i.length || (this.cache_.sources = [this.cache_.source]), this.cache_.src = t
        }, n.handleTechSourceset_ = function (e) {
            var t = this;
            if (!this.changingSrc_) {
                var n = function (e) {
                    return t.updateSourceCaches_(e)
                }, i = this.currentSource().src, r = e.src;
                i && !/^blob:/.test(i) && /^blob:/.test(r) && (!this.lastSource_ || this.lastSource_.tech !== r && this.lastSource_.player !== i) && (n = function () {
                }), n(r), e.src || this.tech_.any(["sourceset", "loadstart"], (function (e) {
                    if ("sourceset" !== e.type) {
                        var n = t.techGet("currentSrc");
                        t.lastSource_.tech = n, t.updateSourceCaches_(n)
                    }
                }))
            }
            this.lastSource_ = {player: this.currentSource().src, tech: e.src}, this.trigger({src: e.src, type: "sourceset"})
        }, n.hasStarted = function (e) {
            if (void 0 === e) return this.hasStarted_;
            e !== this.hasStarted_ && (this.hasStarted_ = e, this.hasStarted_ ? (this.addClass("vjs-has-started"), this.trigger("firstplay")) : this.removeClass("vjs-has-started"))
        }, n.handleTechPlay_ = function () {
            this.removeClass("vjs-ended"), this.removeClass("vjs-paused"), this.addClass("vjs-playing"), this.hasStarted(!0), this.trigger("play")
        }, n.handleTechRateChange_ = function () {
            this.tech_.playbackRate() > 0 && 0 === this.cache_.lastPlaybackRate && (this.queuedCallbacks_.forEach((function (e) {
                return e.callback(e.event)
            })), this.queuedCallbacks_ = []), this.cache_.lastPlaybackRate = this.tech_.playbackRate(), this.trigger("ratechange")
        }, n.handleTechWaiting_ = function () {
            var e = this;
            this.addClass("vjs-waiting"), this.trigger("waiting");
            var t = this.currentTime();
            this.on("timeupdate", (function n() {
                t !== e.currentTime() && (e.removeClass("vjs-waiting"), e.off("timeupdate", n))
            }))
        }, n.handleTechCanPlay_ = function () {
            this.removeClass("vjs-waiting"), this.trigger("canplay")
        }, n.handleTechCanPlayThrough_ = function () {
            this.removeClass("vjs-waiting"), this.trigger("canplaythrough")
        }, n.handleTechPlaying_ = function () {
            this.removeClass("vjs-waiting"), this.trigger("playing")
        }, n.handleTechSeeking_ = function () {
            this.addClass("vjs-seeking"), this.trigger("seeking")
        }, n.handleTechSeeked_ = function () {
            this.removeClass("vjs-seeking"), this.removeClass("vjs-ended"), this.trigger("seeked")
        }, n.handleTechFirstPlay_ = function () {
            this.options_.starttime && (Xe.warn("Passing the `starttime` option to the player will be deprecated in 6.0"), this.currentTime(this.options_.starttime)), this.addClass("vjs-has-started"), this.trigger("firstplay")
        }, n.handleTechPause_ = function () {
            this.removeClass("vjs-playing"), this.addClass("vjs-paused"), this.trigger("pause")
        }, n.handleTechEnded_ = function () {
            this.addClass("vjs-ended"), this.options_.loop ? (this.currentTime(0), this.play()) : this.paused() || this.pause(), this.trigger("ended")
        }, n.handleTechDurationChange_ = function () {
            this.duration(this.techGet_("duration"))
        }, n.handleTechClick_ = function (e) {
            Pt(e) && this.controls_ && (this.paused() ? oi(this.play()) : this.pause())
        }, n.handleTechDoubleClick_ = function (e) {
            this.controls_ && (Array.prototype.some.call(this.$$(".vjs-control-bar, .vjs-modal-dialog"), (function (t) {
                return t.contains(e.target)
            })) || void 0 !== this.options_ && void 0 !== this.options_.userActions && void 0 !== this.options_.userActions.doubleClick && !1 === this.options_.userActions.doubleClick || (void 0 !== this.options_ && void 0 !== this.options_.userActions && "function" == typeof this.options_.userActions.doubleClick ? this.options_.userActions.doubleClick.call(this, e) : this.isFullscreen() ? this.exitFullscreen() : this.requestFullscreen()))
        }, n.handleTechTap_ = function () {
            this.userActive(!this.userActive())
        }, n.handleTechTouchStart_ = function () {
            this.userWasActive = this.userActive()
        }, n.handleTechTouchMove_ = function () {
            this.userWasActive && this.reportUserActivity()
        }, n.handleTechTouchEnd_ = function (e) {
            e.preventDefault()
        }, n.handleStageClick_ = function () {
            this.reportUserActivity()
        }, n.toggleFullscreenClass_ = function () {
            this.isFullscreen() ? this.addClass("vjs-fullscreen") : this.removeClass("vjs-fullscreen")
        }, n.documentFullscreenChange_ = function (e) {
            var t = e.target.player;
            if (!t || t === this) {
                var n = this.el(), i = a.a[this.fsApi_.fullscreenElement] === n;
                !i && n.matches ? i = n.matches(":" + this.fsApi_.fullscreen) : !i && n.msMatchesSelector && (i = n.msMatchesSelector(":" + this.fsApi_.fullscreen)), this.isFullscreen(i)
            }
        }, n.handleTechFullscreenChange_ = function (e, t) {
            t && (t.nativeIOSFullscreen && this.toggleClass("vjs-ios-native-fs"), this.isFullscreen(t.isFullscreen))
        }, n.handleTechFullscreenError_ = function (e, t) {
            this.trigger("fullscreenerror", t)
        }, n.togglePictureInPictureClass_ = function () {
            this.isInPictureInPicture() ? this.addClass("vjs-picture-in-picture") : this.removeClass("vjs-picture-in-picture")
        }, n.handleTechEnterPictureInPicture_ = function (e) {
            this.isInPictureInPicture(!0)
        }, n.handleTechLeavePictureInPicture_ = function (e) {
            this.isInPictureInPicture(!1)
        }, n.handleTechError_ = function () {
            var e = this.tech_.error();
            this.error(e)
        }, n.handleTechTextData_ = function () {
            var e = null;
            arguments.length > 1 && (e = arguments[1]), this.trigger("textdata", e)
        }, n.getCache = function () {
            return this.cache_
        }, n.resetCache_ = function () {
            this.cache_ = {currentTime: 0, initTime: 0, inactivityTimeout: this.options_.inactivityTimeout, duration: NaN, lastVolume: 1, lastPlaybackRate: this.defaultPlaybackRate(), media: null, src: "", source: {}, sources: [], volume: 1}
        }, n.techCall_ = function (e, t) {
            this.ready((function () {
                if (e in $i) return function (e, t, n, i) {
                    return t[n](e.reduce(Ji(n), i))
                }(this.middleware_, this.tech_, e, t);
                if (e in Qi) return Xi(this.middleware_, this.tech_, e, t);
                try {
                    this.tech_ && this.tech_[e](t)
                } catch (e) {
                    throw Xe(e), e
                }
            }), !0)
        }, n.techGet_ = function (e) {
            if (this.tech_ && this.tech_.isReady_) {
                if (e in Ki) return function (e, t, n) {
                    return e.reduceRight(Ji(n), t[n]())
                }(this.middleware_, this.tech_, e);
                if (e in Qi) return Xi(this.middleware_, this.tech_, e);
                try {
                    return this.tech_[e]()
                } catch (t) {
                    if (void 0 === this.tech_[e]) throw Xe("Video.js: " + e + " method not defined for " + this.techName_ + " playback technology.", t), t;
                    if ("TypeError" === t.name) throw Xe("Video.js: " + e + " unavailable on " + this.techName_ + " playback technology element.", t), this.tech_.isReady_ = !1, t;
                    throw Xe(t), t
                }
            }
        }, n.play = function () {
            var e = this, t = this.options_.Promise || r.a.Promise;
            return t ? new t((function (t) {
                e.play_(t)
            })) : this.play_()
        }, n.play_ = function (e) {
            var t = this;
            void 0 === e && (e = oi), this.playCallbacks_.push(e);
            var n = Boolean(!this.changingSrc_ && (this.src() || this.currentSrc()));
            if (this.waitToPlay_ && (this.off(["ready", "loadstart"], this.waitToPlay_), this.waitToPlay_ = null), !this.isReady_ || !n) return this.waitToPlay_ = function (e) {
                t.play_()
            }, this.one(["ready", "loadstart"], this.waitToPlay_), void (n || !Gn && !zn || this.load());
            var i = this.techGet_("play");
            null === i ? this.runPlayTerminatedQueue_() : this.runPlayCallbacks_(i)
        }, n.runPlayTerminatedQueue_ = function () {
            var e = this.playTerminatedQueue_.slice(0);
            this.playTerminatedQueue_ = [], e.forEach((function (e) {
                e()
            }))
        }, n.runPlayCallbacks_ = function (e) {
            var t = this.playCallbacks_.slice(0);
            this.playCallbacks_ = [], this.playTerminatedQueue_ = [], t.forEach((function (t) {
                t(e)
            }))
        }, n.pause = function () {
            this.techCall_("pause")
        }, n.paused = function () {
            return !1 !== this.techGet_("paused")
        }, n.played = function () {
            return this.techGet_("played") || $n(0, 0)
        }, n.scrubbing = function (e) {
            if (void 0 === e) return this.scrubbing_;
            this.scrubbing_ = !!e, e ? this.addClass("vjs-scrubbing") : this.removeClass("vjs-scrubbing")
        }, n.currentTime = function (e) {
            return void 0 !== e ? (e < 0 && (e = 0), this.isReady_ && !this.changingSrc_ && this.tech_ && this.tech_.isReady_ ? (this.techCall_("setCurrentTime", e), void (this.cache_.initTime = 0)) : (this.cache_.initTime = e, this.off("canplay", this.applyInitTime_), void this.one("canplay", this.applyInitTime_))) : (this.cache_.currentTime = this.techGet_("currentTime") || 0, this.cache_.currentTime)
        }, n.applyInitTime_ = function () {
            this.currentTime(this.cache_.initTime)
        }, n.duration = function (e) {
            if (void 0 === e) return void 0 !== this.cache_.duration ? this.cache_.duration : NaN;
            (e = parseFloat(e)) < 0 && (e = 1 / 0), e !== this.cache_.duration && (this.cache_.duration = e, e === 1 / 0 ? this.addClass("vjs-live") : this.removeClass("vjs-live"), isNaN(e) || this.trigger("durationchange"))
        }, n.remainingTime = function () {
            return this.duration() - this.currentTime()
        }, n.remainingTimeDisplay = function () {
            return Math.floor(this.duration()) - Math.floor(this.currentTime())
        }, n.buffered = function () {
            var e = this.techGet_("buffered");
            return e && e.length || (e = $n(0, 0)), e
        }, n.bufferedPercent = function () {
            return Qn(this.buffered(), this.duration())
        }, n.bufferedEnd = function () {
            var e = this.buffered(), t = this.duration(), n = e.end(e.length - 1);
            return n > t && (n = t), n
        }, n.volume = function (e) {
            var t;
            return void 0 !== e ? (t = Math.max(0, Math.min(1, parseFloat(e))), this.cache_.volume = t, this.techCall_("setVolume", t), void (t > 0 && this.lastVolume_(t))) : (t = parseFloat(this.techGet_("volume")), isNaN(t) ? 1 : t)
        }, n.muted = function (e) {
            if (void 0 === e) return this.techGet_("muted") || !1;
            this.techCall_("setMuted", e)
        }, n.defaultMuted = function (e) {
            return void 0 !== e ? this.techCall_("setDefaultMuted", e) : this.techGet_("defaultMuted") || !1
        }, n.lastVolume_ = function (e) {
            if (void 0 === e || 0 === e) return this.cache_.lastVolume;
            this.cache_.lastVolume = e
        }, n.supportsFullScreen = function () {
            return this.techGet_("supportsFullScreen") || !1
        }, n.isFullscreen = function (e) {
            if (void 0 !== e) {
                var t = this.isFullscreen_;
                return this.isFullscreen_ = Boolean(e), this.isFullscreen_ !== t && this.fsApi_.prefixed && this.trigger("fullscreenchange"), void this.toggleFullscreenClass_()
            }
            return this.isFullscreen_
        }, n.requestFullscreen = function (e) {
            var t = this.options_.Promise || r.a.Promise;
            if (t) {
                var n = this;
                return new t((function (t, i) {
                    function r() {
                        n.off("fullscreenerror", a), n.off("fullscreenchange", s)
                    }

                    function s() {
                        r(), t()
                    }

                    function a(e, t) {
                        r(), i(t)
                    }

                    n.one("fullscreenchange", s), n.one("fullscreenerror", a);
                    var o = n.requestFullscreenHelper_(e);
                    if (o) return o.then(r, r), o
                }))
            }
            return this.requestFullscreenHelper_()
        }, n.requestFullscreenHelper_ = function (e) {
            var t, n = this;
            if (this.fsApi_.prefixed || (t = this.options_.fullscreen && this.options_.fullscreen.options || {}, void 0 !== e && (t = e)), this.fsApi_.requestFullscreen) {
                var i = this.el_[this.fsApi_.requestFullscreen](t);
                return i && i.then((function () {
                    return n.isFullscreen(!0)
                }), (function () {
                    return n.isFullscreen(!1)
                })), i
            }
            this.tech_.supportsFullScreen() ? this.techCall_("enterFullScreen") : this.enterFullWindow()
        }, n.exitFullscreen = function () {
            var e = this.options_.Promise || r.a.Promise;
            if (e) {
                var t = this;
                return new e((function (e, n) {
                    function i() {
                        t.off("fullscreenerror", s), t.off("fullscreenchange", r)
                    }

                    function r() {
                        i(), e()
                    }

                    function s(e, t) {
                        i(), n(t)
                    }

                    t.one("fullscreenchange", r), t.one("fullscreenerror", s);
                    var a = t.exitFullscreenHelper_();
                    if (a) return a.then(i, i), a
                }))
            }
            return this.exitFullscreenHelper_()
        }, n.exitFullscreenHelper_ = function () {
            var e = this;
            if (this.fsApi_.requestFullscreen) {
                var t = a.a[this.fsApi_.exitFullscreen]();
                return t && t.then((function () {
                    return e.isFullscreen(!1)
                })), t
            }
            this.tech_.supportsFullScreen() ? this.techCall_("exitFullScreen") : this.exitFullWindow()
        }, n.enterFullWindow = function () {
            this.isFullscreen(!0), this.isFullWindow = !0, this.docOrigOverflow = a.a.documentElement.style.overflow, Jt(a.a, "keydown", this.boundFullWindowOnEscKey_), a.a.documentElement.style.overflow = "hidden", ft(a.a.body, "vjs-full-window"), this.trigger("enterFullWindow")
        }, n.fullWindowOnEscKey = function (e) {
            g.a.isEventKey(e, "Esc") && (!0 === this.isFullscreen() ? this.exitFullscreen() : this.exitFullWindow())
        }, n.exitFullWindow = function () {
            this.isFullscreen(!1), this.isFullWindow = !1, Zt(a.a, "keydown", this.boundFullWindowOnEscKey_), a.a.documentElement.style.overflow = this.docOrigOverflow, pt(a.a.body, "vjs-full-window"), this.trigger("exitFullWindow")
        }, n.isInPictureInPicture = function (e) {
            return void 0 !== e ? (this.isInPictureInPicture_ = !!e, void this.togglePictureInPictureClass_()) : !!this.isInPictureInPicture_
        }, n.requestPictureInPicture = function () {
            if ("pictureInPictureEnabled" in a.a) return this.techGet_("requestPictureInPicture")
        }, n.exitPictureInPicture = function () {
            if ("pictureInPictureEnabled" in a.a) return a.a.exitPictureInPicture()
        }, n.handleKeyDown = function (e) {
            var t = this.options_.userActions;
            if (t && t.hotkeys) {
                (function (e) {
                    var t = e.tagName.toLowerCase();
                    if (e.isContentEditable) return !0;
                    if ("input" === t) return -1 === ["button", "checkbox", "hidden", "radio", "reset", "submit"].indexOf(e.type);
                    return -1 !== ["textarea"].indexOf(t)
                })(this.el_.ownerDocument.activeElement) || ("function" == typeof t.hotkeys ? t.hotkeys.call(this, e) : this.handleHotkeys(e))
            }
        }, n.handleHotkeys = function (e) {
            var t = this.options_.userActions ? this.options_.userActions.hotkeys : {}, n = t.fullscreenKey, i = void 0 === n ? function (e) {
                return g.a.isEventKey(e, "f")
            } : n, r = t.muteKey, s = void 0 === r ? function (e) {
                return g.a.isEventKey(e, "m")
            } : r, o = t.playPauseKey, l = void 0 === o ? function (e) {
                return g.a.isEventKey(e, "k") || g.a.isEventKey(e, "Space")
            } : o;
            if (i.call(this, e)) {
                e.preventDefault(), e.stopPropagation();
                var u = Cn.getComponent("FullscreenToggle");
                !1 !== a.a[this.fsApi_.fullscreenEnabled] && u.prototype.handleClick.call(this, e)
            } else if (s.call(this, e)) {
                e.preventDefault(), e.stopPropagation(), Cn.getComponent("MuteToggle").prototype.handleClick.call(this, e)
            } else if (l.call(this, e)) {
                e.preventDefault(), e.stopPropagation(), Cn.getComponent("PlayToggle").prototype.handleClick.call(this, e)
            }
        }, n.canPlayType = function (e) {
            for (var t, n = 0, i = this.options_.techOrder; n < i.length; n++) {
                var r = i[n], s = Vi.getTech(r);
                if (s || (s = Cn.getComponent(r)), s) {
                    if (s.isSupported() && (t = s.canPlayType(e))) return t
                } else Xe.error('The "' + r + '" tech is undefined. Skipped browser support check for that tech.')
            }
            return ""
        }, n.selectSource = function (e) {
            var t, n = this, i = this.options_.techOrder.map((function (e) {
                return [e, Vi.getTech(e)]
            })).filter((function (e) {
                var t = e[0], n = e[1];
                return n ? n.isSupported() : (Xe.error('The "' + t + '" tech is undefined. Skipped browser support check for that tech.'), !1)
            })), r = function (e, t, n) {
                var i;
                return e.some((function (e) {
                    return t.some((function (t) {
                        if (i = n(e, t)) return !0
                    }))
                })), i
            }, s = function (e, t) {
                var i = e[0];
                if (e[1].canPlaySource(t, n.options_[i.toLowerCase()])) return {source: t, tech: i}
            };
            return (this.options_.sourceOrder ? r(e, i, (t = s, function (e, n) {
                return t(n, e)
            })) : r(i, e, s)) || !1
        }, n.src = function (e) {
            var t = this;
            if (void 0 === e) return this.cache_.src || "";
            var n = function e(t) {
                if (Array.isArray(t)) {
                    var n = [];
                    t.forEach((function (t) {
                        t = e(t), Array.isArray(t) ? n = n.concat(t) : et(t) && n.push(t)
                    })), t = n
                } else t = "string" == typeof t && t.trim() ? [tr({src: t})] : et(t) && "string" == typeof t.src && t.src && t.src.trim() ? [tr(t)] : [];
                return t
            }(e);
            n.length ? (this.changingSrc_ = !0, this.cache_.sources = n, this.updateSourceCaches_(n[0]), Yi(this, n[0], (function (e, i) {
                var r, s;
                if (t.middleware_ = i, t.cache_.sources = n, t.updateSourceCaches_(e), t.src_(e)) return n.length > 1 ? t.src(n.slice(1)) : (t.changingSrc_ = !1, t.setTimeout((function () {
                    this.error({code: 4, message: this.localize(this.options_.notSupportedMessage)})
                }), 0), void t.triggerReady());
                r = i, s = t.tech_, r.forEach((function (e) {
                    return e.setTech && e.setTech(s)
                }))
            }))) : this.setTimeout((function () {
                this.error({code: 4, message: this.localize(this.options_.notSupportedMessage)})
            }), 0)
        }, n.src_ = function (e) {
            var t, n, i = this, r = this.selectSource([e]);
            return !r || (t = r.tech, n = this.techName_, Sn(t) !== Sn(n) ? (this.changingSrc_ = !0, this.loadTech_(r.tech, r.source), this.tech_.ready((function () {
                i.changingSrc_ = !1
            })), !1) : (this.ready((function () {
                this.tech_.constructor.prototype.hasOwnProperty("setSource") ? this.techCall_("setSource", e) : this.techCall_("src", e.src), this.changingSrc_ = !1
            }), !0), !1))
        }, n.load = function () {
            this.techCall_("load")
        }, n.reset = function () {
            var e = this, t = this.options_.Promise || r.a.Promise;
            this.paused() || !t ? this.doReset_() : oi(this.play().then((function () {
                return e.doReset_()
            })))
        }, n.doReset_ = function () {
            this.tech_ && this.tech_.clearTracks("text"), this.resetCache_(), this.poster(""), this.loadTech_(this.options_.techOrder[0], null), this.techCall_("reset"), this.resetControlBarUI_(), hn(this) && this.trigger("playerreset")
        }, n.resetControlBarUI_ = function () {
            this.resetProgressBar_(), this.resetPlaybackRate_(), this.resetVolumeBar_()
        }, n.resetProgressBar_ = function () {
            this.currentTime(0);
            var e = this.controlBar, t = e.durationDisplay, n = e.remainingTimeDisplay;
            t && t.updateContent(), n && n.updateContent()
        }, n.resetPlaybackRate_ = function () {
            this.playbackRate(this.defaultPlaybackRate()), this.handleTechRateChange_()
        }, n.resetVolumeBar_ = function () {
            this.volume(1), this.trigger("volumechange")
        }, n.currentSources = function () {
            var e = this.currentSource(), t = [];
            return 0 !== Object.keys(e).length && t.push(e), this.cache_.sources || t
        }, n.currentSource = function () {
            return this.cache_.source || {}
        }, n.currentSrc = function () {
            return this.currentSource() && this.currentSource().src || ""
        },n.currentType = function () {
            return this.currentSource() && this.currentSource().type || ""
        },n.preload = function (e) {
            return void 0 !== e ? (this.techCall_("setPreload", e), void (this.options_.preload = e)) : this.techGet_("preload")
        },n.autoplay = function (e) {
            if (void 0 === e) return this.options_.autoplay || !1;
            var t;
            "string" == typeof e && /(any|play|muted)/.test(e) ? (this.options_.autoplay = e, this.manualAutoplay_(e), t = !1) : this.options_.autoplay = !!e, t = void 0 === t ? this.options_.autoplay : t, this.tech_ && this.techCall_("setAutoplay", t)
        },n.playsinline = function (e) {
            return void 0 !== e ? (this.techCall_("setPlaysinline", e), this.options_.playsinline = e, this) : this.techGet_("playsinline")
        },n.loop = function (e) {
            return void 0 !== e ? (this.techCall_("setLoop", e), void (this.options_.loop = e)) : this.techGet_("loop")
        },n.poster = function (e) {
            if (void 0 === e) return this.poster_;
            e || (e = ""), e !== this.poster_ && (this.poster_ = e, this.techCall_("setPoster", e), this.isPosterFromTech_ = !1, this.trigger("posterchange"))
        },n.handleTechPosterChange_ = function () {
            if ((!this.poster_ || this.options_.techCanOverridePoster) && this.tech_ && this.tech_.poster) {
                var e = this.tech_.poster() || "";
                e !== this.poster_ && (this.poster_ = e, this.isPosterFromTech_ = !0, this.trigger("posterchange"))
            }
        },n.controls = function (e) {
            if (void 0 === e) return !!this.controls_;
            e = !!e, this.controls_ !== e && (this.controls_ = e, this.usingNativeControls() && this.techCall_("setControls", e), this.controls_ ? (this.removeClass("vjs-controls-disabled"), this.addClass("vjs-controls-enabled"), this.trigger("controlsenabled"), this.usingNativeControls() || this.addTechControlsListeners_()) : (this.removeClass("vjs-controls-enabled"), this.addClass("vjs-controls-disabled"), this.trigger("controlsdisabled"), this.usingNativeControls() || this.removeTechControlsListeners_()))
        },n.usingNativeControls = function (e) {
            if (void 0 === e) return !!this.usingNativeControls_;
            e = !!e, this.usingNativeControls_ !== e && (this.usingNativeControls_ = e, this.usingNativeControls_ ? (this.addClass("vjs-using-native-controls"), this.trigger("usingnativecontrols")) : (this.removeClass("vjs-using-native-controls"), this.trigger("usingcustomcontrols")))
        },n.error = function (e) {
            if (void 0 === e) return this.error_ || null;
            if (this.options_.suppressNotSupportedError && e && 4 === e.code) {
                var t = function () {
                    this.error(e)
                };
                return this.options_.suppressNotSupportedError = !1, this.any(["click", "touchstart"], t), void this.one("loadstart", (function () {
                    this.off(["click", "touchstart"], t)
                }))
            }
            if (null === e) return this.error_ = e, this.removeClass("vjs-error"), void (this.errorDisplay && this.errorDisplay.close());
            this.error_ = new ri(e), this.addClass("vjs-error"), Xe.error("(CODE:" + this.error_.code + " " + ri.errorTypes[this.error_.code] + ")", this.error_.message, this.error_), this.trigger("error")
        },n.reportUserActivity = function (e) {
            this.userActivity_ = !0
        },n.userActive = function (e) {
            if (void 0 === e) return this.userActive_;
            if ((e = !!e) !== this.userActive_) {
                if (this.userActive_ = e, this.userActive_) return this.userActivity_ = !0, this.removeClass("vjs-user-inactive"), this.addClass("vjs-user-active"), void this.trigger("useractive");
                this.tech_ && this.tech_.one("mousemove", (function (e) {
                    e.stopPropagation(), e.preventDefault()
                })), this.userActivity_ = !1, this.removeClass("vjs-user-active"), this.addClass("vjs-user-inactive"), this.trigger("userinactive")
            }
        },n.listenForUserActivity_ = function () {
            var e, t, n, i = on(this, this.reportUserActivity), r = function (t) {
                i(), this.clearInterval(e)
            };
            this.on("mousedown", (function () {
                i(), this.clearInterval(e), e = this.setInterval(i, 250)
            })), this.on("mousemove", (function (e) {
                e.screenX === t && e.screenY === n || (t = e.screenX, n = e.screenY, i())
            })), this.on("mouseup", r), this.on("mouseleave", r);
            var s, a = this.getChild("controlBar");
            !a || zn || On || (a.on("mouseenter", (function (e) {
                this.player().cache_.inactivityTimeout = this.player().options_.inactivityTimeout, this.player().options_.inactivityTimeout = 0
            })), a.on("mouseleave", (function (e) {
                this.player().options_.inactivityTimeout = this.player().cache_.inactivityTimeout
            }))), this.on("keydown", i), this.on("keyup", i), this.setInterval((function () {
                if (this.userActivity_) {
                    this.userActivity_ = !1, this.userActive(!0), this.clearTimeout(s);
                    var e = this.options_.inactivityTimeout;
                    e <= 0 || (s = this.setTimeout((function () {
                        this.userActivity_ || this.userActive(!1)
                    }), e))
                }
            }), 250)
        },n.playbackRate = function (e) {
            if (void 0 === e) return this.tech_ && this.tech_.featuresPlaybackRate ? this.cache_.lastPlaybackRate || this.techGet_("playbackRate") : 1;
            this.techCall_("setPlaybackRate", e)
        },n.defaultPlaybackRate = function (e) {
            return void 0 !== e ? this.techCall_("setDefaultPlaybackRate", e) : this.tech_ && this.tech_.featuresPlaybackRate ? this.techGet_("defaultPlaybackRate") : 1
        },n.isAudio = function (e) {
            if (void 0 === e) return !!this.isAudio_;
            this.isAudio_ = !!e
        },n.addTextTrack = function (e, t, n) {
            if (this.tech_) return this.tech_.addTextTrack(e, t, n)
        },n.addRemoteTextTrack = function (e, t) {
            if (this.tech_) return this.tech_.addRemoteTextTrack(e, t)
        },n.removeRemoteTextTrack = function (e) {
            void 0 === e && (e = {});
            var t = e.track;
            if (t || (t = e), this.tech_) return this.tech_.removeRemoteTextTrack(t)
        },n.getVideoPlaybackQuality = function () {
            return this.techGet_("getVideoPlaybackQuality")
        },n.videoWidth = function () {
            return this.tech_ && this.tech_.videoWidth && this.tech_.videoWidth() || 0
        },n.videoHeight = function () {
            return this.tech_ && this.tech_.videoHeight && this.tech_.videoHeight() || 0
        },n.language = function (e) {
            if (void 0 === e) return this.language_;
            this.language_ = String(e).toLowerCase()
        },n.languages = function () {
            return En(t.prototype.options_.languages, this.languages_)
        },n.toJSON = function () {
            var e = En(this.options_), t = e.tracks;
            e.tracks = [];
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                (i = En(i)).player = void 0, e.tracks[n] = i
            }
            return e
        },n.createModal = function (e, t) {
            var n = this;
            (t = t || {}).content = e || "";
            var i = new di(this, t);
            return this.addChild(i), i.on("dispose", (function () {
                n.removeChild(i)
            })), i.open(), i
        },n.updateCurrentBreakpoint_ = function () {
            if (this.responsive()) for (var e = this.currentBreakpoint(), t = this.currentWidth(), n = 0; n < Fs.length; n++) {
                var i = Fs[n];
                if (t <= this.breakpoints_[i]) {
                    if (e === i) return;
                    e && this.removeClass(Hs[e]), this.addClass(Hs[i]), this.breakpoint_ = i;
                    break
                }
            }
        },n.removeCurrentBreakpoint_ = function () {
            var e = this.currentBreakpointClass();
            this.breakpoint_ = "", e && this.removeClass(e)
        },n.breakpoints = function (e) {
            return void 0 === e ? Ze(this.breakpoints_) : (this.breakpoint_ = "", this.breakpoints_ = Ze({}, qs, e), this.updateCurrentBreakpoint_(), Ze(this.breakpoints_))
        },n.responsive = function (e) {
            return void 0 === e ? this.responsive_ : (e = Boolean(e)) !== this.responsive_ ? (this.responsive_ = e, e ? (this.on("playerresize", this.updateCurrentBreakpoint_), this.updateCurrentBreakpoint_()) : (this.off("playerresize", this.updateCurrentBreakpoint_), this.removeCurrentBreakpoint_()), e) : void 0
        },n.currentBreakpoint = function () {
            return this.breakpoint_
        },n.currentBreakpointClass = function () {
            return Hs[this.breakpoint_] || ""
        },n.loadMedia = function (e, t) {
            var n = this;
            if (e && "object" == typeof e) {
                this.reset(), this.cache_.media = En(e);
                var i = this.cache_.media, r = i.artwork, s = i.poster, a = i.src, o = i.textTracks;
                !r && s && (this.cache_.media.artwork = [{src: s, type: er(s)}]), a && this.src(a), s && this.poster(s), Array.isArray(o) && o.forEach((function (e) {
                    return n.addRemoteTextTrack(e, !1)
                })), this.ready(t)
            }
        },n.getMedia = function () {
            if (!this.cache_.media) {
                var e = this.poster(), t = {
                    src: this.currentSources(), textTracks: Array.prototype.map.call(this.remoteTextTracks(), (function (e) {
                        return {kind: e.kind, label: e.label, language: e.language, src: e.src}
                    }))
                };
                return e && (t.poster = e, t.artwork = [{src: t.poster, type: er(t.poster)}]), t
            }
            return En(this.cache_.media)
        },t.getTagSettings = function (e) {
            var t = {sources: [], tracks: []}, n = vt(e), i = n["data-setup"];
            if (dt(e, "vjs-fill") && (n.fill = !0), dt(e, "vjs-fluid") && (n.fluid = !0), null !== i) {
                var r = p()(i || "{}"), s = r[0], a = r[1];
                s && Xe.error(s), Ze(n, a)
            }
            if (Ze(t, n), e.hasChildNodes()) for (var o = e.childNodes, l = 0, u = o.length; l < u; l++) {
                var c = o[l], h = c.nodeName.toLowerCase();
                "source" === h ? t.sources.push(vt(c)) : "track" === h && t.tracks.push(vt(c))
            }
            return t
        },n.flexNotSupported_ = function () {
            var e = a.a.createElement("i");
            return !("flexBasis" in e.style || "webkitFlexBasis" in e.style || "mozFlexBasis" in e.style || "msFlexBasis" in e.style || "msFlexOrder" in e.style)
        },t
    }(Cn);
    qi.names.forEach((function (e) {
        var t = qi[e];
        Vs.prototype[t.getterName] = function () {
            return this.tech_ ? this.tech_[t.getterName]() : (this[t.privateName] = this[t.privateName] || new t.ListClass, this[t.privateName])
        }
    })), Vs.prototype.crossorigin = Vs.prototype.crossOrigin, Vs.players = {};
    var Ws = r.a.navigator;
    Vs.prototype.options_ = {techOrder: Vi.defaultTechOrder_, html5: {}, flash: {}, inactivityTimeout: 2e3, playbackRates: [], liveui: !1, children: ["mediaLoader", "posterImage", "textTrackDisplay", "loadingSpinner", "bigPlayButton", "liveTracker", "controlBar", "errorDisplay", "textTrackSettings", "resizeManager"], language: Ws && (Ws.languages && Ws.languages[0] || Ws.userLanguage || Ws.language) || "en", languages: {}, notSupportedMessage: "No compatible source was found for this media.", fullscreen: {options: {navigationUI: "hide"}}, breakpoints: {}, responsive: !1}, ["ended", "seeking", "seekable", "networkState", "readyState"].forEach((function (e) {
        Vs.prototype[e] = function () {
            return this.techGet_(e)
        }
    })), Bs.forEach((function (e) {
        Vs.prototype["handleTech" + Sn(e) + "_"] = function () {
            return this.trigger(e)
        }
    })), Cn.registerComponent("Player", Vs);
    var zs = {}, Gs = function (e) {
        return zs.hasOwnProperty(e)
    }, Ys = function (e) {
        return Gs(e) ? zs[e] : void 0
    }, Xs = function (e, t) {
        e.activePlugins_ = e.activePlugins_ || {}, e.activePlugins_[t] = !0
    }, Ks = function (e, t, n) {
        var i = (n ? "before" : "") + "pluginsetup";
        e.trigger(i, t), e.trigger(i + ":" + t.name, t)
    }, $s = function (e, t) {
        return t.prototype.name = e, function () {
            Ks(this, {name: e, plugin: t, instance: null}, !0);
            for (var n = arguments.length, i = new Array(n), r = 0; r < n; r++) i[r] = arguments[r];
            var s = w()(t, [this].concat(i));
            return this[e] = function () {
                return s
            }, Ks(this, s.getEventHash()), s
        }
    }, Qs = function () {
        function e(t) {
            if (this.constructor === e) throw new Error("Plugin must be sub-classed; not directly instantiated.");
            this.player = t, _n(this), delete this.trigger, Tn(this, this.constructor.defaultState), Xs(t, this.name), this.dispose = on(this, this.dispose), t.on("dispose", this.dispose)
        }

        var t = e.prototype;
        return t.version = function () {
            return this.constructor.VERSION
        }, t.getEventHash = function (e) {
            return void 0 === e && (e = {}), e.name = this.name, e.plugin = this.constructor, e.instance = this, e
        }, t.trigger = function (e, t) {
            return void 0 === t && (t = {}), en(this.eventBusEl_, e, this.getEventHash(t))
        }, t.handleStateChanged = function (e) {
        }, t.dispose = function () {
            var e = this.name, t = this.player;
            this.trigger("dispose"), this.off(), t.off("dispose", this.dispose), t.activePlugins_[e] = !1, this.player = this.state = null, t[e] = $s(e, zs[e])
        }, e.isBasic = function (t) {
            var n = "string" == typeof t ? Ys(t) : t;
            return "function" == typeof n && !e.prototype.isPrototypeOf(n.prototype)
        }, e.registerPlugin = function (t, n) {
            if ("string" != typeof t) throw new Error('Illegal plugin name, "' + t + '", must be a string, was ' + typeof t + ".");
            if (Gs(t)) Xe.warn('A plugin named "' + t + '" already exists. You may want to avoid re-registering plugins!'); else if (Vs.prototype.hasOwnProperty(t)) throw new Error('Illegal plugin name, "' + t + '", cannot share a name with an existing player method!');
            if ("function" != typeof n) throw new Error('Illegal plugin for "' + t + '", must be a function, was ' + typeof n + ".");
            return zs[t] = n, "plugin" !== t && (e.isBasic(n) ? Vs.prototype[t] = function (e, t) {
                var n = function () {
                    Ks(this, {name: e, plugin: t, instance: null}, !0);
                    var n = t.apply(this, arguments);
                    return Xs(this, e), Ks(this, {name: e, plugin: t, instance: n}), n
                };
                return Object.keys(t).forEach((function (e) {
                    n[e] = t[e]
                })), n
            }(t, n) : Vs.prototype[t] = $s(t, n)), n
        }, e.deregisterPlugin = function (e) {
            if ("plugin" === e) throw new Error("Cannot de-register base plugin.");
            Gs(e) && (delete zs[e], delete Vs.prototype[e])
        }, e.getPlugins = function (e) {
            var t;
            return void 0 === e && (e = Object.keys(zs)), e.forEach((function (e) {
                var n = Ys(e);
                n && ((t = t || {})[e] = n)
            })), t
        }, e.getPluginVersion = function (e) {
            var t = Ys(e);
            return t && t.VERSION || ""
        }, e
    }();
    Qs.getPlugin = Ys, Qs.BASE_PLUGIN_NAME = "plugin", Qs.registerPlugin("plugin", Qs), Vs.prototype.usingPlugin = function (e) {
        return !!this.activePlugins_ && !0 === this.activePlugins_[e]
    }, Vs.prototype.hasPlugin = function (e) {
        return !!Gs(e)
    };
    var Js = function (e) {
        return 0 === e.indexOf("#") ? e.slice(1) : e
    };

    function Zs(e, t, n) {
        var i = Zs.getPlayer(e);
        if (i) return t && Xe.warn('Player "' + e + '" is already initialised. Options will not be applied.'), n && i.ready(n), i;
        var r = "string" == typeof e ? Lt("#" + Js(e)) : e;
        if (!at(r)) throw new TypeError("The element or ID supplied is not valid. (videojs)");
        r.ownerDocument.defaultView && r.ownerDocument.body.contains(r) || Xe.warn("The element supplied is not included in the DOM"), t = t || {}, Zs.hooks("beforesetup").forEach((function (e) {
            var n = e(r, En(t));
            et(n) && !Array.isArray(n) ? t = En(t, n) : Xe.error("please return an object in beforesetup hooks")
        }));
        var s = Cn.getComponent("Player");
        return i = new s(r, t, n), Zs.hooks("setup").forEach((function (e) {
            return e(i)
        })), i
    }

    if (Zs.hooks_ = {}, Zs.hooks = function (e, t) {
        return Zs.hooks_[e] = Zs.hooks_[e] || [], t && (Zs.hooks_[e] = Zs.hooks_[e].concat(t)), Zs.hooks_[e]
    }, Zs.hook = function (e, t) {
        Zs.hooks(e, t)
    }, Zs.hookOnce = function (e, t) {
        Zs.hooks(e, [].concat(t).map((function (t) {
            return function n() {
                return Zs.removeHook(e, n), t.apply(void 0, arguments)
            }
        })))
    }, Zs.removeHook = function (e, t) {
        var n = Zs.hooks(e).indexOf(t);
        return !(n <= -1) && (Zs.hooks_[e] = Zs.hooks_[e].slice(), Zs.hooks_[e].splice(n, 1), !0)
    }, !0 !== r.a.VIDEOJS_NO_DYNAMIC_STYLE && st()) {
        var ea = Lt(".vjs-styles-defaults");
        if (!ea) {
            ea = Ht("vjs-styles-defaults");
            var ta = Lt("head");
            ta && ta.insertBefore(ea, ta.firstChild), qt(ea, "\n      .video-js {\n        width: 300px;\n        height: 150px;\n      }\n\n      .vjs-fluid {\n        padding-top: 56.25%\n      }\n    ")
        }
    }
    Bt(1, Zs), Zs.VERSION = ze, Zs.options = Vs.prototype.options_, Zs.getPlayers = function () {
        return Vs.players
    }, Zs.getPlayer = function (e) {
        var t, n = Vs.players;
        if ("string" == typeof e) {
            var i = Js(e), r = n[i];
            if (r) return r;
            t = Lt("#" + i)
        } else t = e;
        if (at(t)) {
            var s = t, a = s.player, o = s.playerId;
            if (a || n[o]) return a || n[o]
        }
    }, Zs.getAllPlayers = function () {
        return Object.keys(Vs.players).map((function (e) {
            return Vs.players[e]
        })).filter(Boolean)
    }, Zs.players = Vs.players, Zs.getComponent = Cn.getComponent, Zs.registerComponent = function (e, t) {
        Vi.isTech(t) && Xe.warn("The " + e + " tech was registered as a component. It should instead be registered using videojs.registerTech(name, tech)"), Cn.registerComponent.call(Cn, e, t)
    }, Zs.getTech = Vi.getTech, Zs.registerTech = Vi.registerTech, Zs.use = function (e, t) {
        Wi[e] = Wi[e] || [], Wi[e].push(t)
    }, Object.defineProperty(Zs, "middleware", {value: {}, writeable: !1, enumerable: !0}), Object.defineProperty(Zs.middleware, "TERMINATOR", {value: Gi, writeable: !1, enumerable: !0}), Zs.browser = Yn, Zs.TOUCH_ENABLED = qn, Zs.extend = function (e, t) {
        void 0 === t && (t = {});
        var n = function () {
            e.apply(this, arguments)
        }, i = {};
        for (var r in "object" == typeof t ? (t.constructor !== Object.prototype.constructor && (n = t.constructor), i = t) : "function" == typeof t && (n = t), E()(n, e), e && (n.super_ = e), i) i.hasOwnProperty(r) && (n.prototype[r] = i[r]);
        return n
    }, Zs.mergeOptions = En, Zs.bind = on, Zs.registerPlugin = Qs.registerPlugin, Zs.deregisterPlugin = Qs.deregisterPlugin, Zs.plugin = function (e, t) {
        return Xe.warn("videojs.plugin() is deprecated; use videojs.registerPlugin() instead"), Qs.registerPlugin(e, t)
    }, Zs.getPlugins = Qs.getPlugins, Zs.getPlugin = Qs.getPlugin, Zs.getPluginVersion = Qs.getPluginVersion, Zs.addLanguage = function (e, t) {
        var n;
        return e = ("" + e).toLowerCase(), Zs.options.languages = En(Zs.options.languages, ((n = {})[e] = t, n)), Zs.options.languages[e]
    }, Zs.log = Xe, Zs.createLogger = Ke, Zs.createTimeRange = Zs.createTimeRanges = $n, Zs.formatTime = gr, Zs.setFormatTime = function (e) {
        mr = e
    }, Zs.resetFormatTime = function () {
        mr = pr
    }, Zs.parseUrl = xi, Zs.isCrossOrigin = Ii, Zs.EventTarget = cn, Zs.on = Jt, Zs.one = tn, Zs.off = Zt, Zs.trigger = en, Zs.xhr = y.a, Zs.TextTrack = Ni, Zs.AudioTrack = Ri, Zs.VideoTrack = Ui, ["isEl", "isTextNode", "createEl", "hasClass", "addClass", "removeClass", "toggleClass", "setAttributes", "getAttributes", "emptyEl", "appendContent", "insertContent"].forEach((function (e) {
        Zs[e] = function () {
            return Xe.warn("videojs." + e + "() is deprecated; use videojs.dom." + e + "() instead"), Rt[e].apply(null, arguments)
        }
    })), Zs.computedStyle = nt, Zs.dom = Rt, Zs.url = Pi, Zs.defineLazyProperty = Us;
    var na = function (e, t) {
        return /^[a-z]+:/i.test(t) ? t : (/\/\//i.test(e) || (e = k.a.buildAbsoluteURL(r.a.location.href, e)), k.a.buildAbsoluteURL(e, t))
    }, ia = function (e, t, n) {
        return e && n.responseURL && t !== n.responseURL ? n.responseURL : t
    }, ra = function (e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }, sa = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), aa = function (e, t) {
        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
        e.prototype = Object.create(t && t.prototype, {constructor: {value: e, enumerable: !1, writable: !0, configurable: !0}}), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
    }, oa = function (e, t) {
        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
        return !t || "object" != typeof t && "function" != typeof t ? e : t
    }, la = function (e, t) {
        if (Array.isArray(e)) return e;
        if (Symbol.iterator in Object(e)) return function (e, t) {
            var n = [], i = !0, r = !1, s = void 0;
            try {
                for (var a, o = e[Symbol.iterator](); !(i = (a = o.next()).done) && (n.push(a.value), !t || n.length !== t); i = !0) ;
            } catch (e) {
                r = !0, s = e
            } finally {
                try {
                    !i && o.return && o.return()
                } finally {
                    if (r) throw s
                }
            }
            return n
        }(e, t);
        throw new TypeError("Invalid attempt to destructure non-iterable instance")
    }, ua = Zs.mergeOptions, ca = Zs.EventTarget, ha = Zs.log, da = function (e, t) {
        ["AUDIO", "SUBTITLES"].forEach((function (n) {
            for (var i in e.mediaGroups[n]) for (var r in e.mediaGroups[n][i]) {
                var s = e.mediaGroups[n][i][r];
                t(s, n, i, r)
            }
        }))
    }, fa = function (e, t) {
        var n = ua(e, {}), i = n.playlists[t.id];
        if (!i) return null;
        if (i.segments && t.segments && i.segments.length === t.segments.length && i.endList === t.endList && i.mediaSequence === t.mediaSequence) return null;
        var r = ua(i, t);
        i.segments && (r.segments = function (e, t, n) {
            var i = t.slice();
            n = n || 0;
            for (var r = Math.min(e.length, t.length + n), s = n; s < r; s++) i[s - n] = ua(e[s], i[s - n]);
            return i
        }(i.segments, t.segments, t.mediaSequence - i.mediaSequence)), r.segments.forEach((function (e) {
            !function (e, t) {
                e.resolvedUri || (e.resolvedUri = na(t, e.uri)), e.key && !e.key.resolvedUri && (e.key.resolvedUri = na(t, e.key.uri)), e.map && !e.map.resolvedUri && (e.map.resolvedUri = na(t, e.map.uri))
            }(e, r.resolvedUri)
        }));
        for (var s = 0; s < n.playlists.length; s++) n.playlists[s].id === t.id && (n.playlists[s] = r);
        return n.playlists[t.id] = r, n.playlists[t.uri] = r, n
    }, pa = function (e, t) {
        return e + "-" + t
    }, ma = function (e) {
        for (var t = e.playlists.length; t--;) {
            var n = e.playlists[t];
            n.resolvedUri = na(e.uri, n.uri), n.id = pa(t, n.uri), e.playlists[n.id] = n, e.playlists[n.uri] = n, n.attributes || (n.attributes = {}, ha.warn("Invalid playlist STREAM-INF detected. Missing BANDWIDTH attribute."))
        }
    }, ga = function (e) {
        da(e, (function (t) {
            t.uri && (t.resolvedUri = na(e.uri, t.uri))
        }))
    }, va = function (e, t) {
        var n = e.segments[e.segments.length - 1];
        return t && n && n.duration ? 1e3 * n.duration : 500 * (e.targetDuration || 10)
    }, ya = function (e) {
        function t(e, n) {
            var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
            ra(this, t);
            var r = oa(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this)), s = i.withCredentials, a = void 0 !== s && s, o = i.handleManifestRedirects, l = void 0 !== o && o;
            r.srcUrl = e, r.hls_ = n, r.withCredentials = a, r.handleManifestRedirects = l;
            var u = n.options_;
            if (r.customTagParsers = u && u.customTagParsers || [], r.customTagMappers = u && u.customTagMappers || [], !r.srcUrl) throw new Error("A non-empty playlist URL is required");
            return r.state = "HAVE_NOTHING", r.on("mediaupdatetimeout", (function () {
                "HAVE_METADATA" === r.state && (r.state = "HAVE_CURRENT_METADATA", r.request = r.hls_.xhr({uri: na(r.master.uri, r.media().uri), withCredentials: r.withCredentials}, (function (e, t) {
                    if (r.request) return e ? r.playlistRequestError(r.request, r.media(), "HAVE_METADATA") : void r.haveMetadata(r.request, r.media().uri, r.media().id)
                })))
            })), r
        }

        return aa(t, e), sa(t, [{
            key: "playlistRequestError", value: function (e, t, n) {
                var i = t.uri, r = t.id;
                this.request = null, n && (this.state = n), this.error = {playlist: this.master.playlists[r], status: e.status, message: "HLS playlist request error at URL: " + i + ".", responseText: e.responseText, code: e.status >= 500 ? 4 : 2}, this.trigger("error")
            }
        }, {
            key: "haveMetadata", value: function (e, t, n) {
                var i = this;
                this.request = null, this.state = "HAVE_METADATA";
                var s = new N;
                this.customTagParsers.forEach((function (e) {
                    return s.addParser(e)
                })), this.customTagMappers.forEach((function (e) {
                    return s.addTagMapper(e)
                })), s.push(e.responseText), s.end(), s.manifest.uri = t, s.manifest.id = n, s.manifest.attributes = s.manifest.attributes || {};
                var a = fa(this.master, s.manifest);
                this.targetDuration = s.manifest.targetDuration, a ? (this.master = a, this.media_ = this.master.playlists[n]) : this.trigger("playlistunchanged"), this.media().endList || (r.a.clearTimeout(this.mediaUpdateTimeout), this.mediaUpdateTimeout = r.a.setTimeout((function () {
                    i.trigger("mediaupdatetimeout")
                }), va(this.media(), !!a))), this.trigger("loadedplaylist")
            }
        }, {
            key: "dispose", value: function () {
                this.trigger("dispose"), this.stopRequest(), r.a.clearTimeout(this.mediaUpdateTimeout), r.a.clearTimeout(this.finalRenditionTimeout), this.off()
            }
        }, {
            key: "stopRequest", value: function () {
                if (this.request) {
                    var e = this.request;
                    this.request = null, e.onreadystatechange = null, e.abort()
                }
            }
        }, {
            key: "media", value: function (e, t) {
                var n = this;
                if (!e) return this.media_;
                if ("HAVE_NOTHING" === this.state) throw new Error("Cannot switch media playlist from " + this.state);
                if ("string" == typeof e) {
                    if (!this.master.playlists[e]) throw new Error("Unknown playlist URI: " + e);
                    e = this.master.playlists[e]
                }
                if (r.a.clearTimeout(this.finalRenditionTimeout), t) {
                    var i = e.targetDuration / 2 * 1e3 || 5e3;
                    this.finalRenditionTimeout = r.a.setTimeout(this.media.bind(this, e, !1), i)
                } else {
                    var s = this.state, a = !this.media_ || e.id !== this.media_.id;
                    if (this.master.playlists[e.id].endList) return this.request && (this.request.onreadystatechange = null, this.request.abort(), this.request = null), this.state = "HAVE_METADATA", this.media_ = e, void (a && (this.trigger("mediachanging"), this.trigger("mediachange")));
                    if (a) {
                        if (this.state = "SWITCHING_MEDIA", this.request) {
                            if (e.resolvedUri === this.request.url) return;
                            this.request.onreadystatechange = null, this.request.abort(), this.request = null
                        }
                        this.media_ && this.trigger("mediachanging"), this.request = this.hls_.xhr({uri: e.resolvedUri, withCredentials: this.withCredentials}, (function (t, i) {
                            if (n.request) {
                                if (e.resolvedUri = ia(n.handleManifestRedirects, e.resolvedUri, i), t) return n.playlistRequestError(n.request, e, s);
                                n.haveMetadata(i, e.uri, e.id), "HAVE_MASTER" === s ? n.trigger("loadedmetadata") : n.trigger("mediachange")
                            }
                        }))
                    }
                }
            }
        }, {
            key: "pause", value: function () {
                this.stopRequest(), r.a.clearTimeout(this.mediaUpdateTimeout), "HAVE_NOTHING" === this.state && (this.started = !1), "SWITCHING_MEDIA" === this.state ? this.media_ ? this.state = "HAVE_METADATA" : this.state = "HAVE_MASTER" : "HAVE_CURRENT_METADATA" === this.state && (this.state = "HAVE_METADATA")
            }
        }, {
            key: "load", value: function (e) {
                var t = this;
                r.a.clearTimeout(this.mediaUpdateTimeout);
                var n = this.media();
                if (e) {
                    var i = n ? n.targetDuration / 2 * 1e3 : 5e3;
                    this.mediaUpdateTimeout = r.a.setTimeout((function () {
                        return t.load()
                    }), i)
                } else this.started ? n && !n.endList ? this.trigger("mediaupdatetimeout") : this.trigger("loadedplaylist") : this.start()
            }
        }, {
            key: "start", value: function () {
                var e = this;
                this.started = !0, this.request = this.hls_.xhr({uri: this.srcUrl, withCredentials: this.withCredentials}, (function (t, n) {
                    if (e.request) {
                        if (e.request = null, t) return e.error = {status: n.status, message: "HLS playlist request error at URL: " + e.srcUrl + ".", responseText: n.responseText, code: 2}, "HAVE_NOTHING" === e.state && (e.started = !1), e.trigger("error");
                        var i = new N;
                        if (e.customTagParsers.forEach((function (e) {
                            return i.addParser(e)
                        })), e.customTagMappers.forEach((function (e) {
                            return i.addTagMapper(e)
                        })), i.push(n.responseText), i.end(), e.state = "HAVE_MASTER", e.srcUrl = ia(e.handleManifestRedirects, e.srcUrl, n), i.manifest.uri = e.srcUrl, i.manifest.playlists) return e.master = i.manifest, ma(e.master), ga(e.master), e.trigger("loadedplaylist"), void (e.request || e.media(i.manifest.playlists[0]));
                        var s = pa(0, e.srcUrl);
                        return e.master = {mediaGroups: {AUDIO: {}, VIDEO: {}, "CLOSED-CAPTIONS": {}, SUBTITLES: {}}, uri: r.a.location.href, playlists: [{uri: e.srcUrl, id: s, resolvedUri: e.srcUrl, attributes: {}}]}, e.master.playlists[s] = e.master.playlists[0], e.master.playlists[e.srcUrl] = e.master.playlists[0], e.haveMetadata(n, e.srcUrl, s), e.trigger("loadedmetadata")
                    }
                }))
            }
        }]), t
    }(ca), _a = Zs.createTimeRange, ba = function (e, t, n) {
        var i, r;
        return void 0 === t && (t = e.mediaSequence + e.segments.length), t < e.mediaSequence ? 0 : (i = function (e, t) {
            var n = 0, i = t - e.mediaSequence, r = e.segments[i];
            if (r) {
                if (void 0 !== r.start) return {result: r.start, precise: !0};
                if (void 0 !== r.end) return {result: r.end - r.duration, precise: !0}
            }
            for (; i--;) {
                if (void 0 !== (r = e.segments[i]).end) return {result: n + r.end, precise: !0};
                if (n += r.duration, void 0 !== r.start) return {result: n + r.start, precise: !0}
            }
            return {result: n, precise: !1}
        }(e, t)).precise ? i.result : (r = function (e, t) {
            for (var n = 0, i = void 0, r = t - e.mediaSequence; r < e.segments.length; r++) {
                if (void 0 !== (i = e.segments[r]).start) return {result: i.start - n, precise: !0};
                if (n += i.duration, void 0 !== i.end) return {result: i.end - n, precise: !0}
            }
            return {result: -1, precise: !1}
        }(e, t)).precise ? r.result : i.result + n
    }, Ta = function (e, t, n) {
        if (!e) return 0;
        if ("number" != typeof n && (n = 0), void 0 === t) {
            if (e.totalDuration) return e.totalDuration;
            if (!e.endList) return r.a.Infinity
        }
        return ba(e, t, n)
    }, wa = function (e, t, n) {
        var i = 0;
        if (t > n) {
            var r = [n, t];
            t = r[0], n = r[1]
        }
        if (t < 0) {
            for (var s = t; s < Math.min(0, n); s++) i += e.targetDuration;
            t = 0
        }
        for (var a = t; a < n; a++) i += e.segments[a].duration;
        return i
    }, Sa = function (e, t) {
        if (!e.segments.length) return 0;
        var n = e.segments.length, i = e.segments[n - 1].duration || e.targetDuration, r = "number" == typeof t ? t : i + 2 * e.targetDuration;
        if (0 === r) return n;
        for (var s = 0; n-- && !((s += e.segments[n].duration) >= r);) ;
        return Math.max(0, n)
    }, Ea = function (e, t, n, i) {
        if (!e || !e.segments) return null;
        if (e.endList) return Ta(e);
        if (null === t) return null;
        t = t || 0;
        var r = n ? Sa(e, i) : e.segments.length;
        return ba(e, e.mediaSequence + r, t)
    }, Ca = function (e) {
        return e - Math.floor(e) == 0
    }, ka = function (e, t) {
        if (Ca(t)) return t + .1 * e;
        for (var n = t.toString().split(".")[1].length, i = 1; i <= n; i++) {
            var r = Math.pow(10, i), s = t * r;
            if (Ca(s) || i === n) return (s + e) / r
        }
    }, xa = ka.bind(null, 1), Aa = ka.bind(null, -1), Da = function (e) {
        return e.excludeUntil && e.excludeUntil > Date.now()
    }, Ia = function (e) {
        return e.excludeUntil && e.excludeUntil === 1 / 0
    }, Pa = function (e) {
        var t = Da(e);
        return !e.disabled && !t
    }, Oa = function (e, t) {
        return t.attributes && t.attributes[e]
    }, La = function (e, t) {
        if (1 === e.playlists.length) return !0;
        var n = t.attributes.BANDWIDTH || Number.MAX_VALUE;
        return 0 === e.playlists.filter((function (e) {
            return !!Pa(e) && (e.attributes.BANDWIDTH || 0) < n
        })).length
    }, Na = {
        duration: Ta, seekable: function (e, t, n) {
            var i = t || 0, r = Ea(e, t, !0, n);
            return null === r ? _a() : _a(i, r)
        }, safeLiveIndex: Sa, getMediaInfoForTime: function (e, t, n, i) {
            var r = void 0, s = void 0, a = e.segments.length, o = t - i;
            if (o < 0) {
                if (n > 0) for (r = n - 1; r >= 0; r--) if (s = e.segments[r], (o += Aa(s.duration)) > 0) return {mediaIndex: r, startTime: i - wa(e, n, r)};
                return {mediaIndex: 0, startTime: t}
            }
            if (n < 0) {
                for (r = n; r < 0; r++) if ((o -= e.targetDuration) < 0) return {mediaIndex: 0, startTime: t};
                n = 0
            }
            for (r = n; r < a; r++) if (s = e.segments[r], (o -= xa(s.duration)) < 0) return {mediaIndex: r, startTime: i + wa(e, n, r)};
            return {mediaIndex: a - 1, startTime: t}
        }, isEnabled: Pa, isDisabled: function (e) {
            return e.disabled
        }, isBlacklisted: Da, isIncompatible: Ia, playlistEnd: Ea, isAes: function (e) {
            for (var t = 0; t < e.segments.length; t++) if (e.segments[t].key) return !0;
            return !1
        }, isFmp4: function (e) {
            for (var t = 0; t < e.segments.length; t++) if (e.segments[t].map) return !0;
            return !1
        }, hasAttribute: Oa, estimateSegmentRequestTime: function (e, t, n) {
            var i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0;
            if (!Oa("BANDWIDTH", n)) return NaN;
            var r = e * n.attributes.BANDWIDTH;
            return (r - 8 * i) / t
        }, isLowestEnabledRendition: La
    }, Ra = Zs.xhr, Ua = Zs.mergeOptions, Ma = function () {
        return function e(t, n) {
            t = Ua({timeout: 45e3}, t);
            var i = e.beforeRequest || Zs.Hls.xhr.beforeRequest;
            if (i && "function" == typeof i) {
                var r = i(t);
                r && (t = r)
            }
            var s = Ra(t, (function (e, t) {
                var i = s.response;
                !e && i && (s.responseTime = Date.now(), s.roundTripTime = s.responseTime - s.requestTime, s.bytesReceived = i.byteLength || i.length, s.bandwidth || (s.bandwidth = Math.floor(s.bytesReceived / s.roundTripTime * 8 * 1e3))), t.headers && (s.responseHeaders = t.headers), e && "ETIMEDOUT" === e.code && (s.timedout = !0), e || s.aborted || 200 === t.statusCode || 206 === t.statusCode || 0 === t.statusCode || (e = new Error("XHR Failed with a response of: " + (s && (i || s.responseText)))), n(e, s)
            })), a = s.abort;
            return s.abort = function () {
                return s.aborted = !0, a.apply(s, arguments)
            }, s.uri = t.uri, s.requestTime = Date.now(), s
        }
    }, Ba = function (e) {
        var t, n, i = {};
        return e.byterange && (i.Range = (t = e.byterange, n = t.offset + t.length - 1, "bytes=" + t.offset + "-" + n)), i
    }, ja = function (e, t) {
        return e.start(t) + "-" + e.end(t)
    }, Fa = function (e, t) {
        var n = e.toString(16);
        return "00".substring(0, 2 - n.length) + n + (t % 2 ? " " : "")
    }, Ha = function (e) {
        return e >= 32 && e < 126 ? String.fromCharCode(e) : "."
    }, qa = function (e) {
        var t = {};
        return Object.keys(e).forEach((function (n) {
            var i = e[n];
            ArrayBuffer.isView(i) ? t[n] = {bytes: i.buffer, byteOffset: i.byteOffset, byteLength: i.byteLength} : t[n] = i
        })), t
    }, Va = function (e) {
        var t = e.byterange || {length: 1 / 0, offset: 0};
        return [t.length, t.offset, e.resolvedUri].join(",")
    }, Wa = function (e) {
        return e.resolvedUri
    }, za = function (e) {
        for (var t = Array.prototype.slice.call(e), n = "", i = 0; i < t.length / 16; i++) n += t.slice(16 * i, 16 * i + 16).map(Fa).join("") + " " + t.slice(16 * i, 16 * i + 16).map(Ha).join("") + "\n";
        return n
    }, Ga = Object.freeze({
        createTransferableMessage: qa, initSegmentId: Va, segmentKeyId: Wa, hexDump: za, tagDump: function (e) {
            var t = e.bytes;
            return za(t)
        }, textRanges: function (e) {
            var t = "", n = void 0;
            for (n = 0; n < e.length; n++) t += ja(e, n) + " ";
            return t
        }
    }), Ya = function (e) {
        var t = e.playlist, n = e.time, i = void 0 === n ? void 0 : n, r = e.callback;
        if (!r) throw new Error("getProgramTime: callback must be provided");
        if (!t || void 0 === i) return r({message: "getProgramTime: playlist and time must be provided"});
        var s = function (e, t) {
            if (!t || !t.segments || 0 === t.segments.length) return null;
            for (var n = 0, i = void 0, r = 0; r < t.segments.length && !(e <= (n = (i = t.segments[r]).videoTimingInfo ? i.videoTimingInfo.transmuxedPresentationEnd : n + i.duration)); r++) ;
            var s = t.segments[t.segments.length - 1];
            if (s.videoTimingInfo && s.videoTimingInfo.transmuxedPresentationEnd < e) return null;
            if (e > n) {
                if (e > n + .25 * s.duration) return null;
                i = s
            }
            return {segment: i, estimatedStart: i.videoTimingInfo ? i.videoTimingInfo.transmuxedPresentationStart : n - i.duration, type: i.videoTimingInfo ? "accurate" : "estimate"}
        }(i, t);
        if (!s) return r({message: "valid programTime was not found"});
        if ("estimate" === s.type) return r({message: "Accurate programTime could not be determined. Please seek to e.seekTime and try again", seekTime: s.estimatedStart});
        var a = {mediaSeconds: i}, o = function (e, t) {
            if (!t.dateTimeObject) return null;
            var n = t.videoTimingInfo.transmuxerPrependedSeconds, i = e - (t.videoTimingInfo.transmuxedPresentationStart + n);
            return new Date(t.dateTimeObject.getTime() + 1e3 * i)
        }(i, s.segment);
        return o && (a.programDateTime = o.toISOString()), r(null, a)
    }, Xa = function e(t) {
        var n = t.programTime, i = t.playlist, r = t.retryCount, s = void 0 === r ? 2 : r, a = t.seekTo, o = t.pauseAfterSeek, l = void 0 === o || o, u = t.tech, c = t.callback;
        if (!c) throw new Error("seekToProgramTime: callback must be provided");
        if (void 0 === n || !i || !a) return c({message: "seekToProgramTime: programTime, seekTo and playlist must be provided"});
        if (!i.endList && !u.hasStarted_) return c({message: "player must be playing a live stream to start buffering"});
        if (!function (e) {
            if (!e.segments || 0 === e.segments.length) return !1;
            for (var t = 0; t < e.segments.length; t++) {
                if (!e.segments[t].dateTimeObject) return !1
            }
            return !0
        }(i)) return c({message: "programDateTime tags must be provided in the manifest " + i.resolvedUri});
        var h = function (e, t) {
            var n = void 0;
            try {
                n = new Date(e)
            } catch (e) {
                return null
            }
            if (!t || !t.segments || 0 === t.segments.length) return null;
            var i = t.segments[0];
            if (n < i.dateTimeObject) return null;
            for (var r = 0; r < t.segments.length - 1; r++) {
                if (i = t.segments[r], n < t.segments[r + 1].dateTimeObject) break
            }
            var s, a = t.segments[t.segments.length - 1], o = a.dateTimeObject, l = a.videoTimingInfo ? (s = a.videoTimingInfo).transmuxedPresentationEnd - s.transmuxedPresentationStart - s.transmuxerPrependedSeconds : a.duration + .25 * a.duration;
            return n > new Date(o.getTime() + 1e3 * l) ? null : (n > o && (i = a), {segment: i, estimatedStart: i.videoTimingInfo ? i.videoTimingInfo.transmuxedPresentationStart : Na.duration(t, t.mediaSequence + t.segments.indexOf(i)), type: i.videoTimingInfo ? "accurate" : "estimate"})
        }(n, i);
        if (!h) return c({message: n + " was not found in the stream"});
        var d = h.segment, f = function (e, t) {
            var n = void 0, i = void 0;
            try {
                n = new Date(e), i = new Date(t)
            } catch (e) {
            }
            var r = n.getTime();
            return (i.getTime() - r) / 1e3
        }(d.dateTimeObject, n);
        if ("estimate" === h.type) return 0 === s ? c({message: n + " is not buffered yet. Try again"}) : (a(h.estimatedStart + f), void u.one("seeked", (function () {
            e({programTime: n, playlist: i, retryCount: s - 1, seekTo: a, pauseAfterSeek: l, tech: u, callback: c})
        })));
        var p = d.start + f;
        u.one("seeked", (function () {
            return c(null, u.currentTime())
        })), l && u.pause(), a(p)
    }, Ka = function (e, t) {
        var n = [], i = void 0;
        if (e && e.length) for (i = 0; i < e.length; i++) t(e.start(i), e.end(i)) && n.push([e.start(i), e.end(i)]);
        return Zs.createTimeRanges(n)
    }, $a = function (e, t) {
        return Ka(e, (function (e, n) {
            return e - .1 <= t && n + .1 >= t
        }))
    }, Qa = function (e, t) {
        return Ka(e, (function (e) {
            return e - 1 / 30 >= t
        }))
    }, Ja = function (e) {
        var t = [];
        if (!e || !e.length) return "";
        for (var n = 0; n < e.length; n++) t.push(e.start(n) + " => " + e.end(n));
        return t.join(", ")
    }, Za = function (e) {
        for (var t = [], n = 0; n < e.length; n++) t.push({start: e.start(n), end: e.end(n)});
        return t
    }, eo = function (e, t, n) {
        var i = void 0, r = void 0;
        if (n && n.cues) for (i = n.cues.length; i--;) (r = n.cues[i]).startTime <= t && r.endTime >= e && n.removeCue(r)
    }, to = function (e) {
        return isNaN(e) || Math.abs(e) === 1 / 0 ? Number.MAX_VALUE : e
    }, no = function (e, t, n) {
        var i = r.a.WebKitDataCue || r.a.VTTCue;
        if (t && t.forEach((function (e) {
            var t = e.stream;
            this.inbandTextTracks_[t].addCue(new i(e.startTime + this.timestampOffset, e.endTime + this.timestampOffset, e.text))
        }), e), n) {
            var s = to(e.mediaSource_.duration);
            if (n.forEach((function (e) {
                var t = e.cueTime + this.timestampOffset;
                !("number" != typeof t || r.a.isNaN(t) || t < 0) && t < 1 / 0 && e.frames.forEach((function (e) {
                    var n = new i(t, t, e.value || e.url || e.data || "");
                    n.frame = e, n.value = e, function (e) {
                        Object.defineProperties(e.frame, {
                            id: {
                                get: function () {
                                    return Zs.log.warn("cue.frame.id is deprecated. Use cue.value.key instead."), e.value.key
                                }
                            }, value: {
                                get: function () {
                                    return Zs.log.warn("cue.frame.value is deprecated. Use cue.value.data instead."), e.value.data
                                }
                            }, privateData: {
                                get: function () {
                                    return Zs.log.warn("cue.frame.privateData is deprecated. Use cue.value.data instead."), e.value.data
                                }
                            }
                        })
                    }(n), this.metadataTrack_.addCue(n)
                }), this)
            }), e), e.metadataTrack_ && e.metadataTrack_.cues && e.metadataTrack_.cues.length) {
                for (var a = e.metadataTrack_.cues, o = [], l = 0; l < a.length; l++) a[l] && o.push(a[l]);
                var u = o.reduce((function (e, t) {
                    var n = e[t.startTime] || [];
                    return n.push(t), e[t.startTime] = n, e
                }), {}), c = Object.keys(u).sort((function (e, t) {
                    return Number(e) - Number(t)
                }));
                c.forEach((function (e, t) {
                    var n = u[e], i = Number(c[t + 1]) || s;
                    n.forEach((function (e) {
                        e.endTime = i
                    }))
                }))
            }
        }
    }, io = "undefined" != typeof window ? window : {}, ro = "undefined" == typeof Symbol ? "__target" : Symbol(), so = "application/javascript", ao = io.BlobBuilder || io.WebKitBlobBuilder || io.MozBlobBuilder || io.MSBlobBuilder, oo = io.URL || io.webkitURL || oo && oo.msURL, lo = io.Worker;

    function uo(e, t) {
        return function (n) {
            var i = this;
            if (!t) return new lo(e);
            if (lo && !n) {
                var r = po(t.toString().replace(/^function.+?{/, "").slice(0, -1));
                return this[ro] = new lo(r), function (e, t) {
                    if (!e || !t) return;
                    var n = e.terminate;
                    e.objURL = t, e.terminate = function () {
                        e.objURL && oo.revokeObjectURL(e.objURL), n.call(e)
                    }
                }(this[ro], r), this[ro]
            }
            var s = {
                postMessage: function (e) {
                    i.onmessage && setTimeout((function () {
                        i.onmessage({data: e, target: s})
                    }))
                }
            };
            t.call(s), this.postMessage = function (e) {
                setTimeout((function () {
                    s.onmessage({data: e, target: i})
                }))
            }, this.isThisThread = !0
        }
    }

    if (lo) {
        var co, ho = po("self.onmessage = function () {}"), fo = new Uint8Array(1);
        try {
            (co = new lo(ho)).postMessage(fo, [fo.buffer])
        } catch (e) {
            lo = null
        } finally {
            oo.revokeObjectURL(ho), co && co.terminate()
        }
    }

    function po(e) {
        try {
            return oo.createObjectURL(new Blob([e], {type: so}))
        } catch (n) {
            var t = new ao;
            return t.append(e), oo.createObjectURL(t.getBlob(type))
        }
    }

    var mo = new uo("./transmuxer-worker.worker.js", (function (e, t) {
        var n = this;
        !function () {
            var e = function () {
                this.init = function () {
                    var e = {};
                    this.on = function (t, n) {
                        e[t] || (e[t] = []), e[t] = e[t].concat(n)
                    }, this.off = function (t, n) {
                        var i;
                        return !!e[t] && (i = e[t].indexOf(n), e[t] = e[t].slice(), e[t].splice(i, 1), i > -1)
                    }, this.trigger = function (t) {
                        var n, i, r, s;
                        if (n = e[t]) if (2 === arguments.length) for (r = n.length, i = 0; i < r; ++i) n[i].call(this, arguments[1]); else {
                            for (s = [], i = arguments.length, i = 1; i < arguments.length; ++i) s.push(arguments[i]);
                            for (r = n.length, i = 0; i < r; ++i) n[i].apply(this, s)
                        }
                    }, this.dispose = function () {
                        e = {}
                    }
                }
            };
            e.prototype.pipe = function (e) {
                return this.on("data", (function (t) {
                    e.push(t)
                })), this.on("done", (function (t) {
                    e.flush(t)
                })), this.on("partialdone", (function (t) {
                    e.partialFlush(t)
                })), this.on("endedtimeline", (function (t) {
                    e.endTimeline(t)
                })), this.on("reset", (function (t) {
                    e.reset(t)
                })), e
            }, e.prototype.push = function (e) {
                this.trigger("data", e)
            }, e.prototype.flush = function (e) {
                this.trigger("done", e)
            }, e.prototype.partialFlush = function (e) {
                this.trigger("partialdone", e)
            }, e.prototype.endTimeline = function (e) {
                this.trigger("endedtimeline", e)
            }, e.prototype.reset = function (e) {
                this.trigger("reset", e)
            };
            var t, i, r, s, a, o, l, u, c, h, d, f, p, m, g, v, y, _, b, T, w, S, E, C, k, x, A, D, I, P, O, L, N, R, U, M, B, j, F, H, q = e, V = Math.pow(2, 32) - 1;
            !function () {
                var e;
                if (S = {avc1: [], avcC: [], btrt: [], dinf: [], dref: [], esds: [], ftyp: [], hdlr: [], mdat: [], mdhd: [], mdia: [], mfhd: [], minf: [], moof: [], moov: [], mp4a: [], mvex: [], mvhd: [], pasp: [], sdtp: [], smhd: [], stbl: [], stco: [], stsc: [], stsd: [], stsz: [], stts: [], styp: [], tfdt: [], tfhd: [], traf: [], trak: [], trun: [], trex: [], tkhd: [], vmhd: []}, "undefined" != typeof Uint8Array) {
                    for (e in S) S.hasOwnProperty(e) && (S[e] = [e.charCodeAt(0), e.charCodeAt(1), e.charCodeAt(2), e.charCodeAt(3)]);
                    E = new Uint8Array(["i".charCodeAt(0), "s".charCodeAt(0), "o".charCodeAt(0), "m".charCodeAt(0)]), k = new Uint8Array(["a".charCodeAt(0), "v".charCodeAt(0), "c".charCodeAt(0), "1".charCodeAt(0)]), C = new Uint8Array([0, 0, 0, 1]), x = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 118, 105, 100, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 105, 100, 101, 111, 72, 97, 110, 100, 108, 101, 114, 0]), A = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 111, 117, 110, 100, 72, 97, 110, 100, 108, 101, 114, 0]), D = {video: x, audio: A}, O = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1]), P = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]), L = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]), N = L, R = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), U = L, I = new Uint8Array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0])
                }
            }(), t = function (e) {
                var t, n, i = [], r = 0;
                for (t = 1; t < arguments.length; t++) i.push(arguments[t]);
                for (t = i.length; t--;) r += i[t].byteLength;
                for (n = new Uint8Array(r + 8), new DataView(n.buffer, n.byteOffset, n.byteLength).setUint32(0, n.byteLength), n.set(e, 4), t = 0, r = 8; t < i.length; t++) n.set(i[t], r), r += i[t].byteLength;
                return n
            }, i = function () {
                return t(S.dinf, t(S.dref, O))
            }, r = function (e) {
                return t(S.esds, new Uint8Array([0, 0, 0, 0, 3, 25, 0, 0, 0, 4, 17, 64, 21, 0, 6, 0, 0, 0, 218, 192, 0, 0, 218, 192, 5, 2, e.audioobjecttype << 3 | e.samplingfrequencyindex >>> 1, e.samplingfrequencyindex << 7 | e.channelcount << 3, 6, 1, 2]))
            }, g = function (e) {
                return t(S.hdlr, D[e])
            }, m = function (e) {
                var n = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 1, 95, 144, e.duration >>> 24 & 255, e.duration >>> 16 & 255, e.duration >>> 8 & 255, 255 & e.duration, 85, 196, 0, 0]);
                return e.samplerate && (n[12] = e.samplerate >>> 24 & 255, n[13] = e.samplerate >>> 16 & 255, n[14] = e.samplerate >>> 8 & 255, n[15] = 255 & e.samplerate), t(S.mdhd, n)
            }, p = function (e) {
                return t(S.mdia, m(e), g(e.type), o(e))
            }, a = function (e) {
                return t(S.mfhd, new Uint8Array([0, 0, 0, 0, (4278190080 & e) >> 24, (16711680 & e) >> 16, (65280 & e) >> 8, 255 & e]))
            }, o = function (e) {
                return t(S.minf, "video" === e.type ? t(S.vmhd, I) : t(S.smhd, P), i(), y(e))
            }, l = function (e, n) {
                for (var i = [], r = n.length; r--;) i[r] = b(n[r]);
                return t.apply(null, [S.moof, a(e)].concat(i))
            }, u = function (e) {
                for (var n = e.length, i = []; n--;) i[n] = d(e[n]);
                return t.apply(null, [S.moov, h(4294967295)].concat(i).concat(c(e)))
            }, c = function (e) {
                for (var n = e.length, i = []; n--;) i[n] = T(e[n]);
                return t.apply(null, [S.mvex].concat(i))
            }, h = function (e) {
                var n = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 95, 144, (4278190080 & e) >> 24, (16711680 & e) >> 16, (65280 & e) >> 8, 255 & e, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255]);
                return t(S.mvhd, n)
            }, v = function (e) {
                var n, i, r = e.samples || [], s = new Uint8Array(4 + r.length);
                for (i = 0; i < r.length; i++) n = r[i].flags, s[i + 4] = n.dependsOn << 4 | n.isDependedOn << 2 | n.hasRedundancy;
                return t(S.sdtp, s)
            }, y = function (e) {
                return t(S.stbl, _(e), t(S.stts, U), t(S.stsc, N), t(S.stsz, R), t(S.stco, L))
            }, _ = function (e) {
                return t(S.stsd, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1]), "video" === e.type ? M(e) : B(e))
            }, M = function (e) {
                var n, i, r = e.sps || [], s = e.pps || [], a = [], o = [];
                for (n = 0; n < r.length; n++) a.push((65280 & r[n].byteLength) >>> 8), a.push(255 & r[n].byteLength), a = a.concat(Array.prototype.slice.call(r[n]));
                for (n = 0; n < s.length; n++) o.push((65280 & s[n].byteLength) >>> 8), o.push(255 & s[n].byteLength), o = o.concat(Array.prototype.slice.call(s[n]));
                if (i = [S.avc1, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (65280 & e.width) >> 8, 255 & e.width, (65280 & e.height) >> 8, 255 & e.height, 0, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1, 19, 118, 105, 100, 101, 111, 106, 115, 45, 99, 111, 110, 116, 114, 105, 98, 45, 104, 108, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 17, 17]), t(S.avcC, new Uint8Array([1, e.profileIdc, e.profileCompatibility, e.levelIdc, 255].concat([r.length], a, [s.length], o))), t(S.btrt, new Uint8Array([0, 28, 156, 128, 0, 45, 198, 192, 0, 45, 198, 192]))], e.sarRatio) {
                    var l = e.sarRatio[0], u = e.sarRatio[1];
                    i.push(t(S.pasp, new Uint8Array([(4278190080 & l) >> 24, (16711680 & l) >> 16, (65280 & l) >> 8, 255 & l, (4278190080 & u) >> 24, (16711680 & u) >> 16, (65280 & u) >> 8, 255 & u])))
                }
                return t.apply(null, i)
            }, B = function (e) {
                return t(S.mp4a, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, (65280 & e.channelcount) >> 8, 255 & e.channelcount, (65280 & e.samplesize) >> 8, 255 & e.samplesize, 0, 0, 0, 0, (65280 & e.samplerate) >> 8, 255 & e.samplerate, 0, 0]), r(e))
            }, f = function (e) {
                var n = new Uint8Array([0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, (4278190080 & e.id) >> 24, (16711680 & e.id) >> 16, (65280 & e.id) >> 8, 255 & e.id, 0, 0, 0, 0, (4278190080 & e.duration) >> 24, (16711680 & e.duration) >> 16, (65280 & e.duration) >> 8, 255 & e.duration, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, (65280 & e.width) >> 8, 255 & e.width, 0, 0, (65280 & e.height) >> 8, 255 & e.height, 0, 0]);
                return t(S.tkhd, n)
            }, b = function (e) {
                var n, i, r, s, a, o;
                return n = t(S.tfhd, new Uint8Array([0, 0, 0, 58, (4278190080 & e.id) >> 24, (16711680 & e.id) >> 16, (65280 & e.id) >> 8, 255 & e.id, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])), a = Math.floor(e.baseMediaDecodeTime / (V + 1)), o = Math.floor(e.baseMediaDecodeTime % (V + 1)), i = t(S.tfdt, new Uint8Array([1, 0, 0, 0, a >>> 24 & 255, a >>> 16 & 255, a >>> 8 & 255, 255 & a, o >>> 24 & 255, o >>> 16 & 255, o >>> 8 & 255, 255 & o])), 92, "audio" === e.type ? (r = w(e, 92), t(S.traf, n, i, r)) : (s = v(e), r = w(e, s.length + 92), t(S.traf, n, i, r, s))
            }, d = function (e) {
                return e.duration = e.duration || 4294967295, t(S.trak, f(e), p(e))
            }, T = function (e) {
                var n = new Uint8Array([0, 0, 0, 0, (4278190080 & e.id) >> 24, (16711680 & e.id) >> 16, (65280 & e.id) >> 8, 255 & e.id, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1]);
                return "video" !== e.type && (n[n.length - 1] = 0), t(S.trex, n)
            }, H = function (e, t) {
                var n = 0, i = 0, r = 0, s = 0;
                return e.length && (void 0 !== e[0].duration && (n = 1), void 0 !== e[0].size && (i = 2), void 0 !== e[0].flags && (r = 4), void 0 !== e[0].compositionTimeOffset && (s = 8)), [0, 0, n | i | r | s, 1, (4278190080 & e.length) >>> 24, (16711680 & e.length) >>> 16, (65280 & e.length) >>> 8, 255 & e.length, (4278190080 & t) >>> 24, (16711680 & t) >>> 16, (65280 & t) >>> 8, 255 & t]
            }, F = function (e, n) {
                var i, r, s, a;
                for (n += 20 + 16 * (r = e.samples || []).length, i = H(r, n), a = 0; a < r.length; a++) s = r[a], i = i.concat([(4278190080 & s.duration) >>> 24, (16711680 & s.duration) >>> 16, (65280 & s.duration) >>> 8, 255 & s.duration, (4278190080 & s.size) >>> 24, (16711680 & s.size) >>> 16, (65280 & s.size) >>> 8, 255 & s.size, s.flags.isLeading << 2 | s.flags.dependsOn, s.flags.isDependedOn << 6 | s.flags.hasRedundancy << 4 | s.flags.paddingValue << 1 | s.flags.isNonSyncSample, 61440 & s.flags.degradationPriority, 15 & s.flags.degradationPriority, (4278190080 & s.compositionTimeOffset) >>> 24, (16711680 & s.compositionTimeOffset) >>> 16, (65280 & s.compositionTimeOffset) >>> 8, 255 & s.compositionTimeOffset]);
                return t(S.trun, new Uint8Array(i))
            }, j = function (e, n) {
                var i, r, s, a;
                for (n += 20 + 8 * (r = e.samples || []).length, i = H(r, n), a = 0; a < r.length; a++) s = r[a], i = i.concat([(4278190080 & s.duration) >>> 24, (16711680 & s.duration) >>> 16, (65280 & s.duration) >>> 8, 255 & s.duration, (4278190080 & s.size) >>> 24, (16711680 & s.size) >>> 16, (65280 & s.size) >>> 8, 255 & s.size]);
                return t(S.trun, new Uint8Array(i))
            }, w = function (e, t) {
                return "audio" === e.type ? j(e, t) : F(e, t)
            };
            s = function () {
                return t(S.ftyp, E, C, E, k)
            };
            var W, z, G, Y, X, K, $, Q, J = function (e) {
                return t(S.mdat, e)
            }, Z = l, ee = function (e) {
                var t, n = s(), i = u(e);
                return (t = new Uint8Array(n.byteLength + i.byteLength)).set(n), t.set(i, n.byteLength), t
            }, te = function (e, t) {
                var n = {size: 0, flags: {isLeading: 0, dependsOn: 1, isDependedOn: 0, hasRedundancy: 0, degradationPriority: 0, isNonSyncSample: 1}};
                return n.dataOffset = t, n.compositionTimeOffset = e.pts - e.dts, n.duration = e.duration, n.size = 4 * e.length, n.size += e.byteLength, e.keyFrame && (n.flags.dependsOn = 2, n.flags.isNonSyncSample = 0), n
            }, ne = function (e) {
                var t, n, i = [], r = [];
                for (r.byteLength = 0, r.nalCount = 0, r.duration = 0, i.byteLength = 0, t = 0; t < e.length; t++) "access_unit_delimiter_rbsp" === (n = e[t]).nalUnitType ? (i.length && (i.duration = n.dts - i.dts, r.byteLength += i.byteLength, r.nalCount += i.length, r.duration += i.duration, r.push(i)), (i = [n]).byteLength = n.data.byteLength, i.pts = n.pts, i.dts = n.dts) : ("slice_layer_without_partitioning_rbsp_idr" === n.nalUnitType && (i.keyFrame = !0), i.duration = n.dts - i.dts, i.byteLength += n.data.byteLength, i.push(n));
                return r.length && (!i.duration || i.duration <= 0) && (i.duration = r[r.length - 1].duration), r.byteLength += i.byteLength, r.nalCount += i.length, r.duration += i.duration, r.push(i), r
            }, ie = function (e) {
                var t, n, i = [], r = [];
                for (i.byteLength = 0, i.nalCount = 0, i.duration = 0, i.pts = e[0].pts, i.dts = e[0].dts, r.byteLength = 0, r.nalCount = 0, r.duration = 0, r.pts = e[0].pts, r.dts = e[0].dts, t = 0; t < e.length; t++) (n = e[t]).keyFrame ? (i.length && (r.push(i), r.byteLength += i.byteLength, r.nalCount += i.nalCount, r.duration += i.duration), (i = [n]).nalCount = n.length, i.byteLength = n.byteLength, i.pts = n.pts, i.dts = n.dts, i.duration = n.duration) : (i.duration += n.duration, i.nalCount += n.length, i.byteLength += n.byteLength, i.push(n));
                return r.length && i.duration <= 0 && (i.duration = r[r.length - 1].duration), r.byteLength += i.byteLength, r.nalCount += i.nalCount, r.duration += i.duration, r.push(i), r
            }, re = function (e) {
                var t;
                return !e[0][0].keyFrame && e.length > 1 && (t = e.shift(), e.byteLength -= t.byteLength, e.nalCount -= t.nalCount, e[0][0].dts = t.dts, e[0][0].pts = t.pts, e[0][0].duration += t.duration), e
            }, se = function (e, t) {
                var n, i, r, s, a, o = t || 0, l = [];
                for (n = 0; n < e.length; n++) for (s = e[n], i = 0; i < s.length; i++) a = s[i], o += (r = te(a, o)).size, l.push(r);
                return l
            }, ae = function (e) {
                var t, n, i, r, s, a, o = 0, l = e.byteLength, u = e.nalCount, c = new Uint8Array(l + 4 * u), h = new DataView(c.buffer);
                for (t = 0; t < e.length; t++) for (r = e[t], n = 0; n < r.length; n++) for (s = r[n], i = 0; i < s.length; i++) a = s[i], h.setUint32(o, a.data.byteLength), o += 4, c.set(a.data, o), o += a.data.byteLength;
                return c
            }, oe = [33, 16, 5, 32, 164, 27], le = [33, 65, 108, 84, 1, 2, 4, 8, 168, 2, 4, 8, 17, 191, 252], ue = function (e) {
                for (var t = []; e--;) t.push(0);
                return t
            }, ce = {96e3: [oe, [227, 64], ue(154), [56]], 88200: [oe, [231], ue(170), [56]], 64e3: [oe, [248, 192], ue(240), [56]], 48e3: [oe, [255, 192], ue(268), [55, 148, 128], ue(54), [112]], 44100: [oe, [255, 192], ue(268), [55, 163, 128], ue(84), [112]], 32e3: [oe, [255, 192], ue(268), [55, 234], ue(226), [112]], 24e3: [oe, [255, 192], ue(268), [55, 255, 128], ue(268), [111, 112], ue(126), [224]], 16e3: [oe, [255, 192], ue(268), [55, 255, 128], ue(268), [111, 255], ue(269), [223, 108], ue(195), [1, 192]], 12e3: [le, ue(268), [3, 127, 248], ue(268), [6, 255, 240], ue(268), [13, 255, 224], ue(268), [27, 253, 128], ue(259), [56]], 11025: [le, ue(268), [3, 127, 248], ue(268), [6, 255, 240], ue(268), [13, 255, 224], ue(268), [27, 255, 192], ue(268), [55, 175, 128], ue(108), [112]], 8e3: [le, ue(268), [3, 121, 16], ue(47), [7]]}, he = (W = ce, Object.keys(W).reduce((function (e, t) {
                return e[t] = new Uint8Array(W[t].reduce((function (e, t) {
                    return e.concat(t)
                }), [])), e
            }), {}));
            K = function (e, t) {
                return z(X(e, t))
            }, $ = function (e, t) {
                return G(Y(e), t)
            }, Q = function (e, t, n) {
                return Y(n ? e : e - t)
            };
            var de = 9e4, fe = (z = function (e) {
                return 9e4 * e
            }, G = function (e, t) {
                return e * t
            }, Y = function (e) {
                return e / 9e4
            }, X = function (e, t) {
                return e / t
            }, K), pe = $, me = Q, ge = function (e, t, n, i) {
                var r, s, a, o, l, u = 0, c = 0, h = 0;
                if (t.length && (r = fe(e.baseMediaDecodeTime, e.samplerate), s = Math.ceil(de / (e.samplerate / 1024)), n && i && (u = r - Math.max(n, i), h = (c = Math.floor(u / s)) * s), !(c < 1 || h > de / 2))) {
                    for ((a = he[e.samplerate]) || (a = t[0].data), o = 0; o < c; o++) l = t[0], t.splice(0, 0, {data: a, dts: l.dts - s, pts: l.pts - s});
                    e.baseMediaDecodeTime -= Math.floor(pe(h, e.samplerate))
                }
            }, ve = function (e, t, n) {
                return t.minSegmentDts >= n ? e : (t.minSegmentDts = 1 / 0, e.filter((function (e) {
                    return e.dts >= n && (t.minSegmentDts = Math.min(t.minSegmentDts, e.dts), t.minSegmentPts = t.minSegmentDts, !0)
                })))
            }, ye = function (e) {
                var t, n, i = [];
                for (t = 0; t < e.length; t++) n = e[t], i.push({size: n.data.byteLength, duration: 1024});
                return i
            }, _e = function (e) {
                var t, n, i = 0, r = new Uint8Array(function (e) {
                    var t, n = 0;
                    for (t = 0; t < e.length; t++) n += e[t].data.byteLength;
                    return n
                }(e));
                for (t = 0; t < e.length; t++) n = e[t], r.set(n.data, i), i += n.data.byteLength;
                return r
            }, be = de, Te = function (e) {
                delete e.minSegmentDts, delete e.maxSegmentDts, delete e.minSegmentPts, delete e.maxSegmentPts
            }, we = function (e, t) {
                var n, i = e.minSegmentDts;
                return t || (i -= e.timelineStartInfo.dts), n = e.timelineStartInfo.baseMediaDecodeTime, n += i, n = Math.max(0, n), "audio" === e.type && (n *= e.samplerate / be, n = Math.floor(n)), n
            }, Se = function (e, t) {
                "number" == typeof t.pts && (void 0 === e.timelineStartInfo.pts && (e.timelineStartInfo.pts = t.pts), void 0 === e.minSegmentPts ? e.minSegmentPts = t.pts : e.minSegmentPts = Math.min(e.minSegmentPts, t.pts), void 0 === e.maxSegmentPts ? e.maxSegmentPts = t.pts : e.maxSegmentPts = Math.max(e.maxSegmentPts, t.pts)), "number" == typeof t.dts && (void 0 === e.timelineStartInfo.dts && (e.timelineStartInfo.dts = t.dts), void 0 === e.minSegmentDts ? e.minSegmentDts = t.dts : e.minSegmentDts = Math.min(e.minSegmentDts, t.dts), void 0 === e.maxSegmentDts ? e.maxSegmentDts = t.dts : e.maxSegmentDts = Math.max(e.maxSegmentDts, t.dts))
            }, Ee = function (e) {
                for (var t = 0, n = {payloadType: -1, payloadSize: 0}, i = 0, r = 0; t < e.byteLength && 128 !== e[t];) {
                    for (; 255 === e[t];) i += 255, t++;
                    for (i += e[t++]; 255 === e[t];) r += 255, t++;
                    if (r += e[t++], !n.payload && 4 === i) {
                        n.payloadType = i, n.payloadSize = r, n.payload = e.subarray(t, t + r);
                        break
                    }
                    t += r, i = 0, r = 0
                }
                return n
            }, Ce = function (e) {
                return 181 !== e.payload[0] ? null : 49 != (e.payload[1] << 8 | e.payload[2]) ? null : "GA94" !== String.fromCharCode(e.payload[3], e.payload[4], e.payload[5], e.payload[6]) ? null : 3 !== e.payload[7] ? null : e.payload.subarray(8, e.payload.length - 1)
            }, ke = function (e, t) {
                var n, i, r, s, a = [];
                if (!(64 & t[0])) return a;
                for (i = 31 & t[0], n = 0; n < i; n++) s = {type: 3 & t[(r = 3 * n) + 2], pts: e}, 4 & t[r + 2] && (s.ccData = t[r + 3] << 8 | t[r + 4], a.push(s));
                return a
            }, xe = 4, Ae = function e() {
                e.prototype.init.call(this), this.captionPackets_ = [], this.ccStreams_ = [new Le(0, 0), new Le(0, 1), new Le(1, 0), new Le(1, 1)], this.reset(), this.ccStreams_.forEach((function (e) {
                    e.on("data", this.trigger.bind(this, "data")), e.on("partialdone", this.trigger.bind(this, "partialdone")), e.on("done", this.trigger.bind(this, "done"))
                }), this)
            };
            (Ae.prototype = new q).push = function (e) {
                var t, n, i;
                if ("sei_rbsp" === e.nalUnitType && (t = Ee(e.escapedRBSP)).payloadType === xe && (n = Ce(t))) if (e.dts < this.latestDts_) this.ignoreNextEqualDts_ = !0; else {
                    if (e.dts === this.latestDts_ && this.ignoreNextEqualDts_) return this.numSameDts_--, void (this.numSameDts_ || (this.ignoreNextEqualDts_ = !1));
                    i = ke(e.pts, n), this.captionPackets_ = this.captionPackets_.concat(i), this.latestDts_ !== e.dts && (this.numSameDts_ = 0), this.numSameDts_++, this.latestDts_ = e.dts
                }
            }, Ae.prototype.flushCCStreams = function (e) {
                this.ccStreams_.forEach((function (t) {
                    return "flush" === e ? t.flush() : t.partialFlush()
                }), this)
            }, Ae.prototype.flushStream = function (e) {
                this.captionPackets_.length ? (this.captionPackets_.forEach((function (e, t) {
                    e.presortIndex = t
                })), this.captionPackets_.sort((function (e, t) {
                    return e.pts === t.pts ? e.presortIndex - t.presortIndex : e.pts - t.pts
                })), this.captionPackets_.forEach((function (e) {
                    e.type < 2 && this.dispatchCea608Packet(e)
                }), this), this.captionPackets_.length = 0, this.flushCCStreams(e)) : this.flushCCStreams(e)
            }, Ae.prototype.flush = function () {
                return this.flushStream("flush")
            }, Ae.prototype.partialFlush = function () {
                return this.flushStream("partialFlush")
            }, Ae.prototype.reset = function () {
                this.latestDts_ = null, this.ignoreNextEqualDts_ = !1, this.numSameDts_ = 0, this.activeCea608Channel_ = [null, null], this.ccStreams_.forEach((function (e) {
                    e.reset()
                }))
            }, Ae.prototype.dispatchCea608Packet = function (e) {
                this.setsTextOrXDSActive(e) ? this.activeCea608Channel_[e.type] = null : this.setsChannel1Active(e) ? this.activeCea608Channel_[e.type] = 0 : this.setsChannel2Active(e) && (this.activeCea608Channel_[e.type] = 1), null !== this.activeCea608Channel_[e.type] && this.ccStreams_[(e.type << 1) + this.activeCea608Channel_[e.type]].push(e)
            }, Ae.prototype.setsChannel1Active = function (e) {
                return 4096 == (30720 & e.ccData)
            }, Ae.prototype.setsChannel2Active = function (e) {
                return 6144 == (30720 & e.ccData)
            }, Ae.prototype.setsTextOrXDSActive = function (e) {
                return 256 == (28928 & e.ccData) || 4138 == (30974 & e.ccData) || 6186 == (30974 & e.ccData)
            };
            var De = {42: 225, 92: 233, 94: 237, 95: 243, 96: 250, 123: 231, 124: 247, 125: 209, 126: 241, 127: 9608, 304: 174, 305: 176, 306: 189, 307: 191, 308: 8482, 309: 162, 310: 163, 311: 9834, 312: 224, 313: 160, 314: 232, 315: 226, 316: 234, 317: 238, 318: 244, 319: 251, 544: 193, 545: 201, 546: 211, 547: 218, 548: 220, 549: 252, 550: 8216, 551: 161, 552: 42, 553: 39, 554: 8212, 555: 169, 556: 8480, 557: 8226, 558: 8220, 559: 8221, 560: 192, 561: 194, 562: 199, 563: 200, 564: 202, 565: 203, 566: 235, 567: 206, 568: 207, 569: 239, 570: 212, 571: 217, 572: 249, 573: 219, 574: 171, 575: 187, 800: 195, 801: 227, 802: 205, 803: 204, 804: 236, 805: 210, 806: 242, 807: 213, 808: 245, 809: 123, 810: 125, 811: 92, 812: 94, 813: 95, 814: 124, 815: 126, 816: 196, 817: 228, 818: 214, 819: 246, 820: 223, 821: 165, 822: 164, 823: 9474, 824: 197, 825: 229, 826: 216, 827: 248, 828: 9484, 829: 9488, 830: 9492, 831: 9496}, Ie = function (e) {
                return null === e ? "" : (e = De[e] || e, String.fromCharCode(e))
            }, Pe = [4352, 4384, 4608, 4640, 5376, 5408, 5632, 5664, 5888, 5920, 4096, 4864, 4896, 5120, 5152], Oe = function () {
                for (var e = [], t = 15; t--;) e.push("");
                return e
            }, Le = function e(t, n) {
                e.prototype.init.call(this), this.field_ = t || 0, this.dataChannel_ = n || 0, this.name_ = "CC" + (1 + (this.field_ << 1 | this.dataChannel_)), this.setConstants(), this.reset(), this.push = function (e) {
                    var t, n, i, r, s;
                    if ((t = 32639 & e.ccData) !== this.lastControlCode_) {
                        if (4096 == (61440 & t) ? this.lastControlCode_ = t : t !== this.PADDING_ && (this.lastControlCode_ = null), i = t >>> 8, r = 255 & t, t !== this.PADDING_) if (t === this.RESUME_CAPTION_LOADING_) this.mode_ = "popOn"; else if (t === this.END_OF_CAPTION_) this.mode_ = "popOn", this.clearFormatting(e.pts), this.flushDisplayed(e.pts), n = this.displayed_, this.displayed_ = this.nonDisplayed_, this.nonDisplayed_ = n, this.startPts_ = e.pts; else if (t === this.ROLL_UP_2_ROWS_) this.rollUpRows_ = 2, this.setRollUp(e.pts); else if (t === this.ROLL_UP_3_ROWS_) this.rollUpRows_ = 3, this.setRollUp(e.pts); else if (t === this.ROLL_UP_4_ROWS_) this.rollUpRows_ = 4, this.setRollUp(e.pts); else if (t === this.CARRIAGE_RETURN_) this.clearFormatting(e.pts), this.flushDisplayed(e.pts), this.shiftRowsUp_(), this.startPts_ = e.pts; else if (t === this.BACKSPACE_) "popOn" === this.mode_ ? this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1) : this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1); else if (t === this.ERASE_DISPLAYED_MEMORY_) this.flushDisplayed(e.pts), this.displayed_ = Oe(); else if (t === this.ERASE_NON_DISPLAYED_MEMORY_) this.nonDisplayed_ = Oe(); else if (t === this.RESUME_DIRECT_CAPTIONING_) "paintOn" !== this.mode_ && (this.flushDisplayed(e.pts), this.displayed_ = Oe()), this.mode_ = "paintOn", this.startPts_ = e.pts; else if (this.isSpecialCharacter(i, r)) s = Ie((i = (3 & i) << 8) | r), this[this.mode_](e.pts, s), this.column_++; else if (this.isExtCharacter(i, r)) "popOn" === this.mode_ ? this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1) : this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1), s = Ie((i = (3 & i) << 8) | r), this[this.mode_](e.pts, s), this.column_++; else if (this.isMidRowCode(i, r)) this.clearFormatting(e.pts), this[this.mode_](e.pts, " "), this.column_++, 14 == (14 & r) && this.addFormatting(e.pts, ["i"]), 1 == (1 & r) && this.addFormatting(e.pts, ["u"]); else if (this.isOffsetControlCode(i, r)) this.column_ += 3 & r; else if (this.isPAC(i, r)) {
                            var a = Pe.indexOf(7968 & t);
                            "rollUp" === this.mode_ && (a - this.rollUpRows_ + 1 < 0 && (a = this.rollUpRows_ - 1), this.setRollUp(e.pts, a)), a !== this.row_ && (this.clearFormatting(e.pts), this.row_ = a), 1 & r && -1 === this.formatting_.indexOf("u") && this.addFormatting(e.pts, ["u"]), 16 == (16 & t) && (this.column_ = 4 * ((14 & t) >> 1)), this.isColorPAC(r) && 14 == (14 & r) && this.addFormatting(e.pts, ["i"])
                        } else this.isNormalChar(i) && (0 === r && (r = null), s = Ie(i), s += Ie(r), this[this.mode_](e.pts, s), this.column_ += s.length)
                    } else this.lastControlCode_ = null
                }
            };
            Le.prototype = new q, Le.prototype.flushDisplayed = function (e) {
                var t = this.displayed_.map((function (e) {
                    try {
                        return e.trim()
                    } catch (e) {
                        return console.error("Skipping malformed caption."), ""
                    }
                })).join("\n").replace(/^\n+|\n+$/g, "");
                t.length && this.trigger("data", {startPts: this.startPts_, endPts: e, text: t, stream: this.name_})
            }, Le.prototype.reset = function () {
                this.mode_ = "popOn", this.topRow_ = 0, this.startPts_ = 0, this.displayed_ = Oe(), this.nonDisplayed_ = Oe(), this.lastControlCode_ = null, this.column_ = 0, this.row_ = 14, this.rollUpRows_ = 2, this.formatting_ = []
            }, Le.prototype.setConstants = function () {
                0 === this.dataChannel_ ? (this.BASE_ = 16, this.EXT_ = 17, this.CONTROL_ = (20 | this.field_) << 8, this.OFFSET_ = 23) : 1 === this.dataChannel_ && (this.BASE_ = 24, this.EXT_ = 25, this.CONTROL_ = (28 | this.field_) << 8, this.OFFSET_ = 31), this.PADDING_ = 0, this.RESUME_CAPTION_LOADING_ = 32 | this.CONTROL_, this.END_OF_CAPTION_ = 47 | this.CONTROL_, this.ROLL_UP_2_ROWS_ = 37 | this.CONTROL_, this.ROLL_UP_3_ROWS_ = 38 | this.CONTROL_, this.ROLL_UP_4_ROWS_ = 39 | this.CONTROL_, this.CARRIAGE_RETURN_ = 45 | this.CONTROL_, this.RESUME_DIRECT_CAPTIONING_ = 41 | this.CONTROL_, this.BACKSPACE_ = 33 | this.CONTROL_, this.ERASE_DISPLAYED_MEMORY_ = 44 | this.CONTROL_, this.ERASE_NON_DISPLAYED_MEMORY_ = 46 | this.CONTROL_
            }, Le.prototype.isSpecialCharacter = function (e, t) {
                return e === this.EXT_ && t >= 48 && t <= 63
            }, Le.prototype.isExtCharacter = function (e, t) {
                return (e === this.EXT_ + 1 || e === this.EXT_ + 2) && t >= 32 && t <= 63
            }, Le.prototype.isMidRowCode = function (e, t) {
                return e === this.EXT_ && t >= 32 && t <= 47
            }, Le.prototype.isOffsetControlCode = function (e, t) {
                return e === this.OFFSET_ && t >= 33 && t <= 35
            }, Le.prototype.isPAC = function (e, t) {
                return e >= this.BASE_ && e < this.BASE_ + 8 && t >= 64 && t <= 127
            }, Le.prototype.isColorPAC = function (e) {
                return e >= 64 && e <= 79 || e >= 96 && e <= 127
            }, Le.prototype.isNormalChar = function (e) {
                return e >= 32 && e <= 127
            }, Le.prototype.setRollUp = function (e, t) {
                if ("rollUp" !== this.mode_ && (this.row_ = 14, this.mode_ = "rollUp", this.flushDisplayed(e), this.nonDisplayed_ = Oe(), this.displayed_ = Oe()), void 0 !== t && t !== this.row_) for (var n = 0; n < this.rollUpRows_; n++) this.displayed_[t - n] = this.displayed_[this.row_ - n], this.displayed_[this.row_ - n] = "";
                void 0 === t && (t = this.row_), this.topRow_ = t - this.rollUpRows_ + 1
            }, Le.prototype.addFormatting = function (e, t) {
                this.formatting_ = this.formatting_.concat(t);
                var n = t.reduce((function (e, t) {
                    return e + "<" + t + ">"
                }), "");
                this[this.mode_](e, n)
            }, Le.prototype.clearFormatting = function (e) {
                if (this.formatting_.length) {
                    var t = this.formatting_.reverse().reduce((function (e, t) {
                        return e + "</" + t + ">"
                    }), "");
                    this.formatting_ = [], this[this.mode_](e, t)
                }
            }, Le.prototype.popOn = function (e, t) {
                var n = this.nonDisplayed_[this.row_];
                n += t, this.nonDisplayed_[this.row_] = n
            }, Le.prototype.rollUp = function (e, t) {
                var n = this.displayed_[this.row_];
                n += t, this.displayed_[this.row_] = n
            }, Le.prototype.shiftRowsUp_ = function () {
                var e;
                for (e = 0; e < this.topRow_; e++) this.displayed_[e] = "";
                for (e = this.row_ + 1; e < 15; e++) this.displayed_[e] = "";
                for (e = this.topRow_; e < this.row_; e++) this.displayed_[e] = this.displayed_[e + 1];
                this.displayed_[this.row_] = ""
            }, Le.prototype.paintOn = function (e, t) {
                var n = this.displayed_[this.row_];
                n += t, this.displayed_[this.row_] = n
            };
            var Ne = {CaptionStream: Ae, Cea608Stream: Le}, Re = {H264_STREAM_TYPE: 27, ADTS_STREAM_TYPE: 15, METADATA_STREAM_TYPE: 21}, Ue = function (e, t) {
                var n = 1;
                for (e > t && (n = -1); Math.abs(t - e) > 4294967296;) e += 8589934592 * n;
                return e
            }, Me = function e(t) {
                var n, i;
                e.prototype.init.call(this), this.type_ = t || "shared", this.push = function (e) {
                    "shared" !== this.type_ && e.type !== this.type_ || (void 0 === i && (i = e.dts), e.dts = Ue(e.dts, i), e.pts = Ue(e.pts, i), n = e.dts, this.trigger("data", e))
                }, this.flush = function () {
                    i = n, this.trigger("done")
                }, this.endTimeline = function () {
                    this.flush(), this.trigger("endedtimeline")
                }, this.discontinuity = function () {
                    i = void 0, n = void 0
                }, this.reset = function () {
                    this.discontinuity(), this.trigger("reset")
                }
            };
            Me.prototype = new q;
            var Be, je = Me, Fe = function (e, t, n) {
                var i, r = "";
                for (i = t; i < n; i++) r += "%" + ("00" + e[i].toString(16)).slice(-2);
                return r
            }, He = function (e, t, n) {
                return decodeURIComponent(Fe(e, t, n))
            }, qe = function (e) {
                return e[0] << 21 | e[1] << 14 | e[2] << 7 | e[3]
            }, Ve = {
                TXXX: function (e) {
                    var t;
                    if (3 === e.data[0]) {
                        for (t = 1; t < e.data.length; t++) if (0 === e.data[t]) {
                            e.description = He(e.data, 1, t), e.value = He(e.data, t + 1, e.data.length).replace(/\0*$/, "");
                            break
                        }
                        e.data = e.value
                    }
                }, WXXX: function (e) {
                    var t;
                    if (3 === e.data[0]) for (t = 1; t < e.data.length; t++) if (0 === e.data[t]) {
                        e.description = He(e.data, 1, t), e.url = He(e.data, t + 1, e.data.length);
                        break
                    }
                }, PRIV: function (e) {
                    var t, n;
                    for (t = 0; t < e.data.length; t++) if (0 === e.data[t]) {
                        e.owner = (n = e.data, unescape(Fe(n, 0, t)));
                        break
                    }
                    e.privateData = e.data.subarray(t + 1), e.data = e.privateData
                }
            };
            (Be = function (e) {
                var t, n = {debug: !(!e || !e.debug), descriptor: e && e.descriptor}, i = 0, r = [], s = 0;
                if (Be.prototype.init.call(this), this.dispatchType = Re.METADATA_STREAM_TYPE.toString(16), n.descriptor) for (t = 0; t < n.descriptor.length; t++) this.dispatchType += ("00" + n.descriptor[t].toString(16)).slice(-2);
                this.push = function (e) {
                    var t, a, o, l, u;
                    if ("timed-metadata" === e.type) if (e.dataAlignmentIndicator && (s = 0, r.length = 0), 0 === r.length && (e.data.length < 10 || e.data[0] !== "I".charCodeAt(0) || e.data[1] !== "D".charCodeAt(0) || e.data[2] !== "3".charCodeAt(0))) n.debug && console.log("Skipping unrecognized metadata packet"); else if (r.push(e), s += e.data.byteLength, 1 === r.length && (i = qe(e.data.subarray(6, 10)), i += 10), !(s < i)) {
                        for (t = {data: new Uint8Array(i), frames: [], pts: r[0].pts, dts: r[0].dts}, u = 0; u < i;) t.data.set(r[0].data.subarray(0, i - u), u), u += r[0].data.byteLength, s -= r[0].data.byteLength, r.shift();
                        a = 10, 64 & t.data[5] && (a += 4, a += qe(t.data.subarray(10, 14)), i -= qe(t.data.subarray(16, 20)));
                        do {
                            if ((o = qe(t.data.subarray(a + 4, a + 8))) < 1) return console.log("Malformed ID3 frame encountered. Skipping metadata parsing.");
                            if ((l = {id: String.fromCharCode(t.data[a], t.data[a + 1], t.data[a + 2], t.data[a + 3]), data: t.data.subarray(a + 10, a + o + 10)}).key = l.id, Ve[l.id] && (Ve[l.id](l), "com.apple.streaming.transportStreamTimestamp" === l.owner)) {
                                var c = l.data, h = (1 & c[3]) << 30 | c[4] << 22 | c[5] << 14 | c[6] << 6 | c[7] >>> 2;
                                h *= 4, h += 3 & c[7], l.timeStamp = h, void 0 === t.pts && void 0 === t.dts && (t.pts = l.timeStamp, t.dts = l.timeStamp), this.trigger("timestamp", l)
                            }
                            t.frames.push(l), a += 10, a += o
                        } while (a < i);
                        this.trigger("data", t)
                    }
                }
            }).prototype = new q;
            var We, ze, Ge, Ye = Be, Xe = je;
            (We = function () {
                var e = new Uint8Array(188), t = 0;
                We.prototype.init.call(this), this.push = function (n) {
                    var i, r = 0, s = 188;
                    for (t ? ((i = new Uint8Array(n.byteLength + t)).set(e.subarray(0, t)), i.set(n, t), t = 0) : i = n; s < i.byteLength;) 71 !== i[r] || 71 !== i[s] ? (r++, s++) : (this.trigger("data", i.subarray(r, s)), r += 188, s += 188);
                    r < i.byteLength && (e.set(i.subarray(r), 0), t = i.byteLength - r)
                }, this.flush = function () {
                    188 === t && 71 === e[0] && (this.trigger("data", e), t = 0), this.trigger("done")
                }, this.endTimeline = function () {
                    this.flush(), this.trigger("endedtimeline")
                }, this.reset = function () {
                    t = 0, this.trigger("reset")
                }
            }).prototype = new q, (ze = function () {
                var e, t, n, i;
                ze.prototype.init.call(this), i = this, this.packetsWaitingForPmt = [], this.programMapTable = void 0, e = function (e, i) {
                    var r = 0;
                    i.payloadUnitStartIndicator && (r += e[r] + 1), "pat" === i.type ? t(e.subarray(r), i) : n(e.subarray(r), i)
                }, t = function (e, t) {
                    t.section_number = e[7], t.last_section_number = e[8], i.pmtPid = (31 & e[10]) << 8 | e[11], t.pmtPid = i.pmtPid
                }, n = function (e, t) {
                    var n, r;
                    if (1 & e[5]) {
                        for (i.programMapTable = {video: null, audio: null, "timed-metadata": {}}, n = 3 + ((15 & e[1]) << 8 | e[2]) - 4, r = 12 + ((15 & e[10]) << 8 | e[11]); r < n;) {
                            var s = e[r], a = (31 & e[r + 1]) << 8 | e[r + 2];
                            s === Re.H264_STREAM_TYPE && null === i.programMapTable.video ? i.programMapTable.video = a : s === Re.ADTS_STREAM_TYPE && null === i.programMapTable.audio ? i.programMapTable.audio = a : s === Re.METADATA_STREAM_TYPE && (i.programMapTable["timed-metadata"][a] = s), r += 5 + ((15 & e[r + 3]) << 8 | e[r + 4])
                        }
                        t.programMapTable = i.programMapTable
                    }
                }, this.push = function (t) {
                    var n = {}, i = 4;
                    if (n.payloadUnitStartIndicator = !!(64 & t[1]), n.pid = 31 & t[1], n.pid <<= 8, n.pid |= t[2], (48 & t[3]) >>> 4 > 1 && (i += t[i] + 1), 0 === n.pid) n.type = "pat", e(t.subarray(i), n), this.trigger("data", n); else if (n.pid === this.pmtPid) for (n.type = "pmt", e(t.subarray(i), n), this.trigger("data", n); this.packetsWaitingForPmt.length;) this.processPes_.apply(this, this.packetsWaitingForPmt.shift()); else void 0 === this.programMapTable ? this.packetsWaitingForPmt.push([t, i, n]) : this.processPes_(t, i, n)
                }, this.processPes_ = function (e, t, n) {
                    n.pid === this.programMapTable.video ? n.streamType = Re.H264_STREAM_TYPE : n.pid === this.programMapTable.audio ? n.streamType = Re.ADTS_STREAM_TYPE : n.streamType = this.programMapTable["timed-metadata"][n.pid], n.type = "pes", n.data = e.subarray(t), this.trigger("data", n)
                }
            }).prototype = new q, ze.STREAM_TYPES = {h264: 27, adts: 15}, (Ge = function () {
                var e, t = this, n = {data: [], size: 0}, i = {data: [], size: 0}, r = {data: [], size: 0}, s = function (e, n, i) {
                    var r, s, a = new Uint8Array(e.size), o = {type: n}, l = 0, u = 0;
                    if (e.data.length && !(e.size < 9)) {
                        for (o.trackId = e.data[0].pid, l = 0; l < e.data.length; l++) s = e.data[l], a.set(s.data, u), u += s.data.byteLength;
                        var c, h, d;
                        c = a, (h = o).packetLength = 6 + (c[4] << 8 | c[5]), h.dataAlignmentIndicator = 0 != (4 & c[6]), 192 & (d = c[7]) && (h.pts = (14 & c[9]) << 27 | (255 & c[10]) << 20 | (254 & c[11]) << 12 | (255 & c[12]) << 5 | (254 & c[13]) >>> 3, h.pts *= 4, h.pts += (6 & c[13]) >>> 1, h.dts = h.pts, 64 & d && (h.dts = (14 & c[14]) << 27 | (255 & c[15]) << 20 | (254 & c[16]) << 12 | (255 & c[17]) << 5 | (254 & c[18]) >>> 3, h.dts *= 4, h.dts += (6 & c[18]) >>> 1)), h.data = c.subarray(9 + c[8]), r = "video" === n || o.packetLength <= e.size, (i || r) && (e.size = 0, e.data.length = 0), r && t.trigger("data", o)
                    }
                };
                Ge.prototype.init.call(this), this.push = function (a) {
                    ({
                        pat: function () {
                        }, pes: function () {
                            var e, t;
                            switch (a.streamType) {
                                case Re.H264_STREAM_TYPE:
                                case Re.H264_STREAM_TYPE:
                                    e = n, t = "video";
                                    break;
                                case Re.ADTS_STREAM_TYPE:
                                    e = i, t = "audio";
                                    break;
                                case Re.METADATA_STREAM_TYPE:
                                    e = r, t = "timed-metadata";
                                    break;
                                default:
                                    return
                            }
                            a.payloadUnitStartIndicator && s(e, t, !0), e.data.push(a), e.size += a.data.byteLength
                        }, pmt: function () {
                            var n = {type: "metadata", tracks: []};
                            null !== (e = a.programMapTable).video && n.tracks.push({timelineStartInfo: {baseMediaDecodeTime: 0}, id: +e.video, codec: "avc", type: "video"}), null !== e.audio && n.tracks.push({timelineStartInfo: {baseMediaDecodeTime: 0}, id: +e.audio, codec: "adts", type: "audio"}), t.trigger("data", n)
                        }
                    })[a.type]()
                }, this.reset = function () {
                    n.size = 0, n.data.length = 0, i.size = 0, i.data.length = 0, this.trigger("reset")
                }, this.flushStreams_ = function () {
                    s(n, "video"), s(i, "audio"), s(r, "timed-metadata")
                }, this.flush = function () {
                    this.flushStreams_(), this.trigger("done")
                }
            }).prototype = new q;
            var Ke = {PAT_PID: 0, MP2T_PACKET_LENGTH: 188, TransportPacketStream: We, TransportParseStream: ze, ElementaryStream: Ge, TimestampRolloverStream: Xe, CaptionStream: Ne.CaptionStream, Cea608Stream: Ne.Cea608Stream, MetadataStream: Ye};
            for (var $e in Re) Re.hasOwnProperty($e) && (Ke[$e] = Re[$e]);
            var Qe, Je = Ke, Ze = de, et = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350];
            (Qe = function (e) {
                var t, n = 0;
                Qe.prototype.init.call(this), this.push = function (i) {
                    var r, s, a, o, l, u, c = 0;
                    if (e || (n = 0), "audio" === i.type) for (t ? (o = t, (t = new Uint8Array(o.byteLength + i.data.byteLength)).set(o), t.set(i.data, o.byteLength)) : t = i.data; c + 5 < t.length;) if (255 === t[c] && 240 == (246 & t[c + 1])) {
                        if (s = 2 * (1 & ~t[c + 1]), r = (3 & t[c + 3]) << 11 | t[c + 4] << 3 | (224 & t[c + 5]) >> 5, u = (l = 1024 * (1 + (3 & t[c + 6]))) * Ze / et[(60 & t[c + 2]) >>> 2], a = c + r, t.byteLength < a) return;
                        if (this.trigger("data", {pts: i.pts + n * u, dts: i.dts + n * u, sampleCount: l, audioobjecttype: 1 + (t[c + 2] >>> 6 & 3), channelcount: (1 & t[c + 2]) << 2 | (192 & t[c + 3]) >>> 6, samplerate: et[(60 & t[c + 2]) >>> 2], samplingfrequencyindex: (60 & t[c + 2]) >>> 2, samplesize: 16, data: t.subarray(c + 7 + s, a)}), n++, t.byteLength === a) return void (t = void 0);
                        t = t.subarray(a)
                    } else c++
                }, this.flush = function () {
                    n = 0, this.trigger("done")
                }, this.reset = function () {
                    t = void 0, this.trigger("reset")
                }, this.endTimeline = function () {
                    t = void 0, this.trigger("endedtimeline")
                }
            }).prototype = new q;
            var tt, nt, it, rt = Qe, st = function (e) {
                var t = e.byteLength, n = 0, i = 0;
                this.length = function () {
                    return 8 * t
                }, this.bitsAvailable = function () {
                    return 8 * t + i
                }, this.loadWord = function () {
                    var r = e.byteLength - t, s = new Uint8Array(4), a = Math.min(4, t);
                    if (0 === a) throw new Error("no bytes available");
                    s.set(e.subarray(r, r + a)), n = new DataView(s.buffer).getUint32(0), i = 8 * a, t -= a
                }, this.skipBits = function (e) {
                    var r;
                    i > e ? (n <<= e, i -= e) : (e -= i, e -= 8 * (r = Math.floor(e / 8)), t -= r, this.loadWord(), n <<= e, i -= e)
                }, this.readBits = function (e) {
                    var r = Math.min(i, e), s = n >>> 32 - r;
                    return (i -= r) > 0 ? n <<= r : t > 0 && this.loadWord(), (r = e - r) > 0 ? s << r | this.readBits(r) : s
                }, this.skipLeadingZeros = function () {
                    var e;
                    for (e = 0; e < i; ++e) if (0 != (n & 2147483648 >>> e)) return n <<= e, i -= e, e;
                    return this.loadWord(), e + this.skipLeadingZeros()
                }, this.skipUnsignedExpGolomb = function () {
                    this.skipBits(1 + this.skipLeadingZeros())
                }, this.skipExpGolomb = function () {
                    this.skipBits(1 + this.skipLeadingZeros())
                }, this.readUnsignedExpGolomb = function () {
                    var e = this.skipLeadingZeros();
                    return this.readBits(e + 1) - 1
                }, this.readExpGolomb = function () {
                    var e = this.readUnsignedExpGolomb();
                    return 1 & e ? 1 + e >>> 1 : -1 * (e >>> 1)
                }, this.readBoolean = function () {
                    return 1 === this.readBits(1)
                }, this.readUnsignedByte = function () {
                    return this.readBits(8)
                }, this.loadWord()
            };
            (nt = function () {
                var e, t, n = 0;
                nt.prototype.init.call(this), this.push = function (i) {
                    var r;
                    t ? ((r = new Uint8Array(t.byteLength + i.data.byteLength)).set(t), r.set(i.data, t.byteLength), t = r) : t = i.data;
                    for (var s = t.byteLength; n < s - 3; n++) if (1 === t[n + 2]) {
                        e = n + 5;
                        break
                    }
                    for (; e < s;) switch (t[e]) {
                        case 0:
                            if (0 !== t[e - 1]) {
                                e += 2;
                                break
                            }
                            if (0 !== t[e - 2]) {
                                e++;
                                break
                            }
                            n + 3 !== e - 2 && this.trigger("data", t.subarray(n + 3, e - 2));
                            do {
                                e++
                            } while (1 !== t[e] && e < s);
                            n = e - 2, e += 3;
                            break;
                        case 1:
                            if (0 !== t[e - 1] || 0 !== t[e - 2]) {
                                e += 3;
                                break
                            }
                            this.trigger("data", t.subarray(n + 3, e - 2)), n = e - 2, e += 3;
                            break;
                        default:
                            e += 3
                    }
                    t = t.subarray(n), e -= n, n = 0
                }, this.reset = function () {
                    t = null, n = 0, this.trigger("reset")
                }, this.flush = function () {
                    t && t.byteLength > 3 && this.trigger("data", t.subarray(n + 3)), t = null, n = 0, this.trigger("done")
                }, this.endTimeline = function () {
                    this.flush(), this.trigger("endedtimeline")
                }
            }).prototype = new q, it = {100: !0, 110: !0, 122: !0, 244: !0, 44: !0, 83: !0, 86: !0, 118: !0, 128: !0, 138: !0, 139: !0, 134: !0}, (tt = function () {
                var e, t, n, i, r, s, a, o = new nt;
                tt.prototype.init.call(this), e = this, this.push = function (e) {
                    "video" === e.type && (t = e.trackId, n = e.pts, i = e.dts, o.push(e))
                }, o.on("data", (function (a) {
                    var o = {trackId: t, pts: n, dts: i, data: a};
                    switch (31 & a[0]) {
                        case 5:
                            o.nalUnitType = "slice_layer_without_partitioning_rbsp_idr";
                            break;
                        case 6:
                            o.nalUnitType = "sei_rbsp", o.escapedRBSP = r(a.subarray(1));
                            break;
                        case 7:
                            o.nalUnitType = "seq_parameter_set_rbsp", o.escapedRBSP = r(a.subarray(1)), o.config = s(o.escapedRBSP);
                            break;
                        case 8:
                            o.nalUnitType = "pic_parameter_set_rbsp";
                            break;
                        case 9:
                            o.nalUnitType = "access_unit_delimiter_rbsp"
                    }
                    e.trigger("data", o)
                })), o.on("done", (function () {
                    e.trigger("done")
                })), o.on("partialdone", (function () {
                    e.trigger("partialdone")
                })), o.on("reset", (function () {
                    e.trigger("reset")
                })), o.on("endedtimeline", (function () {
                    e.trigger("endedtimeline")
                })), this.flush = function () {
                    o.flush()
                }, this.partialFlush = function () {
                    o.partialFlush()
                }, this.reset = function () {
                    o.reset()
                }, this.endTimeline = function () {
                    o.endTimeline()
                }, a = function (e, t) {
                    var n, i = 8, r = 8;
                    for (n = 0; n < e; n++) 0 !== r && (r = (i + t.readExpGolomb() + 256) % 256), i = 0 === r ? i : r
                }, r = function (e) {
                    for (var t, n, i = e.byteLength, r = [], s = 1; s < i - 2;) 0 === e[s] && 0 === e[s + 1] && 3 === e[s + 2] ? (r.push(s + 2), s += 2) : s++;
                    if (0 === r.length) return e;
                    t = i - r.length, n = new Uint8Array(t);
                    var a = 0;
                    for (s = 0; s < t; a++, s++) a === r[0] && (a++, r.shift()), n[s] = e[a];
                    return n
                }, s = function (e) {
                    var t, n, i, r, s, o, l, u, c, h, d, f, p, m = 0, g = 0, v = 0, y = 0, _ = 1;
                    if (n = (t = new st(e)).readUnsignedByte(), r = t.readUnsignedByte(), i = t.readUnsignedByte(), t.skipUnsignedExpGolomb(), it[n] && (3 === (s = t.readUnsignedExpGolomb()) && t.skipBits(1), t.skipUnsignedExpGolomb(), t.skipUnsignedExpGolomb(), t.skipBits(1), t.readBoolean())) for (d = 3 !== s ? 8 : 12, p = 0; p < d; p++) t.readBoolean() && a(p < 6 ? 16 : 64, t);
                    if (t.skipUnsignedExpGolomb(), 0 === (o = t.readUnsignedExpGolomb())) t.readUnsignedExpGolomb(); else if (1 === o) for (t.skipBits(1), t.skipExpGolomb(), t.skipExpGolomb(), l = t.readUnsignedExpGolomb(), p = 0; p < l; p++) t.skipExpGolomb();
                    if (t.skipUnsignedExpGolomb(), t.skipBits(1), u = t.readUnsignedExpGolomb(), c = t.readUnsignedExpGolomb(), 0 === (h = t.readBits(1)) && t.skipBits(1), t.skipBits(1), t.readBoolean() && (m = t.readUnsignedExpGolomb(), g = t.readUnsignedExpGolomb(), v = t.readUnsignedExpGolomb(), y = t.readUnsignedExpGolomb()), t.readBoolean() && t.readBoolean()) {
                        switch (t.readUnsignedByte()) {
                            case 1:
                                f = [1, 1];
                                break;
                            case 2:
                                f = [12, 11];
                                break;
                            case 3:
                                f = [10, 11];
                                break;
                            case 4:
                                f = [16, 11];
                                break;
                            case 5:
                                f = [40, 33];
                                break;
                            case 6:
                                f = [24, 11];
                                break;
                            case 7:
                                f = [20, 11];
                                break;
                            case 8:
                                f = [32, 11];
                                break;
                            case 9:
                                f = [80, 33];
                                break;
                            case 10:
                                f = [18, 11];
                                break;
                            case 11:
                                f = [15, 11];
                                break;
                            case 12:
                                f = [64, 33];
                                break;
                            case 13:
                                f = [160, 99];
                                break;
                            case 14:
                                f = [4, 3];
                                break;
                            case 15:
                                f = [3, 2];
                                break;
                            case 16:
                                f = [2, 1];
                                break;
                            case 255:
                                f = [t.readUnsignedByte() << 8 | t.readUnsignedByte(), t.readUnsignedByte() << 8 | t.readUnsignedByte()]
                        }
                        f && (_ = f[0] / f[1])
                    }
                    return {profileIdc: n, levelIdc: i, profileCompatibility: r, width: Math.ceil((16 * (u + 1) - 2 * m - 2 * g) * _), height: (2 - h) * (c + 1) * 16 - 2 * v - 2 * y, sarRatio: f}
                }
            }).prototype = new q;
            var at, ot = {H264Stream: tt, NalByteStream: nt}, lt = function (e) {
                return e[0] === "I".charCodeAt(0) && e[1] === "D".charCodeAt(0) && e[2] === "3".charCodeAt(0)
            }, ut = function (e, t) {
                var n = e[t + 6] << 21 | e[t + 7] << 14 | e[t + 8] << 7 | e[t + 9];
                return (16 & e[t + 5]) >> 4 ? n + 20 : n + 10
            }, ct = function (e, t) {
                var n = (224 & e[t + 5]) >> 5, i = e[t + 4] << 3;
                return 6144 & e[t + 3] | i | n
            };
            (at = function () {
                var e = new Uint8Array, t = 0;
                at.prototype.init.call(this), this.setTimestamp = function (e) {
                    t = e
                }, this.push = function (n) {
                    var i, r, s, a, o = 0, l = 0;
                    for (e.length ? (a = e.length, (e = new Uint8Array(n.byteLength + a)).set(e.subarray(0, a)), e.set(n, a)) : e = n; e.length - l >= 3;) if (e[l] !== "I".charCodeAt(0) || e[l + 1] !== "D".charCodeAt(0) || e[l + 2] !== "3".charCodeAt(0)) if (255 != (255 & e[l]) || 240 != (240 & e[l + 1])) l++; else {
                        if (e.length - l < 7) break;
                        if (l + (o = ct(e, l)) > e.length) break;
                        s = {type: "audio", data: e.subarray(l, l + o), pts: t, dts: t}, this.trigger("data", s), l += o
                    } else {
                        if (e.length - l < 10) break;
                        if (l + (o = ut(e, l)) > e.length) break;
                        r = {type: "timed-metadata", data: e.subarray(l, l + o)}, this.trigger("data", r), l += o
                    }
                    i = e.length - l, e = i > 0 ? e.subarray(l) : new Uint8Array
                }, this.reset = function () {
                    e = new Uint8Array, this.trigger("reset")
                }, this.endTimeline = function () {
                    e = new Uint8Array, this.trigger("endedtimeline")
                }
            }).prototype = new q;
            var ht, dt, ft, pt, mt = at, gt = ot.H264Stream, vt = lt, yt = de, _t = ["audioobjecttype", "channelcount", "samplerate", "samplingfrequencyindex", "samplesize"], bt = ["width", "height", "profileIdc", "levelIdc", "profileCompatibility", "sarRatio"], Tt = function (e, t) {
                var n;
                if (e.length !== t.length) return !1;
                for (n = 0; n < e.length; n++) if (e[n] !== t[n]) return !1;
                return !0
            }, wt = function (e, t, n, i, r, s) {
                return {start: {dts: e, pts: e + (n - t)}, end: {dts: e + (i - t), pts: e + (r - n)}, prependedContentDuration: s, baseMediaDecodeTime: e}
            };
            (dt = function (e, t) {
                var n = [], i = 0, r = 0, s = 0, a = 1 / 0;
                t = t || {}, dt.prototype.init.call(this), this.push = function (t) {
                    Se(e, t), e && _t.forEach((function (n) {
                        e[n] = t[n]
                    })), n.push(t)
                }, this.setEarliestDts = function (t) {
                    r = t - e.timelineStartInfo.baseMediaDecodeTime
                }, this.setVideoBaseMediaDecodeTime = function (e) {
                    a = e
                }, this.setAudioAppendStart = function (e) {
                    s = e
                }, this.flush = function () {
                    var o, l, u, c, h;
                    0 !== n.length ? (o = ve(n, e, r), e.baseMediaDecodeTime = we(e, t.keepOriginalTimestamps), ge(e, o, s, a), e.samples = ye(o), u = J(_e(o)), n = [], l = Z(i, [e]), c = new Uint8Array(l.byteLength + u.byteLength), i++, c.set(l), c.set(u, l.byteLength), Te(e), h = Math.ceil(1024 * yt / e.samplerate), o.length && this.trigger("timingInfo", {start: o[0].pts, end: o[0].pts + o.length * h}), this.trigger("data", {track: e, boxes: c}), this.trigger("done", "AudioSegmentStream")) : this.trigger("done", "AudioSegmentStream")
                }, this.reset = function () {
                    Te(e), n = [], this.trigger("reset")
                }
            }).prototype = new q, (ht = function (e, t) {
                var n, i, r = 0, s = [], a = [];
                t = t || {}, ht.prototype.init.call(this), delete e.minPTS, this.gopCache_ = [], this.push = function (t) {
                    Se(e, t), "seq_parameter_set_rbsp" !== t.nalUnitType || n || (n = t.config, e.sps = [t.data], bt.forEach((function (t) {
                        e[t] = n[t]
                    }), this)), "pic_parameter_set_rbsp" !== t.nalUnitType || i || (i = t.data, e.pps = [t.data]), s.push(t)
                }, this.flush = function () {
                    for (var n, i, o, l, u, c, h, d, f = 0; s.length && "access_unit_delimiter_rbsp" !== s[0].nalUnitType;) s.shift();
                    if (0 === s.length) return this.resetStream_(), void this.trigger("done", "VideoSegmentStream");
                    if (n = ne(s), (o = ie(n))[0][0].keyFrame || ((i = this.getGopForFusion_(s[0], e)) ? (f = i.duration, o.unshift(i), o.byteLength += i.byteLength, o.nalCount += i.nalCount, o.pts = i.pts, o.dts = i.dts, o.duration += i.duration) : o = re(o)), a.length) {
                        var p;
                        if (!(p = t.alignGopsAtEnd ? this.alignGopsAtEnd_(o) : this.alignGopsAtStart_(o))) return this.gopCache_.unshift({gop: o.pop(), pps: e.pps, sps: e.sps}), this.gopCache_.length = Math.min(6, this.gopCache_.length), s = [], this.resetStream_(), void this.trigger("done", "VideoSegmentStream");
                        Te(e), o = p
                    }
                    Se(e, o), e.samples = se(o), u = J(ae(o)), e.baseMediaDecodeTime = we(e, t.keepOriginalTimestamps), this.trigger("processedGopsInfo", o.map((function (e) {
                        return {pts: e.pts, dts: e.dts, byteLength: e.byteLength}
                    }))), h = o[0], d = o[o.length - 1], this.trigger("segmentTimingInfo", wt(e.baseMediaDecodeTime, h.dts, h.pts, d.dts + d.duration, d.pts + d.duration, f)), this.trigger("timingInfo", {start: o[0].pts, end: o[o.length - 1].pts + o[o.length - 1].duration}), this.gopCache_.unshift({gop: o.pop(), pps: e.pps, sps: e.sps}), this.gopCache_.length = Math.min(6, this.gopCache_.length), s = [], this.trigger("baseMediaDecodeTime", e.baseMediaDecodeTime), this.trigger("timelineStartInfo", e.timelineStartInfo), l = Z(r, [e]), c = new Uint8Array(l.byteLength + u.byteLength), r++, c.set(l), c.set(u, l.byteLength), this.trigger("data", {track: e, boxes: c}), this.resetStream_(), this.trigger("done", "VideoSegmentStream")
                }, this.reset = function () {
                    this.resetStream_(), s = [], this.gopCache_.length = 0, a.length = 0, this.trigger("reset")
                }, this.resetStream_ = function () {
                    Te(e), n = void 0, i = void 0
                }, this.getGopForFusion_ = function (t) {
                    var n, i, r, s, a, o = 1 / 0;
                    for (a = 0; a < this.gopCache_.length; a++) r = (s = this.gopCache_[a]).gop, e.pps && Tt(e.pps[0], s.pps[0]) && e.sps && Tt(e.sps[0], s.sps[0]) && (r.dts < e.timelineStartInfo.dts || (n = t.dts - r.dts - r.duration) >= -1e4 && n <= 45e3 && (!i || o > n) && (i = s, o = n));
                    return i ? i.gop : null
                }, this.alignGopsAtStart_ = function (e) {
                    var t, n, i, r, s, o, l, u;
                    for (s = e.byteLength, o = e.nalCount, l = e.duration, t = n = 0; t < a.length && n < e.length && (i = a[t], r = e[n], i.pts !== r.pts);) r.pts > i.pts ? t++ : (n++, s -= r.byteLength, o -= r.nalCount, l -= r.duration);
                    return 0 === n ? e : n === e.length ? null : ((u = e.slice(n)).byteLength = s, u.duration = l, u.nalCount = o, u.pts = u[0].pts, u.dts = u[0].dts, u)
                }, this.alignGopsAtEnd_ = function (e) {
                    var t, n, i, r, s, o, l;
                    for (t = a.length - 1, n = e.length - 1, s = null, o = !1; t >= 0 && n >= 0;) {
                        if (i = a[t], r = e[n], i.pts === r.pts) {
                            o = !0;
                            break
                        }
                        i.pts > r.pts ? t-- : (t === a.length - 1 && (s = n), n--)
                    }
                    if (!o && null === s) return null;
                    if (0 === (l = o ? n : s)) return e;
                    var u = e.slice(l), c = u.reduce((function (e, t) {
                        return e.byteLength += t.byteLength, e.duration += t.duration, e.nalCount += t.nalCount, e
                    }), {byteLength: 0, duration: 0, nalCount: 0});
                    return u.byteLength = c.byteLength, u.duration = c.duration, u.nalCount = c.nalCount, u.pts = u[0].pts, u.dts = u[0].dts, u
                }, this.alignGopsWith = function (e) {
                    a = e
                }
            }).prototype = new q, (pt = function (e, t) {
                this.numberOfTracks = 0, this.metadataStream = t, void 0 !== (e = e || {}).remux ? this.remuxTracks = !!e.remux : this.remuxTracks = !0, "boolean" == typeof e.keepOriginalTimestamps ? this.keepOriginalTimestamps = e.keepOriginalTimestamps : this.keepOriginalTimestamps = !1, this.pendingTracks = [], this.videoTrack = null, this.pendingBoxes = [], this.pendingCaptions = [], this.pendingMetadata = [], this.pendingBytes = 0, this.emittedTracks = 0, pt.prototype.init.call(this), this.push = function (e) {
                    return e.text ? this.pendingCaptions.push(e) : e.frames ? this.pendingMetadata.push(e) : (this.pendingTracks.push(e.track), this.pendingBytes += e.boxes.byteLength, "video" === e.track.type && (this.videoTrack = e.track, this.pendingBoxes.push(e.boxes)), void ("audio" === e.track.type && (this.audioTrack = e.track, this.pendingBoxes.unshift(e.boxes))))
                }
            }).prototype = new q, pt.prototype.flush = function (e) {
                var t, n, i, r, s = 0, a = {captions: [], captionStreams: {}, metadata: [], info: {}}, o = 0;
                if (this.pendingTracks.length < this.numberOfTracks) {
                    if ("VideoSegmentStream" !== e && "AudioSegmentStream" !== e) return;
                    if (this.remuxTracks) return;
                    if (0 === this.pendingTracks.length) return this.emittedTracks++, void (this.emittedTracks >= this.numberOfTracks && (this.trigger("done"), this.emittedTracks = 0))
                }
                if (this.videoTrack ? (o = this.videoTrack.timelineStartInfo.pts, bt.forEach((function (e) {
                    a.info[e] = this.videoTrack[e]
                }), this)) : this.audioTrack && (o = this.audioTrack.timelineStartInfo.pts, _t.forEach((function (e) {
                    a.info[e] = this.audioTrack[e]
                }), this)), this.videoTrack || this.audioTrack) {
                    for (1 === this.pendingTracks.length ? a.type = this.pendingTracks[0].type : a.type = "combined", this.emittedTracks += this.pendingTracks.length, i = ee(this.pendingTracks), a.initSegment = new Uint8Array(i.byteLength), a.initSegment.set(i), a.data = new Uint8Array(this.pendingBytes), r = 0; r < this.pendingBoxes.length; r++) a.data.set(this.pendingBoxes[r], s), s += this.pendingBoxes[r].byteLength;
                    for (r = 0; r < this.pendingCaptions.length; r++) (t = this.pendingCaptions[r]).startTime = me(t.startPts, o, this.keepOriginalTimestamps), t.endTime = me(t.endPts, o, this.keepOriginalTimestamps), a.captionStreams[t.stream] = !0, a.captions.push(t);
                    for (r = 0; r < this.pendingMetadata.length; r++) (n = this.pendingMetadata[r]).cueTime = me(n.pts, o, this.keepOriginalTimestamps), a.metadata.push(n);
                    for (a.metadata.dispatchType = this.metadataStream.dispatchType, this.pendingTracks.length = 0, this.videoTrack = null, this.pendingBoxes.length = 0, this.pendingCaptions.length = 0, this.pendingBytes = 0, this.pendingMetadata.length = 0, this.trigger("data", a), r = 0; r < a.captions.length; r++) t = a.captions[r], this.trigger("caption", t);
                    for (r = 0; r < a.metadata.length; r++) n = a.metadata[r], this.trigger("id3Frame", n)
                }
                this.emittedTracks >= this.numberOfTracks && (this.trigger("done"), this.emittedTracks = 0)
            }, pt.prototype.setRemux = function (e) {
                this.remuxTracks = e
            }, (ft = function (e) {
                var t, n, i = this, r = !0;
                ft.prototype.init.call(this), e = e || {}, this.baseMediaDecodeTime = e.baseMediaDecodeTime || 0, this.transmuxPipeline_ = {}, this.setupAacPipeline = function () {
                    var r = {};
                    this.transmuxPipeline_ = r, r.type = "aac", r.metadataStream = new Je.MetadataStream, r.aacStream = new mt, r.audioTimestampRolloverStream = new Je.TimestampRolloverStream("audio"), r.timedMetadataTimestampRolloverStream = new Je.TimestampRolloverStream("timed-metadata"), r.adtsStream = new rt, r.coalesceStream = new pt(e, r.metadataStream), r.headOfPipeline = r.aacStream, r.aacStream.pipe(r.audioTimestampRolloverStream).pipe(r.adtsStream), r.aacStream.pipe(r.timedMetadataTimestampRolloverStream).pipe(r.metadataStream).pipe(r.coalesceStream), r.metadataStream.on("timestamp", (function (e) {
                        r.aacStream.setTimestamp(e.timeStamp)
                    })), r.aacStream.on("data", (function (s) {
                        "timed-metadata" !== s.type || r.audioSegmentStream || (n = n || {timelineStartInfo: {baseMediaDecodeTime: i.baseMediaDecodeTime}, codec: "adts", type: "audio"}, r.coalesceStream.numberOfTracks++, r.audioSegmentStream = new dt(n, e), r.audioSegmentStream.on("timingInfo", i.trigger.bind(i, "audioTimingInfo")), r.adtsStream.pipe(r.audioSegmentStream).pipe(r.coalesceStream)), i.trigger("trackinfo", {hasAudio: !!n, hasVideo: !!t})
                    })), r.coalesceStream.on("data", this.trigger.bind(this, "data")), r.coalesceStream.on("done", this.trigger.bind(this, "done"))
                }, this.setupTsPipeline = function () {
                    var r = {};
                    this.transmuxPipeline_ = r, r.type = "ts", r.metadataStream = new Je.MetadataStream, r.packetStream = new Je.TransportPacketStream, r.parseStream = new Je.TransportParseStream, r.elementaryStream = new Je.ElementaryStream, r.timestampRolloverStream = new Je.TimestampRolloverStream, r.adtsStream = new rt, r.h264Stream = new gt, r.captionStream = new Je.CaptionStream, r.coalesceStream = new pt(e, r.metadataStream), r.headOfPipeline = r.packetStream, r.packetStream.pipe(r.parseStream).pipe(r.elementaryStream).pipe(r.timestampRolloverStream), r.timestampRolloverStream.pipe(r.h264Stream), r.timestampRolloverStream.pipe(r.adtsStream), r.timestampRolloverStream.pipe(r.metadataStream).pipe(r.coalesceStream), r.h264Stream.pipe(r.captionStream).pipe(r.coalesceStream), r.elementaryStream.on("data", (function (s) {
                        var a;
                        if ("metadata" === s.type) {
                            for (a = s.tracks.length; a--;) t || "video" !== s.tracks[a].type ? n || "audio" !== s.tracks[a].type || ((n = s.tracks[a]).timelineStartInfo.baseMediaDecodeTime = i.baseMediaDecodeTime) : (t = s.tracks[a]).timelineStartInfo.baseMediaDecodeTime = i.baseMediaDecodeTime;
                            t && !r.videoSegmentStream && (r.coalesceStream.numberOfTracks++, r.videoSegmentStream = new ht(t, e), r.videoSegmentStream.on("timelineStartInfo", (function (e) {
                                n && (n.timelineStartInfo = e, r.audioSegmentStream.setEarliestDts(e.dts))
                            })), r.videoSegmentStream.on("processedGopsInfo", i.trigger.bind(i, "gopInfo")), r.videoSegmentStream.on("segmentTimingInfo", i.trigger.bind(i, "videoSegmentTimingInfo")), r.videoSegmentStream.on("baseMediaDecodeTime", (function (e) {
                                n && r.audioSegmentStream.setVideoBaseMediaDecodeTime(e)
                            })), r.videoSegmentStream.on("timingInfo", i.trigger.bind(i, "videoTimingInfo")), r.h264Stream.pipe(r.videoSegmentStream).pipe(r.coalesceStream)), n && !r.audioSegmentStream && (r.coalesceStream.numberOfTracks++, r.audioSegmentStream = new dt(n, e), r.audioSegmentStream.on("timingInfo", i.trigger.bind(i, "audioTimingInfo")), r.adtsStream.pipe(r.audioSegmentStream).pipe(r.coalesceStream)), i.trigger("trackinfo", {hasAudio: !!n, hasVideo: !!t})
                        }
                    })), r.coalesceStream.on("data", this.trigger.bind(this, "data")), r.coalesceStream.on("id3Frame", (function (e) {
                        e.dispatchType = r.metadataStream.dispatchType, i.trigger("id3Frame", e)
                    })), r.coalesceStream.on("caption", this.trigger.bind(this, "caption")), r.coalesceStream.on("done", this.trigger.bind(this, "done"))
                }, this.setBaseMediaDecodeTime = function (i) {
                    var r = this.transmuxPipeline_;
                    e.keepOriginalTimestamps || (this.baseMediaDecodeTime = i), n && (n.timelineStartInfo.dts = void 0, n.timelineStartInfo.pts = void 0, Te(n), e.keepOriginalTimestamps || (n.timelineStartInfo.baseMediaDecodeTime = i), r.audioTimestampRolloverStream && r.audioTimestampRolloverStream.discontinuity()), t && (r.videoSegmentStream && (r.videoSegmentStream.gopCache_ = []), t.timelineStartInfo.dts = void 0, t.timelineStartInfo.pts = void 0, Te(t), r.captionStream.reset(), e.keepOriginalTimestamps || (t.timelineStartInfo.baseMediaDecodeTime = i)), r.timestampRolloverStream && r.timestampRolloverStream.discontinuity()
                }, this.setAudioAppendStart = function (e) {
                    n && this.transmuxPipeline_.audioSegmentStream.setAudioAppendStart(e)
                }, this.setRemux = function (t) {
                    var n = this.transmuxPipeline_;
                    e.remux = t, n && n.coalesceStream && n.coalesceStream.setRemux(t)
                }, this.alignGopsWith = function (e) {
                    t && this.transmuxPipeline_.videoSegmentStream && this.transmuxPipeline_.videoSegmentStream.alignGopsWith(e)
                }, this.push = function (e) {
                    if (r) {
                        var t = vt(e);
                        t && "aac" !== this.transmuxPipeline_.type ? this.setupAacPipeline() : t || "ts" === this.transmuxPipeline_.type || this.setupTsPipeline(), r = !1
                    }
                    this.transmuxPipeline_.headOfPipeline.push(e)
                }, this.flush = function () {
                    r = !0, this.transmuxPipeline_.headOfPipeline.flush()
                }, this.endTimeline = function () {
                    this.transmuxPipeline_.headOfPipeline.endTimeline()
                }, this.reset = function () {
                    this.transmuxPipeline_.headOfPipeline && this.transmuxPipeline_.headOfPipeline.reset()
                }, this.resetCaptions = function () {
                    this.transmuxPipeline_.captionStream && this.transmuxPipeline_.captionStream.reset()
                }
            }).prototype = new q;
            var St = {Transmuxer: ft, VideoSegmentStream: ht, AudioSegmentStream: dt, AUDIO_PROPERTIES: _t, VIDEO_PROPERTIES: bt, generateVideoSegmentTimingInfo: wt}, Et = function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }, Ct = function () {
                function e(e, t) {
                    for (var n = 0; n < t.length; n++) {
                        var i = t[n];
                        i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                    }
                }

                return function (t, n, i) {
                    return n && e(t.prototype, n), i && e(t, i), t
                }
            }(), kt = function () {
                function e(t, n) {
                    Et(this, e), this.options = n || {}, this.self = t, this.init()
                }

                return Ct(e, [{
                    key: "init", value: function () {
                        this.transmuxer && this.transmuxer.dispose(), this.transmuxer = new St.Transmuxer(this.options), function (e, t) {
                            t.on("data", (function (t) {
                                var n = t.initSegment;
                                t.initSegment = {data: n.buffer, byteOffset: n.byteOffset, byteLength: n.byteLength};
                                var i = t.data;
                                t.data = i.buffer, e.postMessage({action: "data", segment: t, byteOffset: i.byteOffset, byteLength: i.byteLength}, [t.data])
                            })), t.captionStream && t.captionStream.on("data", (function (t) {
                                e.postMessage({action: "caption", data: t})
                            })), t.on("done", (function (t) {
                                e.postMessage({action: "done"})
                            })), t.on("gopInfo", (function (t) {
                                e.postMessage({action: "gopInfo", gopInfo: t})
                            })), t.on("videoSegmentTimingInfo", (function (t) {
                                e.postMessage({action: "videoSegmentTimingInfo", videoSegmentTimingInfo: t})
                            }))
                        }(this.self, this.transmuxer)
                    }
                }, {
                    key: "push", value: function (e) {
                        var t = new Uint8Array(e.data, e.byteOffset, e.byteLength);
                        this.transmuxer.push(t)
                    }
                }, {
                    key: "reset", value: function () {
                        this.init()
                    }
                }, {
                    key: "setTimestampOffset", value: function (e) {
                        var t = e.timestampOffset || 0;
                        this.transmuxer.setBaseMediaDecodeTime(Math.round(9e4 * t))
                    }
                }, {
                    key: "setAudioAppendStart", value: function (e) {
                        this.transmuxer.setAudioAppendStart(Math.ceil(9e4 * e.appendStart))
                    }
                }, {
                    key: "flush", value: function (e) {
                        this.transmuxer.flush()
                    }
                }, {
                    key: "resetCaptions", value: function () {
                        this.transmuxer.resetCaptions()
                    }
                }, {
                    key: "alignGopsWith", value: function (e) {
                        this.transmuxer.alignGopsWith(e.gopsToAlignWith.slice())
                    }
                }]), e
            }();
            new function (e) {
                e.onmessage = function (t) {
                    "init" === t.data.action && t.data.options ? this.messageHandlers = new kt(e, t.data.options) : (this.messageHandlers || (this.messageHandlers = new kt(e)), t.data && t.data.action && "init" !== t.data.action && this.messageHandlers[t.data.action] && this.messageHandlers[t.data.action](t.data))
                }
            }(n)
        }()
    })), go = {videoCodec: "avc1", videoObjectTypeIndicator: ".4d400d", audioProfile: "2"}, vo = function (e) {
        return e.map((function (e) {
            return e.replace(/avc1\.(\d+)\.(\d+)/i, (function (e, t, n) {
                return "avc1." + ("00" + Number(t).toString(16)).slice(-2) + "00" + ("00" + Number(n).toString(16)).slice(-2)
            }))
        }))
    }, yo = function () {
        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", t = {codecCount: 0}, n = void 0;
        return t.codecCount = e.split(",").length, t.codecCount = t.codecCount || 2, (n = /(^|\s|,)+(avc[13])([^ ,]*)/i.exec(e)) && (t.videoCodec = n[2], t.videoObjectTypeIndicator = n[3]), t.audioProfile = /(^|\s|,)+mp4a.[0-9A-Fa-f]+\.([0-9A-Fa-f]+)/i.exec(e), t.audioProfile = t.audioProfile && t.audioProfile[2], t
    }, _o = function (e, t, n) {
        return e + "/" + t + '; codecs="' + n.filter((function (e) {
            return !!e
        })).join(", ") + '"'
    }, bo = function (e, t) {
        var n = function (e) {
            return e.segments && e.segments.length && e.segments[0].map ? "mp4" : "mp2t"
        }(t), i = function (e) {
            var t = e.attributes || {};
            return t.CODECS ? yo(t.CODECS) : go
        }(t), r = t.attributes || {}, s = !0, a = !1;
        if (!t) return [];
        if (e.mediaGroups.AUDIO && r.AUDIO) {
            var o = e.mediaGroups.AUDIO[r.AUDIO];
            if (o) for (var l in a = !0, s = !1, o) if (!o[l].uri && !o[l].playlists) {
                s = !0;
                break
            }
        }
        a && !i.audioProfile && (s || (i.audioProfile = function (e, t) {
            if (!e.mediaGroups.AUDIO || !t) return null;
            var n = e.mediaGroups.AUDIO[t];
            if (!n) return null;
            for (var i in n) {
                var r = n[i];
                if (r.default && r.playlists) return yo(r.playlists[0].attributes.CODECS).audioProfile
            }
            return null
        }(e, r.AUDIO)), i.audioProfile || (Zs.log.warn("Multiple audio tracks present but no audio codec string is specified. Attempting to use the default audio codec (mp4a.40.2)"), i.audioProfile = go.audioProfile));
        var u = {};
        i.videoCodec && (u.video = "" + i.videoCodec + i.videoObjectTypeIndicator), i.audioProfile && (u.audio = "mp4a.40." + i.audioProfile);
        var c = _o("audio", n, [u.audio]), h = _o("video", n, [u.video]), d = _o("video", n, [u.video, u.audio]);
        return a ? !s && u.video ? [h, c] : s || u.video ? [d, c] : [c, c] : u.video ? [d] : [c]
    }, To = function (e) {
        var t = {type: "", parameters: {}}, n = e.trim().split(";");
        return t.type = n.shift().trim(), n.forEach((function (e) {
            var n = e.trim().split("=");
            if (n.length > 1) {
                var i = n[0].replace(/"/g, "").trim(), r = n[1].replace(/"/g, "").trim();
                t.parameters[i] = r
            }
        })), t
    }, wo = function (e) {
        return /mp4a\.\d+.\d+/i.test(e)
    }, So = function (e) {
        return /avc1\.[\da-f]+/i.test(e)
    }, Eo = function (e, t, n) {
        if (null == t || !e.length) return [];
        var i = Math.ceil(9e4 * (t - n + 3)), r = void 0;
        for (r = 0; r < e.length && !(e[r].pts > i); r++) ;
        return e.slice(r)
    }, Co = function (e, t, n) {
        var i = null, r = null, s = 0, a = [], o = [];
        if (!e && !t) return Zs.createTimeRange();
        if (!e) return t.buffered;
        if (!t) return e.buffered;
        if (n) return e.buffered;
        if (0 === e.buffered.length && 0 === t.buffered.length) return Zs.createTimeRange();
        for (var l = e.buffered, u = t.buffered, c = l.length; c--;) a.push({time: l.start(c), type: "start"}), a.push({time: l.end(c), type: "end"});
        for (c = u.length; c--;) a.push({time: u.start(c), type: "start"}), a.push({time: u.end(c), type: "end"});
        for (a.sort((function (e, t) {
            return e.time - t.time
        })), c = 0; c < a.length; c++) "start" === a[c].type ? 2 === ++s && (i = a[c].time) : "end" === a[c].type && 1 === --s && (r = a[c].time), null !== i && null !== r && (o.push([i, r]), i = null, r = null);
        return Zs.createTimeRanges(o)
    }, ko = function (e) {
        function t(e, n) {
            ra(this, t);
            var i = oa(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, Zs.EventTarget));
            i.timestampOffset_ = 0, i.pendingBuffers_ = [], i.bufferUpdating_ = !1, i.mediaSource_ = e, i.codecs_ = n, i.audioCodec_ = null, i.videoCodec_ = null, i.audioDisabled_ = !1, i.appendAudioInitSegment_ = !0, i.gopBuffer_ = [], i.timeMapping_ = 0, i.safeAppend_ = Zs.browser.IE_VERSION >= 11;
            var r = {remux: !1, alignGopsAtEnd: i.safeAppend_};
            return i.codecs_.forEach((function (e) {
                wo(e) ? i.audioCodec_ = e : So(e) && (i.videoCodec_ = e)
            })), i.transmuxer_ = new mo, i.transmuxer_.postMessage({action: "init", options: r}), i.transmuxer_.onmessage = function (e) {
                return "data" === e.data.action ? i.data_(e) : "done" === e.data.action ? i.done_(e) : "gopInfo" === e.data.action ? i.appendGopInfo_(e) : "videoSegmentTimingInfo" === e.data.action ? i.videoSegmentTimingInfo_(e.data.videoSegmentTimingInfo) : void 0
            }, Object.defineProperty(i, "timestampOffset", {
                get: function () {
                    return this.timestampOffset_
                }, set: function (e) {
                    "number" == typeof e && e >= 0 && (this.timestampOffset_ = e, this.appendAudioInitSegment_ = !0, this.gopBuffer_.length = 0, this.timeMapping_ = 0, this.transmuxer_.postMessage({action: "setTimestampOffset", timestampOffset: e}))
                }
            }), Object.defineProperty(i, "appendWindowStart", {
                get: function () {
                    return (this.videoBuffer_ || this.audioBuffer_).appendWindowStart
                }, set: function (e) {
                    this.videoBuffer_ && (this.videoBuffer_.appendWindowStart = e), this.audioBuffer_ && (this.audioBuffer_.appendWindowStart = e)
                }
            }), Object.defineProperty(i, "updating", {
                get: function () {
                    return !!(this.bufferUpdating_ || !this.audioDisabled_ && this.audioBuffer_ && this.audioBuffer_.updating || this.videoBuffer_ && this.videoBuffer_.updating)
                }
            }), Object.defineProperty(i, "buffered", {
                get: function () {
                    return Co(this.videoBuffer_, this.audioBuffer_, this.audioDisabled_)
                }
            }), i
        }

        return aa(t, e), sa(t, [{
            key: "data_", value: function (e) {
                var t = e.data.segment;
                t.data = new Uint8Array(t.data, e.data.byteOffset, e.data.byteLength), t.initSegment = new Uint8Array(t.initSegment.data, t.initSegment.byteOffset, t.initSegment.byteLength), function (e, t, n) {
                    var i = t.player_;
                    if (n.captions && n.captions.length) for (var r in e.inbandTextTracks_ || (e.inbandTextTracks_ = {}), n.captionStreams) if (!e.inbandTextTracks_[r]) {
                        i.tech_.trigger({type: "usage", name: "hls-608"});
                        var s = i.textTracks().getTrackById(r);
                        e.inbandTextTracks_[r] = s || i.addRemoteTextTrack({kind: "captions", id: r, label: r}, !1).track
                    }
                    n.metadata && n.metadata.length && !e.metadataTrack_ && (e.metadataTrack_ = i.addRemoteTextTrack({kind: "metadata", label: "Timed Metadata"}, !1).track, e.metadataTrack_.inBandMetadataTrackDispatchType = n.metadata.dispatchType)
                }(this, this.mediaSource_, t), this.pendingBuffers_.push(t)
            }
        }, {
            key: "done_", value: function (e) {
                "closed" !== this.mediaSource_.readyState ? this.processPendingSegments_() : this.pendingBuffers_.length = 0
            }
        }, {
            key: "videoSegmentTimingInfo_", value: function (e) {
                var t = {start: {decode: e.start.dts / 9e4, presentation: e.start.pts / 9e4}, end: {decode: e.end.dts / 9e4, presentation: e.end.pts / 9e4}, baseMediaDecodeTime: e.baseMediaDecodeTime / 9e4};
                e.prependedContentDuration && (t.prependedContentDuration = e.prependedContentDuration / 9e4), this.trigger({type: "videoSegmentTimingInfo", videoSegmentTimingInfo: t})
            }
        }, {
            key: "createRealSourceBuffers_", value: function () {
                var e = this, t = ["audio", "video"];
                t.forEach((function (n) {
                    if (e[n + "Codec_"] && !e[n + "Buffer_"]) {
                        var i = null;
                        if (e.mediaSource_[n + "Buffer_"]) (i = e.mediaSource_[n + "Buffer_"]).updating = !1; else {
                            var r = n + '/mp4;codecs="' + e[n + "Codec_"] + '"';
                            i = function (e, t) {
                                var n = e.addSourceBuffer(t), i = Object.create(null);
                                i.updating = !1, i.realBuffer_ = n;
                                var r = function (e) {
                                    "function" == typeof n[e] ? i[e] = function () {
                                        return n[e].apply(n, arguments)
                                    } : void 0 === i[e] && Object.defineProperty(i, e, {
                                        get: function () {
                                            return n[e]
                                        }, set: function (t) {
                                            return n[e] = t
                                        }
                                    })
                                };
                                for (var s in n) r(s);
                                return i
                            }(e.mediaSource_.nativeMediaSource_, r), e.mediaSource_[n + "Buffer_"] = i
                        }
                        e[n + "Buffer_"] = i, ["update", "updatestart", "updateend"].forEach((function (r) {
                            i.addEventListener(r, (function () {
                                if ("audio" !== n || !e.audioDisabled_) return "updateend" === r && (e[n + "Buffer_"].updating = !1), t.every((function (t) {
                                    return !("audio" !== t || !e.audioDisabled_) || (n === t || !e[t + "Buffer_"] || !e[t + "Buffer_"].updating)
                                })) ? e.trigger(r) : void 0
                            }))
                        }))
                    }
                }))
            }
        }, {
            key: "appendBuffer", value: function (e) {
                if (this.bufferUpdating_ = !0, this.audioBuffer_ && this.audioBuffer_.buffered.length) {
                    var t = this.audioBuffer_.buffered;
                    this.transmuxer_.postMessage({action: "setAudioAppendStart", appendStart: t.end(t.length - 1)})
                }
                this.videoBuffer_ && this.transmuxer_.postMessage({action: "alignGopsWith", gopsToAlignWith: Eo(this.gopBuffer_, this.mediaSource_.player_ ? this.mediaSource_.player_.currentTime() : null, this.timeMapping_)}), this.transmuxer_.postMessage({action: "push", data: e.buffer, byteOffset: e.byteOffset, byteLength: e.byteLength}, [e.buffer]), this.transmuxer_.postMessage({action: "flush"})
            }
        }, {
            key: "appendGopInfo_", value: function (e) {
                this.gopBuffer_ = function (e, t, n) {
                    if (!t.length) return e;
                    if (n) return t.slice();
                    for (var i = t[0].pts, r = 0; r < e.length && !(e[r].pts >= i); r++) ;
                    return e.slice(0, r).concat(t)
                }(this.gopBuffer_, e.data.gopInfo, this.safeAppend_)
            }
        }, {
            key: "remove", value: function (e, t) {
                if (this.videoBuffer_ && (this.videoBuffer_.updating = !0, this.videoBuffer_.remove(e, t), this.gopBuffer_ = function (e, t, n, i) {
                    for (var r = Math.ceil(9e4 * (t - i)), s = Math.ceil(9e4 * (n - i)), a = e.slice(), o = e.length; o-- && !(e[o].pts <= s);) ;
                    if (-1 === o) return a;
                    for (var l = o + 1; l-- && !(e[l].pts <= r);) ;
                    return l = Math.max(l, 0), a.splice(l, o - l + 1), a
                }(this.gopBuffer_, e, t, this.timeMapping_)), !this.audioDisabled_ && this.audioBuffer_ && (this.audioBuffer_.updating = !0, this.audioBuffer_.remove(e, t)), eo(e, t, this.metadataTrack_), this.inbandTextTracks_) for (var n in this.inbandTextTracks_) eo(e, t, this.inbandTextTracks_[n])
            }
        }, {
            key: "processPendingSegments_", value: function () {
                var e = {video: {segments: [], bytes: 0}, audio: {segments: [], bytes: 0}, captions: [], metadata: []};
                if (!this.pendingBuffers_.length) return this.trigger("updateend"), void (this.bufferUpdating_ = !1);
                e = this.pendingBuffers_.reduce((function (e, t) {
                    var n = t.type, i = t.data, r = t.initSegment;
                    return e[n].segments.push(i), e[n].bytes += i.byteLength, e[n].initSegment = r, t.captions && (e.captions = e.captions.concat(t.captions)), t.info && (e[n].info = t.info), t.metadata && (e.metadata = e.metadata.concat(t.metadata)), e
                }), e), this.videoBuffer_ || this.audioBuffer_ || (0 === e.video.bytes && (this.videoCodec_ = null), 0 === e.audio.bytes && (this.audioCodec_ = null), this.createRealSourceBuffers_()), e.audio.info && this.mediaSource_.trigger({type: "audioinfo", info: e.audio.info}), e.video.info && this.mediaSource_.trigger({type: "videoinfo", info: e.video.info}), this.appendAudioInitSegment_ && (!this.audioDisabled_ && this.audioBuffer_ && (e.audio.segments.unshift(e.audio.initSegment), e.audio.bytes += e.audio.initSegment.byteLength), this.appendAudioInitSegment_ = !1);
                var t = !1;
                this.videoBuffer_ && e.video.bytes ? (e.video.segments.unshift(e.video.initSegment), e.video.bytes += e.video.initSegment.byteLength, this.concatAndAppendSegments_(e.video, this.videoBuffer_)) : !this.videoBuffer_ || !this.audioDisabled_ && this.audioBuffer_ || (t = !0), no(this, e.captions, e.metadata), !this.audioDisabled_ && this.audioBuffer_ && this.concatAndAppendSegments_(e.audio, this.audioBuffer_), this.pendingBuffers_.length = 0, t && this.trigger("updateend"), this.bufferUpdating_ = !1
            }
        }, {
            key: "concatAndAppendSegments_", value: function (e, t) {
                var n = 0, i = void 0;
                if (e.bytes) {
                    i = new Uint8Array(e.bytes), e.segments.forEach((function (e) {
                        i.set(e, n), n += e.byteLength
                    }));
                    try {
                        t.updating = !0, t.appendBuffer(i)
                    } catch (e) {
                        this.mediaSource_.player_ && this.mediaSource_.player_.error({code: -3, type: "APPEND_BUFFER_ERR", message: e.message, originalError: e})
                    }
                }
            }
        }, {
            key: "abort", value: function () {
                this.videoBuffer_ && this.videoBuffer_.abort(), !this.audioDisabled_ && this.audioBuffer_ && this.audioBuffer_.abort(), this.transmuxer_ && this.transmuxer_.postMessage({action: "reset"}), this.pendingBuffers_.length = 0, this.bufferUpdating_ = !1
            }
        }, {
            key: "dispose", value: function () {
                this.transmuxer_ && this.transmuxer_.terminate(), this.trigger("dispose"), this.off()
            }
        }]), t
    }(Zs.EventTarget), xo = function (e) {
        function t() {
            ra(this, t);
            var e = oa(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this)), n = void 0;
            for (n in e.nativeMediaSource_ = new r.a.MediaSource, e.nativeMediaSource_) n in t.prototype || "function" != typeof e.nativeMediaSource_[n] || (e[n] = e.nativeMediaSource_[n].bind(e.nativeMediaSource_));
            return e.duration_ = NaN, Object.defineProperty(e, "duration", {
                get: function () {
                    return this.duration_ === 1 / 0 ? this.duration_ : this.nativeMediaSource_.duration
                }, set: function (e) {
                    this.duration_ = e, e === 1 / 0 || (this.nativeMediaSource_.duration = e)
                }
            }), Object.defineProperty(e, "seekable", {
                get: function () {
                    return this.duration_ === 1 / 0 ? Zs.createTimeRanges([[0, this.nativeMediaSource_.duration]]) : this.nativeMediaSource_.seekable
                }
            }), Object.defineProperty(e, "readyState", {
                get: function () {
                    return this.nativeMediaSource_.readyState
                }
            }), Object.defineProperty(e, "activeSourceBuffers", {
                get: function () {
                    return this.activeSourceBuffers_
                }
            }), e.sourceBuffers = [], e.activeSourceBuffers_ = [], e.updateActiveSourceBuffers_ = function () {
                if (e.activeSourceBuffers_.length = 0, 1 === e.sourceBuffers.length) {
                    var t = e.sourceBuffers[0];
                    return t.appendAudioInitSegment_ = !0, t.audioDisabled_ = !t.audioCodec_, void e.activeSourceBuffers_.push(t)
                }
                for (var n = !1, i = !0, r = 0; r < e.player_.audioTracks().length; r++) {
                    var s = e.player_.audioTracks()[r];
                    if (s.enabled && "main" !== s.kind) {
                        n = !0, i = !1;
                        break
                    }
                }
                e.sourceBuffers.forEach((function (t, r) {
                    if (t.appendAudioInitSegment_ = !0, t.videoCodec_ && t.audioCodec_) t.audioDisabled_ = n; else if (t.videoCodec_ && !t.audioCodec_) t.audioDisabled_ = !0, i = !1; else if (!t.videoCodec_ && t.audioCodec_ && (t.audioDisabled_ = r ? i : !i, t.audioDisabled_)) return;
                    e.activeSourceBuffers_.push(t)
                }))
            }, e.onPlayerMediachange_ = function () {
                e.sourceBuffers.forEach((function (e) {
                    e.appendAudioInitSegment_ = !0
                }))
            }, e.onHlsReset_ = function () {
                e.sourceBuffers.forEach((function (e) {
                    e.transmuxer_ && e.transmuxer_.postMessage({action: "resetCaptions"})
                }))
            }, e.onHlsSegmentTimeMapping_ = function (t) {
                e.sourceBuffers.forEach((function (e) {
                    return e.timeMapping_ = t.mapping
                }))
            }, ["sourceopen", "sourceclose", "sourceended"].forEach((function (e) {
                this.nativeMediaSource_.addEventListener(e, this.trigger.bind(this))
            }), e), e.on("sourceopen", (function (t) {
                var n = a.a.querySelector('[src="' + e.url_ + '"]');
                n && (e.player_ = Zs(n.parentNode), e.player_ && (e.player_.tech_.on("hls-reset", e.onHlsReset_), e.player_.tech_.on("hls-segment-time-mapping", e.onHlsSegmentTimeMapping_), e.player_.audioTracks && e.player_.audioTracks() && (e.player_.audioTracks().on("change", e.updateActiveSourceBuffers_), e.player_.audioTracks().on("addtrack", e.updateActiveSourceBuffers_), e.player_.audioTracks().on("removetrack", e.updateActiveSourceBuffers_)), e.player_.on("mediachange", e.onPlayerMediachange_)))
            })), e.on("sourceended", (function (t) {
                for (var n = to(e.duration), i = 0; i < e.sourceBuffers.length; i++) {
                    var r = e.sourceBuffers[i], s = r.metadataTrack_ && r.metadataTrack_.cues;
                    s && s.length && (s[s.length - 1].endTime = n)
                }
            })), e.on("sourceclose", (function (e) {
                this.sourceBuffers.forEach((function (e) {
                    e.transmuxer_ && e.transmuxer_.terminate()
                })), this.sourceBuffers.length = 0, this.player_ && (this.player_.audioTracks && this.player_.audioTracks() && (this.player_.audioTracks().off("change", this.updateActiveSourceBuffers_), this.player_.audioTracks().off("addtrack", this.updateActiveSourceBuffers_), this.player_.audioTracks().off("removetrack", this.updateActiveSourceBuffers_)), this.player_.el_ && this.player_.off("mediachange", this.onPlayerMediachange_), this.player_.tech_ && this.player_.tech_.el_ && (this.player_.tech_.off("hls-reset", this.onHlsReset_), this.player_.tech_.off("hls-segment-time-mapping", this.onHlsSegmentTimeMapping_)))
            })), e
        }

        return aa(t, e), sa(t, [{
            key: "addSeekableRange_", value: function (e, t) {
                var n = void 0;
                if (this.duration !== 1 / 0) throw(n = new Error("MediaSource.addSeekableRange() can only be invoked when the duration is Infinity")).name = "InvalidStateError", n.code = 11, n;
                (t > this.nativeMediaSource_.duration || isNaN(this.nativeMediaSource_.duration)) && (this.nativeMediaSource_.duration = t)
            }
        }, {
            key: "addSourceBuffer", value: function (e) {
                var t = void 0, n = To(e);
                if (/^(video|audio)\/mp2t$/i.test(n.type)) {
                    var i = [];
                    n.parameters && n.parameters.codecs && (i = n.parameters.codecs.split(","), i = (i = vo(i)).filter((function (e) {
                        return wo(e) || So(e)
                    }))), 0 === i.length && (i = ["avc1.4d400d", "mp4a.40.2"]), t = new ko(this, i), 0 !== this.sourceBuffers.length && (this.sourceBuffers[0].createRealSourceBuffers_(), t.createRealSourceBuffers_(), this.sourceBuffers[0].audioDisabled_ = !0)
                } else t = this.nativeMediaSource_.addSourceBuffer(e);
                return this.sourceBuffers.push(t), t
            }
        }, {
            key: "dispose", value: function () {
                this.trigger("dispose"), this.off(), this.sourceBuffers.forEach((function (e) {
                    e.dispose && e.dispose()
                })), this.sourceBuffers.length = 0
            }
        }]), t
    }(Zs.EventTarget), Ao = 0;
    Zs.mediaSources = {};
    var Do = function (e, t) {
        var n = Zs.mediaSources[e];
        if (!n) throw new Error("Media Source not found (Video.js)");
        n.trigger({type: "sourceopen", swfId: t})
    }, Io = function () {
        return !!r.a.MediaSource && !!r.a.MediaSource.isTypeSupported && r.a.MediaSource.isTypeSupported('video/mp4;codecs="avc1.4d400d,mp4a.40.2"')
    }, Po = function () {
        if (this.MediaSource = {open: Do, supportsNativeMediaSources: Io}, Io()) return new xo;
        throw new Error("Cannot use create a virtual MediaSource for this video")
    };
    Po.open = Do, Po.supportsNativeMediaSources = Io;
    var Oo = {
        createObjectURL: function (e) {
            var t = void 0;
            return e instanceof xo ? (t = r.a.URL.createObjectURL(e.nativeMediaSource_), e.url_ = t, t) : e instanceof xo ? (t = "blob:vjs-media-source/" + Ao, Ao++, Zs.mediaSources[t] = e, t) : (t = r.a.URL.createObjectURL(e), e.url_ = t, t)
        }
    };
    Zs.MediaSource = Po, Zs.URL = Oo;
    var Lo = Zs.EventTarget, No = Zs.mergeOptions, Ro = function (e, t) {
        for (var n = void 0, i = No(e, {duration: t.duration, minimumUpdatePeriod: t.minimumUpdatePeriod}), r = 0; r < t.playlists.length; r++) {
            var s = fa(i, t.playlists[r]);
            s ? i = s : n = !0
        }
        return da(t, (function (e, t, r, s) {
            if (e.playlists && e.playlists.length) {
                var a = e.playlists[0].id, o = fa(i, e.playlists[0]);
                o && ((i = o).mediaGroups[t][r][s].playlists[0] = i.playlists[a], n = !1)
            }
        })), n ? null : i
    }, Uo = function (e) {
        var t = e.byterange.offset + e.byterange.length - 1;
        return e.uri + "-" + e.byterange.offset + "-" + t
    }, Mo = function (e, t) {
        var n, i, r = {};
        for (var s in e) {
            var a = e[s].sidx;
            if (a) {
                var o = Uo(a);
                if (!t[o]) break;
                var l = t[o].sidxInfo;
                n = l, i = a, (Boolean(!n.map && !i.map) || Boolean(n.map && i.map && n.map.byterange.offset === i.map.byterange.offset && n.map.byterange.length === i.map.byterange.length)) && n.uri === i.uri && n.byterange.offset === i.byterange.offset && n.byterange.length === i.byterange.length && (r[o] = t[o])
            }
        }
        return r
    }, Bo = function (e, t, n, i, r) {
        var s = {uri: ia(i.handleManifestRedirects, e.resolvedUri), byterange: e.byterange, playlist: t};
        return n(Zs.mergeOptions(s, {responseType: "arraybuffer", headers: Ba(s)}), r)
    }, jo = function (e) {
        function t(e, n) {
            var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, r = arguments[3];
            ra(this, t);
            var s = oa(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this)), a = i.withCredentials, o = void 0 !== a && a, l = i.handleManifestRedirects, u = void 0 !== l && l;
            if (s.hls_ = n, s.withCredentials = o, s.handleManifestRedirects = u, !e) throw new Error("A non-empty playlist URL or playlist is required");
            return s.on("minimumUpdatePeriod", (function () {
                s.refreshXml_()
            })), s.on("mediaupdatetimeout", (function () {
                s.refreshMedia_(s.media().id)
            })), s.state = "HAVE_NOTHING", s.loadedPlaylists_ = {}, "string" == typeof e ? (s.srcUrl = e, s.sidxMapping_ = {}, oa(s)) : (s.setupChildLoader(r, e), s)
        }

        return aa(t, e), sa(t, [{
            key: "setupChildLoader", value: function (e, t) {
                this.masterPlaylistLoader_ = e, this.childPlaylist_ = t
            }
        }, {
            key: "dispose", value: function () {
                this.trigger("dispose"), this.stopRequest(), this.loadedPlaylists_ = {}, r.a.clearTimeout(this.minimumUpdatePeriodTimeout_), r.a.clearTimeout(this.mediaRequest_), r.a.clearTimeout(this.mediaUpdateTimeout), this.off()
            }
        }, {
            key: "hasPendingRequest", value: function () {
                return this.request || this.mediaRequest_
            }
        }, {
            key: "stopRequest", value: function () {
                if (this.request) {
                    var e = this.request;
                    this.request = null, e.onreadystatechange = null, e.abort()
                }
            }
        }, {
            key: "sidxRequestFinished_", value: function (e, t, n, i) {
                var r = this;
                return function (s, a) {
                    if (r.request) {
                        if (r.request = null, s) return r.error = {status: a.status, message: "DASH playlist request error at URL: " + e.uri, response: a.response, code: 2}, n && (r.state = n), r.trigger("error"), i(t, null);
                        var o = new Uint8Array(a.response), l = xe.a.parseSidx(o.subarray(8));
                        return i(t, l)
                    }
                }
            }
        }, {
            key: "media", value: function (e) {
                var t = this;
                if (!e) return this.media_;
                if ("HAVE_NOTHING" === this.state) throw new Error("Cannot switch media playlist from " + this.state);
                var n = this.state;
                if ("string" == typeof e) {
                    if (!this.master.playlists[e]) throw new Error("Unknown playlist URI: " + e);
                    e = this.master.playlists[e]
                }
                var i = !this.media_ || e.id !== this.media_.id;
                if (i && this.loadedPlaylists_[e.id] && this.loadedPlaylists_[e.id].endList) return this.state = "HAVE_METADATA", this.media_ = e, void (i && (this.trigger("mediachanging"), this.trigger("mediachange")));
                if (i) if (this.media_ && this.trigger("mediachanging"), e.sidx) {
                    var s = void 0, a = void 0;
                    this.masterPlaylistLoader_ ? (s = this.masterPlaylistLoader_.master, a = this.masterPlaylistLoader_.sidxMapping_) : (s = this.master, a = this.sidxMapping_);
                    var o = Uo(e.sidx);
                    a[o] = {sidxInfo: e.sidx}, this.request = Bo(e.sidx, e, this.hls_.xhr, {handleManifestRedirects: this.handleManifestRedirects}, this.sidxRequestFinished_(e, s, n, (function (i, r) {
                        if (!i || !r) throw new Error("failed to request sidx");
                        a[o].sidx = r, t.haveMetadata({startingState: n, playlist: i.playlists[e.id]})
                    })))
                } else this.mediaRequest_ = r.a.setTimeout(this.haveMetadata.bind(this, {startingState: n, playlist: e}), 0)
            }
        }, {
            key: "haveMetadata", value: function (e) {
                var t = e.startingState, n = e.playlist;
                this.state = "HAVE_METADATA", this.loadedPlaylists_[n.id] = n, this.mediaRequest_ = null, this.refreshMedia_(n.id), "HAVE_MASTER" === t ? this.trigger("loadedmetadata") : this.trigger("mediachange")
            }
        }, {
            key: "pause", value: function () {
                this.stopRequest(), r.a.clearTimeout(this.mediaUpdateTimeout), r.a.clearTimeout(this.minimumUpdatePeriodTimeout_), "HAVE_NOTHING" === this.state && (this.started = !1)
            }
        }, {
            key: "load", value: function (e) {
                var t = this;
                r.a.clearTimeout(this.mediaUpdateTimeout), r.a.clearTimeout(this.minimumUpdatePeriodTimeout_);
                var n = this.media();
                if (e) {
                    var i = n ? n.targetDuration / 2 * 1e3 : 5e3;
                    this.mediaUpdateTimeout = r.a.setTimeout((function () {
                        return t.load()
                    }), i)
                } else this.started ? n && !n.endList ? this.trigger("mediaupdatetimeout") : this.trigger("loadedplaylist") : this.start()
            }
        }, {
            key: "parseMasterXml", value: function () {
                var e = Ee(this.masterXml_, {manifestUri: this.srcUrl, clientOffset: this.clientOffset_, sidxMapping: this.sidxMapping_});
                e.uri = this.srcUrl;
                for (var t = 0; t < e.playlists.length; t++) {
                    var n = "placeholder-uri-" + t;
                    e.playlists[t].uri = n
                }
                return da(e, (function (t, n, i, r) {
                    if (t.playlists && t.playlists.length) {
                        var s = "placeholder-uri-" + n + "-" + i + "-" + r, a = pa(0, s);
                        t.playlists[0].uri = s, t.playlists[0].id = a, e.playlists[a] = t.playlists[0], e.playlists[s] = t.playlists[0]
                    }
                })), ma(e), ga(e), e
            }
        }, {
            key: "start", value: function () {
                var e = this;
                this.started = !0, this.masterPlaylistLoader_ ? this.mediaRequest_ = r.a.setTimeout(this.haveMaster_.bind(this), 0) : this.request = this.hls_.xhr({uri: this.srcUrl, withCredentials: this.withCredentials}, (function (t, n) {
                    if (e.request) {
                        if (e.request = null, t) return e.error = {status: n.status, message: "DASH playlist request error at URL: " + e.srcUrl, responseText: n.responseText, code: 2}, "HAVE_NOTHING" === e.state && (e.started = !1), e.trigger("error");
                        e.masterXml_ = n.responseText, n.responseHeaders && n.responseHeaders.date ? e.masterLoaded_ = Date.parse(n.responseHeaders.date) : e.masterLoaded_ = Date.now(), e.srcUrl = ia(e.handleManifestRedirects, e.srcUrl, n), e.syncClientServerClock_(e.onClientServerClockSync_.bind(e))
                    }
                }))
            }
        }, {
            key: "syncClientServerClock_", value: function (e) {
                var t = this, n = Ce(this.masterXml_);
                return null === n ? (this.clientOffset_ = this.masterLoaded_ - Date.now(), e()) : "DIRECT" === n.method ? (this.clientOffset_ = n.value - Date.now(), e()) : void (this.request = this.hls_.xhr({uri: na(this.srcUrl, n.value), method: n.method, withCredentials: this.withCredentials}, (function (i, r) {
                    if (t.request) {
                        if (i) return t.clientOffset_ = t.masterLoaded_ - Date.now(), e();
                        var s = void 0;
                        s = "HEAD" === n.method ? r.responseHeaders && r.responseHeaders.date ? Date.parse(r.responseHeaders.date) : t.masterLoaded_ : Date.parse(r.responseText), t.clientOffset_ = s - Date.now(), e()
                    }
                })))
            }
        }, {
            key: "haveMaster_", value: function () {
                this.state = "HAVE_MASTER", this.mediaRequest_ = null, this.masterPlaylistLoader_ ? this.media_ || this.media(this.childPlaylist_) : (this.master = this.parseMasterXml(), this.trigger("loadedplaylist"))
            }
        }, {
            key: "onClientServerClockSync_", value: function () {
                var e = this;
                this.haveMaster_(), this.hasPendingRequest() || this.media_ || this.media(this.master.playlists[0]), this.master && this.master.minimumUpdatePeriod && (this.minimumUpdatePeriodTimeout_ = r.a.setTimeout((function () {
                    e.trigger("minimumUpdatePeriod")
                }), this.master.minimumUpdatePeriod))
            }
        }, {
            key: "refreshXml_", value: function () {
                var e = this;
                this.request = this.hls_.xhr({uri: this.srcUrl, withCredentials: this.withCredentials}, (function (t, n) {
                    if (e.request) {
                        if (e.request = null, t) return e.error = {status: n.status, message: "DASH playlist request error at URL: " + e.srcUrl, responseText: n.responseText, code: 2}, "HAVE_NOTHING" === e.state && (e.started = !1), e.trigger("error");
                        e.masterXml_ = n.responseText, e.sidxMapping_ = function (e, t, n, i) {
                            var r = Ee(e, {manifestUri: t, clientOffset: n}), s = Mo(r.playlists, i);
                            return da(r, (function (e, t, n, r) {
                                if (e.playlists && e.playlists.length) {
                                    var a = e.playlists;
                                    s = No(s, Mo(a, i))
                                }
                            })), s
                        }(e.masterXml_, e.srcUrl, e.clientOffset_, e.sidxMapping_);
                        var i = e.parseMasterXml(), s = Ro(e.master, i), a = e.media().sidx;
                        if (s) if (a) {
                            var o = Uo(a);
                            if (!e.sidxMapping_[o]) {
                                var l = e.media();
                                e.request = Bo(l.sidx, l, e.hls_.xhr, {handleManifestRedirects: e.handleManifestRedirects}, e.sidxRequestFinished_(l, i, e.state, (function (t, n) {
                                    if (!t || !n) throw new Error("failed to request sidx on minimumUpdatePeriod");
                                    e.sidxMapping_[o].sidx = n, e.minimumUpdatePeriodTimeout_ = r.a.setTimeout((function () {
                                        e.trigger("minimumUpdatePeriod")
                                    }), e.master.minimumUpdatePeriod), e.refreshMedia_(e.media().id)
                                })))
                            }
                        } else e.master = s;
                        e.minimumUpdatePeriodTimeout_ = r.a.setTimeout((function () {
                            e.trigger("minimumUpdatePeriod")
                        }), e.master.minimumUpdatePeriod)
                    }
                }))
            }
        }, {
            key: "refreshMedia_", value: function (e) {
                var t = this;
                if (!e) throw new Error("refreshMedia_ must take a media id");
                var n = void 0, i = void 0;
                this.masterPlaylistLoader_ ? (n = this.masterPlaylistLoader_.master, i = this.masterPlaylistLoader_.parseMasterXml()) : (n = this.master, i = this.parseMasterXml());
                var s = Ro(n, i);
                s ? (this.masterPlaylistLoader_ ? this.masterPlaylistLoader_.master = s : this.master = s, this.media_ = s.playlists[e]) : (this.media_ = i.playlists[e], this.trigger("playlistunchanged")), this.media().endList || (this.mediaUpdateTimeout = r.a.setTimeout((function () {
                    t.trigger("mediaupdatetimeout")
                }), va(this.media(), !!s))), this.trigger("loadedplaylist")
            }
        }]), t
    }(Lo), Fo = function (e) {
        return Zs.log.debug ? Zs.log.debug.bind(Zs, "VHS:", e + " >") : function () {
        }
    };

    function Ho() {
    }

    var qo = function () {
        function e(t, n, i, r) {
            ra(this, e), this.callbacks_ = [], this.pendingCallback_ = null, this.timestampOffset_ = 0, this.mediaSource = t, this.processedAppend_ = !1, this.type_ = i, this.mimeType_ = n, this.logger_ = Fo("SourceUpdater[" + i + "][" + n + "]"), "closed" === t.readyState ? t.addEventListener("sourceopen", this.createSourceBuffer_.bind(this, n, r)) : this.createSourceBuffer_(n, r)
        }

        return sa(e, [{
            key: "createSourceBuffer_", value: function (e, t) {
                var n = this;
                this.sourceBuffer_ = this.mediaSource.addSourceBuffer(e), this.logger_("created SourceBuffer"), t && (t.trigger("sourcebufferadded"), this.mediaSource.sourceBuffers.length < 2) ? t.on("sourcebufferadded", (function () {
                    n.start_()
                })) : this.start_()
            }
        }, {
            key: "start_", value: function () {
                var e = this;
                this.started_ = !0, this.onUpdateendCallback_ = function () {
                    var t = e.pendingCallback_;
                    e.pendingCallback_ = null, e.sourceBuffer_.removing = !1, e.logger_("buffered [" + Ja(e.buffered()) + "]"), t && t(), e.runCallback_()
                }, this.sourceBuffer_.addEventListener("updateend", this.onUpdateendCallback_), this.runCallback_()
            }
        }, {
            key: "abort", value: function (e) {
                var t = this;
                this.processedAppend_ && this.queueCallback_((function () {
                    t.sourceBuffer_.abort()
                }), e)
            }
        }, {
            key: "appendBuffer", value: function (e, t) {
                var n = this;
                this.processedAppend_ = !0, this.queueCallback_((function () {
                    e.videoSegmentTimingInfoCallback && n.sourceBuffer_.addEventListener("videoSegmentTimingInfo", e.videoSegmentTimingInfoCallback), n.sourceBuffer_.appendBuffer(e.bytes)
                }), (function () {
                    e.videoSegmentTimingInfoCallback && n.sourceBuffer_.removeEventListener("videoSegmentTimingInfo", e.videoSegmentTimingInfoCallback), t()
                }))
            }
        }, {
            key: "buffered", value: function () {
                return this.sourceBuffer_ ? this.sourceBuffer_.buffered : Zs.createTimeRanges()
            }
        }, {
            key: "remove", value: function (e, t) {
                var n = this, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : Ho;
                this.processedAppend_ && this.queueCallback_((function () {
                    n.logger_("remove [" + e + " => " + t + "]"), n.sourceBuffer_.removing = !0, n.sourceBuffer_.remove(e, t)
                }), i)
            }
        }, {
            key: "updating", value: function () {
                return !this.sourceBuffer_ || this.sourceBuffer_.updating || !!this.pendingCallback_ && this.pendingCallback_ !== Ho
            }
        }, {
            key: "timestampOffset", value: function (e) {
                var t = this;
                return void 0 !== e && (this.queueCallback_((function () {
                    t.sourceBuffer_.timestampOffset = e, t.runCallback_()
                })), this.timestampOffset_ = e), this.timestampOffset_
            }
        }, {
            key: "queueCallback_", value: function (e, t) {
                this.callbacks_.push([e.bind(this), t]), this.runCallback_()
            }
        }, {
            key: "runCallback_", value: function () {
                var e = void 0;
                !this.updating() && this.callbacks_.length && this.started_ && (e = this.callbacks_.shift(), this.pendingCallback_ = e[1], e[0]())
            }
        }, {
            key: "dispose", value: function () {
                var e = this, t = function t() {
                    e.sourceBuffer_ && "open" === e.mediaSource.readyState && e.sourceBuffer_.abort(), e.sourceBuffer_.removeEventListener("updateend", t)
                };
                this.sourceBuffer_.removeEventListener("updateend", this.onUpdateendCallback_), this.sourceBuffer_.removing ? this.sourceBuffer_.addEventListener("updateend", t) : t()
            }
        }]), e
    }(), Vo = {GOAL_BUFFER_LENGTH: 30, MAX_GOAL_BUFFER_LENGTH: 60, GOAL_BUFFER_LENGTH_RATE: 1, INITIAL_BANDWIDTH: 4194304, BANDWIDTH_VARIANCE: 1.2, BUFFER_LOW_WATER_LINE: 0, MAX_BUFFER_LOW_WATER_LINE: 30, BUFFER_LOW_WATER_LINE_RATE: 1}, Wo = 2, zo = -101, Go = -102, Yo = function (e) {
        e.forEach((function (e) {
            e.abort()
        }))
    }, Xo = function (e, t) {
        return t.timedout ? {status: t.status, message: "HLS request timed-out at URL: " + t.uri, code: zo, xhr: t} : t.aborted ? {status: t.status, message: "HLS request aborted at URL: " + t.uri, code: Go, xhr: t} : e ? {status: t.status, message: "HLS request errored at URL: " + t.uri, code: Wo, xhr: t} : null
    }, Ko = function (e, t, n) {
        var i = 0, r = !1;
        return function (s, a) {
            if (!r) return s ? (r = !0, Yo(e), n(s, a)) : (i += 1) === e.length ? (a.endOfAllRequests = Date.now(), a.encryptedBytes ? function (e, t, n) {
                e.addEventListener("message", (function i(r) {
                    if (r.data.source === t.requestId) {
                        e.removeEventListener("message", i);
                        var s = r.data.decrypted;
                        return t.bytes = new Uint8Array(s.bytes, s.byteOffset, s.byteLength), n(null, t)
                    }
                }));
                var i = void 0;
                i = t.key.bytes.slice ? t.key.bytes.slice() : new Uint32Array(Array.prototype.slice.call(t.key.bytes)), e.postMessage(qa({source: t.requestId, encrypted: t.encryptedBytes, key: i, iv: t.key.iv}), [t.encryptedBytes.buffer, i.buffer])
            }(t, a, n) : n(null, a)) : void 0
        }
    }, $o = function (e, t) {
        return function (n) {
            var i, r, s;
            return e.stats = Zs.mergeOptions(e.stats, (r = (i = n).target, (s = {bandwidth: 1 / 0, bytesReceived: 0, roundTripTime: Date.now() - r.requestTime || 0}).bytesReceived = i.loaded, s.bandwidth = Math.floor(s.bytesReceived / s.roundTripTime * 8 * 1e3), s)), !e.stats.firstBytesReceivedAt && e.stats.bytesReceived && (e.stats.firstBytesReceivedAt = Date.now()), t(n, e)
        }
    }, Qo = function (e, t, n, i, r, s, a) {
        var o = [], l = Ko(o, n, a);
        if (r.key && !r.key.bytes) {
            var u = e(Zs.mergeOptions(t, {uri: r.key.resolvedUri, responseType: "arraybuffer"}), function (e, t) {
                return function (n, i) {
                    var r = i.response, s = Xo(n, i);
                    if (s) return t(s, e);
                    if (16 !== r.byteLength) return t({status: i.status, message: "Invalid HLS key at URL: " + i.uri, code: Wo, xhr: i}, e);
                    var a = new DataView(r);
                    return e.key.bytes = new Uint32Array([a.getUint32(0), a.getUint32(4), a.getUint32(8), a.getUint32(12)]), t(null, e)
                }
            }(r, l));
            o.push(u)
        }
        if (r.map && !r.map.bytes) {
            var c = e(Zs.mergeOptions(t, {uri: r.map.resolvedUri, responseType: "arraybuffer", headers: Ba(r.map)}), function (e, t, n) {
                return function (i, r) {
                    var s = r.response, a = Xo(i, r);
                    return a ? n(a, e) : 0 === s.byteLength ? n({status: r.status, message: "Empty HLS segment content at URL: " + r.uri, code: Wo, xhr: r}, e) : (e.map.bytes = new Uint8Array(r.response), t && !t.isInitialized() && t.init(), e.map.timescales = De.a.timescale(e.map.bytes), e.map.videoTrackIds = De.a.videoTrackIds(e.map.bytes), n(null, e))
                }
            }(r, i, l));
            o.push(c)
        }
        var h = e(Zs.mergeOptions(t, {uri: r.resolvedUri, responseType: "arraybuffer", headers: Ba(r)}), function (e, t, n) {
            return function (i, r) {
                var s = r.response, a = Xo(i, r), o = void 0;
                return a ? n(a, e) : 0 === s.byteLength ? n({status: r.status, message: "Empty HLS segment content at URL: " + r.uri, code: Wo, xhr: r}, e) : (e.stats = function (e) {
                    return {bandwidth: e.bandwidth, bytesReceived: e.bytesReceived || 0, roundTripTime: e.roundTripTime || 0}
                }(r), e.key ? e.encryptedBytes = new Uint8Array(r.response) : e.bytes = new Uint8Array(r.response), t && e.map && e.map.bytes && (t.isInitialized() || t.init(), (o = t.parse(e.bytes, e.map.videoTrackIds, e.map.timescales)) && o.captions && (e.captionStreams = o.captionStreams, e.fmp4Captions = o.captions)), n(null, e))
            }
        }(r, i, l));
        return h.addEventListener("progress", $o(r, s)), o.push(h), function () {
            return Yo(o)
        }
    }, Jo = function (e, t) {
        var n;
        return e && (n = r.a.getComputedStyle(e)) ? n[t] : ""
    }, Zo = function (e, t) {
        var n = e.slice();
        e.sort((function (e, i) {
            var r = t(e, i);
            return 0 === r ? n.indexOf(e) - n.indexOf(i) : r
        }))
    }, el = function (e, t) {
        var n = void 0, i = void 0;
        return e.attributes.BANDWIDTH && (n = e.attributes.BANDWIDTH), n = n || r.a.Number.MAX_VALUE, t.attributes.BANDWIDTH && (i = t.attributes.BANDWIDTH), n - (i = i || r.a.Number.MAX_VALUE)
    }, tl = function (e, t, n) {
        if (!e || !t) return !1;
        var i = n === e.segments.length;
        return e.endList && "open" === t.readyState && i
    }, nl = function (e) {
        return "number" == typeof e && isFinite(e)
    }, il = function (e) {
        function t(e) {
            ra(this, t);
            var n = oa(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this));
            if (!e) throw new TypeError("Initialization settings are required");
            if ("function" != typeof e.currentTime) throw new TypeError("No currentTime getter specified");
            if (!e.mediaSource) throw new TypeError("No MediaSource specified");
            return n.bandwidth = e.bandwidth, n.throughput = {
                rate: 0,
                count: 0
            }, n.roundTrip = NaN, n.resetStats_(), n.mediaIndex = null, n.hasPlayed_ = e.hasPlayed, n.currentTime_ = e.currentTime, n.seekable_ = e.seekable, n.seeking_ = e.seeking, n.duration_ = e.duration, n.mediaSource_ = e.mediaSource, n.hls_ = e.hls, n.loaderType_ = e.loaderType, n.startingMedia_ = void 0, n.segmentMetadataTrack_ = e.segmentMetadataTrack, n.goalBufferLength_ = e.goalBufferLength, n.sourceType_ = e.sourceType, n.inbandTextTracks_ = e.inbandTextTracks, n.state_ = "INIT", n.checkBufferTimeout_ = null, n.error_ = void 0, n.currentTimeline_ = -1, n.pendingSegment_ = null, n.mimeType_ = null, n.sourceUpdater_ = null, n.xhrOptions_ = null, n.activeInitSegmentId_ = null, n.initSegments_ = {}, n.cacheEncryptionKeys_ = e.cacheEncryptionKeys, n.keyCache_ = {}, "main" === n.loaderType_ ? n.captionParser_ = new Pe.a : n.captionParser_ = null, n.decrypter_ = e.decrypter, n.syncController_ = e.syncController, n.syncPoint_ = {
                segmentIndex: 0,
                time: 0
            }, n.triggerSyncInfoUpdate_ = function () {
                return n.trigger("syncinfoupdate")
            }, n.syncController_.on("syncinfoupdate", n.triggerSyncInfoUpdate_), n.mediaSource_.addEventListener("sourceopen", (function () {
                return n.ended_ = !1
            })), n.fetchAtBuffer_ = !1, n.logger_ = Fo("SegmentLoader[" + n.loaderType_ + "]"), Object.defineProperty(n, "state", {
                get: function () {
                    return this.state_
                }, set: function (e) {
                    e !== this.state_ && (this.logger_(this.state_ + " -> " + e), this.state_ = e)
                }
            }), n
        }

        return aa(t, e), sa(t, [{
            key: "resetStats_", value: function () {
                this.mediaBytesTransferred = 0, this.mediaRequests = 0, this.mediaRequestsAborted = 0, this.mediaRequestsTimedout = 0, this.mediaRequestsErrored = 0, this.mediaTransferDuration = 0, this.mediaSecondsLoaded = 0
            }
        }, {
            key: "dispose", value: function () {
                this.trigger("dispose"), this.state = "DISPOSED", this.pause(), this.abort_(), this.sourceUpdater_ && this.sourceUpdater_.dispose(), this.resetStats_(), this.captionParser_ && this.captionParser_.reset(), this.checkBufferTimeout_ && r.a.clearTimeout(this.checkBufferTimeout_), this.syncController_ && this.triggerSyncInfoUpdate_ && this.syncController_.off("syncinfoupdate", this.triggerSyncInfoUpdate_), this.off()
            }
        }, {
            key: "abort", value: function () {
                "WAITING" === this.state ? (this.abort_(), this.state = "READY", this.paused() || this.monitorBuffer_()) : this.pendingSegment_ && (this.pendingSegment_ = null)
            }
        }, {
            key: "abort_", value: function () {
                this.pendingSegment_ && this.pendingSegment_.abortRequests(), this.pendingSegment_ = null
            }
        }, {
            key: "error", value: function (e) {
                return void 0 !== e && (this.error_ = e), this.pendingSegment_ = null, this.error_
            }
        }, {
            key: "endOfStream", value: function () {
                this.ended_ = !0, this.pause(), this.trigger("ended")
            }
        }, {
            key: "buffered_", value: function () {
                return this.sourceUpdater_ ? this.sourceUpdater_.buffered() : Zs.createTimeRanges()
            }
        }, {
            key: "initSegment", value: function (e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
                if (!e) return null;
                var n = Va(e), i = this.initSegments_[n];
                return t && !i && e.bytes && (this.initSegments_[n] = i = {resolvedUri: e.resolvedUri, byterange: e.byterange, bytes: e.bytes, timescales: e.timescales, videoTrackIds: e.videoTrackIds}), i || e
            }
        }, {
            key: "segmentKey", value: function (e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
                if (!e) return null;
                var n = Wa(e), i = this.keyCache_[n];
                this.cacheEncryptionKeys_ && t && !i && e.bytes && (this.keyCache_[n] = i = {resolvedUri: e.resolvedUri, bytes: e.bytes});
                var r = {resolvedUri: (i || e).resolvedUri};
                return i && (r.bytes = i.bytes), r
            }
        }, {
            key: "couldBeginLoading_", value: function () {
                return this.playlist_ && (this.sourceUpdater_ || this.mimeType_ && "INIT" === this.state) && !this.paused()
            }
        }, {
            key: "load", value: function () {
                if (this.monitorBuffer_(), this.playlist_) {
                    if (this.syncController_.setDateTimeMapping(this.playlist_), "INIT" === this.state && this.couldBeginLoading_()) return this.init_();
                    !this.couldBeginLoading_() || "READY" !== this.state && "INIT" !== this.state || (this.state = "READY")
                }
            }
        }, {
            key: "init_", value: function () {
                return this.state = "READY", this.sourceUpdater_ = new qo(this.mediaSource_, this.mimeType_, this.loaderType_, this.sourceBufferEmitter_), this.resetEverything(), this.monitorBuffer_()
            }
        }, {
            key: "playlist", value: function (e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                if (e) {
                    var n = this.playlist_, i = this.pendingSegment_;
                    this.playlist_ = e, this.xhrOptions_ = t, "INIT" === this.state && (e.syncInfo = {mediaSequence: e.mediaSequence, time: 0});
                    var r = null;
                    if (n && (n.id ? r = n.id : n.uri && (r = n.uri)), this.logger_("playlist update [" + r + " => " + (e.id || e.uri) + "]"), this.trigger("syncinfoupdate"), "INIT" === this.state && this.couldBeginLoading_()) return this.init_();
                    if (n && n.uri === e.uri) {
                        var s = e.mediaSequence - n.mediaSequence;
                        this.logger_("live window shift [" + s + "]"), null !== this.mediaIndex && (this.mediaIndex -= s), i && (i.mediaIndex -= s, i.mediaIndex >= 0 && (i.segment = e.segments[i.mediaIndex])), this.syncController_.saveExpiredSegmentInfo(n, e)
                    } else null !== this.mediaIndex && this.resyncLoader()
                }
            }
        }, {
            key: "pause", value: function () {
                this.checkBufferTimeout_ && (r.a.clearTimeout(this.checkBufferTimeout_), this.checkBufferTimeout_ = null)
            }
        }, {
            key: "paused", value: function () {
                return null === this.checkBufferTimeout_
            }
        }, {
            key: "mimeType", value: function (e, t) {
                this.mimeType_ || (this.mimeType_ = e, this.sourceBufferEmitter_ = t, "INIT" === this.state && this.couldBeginLoading_() && this.init_())
            }
        }, {
            key: "resetEverything", value: function (e) {
                this.ended_ = !1, this.resetLoader(), this.remove(0, 1 / 0, e), this.captionParser_ && this.captionParser_.clearAllCaptions(), this.trigger("reseteverything")
            }
        }, {
            key: "resetLoader", value: function () {
                this.fetchAtBuffer_ = !1, this.resyncLoader()
            }
        }, {
            key: "resyncLoader", value: function () {
                this.mediaIndex = null, this.syncPoint_ = null, this.abort()
            }
        }, {
            key: "remove", value: function (e, t, n) {
                if (t === 1 / 0 && (t = this.duration_()), this.sourceUpdater_ && this.sourceUpdater_.remove(e, t, n), eo(e, t, this.segmentMetadataTrack_), this.inbandTextTracks_) for (var i in this.inbandTextTracks_) eo(e, t, this.inbandTextTracks_[i])
            }
        }, {
            key: "monitorBuffer_", value: function () {
                this.checkBufferTimeout_ && r.a.clearTimeout(this.checkBufferTimeout_), this.checkBufferTimeout_ = r.a.setTimeout(this.monitorBufferTick_.bind(this), 1)
            }
        }, {
            key: "monitorBufferTick_", value: function () {
                "READY" === this.state && this.fillBuffer_(), this.checkBufferTimeout_ && r.a.clearTimeout(this.checkBufferTimeout_), this.checkBufferTimeout_ = r.a.setTimeout(this.monitorBufferTick_.bind(this), 500)
            }
        }, {
            key: "fillBuffer_", value: function () {
                if (!this.sourceUpdater_.updating()) {
                    this.syncPoint_ || (this.syncPoint_ = this.syncController_.getSyncPoint(this.playlist_, this.duration_(), this.currentTimeline_, this.currentTime_()));
                    var e = this.checkBuffer_(this.buffered_(), this.playlist_, this.mediaIndex, this.hasPlayed_(), this.currentTime_(), this.syncPoint_);
                    e && (this.isEndOfStream_(e.mediaIndex) ? this.endOfStream() : (e.mediaIndex !== this.playlist_.segments.length - 1 || "ended" !== this.mediaSource_.readyState || this.seeking_()) && (e.timeline !== this.currentTimeline_ && (this.syncController_.reset(), e.timestampOffset = e.startOfSegment, this.captionParser_ && this.captionParser_.clearAllCaptions()), this.loadSegment_(e)))
                }
            }
        }, {
            key: "isEndOfStream_", value: function (e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.playlist_;
                return tl(t, this.mediaSource_, e) && !this.sourceUpdater_.updating()
            }
        }, {
            key: "checkBuffer_", value: function (e, t, n, i, r, s) {
                var a = 0, o = void 0;
                e.length && (a = e.end(e.length - 1));
                var l = Math.max(0, a - r);
                if (!t.segments.length) return null;
                if (l >= this.goalBufferLength_()) return null;
                if (!i && l >= 1) return null;
                if (null === s) return n = this.getSyncSegmentCandidate_(t), this.generateSegmentInfo_(t, n, null, !0);
                if (null !== n) {
                    t.segments[n];
                    return o = a, this.generateSegmentInfo_(t, n + 1, o, !1)
                }
                if (this.fetchAtBuffer_) {
                    var u = Na.getMediaInfoForTime(t, a, s.segmentIndex, s.time);
                    n = u.mediaIndex, o = u.startTime
                } else {
                    var c = Na.getMediaInfoForTime(t, r, s.segmentIndex, s.time);
                    n = c.mediaIndex, o = c.startTime
                }
                return this.generateSegmentInfo_(t, n, o, !1)
            }
        }, {
            key: "getSyncSegmentCandidate_", value: function (e) {
                var t = this;
                if (-1 === this.currentTimeline_) return 0;
                var n = e.segments.map((function (e, t) {
                    return {timeline: e.timeline, segmentIndex: t}
                })).filter((function (e) {
                    return e.timeline === t.currentTimeline_
                }));
                return n.length ? n[Math.min(n.length - 1, 1)].segmentIndex : Math.max(e.segments.length - 1, 0)
            }
        }, {
            key: "generateSegmentInfo_", value: function (e, t, n, i) {
                if (t < 0 || t >= e.segments.length) return null;
                var r = e.segments[t];
                return {requestId: "segment-loader-" + Math.random(), uri: r.resolvedUri, mediaIndex: t, isSyncRequest: i, startOfSegment: n, playlist: e, bytes: null, encryptedBytes: null, timestampOffset: null, timeline: r.timeline, duration: r.duration, segment: r}
            }
        }, {
            key: "abortRequestEarly_", value: function (e) {
                if (this.hls_.tech_.paused() || !this.xhrOptions_.timeout || !this.playlist_.attributes.BANDWIDTH) return !1;
                if (Date.now() - (e.firstBytesReceivedAt || Date.now()) < 1e3) return !1;
                var t = this.currentTime_(), n = e.bandwidth, i = this.pendingSegment_.duration, r = Na.estimateSegmentRequestTime(i, n, this.playlist_, e.bytesReceived), s = function (e, t) {
                    var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1, i = e.length ? e.end(e.length - 1) : 0;
                    return (i - t) / n
                }(this.buffered_(), t, this.hls_.tech_.playbackRate()) - 1;
                if (r <= s) return !1;
                var a = function (e) {
                    var t = e.master, n = e.currentTime, i = e.bandwidth, r = e.duration, s = e.segmentDuration, a = e.timeUntilRebuffer, o = e.currentTimeline, l = e.syncController, u = t.playlists.filter((function (e) {
                        return !Na.isIncompatible(e)
                    })), c = u.filter(Na.isEnabled);
                    c.length || (c = u.filter((function (e) {
                        return !Na.isDisabled(e)
                    })));
                    var h = c.filter(Na.hasAttribute.bind(null, "BANDWIDTH")).map((function (e) {
                        var t = l.getSyncPoint(e, r, o, n) ? 1 : 2;
                        return {playlist: e, rebufferingImpact: Na.estimateSegmentRequestTime(s, i, e) * t - a}
                    })), d = h.filter((function (e) {
                        return e.rebufferingImpact <= 0
                    }));
                    return Zo(d, (function (e, t) {
                        return el(t.playlist, e.playlist)
                    })), d.length ? d[0] : (Zo(h, (function (e, t) {
                        return e.rebufferingImpact - t.rebufferingImpact
                    })), h[0] || null)
                }({master: this.hls_.playlists.master, currentTime: t, bandwidth: n, duration: this.duration_(), segmentDuration: i, timeUntilRebuffer: s, currentTimeline: this.currentTimeline_, syncController: this.syncController_});
                if (a) {
                    var o = r - s - a.rebufferingImpact, l = .5;
                    return s <= 1 / 30 && (l = 1), !a.playlist || a.playlist.uri === this.playlist_.uri || o < l ? !1 : (this.bandwidth = a.playlist.attributes.BANDWIDTH * Vo.BANDWIDTH_VARIANCE + 1, this.abort(), this.trigger("earlyabort"), !0)
                }
            }
        }, {
            key: "handleProgress_", value: function (e, t) {
                this.pendingSegment_ && t.requestId === this.pendingSegment_.requestId && !this.abortRequestEarly_(t.stats) && this.trigger("progress")
            }
        }, {
            key: "loadSegment_", value: function (e) {
                this.state = "WAITING", this.pendingSegment_ = e, this.trimBackBuffer_(e), e.abortRequests = Qo(this.hls_.xhr, this.xhrOptions_, this.decrypter_, this.captionParser_, this.createSimplifiedSegmentObj_(e), this.handleProgress_.bind(this), this.segmentRequestFinished_.bind(this))
            }
        }, {
            key: "trimBackBuffer_", value: function (e) {
                var t = function (e, t, n) {
                    var i = t - 30;
                    e.length && (i = Math.max(i, e.start(0)));
                    var r = t - n;
                    return Math.min(r, i)
                }(this.seekable_(), this.currentTime_(), this.playlist_.targetDuration || 10);
                t > 0 && this.remove(0, t)
            }
        }, {
            key: "createSimplifiedSegmentObj_", value: function (e) {
                var t = e.segment, n = {resolvedUri: t.resolvedUri, byterange: t.byterange, requestId: e.requestId};
                if (t.key) {
                    var i = t.key.iv || new Uint32Array([0, 0, 0, e.mediaIndex + e.playlist.mediaSequence]);
                    n.key = this.segmentKey(t.key), n.key.iv = i
                }
                return t.map && (n.map = this.initSegment(t.map)), n
            }
        }, {
            key: "segmentRequestFinished_", value: function (e, t) {
                if (this.mediaRequests += 1, t.stats && (this.mediaBytesTransferred += t.stats.bytesReceived, this.mediaTransferDuration += t.stats.roundTripTime), this.pendingSegment_) {
                    if (t.requestId === this.pendingSegment_.requestId) {
                        if (e) return this.pendingSegment_ = null, this.state = "READY", e.code === Go ? void (this.mediaRequestsAborted += 1) : (this.pause(), e.code === zo ? (this.mediaRequestsTimedout += 1, this.bandwidth = 1, this.roundTrip = NaN, void this.trigger("bandwidthupdate")) : (this.mediaRequestsErrored += 1, this.error(e), void this.trigger("error")));
                        this.bandwidth = t.stats.bandwidth, this.roundTrip = t.stats.roundTripTime, t.map && (t.map = this.initSegment(t.map, !0)), t.key && this.segmentKey(t.key, !0), this.processSegmentResponse_(t)
                    }
                } else this.mediaRequestsAborted += 1
            }
        }, {
            key: "processSegmentResponse_", value: function (e) {
                var t = this.pendingSegment_;
                t.bytes = e.bytes, e.map && (t.segment.map.bytes = e.map.bytes), t.endOfAllRequests = e.endOfAllRequests, e.fmp4Captions && (!function (e, t, n) {
                    for (var i in n) if (!e[i]) {
                        t.trigger({type: "usage", name: "hls-608"});
                        var r = t.textTracks().getTrackById(i);
                        e[i] = r || t.addRemoteTextTrack({kind: "captions", id: i, label: i}, !1).track
                    }
                }(this.inbandTextTracks_, this.hls_.tech_, e.captionStreams), function (e) {
                    var t = e.inbandTextTracks, n = e.captionArray, i = e.timestampOffset;
                    if (n) {
                        var r = window.WebKitDataCue || window.VTTCue;
                        n.forEach((function (e) {
                            var n = e.stream, s = e.startTime, a = e.endTime;
                            t[n] && (s += i, a += i, t[n].addCue(new r(s, a, e.text)))
                        }))
                    }
                }({inbandTextTracks: this.inbandTextTracks_, captionArray: e.fmp4Captions, timestampOffset: 0}), this.captionParser_ && this.captionParser_.clearParsedCaptions()), this.handleSegment_()
            }
        }, {
            key: "handleSegment_", value: function () {
                var e = this;
                if (this.pendingSegment_) {
                    var t = this.pendingSegment_, n = t.segment, i = this.syncController_.probeSegmentInfo(t);
                    void 0 === this.startingMedia_ && i && (i.containsAudio || i.containsVideo) && (this.startingMedia_ = {containsAudio: i.containsAudio, containsVideo: i.containsVideo});
                    var r, s, a, o = (r = this.loaderType_, s = this.startingMedia_, a = i, "main" === r && s && a ? a.containsAudio || a.containsVideo ? s.containsVideo && !a.containsVideo ? "Only audio found in segment when we expected video. We can't switch to audio only from a stream that had video. To get rid of this message, please add codec information to the manifest." : !s.containsVideo && a.containsVideo ? "Video found in segment when we expected only audio. We can't switch to a stream with video from an audio only stream. To get rid of this message, please add codec information to the manifest." : null : "Neither audio nor video found in segment." : null);
                    if (o) return this.error({message: o, blacklistDuration: 1 / 0}), void this.trigger("error");
                    if (t.isSyncRequest) return this.trigger("syncinfoupdate"), this.pendingSegment_ = null, void (this.state = "READY");
                    if (null !== t.timestampOffset && t.timestampOffset !== this.sourceUpdater_.timestampOffset()) {
                        if (i && i.segmentTimestampInfo) {
                            var l = i.segmentTimestampInfo[0].ptsTime, u = i.segmentTimestampInfo[0].dtsTime;
                            t.timestampOffset -= l - u
                        }
                        this.sourceUpdater_.timestampOffset(t.timestampOffset), this.trigger("timestampoffset")
                    }
                    var c = this.syncController_.mappingForTimeline(t.timeline);
                    if (null !== c && this.trigger({type: "segmenttimemapping", mapping: c}), this.state = "APPENDING", n.map) {
                        var h = Va(n.map);
                        if (!this.activeInitSegmentId_ || this.activeInitSegmentId_ !== h) {
                            var d = this.initSegment(n.map);
                            this.sourceUpdater_.appendBuffer({bytes: d.bytes}, (function () {
                                e.activeInitSegmentId_ = h
                            }))
                        }
                    }
                    t.byteLength = t.bytes.byteLength, "number" == typeof n.start && "number" == typeof n.end ? this.mediaSecondsLoaded += n.end - n.start : this.mediaSecondsLoaded += n.duration, this.logger_(function (e) {
                        var t = e.segment, n = t.start, i = t.end, r = e.playlist, s = r.mediaSequence, a = r.id, o = r.segments, l = void 0 === o ? [] : o, u = e.mediaIndex, c = e.timeline;
                        return ["appending [" + u + "] of [" + s + ", " + (s + l.length) + "] from playlist [" + a + "]", "[" + n + " => " + i + "] in timeline [" + c + "]"].join(" ")
                    }(t)), this.sourceUpdater_.appendBuffer({bytes: t.bytes, videoSegmentTimingInfoCallback: this.handleVideoSegmentTimingInfo_.bind(this, t.requestId)}, this.handleUpdateEnd_.bind(this))
                } else this.state = "READY"
            }
        }, {
            key: "handleVideoSegmentTimingInfo_", value: function (e, t) {
                if (this.pendingSegment_ && e === this.pendingSegment_.requestId) {
                    var n = this.pendingSegment_.segment;
                    n.videoTimingInfo || (n.videoTimingInfo = {}), n.videoTimingInfo.transmuxerPrependedSeconds = t.videoSegmentTimingInfo.prependedContentDuration || 0, n.videoTimingInfo.transmuxedPresentationStart = t.videoSegmentTimingInfo.start.presentation, n.videoTimingInfo.transmuxedPresentationEnd = t.videoSegmentTimingInfo.end.presentation, n.videoTimingInfo.baseMediaDecodeTime = t.videoSegmentTimingInfo.baseMediaDecodeTime
                }
            }
        }, {
            key: "handleUpdateEnd_", value: function () {
                if (!this.pendingSegment_) return this.state = "READY", void (this.paused() || this.monitorBuffer_());
                var e = this.pendingSegment_, t = e.segment, n = null !== this.mediaIndex;
                this.pendingSegment_ = null, this.recordThroughput_(e), this.addSegmentMetadataCue_(e), this.state = "READY", this.mediaIndex = e.mediaIndex, this.fetchAtBuffer_ = !0, this.currentTimeline_ = e.timeline, this.trigger("syncinfoupdate"), t.end && this.currentTime_() - t.end > 3 * e.playlist.targetDuration ? this.resetEverything() : (n && this.trigger("bandwidthupdate"), this.trigger("progress"), this.isEndOfStream_(e.mediaIndex + 1, e.playlist) && this.endOfStream(), this.paused() || this.monitorBuffer_())
            }
        }, {
            key: "recordThroughput_", value: function (e) {
                var t = this.throughput.rate, n = Date.now() - e.endOfAllRequests + 1, i = Math.floor(e.byteLength / n * 8 * 1e3);
                this.throughput.rate += (i - t) / ++this.throughput.count
            }
        }, {
            key: "addSegmentMetadataCue_", value: function (e) {
                if (this.segmentMetadataTrack_) {
                    var t = e.segment, n = t.start, i = t.end;
                    if (nl(n) && nl(i)) {
                        eo(n, i, this.segmentMetadataTrack_);
                        var s = r.a.WebKitDataCue || r.a.VTTCue, a = {custom: t.custom, dateTimeObject: t.dateTimeObject, dateTimeString: t.dateTimeString, bandwidth: e.playlist.attributes.BANDWIDTH, resolution: e.playlist.attributes.RESOLUTION, codecs: e.playlist.attributes.CODECS, byteLength: e.byteLength, uri: e.uri, timeline: e.timeline, playlist: e.playlist.id, start: n, end: i}, o = new s(n, i, JSON.stringify(a));
                        o.value = a, this.segmentMetadataTrack_.addCue(o)
                    }
                }
            }
        }]), t
    }(Zs.EventTarget), rl = function (e) {
        return decodeURIComponent(escape(String.fromCharCode.apply(null, e)))
    }, sl = new Uint8Array("\n\n".split("").map((function (e) {
        return e.charCodeAt(0)
    }))), al = function (e) {
        function t(e) {
            var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
            ra(this, t);
            var i = oa(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n));
            return i.mediaSource_ = null, i.subtitlesTrack_ = null, i.featuresNativeTextTracks_ = e.featuresNativeTextTracks, i
        }

        return aa(t, e), sa(t, [{
            key: "buffered_", value: function () {
                if (!this.subtitlesTrack_ || !this.subtitlesTrack_.cues.length) return Zs.createTimeRanges();
                var e = this.subtitlesTrack_.cues, t = e[0].startTime, n = e[e.length - 1].startTime;
                return Zs.createTimeRanges([[t, n]])
            }
        }, {
            key: "initSegment", value: function (e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
                if (!e) return null;
                var n = Va(e), i = this.initSegments_[n];
                if (t && !i && e.bytes) {
                    var r = sl.byteLength + e.bytes.byteLength, s = new Uint8Array(r);
                    s.set(e.bytes), s.set(sl, e.bytes.byteLength), this.initSegments_[n] = i = {resolvedUri: e.resolvedUri, byterange: e.byterange, bytes: s}
                }
                return i || e
            }
        }, {
            key: "couldBeginLoading_", value: function () {
                return this.playlist_ && this.subtitlesTrack_ && !this.paused()
            }
        }, {
            key: "init_", value: function () {
                return this.state = "READY", this.resetEverything(), this.monitorBuffer_()
            }
        }, {
            key: "track", value: function (e) {
                return void 0 === e ? this.subtitlesTrack_ : (this.subtitlesTrack_ = e, "INIT" === this.state && this.couldBeginLoading_() && this.init_(), this.subtitlesTrack_)
            }
        }, {
            key: "remove", value: function (e, t) {
                eo(e, t, this.subtitlesTrack_)
            }
        }, {
            key: "fillBuffer_", value: function () {
                var e = this;
                this.syncPoint_ || (this.syncPoint_ = this.syncController_.getSyncPoint(this.playlist_, this.duration_(), this.currentTimeline_, this.currentTime_()));
                var t = this.checkBuffer_(this.buffered_(), this.playlist_, this.mediaIndex, this.hasPlayed_(), this.currentTime_(), this.syncPoint_);
                if (t = this.skipEmptySegments_(t)) {
                    if (null === this.syncController_.timestampOffsetForTimeline(t.timeline)) {
                        return this.syncController_.one("timestampoffset", (function () {
                            e.state = "READY", e.paused() || e.monitorBuffer_()
                        })), void (this.state = "WAITING_ON_TIMELINE")
                    }
                    this.loadSegment_(t)
                }
            }
        }, {
            key: "skipEmptySegments_", value: function (e) {
                for (; e && e.segment.empty;) e = this.generateSegmentInfo_(e.playlist, e.mediaIndex + 1, e.startOfSegment + e.duration, e.isSyncRequest);
                return e
            }
        }, {
            key: "handleSegment_", value: function () {
                var e = this;
                if (this.pendingSegment_ && this.subtitlesTrack_) {
                    this.state = "APPENDING";
                    var t = this.pendingSegment_, n = t.segment;
                    if ("function" != typeof r.a.WebVTT && this.subtitlesTrack_ && this.subtitlesTrack_.tech_) {
                        var i = void 0, s = function () {
                            e.subtitlesTrack_.tech_.off("vttjsloaded", i), e.error({message: "Error loading vtt.js"}), e.state = "READY", e.pause(), e.trigger("error")
                        };
                        return i = function () {
                            e.subtitlesTrack_.tech_.off("vttjserror", s), e.handleSegment_()
                        }, this.state = "WAITING_ON_VTTJS", this.subtitlesTrack_.tech_.one("vttjsloaded", i), void this.subtitlesTrack_.tech_.one("vttjserror", s)
                    }
                    n.requested = !0;
                    try {
                        this.parseVTTCues_(t)
                    } catch (e) {
                        return this.error({message: e.message}), this.state = "READY", this.pause(), this.trigger("error")
                    }
                    if (this.updateTimeMapping_(t, this.syncController_.timelines[t.timeline], this.playlist_), t.isSyncRequest) return this.trigger("syncinfoupdate"), this.pendingSegment_ = null, void (this.state = "READY");
                    t.byteLength = t.bytes.byteLength, this.mediaSecondsLoaded += n.duration, t.cues.length && this.remove(t.cues[0].endTime, t.cues[t.cues.length - 1].endTime), t.cues.forEach((function (t) {
                        e.subtitlesTrack_.addCue(e.featuresNativeTextTracks_ ? new r.a.VTTCue(t.startTime, t.endTime, t.text) : t)
                    })), this.handleUpdateEnd_()
                } else this.state = "READY"
            }
        }, {
            key: "parseVTTCues_", value: function (e) {
                var t = void 0, n = !1;
                "function" == typeof r.a.TextDecoder ? t = new r.a.TextDecoder("utf8") : (t = r.a.WebVTT.StringDecoder(), n = !0);
                var i = new r.a.WebVTT.Parser(r.a, r.a.vttjs, t);
                if (e.cues = [], e.timestampmap = {MPEGTS: 0, LOCAL: 0}, i.oncue = e.cues.push.bind(e.cues), i.ontimestampmap = function (t) {
                    return e.timestampmap = t
                }, i.onparsingerror = function (e) {
                    Zs.log.warn("Error encountered when parsing cues: " + e.message)
                }, e.segment.map) {
                    var s = e.segment.map.bytes;
                    n && (s = rl(s)), i.parse(s)
                }
                var a = e.bytes;
                n && (a = rl(a)), i.parse(a), i.flush()
            }
        }, {
            key: "updateTimeMapping_", value: function (e, t, n) {
                var i = e.segment;
                if (t) if (e.cues.length) {
                    var r = e.timestampmap, s = r.MPEGTS / 9e4 - r.LOCAL + t.mapping;
                    if (e.cues.forEach((function (e) {
                        e.startTime += s, e.endTime += s
                    })), !n.syncInfo) {
                        var a = e.cues[0].startTime, o = e.cues[e.cues.length - 1].startTime;
                        n.syncInfo = {mediaSequence: n.mediaSequence + e.mediaIndex, time: Math.min(a, o - i.duration)}
                    }
                } else i.empty = !0
            }
        }]), t
    }(il), ol = function (e, t) {
        for (var n = e.cues, i = 0; i < n.length; i++) {
            var r = n[i];
            if (t >= r.adStartTime && t <= r.adEndTime) return r
        }
        return null
    }, ll = Le.a.inspect, ul = [{
        name: "VOD", run: function (e, t, n, i, r) {
            if (n !== 1 / 0) {
                return {time: 0, segmentIndex: 0}
            }
            return null
        }
    }, {
        name: "ProgramDateTime", run: function (e, t, n, i, r) {
            if (!e.datetimeToDisplayTime) return null;
            var s = t.segments || [], a = null, o = null;
            r = r || 0;
            for (var l = 0; l < s.length; l++) {
                var u = s[l];
                if (u.dateTimeObject) {
                    var c = u.dateTimeObject.getTime() / 1e3 + e.datetimeToDisplayTime, h = Math.abs(r - c);
                    if (null !== o && (0 === h || o < h)) break;
                    o = h, a = {time: c, segmentIndex: l}
                }
            }
            return a
        }
    }, {
        name: "Segment", run: function (e, t, n, i, r) {
            var s = t.segments || [], a = null, o = null;
            r = r || 0;
            for (var l = 0; l < s.length; l++) {
                var u = s[l];
                if (u.timeline === i && void 0 !== u.start) {
                    var c = Math.abs(r - u.start);
                    if (null !== o && o < c) break;
                    (!a || null === o || o >= c) && (o = c, a = {time: u.start, segmentIndex: l})
                }
            }
            return a
        }
    }, {
        name: "Discontinuity", run: function (e, t, n, i, r) {
            var s = null;
            if (r = r || 0, t.discontinuityStarts && t.discontinuityStarts.length) for (var a = null, o = 0; o < t.discontinuityStarts.length; o++) {
                var l = t.discontinuityStarts[o], u = t.discontinuitySequence + o + 1, c = e.discontinuities[u];
                if (c) {
                    var h = Math.abs(r - c.time);
                    if (null !== a && a < h) break;
                    (!s || null === a || a >= h) && (a = h, s = {time: c.time, segmentIndex: l})
                }
            }
            return s
        }
    }, {
        name: "Playlist", run: function (e, t, n, i, r) {
            return t.syncInfo ? {time: t.syncInfo.time, segmentIndex: t.syncInfo.mediaSequence - t.mediaSequence} : null
        }
    }], cl = function (e) {
        function t() {
            ra(this, t);
            var e = oa(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this));
            return e.inspectCache_ = void 0, e.timelines = [], e.discontinuities = [], e.datetimeToDisplayTime = null, e.logger_ = Fo("SyncController"), e
        }

        return aa(t, e), sa(t, [{
            key: "getSyncPoint", value: function (e, t, n, i) {
                var r = this.runStrategies_(e, t, n, i);
                return r.length ? this.selectSyncPoint_(r, {key: "time", value: i}) : null
            }
        }, {
            key: "getExpiredTime", value: function (e, t) {
                if (!e || !e.segments) return null;
                var n = this.runStrategies_(e, t, e.discontinuitySequence, 0);
                if (!n.length) return null;
                var i = this.selectSyncPoint_(n, {key: "segmentIndex", value: 0});
                return i.segmentIndex > 0 && (i.time *= -1), Math.abs(i.time + wa(e, i.segmentIndex, 0))
            }
        }, {
            key: "runStrategies_", value: function (e, t, n, i) {
                for (var r = [], s = 0; s < ul.length; s++) {
                    var a = ul[s], o = a.run(this, e, t, n, i);
                    o && (o.strategy = a.name, r.push({strategy: a.name, syncPoint: o}))
                }
                return r
            }
        }, {
            key: "selectSyncPoint_", value: function (e, t) {
                for (var n = e[0].syncPoint, i = Math.abs(e[0].syncPoint[t.key] - t.value), r = e[0].strategy, s = 1; s < e.length; s++) {
                    var a = Math.abs(e[s].syncPoint[t.key] - t.value);
                    a < i && (i = a, n = e[s].syncPoint, r = e[s].strategy)
                }
                return this.logger_("syncPoint for [" + t.key + ": " + t.value + "] chosen with strategy [" + r + "]: [time:" + n.time + ", segmentIndex:" + n.segmentIndex + "]"), n
            }
        }, {
            key: "saveExpiredSegmentInfo", value: function (e, t) {
                for (var n = t.mediaSequence - e.mediaSequence - 1; n >= 0; n--) {
                    var i = e.segments[n];
                    if (i && void 0 !== i.start) {
                        t.syncInfo = {mediaSequence: e.mediaSequence + n, time: i.start}, this.logger_("playlist refresh sync: [time:" + t.syncInfo.time + ", mediaSequence: " + t.syncInfo.mediaSequence + "]"), this.trigger("syncinfoupdate");
                        break
                    }
                }
            }
        }, {
            key: "setDateTimeMapping", value: function (e) {
                if (!this.datetimeToDisplayTime && e.segments && e.segments.length && e.segments[0].dateTimeObject) {
                    var t = e.segments[0].dateTimeObject.getTime() / 1e3;
                    this.datetimeToDisplayTime = -t
                }
            }
        }, {
            key: "reset", value: function () {
                this.inspectCache_ = void 0
            }
        }, {
            key: "probeSegmentInfo", value: function (e) {
                var t = e.segment, n = e.playlist, i = void 0;
                return (i = t.map ? this.probeMp4Segment_(e) : this.probeTsSegment_(e)) && this.calculateSegmentTimeMapping_(e, i) && (this.saveDiscontinuitySyncInfo_(e), n.syncInfo || (n.syncInfo = {mediaSequence: n.mediaSequence + e.mediaIndex, time: t.start})), i
            }
        }, {
            key: "probeMp4Segment_", value: function (e) {
                var t = e.segment, n = De.a.timescale(t.map.bytes), i = De.a.compositionStartTime(n, e.bytes);
                return null !== e.timestampOffset && (e.timestampOffset -= i), {start: i, end: i + t.duration}
            }
        }, {
            key: "probeTsSegment_", value: function (e) {
                var t = ll(e.bytes, this.inspectCache_), n = void 0, i = void 0, r = void 0;
                return t ? (t.video && 2 === t.video.length ? (this.inspectCache_ = t.video[1].dts, n = t.video[0].dtsTime, i = t.video[1].dtsTime, r = t.video) : t.audio && 2 === t.audio.length && (this.inspectCache_ = t.audio[1].dts, n = t.audio[0].dtsTime, i = t.audio[1].dtsTime, r = t.audio), {segmentTimestampInfo: r, start: n, end: i, containsVideo: t.video && 2 === t.video.length, containsAudio: t.audio && 2 === t.audio.length}) : null
            }
        }, {
            key: "timestampOffsetForTimeline", value: function (e) {
                return void 0 === this.timelines[e] ? null : this.timelines[e].time
            }
        }, {
            key: "mappingForTimeline", value: function (e) {
                return void 0 === this.timelines[e] ? null : this.timelines[e].mapping
            }
        }, {
            key: "calculateSegmentTimeMapping_", value: function (e, t) {
                var n = e.segment, i = this.timelines[e.timeline];
                if (null !== e.timestampOffset) i = {time: e.startOfSegment, mapping: e.startOfSegment - t.start}, this.timelines[e.timeline] = i, this.trigger("timestampoffset"), this.logger_("time mapping for timeline " + e.timeline + ": [time: " + i.time + "] [mapping: " + i.mapping + "]"), n.start = e.startOfSegment, n.end = t.end + i.mapping; else {
                    if (!i) return !1;
                    n.start = t.start + i.mapping, n.end = t.end + i.mapping
                }
                return !0
            }
        }, {
            key: "saveDiscontinuitySyncInfo_", value: function (e) {
                var t = e.playlist, n = e.segment;
                if (n.discontinuity) this.discontinuities[n.timeline] = {time: n.start, accuracy: 0}; else if (t.discontinuityStarts && t.discontinuityStarts.length) for (var i = 0; i < t.discontinuityStarts.length; i++) {
                    var r = t.discontinuityStarts[i], s = t.discontinuitySequence + i + 1, a = r - e.mediaIndex, o = Math.abs(a);
                    if (!this.discontinuities[s] || this.discontinuities[s].accuracy > o) {
                        var l = void 0;
                        l = a < 0 ? n.start - wa(t, e.mediaIndex, r) : n.end + wa(t, e.mediaIndex + 1, r), this.discontinuities[s] = {time: l, accuracy: o}
                    }
                }
            }
        }, {
            key: "dispose", value: function () {
                this.trigger("dispose"), this.off()
            }
        }]), t
    }(Zs.EventTarget), hl = new uo("./decrypter-worker.worker.js", (function (e, t) {
        var n = this;
        !function () {
            var e = function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }, t = function () {
                function e(e, t) {
                    for (var n = 0; n < t.length; n++) {
                        var i = t[n];
                        i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                    }
                }

                return function (t, n, i) {
                    return n && e(t.prototype, n), i && e(t, i), t
                }
            }(), i = function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }, r = function () {
                var e = [[[], [], [], [], []], [[], [], [], [], []]], t = e[0], n = e[1], i = t[4], r = n[4], s = void 0, a = void 0, o = void 0, l = [], u = [], c = void 0, h = void 0, d = void 0, f = void 0, p = void 0;
                for (s = 0; s < 256; s++) u[(l[s] = s << 1 ^ 283 * (s >> 7)) ^ s] = s;
                for (a = o = 0; !i[a]; a ^= c || 1, o = u[o] || 1) for (d = (d = o ^ o << 1 ^ o << 2 ^ o << 3 ^ o << 4) >> 8 ^ 255 & d ^ 99, i[a] = d, r[d] = a, p = 16843009 * l[h = l[c = l[a]]] ^ 65537 * h ^ 257 * c ^ 16843008 * a, f = 257 * l[d] ^ 16843008 * d, s = 0; s < 4; s++) t[s][a] = f = f << 24 ^ f >>> 8, n[s][d] = p = p << 24 ^ p >>> 8;
                for (s = 0; s < 5; s++) t[s] = t[s].slice(0), n[s] = n[s].slice(0);
                return e
            }, s = null, a = function () {
                function t(n) {
                    e(this, t), s || (s = r()), this._tables = [[s[0][0].slice(), s[0][1].slice(), s[0][2].slice(), s[0][3].slice(), s[0][4].slice()], [s[1][0].slice(), s[1][1].slice(), s[1][2].slice(), s[1][3].slice(), s[1][4].slice()]];
                    var i = void 0, a = void 0, o = void 0, l = void 0, u = void 0, c = this._tables[0][4], h = this._tables[1], d = n.length, f = 1;
                    if (4 !== d && 6 !== d && 8 !== d) throw new Error("Invalid aes key size");
                    for (l = n.slice(0), u = [], this._key = [l, u], i = d; i < 4 * d + 28; i++) o = l[i - 1], (i % d == 0 || 8 === d && i % d == 4) && (o = c[o >>> 24] << 24 ^ c[o >> 16 & 255] << 16 ^ c[o >> 8 & 255] << 8 ^ c[255 & o], i % d == 0 && (o = o << 8 ^ o >>> 24 ^ f << 24, f = f << 1 ^ 283 * (f >> 7))), l[i] = l[i - d] ^ o;
                    for (a = 0; i; a++, i--) o = l[3 & a ? i : i - 4], u[a] = i <= 4 || a < 4 ? o : h[0][c[o >>> 24]] ^ h[1][c[o >> 16 & 255]] ^ h[2][c[o >> 8 & 255]] ^ h[3][c[255 & o]]
                }

                return t.prototype.decrypt = function (e, t, n, i, r, s) {
                    var a = this._key[1], o = e ^ a[0], l = i ^ a[1], u = n ^ a[2], c = t ^ a[3], h = void 0, d = void 0, f = void 0, p = a.length / 4 - 2, m = void 0, g = 4, v = this._tables[1], y = v[0], _ = v[1], b = v[2], T = v[3], w = v[4];
                    for (m = 0; m < p; m++) h = y[o >>> 24] ^ _[l >> 16 & 255] ^ b[u >> 8 & 255] ^ T[255 & c] ^ a[g], d = y[l >>> 24] ^ _[u >> 16 & 255] ^ b[c >> 8 & 255] ^ T[255 & o] ^ a[g + 1], f = y[u >>> 24] ^ _[c >> 16 & 255] ^ b[o >> 8 & 255] ^ T[255 & l] ^ a[g + 2], c = y[c >>> 24] ^ _[o >> 16 & 255] ^ b[l >> 8 & 255] ^ T[255 & u] ^ a[g + 3], g += 4, o = h, l = d, u = f;
                    for (m = 0; m < 4; m++) r[(3 & -m) + s] = w[o >>> 24] << 24 ^ w[l >> 16 & 255] << 16 ^ w[u >> 8 & 255] << 8 ^ w[255 & c] ^ a[g++], h = o, o = l, l = u, u = c, c = h
                }, t
            }(), o = function () {
                function t() {
                    e(this, t), this.listeners = {}
                }

                return t.prototype.on = function (e, t) {
                    this.listeners[e] || (this.listeners[e] = []), this.listeners[e].push(t)
                }, t.prototype.off = function (e, t) {
                    if (!this.listeners[e]) return !1;
                    var n = this.listeners[e].indexOf(t);
                    return this.listeners[e].splice(n, 1), n > -1
                }, t.prototype.trigger = function (e) {
                    var t = this.listeners[e];
                    if (t) if (2 === arguments.length) for (var n = t.length, i = 0; i < n; ++i) t[i].call(this, arguments[1]); else for (var r = Array.prototype.slice.call(arguments, 1), s = t.length, a = 0; a < s; ++a) t[a].apply(this, r)
                }, t.prototype.dispose = function () {
                    this.listeners = {}
                }, t.prototype.pipe = function (e) {
                    this.on("data", (function (t) {
                        e.push(t)
                    }))
                }, t
            }(), l = function (t) {
                function n() {
                    e(this, n);
                    var r = i(this, t.call(this, o));
                    return r.jobs = [], r.delay = 1, r.timeout_ = null, r
                }

                return function (e, t) {
                    if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                    e.prototype = Object.create(t && t.prototype, {constructor: {value: e, enumerable: !1, writable: !0, configurable: !0}}), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
                }(n, t), n.prototype.processJob_ = function () {
                    this.jobs.shift()(), this.jobs.length ? this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay) : this.timeout_ = null
                }, n.prototype.push = function (e) {
                    this.jobs.push(e), this.timeout_ || (this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay))
                }, n
            }(o), u = function (e) {
                return e << 24 | (65280 & e) << 8 | (16711680 & e) >> 8 | e >>> 24
            }, c = function () {
                function n(t, i, r, s) {
                    e(this, n);
                    var a = n.STEP, o = new Int32Array(t.buffer), c = new Uint8Array(t.byteLength), h = 0;
                    for (this.asyncStream_ = new l, this.asyncStream_.push(this.decryptChunk_(o.subarray(h, h + a), i, r, c)), h = a; h < o.length; h += a) r = new Uint32Array([u(o[h - 4]), u(o[h - 3]), u(o[h - 2]), u(o[h - 1])]), this.asyncStream_.push(this.decryptChunk_(o.subarray(h, h + a), i, r, c));
                    this.asyncStream_.push((function () {
                        var e;
                        s(null, (e = c).subarray(0, e.byteLength - e[e.byteLength - 1]))
                    }))
                }

                return n.prototype.decryptChunk_ = function (e, t, n, i) {
                    return function () {
                        var r = function (e, t, n) {
                            var i = new Int32Array(e.buffer, e.byteOffset, e.byteLength >> 2), r = new a(Array.prototype.slice.call(t)), s = new Uint8Array(e.byteLength), o = new Int32Array(s.buffer), l = void 0, c = void 0, h = void 0, d = void 0, f = void 0, p = void 0, m = void 0, g = void 0, v = void 0;
                            for (l = n[0], c = n[1], h = n[2], d = n[3], v = 0; v < i.length; v += 4) f = u(i[v]), p = u(i[v + 1]), m = u(i[v + 2]), g = u(i[v + 3]), r.decrypt(f, p, m, g, o, v), o[v] = u(o[v] ^ l), o[v + 1] = u(o[v + 1] ^ c), o[v + 2] = u(o[v + 2] ^ h), o[v + 3] = u(o[v + 3] ^ d), l = f, c = p, h = m, d = g;
                            return s
                        }(e, t, n);
                        i.set(r, e.byteOffset)
                    }
                }, t(n, null, [{
                    key: "STEP", get: function () {
                        return 32e3
                    }
                }]), n
            }();
            new function (e) {
                e.onmessage = function (t) {
                    var n = t.data, i = new Uint8Array(n.encrypted.bytes, n.encrypted.byteOffset, n.encrypted.byteLength), r = new Uint32Array(n.key.bytes, n.key.byteOffset, n.key.byteLength / 4), s = new Uint32Array(n.iv.bytes, n.iv.byteOffset, n.iv.byteLength / 4);
                    new c(i, r, s, (function (t, i) {
                        var r, s;
                        e.postMessage((r = {source: n.source, decrypted: i}, s = {}, Object.keys(r).forEach((function (e) {
                            var t = r[e];
                            ArrayBuffer.isView(t) ? s[e] = {bytes: t.buffer, byteOffset: t.byteOffset, byteLength: t.byteLength} : s[e] = t
                        })), s), [i.buffer])
                    }))
                }
            }(n)
        }()
    })), dl = function (e) {
        var t = e.default ? "main" : "alternative";
        return e.characteristics && e.characteristics.indexOf("public.accessibility.describes-video") >= 0 && (t = "main-desc"), t
    }, fl = function (e, t) {
        e.abort(), e.pause(), t && t.activePlaylistLoader && (t.activePlaylistLoader.pause(), t.activePlaylistLoader = null)
    }, pl = function (e, t) {
        t.activePlaylistLoader = e, e.load()
    }, ml = {
        AUDIO: function (e, t) {
            return function () {
                var n = t.segmentLoaders[e], i = t.mediaTypes[e], r = t.blacklistCurrentPlaylist;
                fl(n, i);
                var s = i.activeTrack(), a = i.activeGroup(), o = (a.filter((function (e) {
                    return e.default
                }))[0] || a[0]).id, l = i.tracks[o];
                if (s !== l) {
                    for (var u in Zs.log.warn("Problem encountered loading the alternate audio track.Switching back to default."), i.tracks) i.tracks[u].enabled = i.tracks[u] === l;
                    i.onTrackChanged()
                } else r({message: "Problem encountered loading the default audio track."})
            }
        }, SUBTITLES: function (e, t) {
            return function () {
                var n = t.segmentLoaders[e], i = t.mediaTypes[e];
                Zs.log.warn("Problem encountered loading the subtitle track.Disabling subtitle track."), fl(n, i);
                var r = i.activeTrack();
                r && (r.mode = "disabled"), i.onTrackChanged()
            }
        }
    }, gl = {
        AUDIO: function (e, t, n) {
            if (t) {
                var i = n.tech, r = n.requestOptions, s = n.segmentLoaders[e];
                t.on("loadedmetadata", (function () {
                    var e = t.media();
                    s.playlist(e, r), (!i.paused() || e.endList && "none" !== i.preload()) && s.load()
                })), t.on("loadedplaylist", (function () {
                    s.playlist(t.media(), r), i.paused() || s.load()
                })), t.on("error", ml[e](e, n))
            }
        }, SUBTITLES: function (e, t, n) {
            var i = n.tech, r = n.requestOptions, s = n.segmentLoaders[e], a = n.mediaTypes[e];
            t.on("loadedmetadata", (function () {
                var e = t.media();
                s.playlist(e, r), s.track(a.activeTrack()), (!i.paused() || e.endList && "none" !== i.preload()) && s.load()
            })), t.on("loadedplaylist", (function () {
                s.playlist(t.media(), r), i.paused() || s.load()
            })), t.on("error", ml[e](e, n))
        }
    }, vl = {
        AUDIO: function (e, t) {
            var n = t.hls, i = t.sourceType, r = t.segmentLoaders[e], s = t.requestOptions, a = t.master.mediaGroups, o = t.mediaTypes[e], l = o.groups, u = o.tracks, c = t.masterPlaylistLoader;
            for (var h in a[e] && 0 !== Object.keys(a[e]).length || (a[e] = {main: {default: {default: !0}}}), a[e]) for (var d in l[h] || (l[h] = []), a[e][h]) {
                var f = a[e][h][d], p = void 0;
                if (p = f.resolvedUri ? new ya(f.resolvedUri, n, s) : f.playlists && "dash" === i ? new jo(f.playlists[0], n, s, c) : null, f = Zs.mergeOptions({id: d, playlistLoader: p}, f), gl[e](e, f.playlistLoader, t), l[h].push(f), void 0 === u[d]) {
                    var m = new Zs.AudioTrack({id: d, kind: dl(f), enabled: !1, language: f.language, default: f.default, label: d});
                    u[d] = m
                }
            }
            r.on("error", ml[e](e, t))
        }, SUBTITLES: function (e, t) {
            var n = t.tech, i = t.hls, r = t.sourceType, s = t.segmentLoaders[e], a = t.requestOptions, o = t.master.mediaGroups, l = t.mediaTypes[e], u = l.groups, c = l.tracks, h = t.masterPlaylistLoader;
            for (var d in o[e]) for (var f in u[d] || (u[d] = []), o[e][d]) if (!o[e][d][f].forced) {
                var p = o[e][d][f], m = void 0;
                if ("hls" === r ? m = new ya(p.resolvedUri, i, a) : "dash" === r && (m = new jo(p.playlists[0], i, a, h)), p = Zs.mergeOptions({id: f, playlistLoader: m}, p), gl[e](e, p.playlistLoader, t), u[d].push(p), void 0 === c[f]) {
                    var g = n.addRemoteTextTrack({id: f, kind: "subtitles", default: p.default && p.autoselect, language: p.language, label: f}, !1).track;
                    c[f] = g
                }
            }
            s.on("error", ml[e](e, t))
        }, "CLOSED-CAPTIONS": function (e, t) {
            var n = t.tech, i = t.master.mediaGroups, r = t.mediaTypes[e], s = r.groups, a = r.tracks;
            for (var o in i[e]) for (var l in s[o] || (s[o] = []), i[e][o]) {
                var u = i[e][o][l];
                if (u.instreamId.match(/CC\d/) && (s[o].push(Zs.mergeOptions({id: l}, u)), void 0 === a[l])) {
                    var c = n.addRemoteTextTrack({id: u.instreamId, kind: "captions", default: u.default && u.autoselect, language: u.language, label: l}, !1).track;
                    a[l] = c
                }
            }
        }
    }, yl = {
        AUDIO: function (e, t) {
            return function () {
                var n = t.mediaTypes[e].tracks;
                for (var i in n) if (n[i].enabled) return n[i];
                return null
            }
        }, SUBTITLES: function (e, t) {
            return function () {
                var n = t.mediaTypes[e].tracks;
                for (var i in n) if ("showing" === n[i].mode || "hidden" === n[i].mode) return n[i];
                return null
            }
        }
    }, _l = function (e) {
        ["AUDIO", "SUBTITLES", "CLOSED-CAPTIONS"].forEach((function (t) {
            vl[t](t, e)
        }));
        var t = e.mediaTypes, n = e.masterPlaylistLoader, i = e.tech, r = e.hls;
        ["AUDIO", "SUBTITLES"].forEach((function (n) {
            t[n].activeGroup = function (e, t) {
                return function (n) {
                    var i = t.masterPlaylistLoader, r = t.mediaTypes[e].groups, s = i.media();
                    if (!s) return null;
                    var a = null;
                    return s.attributes[e] && (a = r[s.attributes[e]]), a = a || r.main, void 0 === n ? a : null === n ? null : a.filter((function (e) {
                        return e.id === n.id
                    }))[0] || null
                }
            }(n, e), t[n].activeTrack = yl[n](n, e), t[n].onGroupChanged = function (e, t) {
                return function () {
                    var n = t.segmentLoaders, i = n[e], r = n.main, s = t.mediaTypes[e], a = s.activeTrack(), o = s.activeGroup(a), l = s.activePlaylistLoader;
                    fl(i, s), o && (o.playlistLoader ? (i.resyncLoader(), pl(o.playlistLoader, s)) : l && r.resetEverything())
                }
            }(n, e), t[n].onTrackChanged = function (e, t) {
                return function () {
                    var n = t.segmentLoaders, i = n[e], r = n.main, s = t.mediaTypes[e], a = s.activeTrack(), o = s.activeGroup(a), l = s.activePlaylistLoader;
                    fl(i, s), o && (o.playlistLoader ? l !== o.playlistLoader ? (i.track && i.track(a), i.resetEverything(), pl(o.playlistLoader, s)) : pl(o.playlistLoader, s) : r.resetEverything())
                }
            }(n, e)
        }));
        var s = t.AUDIO.activeGroup(), a = (s.filter((function (e) {
            return e.default
        }))[0] || s[0]).id;
        t.AUDIO.tracks[a].enabled = !0, t.AUDIO.onTrackChanged(), n.on("mediachange", (function () {
            ["AUDIO", "SUBTITLES"].forEach((function (e) {
                return t[e].onGroupChanged()
            }))
        }));
        var o = function () {
            t.AUDIO.onTrackChanged(), i.trigger({type: "usage", name: "hls-audio-change"})
        };
        for (var l in i.audioTracks().addEventListener("change", o), i.remoteTextTracks().addEventListener("change", t.SUBTITLES.onTrackChanged), r.on("dispose", (function () {
            i.audioTracks().removeEventListener("change", o), i.remoteTextTracks().removeEventListener("change", t.SUBTITLES.onTrackChanged)
        })), i.clearTracks("audio"), t.AUDIO.tracks) i.audioTracks().addTrack(t.AUDIO.tracks[l])
    }, bl = function () {
        var e = {};
        return ["AUDIO", "SUBTITLES", "CLOSED-CAPTIONS"].forEach((function (t) {
            e[t] = {groups: {}, tracks: {}, activePlaylistLoader: null, activeGroup: Ho, activeTrack: Ho, onGroupChanged: Ho, onTrackChanged: Ho}
        })), e
    }, Tl = void 0, wl = ["mediaRequests", "mediaRequestsAborted", "mediaRequestsTimedout", "mediaRequestsErrored", "mediaTransferDuration", "mediaBytesTransferred"], Sl = function (e) {
        return this.audioSegmentLoader_[e] + this.mainSegmentLoader_[e]
    }, El = function (e) {
        function t(e) {
            ra(this, t);
            var n = oa(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this)), i = e.url, r = e.handleManifestRedirects, s = e.withCredentials, a = e.tech, o = e.bandwidth, l = e.externHls, u = e.useCueTags, c = e.blacklistDuration, h = e.enableLowInitialPlaylist, d = e.cacheEncryptionKeys, f = e.sourceType;
            if (!i) throw new Error("A non-empty playlist URL is required");
            Tl = l, n.withCredentials = s, n.tech_ = a, n.hls_ = a.hls, n.sourceType_ = f, n.useCueTags_ = u, n.blacklistDuration = c, n.enableLowInitialPlaylist = h, n.useCueTags_ && (n.cueTagsTrack_ = n.tech_.addTextTrack("metadata", "ad-cues"), n.cueTagsTrack_.inBandMetadataTrackDispatchType = ""), n.requestOptions_ = {withCredentials: s, handleManifestRedirects: r, timeout: null}, n.mediaTypes_ = bl(), n.mediaSource = new Zs.MediaSource, n.mediaSource.addEventListener("sourceopen", n.handleSourceOpen_.bind(n)), n.seekable_ = Zs.createTimeRanges(), n.hasPlayed_ = !1, n.syncController_ = new cl(e), n.segmentMetadataTrack_ = a.addRemoteTextTrack({kind: "metadata", label: "segment-metadata"}, !1).track, n.decrypter_ = new hl, n.inbandTextTracks_ = {};
            var p = {
                hls: n.hls_, mediaSource: n.mediaSource, currentTime: n.tech_.currentTime.bind(n.tech_), seekable: function () {
                    return n.seekable()
                }, seeking: function () {
                    return n.tech_.seeking()
                }, duration: function () {
                    return n.mediaSource.duration
                }, hasPlayed: function () {
                    return n.hasPlayed_
                }, goalBufferLength: function () {
                    return n.goalBufferLength()
                }, bandwidth: o, syncController: n.syncController_, decrypter: n.decrypter_, sourceType: n.sourceType_, inbandTextTracks: n.inbandTextTracks_, cacheEncryptionKeys: d
            };
            return n.masterPlaylistLoader_ = "dash" === n.sourceType_ ? new jo(i, n.hls_, n.requestOptions_) : new ya(i, n.hls_, n.requestOptions_), n.setupMasterPlaylistLoaderListeners_(), n.mainSegmentLoader_ = new il(Zs.mergeOptions(p, {segmentMetadataTrack: n.segmentMetadataTrack_, loaderType: "main"}), e), n.audioSegmentLoader_ = new il(Zs.mergeOptions(p, {loaderType: "audio"}), e), n.subtitleSegmentLoader_ = new al(Zs.mergeOptions(p, {loaderType: "vtt", featuresNativeTextTracks: n.tech_.featuresNativeTextTracks}), e), n.setupSegmentLoaderListeners_(), wl.forEach((function (e) {
                n[e + "_"] = Sl.bind(n, e)
            })), n.logger_ = Fo("MPC"), n.masterPlaylistLoader_.load(), n
        }

        return aa(t, e), sa(t, [{
            key: "setupMasterPlaylistLoaderListeners_", value: function () {
                var e = this;
                this.masterPlaylistLoader_.on("loadedmetadata", (function () {
                    var t = e.masterPlaylistLoader_.media(), n = 1.5 * t.targetDuration * 1e3;
                    La(e.masterPlaylistLoader_.master, e.masterPlaylistLoader_.media()) ? e.requestOptions_.timeout = 0 : e.requestOptions_.timeout = n, t.endList && "none" !== e.tech_.preload() && (e.mainSegmentLoader_.playlist(t, e.requestOptions_), e.mainSegmentLoader_.load()), _l({sourceType: e.sourceType_, segmentLoaders: {AUDIO: e.audioSegmentLoader_, SUBTITLES: e.subtitleSegmentLoader_, main: e.mainSegmentLoader_}, tech: e.tech_, requestOptions: e.requestOptions_, masterPlaylistLoader: e.masterPlaylistLoader_, hls: e.hls_, master: e.master(), mediaTypes: e.mediaTypes_, blacklistCurrentPlaylist: e.blacklistCurrentPlaylist.bind(e)}), e.triggerPresenceUsage_(e.master(), t);
                    try {
                        e.setupSourceBuffers_()
                    } catch (t) {
                        return Zs.log.warn("Failed to create SourceBuffers", t), e.mediaSource.endOfStream("decode")
                    }
                    e.setupFirstPlay(), !e.mediaTypes_.AUDIO.activePlaylistLoader || e.mediaTypes_.AUDIO.activePlaylistLoader.media() ? e.trigger("selectedinitialmedia") : e.mediaTypes_.AUDIO.activePlaylistLoader.one("loadedmetadata", (function () {
                        e.trigger("selectedinitialmedia")
                    }))
                })), this.masterPlaylistLoader_.on("loadedplaylist", (function () {
                    var t = e.masterPlaylistLoader_.media();
                    if (!t) {
                        e.excludeUnsupportedVariants_();
                        var n = void 0;
                        return e.enableLowInitialPlaylist && (n = e.selectInitialPlaylist()), n || (n = e.selectPlaylist()), e.initialMedia_ = n, void e.masterPlaylistLoader_.media(e.initialMedia_)
                    }
                    if (e.useCueTags_ && e.updateAdCues_(t), e.mainSegmentLoader_.playlist(t, e.requestOptions_), e.updateDuration(), e.tech_.paused() || (e.mainSegmentLoader_.load(), e.audioSegmentLoader_ && e.audioSegmentLoader_.load()), !t.endList) {
                        var i = function () {
                            var t = e.seekable();
                            0 !== t.length && e.mediaSource.addSeekableRange_(t.start(0), t.end(0))
                        };
                        if (e.duration() !== 1 / 0) {
                            e.tech_.one("durationchange", (function t() {
                                e.duration() === 1 / 0 ? i() : e.tech_.one("durationchange", t)
                            }))
                        } else i()
                    }
                })), this.masterPlaylistLoader_.on("error", (function () {
                    e.blacklistCurrentPlaylist(e.masterPlaylistLoader_.error)
                })), this.masterPlaylistLoader_.on("mediachanging", (function () {
                    e.mainSegmentLoader_.abort(), e.mainSegmentLoader_.pause()
                })), this.masterPlaylistLoader_.on("mediachange", (function () {
                    var t = e.masterPlaylistLoader_.media(), n = 1.5 * t.targetDuration * 1e3;
                    La(e.masterPlaylistLoader_.master, e.masterPlaylistLoader_.media()) ? e.requestOptions_.timeout = 0 : e.requestOptions_.timeout = n, e.mainSegmentLoader_.playlist(t, e.requestOptions_), e.mainSegmentLoader_.load(), e.tech_.trigger({type: "mediachange", bubbles: !0})
                })), this.masterPlaylistLoader_.on("playlistunchanged", (function () {
                    var t = e.masterPlaylistLoader_.media();
                    e.stuckAtPlaylistEnd_(t) && (e.blacklistCurrentPlaylist({message: "Playlist no longer updating."}), e.tech_.trigger("playliststuck"))
                })), this.masterPlaylistLoader_.on("renditiondisabled", (function () {
                    e.tech_.trigger({type: "usage", name: "hls-rendition-disabled"})
                })), this.masterPlaylistLoader_.on("renditionenabled", (function () {
                    e.tech_.trigger({type: "usage", name: "hls-rendition-enabled"})
                }))
            }
        }, {
            key: "triggerPresenceUsage_", value: function (e, t) {
                var n = e.mediaGroups || {}, i = !0, r = Object.keys(n.AUDIO);
                for (var s in n.AUDIO) for (var a in n.AUDIO[s]) {
                    n.AUDIO[s][a].uri || (i = !1)
                }
                i && this.tech_.trigger({type: "usage", name: "hls-demuxed"}), Object.keys(n.SUBTITLES).length && this.tech_.trigger({type: "usage", name: "hls-webvtt"}), Tl.Playlist.isAes(t) && this.tech_.trigger({type: "usage", name: "hls-aes"}), Tl.Playlist.isFmp4(t) && this.tech_.trigger({type: "usage", name: "hls-fmp4"}), r.length && Object.keys(n.AUDIO[r[0]]).length > 1 && this.tech_.trigger({type: "usage", name: "hls-alternate-audio"}), this.useCueTags_ && this.tech_.trigger({type: "usage", name: "hls-playlist-cue-tags"})
            }
        }, {
            key: "setupSegmentLoaderListeners_", value: function () {
                var e = this;
                this.mainSegmentLoader_.on("bandwidthupdate", (function () {
                    var t = e.selectPlaylist(), n = e.masterPlaylistLoader_.media(), i = e.tech_.buffered();
                    (function (e) {
                        var t = e.currentPlaylist, n = e.nextPlaylist, i = e.forwardBuffer, r = e.bufferLowWaterLine, s = e.duration;
                        e.log;
                        return n ? !t.endList || (s < Vo.MAX_BUFFER_LOW_WATER_LINE || (n.attributes.BANDWIDTH < t.attributes.BANDWIDTH || i >= r)) : (Zs.log.warn("We received no playlist to switch to. Please check your stream."), !1)
                    })({currentPlaylist: n, nextPlaylist: t, forwardBuffer: i.length ? i.end(i.length - 1) - e.tech_.currentTime() : 0, bufferLowWaterLine: e.bufferLowWaterLine(), duration: e.duration(), log: e.logger_}) && e.masterPlaylistLoader_.media(t), e.tech_.trigger("bandwidthupdate")
                })), this.mainSegmentLoader_.on("progress", (function () {
                    e.trigger("progress")
                })), this.mainSegmentLoader_.on("error", (function () {
                    e.blacklistCurrentPlaylist(e.mainSegmentLoader_.error())
                })), this.mainSegmentLoader_.on("syncinfoupdate", (function () {
                    e.onSyncInfoUpdate_()
                })), this.mainSegmentLoader_.on("timestampoffset", (function () {
                    e.tech_.trigger({type: "usage", name: "hls-timestamp-offset"})
                })), this.audioSegmentLoader_.on("syncinfoupdate", (function () {
                    e.onSyncInfoUpdate_()
                })), this.mainSegmentLoader_.on("ended", (function () {
                    e.onEndOfStream()
                })), this.mainSegmentLoader_.on("earlyabort", (function () {
                    e.blacklistCurrentPlaylist({message: "Aborted early because there isn't enough bandwidth to complete the request without rebuffering."}, 120)
                })), this.mainSegmentLoader_.on("reseteverything", (function () {
                    e.tech_.trigger("hls-reset")
                })), this.mainSegmentLoader_.on("segmenttimemapping", (function (t) {
                    e.tech_.trigger({type: "hls-segment-time-mapping", mapping: t.mapping})
                })), this.audioSegmentLoader_.on("ended", (function () {
                    e.onEndOfStream()
                }))
            }
        }, {
            key: "mediaSecondsLoaded_", value: function () {
                return Math.max(this.audioSegmentLoader_.mediaSecondsLoaded + this.mainSegmentLoader_.mediaSecondsLoaded)
            }
        }, {
            key: "load", value: function () {
                this.mainSegmentLoader_.load(), this.mediaTypes_.AUDIO.activePlaylistLoader && this.audioSegmentLoader_.load(), this.mediaTypes_.SUBTITLES.activePlaylistLoader && this.subtitleSegmentLoader_.load()
            }
        }, {
            key: "smoothQualityChange_", value: function () {
                var e = this.selectPlaylist();
                e !== this.masterPlaylistLoader_.media() && (this.masterPlaylistLoader_.media(e), this.mainSegmentLoader_.resetLoader())
            }
        }, {
            key: "fastQualityChange_", value: function () {
                var e = this, t = this.selectPlaylist();
                t !== this.masterPlaylistLoader_.media() && (this.masterPlaylistLoader_.media(t), this.mainSegmentLoader_.resetEverything((function () {
                    Zs.browser.IE_VERSION || Zs.browser.IS_EDGE ? e.tech_.setCurrentTime(e.tech_.currentTime() + .04) : e.tech_.setCurrentTime(e.tech_.currentTime())
                })))
            }
        }, {
            key: "play", value: function () {
                if (!this.setupFirstPlay()) {
                    this.tech_.ended() && this.tech_.setCurrentTime(0), this.hasPlayed_ && this.load();
                    var e = this.tech_.seekable();
                    return this.tech_.duration() === 1 / 0 && this.tech_.currentTime() < e.start(0) ? this.tech_.setCurrentTime(e.end(e.length - 1)) : void 0
                }
            }
        }, {
            key: "setupFirstPlay", value: function () {
                var e = this, t = this.masterPlaylistLoader_.media();
                if (!t || this.tech_.paused() || this.hasPlayed_) return !1;
                if (!t.endList) {
                    var n = this.seekable();
                    if (!n.length) return !1;
                    if (Zs.browser.IE_VERSION && 0 === this.tech_.readyState()) return this.tech_.one("loadedmetadata", (function () {
                        e.trigger("firstplay"), e.tech_.setCurrentTime(n.end(0)), e.hasPlayed_ = !0
                    })), !1;
                    this.trigger("firstplay"), this.tech_.setCurrentTime(n.end(0))
                }
                return this.hasPlayed_ = !0, this.load(), !0
            }
        }, {
            key: "handleSourceOpen_", value: function () {
                try {
                    this.setupSourceBuffers_()
                } catch (e) {
                    return Zs.log.warn("Failed to create Source Buffers", e), this.mediaSource.endOfStream("decode")
                }
                if (this.tech_.autoplay()) {
                    var e = this.tech_.play();
                    void 0 !== e && "function" == typeof e.then && e.then(null, (function (e) {
                    }))
                }
                this.trigger("sourceopen")
            }
        }, {
            key: "onEndOfStream", value: function () {
                var e = this.mainSegmentLoader_.ended_;
                if (this.mediaTypes_.AUDIO.activePlaylistLoader && (e = !this.mainSegmentLoader_.startingMedia_ || this.mainSegmentLoader_.startingMedia_.containsVideo ? e && this.audioSegmentLoader_.ended_ : this.audioSegmentLoader_.ended_), e) {
                    this.logger_("calling mediaSource.endOfStream()");
                    try {
                        this.mediaSource.endOfStream()
                    } catch (e) {
                        Zs.log.warn("Failed to call media source endOfStream", e)
                    }
                }
            }
        }, {
            key: "stuckAtPlaylistEnd_", value: function (e) {
                if (!this.seekable().length) return !1;
                var t = this.syncController_.getExpiredTime(e, this.mediaSource.duration);
                if (null === t) return !1;
                var n = Tl.Playlist.playlistEnd(e, t), i = this.tech_.currentTime(), r = this.tech_.buffered();
                if (!r.length) return n - i <= .1;
                var s = r.end(r.length - 1);
                return s - i <= .1 && n - s <= .1
            }
        }, {
            key: "blacklistCurrentPlaylist", value: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = arguments[1], n = void 0, i = void 0;
                if (n = e.playlist || this.masterPlaylistLoader_.media(), t = t || e.blacklistDuration || this.blacklistDuration, !n) {
                    this.error = e;
                    try {
                        return this.mediaSource.endOfStream("network")
                    } catch (e) {
                        return this.trigger("error")
                    }
                }
                var r = 1 === this.masterPlaylistLoader_.master.playlists.filter(Pa).length, s = this.masterPlaylistLoader_.master.playlists;
                return 1 === s.length ? (Zs.log.warn("Problem encountered with the current HLS playlist. Trying again since it is the only playlist."), this.tech_.trigger("retryplaylist"), this.masterPlaylistLoader_.load(r)) : (r && (Zs.log.warn("Removing all playlists from the blacklist because the last rendition is about to be blacklisted."), s.forEach((function (e) {
                    e.excludeUntil !== 1 / 0 && delete e.excludeUntil
                })), this.tech_.trigger("retryplaylist")), n.excludeUntil = Date.now() + 1e3 * t, this.tech_.trigger("blacklistplaylist"), this.tech_.trigger({type: "usage", name: "hls-rendition-blacklisted"}), i = this.selectPlaylist(), Zs.log.warn("Problem encountered with the current HLS playlist." + (e.message ? " " + e.message : "") + " Switching to another playlist."), this.masterPlaylistLoader_.media(i, r))
            }
        }, {
            key: "pauseLoading", value: function () {
                this.mainSegmentLoader_.pause(), this.mediaTypes_.AUDIO.activePlaylistLoader && this.audioSegmentLoader_.pause(), this.mediaTypes_.SUBTITLES.activePlaylistLoader && this.subtitleSegmentLoader_.pause()
            }
        }, {
            key: "setCurrentTime", value: function (e) {
                var t = $a(this.tech_.buffered(), e);
                return this.masterPlaylistLoader_ && this.masterPlaylistLoader_.media() && this.masterPlaylistLoader_.media().segments ? t && t.length ? e : (this.mainSegmentLoader_.resetEverything(), this.mainSegmentLoader_.abort(), this.mediaTypes_.AUDIO.activePlaylistLoader && (this.audioSegmentLoader_.resetEverything(), this.audioSegmentLoader_.abort()), this.mediaTypes_.SUBTITLES.activePlaylistLoader && (this.subtitleSegmentLoader_.resetEverything(), this.subtitleSegmentLoader_.abort()), void this.load()) : 0
            }
        }, {
            key: "duration", value: function () {
                return this.masterPlaylistLoader_ ? this.mediaSource ? this.mediaSource.duration : Tl.Playlist.duration(this.masterPlaylistLoader_.media()) : 0
            }
        }, {
            key: "seekable", value: function () {
                return this.seekable_
            }
        }, {
            key: "onSyncInfoUpdate_", value: function () {
                var e = void 0;
                if (this.masterPlaylistLoader_) {
                    var t = this.masterPlaylistLoader_.media();
                    if (t) {
                        var n = this.syncController_.getExpiredTime(t, this.mediaSource.duration);
                        if (null !== n) {
                            var i = this.masterPlaylistLoader_.master.suggestedPresentationDelay, r = Tl.Playlist.seekable(t, n, i);
                            if (0 !== r.length) {
                                if (this.mediaTypes_.AUDIO.activePlaylistLoader) {
                                    if (t = this.mediaTypes_.AUDIO.activePlaylistLoader.media(), null === (n = this.syncController_.getExpiredTime(t, this.mediaSource.duration))) return;
                                    if (0 === (e = Tl.Playlist.seekable(t, n, i)).length) return
                                }
                                var s = void 0, a = void 0;
                                this.seekable_ && this.seekable_.length && (s = this.seekable_.end(0), a = this.seekable_.start(0)), e ? e.start(0) > r.end(0) || r.start(0) > e.end(0) ? this.seekable_ = r : this.seekable_ = Zs.createTimeRanges([[e.start(0) > r.start(0) ? e.start(0) : r.start(0), e.end(0) < r.end(0) ? e.end(0) : r.end(0)]]) : this.seekable_ = r, this.seekable_ && this.seekable_.length && this.seekable_.end(0) === s && this.seekable_.start(0) === a || (this.logger_("seekable updated [" + Ja(this.seekable_) + "]"), this.tech_.trigger("seekablechanged"))
                            }
                        }
                    }
                }
            }
        }, {
            key: "updateDuration", value: function () {
                var e = this, t = this.mediaSource.duration, n = Tl.Playlist.duration(this.masterPlaylistLoader_.media()), i = this.tech_.buffered(), r = function t() {
                    e.logger_("Setting duration from " + e.mediaSource.duration + " => " + n);
                    try {
                        e.mediaSource.duration = n
                    } catch (e) {
                        Zs.log.warn("Failed to set media source duration", e)
                    }
                    e.tech_.trigger("durationchange"), e.mediaSource.removeEventListener("sourceopen", t)
                };
                i.length > 0 && (n = Math.max(n, i.end(i.length - 1))), t !== n && ("open" !== this.mediaSource.readyState ? this.mediaSource.addEventListener("sourceopen", r) : r())
            }
        }, {
            key: "dispose", value: function () {
                var e = this;
                this.trigger("dispose"), this.decrypter_ && this.decrypter_.terminate(), this.masterPlaylistLoader_.dispose(), this.mainSegmentLoader_.dispose(), ["AUDIO", "SUBTITLES"].forEach((function (t) {
                    var n = e.mediaTypes_[t].groups;
                    for (var i in n) n[i].forEach((function (e) {
                        e.playlistLoader && e.playlistLoader.dispose()
                    }))
                })), this.audioSegmentLoader_.dispose(), this.subtitleSegmentLoader_.dispose(), this.off(), this.mediaSource.dispose && this.mediaSource.dispose()
            }
        }, {
            key: "master", value: function () {
                return this.masterPlaylistLoader_.master
            }
        }, {
            key: "media", value: function () {
                return this.masterPlaylistLoader_.media() || this.initialMedia_
            }
        }, {
            key: "setupSourceBuffers_", value: function () {
                var e, t = this.masterPlaylistLoader_.media();
                if (t && "open" === this.mediaSource.readyState) {
                    if ((e = bo(this.masterPlaylistLoader_.master, t)).length < 1) return this.error = "No compatible SourceBuffer configuration for the variant stream:" + t.resolvedUri, this.mediaSource.endOfStream("decode");
                    this.configureLoaderMimeTypes_(e), this.excludeIncompatibleVariants_(t)
                }
            }
        }, {
            key: "configureLoaderMimeTypes_", value: function (e) {
                var t = e.length > 1 && -1 === e[0].indexOf(",") && e[0] !== e[1] ? new Zs.EventTarget : null;
                this.mainSegmentLoader_.mimeType(e[0], t), e[1] && this.audioSegmentLoader_.mimeType(e[1], t)
            }
        }, {
            key: "excludeUnsupportedVariants_", value: function () {
                this.master().playlists.forEach((function (e) {
                    var t;
                    e.attributes.CODECS && r.a.MediaSource && r.a.MediaSource.isTypeSupported && !r.a.MediaSource.isTypeSupported('video/mp4; codecs="' + (t = e.attributes.CODECS, t.replace(/avc1\.(\d+)\.(\d+)/i, (function (e) {
                        return vo([e])[0]
                    }))) + '"') && (e.excludeUntil = 1 / 0)
                }))
            }
        }, {
            key: "excludeIncompatibleVariants_", value: function (e) {
                var t = 2, n = null, i = void 0;
                e.attributes.CODECS && (i = yo(e.attributes.CODECS), n = i.videoCodec, t = i.codecCount), this.master().playlists.forEach((function (e) {
                    var i = {codecCount: 2, videoCodec: null};
                    e.attributes.CODECS && (i = yo(e.attributes.CODECS)), i.codecCount !== t && (e.excludeUntil = 1 / 0), i.videoCodec !== n && (e.excludeUntil = 1 / 0)
                }))
            }
        }, {
            key: "updateAdCues_", value: function (e) {
                var t = 0, n = this.seekable();
                n.length && (t = n.start(0)), function (e, t) {
                    var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;
                    if (e.segments) for (var i = n, s = void 0, a = 0; a < e.segments.length; a++) {
                        var o = e.segments[a];
                        if (s || (s = ol(t, i + o.duration / 2)), s) {
                            if ("cueIn" in o) {
                                s.endTime = i, s.adEndTime = i, i += o.duration, s = null;
                                continue
                            }
                            if (i < s.endTime) {
                                i += o.duration;
                                continue
                            }
                            s.endTime += o.duration
                        } else if ("cueOut" in o && ((s = new r.a.VTTCue(i, i + o.duration, o.cueOut)).adStartTime = i, s.adEndTime = i + parseFloat(o.cueOut), t.addCue(s)), "cueOutCont" in o) {
                            var l = void 0, u = void 0, c = o.cueOutCont.split("/").map(parseFloat), h = la(c, 2);
                            l = h[0], u = h[1], (s = new r.a.VTTCue(i, i + o.duration, "")).adStartTime = i - l, s.adEndTime = s.adStartTime + u, t.addCue(s)
                        }
                        i += o.duration
                    }
                }(e, this.cueTagsTrack_, t)
            }
        }, {
            key: "goalBufferLength", value: function () {
                var e = this.tech_.currentTime(), t = Vo.GOAL_BUFFER_LENGTH, n = Vo.GOAL_BUFFER_LENGTH_RATE, i = Math.max(t, Vo.MAX_GOAL_BUFFER_LENGTH);
                return Math.min(t + e * n, i)
            }
        }, {
            key: "bufferLowWaterLine", value: function () {
                var e = this.tech_.currentTime(), t = Vo.BUFFER_LOW_WATER_LINE, n = Vo.BUFFER_LOW_WATER_LINE_RATE, i = Math.max(t, Vo.MAX_BUFFER_LOW_WATER_LINE);
                return Math.min(t + e * n, i)
            }
        }]), t
    }(Zs.EventTarget), Cl = function e(t, n, i) {
        ra(this, e);
        var r, s, a, o = t.masterPlaylistController_, l = o[(t.options_.smoothQualityChange ? "smooth" : "fast") + "QualityChange_"].bind(o);
        if (n.attributes.RESOLUTION) {
            var u = n.attributes.RESOLUTION;
            this.width = u.width, this.height = u.height
        }
        this.bandwidth = n.attributes.BANDWIDTH, this.id = i, this.enabled = (r = t.playlists, s = n.id, a = l, function (e) {
            var t = r.master.playlists[s], n = Ia(t), i = Pa(t);
            return void 0 === e ? i : (e ? delete t.disabled : t.disabled = !0, e === i || n || (a(), e ? r.trigger("renditionenabled") : r.trigger("renditiondisabled")), e)
        })
    }, kl = ["seeking", "seeked", "pause", "playing", "error"], xl = function () {
        function e(t) {
            var n = this;
            ra(this, e), this.tech_ = t.tech, this.seekable = t.seekable, this.allowSeeksWithinUnsafeLiveWindow = t.allowSeeksWithinUnsafeLiveWindow, this.media = t.media, this.consecutiveUpdates = 0, this.lastRecordedTime = null, this.timer_ = null, this.checkCurrentTimeTimeout_ = null, this.logger_ = Fo("PlaybackWatcher"), this.logger_("initialize");
            var i = function () {
                return n.monitorCurrentTime_()
            }, s = function () {
                return n.techWaiting_()
            }, a = function () {
                return n.cancelTimer_()
            }, o = function () {
                return n.fixesBadSeeks_()
            };
            this.tech_.on("seekablechanged", o), this.tech_.on("waiting", s), this.tech_.on(kl, a), this.tech_.on("canplay", i), this.dispose = function () {
                n.logger_("dispose"), n.tech_.off("seekablechanged", o), n.tech_.off("waiting", s), n.tech_.off(kl, a), n.tech_.off("canplay", i), n.checkCurrentTimeTimeout_ && r.a.clearTimeout(n.checkCurrentTimeTimeout_), n.cancelTimer_()
            }
        }

        return sa(e, [{
            key: "monitorCurrentTime_", value: function () {
                this.checkCurrentTime_(), this.checkCurrentTimeTimeout_ && r.a.clearTimeout(this.checkCurrentTimeTimeout_), this.checkCurrentTimeTimeout_ = r.a.setTimeout(this.monitorCurrentTime_.bind(this), 250)
            }
        }, {
            key: "checkCurrentTime_", value: function () {
                if (this.tech_.seeking() && this.fixesBadSeeks_()) return this.consecutiveUpdates = 0, void (this.lastRecordedTime = this.tech_.currentTime());
                if (!this.tech_.paused() && !this.tech_.seeking()) {
                    var e = this.tech_.currentTime(), t = this.tech_.buffered();
                    if (this.lastRecordedTime === e && (!t.length || e + .1 >= t.end(t.length - 1))) return this.techWaiting_();
                    this.consecutiveUpdates >= 5 && e === this.lastRecordedTime ? (this.consecutiveUpdates++, this.waiting_()) : e === this.lastRecordedTime ? this.consecutiveUpdates++ : (this.consecutiveUpdates = 0, this.lastRecordedTime = e)
                }
            }
        }, {
            key: "cancelTimer_", value: function () {
                this.consecutiveUpdates = 0, this.timer_ && (this.logger_("cancelTimer_"), clearTimeout(this.timer_)), this.timer_ = null
            }
        }, {
            key: "fixesBadSeeks_", value: function () {
                if (!this.tech_.seeking()) return !1;
                var e = this.seekable(), t = this.tech_.currentTime(), n = void 0;
                this.afterSeekableWindow_(e, t, this.media(), this.allowSeeksWithinUnsafeLiveWindow) && (n = e.end(e.length - 1));
                this.beforeSeekableWindow_(e, t) && (n = e.start(0) + .1);
                return void 0 !== n && (this.logger_("Trying to seek outside of seekable at time " + t + " with seekable range " + Ja(e) + ". Seeking to " + n + "."), this.tech_.setCurrentTime(n), !0)
            }
        }, {
            key: "waiting_", value: function () {
                if (!this.techWaiting_()) {
                    var e = this.tech_.currentTime(), t = this.tech_.buffered(), n = $a(t, e);
                    return n.length && e + 3 <= n.end(0) ? (this.cancelTimer_(), this.tech_.setCurrentTime(e), this.logger_("Stopped at " + e + " while inside a buffered region [" + n.start(0) + " -> " + n.end(0) + "]. Attempting to resume playback by seeking to the current time."), void this.tech_.trigger({type: "usage", name: "hls-unknown-waiting"})) : void 0
                }
            }
        }, {
            key: "techWaiting_", value: function () {
                var e = this.seekable(), t = this.tech_.currentTime();
                if (this.tech_.seeking() && this.fixesBadSeeks_()) return !0;
                if (this.tech_.seeking() || null !== this.timer_) return !0;
                if (this.beforeSeekableWindow_(e, t)) {
                    var n = e.end(e.length - 1);
                    return this.logger_("Fell out of live window at time " + t + ". Seeking to live point (seekable end) " + n), this.cancelTimer_(), this.tech_.setCurrentTime(n), this.tech_.trigger({type: "usage", name: "hls-live-resync"}), !0
                }
                var i = this.tech_.buffered(), r = Qa(i, t);
                if (this.videoUnderflow_(r, i, t)) return this.cancelTimer_(), this.tech_.setCurrentTime(t), this.tech_.trigger({type: "usage", name: "hls-video-underflow"}), !0;
                if (r.length > 0) {
                    var s = r.start(0) - t;
                    return this.logger_("Stopped at " + t + ", setting timer for " + s + ", seeking to " + r.start(0)), this.timer_ = setTimeout(this.skipTheGap_.bind(this), 1e3 * s, t), !0
                }
                return !1
            }
        }, {
            key: "afterSeekableWindow_", value: function (e, t, n) {
                var i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
                if (!e.length) return !1;
                var r = e.end(e.length - 1) + .1, s = !n.endList;
                return s && i && (r = e.end(e.length - 1) + 3 * n.targetDuration), t > r
            }
        }, {
            key: "beforeSeekableWindow_", value: function (e, t) {
                return !!(e.length && e.start(0) > 0 && t < e.start(0) - .1)
            }
        }, {
            key: "videoUnderflow_", value: function (e, t, n) {
                if (0 === e.length) {
                    var i = this.gapFromVideoUnderflow_(t, n);
                    if (i) return this.logger_("Encountered a gap in video from " + i.start + " to " + i.end + ". Seeking to current time " + n), !0
                }
                return !1
            }
        }, {
            key: "skipTheGap_", value: function (e) {
                var t = this.tech_.buffered(), n = this.tech_.currentTime(), i = Qa(t, n);
                this.cancelTimer_(), 0 !== i.length && n === e && (this.logger_("skipTheGap_:", "currentTime:", n, "scheduled currentTime:", e, "nextRange start:", i.start(0)), this.tech_.setCurrentTime(i.start(0) + 1 / 30), this.tech_.trigger({type: "usage", name: "hls-gap-skip"}))
            }
        }, {
            key: "gapFromVideoUnderflow_", value: function (e, t) {
                for (var n = function (e) {
                    if (e.length < 2) return Zs.createTimeRanges();
                    for (var t = [], n = 1; n < e.length; n++) {
                        var i = e.end(n - 1), r = e.start(n);
                        t.push([i, r])
                    }
                    return Zs.createTimeRanges(t)
                }(e), i = 0; i < n.length; i++) {
                    var r = n.start(i), s = n.end(i);
                    if (t - r < 4 && t - r > 2) return {start: r, end: s}
                }
                return null
            }
        }]), e
    }(), Al = {
        errorInterval: 30, getSource: function (e) {
            return e(this.tech({IWillNotUseThisInPlugins: !0}).currentSource_)
        }
    }, Dl = function (e) {
        !function e(t, n) {
            var i = 0, r = 0, s = Zs.mergeOptions(Al, n);
            t.ready((function () {
                t.trigger({type: "usage", name: "hls-error-reload-initialized"})
            }));
            var a = function () {
                r && t.currentTime(r)
            }, o = function (e) {
                null != e && (r = t.duration() !== 1 / 0 && t.currentTime() || 0, t.one("loadedmetadata", a), t.src(e), t.trigger({type: "usage", name: "hls-error-reload"}), t.play())
            }, l = function () {
                if (Date.now() - i < 1e3 * s.errorInterval) t.trigger({type: "usage", name: "hls-error-reload-canceled"}); else {
                    if (s.getSource && "function" == typeof s.getSource) return i = Date.now(), s.getSource.call(t, o);
                    Zs.log.error("ERROR: reloadSourceOnError - The option getSource must be a function!")
                }
            }, u = function e() {
                t.off("loadedmetadata", a), t.off("error", l), t.off("dispose", e)
            };
            t.on("error", l), t.on("dispose", u), t.reloadSourceOnError = function (n) {
                u(), e(t, n)
            }
        }(this, e)
    }, Il = {
        PlaylistLoader: ya, Playlist: Na, Decrypter: We, AsyncStream: He, decrypt: Ve, utils: Ga, STANDARD_PLAYLIST_SELECTOR: function () {
            var e = this.useDevicePixelRatio && r.a.devicePixelRatio || 1;
            return function (e, t, n, i, s) {
                var a = e.playlists.map((function (e) {
                    var t, n;
                    return t = e.attributes.RESOLUTION && e.attributes.RESOLUTION.width, n = e.attributes.RESOLUTION && e.attributes.RESOLUTION.height, {bandwidth: e.attributes.BANDWIDTH || r.a.Number.MAX_VALUE, width: t, height: n, playlist: e}
                }));
                Zo(a, (function (e, t) {
                    return e.bandwidth - t.bandwidth
                }));
                var o = (a = a.filter((function (e) {
                    return !Na.isIncompatible(e.playlist)
                }))).filter((function (e) {
                    return Na.isEnabled(e.playlist)
                }));
                o.length || (o = a.filter((function (e) {
                    return !Na.isDisabled(e.playlist)
                })));
                var l = o.filter((function (e) {
                    return e.bandwidth * Vo.BANDWIDTH_VARIANCE < t
                })), u = l[l.length - 1], c = l.filter((function (e) {
                    return e.bandwidth === u.bandwidth
                }))[0];
                if (!1 === s) {
                    var h = c || o[0] || a[0];
                    return h ? h.playlist : null
                }
                var d = l.filter((function (e) {
                    return e.width && e.height
                }));
                Zo(d, (function (e, t) {
                    return e.width - t.width
                }));
                var f = d.filter((function (e) {
                    return e.width === n && e.height === i
                }));
                u = f[f.length - 1];
                var p = f.filter((function (e) {
                    return e.bandwidth === u.bandwidth
                }))[0], m = void 0, g = void 0, v = void 0;
                p || (g = (m = d.filter((function (e) {
                    return e.width > n || e.height > i
                }))).filter((function (e) {
                    return e.width === m[0].width && e.height === m[0].height
                })), u = g[g.length - 1], v = g.filter((function (e) {
                    return e.bandwidth === u.bandwidth
                }))[0]);
                var y = v || p || c || o[0] || a[0];
                return y ? y.playlist : null
            }(this.playlists.master, this.systemBandwidth, parseInt(Jo(this.tech_.el(), "width"), 10) * e, parseInt(Jo(this.tech_.el(), "height"), 10) * e, this.limitRenditionByPlayerDimensions)
        }, INITIAL_PLAYLIST_SELECTOR: function () {
            var e = this.playlists.master.playlists.filter(Na.isEnabled);
            return Zo(e, (function (e, t) {
                return el(e, t)
            })), e.filter((function (e) {
                return yo(e.attributes.CODECS).videoCodec
            }))[0] || null
        }, comparePlaylistBandwidth: el, comparePlaylistResolution: function (e, t) {
            var n = void 0, i = void 0;
            return e.attributes.RESOLUTION && e.attributes.RESOLUTION.width && (n = e.attributes.RESOLUTION.width), n = n || r.a.Number.MAX_VALUE, t.attributes.RESOLUTION && t.attributes.RESOLUTION.width && (i = t.attributes.RESOLUTION.width), n === (i = i || r.a.Number.MAX_VALUE) && e.attributes.BANDWIDTH && t.attributes.BANDWIDTH ? e.attributes.BANDWIDTH - t.attributes.BANDWIDTH : n - i
        }, xhr: Ma()
    };
    ["GOAL_BUFFER_LENGTH", "MAX_GOAL_BUFFER_LENGTH", "GOAL_BUFFER_LENGTH_RATE", "BUFFER_LOW_WATER_LINE", "MAX_BUFFER_LOW_WATER_LINE", "BUFFER_LOW_WATER_LINE_RATE", "BANDWIDTH_VARIANCE"].forEach((function (e) {
        Object.defineProperty(Il, e, {
            get: function () {
                return Zs.log.warn("using Hls." + e + " is UNSAFE be sure you know what you are doing"), Vo[e]
            }, set: function (t) {
                Zs.log.warn("using Hls." + e + " is UNSAFE be sure you know what you are doing"), "number" != typeof t || t < 0 ? Zs.log.warn("value of Hls." + e + " must be greater than or equal to 0") : Vo[e] = t
            }
        })
    }));
    var Pl = function (e) {
        if (/^(audio|video|application)\/(x-|vnd\.apple\.)?mpegurl/i.test(e)) return "hls";
        return /^application\/dash\+xml/i.test(e) ? "dash" : null
    }, Ol = function (e, t) {
        for (var n = t.media(), i = -1, r = 0; r < e.length; r++) if (e[r].id === n.id) {
            i = r;
            break
        }
        e.selectedIndex_ = i, e.trigger({selectedIndex: i, type: "change"})
    };
    Il.canPlaySource = function () {
        return Zs.log.warn("HLS is no longer a tech. Please remove it from your player's techOrder.")
    };
    var Ll = function (e) {
        var t = e.masterPlaylistController_.mainSegmentLoader_, n = e.masterPlaylistController_.audioSegmentLoader_, i = Zs.players[e.tech_.options_.playerId];
        if (i.eme) {
            var r = function (e, t, n) {
                if (!e) return e;
                var i = void 0, r = void 0;
                if (n.mimeType_) i = t.mimeType_, r = n.mimeType_; else {
                    var s = To(t.mimeType_), a = s.parameters.codecs.split(","), o = void 0, l = void 0;
                    a.forEach((function (e) {
                        e = e.trim(), wo(e) ? o = e : So(e) && (l = e)
                    })), i = s.type + '; codecs="' + l + '"', r = s.type.replace("video", "audio") + '; codecs="' + o + '"'
                }
                var u = {}, c = t.playlist_;
                for (var h in e) u[h] = {audioContentType: r, videoContentType: i}, c.contentProtection && c.contentProtection[h] && c.contentProtection[h].pssh && (u[h].pssh = c.contentProtection[h].pssh), "string" == typeof e[h] && (u[h].url = e[h]);
                return Zs.mergeOptions(e, u)
            }(e.source_.keySystems, t, n);
            r && (i.currentSource().keySystems = r, 11 !== Zs.browser.IE_VERSION && i.eme.initializeMediaKeys && i.eme.initializeMediaKeys())
        }
    }, Nl = function () {
        if (!window.localStorage) return null;
        var e = window.localStorage.getItem("videojs-vhs");
        if (!e) return null;
        try {
            return JSON.parse(e)
        } catch (e) {
            return null
        }
    };
    Il.supportsNativeHls = function () {
        var e = a.a.createElement("video");
        if (!Zs.getTech("Html5").isSupported()) return !1;
        return ["application/vnd.apple.mpegurl", "audio/mpegurl", "audio/x-mpegurl", "application/x-mpegurl", "video/x-mpegurl", "video/mpegurl", "application/mpegurl"].some((function (t) {
            return /maybe|probably/i.test(e.canPlayType(t))
        }))
    }(), Il.supportsNativeDash = !!Zs.getTech("Html5").isSupported() && /maybe|probably/i.test(a.a.createElement("video").canPlayType("application/dash+xml")), Il.supportsTypeNatively = function (e) {
        return "hls" === e ? Il.supportsNativeHls : "dash" === e && Il.supportsNativeDash
    }, Il.isSupported = function () {
        return Zs.log.warn("HLS is no longer a tech. Please remove it from your player's techOrder.")
    };
    var Rl = function (e) {
        function t(e, n, i) {
            ra(this, t);
            var r = oa(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, n, i.hls));
            if (n.options_ && n.options_.playerId) {
                var s = Zs(n.options_.playerId);
                s.hasOwnProperty("hls") || Object.defineProperty(s, "hls", {
                    get: function () {
                        return Zs.log.warn("player.hls is deprecated. Use player.tech().hls instead."), n.trigger({type: "usage", name: "hls-player-access"}), r
                    }, configurable: !0
                }), s.vhs = r, s.dash = r, r.player_ = s
            }
            if (r.tech_ = n, r.source_ = e, r.stats = {}, r.ignoreNextSeekingEvent_ = !1, r.setOptions_(), r.options_.overrideNative && n.overrideNativeAudioTracks && n.overrideNativeVideoTracks) n.overrideNativeAudioTracks(!0), n.overrideNativeVideoTracks(!0); else if (r.options_.overrideNative && (n.featuresNativeVideoTracks || n.featuresNativeAudioTracks)) throw new Error("Overriding native HLS requires emulated tracks. See https://git.io/vMpjB");
            return r.on(a.a, ["fullscreenchange", "webkitfullscreenchange", "mozfullscreenchange", "MSFullscreenChange"], (function (e) {
                var t = a.a.fullscreenElement || a.a.webkitFullscreenElement || a.a.mozFullScreenElement || a.a.msFullscreenElement;
                t && t.contains(r.tech_.el()) && r.masterPlaylistController_.smoothQualityChange_()
            })), r.on(r.tech_, "seeking", (function () {
                this.ignoreNextSeekingEvent_ ? this.ignoreNextSeekingEvent_ = !1 : this.setCurrentTime(this.tech_.currentTime())
            })), r.on(r.tech_, "error", (function () {
                this.masterPlaylistController_ && this.masterPlaylistController_.pauseLoading()
            })), r.on(r.tech_, "play", r.play), r
        }

        return aa(t, e), sa(t, [{
            key: "setOptions_", value: function () {
                var e = this;
                if (this.options_.withCredentials = this.options_.withCredentials || !1, this.options_.handleManifestRedirects = this.options_.handleManifestRedirects || !1, this.options_.limitRenditionByPlayerDimensions = !1 !== this.options_.limitRenditionByPlayerDimensions, this.options_.useDevicePixelRatio = this.options_.useDevicePixelRatio || !1, this.options_.smoothQualityChange = this.options_.smoothQualityChange || !1, this.options_.useBandwidthFromLocalStorage = void 0 !== this.source_.useBandwidthFromLocalStorage ? this.source_.useBandwidthFromLocalStorage : this.options_.useBandwidthFromLocalStorage || !1, this.options_.customTagParsers = this.options_.customTagParsers || [], this.options_.customTagMappers = this.options_.customTagMappers || [], this.options_.cacheEncryptionKeys = this.options_.cacheEncryptionKeys || !1, "number" != typeof this.options_.blacklistDuration && (this.options_.blacklistDuration = 300), "number" != typeof this.options_.bandwidth && this.options_.useBandwidthFromLocalStorage) {
                    var t = Nl();
                    t && t.bandwidth && (this.options_.bandwidth = t.bandwidth, this.tech_.trigger({type: "usage", name: "hls-bandwidth-from-local-storage"})), t && t.throughput && (this.options_.throughput = t.throughput, this.tech_.trigger({type: "usage", name: "hls-throughput-from-local-storage"}))
                }
                "number" != typeof this.options_.bandwidth && (this.options_.bandwidth = Vo.INITIAL_BANDWIDTH), this.options_.enableLowInitialPlaylist = this.options_.enableLowInitialPlaylist && this.options_.bandwidth === Vo.INITIAL_BANDWIDTH, ["withCredentials", "useDevicePixelRatio", "limitRenditionByPlayerDimensions", "bandwidth", "smoothQualityChange", "customTagParsers", "customTagMappers", "handleManifestRedirects", "cacheEncryptionKeys"].forEach((function (t) {
                    void 0 !== e.source_[t] && (e.options_[t] = e.source_[t])
                })), this.limitRenditionByPlayerDimensions = this.options_.limitRenditionByPlayerDimensions, this.useDevicePixelRatio = this.options_.useDevicePixelRatio
            }
        }, {
            key: "src", value: function (e, t) {
                var n = this;
                e && (this.setOptions_(), this.options_.url = this.source_.src, this.options_.tech = this.tech_, this.options_.externHls = Il, this.options_.sourceType = Pl(t), this.options_.seekTo = function (e) {
                    n.tech_.setCurrentTime(e)
                }, this.masterPlaylistController_ = new El(this.options_), this.playbackWatcher_ = new xl(Zs.mergeOptions(this.options_, {
                    seekable: function () {
                        return n.seekable()
                    }, media: function () {
                        return n.masterPlaylistController_.media()
                    }
                })), this.masterPlaylistController_.on("error", (function () {
                    Zs.players[n.tech_.options_.playerId].error(n.masterPlaylistController_.error)
                })), this.masterPlaylistController_.selectPlaylist = this.selectPlaylist ? this.selectPlaylist.bind(this) : Il.STANDARD_PLAYLIST_SELECTOR.bind(this), this.masterPlaylistController_.selectInitialPlaylist = Il.INITIAL_PLAYLIST_SELECTOR.bind(this), this.playlists = this.masterPlaylistController_.masterPlaylistLoader_, this.mediaSource = this.masterPlaylistController_.mediaSource, Object.defineProperties(this, {
                    selectPlaylist: {
                        get: function () {
                            return this.masterPlaylistController_.selectPlaylist
                        }, set: function (e) {
                            this.masterPlaylistController_.selectPlaylist = e.bind(this)
                        }
                    }, throughput: {
                        get: function () {
                            return this.masterPlaylistController_.mainSegmentLoader_.throughput.rate
                        }, set: function (e) {
                            this.masterPlaylistController_.mainSegmentLoader_.throughput.rate = e, this.masterPlaylistController_.mainSegmentLoader_.throughput.count = 1
                        }
                    }, bandwidth: {
                        get: function () {
                            return this.masterPlaylistController_.mainSegmentLoader_.bandwidth
                        }, set: function (e) {
                            this.masterPlaylistController_.mainSegmentLoader_.bandwidth = e, this.masterPlaylistController_.mainSegmentLoader_.throughput = {rate: 0, count: 0}
                        }
                    }, systemBandwidth: {
                        get: function () {
                            var e = 1 / (this.bandwidth || 1), t = void 0;
                            return t = this.throughput > 0 ? 1 / this.throughput : 0, Math.floor(1 / (e + t))
                        }, set: function () {
                            Zs.log.error('The "systemBandwidth" property is read-only')
                        }
                    }
                }), this.options_.bandwidth && (this.bandwidth = this.options_.bandwidth), this.options_.throughput && (this.throughput = this.options_.throughput), Object.defineProperties(this.stats, {
                    bandwidth: {
                        get: function () {
                            return n.bandwidth || 0
                        }, enumerable: !0
                    }, mediaRequests: {
                        get: function () {
                            return n.masterPlaylistController_.mediaRequests_() || 0
                        }, enumerable: !0
                    }, mediaRequestsAborted: {
                        get: function () {
                            return n.masterPlaylistController_.mediaRequestsAborted_() || 0
                        }, enumerable: !0
                    }, mediaRequestsTimedout: {
                        get: function () {
                            return n.masterPlaylistController_.mediaRequestsTimedout_() || 0
                        }, enumerable: !0
                    }, mediaRequestsErrored: {
                        get: function () {
                            return n.masterPlaylistController_.mediaRequestsErrored_() || 0
                        }, enumerable: !0
                    }, mediaTransferDuration: {
                        get: function () {
                            return n.masterPlaylistController_.mediaTransferDuration_() || 0
                        }, enumerable: !0
                    }, mediaBytesTransferred: {
                        get: function () {
                            return n.masterPlaylistController_.mediaBytesTransferred_() || 0
                        }, enumerable: !0
                    }, mediaSecondsLoaded: {
                        get: function () {
                            return n.masterPlaylistController_.mediaSecondsLoaded_() || 0
                        }, enumerable: !0
                    }, buffered: {
                        get: function () {
                            return Za(n.tech_.buffered())
                        }, enumerable: !0
                    }, currentTime: {
                        get: function () {
                            return n.tech_.currentTime()
                        }, enumerable: !0
                    }, currentSource: {
                        get: function () {
                            return n.tech_.currentSource_
                        }, enumerable: !0
                    }, currentTech: {
                        get: function () {
                            return n.tech_.name_
                        }, enumerable: !0
                    }, duration: {
                        get: function () {
                            return n.tech_.duration()
                        }, enumerable: !0
                    }, master: {
                        get: function () {
                            return n.playlists.master
                        }, enumerable: !0
                    }, playerDimensions: {
                        get: function () {
                            return n.tech_.currentDimensions()
                        }, enumerable: !0
                    }, seekable: {
                        get: function () {
                            return Za(n.tech_.seekable())
                        }, enumerable: !0
                    }, timestamp: {
                        get: function () {
                            return Date.now()
                        }, enumerable: !0
                    }, videoPlaybackQuality: {
                        get: function () {
                            return n.tech_.getVideoPlaybackQuality()
                        }, enumerable: !0
                    }
                }), this.tech_.one("canplay", this.masterPlaylistController_.setupFirstPlay.bind(this.masterPlaylistController_)), this.tech_.on("bandwidthupdate", (function () {
                    n.options_.useBandwidthFromLocalStorage && function (e) {
                        if (!window.localStorage) return !1;
                        var t = Nl();
                        t = t ? Zs.mergeOptions(t, e) : e;
                        try {
                            window.localStorage.setItem("videojs-vhs", JSON.stringify(t))
                        } catch (e) {
                            return !1
                        }
                    }({bandwidth: n.bandwidth, throughput: Math.round(n.throughput)})
                })), this.masterPlaylistController_.on("selectedinitialmedia", (function () {
                    var e, t;
                    t = (e = n).playlists, e.representations = function () {
                        return t && t.master && t.master.playlists ? t.master.playlists.filter((function (e) {
                            return !Ia(e)
                        })).map((function (t, n) {
                            return new Cl(e, t, t.id)
                        })) : []
                    }, Ll(n)
                })), this.on(this.masterPlaylistController_, "progress", (function () {
                    this.tech_.trigger("progress")
                })), this.on(this.masterPlaylistController_, "firstplay", (function () {
                    this.ignoreNextSeekingEvent_ = !0
                })), this.setupQualityLevels_(), this.tech_.el() && this.tech_.src(Zs.URL.createObjectURL(this.masterPlaylistController_.mediaSource)))
            }
        }, {
            key: "setupQualityLevels_", value: function () {
                var e = this, t = Zs.players[this.tech_.options_.playerId];
                t && t.qualityLevels && !this.qualityLevels_ && (this.qualityLevels_ = t.qualityLevels(), this.masterPlaylistController_.on("selectedinitialmedia", (function () {
                    var t, n;
                    t = e.qualityLevels_, (n = e).representations().forEach((function (e) {
                        t.addQualityLevel(e)
                    })), Ol(t, n.playlists)
                })), this.playlists.on("mediachange", (function () {
                    Ol(e.qualityLevels_, e.playlists)
                })))
            }
        }, {
            key: "play", value: function () {
                this.masterPlaylistController_.play()
            }
        }, {
            key: "setCurrentTime", value: function (e) {
                this.masterPlaylistController_.setCurrentTime(e)
            }
        }, {
            key: "duration", value: function () {
                return this.masterPlaylistController_.duration()
            }
        }, {
            key: "seekable", value: function () {
                return this.masterPlaylistController_.seekable()
            }
        }, {
            key: "dispose", value: function () {
                this.playbackWatcher_ && this.playbackWatcher_.dispose(), this.masterPlaylistController_ && this.masterPlaylistController_.dispose(), this.qualityLevels_ && this.qualityLevels_.dispose(), this.player_ && (delete this.player_.vhs, delete this.player_.dash, delete this.player_.hls), this.tech_ && this.tech_.hls && delete this.tech_.hls, function e(t, n, i) {
                    null === t && (t = Function.prototype);
                    var r = Object.getOwnPropertyDescriptor(t, n);
                    if (void 0 === r) {
                        var s = Object.getPrototypeOf(t);
                        return null === s ? void 0 : e(s, n, i)
                    }
                    if ("value" in r) return r.value;
                    var a = r.get;
                    return void 0 !== a ? a.call(i) : void 0
                }(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "dispose", this).call(this)
            }
        }, {
            key: "convertToProgramTime", value: function (e, t) {
                return Ya({playlist: this.masterPlaylistController_.media(), time: e, callback: t})
            }
        }, {
            key: "seekToProgramTime", value: function (e, t) {
                var n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 2;
                return Xa({programTime: e, playlist: this.masterPlaylistController_.media(), retryCount: i, pauseAfterSeek: n, seekTo: this.options_.seekTo, tech: this.options_.tech, callback: t})
            }
        }]), t
    }(Zs.getComponent("Component")), Ul = {
        name: "videojs-http-streaming", VERSION: "1.13.2", canHandleSource: function (e) {
            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = Zs.mergeOptions(Zs.options, t);
            return Ul.canPlayType(e.type, n)
        }, handleSource: function (e, t) {
            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, i = Zs.mergeOptions(Zs.options, n);
            return t.hls = new Rl(e, t, i), t.hls.xhr = Ma(), t.hls.src(e.src, e.type), t.hls
        }, canPlayType: function (e) {
            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = Zs.mergeOptions(Zs.options, t), i = n.hls.overrideNative, r = Pl(e), s = r && (!Il.supportsTypeNatively(r) || i);
            return s ? "maybe" : ""
        }
    };
    void 0 !== Zs.MediaSource && void 0 !== Zs.URL || (Zs.MediaSource = Po, Zs.URL = Oo), Po.supportsNativeMediaSources() && Zs.getTech("Html5").registerSourceHandler(Ul, 0), Zs.HlsHandler = Rl, Zs.HlsSourceHandler = Ul, Zs.Hls = Il, Zs.use || Zs.registerComponent("Hls", Il), Zs.options.hls = Zs.options.hls || {}, Zs.registerPlugin ? Zs.registerPlugin("reloadSourceOnError", Dl) : Zs.plugin("reloadSourceOnError", Dl);
    n(51), n(52)
}, function (e, t) {
}]);