Overview

URLwww.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
IP54.87.181.187
ASNAS14618 Amazon.com, Inc.
Location United States
Report completed2016-12-22 00:01:21 CET
StatusLoading report..
urlQuery Alerts No alerts detected


Settings

UserAgentMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Referer
Pool
Access Levelpublic


Intrusion Detection Systems

Snort /w Sourcefire VRT No alerts detected
Suricata /w Emerging Threats Pro No alerts detected


Blacklists

Fortinet's Web Filter / fortiguard.com No alerts detected
MDL / malwaredomainlist.com No alerts detected
DNS-BH / malwaredomains.com No alerts detected
mnemonic secure DNS / mnemonic.no No alerts detected
OpenPhish / openphish.com No alerts detected
PhishTank / phishtank.com No alerts detected
Spamhaus DBL / spamhaus.org No alerts detected


Files Captured



Recent reports on same IP/ASN/Domain

Last 4 reports on IP: 54.87.181.187

Date UQ / IDS / BL URL IP
2016-12-09 13:07:510 - 0 - 0zerohedge.com54.87.181.187
2016-12-07 18:57:070 - 0 - 0www.zerohedge.com/news/2016-12-05/website-raising-money-fund-assassinations-trump-pen (...)54.87.181.187
2016-12-05 18:25:290 - 0 - 0www.zerohedge.com/news/2016-05-04/china-warns-will-respond-trump-presidency54.87.181.187
2016-12-02 21:17:060 - 0 - 0www.zerohedge.com/&page=Zero%20Hedge%20%7C%20On%20a%20long%20enough%20timelin (...)54.87.181.187

Last 6 reports on ASN: AS14618 Amazon.com, Inc.

Date UQ / IDS / BL URL IP
2017-01-22 23:15:450 - 0 - 0smhs.gwu.eduhttps:///rodhaminstitute/sites/rodhaminstitute/files/webform/Packers-Falcons-Game-L (...)54.83.25.77
2017-01-22 23:14:220 - 0 - 0smhs.gwu.eduhttps:///rodhaminstitute/sites/rodhaminstitute/files/webform/iiiiiiiiiiiiiiiiiii.pd (...)54.83.25.77
2017-01-22 23:12:560 - 0 - 0smhs.gwu.eduhttps:///cancergate/sites/cancergate/files/@@%28%28%28F~OX%28NFL%29TV%29%29%29Watch (...)54.83.25.77
2017-01-22 23:12:440 - 0 - 1www.pulse-entertainment.ca/blog/wp-content/eaf593fb0695c84897787e0f45566a8752.22.184.23
2017-01-22 23:11:020 - 0 - 0smhs.gwu.eduhttps:///rodhaminstitute/sites/rodhaminstitute/files/webform/%5BFOX@TV%5DPackers%20 (...)54.83.25.77
2017-01-22 23:11:010 - 0 - 0smhs.gwu.eduhttps:///rodhaminstitute/sites/rodhaminstitute/files/webform/%5BFreE-ShoW%5DPittsbu (...)54.83.25.77

Last 6 reports on domain: www.zerohedge.com

Date UQ / IDS / BL URL IP
2017-01-20 08:04:500 - 0 - 0www.zerohedge.com/news/2017-01-18/clinton-family-friend-charged-after-threatening-kill-donald-t (...)52.6.109.9
2017-01-19 15:57:510 - 0 - 0www.zerohedge.com/news/2017-01-08/priebus-trump-accepts-us-intelligence-conclusion-russia-playe (...)34.192.18.153
2017-01-19 13:26:540 - 0 - 0www.zerohedge.com/52.6.109.9
2017-01-11 22:47:590 - 0 - 0www.zerohedge.com34.195.155.171
2017-01-11 21:34:520 - 0 - 0www.zerohedge.com/sites/default/files/pictures/picture-238685.jpg34.195.155.171
2017-01-05 22:42:220 - 0 - 0www.zerohedge.com/news/2016-11-05/us-military-hackers-prepare-battlefield-breach-russias-backbo (...)34.192.18.153



JavaScript

Executed Scripts (70)


Executed Evals (85)

#1 JavaScript::Eval (size: 226298, repeated: 1)

(function() {
    var d = false,
        c = /xyz/.test(function() {
            xyz
        }) ? /\b_super\b/ : /.*/;
    this.Class = function() {};
    Class.extend = function(a) {
        var b = this.prototype;
        d = true;
        var h = new this();
        d = false;
        for (var i in a) {
            h[i] = typeof a[i] == "function" && typeof b[i] == "function" && c.test(a[i]) ? (function(f, e) {
                return function() {
                    var g = this._super;
                    this._super = b[f];
                    var l = e.apply(this, arguments);
                    this._super = g;
                    return l
                }
            })(i, a[i]) : a[i]
        }
        function j() {
            if (!d && this.init) {
                this.init.apply(this, arguments)
            }
            this.instanceOf = function(f) {
                for (var g in f) {
                    if (typeof f[g] === "function" && typeof this[g] != "function") {
                        return false
                    }
                    return true
                }
            };
            if (this["implements"] && this["implements"].length > 0) {
                for (var e = 0;
                e < this["implements"].length;
                e++) {
                    if (!this.instanceOf(this["implements"][e])) {
                        throw new Error("Interface not fully implemented")
                    }
                }
            }
        }
        j.prototype = h;
        j.constructor = j;
        j.extend = arguments.callee;
        return j
    }
})();
EventDispatcher = Class.extend({
    buildListenerChain: function() {
        if (!this.listenerChain) {
            this.listenerChain = {}
        }
    },
    addEventListener: function(d, c) {
        if (!c instanceof Function) {
            throw {
                message: "Listener isn't a function"
            }
        }
        this.buildListenerChain();
        if (!this.listenerChain[d]) {
            this.listenerChain[d] = [c]
        } else {
            this.listenerChain[d].push(c)
        }
    },
    hasEventListener: function(b) {
        if (this.listenerChain) {
            return (typeof this.listenerChain[b] != "undefined")
        } else {
            return false
        }
    },
    removeEventListener: function(d, f) {
        if (!this.hasEventListener(d)) {
            return false
        }
        for (var e = 0;
        e < this.listenerChain[d].length;
        e++) {
            if (this.listenerChain[d][e] == f) {
                this.listenerChain[d].splice(e, 1)
            }
        }
    },
    dispatchEvent: function(h, f) {
        this.buildListenerChain();
        if (!this.hasEventListener(h)) {
            return false
        }
        for (var e = 0;
        e < this.listenerChain[h].length;
        e++) {
            var g = this.listenerChain[h][e];
            if (g.call) {
                g.call(this, f)
            }
        }
    }
});
PDKComponent = Class.extend({
    _generateExportedMarkup: function() {
        return '<div id="' + this.id + '"></div>'
    },
    write: function() {
        document.write(this._generateExportedMarkup(this.id));
        try {
            var d = document.getElementById(this.id);
            return this._bindElement(d)
        } catch (c) {}
    },
    bind: function(g) {
        try {
            var h = document.getElementById(g);
            h.innerHTML = this._generateExportedMarkup();
            var f = document.getElementById(this.id);
            return this._bindElement(f)
        } catch (e) {}
    },
    _bindElement: function(b) {
        return this.container = b
    },
    init: function() {},
    doPluginStuff: function() {
        this.pluginManager = new PlugInManager(this.controller);
        for (prop in this) {
            if (!prop.toLowerCase().match(/plugin|wrapper/)) {
                continue
            }
            var q = this[prop];
            if (typeof q != "string") {
                continue
            }
            var A;
            if (prop.toLowerCase().indexOf("plugin") == 0) {
                A = prop.substr(6)
            } else {
                if (prop.toLowerCase().indexOf("wrapper") == 0) {
                    A = prop.substr(7)
                }
            }
            var s;
            var r = Number.MAX_VALUE;
            var D;
            var u;
            var y;
            var x;
            var v = new Object();
            var B = q.split("|");
            for (var w = 0;
            w < B.length;
            w++) {
                var z = B[w];
                if (z.indexOf("=") == -1) {
                    continue
                }
                var C = [z.substr(0, z.indexOf("=")), z.substr(z.indexOf("=") + 1)];
                var t = C[0];
                var i = C[1];
                i = unescape(i);
                switch (t.toLowerCase()) {
                case "type":
                    s = i;
                    break;
                case "priority":
                    r = parseInt(i);
                    break;
                case "url":
                    D = i;
                    break;
                case "suburl":
                    u = i;
                    break;
                case "runtime":
                    y = i;
                    break;
                case "videolayer":
                    x = i;
                    break;
                default:
                    v[t] = i;
                    break
                }
            }
            if (!D) {
                return null
            }
            this.pluginManager.addPlugIn(A, s, r, D, u, v, null, y, x)
        }
        this.pluginManager.ready()
    },
    ready: function() {
        this.controller.registerFunction("getComponentSize", this, this.getComponentSize);
        this.controller.registerFunction("addChild", this, this.addChild);
        var b = this;
        tpTime("Component.ready until doPluginStuff timeout");
        setTimeout(function() {
            tpTimeEnd("Component.ready until doPluginStuff timeout");
            b.doPluginStuff()
        }, 0)
    },
    getComponentSize: function() {
        return {
            width: this.container.offsetWidth,
            height: this.container.offsetHeight,
            id: this.id
        }
    },
    addChild: function(b) {
        if (this.pluginLayer) {
            this.pluginLayer.appendChild(b)
        } else {
            if (this.container) {
                this.container.appendChild(b)
            }
        }
    },
    addPlugIn: function(k, p, i, j, l, m, n) {
        if (!this.plugins) {
            this.plugins = new Array()
        }
        var o = {
            id: k,
            type: p,
            priority: i,
            url: j,
            subUrl: l,
            vars: m,
            plugIn: n
        };
        this.pluginManager.addPlugIn(o)
    }
});
oldController = EventDispatcher.extend({
    init: function() {
        this.functions = new Object();
        this.objects = new Object();
        this.pluginQueue = new Array();
        this.pluginScopes = new Array();
        this.waitingForPlugIn = false
    },
    trace: function(h, e, g) {
        var f = $pdk.debug.trace(h, this.widgetId, e, g) || new Date();
        this.dispatchEvent("OnPdkTrace", {
            message: h,
            timestamp: (f.valueOf()),
            controllerId: this.widgetId,
            className: e,
            level: g
        })
    },
    dispatchEvent: function(c, d) {
        this._super(c, {
            type: c,
            data: d
        })
    },
    doDispatchEvent: function(b) {
        this.dispatchEvent(b.type, b.data)
    },
    removeEventListener: function(d, c) {
        this._super(d, c)
    },
    addEventListener: function(d, c) {
        this._super(d, c)
    },
    loadPlugIn: function(c, d) {
        c.controller = d;
        this.pluginQueue.push(c);
        this.pluginScopes.push(d.componentId);
        if (this.waitingForPlugIn) {
            return
        }
        this.loadNextPlugIn()
    },
    loadNextPlugIn: function() {
        if (this._pluginTimeout) {
            clearTimeout(this._pluginTimeout);
            this._pluginTimeout = undefined
        }
        this.currentPlugIn = this.pluginQueue.shift();
        if (!this.queuedControllers) {
            this.queuedControllers = []
        }
        if (this.currentPlugIn) {
            this.waitingForPlugIn = true;
            tpDebug("Trying to load plugin at " + this.currentPlugIn.url);
            var f = document.getElementsByTagName("head")[0];
            var j = document.createElement("script");
            j.type = "text/javascript";
            j.onerror = function() {
                h.loadNextPlugIn()
            };
            j.src = this.currentPlugIn.url;
            var h = this;
            f.appendChild(j);
            this._pluginTimeout = setTimeout(function() {
                h.loadNextPlugIn()
            }, 5000)
        } else {
            var i = 0;
            var g = this.queuedControllers.length;
            for (;
            i < g;
            i++) {
                this.queuedControllers[i].dispatchEvent("OnPlugInsComplete", null, this.pluginScopes)
            }
            this.dispatchEvent("OnPlugInsComplete", null, this.pluginScopes);
            if (tpController) {
                tpController.ready()
            }
            var i = 0;
            for (;
            i < g;
            i++) {
                this.queuedControllers[i].initializePlayback()
            }
            var h = this;
            setTimeout(function() {
                h.initializePlayback()
            }, 1)
        }
    },
    addChild: function(c, d) {
        return this.callFunction("addChild", [c], d)
    },
    plugInLoaded: function(h, g) {
        if (!this.queuedControllers) {
            this.queuedControllers = []
        }
        var e = false;
        for (var f in this.queuedControllers) {
            if (this.currentPlugIn.controller.id == f.id) {
                e = true;
                break
            }
        }
        if (e) {
            this.queuedControllers.push(this.currentPlugIn.controller)
        }
        h.initialize({
            controller: this.currentPlugIn.controller,
            vars: this.currentPlugIn.vars,
            priority: this.currentPlugIn.priority
        });
        if (g) {
            this.addChild(g, [this.currentPlugIn.controller.componentId])
        }
        this.dispatchEvent("OnPlugInLoaded", h, [this.currentPlugIn.controller.componentId]);
        this.waitingForPlugIn = false;
        this.loadNextPlugIn()
    },
    clickPlayButton: function(b) {
        return this.callFunction("clickPlayButton", [], b)
    },
    clickPlayButtonNative: function(b) {
        return this.callFunction("clickPlayButtonNative", [], b)
    },
    doParsePlaylist: function(e, f, d) {
        return this.callFunction("doParsePlaylist", [e, f], d)
    },
    firstRange: function(c, d) {
        this.callFunction("firstRange", [c], d)
    },
    getCurrentRange: function(b) {
        this.callFunction("getCurrentRange", [], b)
    },
    getRelease: function(e, f, d) {
        return this.callFunction("getRelease", [e, f], d)
    },
    getSubtitleLanguage: function(d, c) {
        this.callFunction("getSubtitleLanguage", [d], c)
    },
    loadRelease: function(e, d, f) {
        e = this.modRelease(e);
        return this.callFunction("loadRelease", [e, d], f)
    },
    loadReleaseURL: function(e, d, f) {
        return this.callFunction("loadReleaseURL", [e, d], f)
    },
    loadReleaseURLNative: function(e, d, f) {
        return this.callFunction("loadReleaseURLNative", [e, d], f)
    },
    parseRelease: function(h, f, e, g) {
        return this.callFunction("parseRelease", [h, f, e], g)
    },
    loadJSON: function(f, g, e, h) {
        return this.callFunction("loadJSON", [f, g, e], h)
    },
    supportsFullScreen: function(b) {
        return this.callFunction("supportsFullScreen", [], b)
    },
    supportsFastForward: function(b) {
        return this.callFunction("supportsFastForward", [], b)
    },
    supportsSeek: function(b) {
        return this.callFunction("supportsSeek", [], b)
    },
    supportsMute: function(b) {
        return this.callFunction("supportsMute", [], b)
    },
    supportsVolume: function(b) {
        return this.callFunction("supportsVolume", [], b)
    },
    mute: function(c, d) {
        return this.callFunction("mute", [c], d)
    },
    setVolume: function(c, d) {
        return this.callFunction("setVolume", [c], d)
    },
    setPlaybackRate: function(c, d) {
        return this.callFunction("setPlaybackRate", [c], d)
    },
    nextClip: function(b) {
        return this.callFunction("nextClip", [], b)
    },
    nextRange: function(c, d) {
        this.callFunction("nextRange", [c], d)
    },
    tryWritePlayer: function(b) {
        return this.callFunction("tryWritePlayer", [], b)
    },
    pause: function(f, e, d) {
        return this.callFunction("pause", [f, d], e)
    },
    pauseNative: function(c, d) {
        return this.callFunction("pauseNative", [c], d)
    },
    playNext: function(f, e, d) {
        return this.callFunction("playNext", [f, e], d)
    },
    playPrevious: function(c, d) {
        this.callFunction("playPrevious", [c], d)
    },
    sendError: function(d, c) {
        this.callFunction("sendError", [d], c)
    },
    previousClip: function(b) {
        return this.callFunction("previousClip", [], b)
    },
    previousRange: function(c, d) {
        this.callFunction("previousRange", [c], d)
    },
    refreshReleaseModel: function(r, j, p, o, q, l, k, n, m) {
        if (p) {
            p.globalDataType = this.getDataTypeName("Sort")
        }
        if (o) {
            o.globalDataType = this.getDataTypeName("Range")
        }
        return this.callFunction("refreshReleaseModel", [r, j, p, o, q, l, n, m], k)
    },
    setAudioTrackByIndex: function(d, c) {
        this.callFunction("setAudioTrackByIndex", [d], c)
    },
    setAudioTrackByLanguage: function(c, d) {
        this.callFunction("setAudioTrackByLanguage", [c], d)
    },
    seekToPercentage: function(d, c) {
        return this.callFunction("seekToPercentage", [d], c)
    },
    seekToPosition: function(d, c) {
        return this.callFunction("seekToPosition", [d], c)
    },
    playPlaylist: function(c, d) {
        return this.callFunction("playPlaylist", [c], d)
    },
    setRelease: function(e, d, f) {
        e = this.modRelease(e);
        return this.callFunction("setRelease", [e, d], f)
    },
    setReleaseURL: function(e, d, f) {
        return this.callFunction("setReleaseURL", [e, d], f)
    },
    setReleaseURLNative: function(e, d, f) {
        return this.callFunction("setReleaseURLNative", [e, d], f)
    },
    setShowSubtitles: function(d, c) {
        this.callFunction("setShowSubtitles", [d], c)
    },
    setSmil: function(d, c) {
        this.callFunction("setSmil", [d], c)
    },
    setSubtitleLanguage: function(c, d) {
        this.callFunction("setSubtitleLanguage", [c], d)
    },
    setToken: function(e, f, d) {
        this.callFunction("setToken", [e, f], d)
    },
    showFullScreen: function(c, d) {
        return this.callFunction("showFullScreen", [c], d)
    },
    endRelease: function(b) {
        return this.callFunction("endRelease", [], b)
    },
    getMediaArea: function(f, d) {
        var e = null;
        return this.callFunction("getMediaArea", [f, d], e)
    },
    setMediaArea: function(c, d) {
        this.callFunction("setMediaArea", [c], d)
    },
    getOverlayArea: function(g, f, h, e) {
        return this.callFunction("getOverlayArea", [g, f, h], e)
    },
    getContentArea: function(b) {
        return this.callFunction("getOverlayArea", [], b)
    },
    setOverlayArea: function(c, d) {
        this.callFunction("setOverlayArea", [c], d)
    },
    getReleaseState: function() {
        return this.callFunction("getReleaseState", [])
    },
    getTimeSinceLastAd: function(b) {
        return this.callFunction("getTimeSinceLastAd", [], b)
    },
    injectPlaylist: function(c, d) {
        return this.callFunction("injectPlaylist", [c], d)
    },
    insertPlaylist: function(c, d) {
        return this.callFunction("insertPlaylist", [c], d)
    },
    insertClip: function(c, d) {
        return this.callFunction("insertClip", [c], d)
    },
    registerAdPlugIn: function(c) {
        var d = null;
        return this.callFunction("registerAdPlugIn", [c], d)
    },
    registerClipWrapperPlugIn: function(c) {
        var d = null;
        return this.callFunction("registerClipWrapperPlugIn", [c], d)
    },
    registerMetadataUrlPlugIn: function(f, e, d) {
        return this.callFunction("registerMetadataUrlPlugIn", [f, e], d)
    },
    registerURLPlugIn: function(g, h, f) {
        var e = null;
        return this.callFunction("registerURLPlugIn", [g, h, f], e)
    },
    setAds: function(c, d) {
        return this.callFunction("setAds", [c], d)
    },
    addPlayerCard: function(o, k, i, l, j, m, p, n) {
        this.callFunction("addPlayerCard", [o, k, i, l, j, m, p, n], n)
    },
    showPlayerCard: function(f, h, g, i, j) {
        return this.callFunction("showPlayerCard", [f, h, g, i], j)
    },
    hidePlayerCard: function(e, f, d) {
        this.callFunction("hidePlayerCard", [e, f], d)
    },
    showMenuCard: function(d, c) {
        return this.callFunction("showMenuCard", [d], c)
    },
    checkIfEndCardExists: function(b) {
        return this.callFunction("checkIfEndCardExists", [], b)
    },
    setClip: function(c) {
        var d = null;
        return this.callFunction("setClip", [c], d)
    },
    setMetadataUrl: function(d, c) {
        return this.callFunction("setMetadataUrl", [d], c)
    },
    setPlayerLayoutUrl: function(d, c) {
        return this.callFunction("setPlayerLayoutUrl", [d], c)
    },
    setPlayerLayoutXml: function(d, c) {
        return this.callFunction("setPlayerLayoutXml", [d], c)
    },
    setOverlayArea: function(c, d) {
        return this.callFunction("setOverlayArea", [c], d)
    },
    setClipWrapper: function(d, c) {
        return this.callFunction("setClipWrapper", [d], c)
    },
    wrapClip: function(f, d, e) {
        return this.callFunction("wrapClip", [f, d], e)
    },
    initializePlayback: function(b) {
        return this.callFunction("initializePlayback", [], b)
    },
    getPlaybackRate: function() {
        return this.callFunction("getPlaybackRate", [], scope)
    },
    endMedia: function(d, c) {
        return this.callFunction("endMedia", [d, c])
    },
    getVideoProxy: function(b) {
        return this.callFunction("getVideoProxy", [], b)
    },
    isFlashPlayer: function(c) {
        var d = this.callFunction("isFlashPlayer", [], c);
        if (d === undefined) {
            return true
        } else {
            return d
        }
    },
    isStandbyMode: function() {
        return this.callFunction("isStandbyMode", [])
    },
    isPrefetch: function() {
        return this.callFunction("isPrefetch", [])
    },
    markOffset: function(f, e, d) {
        return this.callFunction("markOffset", [f, e, d])
    },
    resetRelease: function(b) {
        return this.callFunction("resetRelease", [], b)
    },
    updateMediaTime: function(d, c) {
        this.callFunction("updateMediaTime", [d], c)
    },
    updateClip: function(c, d) {
        this.callFunction("updateClip", [c], d)
    },
    updatePlaylist: function(c, d) {
        this.callFunction("updatePlaylist", [c], d)
    },
    writePlayer: function(d, e, f) {
        return this.callFunction("writePlayer", [d, e], f)
    },
    setShowControls: function(d, f, e) {
        this.callFunction("setShowControls", [d, f], e)
    },
    getDataTypeName: function(b) {
        switch (b) {
        case "AdPattern":
            return "com.theplatform.pdk.data::AdPattern";
        case "Banner":
            return "com.theplatform.pdk.data::Banner";
        case "BaseClip":
            return "com.theplatform.pdk.data::BaseClip";
        case "CallInfo":
            return "com.theplatform.pdk.communication::CallInfo";
        case "CategoryInfo":
            return "com.theplatform.pdk.data::CategoryInfo";
        case "Clip":
            return "com.theplatform.pdk.data::Clip";
        case "CommInfo":
            return "com.theplatform.pdk.communication::CommInfo";
        case "CustomData":
            return "com.theplatform.pdk.data::CustomData";
        case "CustomValue":
            return "com.theplatform.pdk.data::CustomValue";
        case "DispatchInfo":
            return "com.theplatform.pdk.communication::DispatchInfo";
        case "FunctionInfo":
            return "com.theplatform.pdk.communication::FunctionInfo";
        case "HandlerInfo":
            return "com.theplatform.pdk.communication::HandlerInfo";
        case "HyperLink":
            return "com.theplatform.pdk.data::HyperLink";
        case "MediaClick":
            return "com.theplatform.pdk.data::MediaClick";
        case "MediaFile":
            return "com.theplatform.pdk.data::MediaFile";
        case "MessageInfo":
            return "com.theplatform.pdk.communication::MessageInfo";
        case "MetricInfo":
            return "com.theplatform.pdk.data::MetricInfo";
        case "Overlay":
            return "com.theplatform.pdk.data::Overlay";
        case "PdkEvent":
            return "com.theplatform.pdk.events::PdkEvent";
        case "ProviderInfo":
            return "com.theplatform.pdk.data::ProviderInfo";
        case "Range":
            return "com.theplatform.pdk.data::Range";
        case "Rating":
            return "com.theplatform.pdk.data::Rating";
        case "Release":
            return "com.theplatform.pdk.data::Release";
        case "ReleaseInfo":
            return "com.theplatform.pdk.data::ReleaseInfo";
        case "ScopeInfo":
            return "com.theplatform.pdk.communication::ScopeInfo";
        case "Sort":
            return "com.theplatform.pdk.data::Sort";
        case "Subtitles":
            return "com.theplatform.pdk.data::Subtitles";
        case "TrackingUrl":
            return "com.theplatform.pdk.data::TrackingUrl";
        case "BandwidthPreferences":
            return "com.theplatform.pdk.data::BandwidthPreferences";
        case "Annotation":
            return "com.theplatform.pdk.data::Annotation"
        }
    },
    ready: function() {
        this.isHTML5Loading = false;
        this.checkMessageQueue()
    },
    callFunction: function(f, h, j, i) {
        if (j == null && this.scopes != undefined) {
            j = this.scopes.concat()
        }
        var g = this.functions[f];
        if (g) {
            return this.functions[f].apply(this.objects[f], h)
        } else {
            if (tpController && !i) {
                return tpController.callFunction(f, h, j)
            } else {
                return null
            }
        }
    },
    doCallFunction: function(b) {
        this.callFunction(b.name, b.args, b.scope)
    },
    registerFunction: function(e, f, g) {
        var h = this.functions[e] === undefined;
        this.functions[e] = g;
        this.objects[e] = f;
        if (tpController) {
            tpController.registerFunction(e, function() {
                return g.apply(f, arguments)
            }, (this.scopes ? this.scopes.concat() : undefined), h)
        }
    },
    modRelease: function(d) {
        if (d) {
            d.globalDataType = this.getDataTypeName("Release");
            if (d.categories) {
                d.categories = this.modCategories(d.categories)
            }
            if (d.thumbnails) {
                for (var c = 0;
                c < d.thumbnails.length;
                c++) {
                    d.thumbnails[c].globalDataType = this.getDataTypeName("MediaFile");
                    if (d.thumbnails[c].customValues) {
                        d.thumbnails[c].customValues = this.modCustomValues(d.thumbnails[c].customValues)
                    }
                }
            }
            if (d.customValues) {
                d.customValues = this.modCustomValues(d.customValues)
            }
            if (d.metrics) {
                for (var c = 0;
                c < d.metrics.length;
                c++) {
                    d.metrics[c].globalDataType = this.getDataTypeName("MetricInfo")
                }
            }
            if (d.provider) {
                d.provider.globalDataType = this.getDataTypeName("ProviderInfo");
                if (d.provider.customValues) {
                    d.provider.customValues = this.modCustomValues(d.provider.customValues)
                }
            }
            if (d.ratings) {
                for (var c = 0;
                c < d.ratings.length;
                c++) {
                    d.ratings[c].globalDataType = this.getDataTypeName("Rating")
                }
            }
            if (d.URL) {
                d.url = d.URL
            }
            d.mediaPID = d.mediaPid ? d.mediaPid : "";
            delete d.mediaPid
        }
        return d
    },
    modCustomValues: function(d) {
        for (var c = 0;
        c < d.length;
        c++) {
            d[c].globalDataType = this.getDataTypeName("CustomValue")
        }
        return d
    },
    modCategories: function(d) {
        for (var c = 0;
        c < d.length;
        c++) {
            d[c].globalDataType = this.getDataTypeName("CategoryInfo")
        }
        return d
    },
    modClip: function(d) {
        if (d) {
            d.globalDataType = this.getDataTypeName("Clip");
            var c = d.baseClip;
            if (!c) {
                c = new Object()
            }
            if (d.banners) {
                c.banners = d.banners
            }
            if (d.overlays) {
                c.overlays = d.overlays
            }
            d.baseClip = this.modBaseClip(c);
            if (d.chapter) {
                d.chapter.globalDataType = this.getDataTypeName("Chapter")
            }
        }
        return d
    },
    modBaseClip: function(c) {
        if (!c) {
            c = new Object()
        }
        c.globalDataType = this.getDataTypeName("BaseClip");
        if (c.moreInfo) {
            c.moreInfo.globalDataType = this.getDataTypeName("HyperLink");
            if (c.moreInfo.clickTrackingUrls) {
                c.moreInfo.clickTrackingUrls = this.modTracking(c.moreInfo.clickTrackingUrls)
            }
        }
        if (c.banners) {
            for (var d = 0;
            d < c.banners.length;
            d++) {
                c.banners[d].globalDataType = this.getDataTypeName("Banner");
                if (c.banners[d].clickTrackingUrls) {
                    c.banners[d].clickTrackingUrls = this.modTracking(c.banners[d].clickTrackingUrls)
                }
            }
        }
        if (c.overlays) {
            for (var d = 0;
            d < c.overlays.length;
            d++) {
                c.overlays[d].globalDataType = this.getDataTypeName("Overlay");
                if (c.overlays[d].clickTrackingUrls) {
                    c.overlays[d].clickTrackingUrls = this.modTracking(c.overlays[d].clickTrackingUrls)
                }
            }
        }
        if (c.availableSubtitles) {
            for (var d = 0;
            d < c.availableSubtitles;
            d++) {
                c.availableSubtitles[d].globalDataType = this.getDataTypeName("Subtitles")
            }
        }
        if (c.categories) {
            c.categories = this.modCategories(c.categories)
        }
        if (c.adPattern) {
            c.adPattern.globalDataType = this.getDataTypeName("AdPattern")
        }
        if (c.trackingURLs) {
            c.trackingURLs = this.modTracking(c.trackingURLs)
        }
        if (c.contentCustomData) {
            c.contentCustomData.globalDataType = this.getDataTypeName("CustomData")
        }
        if (c.ownerCustomData) {
            c.ownerCustomData.globalDataType = this.getDataTypeName("CustomData")
        }
        if (c.outletCustomData) {
            c.outletCustomData.globalDataType = this.getDataTypeName("CustomData")
        }
        return c
    },
    modTracking: function(d) {
        for (var c = 0;
        c < d.length;
        c++) {
            d.globalDataType = this.getDataTypeName("TrackingUrl")
        }
        return d
    }
});
if (window.tpController === undefined) {
    tpController = new oldController()
} else {
    var tempController = tpController;
    tpController = new oldController();
    for (var prop in tempController) {
        tpController[prop] = tempController[prop]
    }
    if (window["$pdk"] !== undefined) {
        $pdk.controller = tpController
    }
}
ComponentController = oldController.extend({
    init: function(f, e, d) {
        this.id = f;
        this.component = e;
        this.widgetId = this.component && this.component.widgetId ? this.component.widgetId : this.id;
        if (typeof(d) === "object") {
            this.scopes = [f].concat(d)
        } else {
            if (typeof(d) === "string") {
                this.scopes = [f, d]
            } else {
                this.scopes = [f, "default"]
            }
        }
        this._super()
    },
    getComponentSize: function(b) {
        return this.callFunction("getComponentSize", [], b)
    },
    dispatchEvent: function(c, d) {
        if (this.scopes && this.scopes.length) {
            tpController.dispatchEvent(c, d, this.scopes.concat(), this.widgetId)
        } else {
            tpController.dispatchEvent(c, d, null, this.widgetId)
        }
    },
    removeEventListener: function(d, c) {
        if (this.scopes && this.scopes.length) {
            tpController.removeEventListener(d, c, this.scopes.concat())
        } else {
            tpController.removeEventListener(d, c)
        }
    },
    addEventListener: function(d, c) {
        if (this.scopes && this.scopes.length) {
            tpController.addEventListener(d, c, this.scopes.concat())
        } else {
            tpController.addEventListener(d, c)
        }
    },
    getProperty: function(c) {
        var d = this.component[c];
        if (d === undefined) {
            d = this.component[c.toLowerCase()]
        }
        return d
    },
    setProperty: function(d, c) {
        this.component[d] = c
    }
});

function printStackTrace() {
    var i = [];
    var r = false;
    try {
        q.dont.exist += 0
    } catch (o) {
        if (o.stack) {
            var e = o.stack.split("\n");
            for (var q = 0, p = e.length;
            q < p;
            q++) {
                if (e[q].match(/^\s*[A-Za-z0-9\-_\$]+\(/)) {
                    i.push(e[q])
                }
            }
            i.shift();
            r = true
        } else {
            if (window.opera && o.message) {
                var e = o.message.split("\n");
                for (var q = 0, p = e.length;
                q < p;
                q++) {
                    if (e[q].match(/^\s*[A-Za-z0-9\-_\$]+\(/)) {
                        var m = e[q];
                        if (e[q + 1]) {
                            m += "at" + e[q + 1];
                            q++
                        }
                        i.push(m)
                    }
                }
                i.shift();
                r = true
            }
        }
    }
    if (!r) {
        var s = arguments.callee.caller;
        while (s) {
            var n = s.toString();
            var t = n.substring(n.indexOf("function") + 8, n.indexOf("(")) || "anonymous";
            i.push(t);
            s = s.caller
        }
    }
    output(i)
}
function output(b) {
    alert(b.join("\n\n"))
}
ViewController = ComponentController.extend({
    init: function(d, f, e) {
        this._super(f, e)
    },
    instantiateCard: function(b) {
        return this.callFunction("instantiateCard", [b])
    },
    showCard: function(l, j, i, g, k, h) {
        this.callFunction("showCard", [l, j, i, g, k, h])
    },
    hideCard: function(d, c) {
        this.callFunction("hideCard", [d, c])
    },
    getCard: function(d, c) {
        return this.callFunction("getCard", [d, c])
    },
    getCurrentCard: function(b) {
        return this.callFunction("getCurrentCard", [b])
    }
});
PlayerController = ViewController.extend({
    init: function(c, d) {
        this._super("player", c, d)
    },
    getReleaseState: function() {
        return this.callFunction("getReleaseState", [])
    },
    getMuteState: function() {
        return this.callFunction("getMuteState", [])
    },
    getFullScreenState: function() {
        return this.callFunction("getFullScreenState", [])
    },
    loadLayer: function(j, h, f, i, g) {
        return this.callFunction("loadLayer", [j, h, f])
    },
    callLayerFunction: function(f, e, d) {
        return this.callFunction("callLayerFunction", [f, e, d])
    }
});
if ($pdk.bootloaderVersion !== null && typeof($pdk.bootloaderVersion) === "object") {
    if ("5" != $pdk.bootloaderVersion.major || "6" != $pdk.bootloaderVersion.minor || "5" != $pdk.bootloaderVersion.revision) {
        alert("Error: Bootloader Version and PDK-JS Version do not match.\n\nSomething is seriously wrong.")
    }
}
ComponentTypes = new Object();
ComponentTypes.CATEGORY_LIST = "categoryList";
ComponentTypes.CATEGORY_MODEL = "categoryModel";
ComponentTypes.CLIP_INFO = "clipInfo";
ComponentTypes.COMM_MANAGER = "commManager";
ComponentTypes.HEADER = "header";
ComponentTypes.JAVASCRIPT = "javascript";
ComponentTypes.NAVIGATION = "navigation";
ComponentTypes.PLAYER = "player";
ComponentTypes.RELEASE_LIST = "releaseList";
ComponentTypes.RELEASE_MODEL = "releaseModel";
ComponentTypes.SEARCH = "search";
ComponentTypes.EXTERNAL = "external";
ComponentTypes.LOCAL_ALL = "localAll";
ComponentTypes.GLOBAL_ALL = "globalAll";
Rectangle = Class.extend({
    init: function(e, g, h, f) {
        this._x = e ? e : 0;
        this._y = g ? g : 0;
        this._width = h ? h : 0;
        this._height = f ? f : 0;
        this._top = this._y;
        this._bottom = this._y + this._height;
        this._left = this._x;
        this._right = this._x + this._width
    },
    clone: function() {
        return new Rectangle(this._x, this._y, this._width, this._height)
    },
    x: function(b) {
        if (b != undefined) {
            if (b < 0) {
                b = 0
            }
            this._x = b;
            this._left = b;
            this._right = b + this._width
        }
        return this._x
    },
    y: function(b) {
        if (b != undefined) {
            if (b < 0) {
                b = 0
            }
            this._y = b;
            this._top = b;
            this._bottom = b + this._height
        }
        return this._y
    },
    width: function(b) {
        if (b != undefined) {
            if (b < 0) {
                b = 0
            }
            this._width = b;
            this._right = b + this._x
        }
        return this._width
    },
    height: function(b) {
        if (b != undefined) {
            if (b < 0) {
                b = 0
            }
            this._height = b;
            this._bottom = b + this._y
        }
        return this._height
    },
    top: function(b) {
        if (b != undefined) {
            if (b < 0) {
                b = 0
            }
            if (b < this._y) {
                this._height = 0
            } else {
                this._height = this._bottom - b
            }
            this._top = this._y = b
        }
        return this._top
    },
    left: function(b) {
        if (b != undefined) {
            if (b < 0) {
                b = 0
            }
            if (b < this._x) {
                this._width = 0
            } else {
                this._width = this._right - b
            }
            this._left = this._x = b
        }
        return this._left
    },
    bottom: function(b) {
        if (b != undefined) {
            if (b < 0) {
                b = 0
            }
            if (b < this._y) {
                this._bottom = this._y = b;
                this._height = 0
            } else {
                this._bottom = b;
                this._height = b - this._y
            }
        }
        return this._bottom
    },
    right: function(b) {
        if (b != undefined) {
            if (b < 0) {
                b = 0
            }
            if (b < this._x) {
                this._right = this._x = b;
                this._width = 0
            } else {
                this._right = b;
                this._width = b - this._x
            }
        }
        return this._right
    }
});
var PlayerEvent = new Object();
PlayerEvent.OnUpdateOverlays = "OnUpdateOverlays";
PlayerEvent.OnCheckAdFailed = "OnCheckAdFailed";
PlayerEvent.OnStandbyRelease = "OnStandbyRelease";
PlayerEvent.OnMediaAreaChanged = "OnMediaAreaChanged";
PlayerEvent.onContentAreaChanged = "onContentAreaChanged";
PlayerEvent.OnOverlayAreaChanged = "OnOverlayAreaChanged";
PlayerEvent.OnReleaseStop = "OnReleaseStop";
PlayerEvent.OnBandwidthPreferencesSet = "OnBandwidthPreferencesSet";
PlayerEvent.OnFormShown = "OnFormShown";
PlayerEvent.OnFlashFullScreen = "OnPlayerFullScreen";
PlayerEvent.OnExternalFullScreen = "OnExternalFullScreen";
PlayerEvent.OnPlayerPause = "OnPlayerPause";
PlayerEvent.OnPlayerUnPause = "OnPlayerUnPause";
PlayerEvent.OnNetConnectionClosed = "OnNetConnectionClosed";
PlayerEvent.OnTrackActivated = "OnTrackActivated";
PlayerEvent.OnPlugInsAboveControlsChanged = "OnPlugInsAboveControlsChanged";
PlayerEvent.OnDebug = "OnDebug";
PlayerEvent.OnVideoSized = "OnVideoSized";
PlayerEvent.OnRelatedContentIdsReceived = "OnRelatedContentIdsReceived";
$pdk.ns("$pdk.managers");
$pdk.managers.TrackingUrl = {
    TRIGGER_TYPE_PERCENTAGE: 0,
    TRIGGER_TYPE_MILLISECONDS: 1,
    TRIGGER_TYPE_EVENT: 2,
    EVENT_MUTE: 0,
    EVENT_PAUSE: 1,
    EVENT_REPLAY: 2,
    EVENT_FULL_SCREEN: 3,
    EVENT_STOP: 4,
    EVENT_START: 5,
    EVENT_UNPAUSE: 6,
    EVENT_CLOSE: 7,
    EVENT_UNMUTE: 8,
    EVENT_ACCEPTINVITATION: 9,
    EVENT_CLICK: 10,
    EVENT_COMPLETE: 11
};
$pdk.managers.TrackingUrlManager = $pdk.extend(function() {}, {
    _controller: null,
    _trackingURLs: null,
    _trackingURLMap: [],
    _trackingBaseClipMap: [],
    _eventTracking: null,
    _urlQueue: [],
    constructor: function(b) {
        this._controller = b;
        this.init()
    },
    init: function() {
        var b = this;
        this._eventTracking = new $pdk.managers.EventTracking(this._controller);
        this._eventTracking.addEventListener("OnSendUrl", function(a) {
            b.trackEvent(a)
        });
        this._controller.addEventListener("OnMediaClick", function(a) {
            b.handleMediaClick(a)
        });
        this._controller.addEventListener("OnMediaStart", function(a) {
            b.handleMediaStart(a)
        });
        this._controller.addEventListener("OnMediaEnd", function(a) {
            b.handleMediaEnd(a)
        });
        this._controller.addEventListener("OnMediaComplete", function(a) {
            b.handleMediaComplete(a)
        });
        this._controller.addEventListener("OnReleaseEnd", function(a) {
            b.handleReleaseEnd(a)
        })
    },
    handleMediaClick: function(h) {
        var g = this._clip.baseClip.moreInfo.clickTrackingUrls;
        if (g) {
            var e = 0;
            var f = g.length;
            for (;
            e < f;
            e++) {
                this.sendUrl(g[e])
            }
        }
    },
    handleMediaStart: function(f) {
        var d = f.data;
        this._clip = d;
        this._isAd = f.data.baseClip.isAd;
        this._trackingURLs = this.getTrackingURLs(d);
        if (!this._trackingURLs || !this._trackingURLs.length) {
            tpDebug("No tracking URLs", "TrackingUrlMgr", tpConsts.INFO);
            if (this._onMediaPlayingListener) {
                this._controller.removeEventListener("OnMediaPlaying", this._onMediaPlayingListener);
                this._onMediaPlayingListener = null
            }
        } else {
            if (!this._onMediaPlayingListener) {
                tpDebug("Tracking URLs found", "TrackingUrlMgr", tpConsts.INFO);
                var e = this;
                this._onMediaPlayingListener = function(a) {
                    e.handleMediaPlaying(a)
                };
                this._controller.addEventListener("OnMediaPlaying", this._onMediaPlayingListener)
            }
        }
    },
    handleMediaPlaying: function(b) {
        if (this._trackingURLs && this._trackingURLs.length) {
            this.doTracking(b.data)
        }
    },
    handleMediaEnd: function(b) {
        if (b.data.baseClip.isAd) {
            this.doTracking(null)
        }
    },
    handleMediaComplete: function(b) {
        if (this._trackingURLs) {
            this.doTracking(null)
        }
    },
    handleReleaseEnd: function(b) {
        this.resetTrackingURLs()
    },
    getTrackingURLs: function(c) {
        var d = c.baseClip.releaseID;
        if (this._trackingBaseClipMap[d] && this._trackingBaseClipMap[d] === c.baseClip) {
            tpDebug("Use existing Clip's trackingURLs", "TrackingUrlMgr", tpConsts.INFO);
            return this._trackingURLMap[c.baseClip.releaseID]
        }
        this._trackingBaseClipMap[d] = c.baseClip;
        this._trackingURLMap[d] = c.baseClip.trackingURLs;
        return this._trackingURLMap[d]
    },
    resetTrackingURLs: function() {
        this._trackingBaseClipMap = [];
        this._trackingURLMap = []
    },
    doTracking: function(h) {
        if (!this._trackingURLs) {
            return
        }
        var j;
        var f;
        var i;
        if (!h) {
            h = {};
            h.percentComplete = 100;
            h.currentTime = 1000000;
            i = 5
        } else {
            i = 100000 / (!this._isAd && h.durationAggregate ? h.durationAggregate : h.duration)
        }
        f = (!this._isAd && h.currentTimeAggregate) ? h.currentTimeAggregate : h.currentTime;
        j = (!this._isAd && h.percentCompleteAggregate) ? h.percentCompleteAggregate : h.percentComplete;
        for (var g = 0;
        g < this._trackingURLs.length; ++g) {
            if (!this._trackingURLs[g].hasFired && this._trackingURLs[g].URL && this._trackingURLs[g].URL.length > 0) {
                if ((this._trackingURLs[g].triggerType == $pdk.managers.TrackingUrl.TRIGGER_TYPE_PERCENTAGE) && (j >= this._trackingURLs[g].triggerValue) && (j < (this._trackingURLs[g].triggerValue + 5 * i))) {
                    this.trackProgress(this._trackingURLs[g])
                } else {
                    if (this._trackingURLs[g].triggerType == $pdk.managers.TrackingUrl.TRIGGER_TYPE_MILLISECONDS && f >= this._trackingURLs[g].triggerValue && f < (this._trackingURLs[g].triggerValue + 5000)) {
                        this.trackProgress(this._trackingURLs[g])
                    }
                }
            }
        }
    },
    trackProgress: function(b) {
        b.hasFired = true;
        this.sendUrl(b.URL)
    },
    trackEvent: function(b) {
        this.sendUrl(b.data)
    },
    sendUrl: function(b) {
        this._urlQueue.push(b);
        if (!this._urlQueueWaiting) {
            this.sendNextUrl()
        }
    },
    sendNextUrl: function() {
        var f = this._urlQueue.shift();
        if (!f) {
            return
        }
        if (f.indexOf("ord=") === -1) {
            var g = 100000 + Math.floor(Math.random() * 900001);
            f += (f.indexOf("?") === -1 ? "?" : "&");
            f += "ord=" + g
        }
        f += (f.indexOf("?") === -1 ? "?" : "&");
        f += "source=pdk";
        this._urlQueueWaiting = true;
        var h = new Image();
        var e = this;
        h.onload = function(a) {
            e.completeHandler(a)
        };
        h.onerror = function(a) {
            e.completeHandler(a)
        };
        h.src = f + "&"
    },
    completeHandler: function(b) {
        tpDebug("Tracking url sent: " + (b.target).src, "TrackingUrlMgr", tpConsts.INFO);
        this._urlQueueWaiting = false;
        this.sendNextUrl()
    }
});
$pdk.ns("$pdk.managers");
$pdk.managers.EventTracking = $pdk.extend(EventDispatcher, {
    _controller: null,
    _urls: null,
    constructor: function(b) {
        this._controller = b;
        this.init()
    },
    init: function() {
        var b = this;
        this._controller.addEventListener("OnMediaStart", function(a) {
            b.onMediaStart(a)
        })
    },
    onMediaStart: function(c) {
        var d = c.data;
        if (d.baseClip.trackingURLs) {
            this.setup(d.baseClip.trackingURLs)
        }
        if (d.baseClip.impressionUrls) {
            this.trackImpression(d)
        }
    },
    trackImpression: function(h) {
        var g = h.baseClip;
        var e = g.impressionUrls;
        if (g.impressionUrls && g.impressionUrls.length) {
            for (var f = 0;
            f < g.impressionUrls.length;
            f++) {
                this.dispatchEvent("OnSendUrl", {
                    type: "OnSendUrl",
                    data: g.impressionUrls[f]
                })
            }
            g.impressionUrls = [];
            this._controller.updateClip(h)
        }
    },
    setup: function(e) {
        this._urls = [];
        if (this._listeners) {
            this.removeListeners()
        }
        this._listeners = {};
        var f;
        for (var h = 0;
        h < e.length;
        h++) {
            f = e[h];
            if (f.triggerType == $pdk.managers.TrackingUrl.TRIGGER_TYPE_EVENT) {
                this.doSetup(f)
            }
        }
        if (this._urls[$pdk.managers.TrackingUrl.EVENT_START]) {
            this.sendTrackingEvent(this._urls[$pdk.managers.TrackingUrl.EVENT_START])
        }
        if (this._urls.length) {
            var g = this;
            this._listeners.OnMediaEnd = function(a) {
                g.onMediaEnd(a)
            };
            this._controller.addEventListener("OnMediaEnd", this._listeners.OnMediaEnd)
        }
    },
    doSetup: function(d) {
        var c = this;
        switch (d.triggerValue) {
        case $pdk.managers.TrackingUrl.EVENT_START:
            this.addUrlToEvent($pdk.managers.TrackingUrl.EVENT_START, d);
            break;
        case $pdk.managers.TrackingUrl.EVENT_STOP:
            break;
        case $pdk.managers.TrackingUrl.EVENT_PAUSE:
            this.addUrlToEvent($pdk.managers.TrackingUrl.EVENT_PAUSE, d);
            this._listeners.OnMediaPause = function(a) {
                c.onMediaPause(a)
            };
            this._controller.addEventListener("OnMediaPause", this._listeners.OnMediaPause);
            break;
        case $pdk.managers.TrackingUrl.EVENT_UNPAUSE:
            this.addUrlToEvent($pdk.managers.TrackingUrl.EVENT_UNPAUSE, d);
            this._listeners.OnMediaUnpause = function(a) {
                c.onMediaUnpause(a)
            };
            this._controller.addEventListener("OnMediaUnpause", this._listeners.OnMediaUnpause);
            break;
        case $pdk.managers.TrackingUrl.EVENT_REPLAY:
            this.addUrlToEvent($pdk.managers.TrackingUrl.EVENT_REPLAY, d);
            this._listeners.OnMediaSeek = function(a) {
                c.onMediaSeek(a)
            };
            this._controller.addEventListener("OnMediaSeek", this._listeners.OnMediaSeek);
            break;
        case $pdk.managers.TrackingUrl.EVENT_MUTE:
            this.addUrlToEvent($pdk.managers.TrackingUrl.EVENT_MUTE, d);
            this._listeners.OnMute = function(a) {
                c.onMute(a)
            };
            this._controller.addEventListener("OnMute", this._listeners.OnMute);
            break;
        case $pdk.managers.TrackingUrl.EVENT_UNMUTE:
            this.addUrlToEvent($pdk.managers.TrackingUrl.EVENT_UNMUTE, d);
            this._listeners.OnUnMute = function(a) {
                c.onUnMute(a)
            };
            this._controller.addEventListener("OnMute", this._listeners.OnUnMute);
            break;
        case $pdk.managers.TrackingUrl.EVENT_FULL_SCREEN:
            this.addUrlToEvent($pdk.managers.TrackingUrl.EVENT_FULL_SCREEN, d);
            this._listeners.OnShowFullScreen = function(a) {
                c.onShowFullScreen(a)
            };
            this._controller.addEventListener("OnShowFullScreen", this._listeners.OnShowFullScreen);
            break;
        case $pdk.managers.TrackingUrl.EVENT_CLICK:
            this.addUrlToEvent($pdk.managers.TrackingUrl.EVENT_CLICK, d);
            this._listeners.OnMediaClick = function(a) {
                c.onMediaClick(a)
            };
            this._controller.addEventListener("OnMediaClick", this._listeners.OnMediaClick);
            break;
        case $pdk.managers.TrackingUrl.EVENT_COMPLETE:
            this.addUrlToEvent($pdk.managers.TrackingUrl.EVENT_COMPLETE, d);
            this._listeners.OnMediaComplete = function(a) {
                c.onMediaComplete(a)
            };
            this._controller.addEventListener("OnMediaComplete", this._listeners.OnMediaComplete);
            break
        }
    },
    removeListeners: function() {
        this._controller.removeEventListener("OnMediaEnd", this._listeners.OnMediaEnd);
        this._controller.removeEventListener("OnMediaPause", this._listeners.OnMediaPause);
        this._controller.removeEventListener("OnMediaUnpause", this._listeners.OnMediaUnpause);
        this._controller.removeEventListener("OnMediaSeek", this._listeners.OnMediaSeek);
        this._controller.removeEventListener("OnMute", this._listeners.OnMute);
        this._controller.removeEventListener("OnMute", this._listeners.OnUnMute);
        this._controller.removeEventListener("OnShowFullScreen", this._listeners.OnShowFullScreen);
        this._controller.removeEventListener("OnMediaClick", this._listeners.OnMediaClick);
        this._controller.removeEventListener("OnMediaComplete", this._listeners.OnMediaComplete)
    },
    addUrlToEvent: function(c, d) {
        if (!this._urls[c]) {
            this._urls[c] = []
        }
        this._urls[c].push(d)
    },
    onReleaseStop: function(b) {
        if (this._urls[$pdk.managers.TrackingUrl.EVENT_STOP] && this._urls[$pdk.managers.TrackingUrl.EVENT_STOP].length) {
            this.sendTrackingEvent(this._urls[$pdk.managers.TrackingUrl.EVENT_STOP])
        }
    },
    onMediaEnd: function(b) {
        this.cleanup()
    },
    onMediaPause: function(b) {
        this._controller.removeEventListener("OnMediaPause", this._listeners.OnMediaPause);
        this.sendTrackingEvent(this._urls[$pdk.managers.TrackingUrl.EVENT_PAUSE])
    },
    onMediaUnpause: function(b) {
        this._controller.removeEventListener("OnMediaUnpause", this._listeners.OnMediaUnpause);
        this.sendTrackingEvent(this._urls[$pdk.managers.TrackingUrl.EVENT_UNPAUSE])
    },
    onMediaSeek: function(f) {
        var d = f.data;
        var e = d.end;
        if (e.currentTime <= 3000) {
            this.sendTrackingEvent(this._urls[$pdk.managers.TrackingUrl.EVENT_REPLAY])
        }
    },
    onMute: function(b) {
        if (b.data) {
            this._controller.removeEventListener("OnMute", this._listeners.OnMute);
            this.sendTrackingEvent(this._urls[$pdk.managers.TrackingUrl.EVENT_MUTE])
        }
    },
    onUnMute: function(b) {
        if (!b.data) {
            this._controller.removeEventListener("OnMute", this._listeners.OnUnMute);
            this.sendTrackingEvent(this._urls[$pdk.managers.TrackingUrl.EVENT_UNMUTE])
        }
    },
    onShowFullScreen: function(c) {
        var d = c.data;
        if (d) {
            this.sendTrackingEvent(this._urls[$pdk.managers.TrackingUrl.EVENT_FULL_SCREEN])
        }
    },
    onMediaClick: function(b) {
        this.sendTrackingEvent(this._urls[$pdk.managers.TrackingUrl.EVENT_CLICK])
    },
    onMediaComplete: function(b) {
        this.sendTrackingEvent(this._urls[$pdk.managers.TrackingUrl.EVENT_COMPLETE])
    },
    cleanup: function() {
        this.removeListeners()
    },
    destroy: function() {
        this.cleanup()
    },
    sendTrackingEvent: function(f) {
        if (!f) {
            return
        }
        var e;
        for (var d = 0;
        d < f.length;
        d++) {
            if (!f[d].hasFired) {
                e = f[d].URL;
                this.dispatchEvent("OnSendUrl", {
                    type: "OnSendUrl",
                    data: e
                });
                f[d].hasFired = true
            }
        }
    }
});
FullScreenManager = Class.extend({
    init: function(e, g, i) {
        this._controller = e;
        this._pbm = g;
        this._controller.registerFunction("showFullScreen", this, this.doShowFullScreen);
        this._controller.registerFunction("getFullScreenState", this, this.getFullScreenState);
        var j = this;
        this.flashFullScreenListener = function(a) {
            j.flashFullScreen(a)
        };
        this._controller.addEventListener("OnFlashFullScreen", this.flashFullScreenListener);
        this._controller.addEventListener("OnReleaseStart", function(a) {
            j.onReleaseStart(a)
        });
        this._controller.addEventListener("OnMediaError", function() {
            j.doShowFullScreen(false)
        });
        this._controller.addEventListener("OnMediaAreaChanged", function() {
            j.onMediaArea(false)
        });
        window.addEventListener("keydown", function(a) {
            if (a.keyCode === 27 && j._isFullWindow) {
                j.doShowFullScreen(false)
            }
        }, false);
        this._isFullScreen = false;
        this._isIFrame = false;
        try {
            this._isIFrame = window.self !== window.top
        } catch (h) {
            this._isIFrame = true
        }
        this._enableFullWindow = i && (!this._isIFrame || $pdk.queue._externalControllerListener);
        this._allowFullScreen = this._controller.getProperty("allowFullScreen") == "false" ? false : true
    },
    onReleaseStart: function(b) {
        if (tpIsIOS() && (this._pbm.videoEngine) && (this._pbm.videoEngine.isFullScreen() != this._isFullScreen)) {
            this._isFullScreen = this._pbm.videoEngine.isFullScreen();
            this.sendEvt()
        }
    },
    onMediaArea: function(b) {
        if (this._isFullScreen != this.isFullScreen()) {
            this._isFullScreen = this.isFullScreen();
            this.sendEvt()
        }
    },
    doShowFullScreen: function(b) {
        if (!this._allowFullScreen && b) {
            return
        }
        if (this.isFullScreen() != b) {
            this._isFullScreen = b;
            tpDebug("Going fullscreen");
            this.setWebkitFullScreen(this._isFullScreen)
        }
    },
    isFullScreen: function() {
        var d = this._pbm.video;
        var c = d.parentNode.parentNode;
        if (this._isFullWindow || (document.webkitIsFullScreen && this._requestedFullScreen) || (document.msFullscreenElement && this._requestedFullScreen) || c.webkitDisplayingFullscreen || d.webkitDisplayingFullscreen || (document.mozFullScreen && this._requestedFullScreen)) {
            return true
        } else {
            return this._requestedFullScreen && this._pbm.videoEngine.isFullScreen()
        }
    },
    fullscreenChange: function(b) {
        if (!b.isFullScreen) {
            this._isFullScreen = false;
            this.sendEvt()
        }
    },
    setWebkitFullScreen: function(p) {
        this._isFullScreen = p;
        tpDebug("Trying to set fullscreen to " + p);
        var j = (navigator.userAgent.indexOf("Windows") > -1 && navigator.userAgent.indexOf("AppleWebKit") > -1 && navigator.userAgent.toLowerCase().indexOf("chrome") === -1);
        var n = this._pbm.video;
        var l = this._pbm.videoEngine;
        var m = n.parentNode.parentNode;
        if (m.webkitRequestFullScreen && !j) {
            tpDebug("WebKit fullscreen API is apparently supported");
            if ((document.webkitIsFullScreen || m.webkitDisplayingFullscreen) && !p) {
                document.webkitCancelFullScreen()
            } else {
                if (p) {
                    try {
                        this.handlerFired = false;
                        if (!this.fsChangeHandler) {
                            this.fsChangeHandler = function() {
                                o._isFullScreen = ((document.webkitIsFullScreen && o._requestedFullScreen) || n.webkitDisplayingFullscreen || m.webkitDisplayingFullscreen) == true;
                                tpDebug("got webkitfullscreenchange event, isFullscreen is " + o._isFullScreen);
                                if (!o._isFullScreen) {
                                    m.removeEventListener("webkitfullscreenchange", this.fsChangeHandler)
                                }
                                if (o._requestedFullScreen) {
                                    if (!o._isFullScreen) {
                                        o._requestedFullScreen = false
                                    }
                                    o.sendEvt()
                                }
                            }
                        }
                        var o = this;
                        this._requestedFullScreen = true;
                        m.removeEventListener("webkitfullscreenchange", this.fsChangeHandler);
                        m.addEventListener("webkitfullscreenchange", this.fsChangeHandler);
                        setTimeout(this.fsChangeHandler, 3000);
                        m.webkitRequestFullScreen();
                        o.sendEvt()
                    } catch (k) {
                        this._requestedFullScreen = false;
                        m.removeChild(blocker);
                        tpDebug("Switching to full screen from Javascript is not supported in this browser unless it's initiated by a user click.", this.controller.id, "FullScreenManager", "error");
                        return
                    }
                }
            }
            return
        } else {
            if (m.mozRequestFullScreen) {
                tpDebug("Moz fullscreen API is apparently supported");
                if (document.mozFullScreen && !p) {
                    try {
                        document.mozCancelFullScreen()
                    } finally {
                        if (document.mozFullScreen) {
                            tpDebug("Couldn't exit with mozCancelFullScreen trying to hack the DOM");
                            var e = m.parentNode;
                            e.removeChild(m);
                            e.appendChild(m);
                            tpDebug("Done trying to hack DOM");
                            document.removeEventListener("mozfullscreenchange", this.callback);
                            this.callback = undefined;
                            this.sendEvt()
                        }
                    }
                } else {
                    if (p) {
                        try {
                            this._requestedFullScreen = true;
                            m.mozRequestFullScreen()
                        } catch (k) {
                            tpDebug("Switching to full screen from Javascript is not supported in this browser unless it's initiated by a user click.", this.controller.id, "FullScreenManager", "error");
                            return
                        }
                        this.sendEvt();
                        var o = this;
                        document.removeEventListener("mozfullscreenchange", this.callback);
                        this.callback = function() {
                            o._isFullScreen = document.mozFullScreen && o._requestedFullScreen;
                            if (!o._isFullScreen) {
                                document.removeEventListener("mozfullscreenchange", o.callback);
                                o.callback = undefined
                            }
                            if (o._requestedFullScreen) {
                                if (!o._isFullScreen) {
                                    o._requestedFullScreen = false
                                }
                                o.sendEvt()
                            }
                        };
                        document.addEventListener("mozfullscreenchange", this.callback)
                    }
                }
                return
            }
        }
        if (!this._isIFrame && m.msRequestFullscreen) {
            tpDebug("MS fullscreen API is apparently supported");
            if ((document.msFullscreenElement) && !p) {
                document.msExitFullscreen()
            } else {
                if (p) {
                    try {
                        this.handlerFired = false;
                        var o = this;
                        if (!this.fsChangeHandler) {
                            this.fsChangeHandler = function() {
                                o._isFullScreen = (document.msFullscreenElement != null);
                                tpDebug("got msfullscreenchange event, isFullscreen is " + o._isFullScreen);
                                if (!o._isFullScreen) {
                                    document.removeEventListener("MSFullscreenChange", o.fsChangeHandler)
                                }
                                if (o._requestedFullScreen) {
                                    if (!o._isFullScreen) {
                                        o._requestedFullScreen = false
                                    }
                                    o.sendEvt()
                                }
                            }
                        }
                        this._requestedFullScreen = true;
                        document.removeEventListener("MSFullscreenChange", this.fsChangeHandler);
                        document.addEventListener("MSFullscreenChange", this.fsChangeHandler);
                        setTimeout(this.fsChangeHandler, 3000);
                        m.msRequestFullscreen();
                        o.sendEvt()
                    } catch (k) {
                        m.removeChild(blocker);
                        tpDebug("Switching to full screen from Javascript is not supported in this browser unless it's initiated by a user click.", this.controller.id, "FullScreenManager", "error");
                        return
                    }
                }
            }
            return
        } else {
            if (this._enableFullWindow || ($pdk.isIE && this._isIFrame)) {
                tpDebug("No fullscreen API available, using full window");
                if (!this.playerContainerStyle) {
                    this.playerContainerStyle = {}
                }
                this._isFullWindow = false;
                if (p) {
                    this.playerContainerStyle.position = m.style.position;
                    this.playerContainerStyle.top = m.style.top;
                    this.playerContainerStyle.left = m.style.left;
                    this.playerContainerStyle.bottom = m.style.bottom;
                    this.playerContainerStyle.right = m.style.right;
                    this.playerContainerStyle.marginTop = m.style.marginTop;
                    this.playerContainerStyle.marginLeft = m.style.marginLeft;
                    this.playerContainerStyle.marginBottom = m.style.marginBottom;
                    this.playerContainerStyle.marginRight = m.style.marginRight;
                    this.playerContainerStyle.zIndex = $pdk.jQuery(m).parents(".tpPlayer")[0].style.zIndex;
                    this.playerContainerStyle.overflowX = $pdk.jQuery(m).parents(".tpPlayer")[0].style.overflowX;
                    this.playerContainerStyle.overflowY = $pdk.jQuery(m).parents(".tpPlayer")[0].style.overflowY;
                    $pdk.jQuery(m).parents(".tpPlayer")[0].style.zIndex = 10000;
                    m.style.position = "fixed";
                    m.style.top = "0px";
                    m.style.left = "0px";
                    m.style.bottom = "0px";
                    m.style.right = "0px";
                    m.style.marginTop = "0px";
                    m.style.marginLeft = "0px";
                    m.style.marginBottom = "0px";
                    m.style.marginRight = "0px";
                    $pdk.jQuery(m).parents(".tpPlayer")[0].style.overflowX = "visible";
                    $pdk.jQuery(m).parents(".tpPlayer")[0].style.overflowY = "visible";
                    this._isFullWindow = true
                } else {
                    m.style.position = this.playerContainerStyle.position;
                    m.style.top = this.playerContainerStyle.top;
                    m.style.left = this.playerContainerStyle.left;
                    m.style.bottom = this.playerContainerStyle.bottom;
                    m.style.right = this.playerContainerStyle.right;
                    m.style.marginTop = this.playerContainerStyle.marginTop;
                    m.style.marginLeft = this.playerContainerStyle.marginLeft;
                    m.style.marginBottom = this.playerContainerStyle.marginBottom;
                    m.style.marginRight = this.playerContainerStyle.marginRight;
                    m.style.zIndex = this.playerContainerStyle.zIndex;
                    $pdk.jQuery(m).parents(".tpPlayer")[0].style.zIndex = this.playerContainerStyle.zIndex;
                    $pdk.jQuery(m).parents(".tpPlayer")[0].style.overflowX = this.playerContainerStyle.overflowX;
                    $pdk.jQuery(m).parents(".tpPlayer")[0].style.overflowY = this.playerContainerStyle.overflowY
                }
                if (this._isIFrame) {
                    if (p) {
                        $pdk.controller.requestIFrameFullWindow()
                    } else {
                        $pdk.controller.cancelIFrameFullWindow()
                    }
                    this._isFullWindow = p
                }
                this._isFullScreen = p;
                var o = this;
                setTimeout(function() {
                    o.sendEvt()
                }, 10);
                return
            } else {
                try {
                    tpDebug("Trying to set VideoEngine fullscreen to " + p);
                    if (!this.changeListener) {
                        var o = this;
                        this.changeListener = function(a) {
                            o.fullscreenChange(a)
                        };
                        this._pbm.videoEngine.addEventListener("FULLSCREEN", this.changeListener)
                    }
                    this._requestedFullScreen = p;
                    l.setFullScreen(p)
                } catch (k) {
                    tpDebug("VideoEngine won't support fullscreen");
                    return
                }
            }
        }
        this.sendEvt()
    },
    sendEvt: function() {
        tpDebug("FullScreen is now:" + this._isFullScreen);
        this._controller.dispatchEvent("OnShowFullScreen", this._isFullScreen)
    },
    getFullScreenState: function() {
        var b;
        if (tpIsAndroid() || this._pbm.video.webkitDisplayingFullscreen || document.webkitFullscreenElement || document.msFullscreenElement || this._isFullWindow) {
            b = true
        } else {
            b = false
        }
        if (b != this._isFullScreen) {
            this._isFullScreen = b;
            this.sendEvt()
        }
        return this._isFullScreen
    }
});
$pdk.ns("$pdk.plugin");
$pdk.plugin.MetadataUrlManager = $pdk.extend(function() {}, {
    constructor: function(b) {
        this._plugins = [];
        this._currentQueue = [];
        this._context = {
            complete: false,
            found: false
        };
        this._controller = b;
        this._controller.registerFunction("registerMetadataUrlPlugIn", this, this.registerMetadataUrlPlugIn);
        this._controller.registerFunction("setMetadataUrl", this, this.setMetadataUrl);
        this._controller.registerFunction("setUrl", this, this.setUrl)
    },
    setUrl: function(f, e, d) {
        this._context = {
            releaseUrl: f,
            isPreview: e,
            callback: d,
            complete: false,
            found: false
        };
        this._currentQueue = this._plugins.concat();
        if (this._currentQueue.length === 0) {
            d(f);
            return true
        } else {
            if (!this._processNextPlugin()) {
                d(f);
                return true
            } else {
                return false
            }
        }
    },
    setMetadataUrl: function(b) {
        if (this._currentQueue.length === 0) {
            if (!this._context.complete) {
                this._context.releaseUrl = b;
                this._context.callback(b);
                this._context.complete = true
            }
        } else {
            this._context.releaseUrl = b;
            if (!this._processNextPlugin()) {
                this._context.callback(this._context.releaseUrl);
                this._context.complete = true
            }
        }
    },
    registerMetadataUrlPlugIn: function(c, d) {
        if (typeof(c.rewriteMetadataUrl) !== "function") {
            throw new Error('Attempt to register MetadataUrlPlugIn with non-conforming interface (plugin method "rewriteMetadataUrl" does not exist or is not a real method)')
        } else {
            if (c.rewriteMetadataUrl.length !== 2) {
                throw new Error('Attempt to register MetadataUrlPlugIn with non-conforming interface ("rewriteMetadataUrl" method does not take 2 parameters)')
            }
        }
        this._plugins.push({
            plugin: c,
            priority: Number(d)
        });
        this._plugins = this._sortPluginsByPriority(this._plugins)
    },
    _processNextPlugin: function() {
        var c = false,
            d;
        while (!c && this._currentQueue.length > 0) {
            d = this._currentQueue.shift();
            c = d.plugin.rewriteMetadataUrl(this._context.releaseUrl, this._context.isPreview)
        }
        this._context.found = c ? true : this._context.found;
        return c
    },
    _sortPluginsByPriority: function(b) {
        return b.sort(function(a, e) {
            return a.priority - e.priority
        })
    }
});
AdManager = Class.extend({
    adPatternInfo: {
        cookieName: "",
        cookiePrefix: "tpPdk",
        adPolicy: 0,
        mediaCount: 0,
        chapterCount: 0
    },
    countedRelease: false,
    init: function(d) {
        this.controller = d;
        d.registerFunction("setAds", this, this.setAds);
        d.registerFunction("registerAdPlugIn", this, this.registerAdPlugIn);
        d.registerFunction("getTimeSinceLastAd", this, this.getTimeSinceLastAd);
        this.defaultAdPattern = d.getProperty("adPattern");
        this.timeSinceLastAd = 0;
        this.plugins = new Array();
        var c = this;
        this.getAdPolicy(d.component.releaseUrl);
        this.controller.addEventListener("OnMediaStart", function(a) {
            c.onMediaStart.apply(c, [a])
        });
        this.controller.addEventListener("OnReleaseStart", function(a) {
            c.onReleaseStart.apply(c, [a])
        })
    },
    setAds: function(b) {
        if (b && (tpIsIOS() || tpIsAndroid() && this.controller.isPrefetch())) {
            b.isAd = true
        }
        this.controller.insertPlaylist(b)
    },
    registerAdPlugIn: function(f, e, h) {
        this.plugins.push({
            adPlugIn: f,
            adType: e,
            priority: h
        });

        function g(a, b) {
            if (a.priority < b.priority) {
                return -1
            } else {
                if (a.priority > b.priority) {
                    return 1
                } else {
                    return 0
                }
            }
        }
        this.plugins.sort(g)
    },
    getTimeSinceLastAd: function() {
        return this.timeSinceLastAd
    },
    isAd: function(c) {
        if (c.baseClip.isAd) {
            return true
        } else {
            var d = this.adPlugInsIsAd(c);
            c.baseClip.isAd = d;
            return d
        }
    },
    checkAd: function(d) {
        tpDebug("We have " + this.plugins.length + " ad plugins to check");
        for (var e = 0;
        e < this.plugins.length;
        e++) {
            var f = this.plugins[e].adPlugIn.checkAd.apply(this.plugins[e].adPlugIn, [d]);
            if (f) {
                return true
            }
        }
        return false
    },
    adPlugInsIsAd: function(c) {
        for (var d = 0;
        d < this.plugins.length;
        d++) {
            if (this.plugins[d].adPlugIn.isAd(c)) {
                return true
            }
        }
        return false
    },
    validateAd: function(e) {
        if (e.hasPlayed) {
            return false
        }
        var f;
        if (e.baseClip.hasOwnProperty("contentCustomData") && e.baseClip.contentCustomData.hasOwnProperty("adPattern")) {
            f = e.baseClip.contentCustomData.adPattern
        } else {
            f = this.defaultAdPattern
        }
        if (f && f != "") {
            var d = this.processAdPattern(f, e.baseClip.isMid);
            if (!d) {
                return false
            }
        }
        return true
    },
    onMediaStart: function(c) {
        var d = c.data.baseClip.isAd ? "adplay" : "videoplay";
        if (d == "videoplay" && this.adPatternInfo.cookieName != "") {
            if (!this.countedRelease) {
                this.adPatternInfo.mediaCount++;
                this.countedRelease = true
            }
            this.adPatternInfo.chapterCount++;
            this.setCookie(this.adPatternInfo.cookieName, this.adPatternInfo.mediaCount + "|" + this.adPatternInfo.chapterCount, null, "/")
        }
    },
    onReleaseStart: function(b) {
        this.countedRelease = false
    },
    getAdPolicy: function(f) {
        var e = new RegExp("[\\?&]policy=([^&#]*)");
        var d = e.exec(f);
        if (d) {
            this.adPatternInfo.adPolicy = d[1]
        }
    },
    processAdPattern: function(p, n) {
        var k = new RegExp("count:([0-9]*)[|]([0-9]*)");
        var o = k.exec(p);
        if (o) {
            var j = o[1];
            var r = o[2];
            this.adPatternInfo.cookieName = this.adPatternInfo.cookiePrefix + "_" + this.adPatternInfo.adPolicy;
            var q = this.getCookie(this.adPatternInfo.cookieName);
            if (q) {
                q = q.split("|")
            }
            if (q && q.length > 1) {
                this.adPatternInfo.mediaCount = q[0];
                this.adPatternInfo.chapterCount = q[1]
            }
            if (isNaN(this.adPatternInfo.chapterCount)) {
                this.adPatternInfo.chapterCount = 0
            }
            var l = r;
            if (!n && !this.adPatternInfo.mediaCount) {
                this.adPatternInfo.mediaCount = 0;
                l = j
            }
            if (n && !this.adPatternInfo.chapterCount) {
                this.adPatternInfo.chapterCount = 0;
                l = j
            }
            var m = (n ? this.adPatternInfo.chapterCount : this.adPatternInfo.mediaCount);
            if (m < l) {
                return false
            }
        }
        if (n) {
            this.adPatternInfo.chapterCount = 0
        } else {
            this.adPatternInfo.mediaCount = 0
        }
        return true
    },
    setCookie: function(h, k, g, i) {
        var j = new Date();
        j.setTime(j.getTime() + (g * 3600 * 1000));
        var l = escape(k) + ((g == null) ? "" : "; expires=" + j.toUTCString()) + ((i == null) ? "" : "; path=" + i);
        document.cookie = h + "=" + l
    },
    getCookie: function(e) {
        var h = document.cookie;
        var g = h.indexOf(" " + e + "=");
        if (g == -1) {
            g = h.indexOf(e + "=")
        }
        if (g == -1) {
            h = null
        } else {
            g = h.indexOf("=", g) + 1;
            var f = h.indexOf(";", g);
            if (f == -1) {
                f = h.length
            }
            h = unescape(h.substring(g, f))
        }
        return h
    }
});
/*!
 * Bowser - a browser detector
 * https://github.com/ded/bowser
 * MIT License | (c) Dustin Diaz 2014
 */
!
function(d, c) {
    $pdk._browserCheck = d(c())
}(function(b) {
    return function(p) {
        if (!p || p.length == 0) {
            return false
        }
        var a, l, r, o, m, q, i;
        for (var n = 0;
        n < p.length;
        n++) {
            a = p[n];
            l = a.browser;
            r = a.version;
            hasVersion = r !== null && r !== undefined;
            o = a.os;
            hasOS = o !== null && o !== undefined;
            m = a.osversion;
            i = a.device;
            q = i !== null && i !== undefined;
            hasOSversion = m !== null && m !== undefined;
            if (b.name.toLowerCase() == l.toLowerCase() && (!hasVersion || (hasVersion && parseFloat(b.version) >= r)) && (!hasOS || (hasOS && b[o.toLowerCase()])) && (!hasOSversion || (hasOSversion && parseFloat(b.osversion) >= m)) && (!q || (q && b.device == i))) {
                return true
            }
        }
        return false
    }
}, function() {
    var d = true;

    function e(u) {
        function q(g) {
            var h = u.match(g);
            return (h && h.length > 1 && h[1]) || ""
        }
        var b = q(/(ipod|iphone|ipad)/i).toLowerCase(),
            c = /like android/i.test(u),
            s = !c && /android/i.test(u),
            v = q(/version\/(\d+(\.\d+)?)/i),
            o = /tablet/i.test(u),
            t = !o && /[^-]mobi/i.test(u),
            a;
        if (/opera|opr/i.test(u)) {
            a = {
                name: "Opera",
                opera: d,
                version: v || q(/(?:opera|opr)[\s\/](\d+(\.\d+)?)/i)
            }
        } else {
            if (/windows phone/i.test(u)) {
                a = {
                    name: "Windows Phone",
                    windowsphone: d,
                    msie: d,
                    version: q(/iemobile\/(\d+(\.\d+)?)/i)
                }
            } else {
                if (/msie|trident/i.test(u)) {
                    a = {
                        name: "Internet Explorer",
                        msie: d,
                        version: q(/(?:msie |rv:)(\d+(\.\d+)?)/i)
                    }
                } else {
                    if (/chrome|crios|crmo/i.test(u)) {
                        a = {
                            name: "Chrome",
                            chrome: d,
                            version: q(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)
                        }
                    } else {
                        if (b) {
                            a = {
                                name: b == "iphone" ? "iPhone" : b == "ipad" ? "iPad" : "iPod"
                            };
                            if (v) {
                                a.version = v
                            }
                        } else {
                            if (/firefox|iceweasel/i.test(u)) {
                                a = {
                                    name: "Firefox",
                                    firefox: d,
                                    version: q(/(?:firefox|iceweasel)[ \/](\d+(\.\d+)?)/i)
                                };
                                if (/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(u)) {
                                    a.firefoxos = d
                                }
                            } else {
                                if (/silk/i.test(u)) {
                                    a = {
                                        name: "Amazon Silk",
                                        silk: d,
                                        version: q(/silk\/(\d+(\.\d+)?)/i)
                                    }
                                } else {
                                    if (s) {
                                        a = {
                                            name: "Android",
                                            version: v
                                        }
                                    } else {
                                        if (/blackberry|\bbb\d+/i.test(u) || /rim\stablet/i.test(u)) {
                                            a = {
                                                name: "BlackBerry",
                                                blackberry: d,
                                                version: v || q(/blackberry[\d]+\/(\d+(\.\d+)?)/i)
                                            }
                                        } else {
                                            if (/safari/i.test(u)) {
                                                a = {
                                                    name: "Safari",
                                                    safari: d,
                                                    version: v
                                                }
                                            } else {
                                                a = {}
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (/(apple)?webkit/i.test(u)) {
            a.name = a.name || "Webkit";
            a.webkit = d;
            if (!a.version && v) {
                a.version = v
            }
        } else {
            if (!a.opera && /gecko\//i.test(u)) {
                a.name = a.name || "Gecko";
                a.gecko = d;
                a.version = a.version || q(/gecko\/(\d+(\.\d+)?)/i)
            }
        }
        if (s || a.silk) {
            a.android = d
        } else {
            if (b) {
                a[b] = d;
                a.ios = d
            }
        }
        var r = "";
        if (b) {
            r = q(/os (\d+([_\s]\d+)*) like mac os x/i);
            r = r.replace(/[_\s]/g, ".")
        } else {
            if (s) {
                r = q(/android[ \/-](\d+(\.\d+)*)/i)
            } else {
                if (a.windowsphone) {
                    r = q(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i)
                } else {
                    if (a.webos) {
                        r = q(/(?:web|hpw)os\/(\d+(\.\d+)*)/i)
                    } else {
                        if (a.blackberry) {
                            r = q(/rim\stablet\sos\s(\d+(\.\d+)*)/i)
                        } else {
                            if (a.bada) {
                                r = q(/bada\/(\d+(\.\d+)*)/i)
                            } else {
                                if (a.tizen) {
                                    r = q(/tizen[\/\s](\d+(\.\d+)*)/i)
                                }
                            }
                        }
                    }
                }
            }
        }
        if (r) {
            a.osversion = r
        }
        var p = r.split(".")[0];
        if (o || b == "ipad" || (s && (p == 3 || (p == 4 && !t))) || a.silk) {
            a.tablet = d
        } else {
            if (t || b == "iphone" || b == "ipod" || s || a.blackberry || a.webos || a.bada) {
                a.mobile = d
            }
        }
        a.device = (a.tablet || a.mobile) ? d : false;
        return a
    }
    var f = e(typeof navigator !== "undefined" ? navigator.userAgent : "");
    f._detect = e;
    return f
});
tpCategoryList = PDKComponent.extend({
    _generateExportedMarkup: function() {
        return '<div id="' + this.id + '" class="categoryList"></div>'
    },
    init: function(f, d, e) {
        this.width = d;
        this.height = e;
        this.id = f;
        this.pretty = !navigator.userAgent.match(/MSIE 8/) && !navigator.userAgent.match(/MSIE 7/) && !navigator.userAgent.match(/MSIE 6/);
        this.ALL = {
            id: "",
            value: "all",
            order: "1",
            title: "All",
            fullTitle: "All"
        };
        this.MOST_POPULAR = {
            id: "",
            value: "mostPopular",
            order: "2",
            title: "Most Popular",
            fullTitle: "MostPopular"
        };
        this.FAVORITES = {
            id: "",
            value: "favorites",
            order: "3",
            title: "Favorites",
            fullTitle: "Favorites"
        };
        this.TOP_RATED = {
            id: "",
            value: "topRated",
            order: "4",
            title: "Top Rated",
            fullTitle: "TopRated"
        };
        this.RELATED = {
            id: "",
            value: "related",
            order: "5",
            title: "Related Items",
            fullTitle: "Related"
        };
        if ($pdk._isDevMode) {
            this.pretty = false
        }
        this.controller = new ComponentController(f);
        this.deferredController = $pdk.shell.Registry.getInstance().getShells().get(f)._deferredController;
        this.eventQueue = []
    },
    initialize: function() {
        var b = this;
        if (this.scopes) {
            this.controller.scopes = [this.id].concat(this.scopes.split(","))
        } else {
            this.controller.scopes = [this.id, "default"]
        }
        if (this.allChoiceLabel) {
            this.ALL.title = this.allChoiceLabel
        }
        if (this.mostPopularChoiceLabel) {
            this.MOST_POPULAR.title = this.mostPopularChoiceLabel
        }
        if (this.favoritesChoiceLabel) {
            this.FAVORITES.title = this.favoritesChoiceLabel
        }
        if (this.topRatedChoiceLabel) {
            this.TOP_RATED.title = this.topRatedChoiceLabel
        }
        if (this.relatedChoiceLabel) {
            this.RELATED.title = this.relatedChoiceLabel
        }
        this.controller.addEventListener("OnRefreshCategoryModel", function() {
            b.handleCategoryModelRefreshed.apply(b, arguments)
        });
        this.deferredController.addEventListener("OnRefreshCategoryModel", function() {
            b.handleCategoryModelRefreshed.apply(b, arguments)
        });
        this.controller.addEventListener("OnRefreshReleaseModel", function() {
            b.handleReleaseModelRefreshed.apply(b, arguments)
        });
        this.deferredController.addEventListener("OnRefreshReleaseModel", function() {
            b.handleReleaseModelRefreshed.apply(b, arguments)
        });
        this.currentIndex = -1
    },
    write: function(c) {
        if (this.autoLoad === undefined) {
            this.autoLoad = true
        }
        if (c) {
            this.container = c
        } else {
            document.write('<div id="' + this.id + '" class="categoryList"></div>');
            this.container = document.getElementById(this.id);
            this.container.style.width = this.width;
            this.container.style.height = this.height
        }
        this.style = document.createElement("style");
        var d = document.getElementsByTagName("head")[0];
        this.style.setAttribute("type", "text/css");
        d.appendChild(this.style);
        this.initialize()
    },
    _bindElement: function(b) {
        if (this.autoLoad == null) {
            this.autoLoad = true
        }
        this.container = b;
        this.container.style.width = this.width;
        this.container.style.height = this.height;
        tpController.ready();
        return this.container
    },
    categoryUrlsAreEqual: function(d, e, f) {
        d = d.replace(/(.*)\?.*/, "$1");
        e = e.replace(/(.*)\?.*/, "$1");
        return d === e || d.indexOf(f) >= 0
    },
    setTileSelected: function(f) {
        var e = -1;
        this.currentCategory = f;
        if (!this.sortedEntries) {
            return
        }
        for (var h = 0;
        h < this.sortedEntries.length;
        h++) {
            if (f == this.sortedEntries[h].title) {
                e = h;
                var g = this.items[h];
                if (g !== undefined) {
                    g.className = "tpCategory tpCategorySelected"
                }
            } else {
                var g = this.items[h];
                if (g !== undefined) {
                    g.className = "tpCategory"
                }
            }
        }
        return e
    },
    refresh: function() {
        var g = document.createElement("div");
        var h = document.createElement("div");
        var e = this.framecolor ? this.framecolor : "#000000";
        var f = this.backgroundcolor ? this.backgroundcolor : "#ffffff";
        e = e.replace("0x", "#");
        f = f.replace("0x", "#");
        g.className = "tpBackground";
        g.style.backgroundColor = f;
        g.style.borderColor = e;
        h.className = "tpBackgroundShine tpGradient";
        this.container.innerHTML = "";
        this.container.appendChild(g);
        this.container.appendChild(h)
    },
    isPrefetch: function() {
        return this.controller.isPrefetch()
    },
    isMostPopularRequest: function(b) {
        if (b.indexOf("&sort=updated%7Cdesc") >= 0 || b.indexOf("?sort=updated%7Cdesc") >= 0) {
            return true
        } else {
            return false
        }
    },
    handleReleaseModelRefreshed: function(b) {
        if (b.data.category) {
            this.setTileSelected(b.data.category)
        } else {
            if (b.data.search) {
                this.setTileSelected(null)
            } else {
                if (b.data.requestUrl && this.isMostPopularRequest(b.data.requestUrl)) {
                    this.setTileSelected(this.mostPopularChoiceLabel)
                } else {
                    this.setTileSelected(this.allChoiceLabel)
                }
            }
        }
    },
    handleCategoryModelRefreshed: function(L) {
        if (this.paging) {
            this.eventQueue.push(L);
            return
        }
        this.loading = false;
        $pdk.jQuery(this.loadingIndicator).stop();
        $pdk.jQuery(this.loadingIndicator).remove();
        var W = L.data;
        var h = (this.feed && this.feed.search !== W.search ? true : false);
        var J;
        var V;
        var H;
        var a;
        if (this.feed && this.feed.range && W && W.range) {
            if (W.entries.length > 0) {
                this.paging = true
            }
            if (this.feed.range.startIndex < W.range.startIndex) {
                this.animateForward = true
            } else {
                if (this.feed.range.startIndex > W.range.startIndex) {
                    this.animateForward = false
                }
            }
        } else {
            this.animateForward = false
        }
        this.feed = W;
        this.loadedTiles = [];
        this.numTiles = W.entries.length;
        if (!this.currentPage || h || !this.pretty) {
            this.refresh();
            this.currentPage = null;
            this.previousPage = null
        }
        var X = -1;
        var N = -1;
        var Q = 0;
        if (this.hasoverlay == "true") {
            var O = document.createElement("div");
            O.className = "tpCategoryListOverlay";
            this.container.appendChild(O);
            Q = O.clientHeight
        }
        var D = document.createElement("ul");
        if (this.flow == "horizontal") {
            D.className = "tpMenu"
        } else {
            D.className = "tpList"
        }
        this.container.appendChild(D);
        $pdk.jQuery(D).css("margin-top", parseInt($pdk.jQuery(D).css("margin-top")) + Q);
        D.ontouchstart = function(b) {
            this.startX = b.changedTouches[0].pageX;
            this.startY = b.changedTouches[0].pageY
        };
        D.ontouchend = function(b) {
            if (this.startX && ((this.startX - b.changedTouches[0].pageX) > 100)) {
                $pdk.controller.nextRange()
            } else {
                if (this.startX && ((b.changedTouches[0].pageX - this.startX) > 100)) {
                    $pdk.controller.previousRange()
                }
            }
        };
        this.items = [];
        var i, E, a, w, F, R, U, H, M;
        var T = ($pdk.jQuery(D).innerWidth());
        var G = ($pdk.jQuery(D).innerHeight());
        var P = {};
        for (var I = 0;
        I < W.entries.length;
        I++) {
            P[W.entries[I].id] = W.entries[I]
        }
        this.sortedEntries = [];
        for (var I = 0;
        I < W.entries.length;
        I++) {
            if (P[W.entries[I].parentId]) {
                console.log("skipping non root cat: " + W.entries[I].title)
            } else {
                this.sortedEntries.push(W.entries[I])
            }
        }
        this.sortedEntries.sort(function(b, c) {
            if (parseInt(b.order, 10) == parseInt(c.order, 10)) {
                if (b.title < c.title) {
                    return -1
                } else {
                    if (b.title > c.title) {
                        return 1
                    } else {
                        return 0
                    }
                }
            } else {
                return parseInt(b.order, 10) - parseInt(c.order, 10)
            }
        });
        if (this.allChoiceIndex > 0) {
            this.sortedEntries.splice(this.allChoiceIndex - 1, 0, this.ALL)
        }
        if (this.mostPopularChoiceIndex > 0) {
            this.sortedEntries.splice(this.mostPopularChoiceIndex - 1, 0, this.MOST_POPULAR)
        }
        if (this.favoritesChoiceIndex > 0) {
            this.sortedEntries.splice(this.favoritesChoiceIndex - 1, 0, this.FAVORITES)
        }
        if (this.topRatedChoiceIndex > 0) {
            this.sortedEntries.splice(this.topRatedChoiceIndex - 1, 0, this.TOP_RATED)
        }
        for (var I = 0;
        I < this.sortedEntries.length;
        I++) {
            i = document.createElement("li");
            E = document.createElement("div");
            a = document.createElement("a");
            w = document.createElement("div");
            R = document.createElement("div");
            U = document.createElement("div");
            H = document.createElement("h2");
            i.className = "tpCategory";
            if (this.pretty) {
                E.className = "tpShine"
            }
            w.className = "tpInfo";
            R.className = "tpMetadata";
            U.className = "tpGroup";
            H.className = "tpTitle";
            i.appendChild(E);
            i.appendChild(a);
            a.appendChild(w);
            if (this.showTitle) {
                this.showMetadata = true;
                w.appendChild(R);
                R.appendChild(U);
                U.appendChild(H)
            }
            D.appendChild(i);
            this.items.push(i);
            if (this.flow == "horizontal") {
                i.style.height = G + "px"
            } else {
                i.style.width = T + "px"
            }
            a.style.borderBottomWidth = "0px";
            a.href = "#";
            a.category = this.sortedEntries[I];
            a.index = I;
            var K = this;
            a.onclick = function() {
                if (K.currentClip && K.currentClip.baseClip && K.currentClip.baseClip.noSkip) {
                    return
                }
                K.wasSetByCategoryList = true;
                K.currentIndex = this.index;
                K.controller.dispatchEvent("OnCategorySelected", this.category.fullTitle);
                if (this.category.fullTitle == K.MOST_POPULAR.fullTitle) {
                    K.controller.refreshReleaseModel("", null, null, null)
                } else {
                    if (this.category.fullTitle == "Favorites" || this.category.fullTitle == "TopRated" || this.category.fullTitle == "Related") {} else {
                        if (this.category.fullTitle == "All") {
                            K.controller.refreshReleaseModel("", null, null, null)
                        } else {
                            K.controller.refreshReleaseModel(this.category.title, null, null, null, null, null, null, null, "")
                        }
                    }
                }
                return false
            };
            if (this.showTitle) {
                H.innerHTML += this.sortedEntries[I].title
            }
            if ($pdk.jQuery(i).offset().top + $pdk.jQuery(i).height() > $pdk.jQuery(D).offset().top + $pdk.jQuery(D).innerHeight()) {
                this.items.pop();
                D.removeChild(i);
                break
            } else {
                if ($pdk.jQuery(i).offset().left + $pdk.jQuery(i).width() > $pdk.jQuery(D).offset().left + $pdk.jQuery(D).innerWidth()) {
                    this.items.pop();
                    D.removeChild(i);
                    break;
                    if (!this.more) {}
                }
            }
        }
        var K = this;
        setTimeout(function() {
            K.doInitialLoad(W)
        }, 1);
        if (this.style && !this.createdColorizationStyles) {
            this.createdColorizationStyles = true;
            var S = "";
            if (this.itembackgroundcolor) {
                S += "#" + this.id + ".tpCategoryList>ul .tpCategory, ul#" + this.id + ".tpCategoryList .tpCategory { background-color: #" + this.itembackgroundcolor.substr(2) + "; }";
                S += "#" + this.id + ".tpCategoryList>ul .tpCategory .tpMetadata, ul#" + this.id + ".tpCategoryList .tpCategory { background-color: #" + this.itembackgroundcolor.substr(2) + "; }"
            }
            if (this.itemframecolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategory { border-color: #" + this.itemframecolor.substr(2) + "; }";
                S += "#" + this.id + ".tpCategoryList .tpCategory a { border-color: #" + this.itemframecolor.substr(2) + "; }";
                S += "#" + this.id + ".tpCategoryList .tpCategory .tpShine { background-color: #" + this.itemframecolor.substr(2) + "; }";
                S += "#" + this.id + ".tpCategoryList .tpCategory .tpShine { border-color: #" + this.itemframecolor.substr(2) + "; }";
                S += "#" + this.id + ".tpCategoryList ul { border-color: #" + this.itemframecolor.substr(2) + "; }";
                S += "#" + this.id + ".tpCategoryList ol { border-color: #" + this.itemframecolor.substr(2) + "; }"
            }
            if (this.textframecolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategory .tpMetadata { border-color: #" + this.textframecolor.substr(2) + "; }";
                S += "#" + this.id + ".tpCategoryList .tpCategory a .tpMetadata .tpGroup { border-color: #" + this.textframecolor.substr(2) + "; }"
            }
            if (this.textframeselectedcolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategorySelected .tpMetadata { border-color: #" + this.textframeselectedcolor.substr(2) + "; }";
                S += "#" + this.id + ".tpCategoryList .tpCategorySelected a .tpMetadata .tpGroup { border-color: #" + this.textframeselectedcolor.substr(2) + "; }"
            }
            if (this.textcolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategory a { color: #" + this.textcolor.substr(2) + "; }"
            }
            if (this.thumbnailframecolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategory .tpThumbnail { border-color: #" + this.thumbnailframecolor.substr(2) + "; }"
            }
            if (this.thumbnailbackgroundcolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategory .tpThumbnail { background-color: #" + this.thumbnailbackgroundcolor.substr(2) + "; }";
                S += "#" + this.id + ".tpCategoryList .tpCategory .tpThumbnail img { background-color: #" + this.thumbnailbackgroundcolor.substr(2) + "; }"
            }
            if (this.thumbnailpaddingcolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategory .tpThumbnail { background-color: #" + this.thumbnailpaddingcolor.substr(2) + "; }"
            }
            if (this.framecolor) {}
            if (this.texthighlighthovercolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategory:hover .tpShine { background-color: #" + this.texthighlighthovercolor.substr(2) + "; }";
                S += "#" + this.id + ".tpCategoryList .tpCategory:hover .tpShine { border-color: #" + this.texthighlighthovercolor.substr(2) + "; }"
            }
            if (this.texthovercolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategory:hover a { color: #" + this.texthovercolor.substr(2) + "; }"
            }
            if (this.texthighlighthovercolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategory:hover a .tpMetadata .tpGroup { border-color: #" + this.texthighlighthovercolor.substr(2) + " !important; }"
            }
            if (this.thumbnailhighlighthovercolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategory:hover a .tpThumbnail { border-color: #" + this.thumbnailhighlighthovercolor.substr(2) + " !important; }"
            }
            if (this.itemshineselectedcolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategorySelected .tpShine { background-color: #" + this.itemshineselectedcolor.substr(2) + "; }";
                S += "#" + this.id + ".tpCategoryList .tpCategorySelected .tpShine { border-color: #" + this.itemshineselectedcolor.substr(2) + "; }"
            }
            if (this.textselectedcolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategorySelected a { color: #" + this.textselectedcolor.substr(2) + "; }"
            }
            if (this.texthighlightselectedcolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategorySelected a .tpMetadata .tpGroup { border-color: #" + this.texthighlightselectedcolor.substr(2) + " !important; }"
            }
            if (this.thumbnailhighlightselectedcolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategorySelected a .tpThumbnail { border-color: #" + this.thumbnailhighlightselectedcolor.substr(2) + " !important; }"
            }
            if (this.itemshineselectedcolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategorySelected:hover .tpShine { background-color: #" + this.itemshineselectedcolor.substr(2) + "; }";
                S += "#" + this.id + ".tpCategoryList .tpCategorySelected:hover .tpShine { border-color: #" + this.itemshineselectedcolor.substr(2) + "; }"
            }
            if (this.textselectedcolor) {
                S += "#" + this.id + ".tpCategoryList .tpCategorySelected:hover a { color: #" + this.textselectedcolor.substr(2) + "; }"
            }
            if (this.backgroundcolor && this.itembackgroundcolor && this.framecolor) {
                S += ".tpCategoryList ::-webkit-scrollbar                     { background-color: #" + this.backgroundcolor.substr(2) + "}\n";
                S += ".tpCategoryList ::-webkit-scrollbar-track               { background-color: #" + this.backgroundcolor.substr(2) + "}\n";
                S += ".tpCategoryList ::-webkit-scrollbar-thumb               { background-color: #" + this.itembackgroundcolor.substr(2) + "; border-color: #" + this.framecolor.substr(2) + "}\n";
                S += ".tpCategoryList ::-moz-scrollbar                     { background-color: #" + this.backgroundcolor.substr(2) + "}\n";
                S += ".tpCategoryList ::-moz-scrollbar-track               { background-color: #" + this.backgroundcolor.substr(2) + "}\n";
                S += ".tpCategoryList ::-moz-scrollbar-thumb               { background-color: #" + this.itembackgroundcolor.substr(2) + "; border-color: #" + this.framecolor.substr(2) + "}\n"
            }
            if (this.style.styleSheet) {
                this.style.styleSheet.cssText = S
            } else {
                this.style.appendChild(document.createTextNode(S))
            }
        }
        if (this.currentCategory) {
            this.currentIndex = this.setTileSelected(this.currentCategory)
        }
    },
    doInitialLoad: function(b) {},
    disable: function() {
        if (tpIsIPhone() || tpIsAndroid()) {
            return
        }
        if (!this.blocker) {
            this.blocker = document.createElement("div");
            this.blocker.style.width = "100%";
            this.blocker.style.height = "100%";
            this.blocker.style.position = "absolute";
            this.blocker.style.top = "0";
            this.blocker.style.left = "0";
            this.blocker.style.background = "black";
            this.blocker.style.opacity = "0.75";
            this.blocker.style.filter = "alpha(opacity=75)";
            this.blocker.innerHTML = "&nbsp;";
            this.blocker.style.zIndex = "500";
            this.container.appendChild(this.blocker)
        }
        this.blocker.style.display = "";
        var b = this.container.childNodes;
        for (child in b) {
            if (child.style) {
                child.style.opacity = "0.75";
                child.style.filter = "alpha(opacity=75)"
            }
        }
    },
    enable: function() {
        tpDebug("Doing enable");
        try {
            if (this.blocker) {
                this.blocker.style.display = "none"
            }
            var c = this.container.childNodes;
            for (child in c) {
                if (child.style) {
                    child.style.opacity = "";
                    child.style.filter = ""
                }
            }
        } catch (d) {
            tpDebug("enabled() threw an error with " + d.message + " on " + d.lineNumber)
        }
    },
    output: function(c) {
        var d = "";
        for (prop in c) {
            d += prop + ": " + c[prop] + "\n"
        }
        alert(d)
    }
});
CategoryList = tpCategoryList;
$pdk.ns("$pdk.classes");
$pdk.classes.ChallengeDataWrapper = $pdk.extend(function() {}, {
    constructor: function(e, f) {
        this.controller = e;
        this.cd = this.challengeData(f);
        tpDebug("challengeDataWrapper constructed", "ChallengeDataWrapper", e.id, tpConsts.DEBUG);
        var d = this;
        e.addEventListener("OnSetToken", function(a) {
            d.onSetToken(a)
        });
        e.addEventListener("OnMediaLoadStart", function(a) {
            d.onMediaLoadStart(a)
        });
        e.addEventListener("OnReleaseStart", function(a) {
            d.onReleaseStart(a)
        });
        e.addEventListener("OnReleaseEnd", function(a) {
            d.onReleaseEnd(a)
        });
        e.addEventListener("OnPlugInsComplete", function(a) {
            d.onPluginsComplete(a)
        });
        e.registerFunction("setLicenseServer", this, this.setLicenseServer);
        e.registerFunction("getChallengeData", this, this._getChallengeData);
        e.registerFunction("setChallengeData", this, this._setChallengeData);
        this.currentClipProtected = false;
        this.currentClipLicensed = false
    },
    setLicenseServer: function(c, d) {
        this.cd.setLicenseServer(c, d)
    },
    setClip: function(b) {
        this.currentClip = b;
        this.cd.setMediaData(b.baseClip.security);
        this.cd.flush()
    },
    _getChallengeData: function() {
        return this.cd.cd
    },
    _setChallengeData: function() {
        if (this.currentClip) {
            this.cd.flush()
        }
    },
    onSetToken: function(b) {
        if (b.data.type == "urn:theplatform:auth:token") {
            this.cd.setToken(b.data.token)
        }
    },
    onPluginsComplete: function(f) {
        var d = this._getLicenseServers(this.controller.component);
        for (var e = 0;
        e < d.length;
        e++) {
            this.setLicenseServer(d[e].security, d[e].url)
        }
    },
    onMediaLoadStart: function(c) {
        var d = c.data;
        if (d.isAd === false || d.baseClip.isAd === false) {
            this.currentClip = d;
            this.cd.setMediaData(d.baseClip.security)
        }
    },
    onReleaseStart: function(j) {
        this.currentClipLicensed = false;
        this.currentClipProtected = false;
        var g = j.data;
        var e = g.mediaPID;
        var h = g.accountID;
        var i = g.releasePID;
        this.cd.setMediaData(null, i, e, h)
    },
    onReleaseEnd: function(b) {
        this.cd.clearMediaData()
    },
    mediaProtected: function() {
        if (!this.currentClipProtected) {
            this.currentClipProtected = true;
            this.controller.dispatchEvent("OnMediaProtected", this.currentClip)
        }
    },
    mediaLicense: function() {
        if (!this.currentClipLicensed) {
            this.currentClipLicensed = true;
            this.controller.dispatchEvent("OnMediaLicense", this.currentClip)
        }
    },
    licenseError: function(c) {
        if (!this.currentClip) {
            return
        }
        var d = {
            location: this.controller.id,
            context: null,
            clip: this.currentClip,
            endRelease: true,
            message: c.message,
            friendlyMessage: c.details,
            security: c.security,
            keySystem: c.keySystem,
            globalDataType: "com.theplatform.pdk.data::LicenseError"
        };
        tpDebug("There was a security error acquiring a " + c.keySystem + " license for clip: " + this.currentClip.URL + " :: " + c.details, "ChallengeDataWrapper", this.controller.id, tpConsts.WARN);
        this.currentClip = null;
        this.controller.sendError(d)
    },
    _getLicenseServers: function(f) {
        var e = [];
        for (var g in f) {
            if (g.indexOf("licenseserver") == 0) {
                var h = f[g].split("|");
                e.push({
                    security: h[0],
                    url: h[1]
                })
            }
        }
        return e
    },
    challengeData: function(b) {
        return new $pdk.classes.ChallengeData(b, this)
    }
});
$pdk.classes.ChallengeData = $pdk.extend(function() {}, {
    constructor: function(h, g) {
        this.videoEngine = h;
        this.wrapper = g;
        var f = {
            widevine: "http://widevine.entitlement.theplatform.com/wv/web/ModularDrm/getWidevineLicense?form=json&schema=1.0&token=<token>&account=http://access.auth.theplatform.com/data/Account/<account>&_releasePid=<releasePid>&_widevineChallenge=<challenge>",
            playready: "http://playready.entitlement.theplatform.com/playready/rightsmanager.asmx"
        };
        this.cd = {
            licenseServers: f,
            token: "",
            security: "",
            releasePid: "",
            mediaId: "",
            accountId: "",
            event: {}
        };
        var e = this;
        this.videoEngine.addEventListener("MEDIA_PROTECTED", function(a) {
            e.onMediaProtected(a)
        });
        this.videoEngine.addEventListener("MEDIA_LICENSE", function(a) {
            e.onMediaLicense(a)
        });
        this.videoEngine.addEventListener("LICENSE_ERROR", function(a) {
            e.onLicenseError(a)
        })
    },
    onMediaProtected: function(b) {
        this.wrapper.mediaProtected(b);
        this.cd.event = b.event;
        this.flush()
    },
    onMediaLicense: function(b) {
        this.wrapper.mediaLicense(b)
    },
    onLicenseError: function(b) {
        this.wrapper.licenseError(b)
    },
    setLicenseServer: function(c, d) {
        if (c) {
            if (d != undefined) {
                this.cd.licenseServers[c.toLowerCase()] = d
            } else {
                delete this.cd.licenseServers[c.toLowerCase()]
            }
        }
    },
    setToken: function(b) {
        this.cd.token = b
    },
    setMediaData: function(e, h, f, g) {
        if (e) {
            this.cd.security = e
        }
        if (h) {
            this.cd.releasePid = h
        }
        if (f) {
            this.cd.mediaId = f
        }
        if (g) {
            this.cd.accountId = g
        }
    },
    clearMediaData: function() {
        this.cd.security = "";
        this.cd.releasePid = "";
        this.cd.mediaId = "";
        this.cd.accountId = "";
        this.cd.event = {}
    },
    flush: function() {
        this.videoEngine.setChallengeData(this.cd)
    }
});
ClipWrapperManager = Class.extend({
    init: function(b) {
        this.controller = b;
        this.initialize()
    },
    initialize: function() {
        this.controller.registerFunction("registerClipWrapperPlugIn", this, this.registerCWPlugin);
        this.controller.registerFunction("setClipWrapper", this, this.setClipWrapper)
    },
    registerCWPlugin: function(k, g) {
        if (!g) {
            g = 0
        }
        if (!this.plugIns) {
            this.plugIns = new Array()
        }
        var i = {
            plugin: k,
            priority: g
        };
        var l = false;
        for (var h = 0;
        h < this.plugIns.length;
        h++) {
            var j = this.plugIns[h];
            if (i.priority <= j.priority) {
                this.plugIns.splice(h, 0, i);
                l = true;
                break
            }
        }
        if (!l) {
            this.plugIns.push(i)
        }
    },
    processClip: function(f) {
        if (this.currentClip) {
            throw "the clipWrapperManager did not complete wrapping one clip before another was started"
        }
        if (f.isWrappingClip || !this.plugIns) {
            return false
        }
        if (f.wasWrapped) {
            f.wasWrapped = false;
            return false
        }
        var i = false;
        var h = {
            clip: f
        };
        this.currentClip = f;
        for (var g = 0;
        g < this.plugIns.length;
        g++) {
            var j = this.plugIns[g];
            if (j.plugin.wrapClip(h)) {
                i = true;
                break
            }
        }
        if (!i) {
            this.currentClip = null
        }
        return i
    },
    setClipWrapper: function(b) {
        if (this.currentClip) {
            this.currentClip.wasWrapped = true;
            this.currentClip = null;
            this.controller.wrapClip(b.preRolls, b.postRolls)
        }
    }
});
ControlsManager = EventDispatcher.extend({
    init: function(e, d, f) {
        this.controller = e;
        this._controllerDeferred = d;
        this.controlsManager = f;
        this.releaseStarted = false;
        this._buildListeners()
    },
    initialize: function(i, p) {
        this.successCallback = i;
        this.errorCallback = p;
        var k = this.controller.getProperty("skinUrl");
        if (k && (k.indexOf(location.hostname) != -1 || k.indexOf("http") != -1)) {
            this.skinUrl = k
        } else {
            this.skinUrl = k ? $pdk.scriptRoot + k : $pdk.scriptRoot + "/../../pdk/skins/cinematic/cinematic.json"
        }
        this.parentNode = document.getElementById(this.controller.id + ".controls");
        this.isPreview = true;
        var l = this;
        this.endCardID = this.controller.getProperty("endCard");
        var o = this.controller.getProperty("layoutUrl");
        var n = this.controller.getProperty("layout");
        var j = this.controller.getProperty("useNativeControls") == "true";
        var m = this.controller.getProperty("useDefaultPlayOverlay") == "true" || this.controller.getProperty("showControlsBeforeVideo") == "false";
        if (m && !j) {
            setTimeout(function() {
                p(false, j)
            }, 1)
        }
        if (!j) {
            setTimeout(function() {
                l.parseMetaLayout(o, n)
            }, 1)
        } else {
            setTimeout(function() {
                p(false, true)
            }, 1)
        }
    },
    _buildListeners: function() {
        this.listeners = {};
        var b = this;
        this.listeners.end = function(a) {
            b.onMediaEnd(a)
        };
        this.listeners.fullscreen = function(a) {
            b.onShowFullScreen(a)
        };
        this.listeners.getlanguage = function(a) {
            b.onGetSubtitleLanguage(a)
        };
        this.listeners.loadStart = function(a) {
            b.onMediaLoadStart(a)
        };
        this.listeners.loading = function(a) {
            b.onMediaLoading(a)
        };
        this.listeners.loadrelease = function(a) {
            b.onLoadRelease(a)
        };
        this.listeners.loadreleaseurl = function(a) {
            b.onLoadRelease(a)
        };
        this.listeners.mute = function(a) {
            b.onMute(a)
        };
        this.listeners.paused = function(a) {
            b.onMediaPause(a)
        };
        this.listeners.playing = function(a) {
            b.onMediaPlaying(a)
        };
        this.listeners.releaseend = function(a) {
            b.onReleaseEnd(a)
        };
        this.listeners.releasestart = function(a) {
            b.onReleaseStart(a)
        };
        this.listeners.resize = function(a) {
            b.onResize(a)
        };
        this.listeners.seek = function(a) {
            b.onMediaSeek(a)
        };
        this.listeners.setreleaseurl = function(a) {
            b.onSetReleaseURL(a)
        };
        this.listeners.showcard = function(a) {
            b.onShowCard(a)
        };
        this.listeners.hidecard = function(a) {
            b.onHideCard(a)
        };
        this.listeners.showplayoverlay = function(a) {
            b.onShowPlayOverlay(a)
        };
        this.listeners.start = function(a) {
            b.onMediaStart(a)
        };
        this.listeners.unpaused = function(a) {
            b.onMediaUnpause(a)
        };
        this.listeners.volumechange = function(a) {
            b.onVolumeChange(a)
        };
        this.listeners.onPlaybackRateChanged = function(a) {
            b.onPlaybackRateChanged(a)
        };
        this.listeners.noSkipChanged = function(a) {
            b.onNoSkipChanged(a)
        };
        this.listeners.setShowControls = function(a, d) {
            b.setShowControls(a, d)
        };
        this.listeners.setPlayerLayoutUrl = function(a) {
            b.setPlayerLayoutUrl(a)
        };
        this.listeners.setPlayerLayoutXml = function(a) {
            b.setPlayerLayoutXml(a)
        };
        this.listeners.clearcurrentrelease = function(a) {
            b.onClearCurrentRelease(a)
        };
        this._controllerDeferred.addEventListener("OnGetSubtitleLanguage", this.listeners.getlanguage);
        this._controllerDeferred.addEventListener("OnLoadRelease", this.listeners.loadrelease);
        this._controllerDeferred.addEventListener("OnLoadReleaseUrl", this.listeners.loadreleaseurl);
        this._controllerDeferred.addEventListener("OnMediaEnd", this.listeners.end);
        this._controllerDeferred.addEventListener("OnMediaLoadStart", this.listeners.loadStart);
        this._controllerDeferred.addEventListener("OnMediaLoading", this.listeners.loading);
        this._controllerDeferred.addEventListener("OnMediaPause", this.listeners.paused);
        this._controllerDeferred.addEventListener("OnMediaPlaying", this.listeners.playing);
        this._controllerDeferred.addEventListener("OnMediaSeek", this.listeners.seek);
        this._controllerDeferred.addEventListener("OnMediaStart", this.listeners.start);
        this._controllerDeferred.addEventListener("OnMediaUnpause", this.listeners.unpaused);
        this._controllerDeferred.addEventListener("OnMute", this.listeners.mute);
        this._controllerDeferred.addEventListener("OnReleaseEnd", this.listeners.releaseend);
        this._controllerDeferred.addEventListener("OnClearCurrentRelease", this.listeners.clearcurrentrelease);
        this._controllerDeferred.addEventListener("OnReleaseStart", this.listeners.releasestart);
        this._controllerDeferred.addEventListener("OnResize", this.listeners.resize);
        this._controllerDeferred.addEventListener("OnSetReleaseUrl", this.listeners.setreleaseurl);
        this._controllerDeferred.addEventListener("OnShowCard", this.listeners.showcard);
        this._controllerDeferred.addEventListener("OnHideCard", this.listeners.hidecard);
        this._controllerDeferred.addEventListener("OnShowFullScreen", this.listeners.fullscreen);
        this._controllerDeferred.addEventListener("OnShowPlayOverlay", this.listeners.showplayoverlay);
        this._controllerDeferred.addEventListener("OnVolumeChange", this.listeners.volumechange);
        this._controllerDeferred.addEventListener("OnPlaybackRateChanged", this.listeners.onPlaybackRateChanged);
        this._controllerDeferred.addEventListener("OnNoSkipChanged", this.listeners.noSkipChanged);
        this._controllerDeferred.registerFunction("setShowControls", this, this.listeners.setShowControls);
        this._controllerDeferred.registerFunction("setPlayerLayoutUrl", this, this.listeners.setPlayerLayoutUrl);
        this._controllerDeferred.registerFunction("setPlayerLayoutXml", this, this.listeners.setPlayerLayoutXml)
    },
    addListeners: function() {
        var b = this;
        this.controller.addEventListener("OnGetSubtitleLanguage", this.listeners.getlanguage);
        this.controller.addEventListener("OnLoadRelease", this.listeners.loadrelease);
        this.controller.addEventListener("OnLoadReleaseUrl", this.listeners.loadreleaseurl);
        this.controller.addEventListener("OnMediaEnd", this.listeners.end);
        this.controller.addEventListener("OnMediaLoadStart", this.listeners.loadStart);
        this.controller.addEventListener("OnMediaLoading", this.listeners.loading);
        this.controller.addEventListener("OnMediaPause", this.listeners.paused);
        this.controller.addEventListener("OnMediaPlaying", this.listeners.playing);
        this.controller.addEventListener("OnMediaSeek", this.listeners.seek);
        this.controller.addEventListener("OnMediaStart", this.listeners.start);
        this.controller.addEventListener("OnMediaUnpause", this.listeners.unpaused);
        this.controller.addEventListener("OnMute", this.listeners.mute);
        this.controller.addEventListener("OnReleaseEnd", this.listeners.releaseend);
        this.controller.addEventListener("OnClearCurrentRelease", this.listeners.clearcurrentrelease);
        this.controller.addEventListener("OnReleaseStart", this.listeners.releasestart);
        this.controller.addEventListener("OnResize", this.listeners.resize);
        this.controller.addEventListener("OnSetReleaseUrl", this.listeners.setreleaseurl);
        this.controller.addEventListener("OnShowCard", this.listeners.showcard);
        this.controller.addEventListener("OnHideCard", this.listeners.hidecard);
        this.controller.addEventListener("OnShowFullScreen", this.listeners.fullscreen);
        this.controller.addEventListener("OnShowPlayOverlay", this.listeners.showplayoverlay);
        this.controller.addEventListener("OnVolumeChange", this.listeners.volumechange);
        this.controller.addEventListener("OnPlaybackRateChanged", this.listeners.onPlaybackRateChanged);
        this.controller.addEventListener("OnNoSkipChanged", this.listeners.noSkipChanged);
        this.controller.registerFunction("setShowControls", this, this.listeners.setShowControls);
        this.controller.registerFunction("setPlayerLayoutUrl", this, this.listeners.setPlayerLayoutUrl);
        this.controller.registerFunction("setPlayerLayoutXml", this, this.listeners.setPlayerLayoutXml)
    },
    setPlayerLayoutUrl: function(b) {
        this.controlsManager.setPlayerLayoutUrl(b)
    },
    setPlayerLayoutXml: function(b) {
        this.controlsManager.setPlayerLayoutXml(b)
    },
    onNoSkipChanged: function(c) {
        var d = c.data;
        if (d.baseClip.isAd && !d.baseClip.noSkip) {
            this.controlsManager.enableNext(true);
            this.enableNextOnControlsChanged = true
        }
    },
    parseMetaLayout: function(r, l) {
        var k = this;
        if (this.skinUrl.indexOf(".swf") != -1) {
            tpDebug("You're trying to use a swf skin with an HTML5 player, this won't work. Use a JSON skin", this.controller.id, "ControlsManager", tpConsts.WARN);
            this.errorCallback();
            return
        }
        k.addListeners();
        tpDebug("Parsed metalayout, controls should appear");
        var m = k.controller.supportsFullScreen() && k.controller.getProperty("allowFullScreen") != "false";
        var p = k.controller.supportsMute() != false;
        var o = k.controller.supportsVolume() != false;
        var q = k.controller.checkIfEndCardExists() != false;
        var n = k.controller.supportsFastForward() != false;
        tpDebug("SupportsFullScreen is " + m);
        k.controller.hidePlayerCard("none");
        k.controlsManager.supportsMute(p);
        k.controlsManager.supportsVolume(o);
        k.controlsManager.supportsFullScreen(m);
        k.controlsManager.supportsFastForward(n);
        k.controlsManager.supportsMenuCard(q);
        k.controlsManager.setIsFullScreen(false);
        k.controlsManager.setIsPreview(k.isPreview);
        k.controlsManager.setFullScreen(false);
        k.controlsManager.hasCC(false);
        var j = this.releaseStarted;
        k.controlsManager.releaseStarted(j);
        k.controlsManager.syncState();
        k.releaseStarted = j;
        k.controller.getSubtitleLanguage();
        k.successCallback()
    },
    onSetReleaseURL: function(b) {
        this.releaseStarted = false;
        this.controlsManager.releaseStarted(false);
        this.controlsManager.hasCC(false);
        this.controlsManager.releaseLoaded()
    },
    onLoadRelease: function(j) {
        this.releaseStarted = false;
        this.controlsManager.releaseStarted(false);
        this.controlsManager.releaseLoaded();
        this.setTimes(0, j.data.duration);
        this.controlsManager.setPercentLoaded(0);
        this.controlsManager.setClipTitle(j.data.title);
        if (j.data && j.data.captions && j.data.captions.length > 0) {
            var e = j.data.captions;
            var h = [];
            for (var g = 0;
            g < e.length;
            g++) {
                var i = e[g].lang ? e[g].lang : e[g].language;
                if (i) {
                    h.push(i)
                }
            }
            if (h.length) {
                this.controlsManager.setSubtitleLanguages(h)
            }
        }
    },
    onShowPlayOverlay: function(b) {
        if (!this.releaseStarted) {
            this.controlsManager.releaseStarted(false);
            tpDebug("onShowPlayOverlay Setting isPreview " + b.data);
            this.controlsManager.setIsPreview(b.data);
            this.isPreview = b.data
        }
    },
    onHideCard: function(c) {
        var d = c.data;
        this.controlsManager.cardShowing(false, d.card, d.deck)
    },
    onShowCard: function(c) {
        var d = c.data;
        this.controlsManager.cardShowing(true, d.card, d.deck)
    },
    onReleaseStart: function(g) {
        var f = g.data;
        if (!f) {
            return
        }
        this.releaseStarted = true;
        this.releaseLength = f.chapters.aggregateLength;
        var h = [];
        for (var e = 1;
        e < f.chapters.chapters.length;
        e++) {
            h.push(f.chapters.chapters[e].aggregateStartTime / this.releaseLength)
        }
        this.currentChapters = h;
        this.controlsManager.setPercentLoaded(0);
        this.controlsManager.releaseStarted(true);
        if (f.clips && f.clips.length > 0) {
            this.controlsManager.setClipTitle(f.clips[0].title)
        }
        tpDebug("Setting isPreview false");
        this.controlsManager.setIsPreview(false);
        this.isPreview = false;
        this.controlsManager.supportsFastForward(this.controller.supportsFastForward())
    },
    onClearCurrentRelease: function(b) {
        this.onReleaseEnd(b);
        this.controlsManager.releaseCleared()
    },
    onReleaseEnd: function(b) {
        this.controlsManager.clearImageTracks();
        this.releaseStarted = false;
        this.controlsManager.setSubtitleLanguages([]);
        this.controlsManager.setPercentLoaded(0);
        this.controlsManager.setClipTitle("");
        this.setTimes(0, 1);
        this.controlsManager.setIsAd(false);
        this.controlsManager.releaseStarted(false);
        this.controlsManager.pause();
        this.controlsManager.hasCC(false);
        this.controlsManager.setChapterPoints([]);
        this.currentChapters = []
    },
    onMediaLoadStart: function(g) {
        var h = g.data;
        this.controlsManager.mediaNoSkip(h.baseClip.noSkip);
        this.controlsManager.setIsAd(h.baseClip.isAd);
        this.controlsManager.isAd(h.baseClip.isAd);
        this.controlsManager.setClipTitle(h.title);
        if (h.chapter && h.chapter.chapters) {
            this.setTimes(h.chapter.aggregateStartTime + h.offset, h.chapter.chapters.aggregateLength);
            if (!h.baseClip.isAd && !h.baseClip.noSkip && this.controller.supportsSeek()) {
                this.controlsManager.setChapterPoints(!this.currentChapters ? [] : this.currentChapters)
            } else {
                this.controlsManager.setChapterPoints([])
            }
        } else {
            if (h.baseClip.isAd) {
                if (h.endTime > 0) {
                    this.setTimes(h.startTime, h.endTime)
                } else {
                    this.setTimes(0, h.length)
                }
            } else {
                if (h.baseClip.trueLength > 0) {
                    this.setTimes(h.startTime + h.offset, h.baseClip.trueLength)
                } else {
                    this.setTimes(h.startTime + h.offset, this.releaseLength)
                }
            }
            this.controlsManager.setChapterPoints([])
        }
        if (h.baseClip.availableImageTracks && typeof(h.baseClip.availableImageTracks) && h.baseClip.availableImageTracks.length > 0 && !h.baseClip.isAd) {
            for (var f = 0;
            f < h.baseClip.availableImageTracks.length;
            f++) {
                var e = h.baseClip.availableImageTracks[f]
            }
            this.controlsManager.setAvailableImageTracks(h.baseClip.availableImageTracks)
        }
        if (h.baseClip.isAd) {
            this.controlsManager.setPercentLoaded(0)
        }
        this.controlsManager.syncState()
    },
    onMediaStart: function(k) {
        tpDebug("Setting isPreview false");
        this.controlsManager.setIsPreview(false);
        this.isPreview = false;
        var m = k.data;
        var n = m.baseClip.availableSubtitles !== null && typeof(m.baseClip.availableSubtitles) && m.baseClip.availableSubtitles.length > 0;
        this.controlsManager.setIsAd(m.baseClip.isAd);
        var i = this.controller.supportsFullScreen();
        this.controlsManager.supportsFullScreen(i);
        this.controlsManager.hasCC(n);
        this.controlsManager.mediaStarted();
        this.controlsManager.mediaNoSkip(m.baseClip.noSkip);
        this.controlsManager.isAd(m.baseClip.isAd);
        this.controlsManager.setClipTitle(m.title);
        if (!m.baseClip.isAd && !m.baseClip.noSkip && this.controller.supportsSeek()) {
            this.controlsManager.setChapterPoints(!this.currentChapters ? [] : this.currentChapters)
        }
        var l = m.baseClip.availableSubtitles;
        var j = [];
        for (var e = 0;
        e < l.length;
        e++) {
            j.push(l[e].language)
        }
        this.controlsManager.setSubtitleLanguages(j)
    },
    onMediaSeek: function(b) {
        this.isPlaying = false;
        if (b.data.end.durationAggregate) {
            this.setTimes(b.data.end.currentTimeAggregate, b.data.end.durationAggregate)
        } else {
            if (b.data.clip.chapter) {
                this.setTimes(b.data.end.currentTimeAggregate, b.data.clip.chapter.chapters.aggregateLength)
            } else {
                this.setTimes(b.data.end.currentTimeAggregate, this.releaseLength)
            }
        }
    },
    setTimes: function(c, d) {
        if (d === Infinity) {
            d = -2
        }
        this.controlsManager.setTimes(c, d)
    },
    onMediaLoading: function(b) {
        this.controlsManager.setPercentLoaded(b.data.ratioLoaded)
    },
    onMediaEnd: function(f) {
        var d = f.data;
        if ((d.baseClip.isAd || d.baseClip.noSkip) && d.currentMediaTime > 0) {
            this.setTimes(0, 0)
        }
        this.isPlaying = false;
        var e = this;
        this.controlsManager.clearImageTracks();
        if (this.enableNextOnControlsChanged) {
            this.controlsManager.enableNext(false);
            this.enableNextOnControlsChanged = false
        }
    },
    onMediaPlaying: function(b) {
        if (!this.releaseStarted) {
            this.releaseStarted = true;
            this.controlsManager.releaseStarted(false);
            this.controlsManager.releaseStarted(this.releaseStarted)
        }
        this.controlsManager.setIsPreview(false);
        if (!this.isPlaying) {
            this.isPlaying = true;
            this.controlsManager.play()
        }
        if (b.data.currentTimeAggregate !== undefined) {
            if (b.data.durationAggregate > 0) {
                this.setTimes(b.data.currentTimeAggregate, b.data.durationAggregate)
            } else {
                this.setTimes(b.data.currentTimeAggregate, this.releaseLength)
            }
        } else {
            if (b.data.duration > 0) {
                this.setTimes(b.data.currentTime, b.data.duration)
            } else {
                this.setTimes(b.data.currentTime, this.releaseLength)
            }
        }
    },
    onMediaPause: function(b) {
        this.isPlaying = false;
        this.controlsManager.pause()
    },
    onMediaUnpause: function(b) {
        this.isPlaying = true;
        this.controlsManager.play()
    },
    onMute: function(b) {
        this.controlsManager.mute(b.data)
    },
    onVolumeChange: function(b) {
        this.controlsManager.setVolume(b.data / 100)
    },
    onPlaybackRateChanged: function(b) {
        this.controlsManager.setPlaybackRate(b.data.rate)
    },
    onShowFullScreen: function(b) {
        this.controlsManager.setIsFullScreen(b.data);
        this.controlsManager.setFullScreen(b.data)
    },
    onGetSubtitleLanguage: function(d) {
        var c = d.data.langCode;
        this.controlsManager.setSubtitleLanguage(c)
    },
    onResize: function(b) {
        this.controlsManager.setSize(b.data.width + "px", b.data.height + "px")
    },
    setShowControls: function(d, c) {
        this.controller.dispatchEvent("OnShowControls", {
            visible: d,
            regionId: c
        })
    }
});
ErrorManager = Class.extend({
    init: function(d, c) {
        this.controller = d;
        this.player = c
    },
    sendError: function(g) {
        var j = g.clip;
        if (j && j.baseClip.failOverClips.length > 0) {
            var k = j.baseClip.failOverClips[0];
            var l = com.theplatform.pdk.SelectorExported.parseClip(k);
            if (j.baseClip.failOverClips.length > 1) {
                var h = j.baseClip.failOverClips;
                h.splice(0, 1);
                l.baseClip.failOverClips = h
            } else {
                l.baseClip.failOverClips = []
            }
            var i = $.extend(true, {}, j);
            i.URL = l.URL;
            i.baseClip = l.baseClip;
            i.id = l.id;
            this.player.doMediaLoadStart(i)
        } else {
            this.controller.dispatchEvent("OnMediaError", g)
        }
    }
});
var tpJsonContexts = new Object();

function tpRegisterJsonContext(c) {
    var d = (((1 + Math.random()) * 65536) | 0).toString(16).substring(1);
    tpJsonContexts[d] = c;
    return d
}
function tpJSONLoaderCallback(c, d) {
    tpJsonContexts[d](c)
}
JSONLoader = Class.extend({
    init: function() {},
    load: function(r, j, q, l, n, m) {
        if (!q) {
            q = "callback"
        }
        if (!n) {
            n = "context"
        }
        if (!l) {
            l = "tpJSONLoaderCallback"
        }
        var p = tpRegisterJsonContext(function() {
            j(arguments[0], r)
        });
        if (r.indexOf("?") >= 0) {
            r += "&" + q + "=" + l + "&" + n + "=" + p
        } else {
            r += "?" + q + "=" + l + "&" + n + "=" + p
        }
        var o = document.getElementsByTagName("head")[0];
        var k = document.createElement("script");
        k.type = "text/javascript";
        k.src = r;
        k.onerror = function(a) {
            tpDebug("Failed to load " + k.src);
            if (typeof(m) === "function") {
                m(a)
            }
        };
        o.appendChild(k)
    }
});
OverlayManager = Class.extend({
    init: function(e, d) {
        this.controller = e;
        this.playerElement = d;
        var f = this;
        this.controller.registerFunction("getOverlayArea", this, this.getOverlayArea);
        this.controller.registerFunction("setOverlayArea", this, this.setOverlayArea);
        this.controller.addEventListener("OnMediaAreaChanged", function(a) {
            f.mediaAreaChanged(a)
        })
    },
    getBrowserOffset: function() {
        if (this.controller.component.videoengineruntime && this.controller.component.videoengineruntime === "silverlight") {
            return 38
        }
        if (navigator.userAgent.toLowerCase().indexOf("chrome") > -1) {
            return 32
        }
        if (navigator.userAgent.toLowerCase().indexOf("msie") > -1) {
            return 42
        }
        if (tpIsIOS()) {
            return 54
        }
        if (navigator.userAgent.toLowerCase().indexOf("safari") > -1) {
            return 24
        }
        if (navigator.userAgent.toLowerCase().indexOf("firefox") > -1) {
            return 28
        }
        return 35
    },
    setOverlayArea: function(b) {
        if (b.width > 0 && b.height > 0) {
            this.useNativeDefaults = false;
            this.overlayArea = b;
            this.controller.dispatchEvent("OnOverlayAreaChanged", this.getOverlayArea())
        }
    },
    getOverlayArea: function(i, g, j) {
        if (this.overlayArea && !j) {
            if (g) {
                this.controller.dispatchEvent("OnOverlayAreaChanged", this.overlayArea)
            }
            return this.overlayArea
        }
        var f = {};
        var h = !this.useNativeDefaults ? this.getBrowserOffset() : 0;
        f.height = this.playerElement.clientHeight - h;
        f.width = this.playerElement.clientWidth;
        f.top = this.playerElement.clientTop;
        f.left = this.playerElement.clientLeft;
        f.bottom = f.top + f.height;
        f.right = f.left + f.width;
        f.topLeft = {
            x: f.left,
            y: f.top
        };
        f.bottomRight = {
            x: f.right,
            y: f.bottom
        };
        f.size = {
            x: f.width,
            y: f.height
        };
        f.x = f.left;
        f.y = f.top;
        if (i) {
            f.x += $pdk.jQuery(this.playerElement).offset().left;
            f.y += $pdk.jQuery(this.playerElement).offset().top
        }
        if (g) {
            this.controller.dispatchEvent("OnOverlayAreaChanged", f)
        }
        if (j) {
            this.overlayArea = f
        }
        return f
    },
    mediaAreaChanged: function(b) {}
});
var PdkEvent = new Object();
PdkEvent.OnPlayerLoaded = "OnPlayerLoaded";
PdkEvent.OnResetPlayer = "OnResetPlayer";
PdkEvent.OnPlugInLoaded = "OnPlugInLoaded";
PdkEvent.OnPlugInsComplete = "OnPlugInsComplete";
PdkEvent.OnMediaLoadStart = "OnMediaLoadStart";
PdkEvent.OnMediaPlay = "OnMediaPlay";
PdkEvent.OnMediaClick = "OnMediaClick";
PdkEvent.OnMediaBuffer = "OnMediaBuffer";
PdkEvent.OnMediaEnd = "OnMediaEnd";
PdkEvent.OnMediaError = "OnMediaError";
PdkEvent.OnMediaComplete = "OnMediaComplete";
PdkEvent.OnMediaLoading = "OnMediaLoading";
PdkEvent.OnMediaPause = "OnMediaPause";
PdkEvent.OnMediaTime = "OnMediaTime";
PdkEvent.OnMediaPlaying = "OnMediaPlaying";
PdkEvent.OnMediaStart = "OnMediaStart";
PdkEvent.OnMediaUnpause = "OnMediaUnpause";
PdkEvent.OnReleaseEnd = "OnReleaseEnd";
PdkEvent.OnReleaseStart = "OnReleaseStart";
PdkEvent.OnReleaseSelected = "OnReleaseSelected";
PdkEvent.OnMediaSeek = "OnMediaSeek";
PdkEvent.OnMute = "OnMute";
PdkEvent.OnSetVolume = "OnSetVolume";
PdkEvent.OnPlaybackRateChanged = "OnPlaybackRateChanged";
PdkEvent.OnSetRelease = "OnSetRelease";
PdkEvent.OnSetReleaseUrl = "OnSetReleaseUrl";
PdkEvent.OnLoadRelease = "OnLoadRelease";
PdkEvent.OnLoadReleaseUrl = "OnLoadReleaseUrl";
PdkEvent.OnSetSmil = "OnSetSmil";
PdkEvent.OnLoadSmil = "OnLoadSmil";
PdkEvent.OnShowFullScreen = "OnShowFullScreen";
PdkEvent.OnShowPlayOverlay = "OnShowPlayOverlay";
PdkEvent.OnShowPreviewImageOverlay = "OnShowPreviewImageOverlay";
PdkEvent.OnShowControls = "OnShowControls";
PdkEvent.OnStreamSwitched = "OnStreamSwitched";
PdkEvent.OnGetSubtitleLanguage = "OnGetSubtitleLanguage";
PdkEvent.OnRefreshCategoryModel = "OnRefreshCategoryModel";
PdkEvent.OnRefreshReleaseModel = "OnRefreshReleaseModel";
PdkEvent.OnLoadReleaseModel = "OnLoadReleaseModel";
PdkEvent.OnRefreshReleaseModelStarted = "OnRefreshReleaseModelStarted";
PdkEvent.OnCategorySelected = "OnCategorySelected";
PlaybackManager = Class.extend({
    init: function(k, p) {
        this.player = k;
        this.controller = p;
        var j = {
            fontFamily: "Calibri, Helvetica, Arial",
            fontColor: "white",
            textAlign: "left",
            textAlignVertical: "top"
        };
        var q = {
            fontFamily: "Calibri, Helvetica, Arial",
            fontColor: "white",
            fontEdge: "dropshadow",
            textAlign: "center",
            textAlignVertical: "bottom"
        };
        var m = "tp_subtitles_settings";
        var n = this;
        var l = n.controller.getOverlayArea();
        n.subtitlesLoader = new $pdk.queue.deferred.loader.Subtitles(n.controller, l, document.getElementById(n.controller.id + ".subtitles"), m, 6, j, q, true, n.controller.getProperty("enableDynamicSubtitleFonts"));
        this.subtitlesSettingsManagerLoader = new $pdk.queue.deferred.loader.SubtitlesSettingsManager(this.controller, m);
        this.veSubtitlesManager = new $pdk.classes.VideoEngineSubtitlesManager(this.controller, this.player.videoEngine);
        var n = this;
        p.addEventListener("OnLoadReleaseUrl", function() {
            n.handleLoadReleaseUrl.apply(n, arguments)
        });
        this.mediaSeekHandler = function() {
            n.handleMediaSeek.apply(n, arguments)
        };
        p.addEventListener("OnMediaSeek", this.mediaSeekHandler);
        this.mediaErrorHandler = function() {
            n.handleMediaError.apply(n, arguments)
        };
        p.addEventListener("OnMediaError", this.mediaErrorHandler);
        this.mediaStartHandler = function() {
            n.handleMediaStart.apply(n, arguments)
        };
        p.addEventListener("OnMediaStart", this.mediaStartHandler);
        this.mediaLoadStartHandler = function() {
            n.handleMediaLoadStart.apply(n, arguments)
        };
        p.addEventListener("OnMediaLoadStart", this.mediaLoadStartHandler);
        this.releaseSelectedHandler = function() {
            n.handleReleaseSelected.apply(n, arguments)
        };
        p.addEventListener("OnReleaseSelected", this.releaseSelectedHandler);
        this.releaseStartedHandler = function() {
            n.handleReleaseStarted.apply(n, arguments)
        };
        p.addEventListener("OnReleaseStart", this.releaseStartedHandler);
        this._metadataUrlManager = new $pdk.plugin.MetadataUrlManager(this.controller);
        this.urlManager = new UrlManager(this.controller);
        this.errorManager = new ErrorManager(this.controller, this.player);
        var r = this.controller.getProperty("useNativeControls") == "true";
        var o = this.controller.getProperty("useDefaultPlayOverlay") == "true" || this.controller.getProperty("showControlsBeforeVideo") == "false";
        if (o || r) {
            setTimeout(function() {
                n.controlsLoaded = true;
                n.player.controlsLoaded(false, r)
            }, 1)
        }
        if (!r) {
            this.controlsLoader = new $pdk.queue.deferred.loader.ControlsLoader(this.controller, document.getElementById(this.controller.id).parentElement.id, function() {
                n.controlsLoaded = true;
                n.player.controlsLoaded(true, false);
                if (n.controlsLoadedCallback) {
                    n.controlsLoadedCallback()
                }
            }, function(a, b) {
                n.controlsLoaded = true;
                n.player.controlsLoaded(a, b)
            })
        }
        this.releaseUrl = this.player.releaseUrl;
        this.tokenManager = new TokenManager(this.controller);
        this.overlayManager = new OverlayManager(this.controller, this.player.container);
        this.standbyManager = new StandbyManager(this.controller, this);
        this.plugins = new Array();
        this.pluginsComplete = false;
        p.addEventListener("OnPlugInsComplete", function() {
            n.pluginsComplete = true
        });
        p.registerFunction("setRelease", this, this.setRelease);
        p.registerFunction("setReleaseURL", this, this.setReleaseURL);
        p.registerFunction("tryWritePlayer", this, this.tryWritePlayer);
        p.registerFunction("pause", this, this.pause);
        p.registerFunction("endRelease", this, this.endRelease);
        p.registerFunction("endCurrentRelease", this, this.endRelease);
        p.registerFunction("clearCurrentRelease", this, this.clearCurrentRelease);
        p.registerFunction("resetRelease", this, this.resetRelease);
        p.registerFunction("getCurrentRelease", this, this.getCurrentRelease);
        p.registerFunction("injectPlaylist", this, this.injectPlaylist);
        p.registerFunction("insertPlaylist", this, this.insertPlaylist);
        p.registerFunction("wrapClip", this, this.wrapClip);
        p.registerFunction("insertClip", this, this.insertClip);
        p.registerFunction("mute", this, this.doMute);
        p.registerFunction("setVolume", this, this.setVolume);
        p.registerFunction("setSmil", this, this.setSmil);
        p.registerFunction("updateMediaTime", this, this.updateMediaTime);
        p.registerFunction("updateClip", this, this.updateClip);
        p.registerFunction("updatePlaylist", this, this.updatePlaylist);
        p.registerFunction("endMedia", this, this.endMedia);
        p.registerFunction("sendError", this, this.sendError);
        p.registerFunction("getMuteState", this, this.getMuteState);
        p.registerFunction("getVolume", this, this.getVolume);
        p.registerFunction("markOffset", this, this.markOffset);
        p.registerFunction("playPlaylist", this, this.playPlaylist);
        p.registerFunction("loadReleaseURL", this, this.loadReleaseURL);
        p.registerFunction("loadRelease", this, this.loadRelease);
        p.registerFunction("nextClip", this, this.nextClipExternal);
        p.registerFunction("previousClip", this, this.previousClip);
        p.registerFunction("nextRelease", this, this.advanceToNextRelease);
        var n = this;
        p.registerFunction("initializePlayback", this, this.initializePlayback);
        this.adManager = new AdManager(p);
        this.clipWrapperManager = new ClipWrapperManager(p);
        this.challengeData = new $pdk.classes.ChallengeDataWrapper(this.controller, this.player.videoEngine);
        this.trackingManager = new $pdk.managers.TrackingUrlManager(p);
        this.fullScreenManager = new FullScreenManager(p, this, k.enableFullWindow);
        this.advanceClipFromExternalCall = false;
        com.theplatform.pdk.SelectorExported = {
            getInstance: function(a) {
                this._scopes = a.split(",");
                return this
            },
            parseClip: function(a) {
                return p.callFunction("createClipFromBaseClip", [a], this._scopes)
            },
            parsePlaylist: function(b, a) {
                return p.callFunction("doParsePlaylist", [b, a], this._scopes)
            }
        }
    },
    handleReleaseSelected: function(b) {
        if (b.originator.controlId != this.controller.componentId && b.originator.controlId.indexOf("player") < 0) {
            this.currentReleaseList = b.originator.controlId
        }
        this.tryingToAdvance = false
    },
    handleReleaseStarted: function(b) {
        this.fastForwardSupported = undefined
    },
    initializePlayback: function() {
        this.pluginsComplete = true;
        if (this.waitReleaseCall) {
            if (this.waitReleaseCall.url) {
                this.setReleaseURL(this.waitReleaseCall.url, this.waitReleaseCall.replaceDefault)
            } else {
                if (this.waitReleaseCall.release) {
                    this.setRelease(this.waitReleaseCall.release, this.waitReleaseCall.replaceDefault)
                }
            }
            this.waitReleaseCall = null
        } else {
            if (this.waitSmil) {
                this.setSmil(this.waitSmil);
                this.waitSmil = null
            }
        }
    },
    handleMediaStart: function(c) {
        var d = c.data;
        d.offset = 0;
        this.clipStarted = true;
        this.wasError = false;
        this.updateClip(d)
    },
    handleMediaLoadStart: function(b) {
        if (this.shouldStripVTT(b.data)) {
            tpDebug("calling stripVTT(clip)");
            this.stripVTT(b.data)
        }
    },
    handleLoadReleaseUrl: function(b) {
        this.tryingToAdvance = false;
        if (this.releaseProcess && this.playlist) {
            this.endRelease();
            this.destroyReleaseProcess(this.releaseProcess);
            this.releaseProcess = undefined;
            this.playlist = undefined
        }
        if (!this.currentRelease || this.currentRelease.pid != b.data.pid) {
            this.currentRelease = this.convertRawRelease(b.data)
        } else {
            this.appendRawDataToRelease(this.currentRelease, b.data)
        }
        if ((tpIsIOS() || tpIsAndroid()) && this.isPrefetch()) {
            release.url = this.releaseUrl;
            this.setRelease(release)
        }
    },
    convertRawRelease: function(b) {
        if (b.pubDate) {
            b.airdate = new Date(b.pubDate)
        }
        return b
    },
    appendRawDataToRelease: function(d, c) {
        if (c.captions) {
            d.captions = c.captions
        }
        if (c.categories) {
            d.categories = c.categories
        }
        if (c.chapters) {
            d.chapters = c.chapters
        }
        if (c.copyright) {
            d.copyright = c.copyright
        }
        if (c.provider) {
            d.provider = c.provider
        }
        if (c.customValues) {
            d.customValues = c.customValues
        }
        if (c.mediaPID) {
            d.mediaPID = c.mediaPID
        } else {
            if (c.mediaPid) {
                d.mediaPID = c.mediaPid
            }
        }
    },
    isPrefetch: function() {
        return this.controller.isPrefetch()
    },
    getCurrentRelease: function() {
        return this.currentRelease
    },
    getChapterFromOffset: function(c, h) {
        if (h <= c.aggregateLength) {
            for (var f = 0;
            f < c.chapters.length;
            f++) {
                var g = c.chapters[f];
                if (g.aggregateStartTime + g.length >= h) {
                    g.offset = h - g.aggregateStartTime;
                    return g
                }
            }
        }
        if (c.chapters.length == 1) {
            return c.chapters[0]
        }
        return null
    },
    markOffset: function(h, g, f) {
        if (f === undefined) {
            f = true
        }
        var j = this.getChapterFromOffset(h.chapters, g);
        var i;
        if (!j || j.contentIndex == h.currentIndex) {} else {
            h.currentIndex = j.contentIndex
        }
        i = h.clips[h.currentIndex];
        if (j) {
            i.offset = j.offset;
            if (j.adIndex >= 0 && f) {
                h.currentIndex = j.adIndex
            }
        } else {
            if (g < i.length) {
                i.offset = g
            } else {
                i.offset = i.length
            }
        }
    },
    playCurrentRelease: function() {
        if (this.playlist && this.playlist.releaseURL == this.releaseUrl) {
            this.playlist.currentClipIndex = -1;
            this.clipEnded = false;
            this.controller.dispatchEvent("OnReleaseStart", this.playlist);
            this.releaseProcess.setPlaylist(this.playlist)
        } else {
            if (this.playlist && this.playlist.isAd === true && this.isPrefetch() && (tpIsIOS() || tpIsAndroid())) {
                tpDebug("playCurrentRelease.isAd");
                this.nextClip(false);
                this.clipEnded = false
            } else {
                if (this.releaseUrl) {
                    if (!this.clipEnded) {}
                    this.currentClip = undefined;
                    this.playlist = undefined;
                    this.controller.dispatchEvent("OnReleaseSelected", {
                        releaseUrl: this.releaseUrl,
                        userInitiated: true
                    });
                    this.setReleaseURL(this.releaseUrl)
                } else {
                    tpDebug("ERROR: No release to play!", "PlaybackManager", tpConsts.ERROR)
                }
            }
        }
    },
    setRelease: function(f, e) {
        if (!this.pluginsComplete) {
            this.waitReleaseCall = {
                url: null,
                release: f,
                replaceDefault: e
            };
            return
        }
        var g = this;
        if (this.isNoSkipPlaying() || this.defaultBlocksPlayback(e)) {
            return
        }
        if (this.currentClip && !this.clipEnded) {
            this.controller.dispatchEvent("OnMediaEnd", this.currentClip)
        }
        var h = {};
        $pdk.apply(h, f);
        this.currentRelease = h;
        g.currentRelease.url = h.url;
        this.tryingToAdvance = false;
        g.controller.callFunction("setReleaseGwt", [h])
    },
    setReleaseURL: function(c, d) {
        if (!this.pluginsComplete) {
            this.waitReleaseCall = {
                url: c,
                release: null,
                replaceDefault: d
            };
            return
        }
        if (this.isNoSkipPlaying() || this.defaultBlocksPlayback(d)) {
            return
        }
        this.currentRelease = null;
        this.tryingToAdvance = false;
        tpTime("Time to setReleaseUrl until OnMediaLoadStart");
        tpTime("Time to setReleaseUrl until OnMediaStart");
        this.controller.callFunction("setReleaseURLGwt", [c])
    },
    loadReleaseURL: function(d, e) {
        if (!d) {
            tpDebug("This release has no URL", "LoadReleaseManager", tpConsts.ERROR);
            return
        }
        if (e === false) {
            var f = this.controller.getProperty("releaseUrl");
            if (f !== undefined) {
                return
            }
        }
        this.currentRelease = null;
        this.controller.callFunction("loadReleaseUrlGwt", [d])
    },
    loadRelease: function(f, e) {
        var h = f.url;
        if (!h) {
            tpDebug("This release has no URL", "LoadReleaseManager", tpConsts.ERROR);
            return
        }
        if (e === false) {
            var g = this.controller.getProperty("releaseUrl");
            if (g !== undefined) {
                return
            }
        }
        this.currentRelease = f;
        this.controller.callFunction("loadReleaseGwt", [h])
    },
    tryWritePlayer: function() {
        if ((tpIsIOS() || tpIsAndroid())) {
            tpDebug("doSetReleaseUrl: calling writePlayer()");
            this.controller.writePlayer("", true)
        }
    },
    isNoSkipPlaying: function() {
        return this.currentClip && this.currentClip.baseClip && this.currentClip.baseClip.noSkip
    },
    defaultBlocksPlayback: function(b) {
        if (b === false && this.player.releaseUrl) {
            return true
        }
        return false
    },
    qs: function(b) {
        return b.indexOf("?") >= 0 ? "&" : "?"
    },
    dispatchReleaseError: function(c, d) {
        tpDebug("Error loading SMIL XML");
        if (c) {
            this.error = c;
            this.controller.showPlayerCard("forms", "tpErrorCard", null, {
                title: this.error.title,
                message: this.error.description,
                playNext: true
            })
        }
        this.controller.dispatchEvent("OnReleaseError", {
            url: d,
            title: c.title,
            description: c.description,
            exception: c.exception,
            responseCode: c.responseCode,
            alternateSrc: c.alternateSrc
        })
    },
    setSmil: function(b) {
        if (!this.pluginsComplete) {
            this.waitSmil = b;
            return
        }
        if (this.isNoSkipPlaying()) {
            return
        }
        this.currentRelease = null;
        this.tryingToAdvance = false;
        this.controller.callFunction("setSmilGwt", [b])
    },
    pause: function(c, d) {
        if (this.video) {
            this.player.pauseUserInitiated = !! d;
            if (c) {
                this.doPauseVideo()
            } else {
                this.doUnPauseVideo()
            }
        }
    },
    doPauseVideo: function() {
        if (this.currentClip && this.currentClip.streamType === "empty") {
            if (!this.isNoopClip(this.currentClip)) {
                this.controller.getVideoProxy().pause()
            }
            this.controller.dispatchEvent("OnPlayerPause")
        } else {
            if (this.videoEngine.isPaused() == false) {
                this.videoEngine.pause();
                this.controller.dispatchEvent("OnPlayerPause")
            }
        }
    },
    doUnPauseVideo: function() {
        this.play();
        this.controller.dispatchEvent("OnPlayerUnPause");
        if (this.clipStarted) {
            this.player.onPlay()
        }
    },
    play: function() {
        if (this.isNoopClip(this.currentClip)) {
            return
        }
        if (this.currentClip && this.currentClip.streamType === "empty") {
            this.controller.getVideoProxy().play()
        } else {
            tpDebug("PBM calling play!");
            this.videoEngine.play()
        }
    },
    setVolume: function(b) {
        this.videoEngine.setVolume(b / 100);
        this.controller.dispatchEvent("OnVolumeChange", b);
        this._oldVolume = b
    },
    getVolume: function() {
        return this._oldVolume
    },
    doMute: function(b) {
        if (this._isMuted == undefined) {
            this._isMuted = false
        }
        if (b != this._isMuted) {
            this._isMuted = b;
            this.videoEngine.mute(this._isMuted);
            if (this._isMuted) {
                this._oldVolume = this.videoEngine.getVolume();
                this.videoEngine.setVolume(0)
            } else {
                if (this._oldVolume) {
                    if (this._oldVolume >= 0) {
                        this.videoEngine.setVolume(this._oldVolume)
                    }
                    this.oldVolume = undefined
                }
            }
            this.controller.dispatchEvent("OnMute", this._isMuted)
        }
    },
    getMuteState: function() {
        return this._isMuted
    },
    stripM3U: function(i) {
        var g = 0;
        var h = 0;
        var j;
        var f = false;
        for (;
        g < i.clips.length;
        g++) {
            if (!i.clips[g].isAd && i.baseClips[g].URL.indexOf("m3u") != -1) {
                if (!f) {
                    f = true;
                    h = g;
                    j = i.baseClips[g].URL;
                    i.clips[g].endTime = i.clips[g].mediaLength;
                    i.chapters.chapters = [i.chapters.chapters[0]];
                    i.chapters.chapters[0].length = i.clips[0].mediaLength
                } else {
                    if (i.baseClips[g].URL == j) {
                        i.baseClips.splice(g, 1);
                        i.clips.splice(g, 1);
                        g--
                    }
                }
            } else {
                if (f && i.baseClips[g].URL != j && g > 0 && g < (i.clips.length - 1)) {
                    i.baseClips.splice(g, 1);
                    i.clips.splice(g, 1);
                    g--
                } else {
                    if (f) {
                        i.clips[g].clipIndex = g
                    }
                }
            }
        }
    },
    hasVTT: function(f) {
        var d = false;
        if (f || f.length > 0) {
            var e = 0;
            for (e;
            e < f.length;
            e++) {
                if (f[e].MIMEType == "text/vtt") {
                    d = true;
                    break
                }
            }
        }
        return d
    },
    shouldStripVTT: function(d) {
        if (!this.hasVTT(d.baseClip.availableSubtitles)) {
            return false
        }
        var c = d.baseClip.type ? d.baseClip.type.toLowerCase() : "";
        if (c == "video/mp4" && $pdk._browserCheck([{
            browser: "chrome",
            version: 31,
            device: false
        }, {
            browser: "safari",
            version: 7.1
        }, {
            browser: "firefox",
            version: 33
        }, {
            browser: "ipad",
            osversion: 8
        }, {
            browser: "iphone",
            osversion: 8
        }, {
            browser: "ipod",
            osversion: 8
        }, {
            browser: "chrome",
            version: 39,
            os: "android"
        }, {
            browser: "android",
            version: 4.4
        }])) {
            tpDebug("NOT stripping VTT; mime type is mpeg4 and browser passes");
            return false
        } else {
            if (c == "application/x-mpegURL".toLowerCase() && $pdk._browserCheck([{
                browser: "safari",
                version: 7.1
            }, {
                browser: "ipad",
                osversion: 8
            }, {
                browser: "iphone",
                osversion: 8
            }, {
                browser: "ipod",
                osversion: 8
            }, {
                browser: "chrome",
                version: 39,
                os: "android"
            }, {
                browser: "android",
                version: 4.4
            }])) {
                tpDebug("NOT stripping VTT; mime type is hls and browser passes");
                return false
            } else {
                if (c == "application/dash+xml" && $pdk._browserCheck([{
                    browser: "chrome",
                    version: 31,
                    device: false
                }])) {
                    tpDebug("NOT stripping VTT; mime type is mpeg-dash and browser passes");
                    return false
                }
            }
        }
        tpDebug("stripping VTT for mime type " + c);
        return true
    },
    stripVTT: function(h) {
        var g = h.baseClip.availableSubtitles;
        if (!g || g.length == 0) {
            return
        }
        var f = 0;
        var e = [];
        for (f;
        f < g.length;
        f++) {
            if (g[f].MIMEType != "text/vtt") {
                e.push(g[f])
            }
        }
        if (e.length == g.length) {
            return
        }
        h.baseClip.availableSubtitles = e;
        this.updateClip(h)
    },
    playPlaylist: function(g) {
        if (this.releaseProcess) {
            this.controller.dispatchEvent("OnReleaseEnd", this.playlist);
            this.destroyReleaseProcess(this.releaseProcess);
            this.releaseProcess = undefined;
            var e = this;
            setTimeout(function() {
                e.playPlaylist(g)
            }, 1);
            return
        }
        if (!g || g.isError) {
            this.dispatchReleaseError({
                title: g.baseClips[0].title,
                description: g.baseClips[0].description,
                exception: g.baseClips[0].contentCustomData.exception,
                responseCode: g.baseClips[0].contentCustomData.responseCode,
                alternateSrc: g.baseClips[0].URL
            }, this.releaseUrl);
            return
        }
        var h = g.metaTags;
        if (h) {
            var f = 0;
            for (;
            f < h.length;
            f++) {
                if (h[f].name === "manifestServiceUrl") {
                    this.playlistHasSSA = true
                }
            }
        }
        if ($pdk.isAndroid && !$pdk.isAndroid44plus && !this.playlistHasSSA) {
            this.stripM3U(g)
        }
        this.releaseProcess = this.createReleaseProcess();
        this.playlist = g;
        if (!(this.isPrefetch() && (tpIsIOS() || tpIsAndroid()))) {
            tpDebug("selector: playing current release");
            if (this.currentRelease) {
                this.mergeReleaseWithPlaylist(this.currentRelease, g);
                g.release = this.currentRelease;
                g.release.mediaPID = g.mediaPID
            } else {
                g.release = this.getReleaseFromPlaylist(g)
            }
            this.controller.dispatchEvent("OnReleaseStart", g);
            this.releaseProcess.setPlaylist(g)
        } else {
            this.player.videoEngine.load(this.player.createMediaFileFromClip(this.playlist.baseClips[0]), 0);
            this.player.currentURL = this.playlist.baseClips[0].URL
        }
    },
    mergeReleaseWithPlaylist: function(e, f) {
        var d = this.getReleaseFromPlaylist(f);
        if (!e) {
            e = {
                globalDataType: "com.theplatform.pdk.data::Release"
            }
        }
        if (!e.title) {
            e.title = d.title
        }
        if (!e.author) {
            e.author = d.author
        }
        if (!e.duration) {
            e.duration = d.duration
        }
        if (!e.length) {
            e.length = d.length
        }
        if (!e.bitrate) {
            e.bitrate = d.bitrate
        }
        if (!e.description) {
            e.description = d.description
        }
        if (!e.categories) {
            e.categories = d.categories
        }
        if (!e.copyright) {
            e.copyright = d.copyright
        }
        if (!e.countries) {
            e.countries = d.countries
        }
        if (!e.keywords) {
            e.keywords = d.keywords
        }
        if (!e.link) {
            e.link = d.link
        }
        if (!e.pid) {
            e.pid = d.pid
        }
        if (!e.provider) {
            e.provider = d.provider
        }
        if (!e.ratings) {
            e.ratings = d.ratings
        }
        if (!e.text) {
            e.text = d.text
        }
        if (!e.chapters) {
            e.chapters = d.chapters
        }
        if (!e.url) {
            e.url = d.url
        }
        if (!e.mediaPID) {
            e.mediaPID = d.mediaPID
        }
        if (!e.airdate) {
            e.airdate = d.airdate
        }
    },
    getReleaseFromPlaylist: function(i) {
        if (i.release) {
            return i.release
        }
        var g;
        var l = 0;
        var h = i.baseClips.length;
        var j;
        var k;
        for (;
        l < h;
        l++) {
            if (!i.baseClips[l].isAd) {
                j = i.baseClips[l];
                k = i.clips[l];
                break
            }
        }
        if (!j) {
            return undefined
        }
        g = {
            globalDataType: "com.theplatform.pdk.data::Release",
            title: i.title ? i.title : j.title,
            author: j.author,
            duration: j.releaseLength,
            length: j.releaseLength,
            bitrate: j.bitrate,
            description: j.description,
            categories: j.categories,
            copyright: j.copyright,
            countries: [i.countryCode],
            keywords: j.keywords,
            link: j.moreInfo,
            pid: i.releasePID,
            provider: j.provider,
            ratings: j.ratings,
            text: j.description,
            chapters: k.chapter ? k.chapter.chapters : [],
            url: i.releaseURL,
            mediaPID: i.mediaPID,
            airdate: i.airdate
        };
        return g
    },
    createReleaseProcess: function() {
        var b = com.theplatform.pdk.ReleaseProcessExported.getReleaseProcess(this.controller.id, this.controller.scopes.toString());
        b.addEventListener("OnClipFromPlaylist", this, this.clipFromPlaylist);
        b.addEventListener("OnNoSkipChanged", this, this.noSkipChanged);
        return b
    },
    destroyReleaseProcess: function(b) {
        if (b) {
            b.removeEventListener("OnClipFromPlaylist", this.clipFromPlaylist);
            b.removeEventListener("OnNoSkipChanged", this.noSkipChanged);
            b.destroy()
        }
    },
    noSkipChanged: function(b) {
        this.controller.dispatchEvent("OnNoSkipChanged", b.data)
    },
    clipFromPlaylist: function(h) {
        var e = h.data;
        if (!e) {
            if (!this.clipEnded && this.currentClip && this.currentClip.streamType != "empty") {
                this.doEndMedia(this.currentClip)
            }
            this.endRelease();
            this.playlist = undefined;
            var f = this.currentReleaseList ? [this.currentReleaseList] : null;
            var g = this.advanceClipFromExternalCall;
            this.advanceClipFromExternalCall = false;
            if (!this.wantPrevious) {
                this.advanceToNextRelease(false, !g, f)
            } else {
                this.wantPrevious = false;
                this.controller.playPrevious(false, f)
            }
        } else {
            if (this.currentClip && !this.currentClip.baseClip.isAd) {
                this.currentClip.offset = 0;
                this.releaseProcess.updateClip(this.currentClip)
            }
            this.wantPrevious = false;
            tpDebug("release process is telling us to play clip with clipIndex " + e.clipIndex + " and src:" + e.URL);
            this.processClip(e)
        }
    },
    advanceToNextRelease: function(h, f, e) {
        this.tryingToAdvance = true;
        this.controller.playNext(h, f, e);
        var g = this;
        setTimeout(function() {
            if (g.tryingToAdvance) {
                g.tryingToAdvance = false;
                g.controller.loadReleaseURL(g.currentRelease ? g.currentRelease.url : g.releaseUrl);
                g.standbyManager.setStandby(true, true)
            }
        }, 300)
    },
    endRelease: function() {
        if (tpIsAndroidLegacy()) {
            this.controller.showFullScreen(false)
        }
        this.controller.dispatchEvent("OnReleaseEnd", this.playlist);
        this.releaseProcess = undefined;
        this.currentClip = null
    },
    clearCurrentRelease: function() {
        if (this.releaseProcess) {
            this.destroyReleaseProcess(this.releaseProcess);
            this.controller.callFunction("clearReleaseGwt");
            this.endRelease()
        }
        this.controller.dispatchEvent("OnClearCurrentRelease");
        this.controller.dispatchEvent("OnResetPlayer")
    },
    resetRelease: function() {
        var b = this.player.resetVideoElement();
        this.video = b.video;
        this.videoEngine = b.videoEngine;
        this.endRelease()
    },
    sendError: function(g) {
        var j = g.clip;
        if (j && j.baseClip.failOverClips.length > 0) {
            var k = j.baseClip.failOverClips[0];
            var l = com.theplatform.pdk.SelectorExported.parseClip(k);
            if (j.baseClip.failOverClips.length > 1) {
                var h = j.baseClip.failOverClips;
                h.splice(0, 1);
                l.baseClip.failOverClips = h
            } else {
                l.baseClip.failOverClips = []
            }
            var i = $.extend(true, {}, j);
            i.URL = l.URL;
            i.baseClip = l.baseClip;
            i.id = l.id;
            this.player.doMediaLoadStart(i)
        } else {
            this.controller.dispatchEvent("OnMediaError", g)
        }
    },
    handleMediaError: function(d) {
        var c = d.data;
        if (c && c.globalDataType == "com.theplatform.pdk.data::LicenseError") {
            this.error = {
                title: "Security Error",
                description: "This protected content cannot be played on the current system.",
                exception: c.friendlyMessage,
                responseCode: null,
                alternateSrc: c.clip.URL
            };
            this.endRelease();
            this.controller.showPlayerCard("forms", "tpErrorCard", null, {
                title: this.error.title,
                message: this.error.description,
                playNext: true
            })
        } else {
            if (c && c.endRelease) {
                this.wasError = true;
                this.endRelease();
                this.advanceToNextRelease(false, true)
            } else {
                if (this.releaseProcess) {
                    this.wasError = true;
                    this.advanceClipFromExternalCall = false;
                    this.releaseProcess.nextClip()
                }
            }
        }
    },
    handleMediaSeek: function(h) {
        var i = h.data;
        tpDebug("Got OnMediaSeek");
        if (!this.currentClip) {
            tpDebug("PBM ignoring seek");
            return
        }
        var e = i.end.mediaTime;
        tpDebug("Seek time is:" + e);
        if (e >= this.currentClip.endTime || e < (this.currentClip.startTime - 500)) {
            var g = this.currentClip;
            tpDebug("Telling releaseProcess to seek to " + i.end.currentTimeAggregate);
            if (this.releaseProcess.seekToPosition(i.end.currentTimeAggregate)) {
                this.controller.dispatchEvent("OnMediaEnd", g)
            } else {
                tpDebug("releaseProcess.seekToPosition returned false");
                tpDebug("Endtime is " + this.currentClip.endTime + " duration is " + this.currentClip.duration);
                if (this.currentClip.duration > 1) {
                    this.endMedia()
                } else {
                    tpDebug("Continuing to play because we don't know the duration")
                }
            }
        } else {
            if (e <= this.currentClip.startTime && Math.abs(this.videoEngine.getCurrentTime() - this.currentClip.startTime) > 300) {
                var j = this;
                tpDebug("targetTime is " + e + ", need to seek to " + this.currentClip.startTime);
                setTimeout(function() {
                    j.controller.seekToPosition(j.currentClip.startTime)
                }, 1)
            } else {
                tpDebug("seekObj was within clip boundaries: " + this.currentClip.startTime + "<" + i.end.mediaTime + "<" + this.currentClip.endTime)
            }
        }
    },
    nextClipExternal: function() {
        this.nextClip(true)
    },
    nextClip: function(b) {
        this.advanceClipFromExternalCall = b === true;
        if (b || this.isNoopClip(this.currentClip) || this.isProxyClip(this.currentClip) || this.playlistHasSSA) {
            this.clipEnded = true;
            this.controller.dispatchEvent("OnMediaEnd", this.currentClip)
        }
        if (this.releaseProcess) {
            tpDebug("PBM calling releaseProcess.nextClip");
            this.releaseProcess.nextClip()
        } else {
            this.advanceToNextRelease(false, false)
        }
    },
    previousClip: function() {
        this.wantPrevious = true;
        this.advanceClipFromExternalCall = true;
        if (this.releaseProcess) {
            tpDebug("PBM calling releaseProcess.nextClip");
            this.releaseProcess.previousClip()
        } else {
            this.controller.playPrevious(false)
        }
    },
    processClip: function(y, v) {
        var t = this.adManager.isAd(y);
        var u = false;
        if (t) {
            if (!this.adManager.validateAd(y)) {
                this.nextClip(this.advanceClipFromExternalCall);
                return
            }
            var p = y.URL.indexOf("?") > 0 ? y.URL.substr(0, y.URL.indexOf("?")) : y.URL;
            var x = true;
            for (var w = 0;
            w < this.playlist.clips.length;
            w++) {
                var q = this.playlist.clips[w];
                if (q.baseClip.isAd) {
                    continue
                }
                var z = q.URL.indexOf("?") > 0 ? q.URL.substr(0, q.URL.indexOf("?")) : q.URL;
                x = z != p;
                break
            }
            u = x ? this.adManager.checkAd(y) : false;
            y.hasPlayed = true;
            this.updateClip(y);
            this.lastAdClip = y;
            tpDebug("CheckAd returns " + u)
        }
        var i = false;
        if (this.currentClip) {
            i = y.clipIndex < this.currentClip.clipIndex
        }
        this.currentClip = y;
        if (!u) {
            var r = false;
            if (!i) {
                r = this.clipWrapperManager.processClip(y)
            }
            var c = false;
            var s = this;
            c = this.urlManager.checkClip(y, function(a) {
                if (y.id === a.id) {
                    if (!r && v !== true) {
                        tpDebug("processClip.!wrapped: " + y.URL);
                        s.urlRewritten(a)
                    }
                }
            });
            y.wasProcessed = true
        }
    },
    urlRewritten: function(b) {
        this.updateClip(b);
        if (b.baseClip.type !== "application/vast+xml" && b.baseClip.type !== "text/plain") {
            if (b.baseClip.isAd) {
                this.lastAdClip = b
            }
            this.clipStarted = false;
            tpDebug("urlreWrtten for clip with URL:" + b.URL);
            if (b.baseClip.security && b.baseClip.security.toLowerCase() === "playready") {
                this.challengeData.setClip(b)
            }
            this.player.doMediaLoadStart(b);
            this.releaseProcess.updateClip(b)
        } else {
            this.endMedia(b)
        }
    },
    insertPlaylist: function(b) {
        if (this.releaseProcess) {
            this.releaseProcess.insertPlaylist(b)
        }
    },
    insertClip: function(b) {
        if (this.releaseProcess) {
            this.releaseProcess.insertClip(b)
        }
    },
    injectPlaylist: function(c) {
        if (this.releaseProcess) {
            var d = this.currentClip.currentMediaTime == 0 && this.currentClip.startTime > 0 ? this.currentClip.startTime : this.currentClip.currentMediaTime;
            this.releaseProcess.injectPlaylist(c, d)
        }
    },
    updateMediaTime: function(b) {
        if (this.releaseProcess) {
            this.releaseProcess.updateMediaTime(b)
        }
    },
    updateClip: function(b) {
        if (this.releaseProcess) {
            this.releaseProcess.updateClip(b)
        }
    },
    updatePlaylist: function(b) {
        if (this.releaseProcess) {
            this.releaseProcess.updatePlaylist(b)
        }
    },
    endMedia: function(d, f) {
        if (!d) {
            d = this.currentClip
        }
        d.offset = 0;
        this.releaseProcess.updateClip(d);
        if (d && d.mediaLength - 1000 <= d.currentMediaTime) {
            var e = d
        }
        this.doEndMedia(d);
        if (e) {
            this.controller.dispatchEvent("OnMediaComplete", e)
        }
        if (this.releaseProcess && !f) {
            tpDebug("Media ended for clip with url: " + d.baseClip.URL + " and index " + d.clipIndex + " , PBM calling nextClip()");
            this.advanceClipFromExternalCall = false;
            this.releaseProcess.nextClip()
        }
    },
    doEndMedia: function(b) {
        this.currentClip = null;
        if (!this.wasError) {
            tpDebug("doEndMedia dispatching OnMediaEnd for clip:" + b.baseClip.URL);
            this.controller.dispatchEvent("OnMediaEnd", b)
        }
        this.wasError = false
    },
    wrapClip: function(c, d) {
        this.releaseProcess.wrapClip(c, d)
    },
    executeCurrentRelease: function() {},
    isNoopClip: function(b) {
        if (!b) {
            return false
        }
        return ((b.URL == "" || b.isExternal) && b.baseClip.isAd && b.streamType == "empty")
    },
    isProxyClip: function(b) {
        if (!b) {
            return false
        }
        return (!(b.URL == "" || b.isExternal) && b.baseClip.isAd && b.streamType == "empty")
    }
});
tpPlayer = PDKComponent.extend({
    _generateExportedMarkup: function() {
        var b = "";
        b += '<div class="tpLayers" id="' + this.id + '" >';
        b += '  <div class="tpVideo" id="' + this.id + '.player" ></div>';
        b += '  <div class="tpVideoBlocker" id="' + this.id + '.controlBlocker" ></div>';
        b += '  <div class="tpBlocker" id="' + this.id + '.blocker" ></div>';
        b += '  <div class="tpPlugins" id="' + this.id + '.plugins" ></div>';
        b += '  <div class="tpSubtitles" id="' + this.id + '.subtitles" style="pointer-events:none" ></div>';
        b += '  <div class="tpCards" id="' + this.id + '.cards" style="pointer-events:none;z-index:802;-webkit-touch-callout: text;-webkit-user-select: text;-khtml-user-select: text;-moz-user-select: text;-ms-user-select: text;user-select: text;left:0px;top:0px" ></div>';
        b += "</div>";
        b += '  <div class="tpOverlays" id="' + this.id + '.overlays" style="z-index:801;top:0px;left:0px;pointer-events:none;position:absolute" ></div>';
        b += '  <div class="tpControls" id="' + this.id + '.controls" style="z-index:800;top:0px;left:0px;pointer-events:none;position:absolute" ></div>';
        return b
    },
    init: function(i, g, h, k, j) {
        var l = this;
        this.id = i;
        this._resizeTimout = 0;
        this._tryResizeAttempts = 0;
        this.pluginsComplete = false;
        this.videoEngine = j;
        this.stayInFullScreen = true;
        if (k === undefined) {
            k = i
        }
        this.widgetId = k;
        this.controller = new PlayerController(i, this, k);
        if (tpIsIOS() || tpIsAndroid()) {
            this.stayInFullScreen = false
        }
        this.unloaded = true;
        this.controller.addEventListener("OnMediaAreaChanged", function() {
            l.handleOnMediaAreaChanged.apply(l, arguments)
        });
        this.controller.addEventListener("OnOverlayAreaChanged", function() {
            l.handleOnOverlayAreaChanged.apply(l, arguments)
        })
    },
    setProperty: function(d, c) {
        if (this.controller) {
            this.controller.setProperty(d, c)
        }
    },
    getProperty: function(b) {
        if (this.controller) {
            return this.controller.getProperty(b)
        } else {
            return null
        }
    },
    attach: function(b) {
        this.initialize();
        this.video = document.getElementById(b);
        this.ready()
    },
    setSeekHandler: function() {
        if (this.seekHandler) {
            this.seekHandler.destroy()
        }
        this.seekHandler = new SeekHandler(this.videoEngine);
        var b = this;
        this.userSeekedListener = function(a) {
            b.userSeeked(a)
        };
        this.seekErrorListener = function(a) {
            b.seekFailed(a)
        };
        this.seekHandler.addEventListener(SeekEvents.USERSEEKED, this.userSeekedListener);
        this.seekHandler.addEventListener(SeekEvents.SEEKFAILED, this.seekErrorListener)
    },
    seekFailed: function(b) {
        this.onError(b)
    },
    userSeeked: function(b) {
        if (this.currentClip.baseClip.noSkip && !tpIsIOS()) {
            this.seekHandler.doSeek(this.currentClip.startTime / 1000)
        } else {
            if (this.currentClip.baseClip.noSkip && tpIsIOS()) {} else {
                tpDebug("got userSeeked: showing controls");
                this.showControls(true);
                this.onSeeked()
            }
        }
    },
    progSeeked: function(b) {
        tpDebug("progSeeked fired");
        this.onSeeked()
    },
    resetVideoElement: function() {
        var b = document.createElement("div");
        b.setAttribute("id", this.video.getAttribute("id"));
        b.setAttribute("class", this.video.getAttribute("class"));
        b.setAttribute("style", this.video.getAttribute("style"));
        b.setAttribute("x-webkit-airplay", "allow");
        this.video.parentNode.replaceChild(b, this.video);
        this.video = b;
        this.videoEngine.setParentElement(this.video);
        if (this.videoengineruntime && this.videoengineruntime.toLowerCase() === "flash") {
            this.videoEngine.setRuntime("FLASH")
        } else {
            this.videoEngine.setRuntime("HTML5")
        }
        this.startedPlaying = false;
        this.currentClip = undefined;
        this.attachListeners();
        return {
            video: this.video,
            videoEngine: this.videoEngine
        }
    },
    createContainer: function(p) {
        var n = this.framecolor ? this.framecolor : "#000000";
        var i = this.backgroundcolor ? this.backgroundcolor : "#ffffff";
        this.bdcolor = n.replace("0x", "#");
        this.bgcolor = i.replace("0x", "#");
        var j = "";
        j += "<div class='tpBackground' style=\"background-color: " + this.bgcolor + "; border-color: " + this.bdcolor + '"></div>';
        j += '<div class="tpLayers" id="' + this.id + '" >';
        j += '  <div class="tpVideo" id="' + this.id + '.player" ></div>';
        j += '  <div class="tpVideoBlocker" id="' + this.id + '.controlBlocker" ></div>';
        j += '  <div class="tpBlocker" id="' + this.id + '.blocker" ></div>';
        j += '  <div class="tpPlugins" id="' + this.id + '.plugins" ></div>';
        j += '  <div class="tpSubtitles" id="' + this.id + '.subtitles" style="pointer-events:none" ></div>';
        j += '  <div class="tpCards" id="' + this.id + '.cards" style="pointer-events:none;z-index:802;-webkit-touch-callout: text;-webkit-user-select: text;-khtml-user-select: text;-moz-user-select: text;-ms-user-select: text;user-select: text;" ></div>';
        j += '  <div class="tpOverlays" id="' + this.id + '.overlays" style="z-index:801;top:0px;left:0px;pointer-events:none;position:absolute" ></div>';
        j += '  <div class="tpControls" id="' + this.id + '.controls" style="z-index:800;top:0px;left:0px;pointer-events:none;position:absolute" ></div>';
        j += "</div>";
        if (p) {
            p.innerHTML = j
        } else {
            document.write(j)
        }
        this.container = document.getElementById(this.id);
        this.pluginLayer = document.getElementById(this.id + ".plugins");
        this.player = document.getElementById(this.id + ".player");
        this.controlBlocker = document.getElementById(this.id + ".controlBlocker");
        var m = this;
        var k = function(a) {
                if (m.videoEngine.isPaused() && (!m._hideNativeControls)) {
                    return true
                }
                if (!m.clipStarted) {
                    return false
                }
                var b = m.videoClicked(a);
                if (b) {
                    if (!a) {
                        var a = window.event
                    }
                    a.cancelBubble = true;
                    if (a.stopPropagation) {
                        a.stopPropagation()
                    }
                    if (a.preventDefault) {
                        a.preventDefault()
                    }
                    return false
                }
                return true
            };
        anchor = document.createElement("a");
        anchor.style.width = "100%";
        anchor.style.height = "100%";
        anchor.style.background = "transparent";
        anchor.style.display = "block";
        if (!tpIsIOS()) {
            anchor.onclick = k
        } else {
            anchor.ontouchstart = k
        }
        this.controlBlocker.appendChild(anchor);
        this.videoClickAnchor = anchor;
        this.blocker = document.getElementById(this.id + ".blocker");
        var o = this.backgroundcolor;
        if (o) {
            idx = o.indexOf("0x");
            if (idx !== -1) {
                o = o.substring(idx + 2);
                o = "#" + o
            }
            this.blocker.style.backgroundColor = o
        } else {
            this.blocker.style.backgroundColor = "black"
        }
        this.blocker.style.position = "absolute";
        this.blocker.top = 0;
        this.blocker.left = 0;
        this.blocker.style.display = "";
        this.blocker.style.overflow = "hidden";
        this.blocker.style.height = "100%";
        this.blocker.style.width = "100%";
        this.blocker.style.display = "none";
        this.controlsLayer = document.getElementById(this.id + ".controls");
        this.controlsLayer.className = "controlsLayer";
        this.controlsLayer.style.backgroundColor = "transparent";
        this.controlsLayer.style.cssFloat = "left";
        this.controlsLayer.style["float"] = "left";
        this.controlsLayer.style.left = "0px";
        this.controlsLayer.style.top = "0px";
        this.controlBlocker.style.position = "absolute";
        this.controlBlocker.style.display = "none";
        this.blocker.top = 0;
        this.blocker.left = 0;
        this.controlBlocker.style.backgroundColor = "transparent";
        this.controlBlocker.style.height = "100%";
        this.controlBlocker.style.width = "100%";
        this.controlBlocker.style.overflow = "hidden";
        this.player.style.width = "100%";
        this.player.style.height = "100%";
        this.player.style.position = "absolute";
        this.player.style.overflow = "hidden";
        this.pluginLayer.style.width = "100%";
        this.pluginLayer.style.position = "absolute";
        this.controlsLayer.style.width = "100%";
        this.controlsLayer.style.height = "100%";
        this.container.className = "player";
        if ($pdk._phase1Controllers === null || typeof($pdk._phase1Controllers) !== "object") {
            $pdk._phase1Controllers = {}
        }
        var l = document.getElementById(this.controller.id).parentElement.id;
        this.controller.componentId = l;
        $pdk._phase1Controllers[l] = this.controller;
        return p
    },
    isStandbyMode: function() {
        return this.standbyMode || (tpIsAndroid && !tpIsChrome())
    },
    isPrefetch: function() {
        return !this.standbyMode && (tpIsIOS() || tpIsAndroid())
    },
    isFlashPlayer: function() {
        return false
    },
    writePlayer: function(i, j) {
        if (i === "" && j && this.iOSEnabled) {
            return
        }
        var k = i;
        if (!j) {
            tpDebug("writePlayer calling pause()");
            tpDebug("writing player src=" + i + "&format=redirect");
            tpDebug("writePlayer original url:" + i);
            var m = k.indexOf("format=");
            tpDebug("formatIndex=" + m);
            if (m >= 0) {
                tpDebug("found a format in original");
                var p = k.substring(m + 7, k.length);
                var l = "format=";
                var n = p.indexOf("&");
                if (n >= 0) {
                    tpDebug("found & at index:" + n);
                    p = p.substring(0, n)
                }
                l = l + p;
                tpDebug("target=" + l);
                k = k.replace(l, "format=redirect")
            } else {
                if (k.indexOf("?") >= 0) {
                    k = k + "&format=redirect"
                } else {
                    k = k + "?format=redirect"
                }
            }
        }
        tpDebug("writePlayer newUrl:" + k);
        this.ignoreErrors = k === "";
        var o = {
            url: k,
            isAd: false,
            mimeType: "unknown"
        };
        this.videoEngine.load(o, 0);
        if (!this.iOSEnabled) {
            this.iOSEnabled = true
        }
    },
    createVideo: function() {
        if (this.video) {
            this.destroyVideo()
        }
        this.video = document.createElement("div");
        this._hideNativeControls = this.controller.getProperty("overrideNativeControls") == "true" || (this.controller.getProperty("skinUrl") != null && this.controller.getProperty("skinUrl").indexOf(".swf") == -1);
        this._useDefaultPlayOverlay = this.controller.getProperty("useDefaultPlayOverlay");
        if (this._useDefaultPlayOverlay === undefined) {
            this._useDefaultPlayOverlay = false;
            this.controller.setProperty("useDefaultPlayOverlay", this._useDefaultPlayOverlay.toString())
        } else {
            this._useDefaultPlayOverlay = this._useDefaultPlayOverlay == "true"
        }
        this._showControlsBeforeVideo = this.controller.getProperty("showControlsBeforeVideo");
        var b = this.controller.getProperty("mute");
        this._startMuted = b && b.toLowerCase() === "true" ? true : false;
        if (this._showControlsBeforeVideo === undefined) {
            this._showControlsBeforeVideo = true;
            this.controller.setProperty("showControlsBeforeVideo", this._showControlsBeforeVideo.toString())
        } else {
            this._showControlsBeforeVideo = this._showControlsBeforeVideo == "true"
        }
        this.video.id = this.id + ".content";
        this.video.style.width = "100%";
        this.video.style.height = "100%";
        if (this.backgroundcolor) {
            this.video.style.backgroundColor = "#" + this.backgroundcolor.substr(2)
        }
        this.player.appendChild(this.video);
        this.videoLayer = this.controller.getProperty("videoLayer");
        if (!this.videoLayer) {
            this.videoLayer = "test-context"
        }
        this.videoEngine.setParentElement(this.video);
        if (tpIsAndroid()) {
            tpDebug("showing controls");
            this.showControls(true)
        }
        if (this._hideNativeControls) {
            this.showControls(false)
        }
    },
    getVideoProxy: function() {
        return new $pdk.connection.VideoProxy(this.videoEngine)
    },
    loadLayer: function(j, h, f, i, g) {
        if (this.videoEngine) {
            return this.videoEngine.loadLayer(j, h, f)
        } else {
            tpDebug("Trying to call loadLayer without a VideoEngine")
        }
    },
    callLayerFunction: function(f, d, e) {
        if (this.videoEngine) {
            return this.videoEngine.callLayerFunction(f, d, e)
        } else {
            tpDebug("Trying to call callLayerFunction without a VideoEngine")
        }
    },
    setAudioTrackByIndex: function(b) {
        this.videoEngine.setAudioTrackByIndex(b)
    },
    supportsFastForward: function() {
        return this.videoEngine.isPlaybackRateSupported()
    },
    setPlaybackRate: function(d) {
        var c = this.videoEngine.setPlaybackRate(d);
        if (c) {
            this.pbRate = c;
            this.dispatchOnPlaybackRateChanged(c)
        }
    },
    getPlaybackRate: function() {
        var b = this.videoEngine.getPlaybackRate();
        if (b > -1) {
            this.pbRate.rate = b;
            this.dispatchOnPlaybackRateChanged(this.pbRate)
        }
    },
    pbRate: {
        rate: 1,
        previousRate: 1
    },
    dispatchOnPlaybackRateChanged: function(b) {
        this.controller.dispatchEvent("OnPlaybackRateChanged", b)
    },
    setAudioTrackByLanguage: function(b) {
        this.videoEngine.setAudioTrackByLanguage(b)
    },
    getCurrentAudioTrack: function() {
        return this.videoEngine.getCurrentAudioTrack()
    },
    getPauseState: function() {
        return this.paused
    },
    getCurrentPosition: function() {
        return this.currentTimeObject
    },
    destroyVideo: function() {
        if (this.video) {
            this.videoEngine.unload();
            this.player.removeChild(this.video);
            this.video = null
        }
    },
    videoClicked: function(g) {
        if (this.currentClip && this.currentClip.baseClip.moreInfo) {
            if (this.currentClip.baseClip.moreInfo.href) {
                if (!tpIsIOS()) {
                    this.controller.pause(true);
                    this.paused = true
                }
                window.open(this.currentClip.baseClip.moreInfo.href, "_blank")
            }
            var h = $(this.container).parent().offset();
            var e = g.pageX - h.left;
            var f = g.pageY - h.top;
            this.controller.dispatchEvent("OnMediaClick", {
                ctrlKey: g.ctrlKey,
                shiftKey: g.shiftKey,
                localX: e,
                localY: f,
                stageX: g.pageX,
                stageY: g.pageY,
                position: this.currentClip.currentMediaTime
            });
            return true
        }
        return false
    },
    attachListeners: function() {
        if (!this.listeners) {
            this.listeners = new Object()
        }
        var b = this;
        this.videoEngine.addEventListener("LAYER_LOADED", this.listeners.layerLoaded = function(a) {
            tpDebug("Video tag dispatched " + a.type + " with " + a.data)
        }, false);
        this.videoEngine.addEventListener("MEDIA_LOAD_START", this.listeners.loadstart = function(a) {
            tpDebug("Video tag dispatched " + a.type + " with " + a.media.url)
        }, false);
        this.videoEngine.addEventListener("MEDIA_START", this.listeners.start = function(a) {
            tpDebug("Video tag dispatched " + a.type);
            b.onMediaStart(a)
        }, false);
        this.videoEngine.addEventListener("MEDIA_SEEKED", this.listeners.seeked = function(a) {
            tpDebug("Video tag dispatched " + a.type);
            b.onSeeked(a)
        }, false);
        this.videoEngine.addEventListener("MEDIA_END", this.listeners.ended = function(a) {
            tpDebug("Video tag dispatched " + a.type);
            b.onEnded(a)
        }, false);
        this.videoEngine.addEventListener("MEDIA_UNPAUSED", this.listeners.unpause = function(a) {
            tpDebug("Video tag dispatched " + a.type);
            b.onPlay(a)
        }, false);
        this.videoEngine.addEventListener("MEDIA_PAUSED", this.listeners.pause = function(a) {
            tpDebug("Video tag dispatched " + a.type);
            b.onPause(a)
        }, false);
        this.videoEngine.addEventListener("MUTE", this.listeners.mute = function(a) {
            tpDebug("Video tag dispatched " + a.type);
            b.onMuteChange(a)
        }, false);
        this.videoEngine.addEventListener("MEDIA_PLAYING", this.listeners.playing = function(a) {}, false);
        this.videoEngine.addEventListener("MEDIA_LOADING", this.listeners.progress = function(a) {
            tpDebug("Video tag dispatched " + a.type);
            b.onProgress(a)
        }, false);
        this.videoEngine.addEventListener("MEDIA_ERROR", this.listeners.error = function(a) {
            tpDebug("Video tag dispatched " + a.type);
            b.onError(a)
        }, false);
        this.videoEngine.addEventListener("PLAYBACK_ERROR", this.listeners.playbackerror = function(a) {
            tpDebug("Video tag dispatched " + a.type);
            b.onPlaybackError(a)
        }, false);
        this.videoEngine.addEventListener("MEDIA_UNLOADED", this.listeners.unloaded = function(a) {
            tpDebug("Video tag dispatched " + a.type);
            b.unloaded = true
        }, false);
        this.videoEngine.addEventListener("AUDIO_TRACK_SWITCHED", this.listeners.audioTrackSwitched = function(a) {
            b.onAudioTrackSwitched(a)
        }, false);
        this.videoEngine.addEventListener("RESIZE", this.listeners.resize = function(a) {
            b.onResize(a)
        }, false)
    },
    removeListeners: function() {
        var b = this;
        this.videoEngine.removeEventListener("MEDIA_LOAD_START", this.listeners.loadstart);
        this.videoEngine.removeEventListener("MEDIA_START", this.listeners.start);
        this.videoEngine.removeEventListener("MEDIA_SEEKED", this.listeners.seeked);
        this.videoEngine.removeEventListener("MEDIA_END", this.listeners.ended);
        this.videoEngine.removeEventListener("MEDIA_UNPAUSED", this.listeners.unpause);
        this.videoEngine.removeEventListener("MEDIA_PAUSED", this.listeners.pause);
        this.videoEngine.removeEventListener("MEDIA_ERROR", this.listeners.error);
        this.videoEngine.removeEventListener("PLAYBACK_ERROR", this.listeners.playbackerror);
        this.videoEngine.removeEventListener("MEDIA_UNLOADED", this.listeners.unloaded);
        this.videoEngine.removeEventListener("MEDIA_PLAYING", this.listeners.playing);
        this.videoEngine.removeEventListener("MEDIA_LOADING", this.listeners.progress);
        this.videoEngine.removeEventListener("MUTE", this.listeners.mute);
        this.videoEngine.removeEventListener("AUDIO_TRACK_SWITCHED", this.listeners.audioTrackSwitched)
    },
    _bindElement: function(e) {
        this.createContainer(e);
        this.createVideo();
        this.attachListeners();
        var f = this;
        var d = function() {
                f.onResize()
            };
        if (window.attachEvent) {
            window.attachEvent("onresize", d)
        } else {
            window.addEventListener("resize", d);
            window.addEventListener("orientationchange", d)
        }
        this.ready()
    },
    write: function(e) {
        this.createContainer(e);
        this.createVideo();
        this.attachListeners();
        var f = this;
        var d = function() {
                f.onResize()
            };
        if (window.attachEvent) {
            window.attachEvent("onresize", d)
        } else {
            window.addEventListener("resize", d)
        }
        this.initialize();
        var f = this;
        this.ready()
    },
    initialize: function() {
        if (this.scopes) {
            this.controller.scopes = [this.controller.componentId].concat(this.scopes.split(","))
        } else {
            this.controller.scopes = [this.controller.componentId, "default"]
        }
        this.standbyMode = this.standbymode;
        if (this.standbyMode === "true" || tpIsAndroid()) {
            this.controller.setProperty("standbyMode", true);
            this.standbyMode = true
        } else {
            if (this.standbyMode === "prefetch") {
                this.controller.setProperty("standbyMode", "prefetch");
                this.prefetch = true;
                this.standbyMode = false
            } else {
                if (tpIsIOS() || tpIsAndroid()) {
                    this.controller.setProperty("standbyMode", true);
                    this.standbyMode = true
                } else {
                    this.controller.setProperty("standbyMode", false);
                    this.standbyMode = false
                }
            }
        }
        var e = this;
        this.controller.addEventListener("OnPluginsComplete", function() {
            e.pluginsComplete = true;
            e.controller.removeEventListener("OnPluginsComplete", this)
        });
        this.enableFullWindow = false;
        var f = false;
        try {
            f = window.self !== window.top
        } catch (d) {
            f = true
        }
        this._isIFrame = f;
        if (this.controller.getProperty("enablefullwindow") === "true") {
            this.enableFullWindow = true && (!f || $pdk.queue._externalControllerListener)
        } else {
            if (this.controller.getProperty("enablefullwindow") !== "false") {
                if ($pdk.isIE) {
                    this.enableFullWindow = true && (!f || $pdk.queue._externalControllerListener)
                }
            }
        }
        this.playbackManager = new PlaybackManager(this, this.controller);
        this.controller.registerFunction("getMediaArea", this, this.getMediaArea);
        this.controller.registerFunction("setMediaArea", this, this.setMediaArea);
        this.controller.registerFunction("getContentArea", this, this.getContentArea);
        this.controller.registerFunction("writePlayer", this, this.writePlayer);
        this.controller.registerFunction("isPrefetch", this, this.isPrefetch);
        this.controller.registerFunction("isStandbyMode", this, this.isStandbyMode);
        this.controller.registerFunction("isFlashPlayer", this, this.isFlashPlayer);
        this.controller.registerFunction("supportsFullScreen", this, this.supportsFullScreen);
        this.controller.registerFunction("supportsSeek", this, this.supportsSeek);
        this.controller.registerFunction("supportsMute", this, this.supportsMute);
        this.controller.registerFunction("supportsVolume", this, this.supportsVolume);
        this.controller.registerFunction("getVideoProxy", this, this.getVideoProxy);
        this.controller.registerFunction("loadLayer", this, this.loadLayer);
        this.controller.registerFunction("callLayerFunction", this, this.callLayerFunction);
        this.controller.registerFunction("setAudioTrackByIndex", this, this.setAudioTrackByIndex);
        this.controller.registerFunction("setAudioTrackByLanguage", this, this.setAudioTrackByLanguage);
        this.controller.registerFunction("getCurrentAudioTrack", this, this.getCurrentAudioTrack);
        this.controller.registerFunction("getPauseState", this, this.getPauseState);
        this.controller.registerFunction("getCurrentPosition", this, this.getCurrentPosition);
        this.controller.registerFunction("setPlaybackRate", this, this.setPlaybackRate);
        this.controller.registerFunction("getPlaybackRate", this, this.getPlaybackRate);
        this.controller.registerFunction("supportsFastForward", this, this.supportsFastForward)
    },
    ready: function() {
        this._super();
        this.playbackManager.video = this.video;
        this.playbackManager.videoEngine = this.videoEngine;
        if (this.layout || this.layoutUrl) {
            this.controls = document.createElement("div");
            this.controls.className = "controlLayoutArea";
            this.controls.style.height = "40px";
            this.controls.style.width = "100%";
            this.controls.style.background = "#555555"
        }
        this.video.style.padding = "0";
        this.video.style.margin = "0";
        var f = this.controller.getProperty("endCard");
        if (self.CardMediator && f == "HelloWorldEndCard") {
            this.cardHolder = new oldCardMediator(f, this.controller)
        }
        if (this.controller.getProperty("overlayImageURL")) {
            var g = this;
            setTimeout(function() {
                g.controller.addPlayerCard("overlays", "tpOverlayCard", "<div class='tpOverlayCard'><img style='position: absolute; bottom: 5px; right: 5px'/></div>", "urn:theplatform:pdk:area:overlay", {}, {
                    show: function(a) {
                        $pdk.jQuery(a.card).find("img")[0].src = a.player.overlayimageurl
                    },
                    hide: function() {}
                });
                g.controller.showPlayerCard("overlays", "tpOverlayCard")
            }, 1)
        }
        if (this.controller.getProperty("relatedItemsURL")) {}
        var g = this;
        this.controller.addEventListener("OnPlayerLoaded", function() {
            g.handlePlayerLoaded.apply(g, arguments)
        });
        this.controller.addEventListener("OnShowFullScreen", function() {
            g.onShowFullScreen.apply(g, arguments)
        });
        this.controller.addEventListener("OnMediaPlaying", function() {
            g.showVideo();
            g.showBlocker(false)
        });
        this.controller.addEventListener("OnSetRelease", function() {
            g.handleSetRelease.apply(g, arguments)
        });
        this.controller.addEventListener("OnReleaseSelected", function() {
            g.handleSetRelease.apply(g, arguments)
        });
        this.controller.addEventListener("OnSetReleaseUrl", function() {
            g.handleSetReleaseUrl.apply(g, arguments)
        });
        this.controller.addEventListener("OnLoadReleaseUrl", function() {
            g.handleLoadRelease.apply(g, arguments)
        });
        this.controller.addEventListener("OnMediaLoadStart", function() {});
        this.controller.addEventListener("OnMediaStart", function(a) {
            g.showVideo();
            if (a.data.streamType == "empty") {
                g.showControlBlocker(false)
            } else {
                if (!g._hideNativeControls) {
                    if (a.data.baseClip.isAd) {
                        g.showControlBlocker(true)
                    } else {
                        g.showControlBlocker(false)
                    }
                } else {
                    g.showControlBlocker(true)
                }
            }
        });
        this.controller.addEventListener("OnReleaseStart", function() {
            g.handleReleaseStart.apply(g, arguments)
        });
        this.controller.addEventListener("OnReleaseEnd", function() {
            g.handleReleaseEnd.apply(g, arguments)
        });
        this.controller.addEventListener("OnMediaEnd", function() {
            g.handleMediaEnd.apply(g, arguments)
        });
        this.controller.addEventListener("OnClearCurrentRelease", function() {
            g.handleClearCurrentRelease.apply(g, arguments)
        });
        this.controller.addEventListener("OnShowCard", function() {
            g.onShowCard.apply(g, arguments)
        });
        this.controller.addEventListener("OnHideCard", function() {
            g.onHideCard.apply(g, arguments)
        });
        this.controller.addEventListener("OnShowControls", function() {
            g.onShowControls.apply(g, arguments)
        });
        this.controller.registerFunction("seekToPosition", this, this.seekToPosition);
        this.controller.registerFunction("seekToPercentage", this, this.seekToPercentage);
        if (this.pluginsComplete === false) {
            var h = g;
            var e = function() {
                    if (h.pluginsComplete) {
                        return
                    }
                    h.pluginsComplete = true;
                    h.controller.removeEventListener("OnPlugInsComplete", e);
                    h.controller.dispatchEvent("OnPlayerLoaded", [h.id])
                };
            this.controller.addEventListener("OnPlugInsComplete", e);
            return
        } else {
            this.controller.dispatchEvent("OnPlayerLoaded", [this.id])
        }
    },
    handleShowPlayOverlay: function(b) {
        if (b.data) {
            if (this.videoEngine && this.videoEngine.isFullScreen()) {
                if (!this.stayInFullScreen) {
                    tpDebug("Exiting fullscreen");
                    this.controller.showFullScreen(false)
                }
            }
        }
    },
    onShowControls: function(b) {
        this.controller.getOverlayArea()
    },
    onShowCard: function(b) {
        if (tpIsIPhone()) {
            this.player.style.left = "-10000px"
        }
    },
    onHideCard: function(b) {
        if (tpIsIPhone()) {
            this.player.style.left = "0px"
        }
    },
    handlePlayerLoaded: function(b) {
        if (!this.releaseUrl) {
            return
        }
        if (this.autoPlay && !(tpIsIOS() || tpIsAndroid())) {
            this.controller.dispatchEvent("OnReleaseSelected", {
                releaseUrl: this.releaseUrl,
                userInitiated: false
            });
            tpDebug("Autoplaying releaseUrl:" + this.releaseUrl);
            this.controller.setReleaseURL(this.releaseUrl)
        } else {
            this.controller.loadReleaseURL(this.releaseUrl)
        }
    },
    handleMediaEnd: function(b) {},
    onShowFullScreen: function(b) {
        if (b.data) {
            this.container.style.backgroundColor = this.bgcolor
        } else {
            this.container.style.backgroundColor = ""
        }
        this.onResize()
    },
    supportsFullScreen: function() {
        try {
            var d = !(this.playlistHasSSA && this.currentClip && this.currentClip.baseClip.isAd && tpIsIOS()) && this.allowfullscreen === "true" && (this.videoEngine.isFullScreenSupported() || typeof(this.container.webkitRequestFullScreen) === "function" || typeof(this.container.mozRequestFullScreen) === "function" || (typeof(this.container.msRequestFullScreen) === "function" && !this._isIFrame) || this.enableFullWindow);
            return !!d
        } catch (c) {
            return false
        }
    },
    supportsSeek: function() {
        return this.videoEngine.isSeekSupported()
    },
    supportsMute: function() {
        return this.videoEngine.isMuteSupported()
    },
    supportsVolume: function() {
        return this.videoEngine.isSetVolumeSupported()
    },
    seekToPosition: function(b) {
        this.doSeek(b)
    },
    controlsLoaded: function(c, d) {
        if (!c) {
            if (d) {
                this._hideNativeControls = this.controller.getProperty("overrideNativeControls") == "true";
                this.videoEngine.setUseNativeControls(!this._hideNativeControls)
            }
        }
    },
    doSeek: function(g) {
        if (g == 0) {
            g = 1
        }
        if (this.currentClip && (!this._lastSeekTime || Date.now() - this._lastSeekTime > 500)) {
            var f = this.getClipTime(g);
            if (f >= this.currentClip.mediaLength) {
                f = this.currentClip.mediaLength - 100
            }
            this._lastSeekTime = Date.now();
            var e = this;
            this.seekTimeObject = this.createCurrentTimeObject();
            if ($pdk.isAndroid && !$pdk.isAndroid44plus && this.currentClip.URL.toLowerCase().indexOf("m3u") !== -1) {
                tpDebug("Ignoring seek for m3u on legacy android");
                if (!this.isPaused && !this.videoEngine.isPaused()) {
                    this.controller.dispatchEvent("OnMediaPlaying", this.seekTimeObject)
                }
            } else {
                if (!this.currentClip.chapter || !this.currentClip.chapter.chapters.isAggregate) {
                    this.isSeeking = true;
                    setTimeout(function() {
                        e.videoEngine.seek(f)
                    }, 1)
                } else {
                    if (this.currentClip.chapter.startTime < f && this.currentClip.chapter.endTime > f) {
                        this.isSeeking = true;
                        setTimeout(function() {
                            e.videoEngine.seek(f)
                        }, 1)
                    } else {
                        clearInterval(this.timeUpdateTimer);
                        var h = {
                            globalDataType: "com.theplatform.pdk.data::SeekObject"
                        };
                        h.end = this.createCurrentTimeObject(f);
                        if (h.end != undefined && this.seekTimeObject != undefined && h.end.currentTime != this.seekTimeObject.currentTime) {
                            h.start = this.seekTimeObject
                        }
                        h.clip = this.currentClip;
                        this.controller.dispatchEvent("OnMediaSeek", h);
                        return
                    }
                }
            }
        }
    },
    getClipTime: function(g) {
        var j = this.playlist.chapters.chapters;
        var i = 0;
        for (var c = 0;
        c < j.length;
        c++) {
            var h = j[c];
            if (h.aggregateStartTime + h.length > g) {
                i = h.startTime + (g - h.aggregateStartTime);
                break
            }
        }
        return i
    },
    seekToPercentage: function(d) {
        if (!this.currentClip) {
            return
        }
        d = isNaN(d) ? 0 : d;
        d = d < 0 ? 0 : d;
        d = d > 100 ? 100 : d;
        var f = this.videoEngine.getTotalTime();
        if (this.currentClip.chapter && this.currentClip.chapter.chapters) {
            f = this.currentClip.chapter.chapters.aggregateLength
        }
        if (isNaN(f) && this.currentClip) {
            return this.doSeek(this.currentClip.baseClip.trueLength * (d / 100))
        } else {
            if (!isNaN(f)) {
                var e = f * (d / 100);
                return this.doSeek(e)
            } else {
                this.delaySeekPercentage = d;
                return false
            }
        }
    },
    createMediaFileFromClip: function(b) {
        return {
            url: b.URL,
            isAd: b.baseClip.isAd,
            mimeType: b.baseClip.type ? b.baseClip.type : b.streamType
        }
    },
    handleLoadRelease: function(d) {
        clearTimeout(this.nextClipTimerId);
        this.clipEnded = false;
        var e = d.data;
        this.currentReleaseUrl = e.url;
        if (!this.stayInFullScreen) {
            try {
                this.controller.showFullScreen(false)
            } catch (f) {}
        }
        if (tpIsIOS()) {
            this.hideVideo()
        }
    },
    handleSetRelease: function(c) {
        var d = c.data;
        this.currentReleaseUrl = d.url;
        this.releaseSet = true;
        clearTimeout(this.nextClipTimerId);
        tpDebug("handleSetRelease setting release with url " + d.url)
    },
    handleSetReleaseUrl: function(c) {
        var d = c.data;
        tpDebug("handleSetReleaseUrl setting release url to " + d);
        clearInterval(this.timeUpdateTimer);
        this.currentReleaseUrl = d
    },
    handleReleaseStart: function(d) {
        this.newRelease = true;
        this.currentVideoTime = 0;
        this.wasPaused = false;
        this.percentLoaded = 0;
        this.playlist = d.data;
        var f = this.playlist.metaTags;
        if (f) {
            var e = 0;
            for (;
            e < f.length;
            e++) {
                if (f[e].name === "manifestServiceUrl") {
                    this.playlistHasSSA = true
                }
            }
        }
    },
    doMediaLoadStart: function(g) {
        tpDebug("doMediaLoadStart called for for url " + g.URL);
        this.clipEnded = false;
        this.startedPlaying = false;
        this.percentLoaded = 0;
        if (this.currentClip) {
            this.previousClipUrl = this.currentClip.baseClip.URL
        }
        clearTimeout(this.nextClipTimerId);
        clearInterval(this.timeUpdateTimer);
        this.jumpTime = undefined;
        this.needsJump = false;
        this.startedBuffer = false;
        tpDebug("handleMediaLoadStart fired, newRelease=" + this.newRelease);
        this.wasPaused = (this.currentClip && this.currentClip.streamType != "empty" && !this.currentClip.baseClip.isAd) && this.paused && this.newRelease == false;
        this.currentClip = g;
        this.clipEndedDueToSeek = false;
        if (g.URL.toLowerCase().indexOf("mp3") == -1) {
            this.videoEngine.setPoster("")
        }
        this.removeListeners();
        if ((this.currentURL != g.URL || this.newRelease || this.hasError) && g.streamType !== "empty") {
            this.isSeeking = false;
            this.suppressPause = true;
            var h = this;
            var e = g.startTime + g.offset;
            var f = function() {
                    h.videoEngine.removeEventListener("MEDIA_UNLOADED", f);
                    h.hasError = false;
                    h.ignoreErrors = false;
                    h.isComplete = false;
                    h.newRelease = false;
                    h.attachListeners();
                    tpDebug("Starting clip #" + g.clipIndex + " with src:" + g.URL + " at offset:" + (e));
                    setTimeout(function() {
                        if (g.streamType !== "empty") {
                            h.unloaded = false;
                            h.loading = true;
                            tpDebug("Doing ve.load() for " + g.URL + " to offset " + e);
                            var a = h.createMediaFileFromClip(g);
                            if ($pdk.isAndroid44plus) {
                                h.videoEngine.play()
                            }
                            h.videoEngine.load(a, e);
                            h.loading = false;
                            h.releaseSet = false
                        } else {
                            h.showBlocker(false)
                        }
                        if (!h.wasPaused || g.baseClip.noSkip) {
                            tpDebug("Calling play again because it was paused");
                            h.videoEngine.play()
                        }
                    }, 1);
                    h.clipEnded = false;
                    h.currentURL = g.URL;
                    if (g.baseClip.noSkip && g.streamType !== "empty") {
                        h.showControls(false)
                    } else {
                        tpDebug("showing controls");
                        h.showControls(true)
                    }
                    if (h._startMuted) {
                        h.controller.mute(true);
                        h._startMuted = undefined
                    }
                    setTimeout(function() {
                        tpDebug("Firing OnMediaLoadStart");
                        tpTimeEnd("Time from setReleaseUrl until OnMediaLoadStart");
                        h.controller.dispatchEvent("OnMediaLoadStart", g)
                    }, 1)
                };
            this.isComplete = false;
            f();
            return
        } else {
            if (this.playbackManager.isNoopClip(g) || this.playbackManager.isProxyClip(g)) {
                tpDebug("NoOp case");
                this.isSeeking = false;
                var h = this;
                var f = function() {
                        h.videoEngine.removeEventListener("MEDIA_UNLOADED", f);
                        if (g.baseClip.noSkip === true) {
                            h.showControls(false)
                        }
                        setTimeout(function() {
                            h.unloaded = false;
                            tpDebug("Firing OnMediaLoadStart");
                            tpTimeEnd("Time from setReleaseUrl until OnMediaLoadStart");
                            h.controller.dispatchEvent("OnMediaLoadStart", g);
                            h.showBlocker(false)
                        }, 1)
                    };
                this.videoEngine.load(this.createMediaFileFromClip(g));
                this.showControlBlocker(false);
                f();
                return
            } else {
                if (!this.clipEnded) {
                    this.clipEnded = true;
                    this.suppressPause = true
                }
            }
        }
        this.newRelease = false;
        this.attachListeners();
        tpDebug("Starting clip #" + g.clipIndex + " with src:" + g.URL + " at offset:" + (g.startTime + g.offset));
        if (g.streamType !== "empty") {
            this.videoEngine.load(this.createMediaFileFromClip(g), g.startTime + g.offset)
        } else {
            this.showBlocker(false)
        }
        this.clipEnded = false;
        this.currentURL = g.URL;
        var h = this;
        if (g.baseClip.noSkip) {
            h.showControls(false)
        } else {
            tpDebug("showing controls");
            h.showControls(true)
        }
        setTimeout(function() {
            tpDebug("Firing OnMediaLoadStart");
            h.controller.dispatchEvent("OnMediaLoadStart", g)
        }, 1)
    },
    handleReleaseEnd: function(j) {
        var f = j.data;
        var g = this;
        this.clipEnded = true;
        if (this.timeUpdateTimer) {
            clearInterval(this.timeUpdateTimer)
        }
        this.videoEngine.unload();
        this.showBlocker(true);
        var h;
        if (f) {
            h = f.releaseURL
        }
        function i() {
            if (!this.stayInFullScreen) {
                tpDebug("Exiting fullscreen");
                g.controller.showFullScreen(false)
            }
            if (h && h === g.currentReleaseUrl) {
                g.controller.loadReleaseURL(g.currentReleaseUrl)
            }
        }
        this.nextClipTimerId = setTimeout(function() {
            i()
        }, 1000);
        this.hideVideo();
        this.currentClip = null
    },
    handleClearCurrentRelease: function() {
        clearTimeout(this.nextClipTimerId)
    },
    showControls: function(b) {
        this.showControlBlocker(!b)
    },
    onResize: function() {
        var b = this;
        if (!this._tryResize()) {
            if (this._resizeTimout <= 0 && this._tryResizeAttempts < 100) {
                this._resizeTimout = setTimeout(function() {
                    b._resizeTimout = 0;
                    b.onResize()
                }, 100)
            } else {
                tpDebug("Gave up trying to resize after attemps:" + this._tryResizeAttempts);
                this._tryResizeAttempts = 0
            }
        }
    },
    _tryResize: function() {
        if (this.container) {
            if (this._containerWidth !== this.container.offsetWidth || this._containerHeight !== this.container.offsetHeight) {
                this._tryResizeAttempts = 0;
                this._containerWidth = this.container.offsetWidth;
                this._containerHeight = this.container.offsetHeight;
                this.controller.dispatchEvent("OnResize", {
                    width: this._containerWidth,
                    height: this._containerHeight
                });
                this.controller.dispatchEvent("OnPlayerComponentAreaChanged", {
                    width: this._containerWidth,
                    height: this._containerHeight
                });
                var d = this;
                var e = d.controller.getOverlayArea(false, false, true);
                d.controller.dispatchEvent("OnOverlayAreaChanged", e);
                d.controller.dispatchEvent("OnContentAreaChanged", d.controller.getContentArea(true));
                var f = d.controller.getMediaArea(false, true);
                d.controller.dispatchEvent("OnMediaAreaChanged", f);
                tpDebug(" MediaArea width/height is " + f.width + "/" + f.height);
                tpDebug(" OverlayArea width/height is " + e.width + "/" + e.height + " so returning false");
                if (e.width <= 0 || e.height <= 0) {
                    return false
                }
                return true
            }
        }
        this._tryResizeAttempts++;
        return false
    },
    setTimer: function() {
        tpDebug("Setting timeUpdateTimer");
        if (this.timeUpdateTimer) {
            clearInterval(this.timeUpdateTimer)
        }
        var b = this;
        this.timeUpdateTimer = setInterval(function() {
            b.onTimeUpdate()
        }, 250)
    },
    onMediaStart: function(g) {
        tpDebug("VideoEngine fired onMediaStart");
        this.clipStarted = true;
        this.showVideo();
        this.contentAreaSet = false;
        var h = this;
        setTimeout(function() {
            h.getContentArea()
        }, 300);
        if (g.media.hasAudioTracks) {
            var e = this.videoEngine.getAudioTracks();
            for (var f in e) {
                e[f].globalDataType = "com.theplatform.pdk.data::AudioTrack"
            }
            this.currentClip.baseClip.availableAudioTracks = e
        }
        if (this.currentClip.baseClip.isAd && this.videoEngine.isPaused()) {
            this.videoEngine.play()
        }
        if (this.currentClip.baseClip.moreInfo && this.currentClip.baseClip.moreInfo.href) {
            this.videoClickAnchor.style.cursor = "pointer"
        } else {
            this.videoClickAnchor.style.cursor = "default"
        }
        if (g.media.url.toLowerCase().indexOf(".mp3") > 0) {
            this.loadPoster(this.currentReleaseUrl)
        }
        if (!this.videoEngine.isPaused()) {
            tpDebug("In onMediaStart but ve.isPaused is false");
            this.suppressPause = false;
            this.setTimer()
        } else {
            this.startedPlaying = false;
            tpTimeEnd("Time from setReleaseUrl until OnMediaStart");
            tpTimeEnd("Time from page load to OnMediaStart");
            this.controller.dispatchEvent("OnMediaStart", this.currentClip)
        }
    },
    onPlay: function(c) {
        if (!this.currentClip || this.currentClip.streamType == "empty") {
            return
        }
        if (!this._hideNativeControls && this.currentClip.baseClip.isAd) {
            this.showControlBlocker(true)
        }
        if (this.timeUpdateTimer) {
            clearInterval(this.timeUpdateTimer)
        }
        var d = this;
        this.suppressPause = false;
        if (this.paused) {
            if (this.currentClip.baseClip.isAd && tpIsIOS()) {
                this.showControls(false)
            }
            this.paused = false;
            if (!this.suppressPause) {
                this.controller.dispatchEvent("OnMediaUnpause", {
                    globalDataType: "com.theplatform.pdk.data::MediaPause",
                    clip: this.currentClip,
                    userInitiated: !! this.pauseUserInitiated
                })
            } else {
                this.suppressPause = false
            }
            this.pauseUserInitiated = false
        }
        tpDebug("onPlay calling setTimer");
        this.setTimer()
    },
    onPlaying: function(b) {
        if (!this.currentClip) {
            return
        }
        if (this.needsJump) {} else {
            if (this.currentClip && this.currentClip.baseClip.isAd == false) {
                this.showVideo()
            } else {
                if (this.currentClip && this.currentClip.streamType == "empty") {
                    this.showVideo()
                }
            }
        }
    },
    onPause: function(b) {
        if (!this.currentClip || (this.currentClip.endTime > 0 && Math.abs(this.videoEngine.getCurrentTime() - this.currentClip.endTime) < 500) || this.suppressPause) {
            tpDebug("Ignoring native pause event suppressPause:" + this.suppressPause);
            if (this.clipStarted && !this.isSeeking && this.suppressPause) {
                this.videoEngine.play();
                this.suppressPause = false
            }
            return
        }
        this.paused = true;
        if (this.timeUpdateTimer) {
            clearInterval(this.timeUpdateTimer)
        }
        tpDebug("Dispatching OnMediaPause");
        this.controller.dispatchEvent("OnMediaPause", {
            globalDataType: "com.theplatform.pdk.data::MediaPause",
            clip: this.currentClip,
            userInitiated: !! this.pauseUserInitiated
        });
        this.pauseUserInitiated = false;
        tpDebug("isAd:" + this.currentClip.baseClip.isAd);
        if (this.currentClip.baseClip.isAd && (tpIsAndroid())) {
            this.showControlBlocker(false);
            this.controller.dispatchEvent("OnShowPlayOverlay", true)
        }
    },
    onMuteChange: function(b) {
        this.controller.dispatchEvent("OnMute", b.isMute)
    },
    onVolumeChange: function(b) {
        this.controller.dispatchEvent("OnVolumeChange", b.volume)
    },
    onSeeked: function(i) {
        if (!this.isSeeking && (!tpIsIPhone() && tpIsIOS()) && !this.videoEngine.isFullScreen() && !this.videoEngine.isPaused()) {
            tpDebug("this is a bogus seek, ignoring");
            return
        }
        this.isSeeking = false;
        if (!this.currentClip || this.currentClip.streamType == "empty" || this.currentClip.baseClip.noSkip) {
            tpDebug("Ignoring seek!");
            return
        }
        if (!this.seekTimeObject && this.currentTimeObject && this.currentTimeObject.currentTime != this.videoEngine.getTotalTime()) {
            this.seekTimeObject = this.cloneTimeObject(this.currentTimeObject)
        }
        var j = {
            globalDataType: "com.theplatform.pdk.data::SeekObject"
        };
        j.end = this.createCurrentTimeObject();
        if (j.end != undefined && this.seekTimeObject != undefined && j.end.currentTime != this.seekTimeObject.currentTime) {
            j.start = this.seekTimeObject
        } else {
            var d = this.previousTime;
            var h = j.end.duration;
            j.start = {
                globalDataType: "com.theplatform.pdk.data::TimeObject",
                mediaTime: d,
                currentTime: d,
                currentTimeAggregate: d,
                duration: j.end.duration,
                durationAggregate: j.end.durationAggregate,
                percentComplete: (d / h) * 100,
                percentCompleteAggregate: (d / h) * 100,
                isAggregate: false,
                isLive: false
            }
        }
        j.clip = this.currentClip;
        j.clip.currentMediaTime = j.end.mediaTime;
        j.clip.mediaTime = j.end.mediaTime;
        var e = j.clip.mediaTime;
        this.controller.dispatchEvent("OnMediaSeek", j);
        this.seekTimeObject = undefined;
        if (!this.paused) {
            this.videoEngine.play()
        }
    },
    onSeeking: function(b) {
        if (!this.currentClip || this.currentClip.streamType == "empty") {
            return
        }
        this.seekTimeObject = this.cloneTimeObject(this.currentTimeObject)
    },
    onProgress: function(f) {
        if (!this.currentClip || this.currentClip.streamType == "empty") {
            return
        }
        if (!this.startedBuffer) {
            this.startedBuffer = true;
            this.controller.dispatchEvent("OnMediaBuffering", this.currentClip)
        }
        var d = f.percentLoaded;
        var e = d * this.videoEngine.getTotalTime();
        if (d >= 1) {
            clearInterval(this.progressUpdateTimer)
        }
        this.controller.dispatchEvent("OnMediaLoading", {
            ratioLoaded: d,
            isLoadComplete: d >= 1,
            globalDataType: "com.theplatform.pdk.data::LoadMediaData",
            loadedMilliseconds: -1,
            bytesLoaded: -1,
            bytesTotal: -1
        })
    },
    onEnded: function(c) {
        if (c) {
            tpDebug("MEDIA_END event for " + c.media.url + " with clipIndex: " + this.currentClip ? this.currentClip.clipIndex : "none, currentClip is null");
            if (this.currentClip && c.media.url !== this.currentClip.URL) {
                tpDebug("This was a stale onEnded event, we'll ignore it");
                return
            }
        }
        if (!this.currentClip || this.currentClip.streamType == "empty" || this.clipEnded === true) {
            return
        }
        if (this.currentClip.baseClip.isAd) {
            this.currentClip.hasPlayed = true;
            this.playbackManager.updateClip(this.currentClip)
        }
        tpDebug("onEnded called for for url " + this.currentClip.URL);
        tpDebug("Clearing timeUpdateTimer");
        if (this.timeUpdateTimer) {
            clearInterval(this.timeUpdateTimer)
        }
        this.jumpTime = undefined;
        this.needsJump = false;
        this.currentVideoTime = undefined;
        var d = this.videoEngine.getCurrentTime();
        tpDebug("Dispatching OnMediaEnd at " + d + " for src:" + this.currentClip.URL);
        if (this.startedPlaying && !this.clipEnded) {
            tpDebug("Calling endMedia()");
            this.endMedia()
        } else {
            tpDebug("Never started Playing or clipEnded is already true", "tpPlayer");
            if (!this.releaseSet && !this.loading) {
                this.playbackManager.nextClip()
            }
        }
        this.releaseSet = false
    },
    onAudioTrackSwitched: function(h) {
        tpDebug("audioTrackSwitched from VE new:" + h.newAudioTrackIndex, "tpPlayer");
        var f = this.videoEngine.getAudioTrackByIndex(h.newAudioTrackIndex);
        var g = this.videoEngine.getAudioTrackByIndex(h.oldAudioTrackIndex);
        if (f) {
            f.globalDataType = "com.theplatform.com.data::AudioTrack"
        }
        if (g) {
            g.globalDataType = "com.theplatform.com.data::AudioTrack"
        }
        var e = {
            oldAudioTrack: g,
            newAudioTrack: f
        };
        if (this.startedPlaying) {
            this.controller.dispatchEvent("OnAudioTrackSwitched", e)
        } else {
            this.standbySwitchedAudio = e
        }
    },
    endMedia: function() {
        this.clipEnded = true;
        this.playbackManager.endMedia(this.currentClip);
        if (this.timeUpdateTimer) {
            clearInterval(this.timeUpdateTimer)
        }
    },
    onTimeUpdate: function(i) {
        if (this.currentClip === undefined) {
            return
        }
        if (this.isSeeking) {
            tpDebug("We're still seeking so we'll suppress onTimeUpdate");
            return
        }
        if (this.clipEnded) {
            tpDebug("onTimeUpdate fired somehow even though clipEnded is true");
            clearInterval(this.timeUpdateTimer);
            return
        }
        if (this.currentClip && !this.startedPlaying) {
            this.startedPlaying = true;
            var e = tpGetPid(this.currentReleaseUrl);
            this.currentClip.releasePID = e;
            var l = this.videoEngine.getTotalTime();
            if (isNaN(l) || l <= 0) {
                l = this.currentClip.mediaLength
            }
            this.currentClip.trueLength = Math.floor(l);
            this.currentClip.baseClip.loadTime = 0;
            this.currentClip.currentMediaTime = Math.floor(l);
            this.currentClip.mediaTime = this.currentClip.currentMediaTime;
            this.currentClip.mediaLength = Math.round(l);
            if (!this.currentClip.baseClip.isAd && (!this.currentClip.chapter || !this.currentClip.chapter.chapters.isAggregate)) {
                this.currentClip.endTime = this.currentClip.length = this.currentClip.mediaLength;
                if (this.currentClip.chapter) {
                    this.currentClip.chapter.chapters.aggregateLength = this.currentClip.chapter.endTime = this.currentClip.mediaLength;
                    this.playlist.chapters.chapters[0].length = this.playlist.chapters.aggregateLength = this.currentClip.mediaLength
                }
            }
            this.previousTime = this.currentClip.currentMediaTime;
            tpDebug("Player dispatching OnMediaStart paused=" + this.videoEngine.isPaused() + " for clip with index " + this.currentClip.clipIndex + " and url " + this.currentClip.URL + " with VE at offset " + this.videoEngine.getCurrentTime());
            this.suppressPause = false;
            this.startedPlaying = true;
            tpTimeEnd("Time from setReleaseUrl until OnMediaStart");
            tpTimeEnd("Time from page load to OnMediaStart");
            this.controller.dispatchEvent("OnMediaStart", this.currentClip);
            if (this.standbySwitchedAudio) {
                this.controller.dispatchEvent("OnAudioTrackSwitched", this.standbySwitchedAudio);
                this.standbySwitchedAudio = null
            }
        }
        if (this.jumpTime) {} else {
            if (this.delaySeek) {
                if (this.doSeek(this.delaySeek)) {
                    this.delaySeek = undefined;
                    this.delaySeekPercentage = undefined
                }
            } else {
                if (this.delaySeekPercentage) {
                    if (this.seekToPercentage(this.delaySeekPercentage)) {
                        this.delaySeekPercentage = undefined
                    }
                } else {
                    if (this.currentVideoTime && Math.abs(this.currentVideoTime - (this.videoEngine.getCurrentTime())) < 250) {} else {
                        if (!this.clipEnded) {
                            var h = true;
                            if (!this.videoEngine.isPaused()) {
                                this.showBlocker(false)
                            } else {
                                if (this.blockerShowing === true) {
                                    this.showBlocker(false)
                                }
                            }
                            var l = this.videoEngine.getTotalTime();
                            if (isNaN(l) || l <= 0) {
                                l = this.currentClip.mediaLength
                            }
                            this.currentClip.currentMediaTime = Math.floor(this.videoEngine.getCurrentTime());
                            this.currentClip.mediaTime = this.currentClip.currentMediaTime;
                            this.currentClip.mediaLength = Math.round(l);
                            if (!this.currentClip.baseClip.isAd && (!this.currentClip.chapter || !this.currentClip.chapter.chapters.isAggregate)) {
                                this.currentClip.endTime = this.currentClip.length = this.currentClip.mediaLength;
                                if (this.currentClip.chapter) {
                                    this.currentClip.chapter.chapters.aggregateLength = this.currentClip.chapter.endTime = this.currentClip.mediaLength;
                                    this.playlist.chapters.chapters[0].length = this.playlist.chapters.aggregateLength = this.currentClip.mediaLength
                                }
                            }
                            if (this.videoEngine.getCurrentTime() === 0 && this.currentClip && this.currentClip.currentMediaTime > 0 && Math.abs(this.currentClip.currentMediaTime - this.currentClip.endTime) < 1000) {
                                this.onEnded();
                                return
                            } else {
                                if (this.videoEngine.getCurrentTime() === 0) {
                                    return
                                }
                            }
                            var j = this.currentTimeObject;
                            this.currentTimeObject = this.createCurrentTimeObject();
                            if (this.currentClip) {
                                this.controller.updateMediaTime(this.currentClip.currentMediaTime)
                            }
                            if (this.percentLoaded < 1 && this.percentLoaded != this.videoEngine.getPercentLoaded()) {
                                this.percentLoaded = this.videoEngine.getPercentLoaded();
                                this.onProgress({
                                    percentLoaded: this.percentLoaded
                                })
                            }
                            if (j == null || (j.currentTime !== this.currentTimeObject.currentTime)) {
                                if (!this.contentAreaSet) {
                                    this.getContentArea();
                                    this.contentAreaSet = true
                                }
                                this.controller.dispatchEvent("OnMediaPlaying", this.currentTimeObject)
                            }
                            this.showVideo();
                            this.showBlocker(false);
                            var k = this.videoEngine.getCurrentTime();
                            if (this.currentVideoTime) {
                                k = this.currentVideoTime
                            }
                            this.currentVideoTime = undefined;
                            if (this.playlistHasSSA && tpIsIOS() && this.videoEngine.isFullScreen()) {
                                return
                            }
                            if (this.currentClip && this.currentClip.endTime && this.currentClip.endTime > 0 && (!this.playlistHasSSA ? (Math.abs(k - this.currentClip.endTime) < 300 || this.isSeeking && k > this.currentClip.endTime) : k > this.currentClip.endTime) && Math.abs(k - l) > 1000) {
                                this.currentVideoTime = this.videoEngine.getCurrentTime();
                                if (this.currentClip.baseClip.isAd) {
                                    this.currentClip.hasPlayed = true
                                }
                                this.playbackManager.updateClip(this.currentClip);
                                tpDebug("Calling onEnded() at " + this.videoEngine.getCurrentTime());
                                this.onEnded()
                            } else {
                                if (this.currentClip.endTime > 0 && k > this.currentClip.endTime || k < (this.currentClip.startTime - 30)) {
                                    tpDebug("We're outside of the clip boundaries for clipIndex " + this.currentClip.clipIndex + " of " + this.currentClip.startTime + " to " + this.currentClip.endTime + " , so sending a seek event at currentTime:" + k)
                                }
                            }
                            this.previousTime = k
                        }
                    }
                }
            }
        }
    },
    createCurrentTimeObject: function(p) {
        if (!this.video) {
            return undefined
        }
        var o = Math.round(p === undefined ? this.videoEngine.getCurrentTime() : p);
        var t = this.currentClip.chapter;
        var n = false;
        if (t && !this.currentClip.baseClip.isAd && (o < t.startTime || o > t.endTime)) {
            var r = 0;
            var m = this.playlist.chapters.chapters.length;
            for (;
            r < m;
            r++) {
                var d = this.playlist.chapters.chapters[r];
                var q = this.playlist.chapters.chapters[r + 1];
                if (d && o >= d.startTime && o <= d.endTime) {
                    tpDebug("selecting chapter " + r);
                    n = true;
                    t = d;
                    break
                } else {
                    if (q && o >= d.endTime && o <= q.startTime) {
                        n = true;
                        tpDebug("selecting chapter " + (r + 1));
                        t = q;
                        o = t.startTime;
                        break
                    }
                }
            }
        }
        if (t && t.chapters && (t.chapters.isAggregate || t.chapters.isRelative)) {
            var s = {
                globalDataType: "com.theplatform.pdk.data::TimeObject"
            };
            s.mediaTime = o;
            s.currentTime = o - t.startTime;
            s.currentTimeAggregate = t.aggregateStartTime + s.currentTime;
            s.duration = t.length;
            s.durationAggregate = t.chapters.aggregateLength;
            s.percentComplete = (s.currentTime / t.length) * 100;
            s.percentCompleteAggregate = (s.currentTimeAggregate / s.durationAggregate) * 100, s.isAggregate = t.chapters.isAggregate, s.isLive = false;
            return s
        } else {
            if (this.currentClip.baseClip.isAd && this.currentClip.endTime > 0) {
                var s = {
                    globalDataType: "com.theplatform.pdk.data::TimeObject"
                };
                s.mediaTime = o;
                s.currentTime = o - this.currentClip.startTime;
                s.currentTimeAggregate = s.currentTime;
                s.duration = this.currentClip.length;
                s.durationAggregate = s.duration;
                s.percentComplete = (s.currentTime / s.duration) * 100;
                s.percentCompleteAggregate = s.percentComplete, s.isAggregate = false, s.isLive = false;
                return s
            } else {
                var i = Math.round(this.videoEngine.getTotalTime());
                return {
                    globalDataType: "com.theplatform.pdk.data::TimeObject",
                    mediaTime: o,
                    currentTime: o,
                    currentTimeAggregate: o,
                    duration: i,
                    durationAggregate: i,
                    percentComplete: (o / i) * 100,
                    percentCompleteAggregate: (o / i) * 100,
                    isAggregate: false,
                    isLive: false
                }
            }
        }
    },
    cloneTimeObject: function(b) {
        return b ? {
            globalDataType: "com.theplatform.pdk.data::TimeObject",
            mediaTime: b.mediaTime,
            currentTime: b.currentTime,
            currentTimeAggregate: b.currentTimeAggregate,
            duration: b.duration,
            durationAggregate: b.durationAggregate,
            percentComplete: b.percentComplete,
            percentCompleteAggregate: b.percentCompleteAggregate,
            isAggregate: b.isAggregate,
            isLive: b.isLive
        } : undefined
    },
    onPlaybackError: function(b) {
        if (this.ignoreErrors || !this.currentClip || this.currentClip.streamType == "empty") {
            tpDebug("Ignoring playback error");
            return
        }
        tpDebug("Got a playback error from the video engine, the call to play media must not have orginated from a user click.");
        if (this.currentReleaseUrl) {
            tpDebug("Calling loadReleaseUrl for " + this.currentReleaseUrl);
            this.controller.loadReleaseURL(this.currentReleaseUrl)
        } else {
            tpDebug("We don't have a releaseurl to load")
        }
    },
    onError: function(d) {
        if (this.ignoreErrors || !this.currentClip || this.currentClip.streamType == "empty") {
            return
        }
        clearTimeout(this.nextClipTimerId);
        this.showControls(false);
        this.showBlocker(true);
        if (this.timeUpdateTimer) {
            clearInterval(this.timeUpdateTimer)
        }
        this.hasError = true;
        var c = {
            location: this.id,
            context: null,
            clip: this.currentClip,
            endRelease: !this.currentClip.baseClip.isAd || this.playlistHasSSA,
            message: "The media cannot be played",
            friendlyMessage: "The media cannot be played",
            globalDataType: "com.theplatform.pdk.data::PlaybackError"
        };
        if (this.currentClip.baseClip.isAd) {
            this.currentClip.hasPlayed = true;
            this.playbackManager.updateClip(this.currentClip)
        }
        this.suppressPause = false;
        this.controller.sendError(c)
    },
    showVideo: function() {
        if (this.isShowing) {
            return
        }
        if (this.waitToShowVideoFunction) {
            tpDebug("showVideo triggered by timeout");
            clearTimeout(this.waitToShowVideoFunction);
            this.waitToShowVideoFunction = undefined
        }
        tpDebug("showing main video");
        this.player.style.marginLeft = "";
        this.player.style.display = "";
        this.player.style.top = "0px";
        this.player.style.zIndex = "auto";
        this.player.style.width = "100%";
        this.player.style.height = "100%";
        this.videoEngine.show(true);
        this.waitforcanplay = false;
        if (!tpIsIOS()) {
            this.controller.dispatchEvent("OnForceShowVideo", null)
        }
        this.isShowing = true
    },
    hideVideo: function() {
        if (this.isShowing === false) {
            return
        }
        tpDebug("hiding video");
        if (tpIsIOS()) {
            this.player.style.marginLeft = "-10000px"
        } else {
            this.player.style.top = "10px";
            this.player.style.width = "1px";
            this.player.style.height = "8px";
            this.player.style.zIndex = "8888"
        }
        this.isShowing = false
    },
    loadPoster: function(c) {
        if (!c) {
            return
        }
        if (!this.standby) {
            this.standby = document.getElementById(this.id + ".standby")
        }
        var d = c.split("?")[0] + "?format=poster&width=" + this.standby.offsetWidth + "&height=" + this.standby.offsetHeight;
        this.videoEngine.setPoster(d)
    },
    simulateClick: function(e) {
        tpDebug("simulateClick");
        var f = document.createElement("a");
        f.id = "clickSimulator";
        f.href = "#";
        document.body.appendChild(f);
        f.addEventListener("click", function(b) {
            b.preventDefault();
            e()
        }, false);
        var a;
        if (document.createEvent) {
            a = document.createEvent("MouseEvents");
            if (a.initMouseEvent) {
                a.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                f.dispatchEvent(a)
            }
        }
        document.body.removeChild(f)
    },
    setMediaArea: function(c) {
        if (c.width > 0 && c.height > 0) {
            this._mediaArea = c;
            this.blocker.style.height = c.height + "px";
            this.video.style.top = c.y + "px";
            this.video.style.left = c.x + "px";
            this.video.style.width = c.width + "px";
            this.video.style.height = c.height + "px";
            this.video.style.position = "absolute";
            this.blocker.style.top = c.y + "px";
            this.blocker.style.left = c.x + "px";
            this.blocker.style.width = c.width + "px";
            this.blocker.style.height = c.height + "px";
            this.blocker.style.position = "absolute";
            this.controller.dispatchEvent("OnMediaAreaChanged", this.getMediaArea(false));
            var d = this;
            setTimeout(function() {
                d.getContentArea()
            }, 300)
        }
    },
    getContentArea: function(o) {
        try {
            var v = 0;
            var n = 0;
            if (!this.contentAreaSet && this.currentClip) {
                v = this.currentClip.baseClip.width;
                n = this.currentClip.baseClip.height
            }
            if (this.contentAreaSet || v === 0 || n === 0) {
                v = this.videoEngine.getVideoWidth();
                n = this.videoEngine.getVideoHeight()
            }
        } catch (r) {
            return {
                x: 0,
                y: 0,
                width: 0,
                height: 0
            }
        }
        var e = v / n;
        var s;
        if (!this._mediaArea) {
            this.getMediaArea()
        }
        var e = v / n;
        var s = this._mediaArea.width / this._mediaArea.height;
        var p = 0;
        var q = 0;
        var t;
        var m;
        if (e >= s) {
            t = this._mediaArea.width;
            m = Math.round(this._mediaArea.width / e);
            q = Math.abs(Math.round(this._mediaArea.y + Math.round(this._mediaArea.height - m) / 2))
        } else {
            t = Math.round(this._mediaArea.height * e);
            m = this._mediaArea.height;
            p = Math.abs(Math.round(this._mediaArea.x + Math.round(this._mediaArea.width - t) / 2))
        }
        var u = {
            x: p,
            y: q,
            width: t,
            height: m
        };
        if (!o) {
            this.controller.dispatchEvent("OnContentAreaChanged", u)
        }
        return u
    },
    getMediaArea: function(f, d) {
        if (!this.standby) {
            this.standby = document.getElementById(this.id + ".standby")
        }
        var e;
        if (d || this._mediaArea === null || typeof(this._mediaArea) !== "object") {
            e = {
                top: 0,
                left: 0,
                x: 0,
                y: 0,
                width: this.player.offsetWidth,
                height: this.player.offsetHeight
            }
        } else {
            e = {
                top: this._mediaArea.y,
                left: this._mediaArea.x,
                x: this._mediaArea.x,
                y: this._mediaArea.y,
                width: this._mediaArea.width,
                height: this._mediaArea.height
            }
        }
        if (e.height != 0 && e.width != 0) {
            this._mediaArea = e
        }
        if (f) {
            this.controller.dispatchEvent("OnMediaAreaChanged", e)
        }
        return e
    },
    getComponentSize: function() {
        return tpGetComponentSize(this.container)
    },
    _fixAndroidChrome: function(g) {
        if (this._androidReady) {
            g();
            return
        }
        tpDebug("Calling _fixAndroidChrome");
        this.removeListeners();
        this.videoEngine.load("", 0);
        var f = this;
        var h = false;
        var e = function(a) {
                if (h) {
                    return
                }
                f._androidReady = true;
                f.videoEngine.removeEventListener("MEDIA_ERROR", e);
                if (a) {
                    f.videoEngine.unload();
                    g()
                }
                h = true
            };
        this.videoEngine.addEventListener("MEDIA_ERROR", e);
        setTimeout(e, 1000)
    },
    showControlBlocker: function(b) {
        this.controlBlockerShowing = b;
        b ? this.controlBlocker.style.display = "" : this.controlBlocker.style.display = "none"
    },
    showBlocker: function(b) {
        this.blockerShowing = b;
        b ? this.blocker.style.display = "" : this.blocker.style.display = "none"
    },
    handleOnMediaAreaChanged: function(b) {
        if (b.data.height == 0) {
            tpDebug("setting video height to:" + b.data.height, "tpPlayer")
        }
        this.blocker.style.top = b.data.y + "px";
        this.blocker.style.left = b.data.x + "px";
        this.blocker.style.width = b.data.width + "px";
        this.blocker.style.height = b.data.height + "px";
        this.blocker.style.position = "absolute"
    },
    handleOnOverlayAreaChanged: function(b) {
        if (this.videoengineruntime === "silverlight") {
            this.controlBlocker.style.width = b.data.width + "px";
            this.controlBlocker.style.height = b.data.height + "px"
        }
    }
});
if (typeof(Player) === "undefined") {
    Player = tpPlayer
}
PlugInManager = Class.extend({
    init: function(b) {
        this.controller = b;
        this.plugins = new Array()
    },
    addPlugIn: function(s, l, k, t, o, n, m, q, r) {
        if ((t.indexOf(".swf") < 0)) {
            var p = {
                id: s,
                type: l,
                priority: k,
                url: t,
                subUrl: o,
                vars: n,
                plugIn: m
            };
            this.plugins.push(p)
        }
    },
    ready: function() {
        var c = this;
        if (!this.plugins || this.plugins.length === 0) {
            setTimeout(function() {
                tpTimeEnd("Time it took from $pdk.onload until OnPluginsComplete");
                c.controller.dispatchEvent("OnPlugInsComplete", null);
                c.controller.initializePlayback()
            }, 1);
            return
        }
        for (var d = 0;
        d < this.plugins.length;
        d++) {
            tpController.loadPlugIn(this.plugins[d], this.controller)
        }
    }
});
tpReleaseList = PDKComponent.extend({
    _generateExportedMarkup: function() {
        return '<div id="' + this.id + '" class="releaseList"></div>'
    },
    init: function(g, h, f) {
        this.width = h;
        this.height = f;
        this.id = g;
        this.pretty = !navigator.userAgent.match(/MSIE 8/) && !navigator.userAgent.match(/MSIE 7/) && !navigator.userAgent.match(/MSIE 6/);
        if ($pdk._isDevMode) {
            this.pretty = false
        }
        this.controller = new ComponentController(g);
        var e = $pdk.shell.Registry.getInstance().getShells().get(g);
        this.deferredController = e ? e._deferredController : null;
        this.hasAutoPlayed = false;
        this.hasAutoLoaded = false;
        this.eventQueue = [];
        this.playing = false
    },
    initialize: function() {
        var b = this;
        if (this.scopes) {
            this.controller.scopes = [this.id].concat(this.scopes.split(","))
        } else {
            this.controller.scopes = [this.id, "default"]
        }
        if (this.deferredController) {
            this.deferredController.addEventListener("OnRefreshReleaseModelStarted", function() {
                b.handleRefreshStarted.apply(b, arguments)
            });
            this.deferredController.addEventListener("OnRefreshReleaseModel", function() {
                b.handleReleaseModelRefreshed.apply(b, arguments)
            });
            this.deferredController.addEventListener("OnLoadRelease", function() {
                b.handleLoadRelease.apply(b, arguments)
            });
            this.deferredController.addEventListener("OnLoadReleaseUrl", function() {
                b.handleLoadRelease.apply(b, arguments)
            });
            this.deferredController.addEventListener("OnFetchReleaseData", function() {
                b.handleLoadRelease.apply(b, arguments)
            })
        }
        this.controller.addEventListener("OnRefreshReleaseModelStarted", function() {
            b.handleRefreshStarted.apply(b, arguments)
        });
        this.controller.addEventListener("OnRefreshReleaseModel", function() {
            b.handleReleaseModelRefreshed.apply(b, arguments)
        });
        this.controller.addEventListener("OnSetReleaseUrl", function() {
            b.handleSetReleaseUrl.apply(b, arguments)
        });
        this.controller.addEventListener("OnReleaseSelected", function() {
            b.handleOnReleaseSelected.apply(b, arguments)
        });
        this.controller.addEventListener("OnLoadRelease", function() {
            b.handleLoadRelease.apply(b, arguments)
        });
        this.controller.addEventListener("OnLoadReleaseUrl", function() {
            b.handleLoadRelease.apply(b, arguments)
        });
        this.controller.addEventListener("OnFetchReleaseData", function() {
            b.handleLoadRelease.apply(b, arguments)
        });
        this.controller.addEventListener("OnReleaseStart", function() {
            b.handleReleaseStart.apply(b, arguments)
        });
        this.controller.addEventListener("OnReleaseEnd", function() {
            b.handleReleaseEnd.apply(b, arguments)
        });
        this.controller.addEventListener("OnMediaStart", function() {
            b.handleMediaStart.apply(b, arguments)
        });
        this.controller.addEventListener("OnMediaEnd", function() {
            b.handleMediaEnd.apply(b, arguments)
        });
        this.controller.registerFunction("playNext", this, this.playNext);
        this.controller.registerFunction("playPrevious", this, this.playPrevious);
        this.currentIndex = -1;
        this.createdThumbnailStyles = false;
        if (this.showtitle === undefined) {
            this.showtitle = true
        }
        if (this.showdescription === undefined) {
            this.showdescription = true
        }
        if (this.showlength === undefined) {
            this.showlength = true
        }
        if (this.showthumbnail === undefined) {
            this.showthumbnail = true
        }
        if (this.defaultthumbnailheight === undefined) {
            this.defaultthumbnailheight = 100
        }
        if (this.thumbnailwidth === undefined) {
            this.thumbnailwidth = 160
        }
        if (this.thumbnailheight === undefined) {
            this.thumbnailheight = 90
        }
        if (this.showtitle === "false") {
            this.showtitle = false
        }
        if (this.showdescription === "false") {
            this.showdescription = false
        }
        if (this.showlength === "false") {
            this.showlength = false
        }
        if (this.showthumbnail === "false") {
            this.showthumbnail = false
        }
        this.showTitle = this.showtitle;
        this.showDescription = this.showdescription;
        this.showLength = this.showlength;
        this.showThumbnail = this.showthumbnail;
        this.thumbnailWidth = this.thumbnailwidth;
        this.thumbnailHeight = this.thumbnailheight;
        this.defaultThumbnailHeight = this.defaultthumbnailheight
    },
    write: function(c) {
        if (this.autoLoad === undefined) {
            this.autoLoad = true
        }
        if (this.autoPlay === undefined && !(tpIsAndroid() || tpIsIOS())) {
            this.autoPlay = true
        } else {
            if (tpIsAndroid() || tpIsIOS()) {
                this.autoPlay = false;
                if (this.autoLoad == false) {
                    this.autoLoad = true
                }
            }
        }
        if (this.playAll === undefined) {
            this.playAll = true
        }
        if (!this.columns) {
            this.columns = 2
        } else {
            this.columns = parseInt(this.columns)
        }
        if (!this.rows && this.itemsPerPage !== undefined) {
            this.rows = this.itemsPerPage / this.columns
        } else {
            if (!this.rows) {
                this.rows = 2
            }
        }
        if (tpIsIOS()) {}
        if (c) {
            this.container = c
        } else {
            document.write('<div id="' + this.id + '" class="releaseList"></div>');
            this.container = document.getElementById(this.id);
            this.container.style.width = this.width;
            this.container.style.height = this.height
        }
        this.style = document.createElement("style");
        var d = document.getElementsByTagName("head")[0];
        this.style.setAttribute("type", "text/css");
        d.appendChild(this.style);
        this.initialize()
    },
    _bindElement: function(b) {
        if (this.autoLoad == null) {
            this.autoLoad = true
        }
        if (this.autoPlay === undefined && !(tpIsAndroid() || tpIsIOS())) {
            this.autoPlay = true
        } else {
            if (tpIsAndroid() || tpIsIOS()) {
                this.autoPlay = false
            }
        }
        if (this.playAll == null) {
            this.playAll = true
        }
        this.container = b;
        this.container.style.width = this.width;
        this.container.style.height = this.height;
        tpController.ready();
        return this.container
    },
    handleReleaseStart: function(d) {
        var f;
        for (var e = 0;
        e < d.data.baseClips.length;
        e++) {
            if (!d.data.baseClips[e].isAd) {
                f = d.data.baseClips[e].contentID;
                break
            }
        }
        this.doSelectTile(f, d.data.releaseURL)
    },
    setCurrentReleaseUrl: function(d) {
        if (!d) {
            return
        }
        var c = d.search(/[\?\&]format=/);
        if (c > 0) {
            d = d.substring(0, c)
        }
        this.currentReleaseUrl = d
    },
    handleReleaseEnd: function(b) {
        this.currentClip = undefined;
        this.enable()
    },
    getCurrentIndex: function() {
        var e = -1;
        var d = this.currentReleaseUrl;
        for (var f = 0;
        f < this.feed.entries.length;
        f++) {
            if (typeof(d) === "string" && this.releaseUrlsAreEqual(d, this.feed.entries[f].url, this.feed.entries[f].pid)) {
                e = f;
                break
            }
        }
        return e
    },
    playNext: function(h, f) {
        this.currentIndex = this.getCurrentIndex();
        this.currentIndex++;
        var e = this.feed.entries[this.currentIndex];
        if (h == undefined) {
            h = false
        }
        if (f == undefined) {
            f = false
        }
        this.wasSetByReleaseList = true;
        if (f == false || this.playAll) {
            if (e) {
                this.controller.dispatchEvent("OnReleaseSelected", {
                    releaseUrl: e.url,
                    userInitiated: false
                });
                this.controller.setRelease(e, true);
                return
            }
        } else {
            if (e) {
                var g = this.currentClip;
                if (!this.playing || f || !g || !(g.noSkip || (g.baseClip && g.baseClip.noSkip))) {
                    if (this.playing === true) {
                        this.controller.pause(true);
                        this.controller.dispatchEvent("OnReleaseSelected", {
                            releaseUrl: e.url,
                            userInitiated: true
                        });
                        this.controller.setRelease(e, true);
                        return
                    } else {
                        if ((tpIsIOS() || tpIsAndroid()) || this.playAll === false && f === false) {
                            if (!e.url) {
                                e.url = this.currentReleaseUrl
                            }
                            this.controller.dispatchEvent("OnReleaseSelected", {
                                releaseUrl: e.url,
                                userInitiated: false
                            });
                            this.controller.loadReleaseURL(e.url, true);
                            return
                        } else {
                            if (this.playAll === true && f === false) {
                                if (!e.url) {
                                    e.url = this.currentReleaseUrl
                                }
                                this.controller.dispatchEvent("OnReleaseSelected", {
                                    releaseUrl: e.url,
                                    userInitiated: false
                                });
                                this.controller.setRelease(e, true);
                                return
                            } else {
                                if (this.playAll === true && f === true) {
                                    if (!e.url) {
                                        e.url = this.currentReleaseUrl
                                    }
                                    this.controller.dispatchEvent("OnReleaseSelected", {
                                        releaseUrl: e.url,
                                        userInitiated: false
                                    });
                                    this.controller.loadReleaseURL(e.url, true);
                                    return
                                } else {
                                    return
                                }
                            }
                        }
                    }
                    this.wasSetByReleaseList = true
                } else {
                    return
                }
            } else {
                this.currentIndex--
            }
        }
    },
    playPrevious: function(e) {
        if (this.currentIndex > 0) {
            this.currentIndex--
        } else {
            if (this.currentIndex == 0 && e) {
                this.currentIndex = this.feed.entries.length - 1
            }
        }
        var f = this.feed.entries[this.currentIndex];
        if (!f) {
            return
        }
        if (this.autoPlay) {
            this.controller.dispatchEvent("OnReleaseSelected", {
                releaseUrl: f.url,
                userInitiated: false
            });
            this.controller.setRelease(f, true);
            return
        } else {
            var d = this.currentClip;
            if (!this.playing || !d || !(d.noSkip || (d.baseClip && d.baseClip.noSkip))) {
                this.controller.dispatchEvent("OnReleaseSelected", {
                    releaseUrl: f.url,
                    userInitiated: false
                });
                this.controller.setRelease(f, true)
            }
        }
    },
    handleLoadRelease: function(b) {
        this.doSelectTile(b.data.id, b.data.url)
    },
    releaseUrlsAreEqual: function(d, e, f) {
        d = d ? d.replace(/(.*)\?.*/, "$1") : null;
        e = e ? e.replace(/(.*)\?.*/, "$1") : null;
        return d === e || (d != null ? d.indexOf(f) >= 0 : false)
    },
    doSelectTile: function(c, d) {
        this.setCurrentReleaseUrl(d);
        if (!this.feed) {
            this.currentMediaId = c;
            this.currentReleaseUrl = d;
            this.currentIndex = -1;
            return
        }
        this.currentIndex = -1;
        if (c) {
            this.currentIndex = this.setTileSelectedMediaId(c)
        }
        if (this.currentIndex == -1) {
            this.currentIndex = this.setTileSelectedReleasePid(d)
        }
    },
    setTileSelected: function(b) {},
    setTileSelectedMediaId: function(h) {
        var g = -1;
        if (h.indexOf("/") >= 0) {
            h = h.split("/").pop()
        }
        var j;
        for (var f = 0;
        f < this.feed.entries.length;
        f++) {
            j = this.feed.entries[f].id;
            if (j && j.indexOf("/") >= 0) {
                j = j.split("/").pop()
            }
            if (h == j) {
                g = f;
                var i = this.items[f];
                if (i !== undefined) {
                    i.className = "tpRelease tpReleaseSelected"
                }
            } else {
                var i = this.items[f];
                if (i !== undefined) {
                    i.className = "tpRelease"
                }
            }
        }
        return g
    },
    setTileSelectedReleasePid: function(e) {
        var f = -1;
        for (var h = 0;
        h < this.feed.entries.length;
        h++) {
            if (this.releaseUrlsAreEqual(e, this.feed.entries[h].url, this.feed.entries[h].pid)) {
                f = h;
                var g = this.items[h];
                if (g !== undefined) {
                    g.className = "tpRelease tpReleaseSelected"
                }
            } else {
                var g = this.items[h];
                if (g !== undefined) {
                    g.className = "tpRelease"
                }
            }
        }
        return f
    },
    handleOnReleaseSelected: function(c) {
        var d = c.data.releaseUrl;
        if (this["feed"] === undefined) {
            return
        }
        this.setCurrentReleaseUrl(d);
        this.currentIndex = null;
        if (c.data.id) {
            this.currentIndex = this.setTileSelectedMediaId(c.data.id)
        }
        if (this.currentIndex == null) {
            this.currentIndex = this.setTileSelectedReleasePid(c.data.url)
        }
    },
    handleSetReleaseUrl: function(c) {
        var d = c.data;
        this.setCurrentReleaseUrl(d)
    },
    handleRefreshStarted: function(c) {
        if (this.loading || this.paging) {
            return
        }
        var d = this;
        this.loading = true;
        if (!this.feed) {
            this.refresh()
        }
        if (this.pretty) {
            setTimeout(function() {
                if (d.loading && !d.loadingIndicator) {
                    d.loadingIndicator = document.createElement("div");
                    d.loadingIndicator.className = "tpFeedLoadingIndicator";
                    d.container.appendChild(d.loadingIndicator);
                    $pdk.jQuery(d.loadingIndicator).animate({
                        rotation: 720
                    }, {
                        easing: "linear",
                        step: function(b, a) {
                            $(this).css("transform", "rotate(" + b + "deg)");
                            $(this).css("-ms-transform", "rotate(" + b + "deg)");
                            $(this).css("-webkit-transform", "rotate(" + b + "deg)")
                        },
                        complete: function() {
                            $pdk.jQuery(d.loadingIndicator).remove();
                            d.loadingIndicator = null
                        },
                        duration: 4000
                    })
                }
            }, 1000)
        }
    },
    refresh: function() {
        var g = document.createElement("div");
        var h = document.createElement("div");
        var e = this.framecolor ? this.framecolor : "#000000";
        var f = this.backgroundcolor ? this.backgroundcolor : "#ffffff";
        e = e.replace("0x", "#");
        f = f.replace("0x", "#");
        g.className = "tpBackground";
        g.style.backgroundColor = f;
        g.style.borderColor = e;
        h.className = "tpBackgroundShine tpGradient";
        this.container.innerHTML = "";
        this.container.appendChild(g);
        this.container.appendChild(h)
    },
    isPrefetch: function() {
        return this.controller.isPrefetch()
    },
    handleReleaseModelRefreshed: function(a) {
        if (this.paging) {
            this.eventQueue.push(a);
            return
        }
        this.loading = false;
        $pdk.jQuery(this.loadingIndicator).stop();
        $pdk.jQuery(this.loadingIndicator).remove();
        var an = a.data;
        var T = (this.feed && this.feed.search !== an.search ? true : false);
        var ao;
        var ap;
        var aq;
        var ad;
        var X;
        var Z;
        var h;
        if (this.feed && this.feed.range && an && an.range) {
            if (an.entries.length > 0) {
                this.paging = true
            }
            if (this.feed.range.startIndex < an.range.startIndex) {
                this.animateForward = true
            } else {
                if (this.feed.range.startIndex > an.range.startIndex) {
                    this.animateForward = false
                }
            }
        } else {
            this.animateForward = false
        }
        this.feed = an;
        this.loadedTiles = [];
        this.numTiles = an.entries.length;
        if (!this.currentPage || T || !this.pretty) {
            this.refresh();
            this.currentPage = null;
            this.previousPage = null
        }
        var at = -1;
        var w = -1;
        var aa = 0;
        if (this.hasoverlay == "true") {
            var au = document.createElement("div");
            au.className = "tpReleaseListOverlay";
            this.container.appendChild(au);
            aa = au.clientHeight
        }
        var af = document.createElement("ul");
        af.className = "tpGrid";
        this.container.appendChild(af);
        $pdk.jQuery(af).css("margin-top", parseInt($pdk.jQuery(af).css("margin-top")) + aa);
        af.ontouchstart = function(b) {
            this.startX = b.changedTouches[0].pageX;
            this.startY = b.changedTouches[0].pageY
        };
        af.ontouchend = function(b) {
            if (this.startX && ((this.startX - b.changedTouches[0].pageX) > 100)) {
                $pdk.controller.nextRange()
            } else {
                if (this.startX && ((b.changedTouches[0].pageX - this.startX) > 100)) {
                    $pdk.controller.previousRange()
                }
            }
        };
        this.items = [];
        var ac, ar, h, O, S, Q, am, ag, Z, aj, aq;
        var V = ($pdk.jQuery(af).innerWidth()) / this.columns;
        var P = ($pdk.jQuery(af).innerHeight()) / this.rows;
        var W, ab, ae, ak;
        var U = 16 / 9;
        if (this.allowscrolling == "true") {
            $(af).append("<li class='tpRelease'><a href='#'><div class='tpInfo'><div class='tpThumbnail'><img></div><div class='tpMetadata'></div></div></a></li>");
            P = parseInt(this.thumbnailheight) + parseInt($(af).find(".tpRelease").css("margin-top")) + parseInt($(af).find(".tpRelease").css("margin-bottom")) + parseInt($(af).find(".tpRelease").css("padding-top")) + parseInt($(af).find(".tpRelease").css("padding-bottom")) + parseInt($(af).find(".tpRelease").css("border-top-width")) + parseInt($(af).find(".tpRelease").css("border-bottom-width")) + parseInt($(af).find("a").css("margin-top")) + parseInt($(af).find("a").css("margin-bottom")) + parseInt($(af).find("a").css("border-top-width")) + parseInt($(af).find("a").css("border-bottom-width")) + parseInt($(af).find("a").css("padding-top")) + parseInt($(af).find("a").css("padding-bottom")) + parseInt($(af).find(".tpThumbnail").css("margin-top")) + parseInt($(af).find(".tpThumbnail").css("margin-bottom")) + parseInt($(af).find(".tpThumbnail").css("border-top-width")) + parseInt($(af).find(".tpThumbnail").css("border-bottom-width")) + parseInt($(af).find(".tpThumbnail").css("padding-top")) + parseInt($(af).find(".tpThumbnail").css("padding-bottom")) + parseInt($(af).find(".tpThumbnail img").css("margin-top")) + parseInt($(af).find(".tpThumbnail img").css("margin-bottom")) + parseInt($(af).find(".tpThumbnail img").css("border-top-width")) + parseInt($(af).find(".tpThumbnail img").css("border-bottom-width")) + parseInt($(af).find(".tpThumbnail img").css("padding-top")) + parseInt($(af).find(".tpThumbnail img").css("padding-bottom"));
            $(af).children().first().remove();
            V -= 10;
            $pdk.jQuery(af).css("overflow-y", "auto")
        }
        if (this.thumbnailwidth && this.thumbnailheight) {
            U = this.thumbnailwidth / this.thumbnailheight
        }
        for (var R = 0;
        R < an.entries.length;
        R++) {
            ac = document.createElement("li");
            ar = document.createElement("div");
            h = document.createElement("a");
            O = document.createElement("div");
            S = document.createElement("div");
            Q = document.createElement("div");
            am = document.createElement("div");
            ag = document.createElement("div");
            Z = document.createElement("h2");
            ac.className = "tpRelease";
            if (this.pretty) {
                ar.className = "tpShine"
            }
            O.className = "tpInfo";
            S.className = "tpThumbnail";
            Q.className = "tpThumbnailOverlay";
            am.className = "tpMetadata";
            ag.className = "tpGroup";
            Z.className = "tpTitle";
            ac.appendChild(ar);
            ac.appendChild(h);
            h.appendChild(O);
            if (this.showThumbnail) {
                O.appendChild(S);
                S.appendChild(Q)
            } else {
                W = 0
            }
            if (this.showTitle || this.showDescription || this.showLength) {
                this.showMetadata = true;
                O.appendChild(am);
                am.appendChild(ag);
                ag.appendChild(Z)
            } else {
                ak = 0
            }
            af.appendChild(ac);
            this.items.push(ac);
            ac.style.width = ((R + 1) % this.columns == 0 ? Math.ceil(V) : Math.floor(V)) + "px";
            ac.style.height = ((Math.floor(R / this.columns) + 1) % this.rows == 0 ? Math.floor(P) : Math.ceil(P)) + "px";
            if ((R + 1) % this.columns != 0) {
                h.style.borderRightWidth = "0px"
            }
            if ((Math.floor(R / this.columns) + 1) % this.rows != 0) {
                h.style.borderBottomWidth = "0px"
            }
            if (this.showThumbnail && !W) {
                W = $(ac).find("a").innerHeight() - ($(S).outerHeight(true) - $(S).innerHeight()) - ($(O).outerHeight(true) - $(O).innerHeight());
                if (!this.showMetadata) {
                    ab = Math.min(Math.floor(W * U), $(ac).find(".tpInfo").innerWidth() - parseInt($(ac).find(".tpThumbnail").css("border-left-width")) - parseInt($(ac).find(".tpThumbnail").css("border-right-width")));
                    $(S).css("margin-right", "0px")
                }
            }
            if (this.showMetadata && !ak) {
                ak = $(ac).find("a").innerWidth() - ($(S).outerWidth(true) - $(S).innerWidth() + (W * U)) - ($(am).outerWidth(true) - $(am).innerWidth()) - ($(O).outerWidth(true) - $(O).innerWidth()) - 1;
                if (!this.showThumbnail) {
                    ae = $(ac).find(".tpInfo").innerHeight() - parseInt($(ac).find(".tpMetadata").css("border-top-width")) - parseInt($(ac).find(".tpMetadata").css("border-top-width"))
                }
            }
            W = Math.max(0, W);
            ab = Math.max(0, ab);
            ae = Math.max(0, ae);
            ak = Math.max(0, ak);
            if (O) {
                S.style.height = W + "px";
                if (this.showMetadata) {
                    S.style.width = (W * U) + "px"
                } else {
                    S.style.width = (ab) + "px"
                }
                am.style.width = ak + "px";
                if (this.showThumbnail) {
                    am.style.height = W + "px"
                } else {
                    am.style.height = ae + "px"
                }
            }
            h.href = "#";
            h.release = an.entries[R];
            h.index = R;
            var ai = this;
            var al = document.createElement("canvas");
            if (!this.createdThumbnailStyles) {
                var Q = $pdk.jQuery(h).find(".tpThumbnailOverlay")[0];
                this.createdThumbnailStyles = true;
                tpCreateColorizedStateStyles(Q, ".tpReleaseList .tpRelease{state} .tpThumbnail .tpThumbnailOverlay { background-image: {url}; }", ai.thumbnailframecolor, this.thumbnailhighlightselectedcolor, this.thumbnailhighlighthovercolor, this.style, "Selected")
            }
            h.onclick = function() {
                if (ai.currentClip && ai.currentClip.baseClip && ai.currentClip.baseClip.noSkip) {
                    return
                }
                ai.wasSetByReleaseList = true;
                ai.currentIndex = this.index;
                if (ai.isPrefetch()) {
                    ai.controller.dispatchEvent("OnReleaseSelected", {
                        releaseUrl: this.release.url,
                        userInitiated: true
                    });
                    ai.controller.loadReleaseURL(this.release.url, true)
                } else {
                    ai.controller.dispatchEvent("OnReleaseSelected", {
                        releaseUrl: this.release.url,
                        userInitiated: true
                    });
                    ai.controller.setRelease(this.release, true)
                }
                return false
            };
            if (this.showTitle) {
                Z.innerHTML += an.entries[R].title
            }
            if (this.showLength) {
                var ah = an.entries[R].length;
                if (ah > 0) {
                    Z.innerHTML += '<span class="tpDuration"> (' + tpMillisToStr(ah) + ")</span>"
                }
            }
            if (this.showDescription) {
                aj = document.createElement("p");
                aj.innerHTML = an.entries[R].description;
                ag.appendChild(aj)
            }
            if (this.showThumbnail) {
                aq = document.createElement("img");
                aq.style.display = "none";
                aq.style.visibility = "hidden";
                aq.tile = ac;
                aq.onload = aq.onerror = function(g) {
                    this.style.display = "";
                    this.style.visibility = "visible";
                    var f = $pdk.jQuery(S).width();
                    var b = $pdk.jQuery(S).height();
                    var n = parseInt($pdk.jQuery(this).css("margin-left"));
                    var o = parseInt($pdk.jQuery(this).css("margin-right"));
                    var p = parseInt($pdk.jQuery(this).css("margin-top"));
                    var d = parseInt($pdk.jQuery(this).css("margin-bottom"));
                    n = (n ? n : 0);
                    o = (n ? n : 0);
                    p = (n ? n : 0);
                    d = (n ? n : 0);
                    var c = f - n - o;
                    var j = b - p - d;
                    if (g !== true) {
                        tpScaleImage(this, c, j);
                        var e = this.newWidth;
                        var l = this.newHeight;
                        if (!e) {
                            e = c
                        }
                        if (!l) {
                            l = j
                        }
                    } else {
                        e = 0;
                        l = 0;
                        this.style.display = "none"
                    }
                    var m = (j - l) / 2;
                    var k = (c - e) / 2;
                    if (e < c) {
                        this.style.paddingLeft = Math.floor(k) + "px";
                        this.style.paddingRight = Math.floor(k) + "px"
                    } else {
                        if (l < j) {
                            this.style.paddingTop = Math.floor(m) + "px";
                            this.style.paddingBottom = Math.floor(m) + "px"
                        }
                    }
                    ai.handleTileLoaded(this.tile)
                };
                aq.tile.style.display = "none";
                S.appendChild(aq);
                if (an.entries[R].media$thumbnails && an.entries[R].media$thumbnails.length == 1) {
                    aq.src = an.entries[R].media$thumbnails[0].plfile$url
                }
                if (an.entries[R].defaultThumbnailUrl) {
                    aq.src = an.entries[R].defaultThumbnailUrl
                } else {
                    aq.onload(true)
                }
            } else {
                this.handleTileLoaded(ac)
            }
        }
        if (this.currentPage) {
            this.previousPage = this.currentPage;
            var V = $pdk.jQuery(af).width();
            if (this.animateForward) {
                $pdk.jQuery(af).find(".tpRelease").css("left", V + "px")
            } else {
                $pdk.jQuery(af).find(".tpRelease").css("left", (-V) + "px")
            }
        }
        this.currentPage = af;
        var ai = this;
        setTimeout(function() {
            ai.doInitialLoad(an)
        }, 1);
        if (this.style && !this.createdColorizationStyles) {
            this.createdColorizationStyles = true;
            var i = "";
            if (this.itembackgroundcolor) {
                i += "#" + this.id + ".tpReleaseList>ul .tpRelease a, ul#" + this.id + ".tpReleaseList .tpRelease a { background-color: #" + this.itembackgroundcolor.substr(2) + "; }";
                i += "#" + this.id + ".tpReleaseList>ul .tpRelease a .tpMetadata, ul#" + this.id + ".tpReleaseList .tpRelease a .tpMetadata { background-color: #" + this.itembackgroundcolor.substr(2) + "; }"
            }
            if (this.itemframecolor) {
                i += "#" + this.id + ".tpReleaseList .tpRelease a { border-color: #" + this.itemframecolor.substr(2) + "; }";
                i += "#" + this.id + ".tpReleaseList .tpRelease .tpShine { background-color: #" + this.itemframecolor.substr(2) + "; }";
                i += "#" + this.id + ".tpReleaseList .tpRelease .tpShine { border-color: #" + this.itemframecolor.substr(2) + "; }"
            }
            if (this.textframecolor) {
                i += "#" + this.id + ".tpReleaseList .tpRelease .tpMetadata { border-color: #" + this.textframecolor.substr(2) + "; }";
                i += "#" + this.id + ".tpReleaseList .tpRelease a .tpMetadata .tpGroup { border-color: #" + this.textframecolor.substr(2) + "; }"
            }
            if (this.textcolor) {
                i += "#" + this.id + ".tpReleaseList .tpRelease a { color: #" + this.textcolor.substr(2) + "; }"
            }
            if (this.thumbnailframecolor) {
                i += "#" + this.id + ".tpReleaseList .tpRelease .tpThumbnail { border-color: #" + this.thumbnailframecolor.substr(2) + "; }"
            }
            if (this.thumbnailbackgroundcolor) {
                i += "#" + this.id + ".tpReleaseList .tpRelease .tpThumbnail { background-color: #" + this.thumbnailbackgroundcolor.substr(2) + "; }";
                i += "#" + this.id + ".tpReleaseList .tpRelease .tpThumbnail img { background-color: #" + this.thumbnailbackgroundcolor.substr(2) + "; }"
            }
            if (this.thumbnailpaddingcolor) {
                i += "#" + this.id + ".tpReleaseList .tpRelease .tpThumbnail { background-color: #" + this.thumbnailpaddingcolor.substr(2) + "; }"
            }
            if (this.framecolor) {
                i += "#" + this.id + ".tpReleaseList { border-color: #" + this.framecolor.substr(2) + "; }";
                i += "#" + this.id + ".tpReleaseList ul { border-color: #" + this.framecolor.substr(2) + "; }";
                i += "#" + this.id + ".tpReleaseList ol { border-color: #" + this.framecolor.substr(2) + "; }"
            }
            if (this.texthighlighthovercolor) {
                i += "#" + this.id + ".tpReleaseList .tpRelease:hover .tpShine { background-color: #" + this.texthighlighthovercolor.substr(2) + "; }";
                i += "#" + this.id + ".tpReleaseList .tpRelease:hover .tpShine { border-color: #" + this.texthighlighthovercolor.substr(2) + "; }"
            }
            if (this.texthovercolor) {
                i += "#" + this.id + ".tpReleaseList .tpRelease:hover a { color: #" + this.texthovercolor.substr(2) + "; }"
            }
            if (this.texthighlighthovercolor) {
                i += "#" + this.id + ".tpReleaseList .tpRelease:hover a .tpMetadata .tpGroup { border-color: #" + this.texthighlighthovercolor.substr(2) + " !important; }"
            }
            if (this.thumbnailhighlighthovercolor) {
                i += "#" + this.id + ".tpReleaseList .tpRelease:hover a .tpThumbnail { border-color: #" + this.thumbnailhighlighthovercolor.substr(2) + " !important; }"
            }
            if (this.itemshineselectedcolor) {
                i += "#" + this.id + ".tpReleaseList .tpReleaseSelected .tpShine { background-color: #" + this.itemshineselectedcolor.substr(2) + "; }";
                i += "#" + this.id + ".tpReleaseList .tpReleaseSelected .tpShine { border-color: #" + this.itemshineselectedcolor.substr(2) + "; }"
            }
            if (this.textselectedcolor) {
                i += "#" + this.id + ".tpReleaseList .tpReleaseSelected a { color: #" + this.textselectedcolor.substr(2) + "; }"
            }
            if (this.texthighlightselectedcolor) {
                i += "#" + this.id + ".tpReleaseList .tpReleaseSelected a .tpMetadata .tpGroup { border-color: #" + this.texthighlightselectedcolor.substr(2) + " !important; }"
            }
            if (this.thumbnailhighlightselectedcolor) {
                i += "#" + this.id + ".tpReleaseList .tpReleaseSelected a .tpThumbnail { border-color: #" + this.thumbnailhighlightselectedcolor.substr(2) + " !important; }"
            }
            if (this.itemshineselectedcolor) {
                i += "#" + this.id + ".tpReleaseList .tpReleaseSelected:hover .tpShine { background-color: #" + this.itemshineselectedcolor.substr(2) + "; }";
                i += "#" + this.id + ".tpReleaseList .tpReleaseSelected:hover .tpShine { border-color: #" + this.itemshineselectedcolor.substr(2) + "; }"
            }
            if (this.textselectedcolor) {
                i += "#" + this.id + ".tpReleaseList .tpReleaseSelected:hover a { color: #" + this.textselectedcolor.substr(2) + "; }"
            }
            if (this.backgroundcolor && this.itembackgroundcolor && this.framecolor) {
                i += ".tpReleaseList ::-webkit-scrollbar                     { background-color: #" + this.backgroundcolor.substr(2) + "}\n";
                i += ".tpReleaseList ::-webkit-scrollbar-track               { background-color: #" + this.backgroundcolor.substr(2) + "}\n";
                i += ".tpReleaseList ::-webkit-scrollbar-thumb               { background-color: #" + this.itembackgroundcolor.substr(2) + "; border-color: #" + this.framecolor.substr(2) + "}\n";
                i += ".tpReleaseList ::-moz-scrollbar                     { background-color: #" + this.backgroundcolor.substr(2) + "}\n";
                i += ".tpReleaseList ::-moz-scrollbar-track               { background-color: #" + this.backgroundcolor.substr(2) + "}\n";
                i += ".tpReleaseList ::-moz-scrollbar-thumb               { background-color: #" + this.itembackgroundcolor.substr(2) + "; border-color: #" + this.framecolor.substr(2) + "}\n"
            }
            if (this.style.styleSheet) {
                this.style.styleSheet.cssText = i
            } else {
                this.style.appendChild(document.createTextNode(i))
            }
        }
        if (this.currentReleaseUrl || this.currentMediaId) {
            this.doSelectTile(this.currentMediaId, this.currentReleaseUrl)
        }
        var Y = this.currentClip;
        if (Y && (Y.baseClip && (Y.baseClip.noSkip))) {
            this.disable()
        } else {
            if (this.blocker) {
                this.enable()
            }
        }
    },
    handleTileLoaded: function(f) {
        var d = this;
        this.loadedTiles.push(f);
        if (this.loadedTiles.length == this.numTiles) {
            if (!this.pretty) {
                $pdk.jQuery(this.container).find(".tpRelease").css("display", "");
                $pdk.jQuery(d.previousPage).remove()
            } else {
                if (this.previousPage) {
                    this.paging = true;
                    var e = $pdk.jQuery(this.currentPage).width();
                    if (this.animateForward) {
                        $pdk.jQuery(this.container).find(".tpRelease").css("display", "").css("-webkit-filter", "blur(1px)").css("filter", "blur(2px)");
                        $pdk.jQuery(this.container).find(".tpGrid .tpRelease").animate({
                            left: "-=" + e
                        }, 600, function() {
                            $pdk.jQuery(d.previousPage).remove();
                            d.paging = false;
                            $pdk.jQuery(d.container).find(".tpRelease").css("-webkit-filter", "").css("filter", "");
                            if (d.eventQueue && d.eventQueue.length) {
                                d.handleReleaseModelRefreshed(d.eventQueue.shift())
                            }
                        })
                    } else {
                        $pdk.jQuery(this.container).find(".tpRelease").css("display", "").css("-webkit-filter", "blur(1px)").css("filter", "blur(2px)");
                        $pdk.jQuery(this.container).find(".tpGrid .tpRelease").animate({
                            left: "+=" + e
                        }, 600, function() {
                            $pdk.jQuery(d.previousPage).remove();
                            d.paging = false;
                            $pdk.jQuery(d.container).find(".tpRelease").css("-webkit-filter", "").css("filter", "");
                            if (d.eventQueue && d.eventQueue.length) {
                                d.handleReleaseModelRefreshed(d.eventQueue.shift())
                            }
                        })
                    }
                } else {
                    $pdk.jQuery(this.container).find(".tpRelease").fadeIn(400, function() {
                        d.paging = false
                    })
                }
            }
            if (this.showDescription) {
                setTimeout(function(a) {
                    for (var b = 0;
                    b < d.loadedTiles.length;
                    b++) {
                        tpEllipsis($pdk.jQuery(d.loadedTiles[b]).find(".tpGroup")[0], $pdk.jQuery(d.loadedTiles[b]).find(".tpGroup p")[0])
                    }
                }, 1)
            }
        }
    },
    doInitialLoad: function(b) {
        if (!b.entries || b.entries.length <= 0) {
            return
        }
        tpDebug("doInitialLoad called");
        if (!this.currentReleaseUrl && this.autoPlay && !this.hasAutoPlayed) {
            tpDebug("doInitialLoad firing OnReleaseSelected");
            this.controller.dispatchEvent("OnReleaseSelected", {
                releaseUrl: b.entries[0].url,
                userInitiated: false
            });
            this.controller.setRelease(b.entries[0], false);
            this.wasSetByReleaseList = true
        } else {
            if (!this.currentReleaseUrl && this.autoLoad && !this.hasAutoLoaded) {
                this.hasAutoLoaded = true;
                this.controller.loadRelease(b.entries[0], false);
                this.wasSetByReleaseList = true
            }
        }
    },
    handleMediaStart: function(c) {
        this.playing = true;
        var d = c.data;
        if (d.baseClip && (d.baseClip.noSkip)) {
            this.disable()
        } else {
            if (this.blocker) {
                this.enable()
            }
        }
        this.currentClip = d
    },
    disable: function() {
        if (tpIsIPhone() || tpIsAndroid()) {
            return
        }
        if (!this.blocker) {
            this.blocker = document.createElement("div");
            this.blocker.style.width = "100%";
            this.blocker.style.height = "100%";
            this.blocker.style.position = "absolute";
            this.blocker.style.top = "0";
            this.blocker.style.left = "0";
            this.blocker.style.background = "#" + this.backgroundcolor.substr(2);
            this.blocker.style.opacity = "0.75";
            this.blocker.style.filter = "alpha(opacity=75)";
            this.blocker.innerHTML = "&nbsp;";
            this.blocker.style.zIndex = "500";
            this.container.appendChild(this.blocker)
        }
        this.blocker.style.display = "";
        var b = this.container.childNodes;
        for (child in b) {
            if (child.style) {
                child.style.opacity = "0.75";
                child.style.filter = "alpha(opacity=75)"
            }
        }
    },
    enable: function() {
        tpDebug("Doing enable");
        try {
            if (this.blocker) {
                this.blocker.style.display = "none"
            }
            var c = this.container.childNodes;
            for (child in c) {
                if (child.style) {
                    child.style.opacity = "";
                    child.style.filter = ""
                }
            }
        } catch (d) {
            tpDebug("enabled() threw an error with " + d.message + " on " + d.lineNumber)
        }
    },
    handleMediaEnd: function(b) {
        this.playing = false;
        tpDebug("Enabling releaseList");
        this.enable()
    },
    output: function(c) {
        var d = "";
        for (prop in c) {
            d += prop + ": " + c[prop] + "\n"
        }
        alert(d)
    }
});
ReleaseList = tpReleaseList;
var SeekEvents = {
    USERSEEKED: "userseeked",
    PROGRAMATICALLYSEEKED: "programaticallyseeked",
    SEEKFAILED: "seekfailed"
};
var SeekStates = {
    PAUSED: "paused",
    PLAYING: "playing",
    USERSEEKING: "userseeking",
    PROGRAMATICALLYSEEKING: "programaticallyseeking",
    ERROR: "error"
};
SeekHandler = EventDispatcher.extend({
    init: function(d) {
        this.videoEngine = d;
        this.seekInterval = 350;
        this.seekState = this.videoEngine.isPaused() ? SeekStates.PAUSED : SeekStates.PLAYING;
        var c = this;
        if (!tpIsIOS()) {} else {}
        this.videoEngine.addEventListener("MEDIA_SEEKED", function(a) {
            c.onSeeked(a)
        });
        this.lastTime = this.videoEngine.getCurrentTime() / 1000
    },
    stopTimer: function() {
        clearInterval(this.seekTimer)
    },
    startTimer: function() {
        var b = this;
        this.lastTime = 0;
        this.seekTimer = setInterval(function() {
            b.onTimer()
        }, this.seekInterval)
    },
    onSeeked: function(c) {
        tpDebug("got seeked event from " + this.lastTime + " to" + this.videoEngine.getCurrentTime());
        this.lastTime = this.video.getCurrentTime() / 1000;
        if (false && this.seeking && Math.abs(this.videoEngine.getCurrentTime() / 1000 - this.seekingTo) <= 300) {} else {
            tpDebug("This was a user seek");
            var d = this;
            setTimeout(function() {
                d.dispatchEvent(SeekEvents.USERSEEKED, d.lastTime)
            }, 1)
        }
        this.seekState = this.videoEngine.isPaused() ? SeekStates.PAUSED : SeekStates.PLAYING
    },
    onSeeking: function(b) {},
    onTimer: function() {},
    doSeek: function(d, e, f) {},
    removeProgressListeners: function() {
        clearInterval(this.progTimer);
        this.progTimer = undefined
    },
    checkPlayable: function() {
        return this.video.readyState >= 3
    },
    checkSeekable: function(b) {
        return false
    },
    checkBuffered: function(b) {
        return false
    },
    destroy: function() {
        this.buildListenerChain();
        this.removeProgressListeners();
        clearInterval(this.seekTimer)
    }
});
StandbyManager = Class.extend({
    init: function(e, f) {
        this.controller = e;
        this.pbm = f;
        var h = this;
        this.controller.registerFunction("showMenuCard", this, this.showMenuCard);
        this.controller.registerFunction("checkIfEndCardExists", this, this.checkIfEndCardExists);
        this.controller.addEventListener("OnLoadReleaseUrl", function(a) {
            if (!h.formVisible) {
                h.controller.dispatchEvent("OnShowPlayOverlay", true)
            } else {}
            h.controller.dispatchEvent("OnShowPreviewImageOverlay", false)
        });
        this.controller.addEventListener("OnMediaEnd", function(a) {
            h.playing = false
        });
        this.controller.addEventListener("OnMediaStart", function(a) {
            h.playing = true
        });
        this.controller.addEventListener("OnReleaseEnd", function(a) {
            h.playing = false
        });
        this.controller.addEventListener("OnClearCurrentRelease", function(a) {
            tpDebug("StandbyManager got " + a.type);
            h.controller.dispatchEvent("OnShowPreviewImageOverlay", false);
            h.controller.dispatchEvent("OnShowPlayOverlay", false);
            h.setStandby(false)
        });
        this.controller.addEventListener("OnReleaseError", function(a) {
            tpDebug("StandbyManager got " + a.type);
            h.setStandby(false)
        });
        this.controller.addEventListener("OnShowCard", function(a) {
            tpDebug("StandbyManager got " + a.type);
            if (a.data.deck == "forms") {
                h.formVisible = true
            }
        });
        this.controller.addEventListener("OnHideCard", function(a) {
            tpDebug("StandbyManager got " + a.type);
            if (a.data.deck == "forms") {
                h.formVisible = false
            }
        });
        this.controller.addEventListener("OnSetReleaseUrl", function(a) {
            h.setStandby(false)
        });
        this.controller.addEventListener("OnSetRelease", function(a) {
            h.setStandby(false)
        });
        this.controller.addEventListener("OnResetPlayer", function(a) {
            h.setStandby(false)
        });
        var g = this.controller.getProperty("endCard");
        if (g) {
            this.endCardID = g
        } else {
            this.endCardID = "forms:tpMenuCard"
        }
    },
    showMenuCard: function(b) {
        if (b) {
            this.controller.showPlayerCard("forms", "tpMenuCard")
        } else {
            this.controller.hidePlayerCard("forms")
        }
    },
    setStandby: function(c, d) {
        if (c) {
            this.doStartStandby(d)
        } else {
            this.doRemoveStandby()
        }
    },
    checkIfEndCardExists: function(c) {
        var d = this.controller.getProperty("endCard");
        if (d) {
            this.endCardID = d
        } else {
            this.endCardID = "tpMenuCard"
        }
        return true
    },
    doStartStandby: function(j) {
        tpDebug("doing startStandby");
        if (this.playing == true) {
            return
        }
        this.isStandBy = true;
        var k = this.controller.getProperty("endCard");
        if (k) {
            this.endCardID = k
        }
        if (!j) {
            tpDebug("dispatching OnShowPlayOverlay true");
            this.controller.dispatchEvent("OnShowPlayOverlay", !this.formVisible)
        } else {
            tpDebug("call to show card");
            var l = false;
            if (this.endCardID.indexOf(":") != -1) {
                var o = this.endCardID.split(":");
                var i = o[0];
                var p = o[1];
                this.controller.showPlayerCard(i, p);
                l = (i !== "forms")
            } else {
                this.controller.showPlayerCard("forms", this.endCardID)
            }
            if (tpIsIOS()) {
                this.controller.showFullScreen(false)
            }
            this.controller.dispatchEvent("OnShowPlayOverlay", l)
        }
        var n;
        var m = this;
        this.playingListener = function(a) {
            m.controller.removeEventListener("OnMediaPlaying", m.playingListener);
            if (m.isStandBy) {
                tpDebug("playingListener hiding overlay");
                m.isStandBy = false
            }
        };
        this.controller.addEventListener("OnMediaPlaying", this.playingListener, true)
    },
    doRemoveStandby: function() {
        if (this.isStandby) {
            this.isStandby = false;
            this.controller.dispatchEvent("OnShowPlayOverlay", false)
        }
    }
});
TokenManager = Class.extend({
    init: function(e) {
        this.controller = e;
        this.pluginsLoaded = false;
        this.waitTokens = {};
        var f = this;
        var d = this.controller.getProperty("token");
        if (d) {
            this.setToken(d, "urn:theplatform:auth:token")
        }
        this.controller.registerFunction("setToken", this, this.setToken);
        this.plugInsCompleteHandler = function(a) {
            f.plugInsComplete.apply(f, arguments)
        };
        this.controller.addEventListener("OnPlugInsComplete", this.plugInsCompleteHandler)
    },
    plugInsComplete: function(c) {
        this.controller.removeEventListener("OnPlugInsComplete", this.plugInsCompleteHandler);
        this.pluginsLoaded = true;
        for (var d in this.waitTokens) {
            this._doSetToken(this.waitTokens[d])
        }
    },
    setToken: function(d, f) {
        if (!f) {
            f = "urn:theplatform:auth:token"
        }
        var e = {
            token: d,
            type: f,
            globalDataType: "com.theplatform.pdk.data::TokenInfo"
        };
        if (this.pluginsLoaded) {
            this._doSetToken(e)
        } else {
            this.waitTokens[f] = e
        }
    },
    _doSetToken: function(b) {
        this.controller.dispatchEvent("OnSetToken", b)
    }
});
UrlManager = Class.extend({
    init: function(b) {
        this.controller = b;
        this.plugins = [];
        this._currentQueue = [];
        this.totalUrlPluginsRegistered = 0;
        this.totalUrlPluginsLoaded = 0;
        this.controller.registerFunction("registerURLPlugIn", this, this.registerURLPlugIn);
        this.controller.registerFunction("setClip", this, this.setClip)
    },
    checkClip: function(d, c) {
        this._context = {
            clip: d,
            callback: c,
            complete: false,
            found: false
        };
        this._currentQueue = this.plugins.concat();
        if (this._currentQueue.length === 0) {
            c(d);
            return true
        } else {
            if (!this._processNextPlugin()) {
                c(d)
            }
            return false
        }
    },
    _processNextPlugin: function() {
        var c = false,
            d;
        while (!c && this._currentQueue.length > 0) {
            d = this._currentQueue.shift();
            c = d.component.rewriteURL(this._context.clip)
        }
        this._context.found = c ? true : this._context.found;
        return this._context.found
    },
    registerURLPlugIn: function(d, f, e) {
        e = parseInt(e);
        this.plugins.push({
            component: d,
            urlType: f,
            priority: (isNaN(e) ? 1000 : e)
        });
        this.totalUrlPluginsRegistered++;
        this.plugins.sort(this.compare)
    },
    setClip: function(b) {
        if (this._currentQueue.length === 0) {
            if (!this._context.complete) {
                this._context.clip = b;
                this._context.callback(b);
                this._context.complete = true
            }
        } else {
            this._context.clip = b;
            if (!this._processNextPlugin()) {
                this.setClip(b)
            }
        }
    },
    compare: function(a, b) {
        return a.priority - b.priority
    }
});

function tpIsAndroid() {
    if (navigator.userAgent.match(/iPhone/i)) {
        return false
    } else {
        if (navigator.userAgent.match(/Android/i)) {
            return true
        } else {
            return false
        }
    }
}
function tpIsChrome() {
    if (navigator.userAgent.toLowerCase().match(/chrome/i)) {
        return true
    } else {
        return false
    }
}
function tpIsAndroidLegacy() {
    if (!navigator.userAgent.match(/Android/i)) {
        return false
    } else {
        if (navigator.userAgent.toLowerCase().indexOf("android 1.") != -1) {
            return true
        } else {
            if (navigator.userAgent.toLowerCase().indexOf("android 2.") != -1) {
                return true
            } else {
                if (navigator.userAgent.toLowerCase().indexOf("android 3.0") != -1) {
                    return true
                } else {
                    if (navigator.userAgent.toLowerCase().indexOf("silk") != -1) {
                        return true
                    } else {
                        return false
                    }
                }
            }
        }
    }
}
function tpIsIOS() {
    if (navigator.userAgent.match(/iPad/i)) {
        return true
    }
    if (navigator.userAgent.match(/iPhone/i)) {
        return true
    } else {
        return false
    }
}
function tpIsIPhone() {
    if (navigator.userAgent.match(/iPhone/i)) {
        return true
    } else {
        return false
    }
}
function tpGetPid(d) {
    var f = d;
    if (f && f.indexOf("pid=") == -1) {
        f = f.substring(f.lastIndexOf("/") + 1);
        var e = f.indexOf("?");
        if (e > 0) {
            f = f.substring(0, e)
        }
    } else {
        if (f) {
            f = f.substring(f.indexOf("pid=") + 4);
            var e = f.indexOf("&");
            if (e > 0) {
                f = f.substring(0, e)
            }
        }
    }
    return f
}
tpControllerClass = $pdk.queue.Controller;

function tpScaleImage(p, l, k) {
    var r = parseInt(p.naturalWidth);
    var j = parseInt(p.naturalHeight);
    var q = j / r;
    p.originalHeight = j;
    p.originalWidth = j;
    var m = k / l;
    var n = l / r;
    var o = k / j;
    if ((n - o) > 0) {
        p.height = (k);
        p.style.width = "auto";
        p.newHeight = k;
        p.newWidth = k / q
    } else {
        if ((n - o) < 0) {
            p.width = (l);
            p.style.height = "auto";
            p.newWidth = l;
            p.newHeight = l * q
        } else {
            p.height = k;
            p.width = l;
            p.newHeight = k;
            p.newWidth = l
        }
    }
}
function tpIsChrome() {
    return (navigator.userAgent.toLowerCase().indexOf("chrome") > -1)
}
function tpIsWebKit() {
    return (navigator.userAgent.toLowerCase().indexOf("webkit") > -1)
}
function tpIsSafari() {
    return (navigator.userAgent.toLowerCase().indexOf("safari") > -1)
}
function tpIsFirefox() {
    return (navigator.userAgent.toLowerCase().indexOf("firefox") > -1)
}
function tpParseXml(d) {
    var e = null;
    if (window.DOMParser) {
        var f = new DOMParser();
        e = f.parseFromString(d, "text/xml")
    } else {
        e = new ActiveXObject("Microsoft.XMLDOM");
        e.async = "false";
        e.loadXML(d)
    }
    tpRemoveWhiteSpace(e);
    return e
}
function tpRemoveWhiteSpace(e) {
    var f = /\S/;
    for (var h = 0;
    h < e.childNodes.length;
    h++) {
        var g = e.childNodes[h];
        if (g.nodeType == 3 && (!(f.test(g.nodeValue)))) {
            e.removeChild(g);
            h--
        } else {
            if (g.nodeType == 1) {
                tpRemoveWhiteSpace(g)
            }
        }
    }
}
function tpTimeToMillis(g) {
    var f = 0;
    if (g) {
        if (g.indexOf("ms") > 0) {
            f = g.substr(0, g.indexOf("ms"))
        } else {
            var h = g.split(":");
            while (h.length > 0) {
                var e = h.shift();
                if (h.length == 2) {
                    f += ((e) * 1000 * 60 * 60)
                }
                if (h.length == 1) {
                    f += ((e) * 1000 * 60)
                }
                if (h.length == 0) {
                    if (e.indexOf(".")) {
                        f += ((e) * 1000)
                    } else {
                        f += (e) * 1000
                    }
                }
            }
        }
    }
    return f
}
function tpSendUrl(d) {
    var c = document.createElement("img");
    c.src = d;
    c.style.display = "none";
    c.width = 1;
    c.height = 1;
    c.left = -1111;
    c.src = d;
    document.body.appendChild(c);
    tpDebug("sent tracking/impressiong to  " + d);
    document.body.removeChild(c)
}
function tpGetIEVersion() {
    var f = 9999;
    if (navigator.appName == "Microsoft Internet Explorer") {
        var e = navigator.userAgent;
        var d = new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");
        if (d.exec(e) != null) {
            f = parseFloat(RegExp.$1)
        }
    }
    return f
}
function tpGetComponentSize(e) {
    var h = false;
    var g = e.style.height;
    var f = e.style.width;
    if (g === "100%" && e.style.width === "100%" || (!g && !f)) {
        h = true
    }
    if (h && e.parentNode && (e.offsetHeight == 0 && e.offsetWidth == 0)) {
        return tpGetComponentSize(e.parentNode)
    } else {
        if (!h) {
            g = g.replace("px", "");
            f = f.replace("px", "");
            return {
                width: parseInt(f),
                height: parseInt(g)
            }
        }
    }
    return {
        width: e.offsetWidth,
        height: e.offsetHeight
    }
}
function tpGetScriptPath(e) {
    if (e === undefined && tpScriptPath !== undefined) {
        return tpScriptPath
    }
    var f = document.getElementsByTagName("script");
    var g;
    if (e !== undefined) {
        for (var h = 0;
        h < f.length;
        h++) {
            if (f[h].src.indexOf(e) >= 0) {
                g = f[h].src;
                break
            }
        }
    } else {
        g = f[f.length - 1].src
    }
    if (!g) {
        g = f[f.length - 1].src
    }
    if (g.indexOf("/") == -1) {
        return ""
    }
    g = g.substring(0, g.lastIndexOf("/"));
    return g
}
function tpMillisToStr(k) {
    var l = k / 1000;
    var h = Math.floor(l / (60 * 60));
    l = l - (h * (60 * 60));
    var g = Math.floor(l / 60);
    var j = Math.floor(l) % 60;
    var i = "";
    if (h > 0) {
        i = h.toString() + ":";
        if (g < 10) {
            i += "0"
        }
    }
    i += g + ":";
    if (j < 10) {
        i += "0"
    }
    i += j.toString();
    return i
}
function tpEllipsis(o, i) {
    var v = false;
    var t = 0;
    var p = i.innerHTML;
    var r = i.innerHTML.length;
    var n = i.innerHTML.length;
    var s = 0;
    var u = o.clientHeight >= o.scrollHeight;
    var m;
    var q;
    while (!u) {
        m = $pdk.jQuery(o).height();
        q = o.scrollHeight;
        if (tpIsFirefox()) {
            q = 0;
            $pdk.jQuery(o).children().each(function(a) {
                q += $pdk.jQuery(o).children().eq(a).outerHeight()
            })
        }
        if ((n - s) <= 1) {
            if (q > m) {
                i.innerHTML = "";
                v = false
            }
            u = true
        } else {
            if (m >= q) {
                s = r;
                r = Math.floor((r + n) / 2);
                i.innerHTML = p.substr(0, r) + "&hellip;";
                v = p.substr(r - 1, 2).match(/^[a-zA-Z]+$/)
            } else {
                if (m < q) {
                    n = r;
                    r = Math.floor((r + s) / 2);
                    i.innerHTML = p.substr(0, r) + "&hellip;";
                    v = p.substr(r - 1, 2).match(/^[a-zA-Z]+$/)
                }
            }
        }
        t++;
        if (t > 100) {
            break
        }
    }
    if (i.innerHTML.substr(0, r).match(/[\W]+$/)) {
        i.innerHTML = i.innerHTML.substr(0, r).replace(/[\W]+$/g, "") + "&hellip;"
    }
    if (v) {
        i.innerHTML = p.substr(0, r);
        i.innerHTML = i.innerHTML.replace(/[\W]+[\w]+$/g, "");
        i.innerHTML += "&hellip;"
    }
}
function tpCreateColorizedStateStyles(u, o, s, w, t, A, q) {
    var z = document.createElement("canvas");
    var r = this;
    if (z.getContext && z.getContext("2d")) {
        var v = $pdk.jQuery(u).css("background-image");
        var y = "";
        if (v && v !== "none") {
            if (v.indexOf('url("') == 0 || v.indexOf("url('") == 0) {
                v = v.substr(5, v.length - 7)
            } else {
                if (v.indexOf("url(") == 0) {
                    v = v.substr(4, v.length - 5)
                }
            }
            var x = new Image();
            x.onload = function() {
                var a = document.createElement("canvas");
                var c = a.getContext("2d");
                a.style.borderColor = "#" + t.substr(2);
                var b = $pdk.jQuery(a).css("border-color");
                b = b.substr(4, b.length - 5).split(", ");
                a.width = this.width;
                a.height = this.height;
                c.drawImage(this, 0, 0, this.width, this.height);
                tpColorize(c, b[0], b[1], b[2]);
                y = o.replace(/\{url\}/g, "url(" + a.toDataURL() + ")").replace(/\{state\}/g, ":hover");
                if (A.styleSheet) {
                    A.styleSheet.cssText = y + A.styleSheet.cssText
                } else {
                    A.insertBefore(document.createTextNode(y), A.firstChild)
                }
            };
            x.src = v;
            var p = new Image();
            p.onload = function() {
                var a = document.createElement("canvas");
                var c = a.getContext("2d");
                a.style.borderColor = "#" + w.substr(2);
                var b = $pdk.jQuery(a).css("border-color");
                b = b.substr(4, b.length - 5).split(", ");
                a.width = this.width;
                a.height = this.height;
                c.drawImage(this, 0, 0, this.width, this.height);
                tpColorize(c, b[0], b[1], b[2]);
                y = o.replace(/\{url\}/g, "url(" + a.toDataURL() + ")").replace(/\{state\}/g, (q ? q : ":active"));
                if (A.styleSheet) {
                    A.styleSheet.cssText += y
                } else {
                    A.appendChild(document.createTextNode(y))
                }
            };
            p.src = v;
            var B = new Image();
            B.onload = function() {
                var a = document.createElement("canvas");
                var c = a.getContext("2d");
                a.style.borderColor = "#" + s.substr(2);
                var b = $pdk.jQuery(a).css("border-color");
                b = b.substr(4, b.length - 5).split(", ");
                a.width = this.width;
                a.height = this.height;
                c.drawImage(this, 0, 0, this.width, this.height);
                tpColorize(c, b[0], b[1], b[2]);
                y = o.replace(/\{url\}/g, "url(" + a.toDataURL() + ")").replace(/\{state\}/g, "");
                if (A.styleSheet) {
                    A.styleSheet.cssText += y
                } else {
                    A.appendChild(document.createTextNode(y))
                }
            };
            B.src = v
        }
    }
}
function tpColorize(V, R, K, g) {
    var G = {
        r: R,
        g: K,
        b: g
    };

    function Q(e, f, j) {
        var e = e / 360,
            f = f / 100,
            j = j / 100,
            a, c, d;
        if (f == 0) {
            a = c = d = j
        } else {
            O = e * 6;
            P = Math.floor(O);
            h = j * (1 - f);
            i = j * (1 - f * (O - P));
            s = j * (1 - f * (1 - (O - P)));
            if (P == 0) {
                a = j;
                c = s;
                d = h
            } else {
                if (P == 1) {
                    a = i;
                    c = j;
                    d = h
                } else {
                    if (P == 2) {
                        a = h;
                        c = j;
                        d = s
                    } else {
                        if (P == 3) {
                            a = h;
                            c = i;
                            d = j
                        } else {
                            if (P == 4) {
                                a = s;
                                c = h;
                                d = j
                            } else {
                                a = j;
                                c = h;
                                d = i
                            }
                        }
                    }
                }
            }
        }
        return {
            r: Math.round(a * 255),
            g: Math.round(c * 255),
            b: Math.round(d * 255)
        }
    }
    function S(c, m, l) {
        c = c / 255;
        m = m / 255;
        l = l / 255;
        var e = Math.min(c, m, l),
            d = Math.max(c, m, l),
            f = d - e,
            n = {};
        n.v = d;
        if (f == 0) {
            n.h = 0;
            n.s = 0
        } else {
            n.s = f / d;
            var k = (((d - c) / 6) + (f / 2)) / f;
            var a = (((d - m) / 6) + (f / 2)) / f;
            var j = (((d - l) / 6) + (f / 2)) / f;
            if (c == d) {
                n.h = j - a
            } else {
                if (m == d) {
                    n.h = (1 / 3) + k - j
                } else {
                    if (l == d) {
                        n.h = (2 / 3) + a - k
                    }
                }
            }
            if (n.h < 0) {
                n.h += 1
            }
            if (n.h > 1) {
                n.h -= 1
            }
        }
        return {
            h: (n.h * 360),
            s: (n.s * 100),
            v: (n.v * 100)
        }
    }
    var L;
    if (V.hasOwnProperty("canvas") || V.canvas) {
        L = V
    }
    if (V.hasOwnProperty("width") || V.width) {
        L = V.getContext("2d")
    }
    if (!L) {
        console.error("Trying to colorize non-canvas");
        return
    }
    var M = L.getImageData(0, 0, L.canvas.width, L.canvas.height);
    var v = S(G.r, G.g, G.b);
    var J = v.h / 360;
    var I = v.s / 100;
    var O = J * 6;
    var P = Math.floor(O);
    var U = v.v * 2.55;
    for (var b = 0;
    b < M.data.length;
    b += 4) {
        if (M[b + 3] == 0) {
            continue
        }
        var N = Math.max(M.data[b] / 2.55, M.data[b + 1] / 2.55, M.data[b + 2] / 2.55);
        var T = N / 100,
            r, H, F;
        if (I == 0) {
            r = H = F = T
        } else {
            var h = T * (1 - I);
            if (P == 0 || P == 2 || P == 4) {
                var s = T * (1 - I * (1 - (O - P)));
                if (P == 0) {
                    r = T;
                    H = s;
                    F = h
                } else {
                    if (P == 2) {
                        r = h;
                        H = T;
                        F = s
                    } else {
                        if (P == 4) {
                            r = s;
                            H = h;
                            F = T
                        }
                    }
                }
            } else {
                var i = T * (1 - I * (O - P));
                if (P == 1) {
                    r = i;
                    H = T;
                    F = h
                } else {
                    if (P == 3) {
                        r = h;
                        H = i;
                        F = T
                    } else {
                        r = T;
                        H = h;
                        F = i
                    }
                }
            }
        }
        M.data[b] = r * (U);
        M.data[b + 1] = H * (U);
        M.data[b + 2] = F * (U)
    }
    L.putImageData(M, 0, 0)
}
var tpScriptPath;
if (window["$pdk"] === undefined) {
    tpScriptPath = tpGetScriptPath()
} else {
    tpScriptPath = $pdk.scriptRoot + "/js"
}
$pdk.ns("$pdk.classes");
$pdk.classes.VideoEngineSubtitlesManager = $pdk.extend(function() {}, {
    MIME_TYPE_VTT: "text/vtt",
    constructor: function(e, f) {
        this.controller = e;
        this.ve = f;
        this.currentSubtitles = undefined;
        this.currentVESubtitles = undefined;
        this.selectedSubtitleLang = undefined;
        this.playlist = undefined;
        this.lastSelectedSubtitles = undefined;
        var d = this;
        this.mediaPlayingHandler = function(a) {
            var b = d.ve.getShowingCaptions();
            d.log("mediaPlayingHandler");
            if (b && b.language) {
                d.log("hiding captions for " + b.language);
                d.ve.hideCaptions(false)
            }
        };
        this.isIOS_compatible = $pdk._browserCheck([{
            browser: "ipad",
            osversion: 8
        }, {
            browser: "iphone",
            osversion: 8
        }, {
            browser: "ipod",
            osversion: 8
        }]);
        tpDebug("VideoEngineSubtitlesManager constructed", "VideoEngineSubtitlesManager", e.id, tpConsts.DEBUG);
        var d = this;
        if (this.isIOS_compatible) {
            e.addEventListener("OnGetSubtitleLanguage", function(a) {
                d.onGetSubtitleLanguage(a)
            });
            e.addEventListener("OnReleaseStart", function(a) {
                d.iosOnReleaseStart(a)
            });
            e.addEventListener("OnMediaLoadStart", function(a) {
                d.iosOnMediaLoadStart(a)
            });
            e.addEventListener("OnMediaEnd", function(a) {
                d.iosOnMediaEnd(a)
            });
            e.addEventListener("OnShowFullScreen", function(a) {
                d.iosFullscreenChange(a)
            })
        } else {
            if (!$pdk.isIOS && $pdk.isSafari) {
                e.addEventListener("OnGetSubtitleLanguage", function(a) {
                    d.onGetSubtitleLanguage(a)
                });
                e.addEventListener("OnMediaLoadStart", function(a) {
                    d.safariOnMediaLoadStart(a)
                })
            } else {
                if (!$pdk.isIOS) {
                    e.addEventListener("OnGetSubtitleLanguage", function(a) {
                        d.onGetSubtitleLanguage(a)
                    });
                    e.addEventListener("OnMediaStart", function(a) {
                        d.onMediaStart(a)
                    })
                } else {
                    this.log("VTT unsupported in this environment.")
                }
            }
        }
    },
    onGetSubtitleLanguage: function(b) {
        this.log("onGetSubtitleLanguage");
        this.selectedSubtitleLang = b.data.langCode;
        this.log("\tselected lang set to: " + this.selectedSubtitleLang);
        if (this.selectedSubtitleLang) {
            this.log("Setting subtitle if videoTrack is true and subtitles have come in.");
            this.showSelectedLang()
        }
    },
    safariOnMediaLoadStart: function(b) {
        this.log("safariOnMediaLoadStart");
        this.prepareCaptions(b)
    },
    onMediaStart: function(b) {
        this.log("onMediaStart");
        this.prepareCaptions(b)
    },
    prepareCaptions: function(b) {
        this.ve.hideCaptions(true);
        this.setCaptions(b.data.baseClip.availableSubtitles);
        this.loadCaptions()
    },
    setCaptions: function(c) {
        this.currentSubtitles = c;
        this.currentVESubtitles = [];
        if (this.currentSubtitles && this.currentSubtitles.length > 0) {
            for (var d = 0;
            d < this.currentSubtitles.length;
            d++) {
                if (this.currentSubtitles[d].videoTrack && !this.isDuplicate(this.currentSubtitles[d])) {
                    this.currentVESubtitles.push(this.currentSubtitles[d])
                }
            }
        }
    },
    loadCaptions: function() {
        this.log("loadCaptions");
        if (this.currentVESubtitles.length > 0) {
            var e = this.getVideoEngineSubtitleToShow();
            this.log("loadCaptions for " + this.currentVESubtitles.length + " tracks");
            var d;
            for (var f = 0;
            f < this.currentVESubtitles.length;
            f++) {
                d = this.currentVESubtitles[f];
                d.show = d === e
            }
            this.ve.loadCaptions({
                captions: this.currentVESubtitles
            }, false)
        } else {
            this.log("no subs to load on VE")
        }
    },
    findSubtitle: function(i, g, h) {
        var f = null;
        if (h && h.length > 0) {
            for (var j = 0;
            j < h.length;
            j++) {
                if (h[j][i] === g) {
                    f = h[j];
                    break
                }
            }
        }
        return f
    },
    isDuplicate: function(e) {
        var h = 0,
            f = this.currentVESubtitles.length,
            g;
        for (h;
        h < f;
        h++) {
            g = this.currentVESubtitles[h];
            if (g.name == e.name || g.language == e.language) {
                return true
            }
        }
        return false
    },
    showSelectedLang: function() {
        var b = this.getVideoEngineSubtitleToShow();
        if (b) {
            this.ve.showCaptions(b)
        } else {
            this.ve.hideCaptions(false)
        }
    },
    getVideoEngineSubtitleToShow: function() {
        var b = this.findSubtitle("language", this.selectedSubtitleLang, this.currentVESubtitles);
        return (b && this.isPreferred(this.selectedSubtitleLang, this.currentSubtitles)) ? b : null
    },
    isPreferred: function(c, d) {
        if (this.isIOS_compatible || $pdk.isAndroid) {
            return true
        }
        return !this.havePreferredAlternate(c, d)
    },
    havePreferredAlternate: function(g, e) {
        var h = 0,
            f = e.length;
        for (h;
        h < f;
        h++) {
            if (e[h].language == g && e[h].MIMEType.toLowerCase() != this.MIME_TYPE_VTT) {
                return true
            }
        }
        return false
    },
    iosFullscreenChange: function(c) {
        this.log("fullscreenChange");
        if (!c.data && this.currentVESubtitles && this.currentVESubtitles.length > 0) {
            this.log("NOT fullscreen and iOS, so update selected language if necessary");
            var d = this.ve.getShowingCaptions();
            if (d && d.language) {
                this.controller.setSubtitleLanguage(d.language)
            } else {
                if (this.selectedSubtitleLang && this.selectedSubtitleLang != "none") {
                    this.controller.setSubtitleLanguage("none")
                }
            }
        }
    },
    iosOnMediaLoadStart: function(c) {
        this.log("iosOnMediaLoadStart");
        if (this.isFirstClip(c.data)) {
            this.showHideOnFirstClip(c.data)
        }
        var d = c.data;
        if (d.baseClip.isAd) {
            this.log("is ad, but doing nothing here for now. should be hidden already.")
        } else {
            this.hideCaptionsWhenPlaying(false);
            if (this.lastSelectedSubtitles) {
                this.log("not an ad and have last selected subtitles, so showing them");
                this.ve.showCaptions(this.lastSelectedSubtitles);
                this.lastSelectedSubtitles = undefined
            } else {
                this.log("not an ad and no lastSelected, so nothing to do")
            }
        }
    },
    iosOnMediaEnd: function(c) {
        this.log("iosOnMediaEnd");
        var d = c.data;
        if (this.contentClipToAdClip(d)) {
            this.log("next clip is ad, so hiding");
            this.lastSelectedSubtitles = this.ve.getShowingCaptions();
            this.ve.hideCaptions(false);
            this.hideCaptionsWhenPlaying(true)
        } else {
            this.log("next clip is NOT an ad, so doing nothing")
        }
    },
    hideCaptionsWhenPlaying: function(b) {
        if (b) {
            this.controller.addEventListener("OnMediaPlaying", this.mediaPlayingHandler)
        } else {
            this.controller.removeEventListener("OnMediaPlaying", this.mediaPlayingHandler)
        }
    },
    isFirstClip: function(b) {
        return b.clipIndex == 0
    },
    showHideOnFirstClip: function(i) {
        var g = i.baseClip.isAd;
        if (this.currentVESubtitles && this.currentVESubtitles.length > 0) {
            var h;
            for (var f = 0;
            f < this.currentVESubtitles.length;
            f++) {
                var j = this.currentVESubtitles[f];
                if (j.show) {
                    h = j;
                    break
                }
            }
            if (h && !g) {
                this.ve.showCaptions(h)
            } else {
                this.ve.hideCaptions(false);
                if (g) {
                    this.lastSelectedSubtitles = h;
                    this.hideCaptionsWhenPlaying(true)
                }
            }
        }
    },
    contentClipToAdClip: function(j) {
        var f = false;
        if (!j.baseClip.isAd) {
            var i = false;
            for (var g = 0;
            g < this.playlist.clips.length;
            g++) {
                var h = this.playlist.clips[g];
                if (i) {
                    if (h.baseClip.isAd) {
                        f = true
                    } else {
                        this.log("next clip not an ad")
                    }
                    break
                }
                if (h.clipIndex == j.clipIndex && h.URL == j.URL) {
                    i = true
                }
            }
        }
        return f
    },
    iosOnReleaseStart: function(h) {
        this.playlist = h.data;
        var g;
        for (var f = 0;
        f < this.playlist.baseClips.length;
        f++) {
            var e = this.playlist.baseClips[f];
            if (!e.isAd) {
                g = e.availableSubtitles;
                break
            }
        }
        this.setCaptions(g);
        if (this.currentVESubtitles && this.currentVESubtitles.length > 0) {
            this.loadCaptions()
        } else {
            this.ve.hideCaptions(true)
        }
    },
    logTracks: function(c) {
        var d = this
    },
    log: function(b) {
        tpDebug("vesm: " + b)
    }
});
XMLLoader = Class.extend({
    init: function(b) {
        this._requestContentType = b
    },
    load: function(r, k, p) {
        var l;
        if (typeof XDomainRequest !== "undefined" && r.indexOf(document.domain) < 0) {
            l = true
        }
        if (typeof XMLHttpRequest === "undefined") {
            XMLHttpRequest = function() {
                try {
                    return new ActiveXObject("Msxml2.XMLHTTP.6.0")
                } catch (a) {}
                try {
                    return new ActiveXObject("Msxml2.XMLHTTP.3.0")
                } catch (a) {}
                try {
                    return new ActiveXObject("Msxml2.XMLHTTP")
                } catch (a) {}
                throw new Error("This browser does not support XMLHttpRequest.")
            }
        }
        var j;
        if (l) {
            j = new XDomainRequest();
            if (typeof(m._requestContentType) === "string") {
                j.setRequestHeader("Content-Type", this._requestContentType)
            }
        } else {
            j = new XMLHttpRequest()
        }
        var m = this;
        var o = false;
        var n = function(a) {
                o = true;
                tpDebug("Error getting SMIL");
                p(a)
            };
        var q = function() {
                if (this.readyState === 4 && this.status === 200 && !o) {
                    o = true;
                    var a = j.responseXML;
                    if (a == null || typeof(a) !== "string") {
                        a = j.responseText
                    }
                    if (typeof(k) === "function") {
                        k(a)
                    }
                } else {
                    if (this.readyState === 4 && this.status === 404 && !o) {
                        o = true;
                        n()
                    } else {
                        if (l && !o) {
                            o = true;
                            if (typeof(k) === "function") {
                                tpDebug("Got SMIL");
                                k(j.responseText);
                                tpDebug("Called SMIL callback")
                            }
                        }
                    }
                }
            };
        j.onreadystatechange = q;
        j.onload = q;
        j.onerror = n;
        j.ontimeout = n;
        setTimeout(function() {
            try {
                tpDebug("Trying to download SMIL from " + r);
                j.open("GET", r);
                j.send();
                setTimeout(function() {
                    if (!o) {
                        if (typeof(p) === "function") {
                            p()
                        }
                    }
                }, 5000)
            } catch (a) {
                tpDebug(a.message);
                if (typeof(p) === "function") {
                    p(a)
                }
            }
        }, 1)
    }
});
if (window.tpPhase1PDKLoaded) {
    if (window.tpDoInitGwtCommManager) {
        tpDoInitGwtCommManager()
    }
    tpTimeEnd("Time for Phase1 JS to load/execute");
    tpTimeEnd("Time from page load until tpPhase1PDKLoaded");
    tpPhase1PDKLoaded()
};

#2 JavaScript::Eval (size: 19, repeated: 1)

/.*\d:\d\d | \d+$/g

#3 JavaScript::Eval (size: 31, repeated: 1)

0, function(T) {
    K(T, 1);
}

#4 JavaScript::Eval (size: 31, repeated: 1)

0, function(T) {
    K(T, 2);
}

#5 JavaScript::Eval (size: 31, repeated: 1)

0, function(T) {
    K(T, 4);
}

#6 JavaScript::Eval (size: 30, repeated: 1)

0, function(T) {
    T.f(0);
}

#7 JavaScript::Eval (size: 30, repeated: 1)

0, function(T) {
    T.f(3);
}

#8 JavaScript::Eval (size: 30, repeated: 1)

0, function(T) {
    T.f(4);
}

#9 JavaScript::Eval (size: 30, repeated: 1)

0, function(T) {
    T.f(7);
}

#10 JavaScript::Eval (size: 31, repeated: 1)

0, function(T) {
    u(T, 1);
}

#11 JavaScript::Eval (size: 31, repeated: 1)

0, function(T) {
    u(T, 2);
}

#12 JavaScript::Eval (size: 31, repeated: 1)

0, function(T) {
    u(T, 4);
}

#13 JavaScript::Eval (size: 96, repeated: 1)

0, function(T, g) {
    (T = (g = B(T), T).X(g), T[0]).removeEventListener(T[1], T[2], false);
}

#14 JavaScript::Eval (size: 51, repeated: 1)

0, function(T, g) {
    (g = T.X(B(T)), h)(T, g);
}

#15 JavaScript::Eval (size: 87, repeated: 1)

0, function(T, g) {
    T.M && (g = T.X(47), v(T, 47, T.$.length), T.I.push([3, g]));
}

#16 JavaScript::Eval (size: 67, repeated: 1)

0, function(T, g) {
    g = z(T), v(T, g.l, g.g.apply(g.C, g.i));
}

#17 JavaScript::Eval (size: 183, repeated: 1)

0, function(T, g) {
    g.push(T[0] << 24 | T[1] << 16 | T[2] << 8 | T[3]), g.push(T[4] << 24 | T[5] << 16 | T[6] << 8 | T[7]), g.push(T[8] << 24 | T[9] << 16 | T[10] << 8 | T[11]);
}

#18 JavaScript::Eval (size: 74, repeated: 1)

0, function(T, g, E) {
    (E = (g = B(T), B)(T), v)(T, E, "" + T.X(g));
}

#19 JavaScript::Eval (size: 81, repeated: 1)

0, function(T, g, E) {
    (g = (E = (g = B(T), B(T)), T.X(g)), v)(T, E, m(g));
}

#20 JavaScript::Eval (size: 83, repeated: 1)

0, function(T, g, E) {
    (g = B(T), E = B(T), 0 != T.X(g)) && v(T, 47, T.X(E));
}

#21 JavaScript::Eval (size: 84, repeated: 1)

0, function(T, g, E) {
    (g = B(T), E = B(T), g = T.H[g] && T.X(g), v)(T, E, g);
}

#22 JavaScript::Eval (size: 76, repeated: 1)

0, function(T, g, E) {
    (g = B(T), E = B(T), v)(T, E, T.X(E) % T.X(g));
}

#23 JavaScript::Eval (size: 76, repeated: 1)

0, function(T, g, E) {
    (g = B(T), E = B(T), v)(T, E, T.X(E) * T.X(g));
}

#24 JavaScript::Eval (size: 76, repeated: 1)

0, function(T, g, E) {
    (g = B(T), E = B(T), v)(T, E, T.X(E) + T.X(g));
}

#25 JavaScript::Eval (size: 76, repeated: 1)

0, function(T, g, E) {
    (g = B(T), E = B(T), v)(T, E, T.X(E) - T.X(g));
}

#26 JavaScript::Eval (size: 99, repeated: 1)

0, function(T, g, E) {
    E = (g = B(T), B(T)), v(T, E, function(T) {
        return eval(T);
    }(T.X(g)));
}

#27 JavaScript::Eval (size: 244, repeated: 1)

0, function(T, g, E) {
    if (3 == T.length) {
        for (E = 0; 3 > E; E++) {
            g[E] += T[E];
        }
        for (T = [13, 8, (E = 0, 13), 12, 16, 5, 3, 10, 15]; 9 > E; E++) {
            g[3](g, E % 3, T[E]);
        }
    }
}

#28 JavaScript::Eval (size: 133, repeated: 1)

0, function(T, g, E) {
    return E = function() {
        return T;
    }, g = function() {
        return E();
    }, g[this.R] = function(N) {
        T = N;
    }, g;
}

#29 JavaScript::Eval (size: 106, repeated: 1)

0, function(T, g, E, D) {
    (D = (E = (g = B(T), B)(T), B(T)), E = T.X(E), g = T.X(g), v)(T, D, g[E]);
}

#30 JavaScript::Eval (size: 89, repeated: 1)

0, function(T, g, E, D) {
    (D = (E = (g = B(T), B)(T), B)(T), v)(T, D, T.X(g) << E);
}

#31 JavaScript::Eval (size: 89, repeated: 1)

0, function(T, g, E, D) {
    (D = (E = (g = B(T), B)(T), B)(T), v)(T, D, T.X(g) >> E);
}

#32 JavaScript::Eval (size: 200, repeated: 1)

0, function(T, g, E, D) {
    (D = (T &= (g = T & 4, 3), E = B(this), B(this)), E = this.X(E), g && (E = k(("" + E).replace(/\r\n/g, "\n"))), T) && f(this, D, w(E.length, 2)), f(this, D, E);
}

#33 JavaScript::Eval (size: 114, repeated: 1)

0, function(T, g, E, D) {
    (D = (g = B(T), E = B(T), B(T)), T.X(g)) == T.X(E) && v(T, D, T.X(D) + 1);
}

#34 JavaScript::Eval (size: 113, repeated: 1)

0, function(T, g, E, D) {
    (D = (g = B(T), E = B(T), B(T)), T.X(g)) > T.X(E) && v(T, D, T.X(D) + 1);
}

#35 JavaScript::Eval (size: 90, repeated: 1)

0, function(T, g, E, D) {
    (E = (g = B(T), B(T)), D = B(T), T).X(g)[T.X(E)] = T.X(D);
}

#36 JavaScript::Eval (size: 96, repeated: 1)

0, function(T, g, E, D) {
    (g = B(T), E = B(T), D = B(T), v)(T, D, (T.X(g) in T.X(E)) + 0);
}

#37 JavaScript::Eval (size: 89, repeated: 1)

0, function(T, g, E, D) {
    E = (g = B(T), B(T)), D = B(T), v(T, D, T.X(g) | T.X(E));
}

#38 JavaScript::Eval (size: 90, repeated: 1)

0, function(T, g, E, D) {
    E = (g = B(T), B(T)), D = B(T), v(T, D, T.X(g) || T.X(E));
}

#39 JavaScript::Eval (size: 225, repeated: 1)

0, function(T, g, E, D) {
    if ((g = T.L.pop())) {
        for (E = B(T); 0 < E; E--) {
            D = B(T), g[D] = T.H[D];
        }
        T.H = (g[236] = T.H[236], g);
    } else {
        v(T, 47, T.$.length);
    }
}

#40 JavaScript::Eval (size: 170, repeated: 1)

0, function(T, g, E, D) {
    try {
        D = T[(g + 2) % 3], T[g] = T[g] - T[(g + 1) % 3] - D ^ (1 == g ? D << E : D >>> E);
    } catch (N) {
        throw N;
    }
}

#41 JavaScript::Eval (size: 130, repeated: 1)

0, function(T, g, E, D, Z) {
    (E = (Z = (D = (E = (g = B(T), B)(T), T).X(B(T)), T.X(B(T))), T).X(E), v)(T, g, x(T, E, D, Z));
}

#42 JavaScript::Eval (size: 224, repeated: 1)

0, function(T, g, E, D, Z) {
    D = (E = (Z = (g = (D = (E = (g = B(T), B)(T), B)(T), T).X(g), T).X(B(T)), T.X(E)), T.X(D)), 0 !== g && (D = x(T, D, Z, 1, g, E), g.addEventListener(E, D, F), v(T, 249, [g, E, D]));
}

#43 JavaScript::Eval (size: 213, repeated: 1)

0, function(T, g, E, D, Z) {
    for (D = (E = B((g = [], T)), 0); D < E; D++) {
        Z = B(T), g.push(T.X(Z));
    }(E = B(T), v)(T, E, function(T, E) {
        for (E = 0; E < g.length; E++) {
            (0, g[E])(T);
        }
    });
}

#44 JavaScript::Eval (size: 138, repeated: 1)

0, function(T, g, E, D, Z) {
    for (D = (Z = (E = (g = B(T), d)(T), 0), []); Z < E; Z++) {
        D.push(B(T));
    }
    v(T, g, D);
}

#45 JavaScript::Eval (size: 334, repeated: 1)

0, function(T, g, E, D, Z, t) {
    if ("object" == (T = (D = (E = (Z = (D = (E = (g = B(T), B(T)), B(T)), B)(T), g = T.X(g), T.X(E)), T.X(D)), T.X(Z)), m)(g)) {
        for (t in Z = [], g) {
            Z.push(t);
        }
        g = Z;
    }
    for (Z = 0, t = g.length; Z < t; Z += D) {
        E(g.slice(Z, Z + D), T);
    }
}

#46 JavaScript::Eval (size: 218, repeated: 1)

0, function(T, g, E, D, Z, t) {
    return (t = (E = (D = (Z = function() {
        return D();
    }, function() {
        return D[E.o + (Z[E.m] === g) - !t[E.m]];
    }), this), E).u, Z)[E.R] = function(T) {
        D[E.s] = T;
    }, Z[E.R](T), T = Z;
}

#47 JavaScript::Eval (size: 323, repeated: 1)

0, function(T, g, E, D, Z, t, O) {
    (O = (D = (Z = (g = z(T), g).g, g).C, E = g.i, E).length, 0 == O) ? (t = new(D[Z])) : 1 == O ? (t = new(D[Z])(E[0])) : 2 == O ? (t = new(D[Z])(E[0], E[1])) : 3 == O ? (t = new(D[Z])(E[0], E[1], E[2])) : 4 == O ? (t = new(D[Z])(E[0], E[1], E[2], E[3])) : R(T, 22), v(T, g.l, t);
}

#48 JavaScript::Eval (size: 901, repeated: 1)

0, function(T, g, E, D, Z, t, O, e, S, X) {
    if ((E = (g = B(T), d(T)), D = "", void 0) != T.H[84]) {
        for (Z = T.X(84), O = Z.length, t = 0; E--;) {
            t = (t + d(T)) % O, D += Z[t];
        }
    } else {
        for (D = (Z = 0, []); Z < E; Z++) {
            D.push(B(T));
        }
        for (t = Z = (E = [], 0); Z < D.length;) {
            O = D[Z++], 128 > O ? (E[t++] = String.fromCharCode(O)) : 191 < O && 224 > O ? (e = D[Z++], E[t++] = String.fromCharCode((O & 31) << 6 | e & 63)) : 239 < O && 365 > O ? (e = D[Z++], S = D[Z++], X = D[Z++], O = ((O & 7) << 18 | (e & 63) << 12 | (S & 63) << 6 | X & 63) - 65536, E[t++] = String.fromCharCode(55296 + (O >> 10)), E[t++] = String.fromCharCode(56320 + (O & 1023))) : (e = D[Z++], S = D[Z++], E[t++] = String.fromCharCode((O & 15) << 12 | (e & 63) << 6 | S & 63));
        }
        D = E.join("");
    }
    v(T, g, D);
}

#49 JavaScript::Eval (size: 39, repeated: 1)

0, function($, _) {
    _._ += !_.$[_[_._] = $[0]]
}

#50 JavaScript::Eval (size: 50, repeated: 1)

0, function($, _) {
    _.push(String.fromCharCode($[0]))
}

#51 JavaScript::Eval (size: 1, repeated: 1)

B

#52 JavaScript::Eval (size: 287, repeated: 1)

B = function(T, g, E) {
    if (g = T.X(47), !(g in T.$)) {
        throw R(T, 31), T.c;
    }
    return (void 0 == T.w && (T.w = I(T.$, g - 4), T.F = void 0), T.F != g >> 3 && (T.F = g >> 3, E = [0, 0, 0, T.X(95)], T.J = c(T.w, T.F, E)), v(T, 47, g + 1), T).$[g] ^ T.J[g % 8];
}

#53 JavaScript::Eval (size: 1, repeated: 1)

I

#54 JavaScript::Eval (size: 88, repeated: 1)

I = function(T, g) {
    return T[g] << 24 | T[g + 1] << 16 | T[g + 2] << 8 | T[g + 3];
}

#55 JavaScript::Eval (size: 1, repeated: 1)

K

#56 JavaScript::Eval (size: 76, repeated: 1)

K = function(T, g, E, D) {
    (E = B(T), D = B(T), f)(T, D, w(T.X(E), g));
}

#57 JavaScript::Eval (size: 1, repeated: 1)

Q

#58 JavaScript::Eval (size: 606, repeated: 1)

Q = function(T, g, E, D, N, b, p, P) {
    try {
        for (E = (N = void 0, D = (b = 0, 5001), T.$.length);
        (--D || T.T) && (b = T.X(47)) < E;) {
            try {
                v(T, 72, b), p = B(T), (N = T.X(p)) && N.call ? N(T) : R(T, 21, 0, p);
            } catch (Z) {
                Z != T.c && (P = T.X(52), 52 != P ? (v(T, P, Z), v(T, 52, 52)) : R(T, 22, Z));
            }
        }
        D || R(T, 33);
    } catch (Z) {
        try {
            R(T, 22, Z);
        } catch (t) {
            M(T, t);
        }
    }
    return (E = T.X(231), g) && v(T, 47, g), E;
}

#59 JavaScript::Eval (size: 1, repeated: 1)

R

#60 JavaScript::Eval (size: 439, repeated: 1)

R = function(T, g, E, D, N) {
    3 < (E = (D = (0 == ((N = T.X(72), g = [g, N >> 8 & 255, N & 255], void 0 != D) && g.push(D), T).X(236).length && (T.H[236] = void 0, v(T, 236, g)), ""), E && (E.message && (D += E.message), E.stack && (D += ":" + E.stack)), T.X(122)), E) && (D = D.slice(0, E - 3), E -= D.length + 3, D = k(D.replace(/\r\n/g, "\n")), f(T, 97, w(D.length, 2).concat(D), 12)), v(T, 122, E);
}

#61 JavaScript::Eval (size: 1, repeated: 1)

U

#62 JavaScript::Eval (size: 132, repeated: 1)

U = function(T, g, E) {
    return ((E = T.X(47), T.$) && E < T.$.length ? (v(T, 47, T.$.length), h(T, g)) : v(T, 47, g), Q)(T, E);
}

#63 JavaScript::Eval (size: 2, repeated: 18)

[]

#64 JavaScript::Eval (size: 1, repeated: 1)

c

#65 JavaScript::Eval (size: 366, repeated: 1)

c = function(T, g, E, D) {
    try {
        for (D = 0; 79669387488 != D;) {
            T += (g << 4 ^ g >>> 5) + g ^ D + E[D & 3], D += 2489668359, g += (T << 4 ^ T >>> 5) + T ^ D + E[D >>> 11 & 3];
        }
        return [T >>> 24, T >> 16 & 255, T >> 8 & 255, T & 255, g >>> 24, g >> 16 & 255, g >> 8 & 255, g & 255];
    } catch (N) {
        throw N;
    }
}

#66 JavaScript::Eval (size: 1, repeated: 1)

d

#67 JavaScript::Eval (size: 85, repeated: 1)

d = function(T, g) {
    return (g = B(T), g & 128) && (g = g & 127 | B(T) << 7), g;
}

#68 JavaScript::Eval (size: 35, repeated: 1)

document.createElement('div').style

#69 JavaScript::Eval (size: 35, repeated: 1)

document.createEvent('MouseEvents')

#70 JavaScript::Eval (size: 1, repeated: 1)

f

#71 JavaScript::Eval (size: 412, repeated: 1)

f = function(T, g, E, D, N, b) {
    for (D = (((N = T.X(g), 97 == g) ? (g = function(T, g, E, D) {
        if (E = (g = N.length, g) - 4 >> 3, N.Z != E) {
            E = (E << (D = [(N.Z = E, 0), 0, 0, b], 3)) - 4;
            try {
                N.U = c(I(N, E), I(N, E + 4), D);
            } catch (O) {
                throw O;
            }
        }
        N.push(N.U[g & 7] ^ T);
    }, b = T.X(190)) : (g = function(T) {
        N.push(T);
    }), D) && g(D & 255), 0), T = E.length; D < T; D++) {
        g(E[D]);
    }
}

#72 JavaScript::Eval (size: 1, repeated: 1)

h

#73 JavaScript::Eval (size: 83, repeated: 1)

h = function(T, g) {
    ((T.L.push(T.H.slice()), T.H)[47] = void 0, v)(T, 47, g);
}

#74 JavaScript::Eval (size: 1, repeated: 1)

k

#75 JavaScript::Eval (size: 485, repeated: 1)

k = function(T, g, E, D, N) {
    for (g = [], D = E = 0; D < T.length; D++) {
        N = T.charCodeAt(D), 128 > N ? (g[E++] = N) : (2048 > N ? (g[E++] = N >> 6 | 192) : (55296 == (N & 64512) && D + 1 < T.length && 56320 == (T.charCodeAt(D + 1) & 64512) ? (N = 65536 + ((N & 1023) << 10) + (T.charCodeAt(++D) & 1023), g[E++] = N >> 18 | 240, g[E++] = N >> 12 & 63 | 128) : (g[E++] = N >> 12 | 224), g[E++] = N >> 6 & 63 | 128), g[E++] = N & 63 | 128);
    }
    return g;
}

#76 JavaScript::Eval (size: 1, repeated: 1)

u

#77 JavaScript::Eval (size: 118, repeated: 1)

u = function(T, g, E, D) {
    for (D = (E = B(T), 0); 0 < g; g--) {
        D = D << 8 | B(T);
    }
    v(T, E, D);
}

#78 JavaScript::Eval (size: 1, repeated: 1)

v

#79 JavaScript::Eval (size: 310, repeated: 1)

v = function(T, g, E) {
    if (47 == g || 72 == g) {
        if (T.H[g]) {
            T.H[g][T.R](E);
        } else {
            T.H[g] = T.Y(E);
        }
    } else if (61 != g && 97 != g && 236 != g || !T.H[g]) {
        T.H[g] = T.O(E, T.X);
    }
    95 == g && (T.w = void 0, v(T, 47, T.X(47) + 4));
}

#80 JavaScript::Eval (size: 10785, repeated: 1)

var m = function(T, g, E) {
        if (g = typeof T, "object" == g) if (T) {
            if (T instanceof Array) return "array";
            if (T instanceof Object) return g;
            if (E = Object.prototype.toString.call(T), "[object Window]" == E) return "object";
            if ("[object Array]" == E || "number" == typeof T.length && "undefined" != typeof T.splice && "undefined" != typeof T.propertyIsEnumerable && !T.propertyIsEnumerable("splice")) return "array";
            if ("[object Function]" == E || "undefined" != typeof T.call && "undefined" != typeof T.propertyIsEnumerable && !T.propertyIsEnumerable("call")) return "function"
        } else return "null";
        else if ("function" == g && "undefined" == typeof T.call) return "object";
        return g
    },
    Y = this,
    u = (new function() {}, function(T, g, E, D) {
        for (D = (E = B(T), 0); 0 < g; g--) D = D << 8 | B(T);
        v(T, E, D)
    }),
    z = function(T, g, E, D, N, b) {
        for (b = (N = (D = (E = (g = {}, B)(T), g.l = B(T), g.i = [], B)(T) - 1, B(T)), 0); b < D; b++) g.i.push(B(T));
        for ((g.g = T.X(E), g).C = T.X(N); D--;) g.i[D] = T.X(g.i[D]);
        return g
    },
    a = function(T, g, E) {
        if (E = T.I.pop()) L(T, E), C(T, g)
    },
    w = function(T, g, E, D) {
        for (E = (D = g - 1, []); 0 <= D; D--) E[g - 1 - D] = T >> 8 * D & 255;
        return E
    },
    x = function(T, g, E, D, N, b) {
        return function() {
            var p = D & 1,
                P = [6, g, E, void 0, N, b, arguments];
            if ((D & 2 && C(T, false), p) && T.I.length) n(T, P);
            else return L(T, P)
        }
    },
    c = function(T, g, E, D) {
        try {
            for (D = 0; 79669387488 != D;) T += (g << 4 ^ g >>> 5) + g ^ D + E[D & 3], D += 2489668359, g += (T << 4 ^ T >>> 5) + T ^ D + E[D >>> 11 & 3];
            return [T >>> 24, T >> 16 & 255, T >> 8 & 255, T & 255, g >>> 24, g >> 16 & 255, g >> 8 & 255, g & 255]
        } catch (N) {
            throw N;
        }
    },
    U = function(T, g, E) {
        return ((E = T.X(47), T.$) && E < T.$.length ? (v(T, 47, T.$.length), h(T, g)) : v(T, 47, g), Q)(T, E)
    },
    B = function(T, g, E) {
        if (g = T.X(47), !(g in T.$)) throw R(T, 31), T.c;
        return (void 0 == T.w && (T.w = I(T.$, g - 4), T.F = void 0), T.F != g >> 3 && (T.F = g >> 3, E = [0, 0, 0, T.X(95)], T.J = c(T.w, T.F, E)), v(T, 47, g + 1), T).$[g] ^ T.J[g % 8]
    },
    y = function(T, g) {
        try {
            r(this, T, g)
        } catch (E) {
            M(this, E)
        }
    },
    d = (y.prototype.c = {}, function(T, g) {
        return (g = B(T), g & 128) && (g = g & 127 | B(T) << 7), g
    }),
    L = function(T, g, E, D, N) {
        if (E = g[0], 1 == E) T.u(g);
        else if (2 == E) {
            D = (E = g[1], g)[3];
            try {
                T.M = false, N = T.u(g)
            } catch (b) {
                M(T, b), N = T.a
            }
            E && E(N), D.push(N)
        } else if (3 == E) T.u(g);
        else if (4 == E) T.u(g);
        else if (5 == E) T.M = false, g = g[1], g();
        else if (6 == E) return N = g[2], v(T, 223, g[6]), v(T, 231, N), T.u(g)
    },
    F = false,
    Q = function(T, g, E, D, N, b, p, P) {
        try {
            for (E = (N = void 0, D = (b = 0, 5001), T.$.length);
            (--D || T.T) && (b = T.X(47)) < E;) try {
                v(T, 72, b), p = B(T), (N = T.X(p)) && N.call ? N(T) : R(T, 21, 0, p)
            } catch (Z) {
                Z != T.c && (P = T.X(52), 52 != P ? (v(T, P, Z), v(T, 52, 52)) : R(T, 22, Z))
            }
            D || R(T, 33)
        } catch (Z) {
            try {
                R(T, 22, Z)
            } catch (t) {
                M(T, t)
            }
        }
        return (E = T.X(231), g) && v(T, 47, g), E
    },
    R = ((y.prototype.X = function(T, g) {
        if (void 0 === (g = this.H[T], g)) throw R(this, 30, 0, T), this.c;
        return g()
    }, y.prototype.W = Y.requestIdleCallback ?
    function(T) {
        requestIdleCallback(T, {
            timeout: 4
        })
    } : Y.setImmediate ?
    function(T) {
        setImmediate(T)
    } : function(T) {
        setTimeout(T, 0)
    }, y.prototype.h = (window.performance || {}).now ?
    function() {
        return window.performance.now() | 0
    } : function() {
        return +new Date
    }, y).prototype.s = 36, function(T, g, E, D, N) {
        3 < (E = (D = (0 == ((N = T.X(72), g = [g, N >> 8 & 255, N & 255], void 0 != D) && g.push(D), T).X(236).length && (T.H[236] = void 0, v(T, 236, g)), ""), E && (E.message && (D += E.message), E.stack && (D += ":" + E.stack)), T.X(122)), E) && (D = D.slice(0, E - 3), E -= D.length + 3, D = k(D.replace(/\r\n/g, "\n")), f(T, 97, w(D.length, 2).concat(D), 12)), v(T, 122, E)
    }),
    f = function(T, g, E, D, N, b) {
        for (D = (((N = T.X(g), 97 == g) ? (g = function(T, g, E, D) {
            if (E = (g = N.length, g) - 4 >> 3, N.Z != E) {
                E = (E << (D = [(N.Z = E, 0), 0, 0, b], 3)) - 4;
                try {
                    N.U = c(I(N, E), I(N, E + 4), D)
                } catch (O) {
                    throw O;
                }
            }
            N.push(N.U[g & 7] ^ T)
        }, b = T.X(190)) : g = function(T) {
            N.push(T)
        }, D) && g(D & 255), 0), T = E.length; D < T; D++) g(E[D])
    },
    K = (((y.prototype.V = function(T, g, E, D) {
        try {
            D = T[(g + 2) % 3], T[g] = T[g] - T[(g + 1) % 3] - D ^ (1 == g ? D << E : D >>> E)
        } catch (N) {
            throw N;
        }
    }, y).prototype.m = "caller", y.prototype).j = function(T, g, E) {
        if (3 == T.length) {
            for (E = 0; 3 > E; E++) g[E] += T[E];
            for (T = [13, 8, (E = 0, 13), 12, 16, 5, 3, 10, 15]; 9 > E; E++) g[3](g, E % 3, T[E])
        }
    }, function(T, g, E, D) {
        (E = B(T), D = B(T), f)(T, D, w(T.X(E), g))
    }),
    v = function(T, g, E) {
        if (47 == g || 72 == g) if (T.H[g]) T.H[g][T.R](E);
        else T.H[g] = T.Y(E);
        else if (61 != g && 97 != g && 236 != g || !T.H[g]) T.H[g] = T.O(E, T.X);
        95 == g && (T.w = void 0, v(T, 47, T.X(47) + 4))
    },
    n = ((y.prototype.N = function(T, g, E, D, N, b) {
        if (this.a) return this.a;
        try {
            b = [], N = [], D = !! T, n(this, [1, D, N, g]), n(this, [2, T, N, b]), C(this, D), E = b[0]
        } catch (p) {
            M(this, p), E = this.a, T && T(E)
        }
        return E
    }, y.prototype.R = "toString", y).prototype.T = false, function(T, g) {
        T.I.splice(0, 0, g)
    }),
    h = (y.prototype.o = 35, y.prototype.P = function(T, g, E, D, N) {
        for (N = D = 0; N < T.length; N++) D += T.charCodeAt(N), D += D << 10, D ^= D >> 6;
        return (D += D << 3, D ^= D >> 11, T = D + (D << 15) >>> 0, D = new Number(T & (1 << g) - 1), D)[0] = (T >>> g) % E, D
    }, function(T, g) {
        ((T.L.push(T.H.slice()), T.H)[47] = void 0, v)(T, 47, g)
    }),
    M = function(T, g) {
        T.a = ("E:" + g.message + ":" + g.stack).slice(0, 2048)
    },
    H = ((y.prototype.f = function(T, g, E, D) {
        (D = (T &= (g = T & 4, 3), E = B(this), B(this)), E = this.X(E), g && (E = k(("" + E).replace(/\r\n/g, "\n"))), T) && f(this, D, w(E.length, 2)), f(this, D, E)
    }, y).prototype.u = function(T, g, E, D, N) {
        if ((g = T[0], 4) == g) {
            T = T[1];
            try {
                for (D = (T = (E = atob(T), []), g = 0); D < E.length; D++) {
                    for (N = E.charCodeAt(D); 255 < N;) T[g++] = N & 255, N >>= 8;
                    T[g++] = N
                }
                this.$ = T
            } catch (b) {
                R(this, 17, b)
            }
            Q(this)
        } else if (1 == g) E = T[2], N = T[1], E.push(this.X(61).length, this.X(97).length, this.X(244).length, this.X(122)), this.M = N, v(this, 231, T[3]), this.H[208] && U(this, this.X(208));
        else {
            if (2 == g) {
                if (T = (N = ((4 < (N = ((N = (E = T[2], T = w(this.X(61).length + 2, 2), this).X(236), 0) < N.length && f(this, 61, w(N.length, 2).concat(N), 15), this).X(102) & 511, N -= this.X(61).length + 5, g = this.X(97), g.length) && (N -= g.length + 3), 0) < N && f(this, 61, w(N, 2).concat(W(N)), 10), 4 < g.length && f(this, 61, w(g.length, 2).concat(g), 153), W(2)).concat(this.X(61)), N[1] = N[0] ^ 3, N[3] = N[1] ^ T[0], N[4] = N[1] ^ T[1], window).btoa) {
                    for (D = 0, g = ""; D < N.length; D += 8192) g += String.fromCharCode.apply(null, N.slice(D, D + 8192));
                    T = T(g).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "")
                } else T = void 0;
                if (T) T = "!" + T;
                else for (g = 0, T = ""; g < N.length; g++) D = N[g][this.R](16), 1 == D.length && (D = "0" + D), T += D;
                return ((this.X(61).length = E[0], this.X(97)).length = E[1], this.X(244)).length = E[2], N = T, v(this, 122, E[3]), N
            }
            if (3 == g) U(this, T[1]);
            else if (6 == g) return U(this, T[1])
        }
    }, function(T, g) {
        if (g = T.h(), 15 > g - T.K || 0 != document.hidden) return false;
        return !(T.K = g, 0)
    }),
    W = (y.prototype.A = function(T, g, E) {
        return ((g ^= g << 13, g ^= g >> 17, g = (g ^ g << 5) & E) || (g = 1), T) ^ g
    }, function(T, g) {
        for (g = []; T--;) g.push(255 * Math.random() | 0);
        return g
    }),
    I = (y.prototype.D = function(T, g, E, D, N, b) {
        for (E = [], b = D = 0; b < T.length; b++) for (N = N << g | T[b], D += g; 7 < D;) D -= 8, E.push(N >> D & 255);
        return E
    }, function(T, g) {
        return T[g] << 24 | T[g + 1] << 16 | T[g + 2] << 8 | T[g + 3]
    }),
    C = function(T, g) {
        0 != T.I.length && (g && !H(T) ? a(T, g) : g ? T.W(function() {
            a(T, g)
        }) : a(T, g))
    },
    r = function(T, g, E, D) {
        ((D = ((((((((((((((((((((((((((((T.K = T.h(), T).O = function(T, g, E, D, Z, t) {
            return (t = (E = (D = (Z = function() {
                return D()
            }, function() {
                return D[E.o + (Z[E.m] === g) - !t[E.m]]
            }), this), E).u, Z)[E.R] = function(T) {
                D[E.s] = T
            }, Z[E.R](T), T = Z
        }, T).H = [], T).Y = function(T, g, E) {
            return E = function() {
                return T
            }, g = function() {
                return E()
            }, g[this.R] = function(N) {
                T = N
            }, g
        }, v(T, 47, 0), v)(T, 72, 0), v)(T, 211, function(T, g, E) {
            (g = B(T), E = B(T), g = T.H[g] && T.X(g), v)(T, E, g)
        }), v(T, 242, Y), v)(T, 39, function(T) {
            K(T, 1)
        }), T.L = [], v(T, 214, function(T, g, E, D, Z, t, O) {
            (O = (D = (Z = (g = z(T), g).g, g).C, E = g.i, E).length, 0 == O) ? t = new D[Z] : 1 == O ? t = new D[Z](E[0]) : 2 == O ? t = new D[Z](E[0], E[1]) : 3 == O ? t = new D[Z](E[0], E[1], E[2]) : 4 == O ? t = new D[Z](E[0], E[1], E[2], E[3]) : R(T, 22), v(T, g.l, t)
        }), v)(T, 102, 0), v)(T, 249, 0), v)(T, 61, [165, 0, 0]), v(T, 135, function(T, g) {
            g = z(T), v(T, g.l, g.g.apply(g.C, g.i))
        }), v(T, 41, function(T, g) {
            (T = (g = B(T), T).X(g), T[0]).removeEventListener(T[1], T[2], false)
        }), v)(T, 77, T), v)(T, 118, function(T, g) {
            (g = T.X(B(T)), h)(T, g)
        }), v(T, 74, function(T, g, E, D) {
            E = (g = B(T), B(T)), D = B(T), v(T, D, T.X(g) || T.X(E))
        }), v(T, 5, function(T) {
            u(T, 4)
        }), v(T, 13, function(T, g, E, D, Z, t) {
            if ("object" == (T = (D = (E = (Z = (D = (E = (g = B(T), B(T)), B(T)), B)(T), g = T.X(g), T.X(E)), T.X(D)), T.X(Z)), m)(g)) {
                for (t in Z = [], g) Z.push(t);
                g = Z
            }
            for (Z = 0, t = g.length; Z < t; Z += D) E(g.slice(Z, Z + D), T)
        }), v(T, 49, function(T, g, E) {
            (g = B(T), E = B(T), v)(T, E, T.X(E) + T.X(g))
        }), v)(T, 122, 2048), v)(T, 97, W(4)), v)(T, 236, []), v(T, 21, function(T, g, E) {
            E = (g = B(T), B(T)), v(T, E, function(T) {
                return eval(T)
            }(T.X(g)))
        }), T.S = function(T, g) {
            g.push(T[0] << 24 | T[1] << 16 | T[2] << 8 | T[3]), g.push(T[4] << 24 | T[5] << 16 | T[6] << 8 | T[7]), g.push(T[8] << 24 | T[9] << 16 | T[10] << 8 | T[11])
        }, v(T, 101, function(T, g, E, D, Z, t, O, e, S, X) {
            if ((E = (g = B(T), d(T)), D = "", void 0) != T.H[84]) for (Z = T.X(84), O = Z.length, t = 0; E--;) t = (t + d(T)) % O, D += Z[t];
            else {
                for (D = (Z = 0, []); Z < E; Z++) D.push(B(T));
                for (t = Z = (E = [], 0); Z < D.length;) O = D[Z++], 128 > O ? E[t++] = String.fromCharCode(O) : 191 < O && 224 > O ? (e = D[Z++], E[t++] = String.fromCharCode((O & 31) << 6 | e & 63)) : 239 < O && 365 > O ? (e = D[Z++], S = D[Z++], X = D[Z++], O = ((O & 7) << 18 | (e & 63) << 12 | (S & 63) << 6 | X & 63) - 65536, E[t++] = String.fromCharCode(55296 + (O >> 10)), E[t++] = String.fromCharCode(56320 + (O & 1023))) : (e = D[Z++], S = D[Z++], E[t++] = String.fromCharCode((O & 15) << 12 | (e & 63) << 6 | S & 63));
                D = E.join("")
            }
            v(T, g, D)
        }), v(T, 52, 52), v(T, 17, function(T, g, E) {
            (E = (g = B(T), B)(T), v)(T, E, "" + T.X(g))
        }), v)(T, 23, function(T, g, E, D, Z) {
            for (D = (E = B((g = [], T)), 0); D < E; D++) Z = B(T), g.push(T.X(Z));
            (E = B(T), v)(T, E, function(T, E) {
                for (E = 0; E < g.length; E++)(0, g[E])(T)
            })
        }), v(T, 180, function(T, g, E, D) {
            (g = B(T), E = B(T), D = B(T), v)(T, D, (T.X(g) in T.X(E)) + 0)
        }), T).M = false, v)(T, 152, function(T, g, E, D) {
            if (g = T.L.pop()) {
                for (E = B(T); 0 < E; E--) D = B(T), g[D] = T.H[D];
                T.H = (g[236] = T.H[236], g)
            } else v(T, 47, T.$.length)
        }), v(T, 165, function(T) {
            u(T, 1)
        }), T.I = [], v)(T, 204, function(T, g, E, D) {
            (D = (E = (g = B(T), B)(T), B)(T), v)(T, D, T.X(g) >> E)
        }), v)(T, 95, 0), v)(T, 142, function(T) {
            K(T, 4)
        }), v(T, 146, function() {}), v)(T, 231, {}), v)(T, 31, function(T, g, E, D, Z) {
            D = (E = (Z = (g = (D = (E = (g = B(T), B)(T), B)(T), T).X(g), T).X(B(T)), T.X(E)), T.X(D)), 0 !== g && (D = x(T, D, Z, 1, g, E), g.addEventListener(E, D, F), v(T, 249, [g, E, D]))
        }), v(T, 190, 0), v)(T, 252, function(T) {
            T.f(4)
        }), v(T, 244, []), v)(T, 193, function(T, g, E, D, Z) {
            (E = (Z = (D = (E = (g = B(T), B)(T), T).X(B(T)), T.X(B(T))), T).X(E), v)(T, g, x(T, E, D, Z))
        }), v)(T, 169, function(T, g, E, D) {
            (E = (g = B(T), B(T)), D = B(T), T).X(g)[T.X(E)] = T.X(D)
        }), v)(T, 4, function(T) {
            u(T, 2)
        }), v(T, 60, function(T, g, E, D, Z) {
            for (D = (Z = (E = (g = B(T), d)(T), 0), []); Z < E; Z++) D.push(B(T));
            v(T, g, D)
        }), v)(T, 65, function(T, g, E) {
            (g = B(T), E = B(T), 0 != T.X(g)) && v(T, 47, T.X(E))
        }), v(T, 247, function(T, g, E, D) {
            (D = (E = (g = B(T), B)(T), B(T)), E = T.X(E), g = T.X(g), v)(T, D, g[E])
        }), v(T, 117, function(T, g, E) {
            (g = (E = (g = B(T), B(T)), T.X(g)), v)(T, E, m(g))
        }), E).v ||
        function() {}, v)(T, 143, function(T, g) {
            T.M && (g = T.X(47), v(T, 47, T.$.length), T.I.push([3, g]))
        }), v(T, 125, function(T, g, E, D) {
            (D = (g = B(T), E = B(T), B(T)), T.X(g)) == T.X(E) && v(T, D, T.X(D) + 1)
        }), g && "!" == g.charAt(0)) ? (T.a = g, D()) : (E = !! E.v, T.M = E, T.$ = [], n(T, [4, g]), n(T, [5, D]), C(T, E))
    },
    k = function(T, g, E, D, N) {
        for (g = [], D = E = 0; D < T.length; D++) N = T.charCodeAt(D), 128 > N ? g[E++] = N : (2048 > N ? g[E++] = N >> 6 | 192 : (55296 == (N & 64512) && D + 1 < T.length && 56320 == (T.charCodeAt(D + 1) & 64512) ? (N = 65536 + ((N & 1023) << 10) + (T.charCodeAt(++D) & 1023), g[E++] = N >> 18 | 240, g[E++] = N >> 12 & 63 | 128) : g[E++] = N >> 12 | 224, g[E++] = N >> 6 & 63 | 128), g[E++] = N & 63 | 128);
        return g
    };
try {
    window.addEventListener("unload", function() {}, F), window.addEventListener("test", null, Object.defineProperty({}, "passive", {
        get: function() {
            F = {
                passive: true
            }
        }
    }))
} catch (T) {}
var l = function(T, g, E) {
        E = new y(T, {
            v: g
        }), this.invoke = function(T, g, b) {
            return (b = E.N(g && T, b), T && !g) && T(b), b
        }
    },
    q = (Y.botguard || (Y.botguard = {}), Y).botguard;
(q.QKq = l, q).bg = l;

#81 JavaScript::Eval (size: 1, repeated: 1)

x

#82 JavaScript::Eval (size: 192, repeated: 1)

x = function(T, g, E, D, N, b) {
    return function() {
        var p = D & 1,
            P = [6, g, E, void 0, N, b, arguments];
        if ((D & 2 && C(T, false), p) && T.I.length) {
            n(T, P);
        } else {
            return L(T, P);
        }
    };
}

#83 JavaScript::Eval (size: 1, repeated: 1)

y

#84 JavaScript::Eval (size: 1, repeated: 1)

z

#85 JavaScript::Eval (size: 262, repeated: 1)

z = function(T, g, E, D, N, b) {
    for (b = (N = (D = (E = (g = {}, B)(T), g.l = B(T), g.i = [], B)(T) - 1, B(T)), 0); b < D; b++) {
        g.i.push(B(T));
    }
    for ((g.g = T.X(E), g).C = T.X(N); D--;) {
        g.i[D] = T.X(g.i[D]);
    }
    return g;
}

Executed Writes (15)

#1 JavaScript::Write (size: 0, repeated: 1)

#2 JavaScript::Write (size: 39, repeated: 1)

<script id="__gwt_marker_PDK"></script>

#3 JavaScript::Write (size: 116, repeated: 1)

<script src="http://www.nbcnewyork.com/assets/pdk565/pdk/js/app/C6C5945805B3DB0F7834A629FE3D855A.cache.js"></script>

#4 JavaScript::Write (size: 76, repeated: 1)

<script src="http://www.nbcnewyork.com/includes/AppMeasurement.js"></script>

#5 JavaScript::Write (size: 72, repeated: 1)

<script src="http://www.nbcnewyork.com/includes/VisitorAPI.js"></script>

#6 JavaScript::Write (size: 577, repeated: 1)

<script><!--
window.__gwtStatsEvent && window.__gwtStatsEvent({moduleName:"PDK", sessionId:window.__gwtStatsSessionId, subSystem:"startup",evtGroup: "loadExternalRefs", millis:(new Date()).getTime(),type: "end"});window.__gwtStatsEvent && window.__gwtStatsEvent({moduleName:"PDK", sessionId:window.__gwtStatsSessionId, subSystem:"startup",evtGroup: "moduleStartup", millis:(new Date()).getTime(),type: "moduleRequested"});document.write("<script src=\"http://www.nbcnewyork.com/assets/pdk565/pdk/js/app/C6C5945805B3DB0F7834A629FE3D855A.cache.js\"></scr" + "ipt>");
--></script>

#7 JavaScript::Write (size: 92, repeated: 1)

<style id="tpCategoryListLoading" >.tpCategoryList > * { display: none !important; }</style>

#8 JavaScript::Write (size: 94, repeated: 1)

<style id="tpCategoryModelLoading" >.tpCategoryModel > * { display: none !important; }</style>

#9 JavaScript::Write (size: 84, repeated: 1)

<style id="tpClipInfoLoading" >.tpClipInfo > * { display: none !important; }</style>

#10 JavaScript::Write (size: 80, repeated: 1)

<style id="tpHeaderLoading" >.tpHeader > * { display: none !important; }</style>

#11 JavaScript::Write (size: 88, repeated: 1)

<style id="tpNavigationLoading" >.tpNavigation > * { display: none !important; }</style>

#12 JavaScript::Write (size: 76, repeated: 1)

<style id="tpPlayerLoading" >.tpPlayer { display: none !important; }</style>

#13 JavaScript::Write (size: 90, repeated: 1)

<style id="tpReleaseListLoading" >.tpReleaseList > * { display: none !important; }</style>

#14 JavaScript::Write (size: 92, repeated: 1)

<style id="tpReleaseModelLoading" >.tpReleaseModel > * { display: none !important; }</style>

#15 JavaScript::Write (size: 80, repeated: 1)

<style id="tpSearchLoading" >.tpSearch > * { display: none !important; }</style>


HTTP Transactions (127)


Request Response
GET /news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Accept-Ranges: bytes
Age: 33
Cache-Control: public, max-age=1800
Content-Encoding: gzip
Date: Wed, 21 Dec 2016 23:00:20 GMT
Etag: &quot;1482361169-1&quot;
Expires: Sun, 11 Mar 1984 12:00:00 GMT
Last-Modified: Wed, 21 Dec 2016 22:59:29 +0000
Server: nginx/1.4.6 (Ubuntu)
Vary: Cookie, Accept-Encoding
Via: 1.1 varnish
X-Backend-Name: ip-172-30-8-7
X-Drupal-Cache: HIT
X-Powered-By: PHP/5.5.9-1ubuntu4.20
X-Varnish: 1037884084 1037848928
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 57
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 21310
Connection: keep-alive
GET /arrowchat/includes/js/jquery-ui.js HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: application/x-javascript
Accept-Ranges: bytes
Age: 0
Content-Encoding: gzip
Date: Wed, 21 Dec 2016 23:00:20 GMT
Last-Modified: Wed, 07 Dec 2016 22:14:06 GMT
Server: nginx/1.4.6 (Ubuntu)
Vary: Accept-Encoding
Via: 1.1 varnish
X-Varnish: 233815405
X-Varnish-Cache: MISS
X-Varnish-Cache-Count: 0
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 20447
Connection: keep-alive
GET /arrowchat/external.php?type=css HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/css,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: text/css; charset=UTF-8
Accept-Ranges: bytes
Age: 0
Content-Encoding: gzip
Date: Wed, 21 Dec 2016 23:00:21 GMT
Expires: Wed, 28 Dec 2016 23:00:21 GMT
Server: nginx/1.4.6 (Ubuntu)
Vary: Accept-Encoding
Via: 1.1 varnish
X-Powered-By: PHP/5.5.9-1ubuntu4.20
X-Varnish: 233815503
X-Varnish-Cache: MISS
X-Varnish-Cache-Count: 0
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 13078
Connection: keep-alive
GET /sites/all/themes/zero_hedge/images/logo_mobile.svg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/svg+xml
Accept-Ranges: bytes
Age: 51
Content-Encoding: gzip
Date: Wed, 21 Dec 2016 23:00:21 GMT
Last-Modified: Wed, 07 Dec 2016 22:14:06 GMT
Server: nginx/1.4.6 (Ubuntu)
Vary: Accept-Encoding
Via: 1.1 varnish
X-Varnish: 1037884470 1037832589
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 225
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 3878
Connection: keep-alive
GET /sites/default/files/css/css_380e8a0020b50638a7a894e528defeae.css HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/css,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: text/css
Accept-Ranges: bytes
Age: 9
Content-Encoding: gzip
Date: Wed, 21 Dec 2016 23:00:21 GMT
Last-Modified: Sun, 18 Dec 2016 17:24:25 GMT
Server: nginx/1.4.6 (Ubuntu)
Vary: Accept-Encoding
Via: 1.1 varnish
X-Varnish: 233815510 233805945
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 41
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 22622
Connection: keep-alive
GET /sites/all/themes/zero_hedge/images/logo_full.svg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/svg+xml
Accept-Ranges: bytes
Age: 49
Content-Encoding: gzip
Date: Wed, 21 Dec 2016 23:00:21 GMT
Last-Modified: Wed, 07 Dec 2016 22:14:06 GMT
Server: nginx/1.4.6 (Ubuntu)
Vary: Accept-Encoding
Via: 1.1 varnish
X-Varnish: 233815587 233764452
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 222
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 18144
Connection: keep-alive
GET /sites/default/files/pictures/picture-44273.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 42
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;4fe3409a-471&quot;
Last-Modified: Thu, 21 Jun 2012 15:41:14 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233815591 233772056
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 192
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 1137
Connection: keep-alive
GET /arrowchat/includes/js/jquery.js HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: application/x-javascript
Accept-Ranges: bytes
Age: 0
Content-Encoding: gzip
Date: Wed, 21 Dec 2016 23:00:21 GMT
Last-Modified: Wed, 07 Dec 2016 22:14:06 GMT
Server: nginx/1.4.6 (Ubuntu)
Vary: Accept-Encoding
Via: 1.1 varnish
X-Varnish: 1037884461
X-Varnish-Cache: MISS
X-Varnish-Cache-Count: 0
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 37511
Connection: keep-alive
GET /sites/default/files/pictures/picture-234204.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 58
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;58330c5e-50c&quot;
Last-Modified: Mon, 21 Nov 2016 15:01:50 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037884662 1037825467
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 219
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 1292
Connection: keep-alive
GET /sites/default/files/pictures/picture-5.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 22
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;4a4aee0a-4a31&quot;
Last-Modified: Wed, 01 Jul 2009 05:03:06 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233815674 233793142
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 63
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 18993
Connection: keep-alive
GET /sites/default/files/images/user5/imageroot/2016/11/29/3377-16-MTN-Pct-MCS-Julio-Nivelo_0.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 17
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;585aef99-44ab&quot;
Last-Modified: Wed, 21 Dec 2016 21:09:45 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037884793 1037866312
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 29
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 17579
Connection: keep-alive
GET /sites/default/files/pictures/picture-193257.gif HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/gif
Accept-Ranges: bytes
Age: 16
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;56930675-3b5a&quot;
Last-Modified: Mon, 11 Jan 2016 01:33:41 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037884799 1037867808
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 19
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 15194
Connection: keep-alive
GET /menu/page.js HTTP/1.1

Host: static.addtoany.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 104.20.110.39
HTTP/1.1 200 OK
Content-Type: application/javascript
Date: Wed, 21 Dec 2016 23:00:21 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: __cfduid=da06525f1678ea36b5c810ca307cc5c011482361221; expires=Thu, 21-Dec-17 23:00:21 GMT; path=/; domain=.addtoany.com; HttpOnly
Last-Modified: Tue, 06 Dec 2016 23:32:57 GMT
P3P: CP=&quot;ALL DSP COR CURa ADMa DEVa TAIa PSAa PSDa OUR IND UNI COM NAV INT&quot;
Link: &lt;/menu/svg/icons.19.svg.js&gt;;rel=preload
Etag: W/&quot;129a8-54305d2fb0301&quot;
Cache-Control: public, max-age=172800
Via: 1.1 vhost.phx2.nearlyfreespeech.net:3128 (squid/2.7.STABLE7)
CF-Cache-Status: HIT
Vary: Accept-Encoding
Expires: Fri, 23 Dec 2016 23:00:21 GMT
X-Content-Type-Options: nosniff
Server: cloudflare-nginx
CF-RAY: 314ef321b3a842a9-OSL
Content-Encoding: gzip
GET /sites/default/files/images/user5/imageroot/2016/11/29/gold%20thief%201_0.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 15
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;583f37fa-8394&quot;
Last-Modified: Wed, 30 Nov 2016 20:35:06 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037884672 1037868528
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 29
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 33684
Connection: keep-alive
GET /sites/default/files/js/js_43eea12927d82b7a82a398f75b7306cd.js HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: application/x-javascript
Accept-Ranges: bytes
Age: 12
Content-Encoding: gzip
Date: Wed, 21 Dec 2016 23:00:21 GMT
Last-Modified: Sun, 18 Dec 2016 17:24:25 GMT
Server: nginx/1.4.6 (Ubuntu)
Vary: Accept-Encoding
Via: 1.1 varnish
X-Varnish: 233815514 233803130
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 46
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 111855
Connection: keep-alive
GET /sites/default/files/pictures/picture-7813.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 18
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;4ac63637-5f7&quot;
Last-Modified: Fri, 02 Oct 2009 17:19:51 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233815596 233796704
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 69
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 1527
Connection: keep-alive
GET /assets/sfp.js HTTP/1.1

Host: native.sharethrough.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 54.192.141.172
HTTP/1.1 200 OK
Content-Type: application/javascript
Transfer-Encoding: chunked
Connection: keep-alive
Date: Tue, 20 Dec 2016 18:01:03 GMT
Cache-Control: public, max-age=3600
Expires: Tue, 20 Dec 2016 18:54:49 GMT
Last-Modified: Tue, 20 Dec 2016 17:54:50 GMT
Server: AmazonS3
Content-Encoding: gzip
Vary: Accept-Encoding
Age: 3559
X-Cache: Hit from cloudfront
Via: 1.1 8f6be4b7e4756846b1fd5d03929beeb6.cloudfront.net (CloudFront)
X-Amz-Cf-Id: sFsV-z7Gf1C3a8iQGwTlUjvowk-66V7DHfML_Y55ZnKBx8OtItRzxQ==
POST / HTTP/1.1

Host: gp.symcd.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 115
Content-Type: application/ocsp-request
 23.43.139.27
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
Server: nginx/1.10.2
Content-Length: 1415
Content-Transfer-Encoding: binary
Cache-Control: max-age=392238, public, no-transform, must-revalidate
Last-Modified: Mon, 19 Dec 2016 11:57:12 GMT
Expires: Mon, 26 Dec 2016 11:57:12 GMT
Date: Wed, 21 Dec 2016 23:00:21 GMT
Connection: keep-alive
GET /sites/default/files/pictures/picture-218685.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 54
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;569c2b9d-421&quot;
Last-Modified: Mon, 18 Jan 2016 00:02:37 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885054 1037830578
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 71
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 1057
Connection: keep-alive
GET /sites/default/files/pictures/picture-79139.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 45
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;55710672-6119&quot;
Last-Modified: Fri, 05 Jun 2015 02:16:18 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233815894 233768341
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 57
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 24857
Connection: keep-alive
GET /sites/default/files/pictures/picture-203743.png HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/png
Accept-Ranges: bytes
Age: 41
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;54dcccb5-c03&quot;
Last-Modified: Thu, 12 Feb 2015 15:54:29 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885124 1037842009
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 51
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 3075
Connection: keep-alive
GET /sites/default/files/pictures/picture-59027.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 2
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;4deb4c06-82f&quot;
Last-Modified: Sun, 05 Jun 2011 09:27:34 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885120 1037882594
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 3
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 2095
Connection: keep-alive
GET /sites/default/files/pictures/picture-63124.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 54
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;560c3f32-44c&quot;
Last-Modified: Wed, 30 Sep 2015 19:59:46 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233815973 233759944
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 64
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 1100
Connection: keep-alive
POST / HTTP/1.1

Host: ocsp.comodoca4.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 116
Content-Type: application/ocsp-request
 178.255.83.1
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
Date: Wed, 21 Dec 2016 23:00:21 GMT
Server: Apache
Last-Modified: Wed, 21 Dec 2016 08:51:15 GMT
Expires: Sun, 25 Dec 2016 08:51:15 GMT
Etag: 16D24C7C864B728AFF3286A794FAB1961AC83859
Cache-Control: max-age=294053,public,no-transform,must-revalidate
X-OCSP-Reponder-ID: rmdccaocsp21
Content-Length: 472
Connection: close
GET /sites/default/files/pictures/picture-107340.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 48
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;52f57a50-48f&quot;
Last-Modified: Sat, 08 Feb 2014 00:29:04 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885194 1037835213
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 84
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 1167
Connection: keep-alive
GET /sites/default/files/pictures/picture-62339.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 26
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;516311c2-6ad&quot;
Last-Modified: Mon, 08 Apr 2013 18:51:46 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885211 1037856908
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 26
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 1709
Connection: keep-alive
GET /sites/default/files/pictures/picture-182285.gif HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/gif
Accept-Ranges: bytes
Age: 3
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;582a8178-25763&quot;
Last-Modified: Tue, 15 Nov 2016 03:31:04 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233815793 233812839
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 6
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 153443
Connection: keep-alive
GET /sites/default/files/pictures/picture-215890.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 55
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;56096189-d62&quot;
Last-Modified: Mon, 28 Sep 2015 15:49:29 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885262 1037829263
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 77
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 3426
Connection: keep-alive
GET /sites/default/files/pictures/picture-216730.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 36
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;5632c20c-b37&quot;
Last-Modified: Fri, 30 Oct 2015 01:04:12 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233816059 233779602
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 43
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 2871
Connection: keep-alive
GET /sites/default/files/pictures/picture-464.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 51
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;4cc5f933-573&quot;
Last-Modified: Mon, 25 Oct 2010 21:40:03 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233816062 233762256
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 65
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 1395
Connection: keep-alive
GET /portableplayer/?cmsID=403659436&videoID=5qTaE2xYJBma&origin=nbcnewyork.com&sec=news&subsec=local&width=500&height=281 HTTP/1.1

Host: www.nbcnewyork.com
GET /portableplayer/?cmsID=403659436&amp;videoID=5qTaE2xYJBma&amp;origin=nbcnewyork.com&amp;sec=news&amp;subsec=local&amp;width=500&amp;height=281 HTTP/1.1

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 91.135.34.27
HTTP/1.1 200 OK
Content-Type: text/javascript;charset=utf-8
Server: Apache
Content-Encoding: gzip
X-Server-Name: lx-cmlive24
Content-Length: 1495
Date: Wed, 21 Dec 2016 23:00:21 GMT
Connection: keep-alive
Vary: Accept-Encoding, User-Agent
Set-Cookie: click_mobile=0; Domain=www.nbcnewyork.com; Expires=Thu, 22-Dec-2016 23:00:21 GMT; Path=/
POST / HTTP/1.1

Host: ocsp.comodoca4.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 115
Content-Type: application/ocsp-request
 178.255.83.1
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
Date: Wed, 21 Dec 2016 23:00:21 GMT
Server: Apache
Last-Modified: Wed, 21 Dec 2016 14:25:44 GMT
Expires: Sun, 25 Dec 2016 14:25:44 GMT
Etag: 18626C45289C338CC8A36F8055A50594A433202C
Cache-Control: max-age=314122,public,no-transform,must-revalidate
X-OCSP-Reponder-ID: rmdccaocsp1
Content-Length: 727
Connection: close
GET /sites/default/files/pictures/picture-33430.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 41
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;51783aaf-4fe&quot;
Last-Modified: Wed, 24 Apr 2013 20:03:59 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885309 1037842674
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 46
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 1278
Connection: keep-alive
GET /sites/all/themes/zero_hedge/images/bagicon.png HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/png
Accept-Ranges: bytes
Age: 34
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;584889ae-84c&quot;
Last-Modified: Wed, 07 Dec 2016 22:14:06 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233816106 233781857
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 104
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 2124
Connection: keep-alive
GET /sites/default/files/pictures/picture-73695.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 2
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;5355baf6-509&quot;
Last-Modified: Tue, 22 Apr 2014 00:42:30 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233816124 233814557
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 2
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 1289
Connection: keep-alive
GET /sites/default/files/pictures/picture-16893.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 11
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;4bf65f4d-50b&quot;
Last-Modified: Fri, 21 May 2010 10:24:13 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885389 1037872720
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 20
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 1291
Connection: keep-alive
GET /sites/default/files/pictures/picture-224533.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 34
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;5701a252-6c1&quot;
Last-Modified: Sun, 03 Apr 2016 23:08:02 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233816134 233781763
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 36
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 1729
Connection: keep-alive
POST / HTTP/1.1

Host: ocsp.usertrust.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 115
Content-Type: application/ocsp-request
 178.255.83.1
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
Date: Wed, 21 Dec 2016 23:00:21 GMT
Server: Apache
Last-Modified: Wed, 21 Dec 2016 14:25:44 GMT
Expires: Sun, 25 Dec 2016 14:25:44 GMT
Etag: 783079CB976CA6DDFB4C41EC4E0B1E562D700CD7
Cache-Control: max-age=314122,public,no-transform,must-revalidate
X-OCSP-Reponder-ID: rmdccaocsp6
Content-Length: 471
Connection: close
GET /sites/default/files/pictures/picture-6935.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 41
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;4b0496c4-837&quot;
Last-Modified: Thu, 19 Nov 2009 00:52:20 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233816135 233773869
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 62
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 2103
Connection: keep-alive
GET /sites/default/files/pictures/picture-89272.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 43
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;51585f6c-37f&quot;
Last-Modified: Sun, 31 Mar 2013 16:08:12 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885444 1037841211
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 46
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 895
Connection: keep-alive
GET /sites/default/files/pictures/picture-39689.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 30
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;50ca42cb-4ed&quot;
Last-Modified: Thu, 13 Dec 2012 21:04:11 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885472 1037853335
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 33
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 1261
Connection: keep-alive
GET /font-awesome/4.5.0/css/font-awesome.min.css HTTP/1.1

Host: maxcdn.bootstrapcdn.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/css,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 198.232.125.123
HTTP/1.1 200 OK
Content-Type: text/css
Date: Wed, 21 Dec 2016 23:00:21 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Last-Modified: Mon, 23 Nov 2015 18:25:42 GMT
Etag: W/&quot;4fbd15cb6047af93373f4f895639c8bf&quot;
Server: NetDNA-cache/2.2
Expires: Sat, 16 Dec 2017 23:00:21 GMT
Cache-Control: max-age=31104000
Vary: Accept-Encoding
Access-Control-Allow-Origin: *
X-Hello-Human: Say hello back! @getBootstrapCDN on Twitter
X-Cache: HIT
Content-Encoding: gzip
GET /sites/default/files/pictures/picture-196855.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 52
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;54d3fbc0-664&quot;
Last-Modified: Thu, 05 Feb 2015 23:24:48 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233816204 233762364
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 64
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 1636
Connection: keep-alive
GET /sites/default/files/pictures/picture-217684.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 20
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;5655ef4f-4a4&quot;
Last-Modified: Wed, 25 Nov 2015 17:26:39 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885494 1037863918
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 37
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 1188
Connection: keep-alive
GET /sites/default/files/pictures/picture-207164.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 41
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;562a4199-65e&quot;
Last-Modified: Fri, 23 Oct 2015 14:18:01 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233816207 233773352
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 50
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 1630
Connection: keep-alive
GET /sites/default/files/pictures/picture-195813.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 19
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;53fd467f-13f5&quot;
Last-Modified: Wed, 27 Aug 2014 02:46:23 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233816205 233797195
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 37
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 5109
Connection: keep-alive
GET /sites/default/files/pictures/picture-59359.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 14
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;4e2f63ea-4c9&quot;
Last-Modified: Wed, 27 Jul 2011 01:03:38 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233816227 233801914
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 19
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 1225
Connection: keep-alive
GET /ajax/libs/postscribe/1.4.0/postscribe.min.js HTTP/1.1

Host: cdnjs.cloudflare.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 104.19.196.102
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
Date: Wed, 21 Dec 2016 23:00:21 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Last-Modified: Wed, 22 Jun 2016 20:08:04 GMT
Expires: Mon, 11 Dec 2017 23:00:21 GMT
Cache-Control: public, max-age=30672000
Access-Control-Allow-Origin: *
Content-Encoding: gzip
CF-Cache-Status: HIT
Vary: Accept-Encoding
Server: cloudflare-nginx
CF-RAY: 314ef324f84042c1-OSL
GET /sites/default/files/pictures/picture-183619.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 10
Date: Wed, 21 Dec 2016 23:00:21 GMT
Etag: &quot;5710068a-4c9&quot;
Last-Modified: Thu, 14 Apr 2016 21:07:22 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885598 1037874534
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 14
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 1225
Connection: keep-alive
GET /sites/default/files/pictures/picture-9513.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 2
Date: Wed, 21 Dec 2016 23:00:22 GMT
Etag: &quot;4b75b7fd-83e&quot;
Last-Modified: Fri, 12 Feb 2010 20:20:13 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885681 1037883125
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 4
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 2110
Connection: keep-alive
GET /sites/default/files/pictures/picture-188485.gif HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/gif
Accept-Ranges: bytes
Age: 1
Date: Wed, 21 Dec 2016 23:00:22 GMT
Etag: &quot;5436ca1f-6c5&quot;
Last-Modified: Thu, 09 Oct 2014 17:47:11 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233816309 233815424
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 2
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 1733
Connection: keep-alive
GET /sites/default/files/pictures/picture-185300.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 31
Date: Wed, 21 Dec 2016 23:00:22 GMT
Etag: &quot;531f45ab-465&quot;
Last-Modified: Tue, 11 Mar 2014 17:19:39 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233816310 233784679
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 41
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 1125
Connection: keep-alive
GET /sites/default/files/pictures/picture-199326.png HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/png
Accept-Ranges: bytes
Age: 20
Date: Wed, 21 Dec 2016 23:00:22 GMT
Etag: &quot;57f09dd1-613&quot;
Last-Modified: Sun, 02 Oct 2016 05:40:33 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233816306 233796192
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 25
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 1555
Connection: keep-alive
GET /sites/default/files/pictures/picture-57440.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 14
Date: Wed, 21 Dec 2016 23:00:22 GMT
Etag: &quot;4ddb098e-73e&quot;
Last-Modified: Tue, 24 May 2011 01:27:42 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885680 1037869799
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 35
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 1854
Connection: keep-alive
GET /sites/default/files/pictures/picture-197419.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 22
Date: Wed, 21 Dec 2016 23:00:22 GMT
Etag: &quot;542c9c9b-3f1&quot;
Last-Modified: Thu, 02 Oct 2014 00:30:19 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885712 1037862129
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 32
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 1009
Connection: keep-alive
GET /sites/default/files/pictures/picture-93101.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 41
Date: Wed, 21 Dec 2016 23:00:22 GMT
Etag: &quot;573e31d0-4ba&quot;
Last-Modified: Thu, 19 May 2016 21:36:16 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233816362 233773832
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 47
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 1210
Connection: keep-alive
GET /sites/default/files/pictures/picture-215135.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 14
Date: Wed, 21 Dec 2016 23:00:22 GMT
Etag: &quot;567b07dd-45e&quot;
Last-Modified: Wed, 23 Dec 2015 20:45:17 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885792 1037870687
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 15
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 1118
Connection: keep-alive
GET /sites/default/files/pictures/picture-92574.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 8
Date: Wed, 21 Dec 2016 23:00:22 GMT
Etag: &quot;52e033b1-8d6&quot;
Last-Modified: Wed, 22 Jan 2014 21:10:09 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885794 1037876632
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 18
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 2262
Connection: keep-alive
GET /sites/default/files/pictures/picture-68867.png HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/png
Accept-Ranges: bytes
Age: 45
Date: Wed, 21 Dec 2016 23:00:22 GMT
Etag: &quot;5756f08d-cec&quot;
Last-Modified: Tue, 07 Jun 2016 16:04:29 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233816368 233769494
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 66
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 3308
Connection: keep-alive
GET /ajax/libs/socket.io/1.3.5/socket.io.min.js HTTP/1.1

Host: cdnjs.cloudflare.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 104.19.196.102
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
Date: Wed, 21 Dec 2016 23:00:22 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Last-Modified: Wed, 22 Jun 2016 20:08:18 GMT
Expires: Mon, 11 Dec 2017 23:00:22 GMT
Cache-Control: public, max-age=30672000
Access-Control-Allow-Origin: *
Content-Encoding: gzip
CF-Cache-Status: HIT
Vary: Accept-Encoding
Server: cloudflare-nginx
CF-RAY: 314ef327093f429d-OSL
GET /ajax/libs/jquery/1.12.1/jquery.min.js HTTP/1.1

Host: cdnjs.cloudflare.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 104.19.196.102
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
Date: Wed, 21 Dec 2016 23:00:22 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Last-Modified: Wed, 22 Jun 2016 20:04:24 GMT
Expires: Mon, 11 Dec 2017 23:00:22 GMT
Cache-Control: public, max-age=30672000
Access-Control-Allow-Origin: *
Content-Encoding: gzip
CF-Cache-Status: HIT
Vary: Accept-Encoding
Server: cloudflare-nginx
CF-RAY: 314ef3270e2f4279-OSL
GET /sites/default/files/pictures/picture-189721.png HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/png
Accept-Ranges: bytes
Age: 13
Date: Wed, 21 Dec 2016 23:00:22 GMT
Etag: &quot;5384e1f5-1106&quot;
Last-Modified: Tue, 27 May 2014 19:05:25 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885938 1037871776
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 24
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 4358
Connection: keep-alive
GET /sites/default/files/pictures/picture-224099.png HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/png
Accept-Ranges: bytes
Age: 20
Date: Wed, 21 Dec 2016 23:00:22 GMT
Etag: &quot;5703f6ef-46a&quot;
Last-Modified: Tue, 05 Apr 2016 17:33:35 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 233816499 233796388
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 35
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 1130
Connection: keep-alive
GET /sites/default/files/images/user6/imageroot/2011/08/live_commentary_button_big.png HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/png
Accept-Ranges: bytes
Age: 48
Date: Wed, 21 Dec 2016 23:00:22 GMT
Etag: &quot;4e4e1f1f-3bf7&quot;
Last-Modified: Fri, 19 Aug 2011 08:30:23 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885947 1037836374
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 156
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 15351
Connection: keep-alive
GET /sites/default/files/pictures/picture-155481.jpg HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/jpeg
Accept-Ranges: bytes
Age: 32
Date: Wed, 21 Dec 2016 23:00:22 GMT
Etag: &quot;51f17cdd-490&quot;
Last-Modified: Thu, 25 Jul 2013 19:30:37 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037885939 1037851753
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 43
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 1168
Connection: keep-alive
GET /arrowchat/external.php?type=djs HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: text/javascript; charset=UTF-8
Accept-Ranges: bytes
Age: 0
Cache-Control: no-cache, must-revalidate
Content-Encoding: gzip
Date: Wed, 21 Dec 2016 23:00:22 GMT
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Server: nginx/1.4.6 (Ubuntu)
Vary: Accept-Encoding
Via: 1.1 varnish
X-Powered-By: PHP/5.5.9-1ubuntu4.20
X-Varnish: 233816509
X-Varnish-Cache: MISS
X-Varnish-Cache-Count: 0
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 4316
Connection: keep-alive
GET /sites/all/modules/bu/bu.js?r HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: application/x-javascript
Accept-Ranges: bytes
Age: 42
Content-Encoding: gzip
Date: Wed, 21 Dec 2016 23:00:22 GMT
Last-Modified: Wed, 07 Dec 2016 22:14:06 GMT
Server: nginx/1.4.6 (Ubuntu)
Vary: Accept-Encoding
Via: 1.1 varnish
X-Varnish: 233816611 233773460
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 182
X-Varnish-Hostname: ip-172-30-0-35
Content-Length: 292
Connection: keep-alive
GET /arrowchat/external.php?type=js HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: text/javascript; charset=UTF-8
Accept-Ranges: bytes
Age: 0
Content-Encoding: gzip
Date: Wed, 21 Dec 2016 23:00:22 GMT
Expires: Wed, 28 Dec 2016 23:00:22 GMT
Server: nginx/1.4.6 (Ubuntu)
Vary: Accept-Encoding
Via: 1.1 varnish
X-Powered-By: PHP/5.5.9-1ubuntu4.20
X-Varnish: 1037885950
X-Varnish-Cache: MISS
X-Varnish-Cache-Count: 0
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 76333
Connection: keep-alive
GET /sites/all/themes/zero_hedge/fonts/lucida_grande/24003_lucidagrande-webfont.woff HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/sites/default/files/css/css_380e8a0020b50638a7a894e528defeae.css
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Accept-Ranges: bytes
Age: 44
Date: Wed, 21 Dec 2016 23:00:23 GMT
Etag: &quot;584889ae-52d0&quot;
Last-Modified: Wed, 07 Dec 2016 22:14:06 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037886841 1037841661
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 36
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 21200
Connection: keep-alive
GET /gtm.js?id=GTM-T6SHNP HTTP/1.1

Host: www.googletagmanager.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 216.58.211.136
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
Content-Encoding: gzip
Vary: Accept-Encoding
Date: Wed, 21 Dec 2016 23:00:23 GMT
Expires: Wed, 21 Dec 2016 23:00:23 GMT
Cache-Control: private, max-age=900
Server: Google Tag Manager (scaffolding)
Content-Length: 18286
X-XSS-Protection: 1; mode=block
GET /templates/nbc_partner_player?cmsID=403659436&videoID=5qTaE2xYJBma&origin=nbcnewyork.com&sec=news&subsec=local&width=500&height=281&turl=undefined%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&ourl=undefined&lp=1&random=aycy4r HTTP/1.1

Host: www.nbcnewyork.com
GET /templates/nbc_partner_player?cmsID=403659436&amp;videoID=5qTaE2xYJBma&amp;origin=nbcnewyork.com&amp;sec=news&amp;subsec=local&amp;width=500&amp;height=281&amp;turl=undefined%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;ourl=undefined&amp;lp=1&amp;random=aycy4r HTTP/1.1

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
Cookie: click_mobile=0
 91.135.34.27
HTTP/1.1 200 OK
Content-Type: text/html;charset=utf-8
Server: Apache
Content-Encoding: gzip
X-Server-Name: lx-cmlive15
Date: Wed, 21 Dec 2016 23:00:24 GMT
Content-Length: 10218
Connection: keep-alive
Vary: Accept-Encoding, User-Agent
GET /time/0?uuid=e41069d4-d9b6-41c1-87b2-8ae87962c042&pnsdk=PubNub-JS-Web%2F3.7.2 HTTP/1.1

Host: www.arrowpushengine.com
GET /time/0?uuid=e41069d4-d9b6-41c1-87b2-8ae87962c042&amp;pnsdk=PubNub-JS-Web%2F3.7.2 HTTP/1.1

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
Origin: http://www.zerohedge.com
 54.93.127.203
HTTP/1.1 200 OK
Content-Type: text/javascript; charset="UTF-8"
Date: Wed, 21 Dec 2016 23:00:25 GMT
Content-Type: text/javascript; charset=&quot;UTF-8&quot;
Content-Length: 19
Connection: keep-alive
Cache-Control: no-cache
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET
GET /includes/jquery-1.6.4.min.js?r=-1540224586 HTTP/1.1

Host: www.nbcnewyork.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.nbcnewyork.com/templates/nbc_partner_player?cmsID=403659436&amp;videoID=5qTaE2xYJBma&amp;origin=nbcnewyork.com&amp;sec=news&amp;subsec=local&amp;width=500&amp;height=281&amp;turl=undefined%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;ourl=undefined&amp;lp=1&amp;random=aycy4r
Cookie: click_mobile=0
 91.135.34.27
HTTP/1.1 200 OK
Content-Type: text/javascript;charset=utf-8
Server: Apache
Last-Modified: Thu, 13 Oct 2011 18:05:20 GMT
Content-Encoding: gzip
X-Server-Name: lx-cmlive6
Date: Wed, 21 Dec 2016 23:00:26 GMT
Content-Length: 32080
Connection: keep-alive
Vary: Accept-Encoding
POST /ocsp HTTP/1.1

Host: clients1.google.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 107
Content-Type: application/ocsp-request
 216.58.211.142
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
Date: Wed, 21 Dec 2016 23:00:26 GMT
Expires: Sun, 25 Dec 2016 23:00:26 GMT
Cache-Control: public, max-age=345600
Server: ocsp_responder
Content-Length: 463
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
GET /sites/all/themes/zero_hedge/fonts/lucida_grande/lucida_grande_bold-webfont.woff HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/sites/default/files/css/css_380e8a0020b50638a7a894e528defeae.css
Cookie: pnctest=1
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Accept-Ranges: bytes
Age: 12
Date: Wed, 21 Dec 2016 23:00:25 GMT
Etag: &quot;584889ae-5394&quot;
Last-Modified: Wed, 07 Dec 2016 22:14:06 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037889332 1037876238
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 15
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 21396
Connection: keep-alive
GET /includes/nbctools.js?r=-1748462543 HTTP/1.1

Host: www.nbcnewyork.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.nbcnewyork.com/templates/nbc_partner_player?cmsID=403659436&amp;videoID=5qTaE2xYJBma&amp;origin=nbcnewyork.com&amp;sec=news&amp;subsec=local&amp;width=500&amp;height=281&amp;turl=undefined%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;ourl=undefined&amp;lp=1&amp;random=aycy4r
Cookie: click_mobile=0
 91.135.34.27
HTTP/1.1 200 OK
Content-Type: text/javascript;charset=utf-8
Server: Apache
Last-Modified: Fri, 14 Aug 2015 19:09:09 GMT
Content-Encoding: gzip
X-Server-Name: lx-cmlive6
Date: Wed, 21 Dec 2016 23:00:26 GMT
Content-Length: 4712
Connection: keep-alive
Vary: Accept-Encoding
GET /en_US/fbevents.js HTTP/1.1

Host: connect.facebook.net

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.nbcnewyork.com/templates/nbc_partner_player?cmsID=403659436&amp;videoID=5qTaE2xYJBma&amp;origin=nbcnewyork.com&amp;sec=news&amp;subsec=local&amp;width=500&amp;height=281&amp;turl=undefined%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;ourl=undefined&amp;lp=1&amp;random=aycy4r
 31.13.66.5
HTTP/1.1 200 OK
Content-Type: application/x-javascript; charset=utf-8
Access-Control-Expose-Headers: X-FB-Content-MD5
x-fb-content-md5: 2145b068d1a12c5809fbda3090b4e5a9
Etag: &quot;58a9d1ceaabaf9e300ba31ac7e9ba4f5&quot;
X-Frame-Options: DENY
Strict-Transport-Security: max-age=15552000; preload
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
timing-allow-origin: *
content-security-policy: default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data:;style-src data: 'unsafe-inline' *;connect-src *.facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* *.akamaihd.net wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm;
Cache-Control: public,max-age=1200,stale-while-revalidate=3600
Expires: Wed, 21 Dec 2016 23:05:39 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Content-MD5: g9ZxO+UHDsEH8epM+zTL/A==
X-FB-Debug: i2N+xcLiNmOnMVcomBQp0Pi6iBYs95kiZn65v+AXiKisCJholfJAJtMv6nQhOroMPlX1+vrP4APXXUFFadraoA==
Date: Wed, 21 Dec 2016 23:00:26 GMT
Connection: keep-alive
Content-Length: 4054
GET /counter/counter.js HTTP/1.1

Host: www.statcounter.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 151.249.91.108
HTTP/1.1 200 OK
Content-Type: application/x-javascript
Date: Wed, 21 Dec 2016 23:00:26 GMT
Server: PWS/8.2.0.5
X-Px: ht h0-s40.p1-arn.cdngp.net
Etag: W/&quot;576924c5-654e&quot;
Cache-Control: max-age=43200
Expires: Thu, 22 Dec 2016 03:38:10 GMT
Age: 26536
Content-Length: 9529
Content-Encoding: gzip
Vary: Accept-Encoding
Last-Modified: Tue, 21 Jun 2016 11:28:05 GMT
Connection: keep-alive
GET /assets/pdk565/pdk/tpPdk.js HTTP/1.1

Host: www.nbcnewyork.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.nbcnewyork.com/templates/nbc_partner_player?cmsID=403659436&amp;videoID=5qTaE2xYJBma&amp;origin=nbcnewyork.com&amp;sec=news&amp;subsec=local&amp;width=500&amp;height=281&amp;turl=undefined%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;ourl=undefined&amp;lp=1&amp;random=aycy4r
Cookie: click_mobile=0
 91.135.34.27
HTTP/1.1 200 OK
Content-Type: application/x-javascript
Server: Apache
Etag: &quot;d9e84ce36ccd8b8058647f2e76fc8cd9:1438358465&quot;
Last-Modified: Fri, 31 Jul 2015 16:01:01 GMT
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Wed, 21 Dec 2016 23:00:26 GMT
Transfer-Encoding: chunked
Connection: keep-alive, Transfer-Encoding
GET /includes/thePlatform-omniture-core.js?r=1460162038 HTTP/1.1

Host: www.nbcnewyork.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.nbcnewyork.com/templates/nbc_partner_player?cmsID=403659436&amp;videoID=5qTaE2xYJBma&amp;origin=nbcnewyork.com&amp;sec=news&amp;subsec=local&amp;width=500&amp;height=281&amp;turl=undefined%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;ourl=undefined&amp;lp=1&amp;random=aycy4r
Cookie: click_mobile=0
 91.135.34.27
HTTP/1.1 200 OK
Content-Type: text/javascript;charset=utf-8
Server: Apache
Last-Modified: Tue, 11 Oct 2016 19:54:32 GMT
Content-Encoding: gzip
X-Server-Name: va-c1-r9-u25-b1
Date: Wed, 21 Dec 2016 23:00:26 GMT
Content-Length: 7787
Connection: keep-alive
Vary: Accept-Encoding
GET /analytics.js HTTP/1.1

Host: www.google-analytics.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 216.58.211.142
HTTP/1.1 200 OK
Content-Type: text/javascript
Strict-Transport-Security: max-age=10886400; includeSubDomains; preload
timing-allow-origin: *
Date: Wed, 21 Dec 2016 22:00:55 GMT
Expires: Thu, 22 Dec 2016 00:00:55 GMT
Last-Modified: Wed, 28 Sep 2016 20:19:01 GMT
X-Content-Type-Options: nosniff
Vary: Accept-Encoding
Content-Encoding: gzip
Server: Golfe2
Content-Length: 11590
Cache-Control: public, max-age=7200
Age: 3571
GET /quant.js HTTP/1.1

Host: edge.quantserve.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 195.159.219.18
HTTP/1.1 200 OK
Content-Type: application/x-javascript
Server: Apache
Last-Modified: Fri, 15 Jul 2016 22:07:37 GMT
Accept-Ranges: bytes
Content-Length: 3094
Content-Encoding: gzip
Cache-Control: private, max-age=86400
Expires: Thu, 22 Dec 2016 23:00:26 GMT
Date: Wed, 21 Dec 2016 23:00:26 GMT
Connection: keep-alive
Vary: Accept-Encoding
GET /includes/VisitorAPI.js HTTP/1.1

Host: www.nbcnewyork.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.nbcnewyork.com/templates/nbc_partner_player?cmsID=403659436&amp;videoID=5qTaE2xYJBma&amp;origin=nbcnewyork.com&amp;sec=news&amp;subsec=local&amp;width=500&amp;height=281&amp;turl=undefined%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;ourl=undefined&amp;lp=1&amp;random=aycy4r
Cookie: click_mobile=0
 91.135.34.27
HTTP/1.1 200 OK
Content-Type: text/javascript;charset=utf-8
Last-Modified: Fri, 02 Dec 2016 20:04:32 GMT
Content-Encoding: gzip
X-Server-Name: lx-cmlive6
Server: Apache
Content-Length: 10083
Date: Wed, 21 Dec 2016 23:00:26 GMT
Connection: keep-alive
Vary: Accept-Encoding
GET /r/collect?v=1&_v=j47&a=151433080&t=pageview&_s=1&dl=http%3A%2F%2Fwww.zerohedge.com%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&ul=en-us&de=UTF-8&dt=Man%20Who%20Stole%20%241.6%20Million%20Bucket%20Full%20Of%20Gold%20In%20Midtown%20Manhattan%20Has%20Been%20Identified%20%7C%20Zero%20Hedge&sd=24-bit&sr=1176x885&vp=1159x758&je=1&fl=10.0%20r45&_u=QEAAAAQAI~&jid=1231225791&cid=114390876.1482361227&tid=UA-11091066-1&_r=1&gtm=GTM-T6SHNP&z=851457230 HTTP/1.1

Host: www.google-analytics.com
GET /r/collect?v=1&amp;_v=j47&amp;a=151433080&amp;t=pageview&amp;_s=1&amp;dl=http%3A%2F%2Fwww.zerohedge.com%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;ul=en-us&amp;de=UTF-8&amp;dt=Man%20Who%20Stole%20%241.6%20Million%20Bucket%20Full%20Of%20Gold%20In%20Midtown%20Manhattan%20Has%20Been%20Identified%20%7C%20Zero%20Hedge&amp;sd=24-bit&amp;sr=1176x885&amp;vp=1159x758&amp;je=1&amp;fl=10.0%20r45&amp;_u=QEAAAAQAI~&amp;jid=1231225791&amp;cid=114390876.1482361227&amp;tid=UA-11091066-1&amp;_r=1&amp;gtm=GTM-T6SHNP&amp;z=851457230 HTTP/1.1

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 216.58.211.142
HTTP/1.1 200 OK
Content-Type: image/gif
Access-Control-Allow-Origin: *
Date: Wed, 21 Dec 2016 23:00:26 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Last-Modified: Sun, 17 May 1998 03:00:00 GMT
X-Content-Type-Options: nosniff
Server: Golfe2
Content-Length: 35
POST / HTTP/1.1

Host: g.symcd.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 102
Content-Type: application/ocsp-request
 23.43.139.27
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
Server: nginx/1.10.2
Content-Length: 1377
Content-Transfer-Encoding: binary
Cache-Control: max-age=369234, public, no-transform, must-revalidate
Last-Modified: Mon, 19 Dec 2016 05:30:30 GMT
Expires: Mon, 26 Dec 2016 05:30:30 GMT
Date: Wed, 21 Dec 2016 23:00:26 GMT
Connection: keep-alive
GET /t.php?sc_project=4867115&java=1&security=9ace1fa5&u1=7C36A10343434FD95088D30CCB9B2CBE&sc_random=0.8340786267272442&jg=new&rr=1.1.1.1.1.1.1.1.1&resolution=1176&h=885&camefrom=&u=http%3A//www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&t=Man%20Who%20Stole%20%241.6%20Million%20Bucket%20Full%20Of%20Gold%20In%20Midtown%20Manhattan%20Has%20Been%20Identified%20%7C%20Zero%20Hedge&rcat=d&rdom=d&rdomg=new&bb=1&sc_snum=1&sess=a181b5&p=0&invisible=1 HTTP/1.1

Host: c.statcounter.com
GET /t.php?sc_project=4867115&amp;java=1&amp;security=9ace1fa5&amp;u1=7C36A10343434FD95088D30CCB9B2CBE&amp;sc_random=0.8340786267272442&amp;jg=new&amp;rr=1.1.1.1.1.1.1.1.1&amp;resolution=1176&amp;h=885&amp;camefrom=&amp;u=http%3A//www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;t=Man%20Who%20Stole%20%241.6%20Million%20Bucket%20Full%20Of%20Gold%20In%20Midtown%20Manhattan%20Has%20Been%20Identified%20%7C%20Zero%20Hedge&amp;rcat=d&amp;rdom=d&amp;rdomg=new&amp;bb=1&amp;sc_snum=1&amp;sess=a181b5&amp;p=0&amp;invisible=1 HTTP/1.1

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 104.20.2.47
HTTP/1.1 200 OK
Content-Type: image/gif
Date: Wed, 21 Dec 2016 23:00:27 GMT
Content-Length: 49
Connection: keep-alive
Set-Cookie: __cfduid=d2bf2839b08661257c2f2ac03d1cbb5811482361226; expires=Thu, 21-Dec-17 23:00:26 GMT; path=/; domain=.statcounter.com; HttpOnly is_unique=sc4867115.1482361227.0; expires=Mon, 20-Dec-2021 23:00:27 GMT; path=/; domain=.statcounter.com
P3P: policyref=&quot;http://www.statcounter.com/w3c/p3p.xml&quot;, CP=&quot;ADMa OUR COM NAV NID DSP NOI COR&quot;
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Server: cloudflare-nginx
CF-RAY: 314ef343b3fe42c1-OSL
GET /update.js HTTP/1.1

Host: browser-update.org

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 104.27.146.117
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
Date: Wed, 21 Dec 2016 23:00:27 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: __cfduid=da8fc55eaf3442374b0d2a3d5c8e262b81482361227; expires=Thu, 21-Dec-17 23:00:27 GMT; path=/; domain=.browser-update.org; HttpOnly
Last-Modified: Sun, 18 Dec 2016 08:09:23 GMT
Vary: Accept-Encoding
Cache-Control: public, max-age=172800
CF-Cache-Status: HIT
Expires: Fri, 23 Dec 2016 23:00:27 GMT
Server: cloudflare-nginx
CF-RAY: 314ef347b6f7426d-OSL
Content-Encoding: gzip
GET /measure.min.js HTTP/1.1

Host: asset.pagefair.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 23.111.9.30
HTTP/1.1 200 OK
Content-Type: application/x-javascript
Date: Wed, 21 Dec 2016 23:00:27 GMT
Content-Length: 4895
Connection: keep-alive
x-amz-id-2: ksnJpK+X2QLep4Qk/8S7av62tYQh/Sb9XMLVP+U+xCocyYUDSrGZ/fhEoMoDkDY9E2Isn2KJeBc=
x-amz-request-id: 8079A8CD97230EB9
Last-Modified: Wed, 26 Oct 2016 17:32:50 GMT
Etag: &quot;d655ea3dca3296ad39049b37c49b13aa&quot;
Cache-Control: max-age=7200
Content-Encoding: gzip
Server: NetDNA-cache/2.2
X-Cache: HIT
Accept-Ranges: bytes
GET /ads.min.js HTTP/1.1

Host: asset.pagefair.net

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 23.111.11.222
HTTP/1.1 200 OK
Content-Type: application/x-javascript
Date: Wed, 21 Dec 2016 23:00:27 GMT
Content-Length: 31
Connection: keep-alive
x-amz-id-2: QVSWEBxKLiirONkUzDPtuz1Zqu0YoXefgIABr3FpyXO4bGVK0TCujdTfeWqDrcDtLffuijSMeHs=
x-amz-request-id: D47AD269254C0158
Last-Modified: Wed, 26 Oct 2016 17:32:51 GMT
Etag: &quot;ba4477b740a2138db6c948cb5ea03d83&quot;
Cache-Control: max-age=7200
Content-Encoding: gzip
Server: NetDNA-cache/2.2
X-Cache: HIT
Accept-Ranges: bytes
GET /pixel;r=1850293595;a=p-36qGQAusx1cjs;labels=Business%20and%20Technology;fpan=1;fpa=P0-1370393526-1482361230202;ns=0;ce=1;cm=;je=1;sr=1176x885x24;enc=n;dst=1;et=1482361230201;tzo=-60;ref=;url=http%3A%2F%2Fwww.zerohedge.com%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified;ogl= HTTP/1.1

Host: pixel.quantserve.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 95.172.94.24
HTTP/1.1 200 OK
Content-Type: image/gif
Connection: close
Set-Cookie: mc=585b098e-50e52-5a5af-cbaa0; expires=Sun, 21-Jan-2018 23:00:30 GMT; path=/; domain=.quantserve.com
P3P: CP=&quot;NOI DSP COR NID CURa ADMa DEVa PSAo PSDo OUR SAMa IND COM NAV&quot;
Cache-Control: private, no-cache, no-store, proxy-revalidate
Pragma: no-cache
Expires: Fri, 04 Aug 1978 12:00:00 GMT
Content-Length: 35
Date: Wed, 21 Dec 2016 23:00:30 GMT
Server: QS
GET /img/small/f.png HTTP/1.1

Host: browser-update.org

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
Cookie: __cfduid=da8fc55eaf3442374b0d2a3d5c8e262b81482361227
 104.27.146.117
HTTP/1.1 200 OK
Content-Type: image/png
Date: Wed, 21 Dec 2016 23:00:30 GMT
Content-Length: 927
Connection: keep-alive
Last-Modified: Mon, 01 Feb 2016 23:56:48 GMT
Etag: &quot;39f-52abe234db000&quot;
Cache-Control: public, max-age=864000
CF-Cache-Status: HIT
Vary: Accept-Encoding
Expires: Sat, 31 Dec 2016 23:00:30 GMT
Accept-Ranges: bytes
Server: cloudflare-nginx
CF-RAY: 314ef35b25be426d-OSL
GET /adimages/textlink-ads.jpg HTTP/1.1

Host: asset.pagefair.net

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 23.111.11.222
HTTP/1.1 200 OK
Content-Type: image/jpeg
Date: Wed, 21 Dec 2016 23:00:31 GMT
Content-Length: 229
Connection: keep-alive
x-amz-id-2: eoMTKTpuH/1pj4hV7IfQzJJOBcVkfQ+u5R9d1Xu0/N5G3N93CbadNbdGWlqIZZ2iBuBuAI0GDEM=
x-amz-request-id: 9136BD7147D2D67C
Last-Modified: Wed, 26 Oct 2016 17:32:51 GMT
Etag: &quot;f2df4d9912efd95cf16b1fd56b951eb3&quot;
Cache-Control: max-age=2592000
Content-Encoding: gzip
Server: NetDNA-cache/2.2
X-Cache: HIT
Accept-Ranges: bytes
GET /adimages/textlink-ads.jpg HTTP/1.1

Host: asset.pagefair.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 23.111.9.30
HTTP/1.1 200 OK
Content-Type: image/jpeg
Date: Wed, 21 Dec 2016 23:00:31 GMT
Content-Length: 229
Connection: keep-alive
x-amz-id-2: wwjWK/8vyhxPriKudBO1wpOR5CQ5uB5l3cA0jxYmDP/cn7psDCWUnCOgYon9rHVeliD3rvt1Sdg=
x-amz-request-id: 4BFBBF630BA0EF00
Last-Modified: Wed, 26 Oct 2016 17:32:50 GMT
Etag: &quot;f2df4d9912efd95cf16b1fd56b951eb3&quot;
Cache-Control: max-age=2592000
Content-Encoding: gzip
Server: NetDNA-cache/2.2
X-Cache: HIT
Accept-Ranges: bytes
GET /adimages/adsense.js HTTP/1.1

Host: asset.pagefair.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 23.111.9.30
HTTP/1.1 200 OK
Content-Type: application/x-javascript
Date: Wed, 21 Dec 2016 23:00:31 GMT
Content-Length: 31
Connection: keep-alive
x-amz-id-2: ix3+7/1SWGlXTfRcm+WEatmSlq5iDprI09U0k63oHoEf8ozbT0z5mrtpylcvrocW5yQFyjNxvpg=
x-amz-request-id: 8D1500DDEE96C224
Last-Modified: Wed, 26 Oct 2016 17:32:50 GMT
Etag: &quot;2c0d0fd9b7d0aba673f8b4f676bc9db5&quot;
Cache-Control: max-age=2592000
Content-Encoding: gzip
Server: NetDNA-cache/2.2
X-Cache: HIT
Accept-Ranges: bytes
GET /includes/AppMeasurement.js HTTP/1.1

Host: www.nbcnewyork.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.nbcnewyork.com/templates/nbc_partner_player?cmsID=403659436&amp;videoID=5qTaE2xYJBma&amp;origin=nbcnewyork.com&amp;sec=news&amp;subsec=local&amp;width=500&amp;height=281&amp;turl=undefined%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;ourl=undefined&amp;lp=1&amp;random=aycy4r
Cookie: click_mobile=0
 91.135.34.27
HTTP/1.1 200 OK
Content-Type: text/javascript;charset=utf-8
Last-Modified: Mon, 19 Dec 2016 15:50:15 GMT
Content-Encoding: gzip
X-Server-Name: lx-cmlive15
Server: Apache
Content-Length: 31498
Date: Wed, 21 Dec 2016 23:00:32 GMT
Connection: keep-alive
Vary: Accept-Encoding
GET /assets/pdk565/pdk/style/default.css HTTP/1.1

Host: www.nbcnewyork.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/css,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.nbcnewyork.com/templates/nbc_partner_player?cmsID=403659436&amp;videoID=5qTaE2xYJBma&amp;origin=nbcnewyork.com&amp;sec=news&amp;subsec=local&amp;width=500&amp;height=281&amp;turl=undefined%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;ourl=undefined&amp;lp=1&amp;random=aycy4r
Cookie: click_mobile=0; s_ppvl=%5B%5BB%5D%5D; s_ppv=http%253A%2F%2Fwww.nbcnewyork.com%2Ftemplates%2Fnbc_partner_player%253FcmsID%253D403659436%2526videoID%253D5qTaE2xYJBma%2526origin%253Dnbcnewyork.com%2526sec%253Dnews%2526subsec%253Dlocal%2526width%253D500%2526height%253D281%2526turl%253Dundefined%25252Fnews%25252F2016-12-21%25252Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified%2526ourl%253Dundefined%2526lp%253D1%2526random%253Daycy4r%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0
 91.135.34.27
HTTP/1.1 200 OK
Content-Type: text/css
Server: Apache
Etag: &quot;2fe362e678c24084fd198a5ee4be6ab3:1441298814&quot;
Last-Modified: Thu, 03 Sep 2015 16:46:54 GMT
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Wed, 21 Dec 2016 23:00:32 GMT
Content-Length: 8585
Connection: keep-alive
GET /stats/page_view_event/4DF61C13C2594AE7/a.js?wl_div_hid_t0=0&div_hid_t0=0&s_blk=0&wl_i_blk=0&i_blk=0&is_ab=0&is_wl=1&new_monthly=1&new_daily=1&cbfnc=r07104237173489444&_=0.661378185007022 HTTP/1.1

Host: stats.pagefair.com
GET /stats/page_view_event/4DF61C13C2594AE7/a.js?wl_div_hid_t0=0&amp;div_hid_t0=0&amp;s_blk=0&amp;wl_i_blk=0&amp;i_blk=0&amp;is_ab=0&amp;is_wl=1&amp;new_monthly=1&amp;new_daily=1&amp;cbfnc=r07104237173489444&amp;_=0.661378185007022 HTTP/1.1

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.206.149.104
HTTP/1.1 200 OK
Content-Type: application/javascript
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Authorization,Content-Type,Accept,Origin,User-Agent,Cache-Control,Keep-Alive,X-Requested-With,If-Modified-Since,X-CSRF-TOKEN
Access-Control-Allow-Methods: GET, POST, OPTIONS
Date: Wed, 21 Dec 2016 23:00:33 GMT
P3P: CP=&quot;NID DSP ALL COR&quot;
Server: nginx
Set-Cookie: m_uniq=True; Domain=.pagefair.com; expires=Sat, 31-Dec-2016 23:59:58 GMT; Max-Age=867565; Path=/ d_uniq=True; Domain=.pagefair.com; expires=Wed, 21-Dec-2016 23:59:58 GMT; Max-Age=3565; Path=/
Content-Length: 46
Connection: keep-alive
POST / HTTP/1.1

Host: ss.symcd.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 115
Content-Type: application/ocsp-request
 23.43.139.27
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
Server: nginx/1.10.2
Content-Length: 1609
Content-Transfer-Encoding: binary
Cache-Control: max-age=426773, public, no-transform, must-revalidate
Last-Modified: Mon, 19 Dec 2016 21:32:10 GMT
Expires: Mon, 26 Dec 2016 21:32:10 GMT
Date: Wed, 21 Dec 2016 23:00:33 GMT
Connection: keep-alive
GET /assets/pdk565/pdk/js/app/C6C5945805B3DB0F7834A629FE3D855A.cache.js HTTP/1.1

Host: www.nbcnewyork.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.nbcnewyork.com/templates/nbc_partner_player?cmsID=403659436&amp;videoID=5qTaE2xYJBma&amp;origin=nbcnewyork.com&amp;sec=news&amp;subsec=local&amp;width=500&amp;height=281&amp;turl=undefined%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;ourl=undefined&amp;lp=1&amp;random=aycy4r
Cookie: click_mobile=0; s_ppvl=%5B%5BB%5D%5D; s_ppv=http%253A%2F%2Fwww.nbcnewyork.com%2Ftemplates%2Fnbc_partner_player%253FcmsID%253D403659436%2526videoID%253D5qTaE2xYJBma%2526origin%253Dnbcnewyork.com%2526sec%253Dnews%2526subsec%253Dlocal%2526width%253D500%2526height%253D281%2526turl%253Dundefined%25252Fnews%25252F2016-12-21%25252Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified%2526ourl%253Dundefined%2526lp%253D1%2526random%253Daycy4r%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0
 91.135.34.27
HTTP/1.1 200 OK
Content-Type: application/x-javascript
Server: Apache
Etag: &quot;548863c8462e7c74889b834a207ef6d3:1438358477&quot;
Last-Modified: Fri, 31 Jul 2015 16:01:08 GMT
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Wed, 21 Dec 2016 23:00:32 GMT
Transfer-Encoding: chunked
Connection: keep-alive, Transfer-Encoding
GET /embed/A9aDSRufG7g HTTP/1.1

Host: www.youtube.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 216.58.213.46
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
X-XSS-Protection: 1; mode=block; report=https://www.google.com/appserve/security-bugs/log/youtube
Expires: Tue, 27 Apr 1971 19:44:06 EST
P3P: CP=&quot;This is not a P3P policy! See http://support.google.com/accounts/answer/151657?hl=en for more info.&quot;
X-Content-Type-Options: nosniff
Content-Encoding: gzip
Strict-Transport-Security: max-age=31536000
Date: Wed, 21 Dec 2016 23:00:32 GMT
Server: YouTubeFrontEnd
Set-Cookie: VISITOR_INFO1_LIVE=2dg-7VP7-cQ; path=/; domain=.youtube.com; expires=Tue, 22-Aug-2017 10:53:32 GMT; httponly YSC=jozAjxgIxP8; path=/; domain=.youtube.com; httponly VISITOR_INFO1_LIVE=2dg-7VP7-cQ; path=/; domain=.youtube.com; expires=Tue, 22-Aug-2017 10:53:32 GMT; httponly PREF=f1=50000000; path=/; domain=.youtube.com; expires=Tue, 22-Aug-2017 10:53:32 GMT
Alt-Svc: quic=&quot;:443&quot;; ma=2592000; v=&quot;35,34&quot;
Transfer-Encoding: chunked
POST / HTTP/1.1

Host: ocsp.digicert.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 115
Content-Type: application/ocsp-request
 93.184.220.29
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
Accept-Ranges: bytes
Cache-Control: max-age=514774
Date: Wed, 21 Dec 2016 23:00:35 GMT
Etag: &quot;585ad03b-1d7&quot;
Expires: Wed, 28 Dec 2016 11:00:35 GMT
Last-Modified: Wed, 21 Dec 2016 18:55:55 GMT
Server: ECS (arn/459D)
X-Cache: HIT
Content-Length: 471
GET /includes/blockadblock.js?r=2042017172 HTTP/1.1

Host: www.nbcnewyork.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.nbcnewyork.com/templates/nbc_partner_player?cmsID=403659436&amp;videoID=5qTaE2xYJBma&amp;origin=nbcnewyork.com&amp;sec=news&amp;subsec=local&amp;width=500&amp;height=281&amp;turl=undefined%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;ourl=undefined&amp;lp=1&amp;random=aycy4r
Cookie: click_mobile=0; s_ppvl=%5B%5BB%5D%5D; s_ppv=http%253A%2F%2Fwww.nbcnewyork.com%2Ftemplates%2Fnbc_partner_player%253FcmsID%253D403659436%2526videoID%253D5qTaE2xYJBma%2526origin%253Dnbcnewyork.com%2526sec%253Dnews%2526subsec%253Dlocal%2526width%253D500%2526height%253D281%2526turl%253Dundefined%25252Fnews%25252F2016-12-21%25252Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified%2526ourl%253Dundefined%2526lp%253D1%2526random%253Daycy4r%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0
 91.135.34.27
HTTP/1.1 200 OK
Content-Type: text/javascript;charset=utf-8
Server: Apache
Last-Modified: Wed, 16 Mar 2016 18:35:48 GMT
Content-Encoding: gzip
X-Server-Name: va-c1-r3-u29-b1
Content-Length: 1973
Date: Wed, 21 Dec 2016 23:00:36 GMT
Connection: keep-alive
Vary: Accept-Encoding
POST / HTTP/1.1

Host: ocsp.digicert.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 115
Content-Type: application/ocsp-request
 93.184.220.29
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
Accept-Ranges: bytes
Cache-Control: max-age=505039
Date: Wed, 21 Dec 2016 23:00:36 GMT
Etag: &quot;585abbdd-1d7&quot;
Expires: Wed, 28 Dec 2016 11:00:36 GMT
Last-Modified: Wed, 21 Dec 2016 17:29:01 GMT
Server: ECS (arn/459B)
X-Cache: HIT
Content-Length: 471
POST /ocsp HTTP/1.1

Host: clients1.google.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 107
Content-Type: application/ocsp-request
 216.58.211.142
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
Date: Wed, 21 Dec 2016 23:00:36 GMT
Expires: Sun, 25 Dec 2016 23:00:36 GMT
Cache-Control: public, max-age=345600
Server: ocsp_responder
Content-Length: 463
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
GET /font-awesome/4.5.0/fonts/fontawesome-webfont.woff?v=4.5.0 HTTP/1.1

Host: maxcdn.bootstrapcdn.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css
Origin: http://www.zerohedge.com
 198.232.125.123
HTTP/1.1 200 OK
Content-Type: application/font-woff
Date: Wed, 21 Dec 2016 23:00:36 GMT
Content-Length: 83588
Connection: keep-alive
Last-Modified: Mon, 23 Nov 2015 18:25:43 GMT
Etag: &quot;a35720c2fed2c7f043bc7e4ffb45e073&quot;
Server: NetDNA-cache/2.2
Expires: Sat, 16 Dec 2017 23:00:36 GMT
Cache-Control: max-age=31104000
Vary: Accept-Encoding
Access-Control-Allow-Origin: *
X-Hello-Human: Say hello back! @getBootstrapCDN on Twitter
X-Cache: HIT
Accept-Ranges: bytes
GET /atrk.js HTTP/1.1

Host: d31qbv1cthcecs.cloudfront.net

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 54.230.141.46
HTTP/1.1 200 OK
Content-Type: application/javascript
Content-Length: 3725
Connection: keep-alive
Accept-Ranges: bytes
Cache-Control: max-age=2592000, public
Date: Sat, 01 Oct 2016 20:00:27 GMT
Expires: Mon, 31 Oct 2016 20:00:27 GMT
Last-Modified: Sat, 10 Sep 2016 04:33:45 GMT
Server: nginx
Age: 2055600
X-Cache: Hit from cloudfront
Via: 1.1 0a933e93df3f24d93b87bb73a8d6ae01.cloudfront.net (CloudFront)
X-Amz-Cf-Id: 6GlOgxjuf98J04OCYyRHNN-OBCzPHOQvioBTOR7xIvhC0q3Anxs0hg==
GET /s?&5=-60&35=0&6=900331744&7=331744&8=http%3A%2F%2Fwww.nbcnewyork.com%2Ftemplates%2Fnbc_partner_player%3FcmsID%3D403659436%26videoID%3D5qTaE2xYJBma%26origin%3Dnbcnewyork.com%26sec%3Dnews%26subsec%3Dlocal%26width%3D500%26height%3D281%26turl%3Dundefined%252Fnews%252F2016-12-21%252Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified%26ourl%3Dundefined%26lp%3D1%26random%3Daycy4r&9=http%3A%2F%2Fwww.zerohedge.com%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&10=NBC%20Local%20Media%20Embedded%20Video%20Player&11=Mozilla%2F5.0%20(Windows%3B%20U%3B%20Windows%20NT%206.1%3B%20en-US%3B%20rv%3A1.9.2.13)%20Gecko%2F20101203%20Firefox%2F3.6.13&12=en-US&13=1&14=1.8&15=1&16=1176x885&17=24&18=0.4422479612820486&19=910 HTTP/1.1

Host: s.clickability.com
GET /s?&amp;5=-60&amp;35=0&amp;6=900331744&amp;7=331744&amp;8=http%3A%2F%2Fwww.nbcnewyork.com%2Ftemplates%2Fnbc_partner_player%3FcmsID%3D403659436%26videoID%3D5qTaE2xYJBma%26origin%3Dnbcnewyork.com%26sec%3Dnews%26subsec%3Dlocal%26width%3D500%26height%3D281%26turl%3Dundefined%252Fnews%252F2016-12-21%252Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified%26ourl%3Dundefined%26lp%3D1%26random%3Daycy4r&amp;9=http%3A%2F%2Fwww.zerohedge.com%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;10=NBC%20Local%20Media%20Embedded%20Video%20Player&amp;11=Mozilla%2F5.0%20(Windows%3B%20U%3B%20Windows%20NT%206.1%3B%20en-US%3B%20rv%3A1.9.2.13)%20Gecko%2F20101203%20Firefox%2F3.6.13&amp;12=en-US&amp;13=1&amp;14=1.8&amp;15=1&amp;16=1176x885&amp;17=24&amp;18=0.4422479612820486&amp;19=910 HTTP/1.1

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.nbcnewyork.com/templates/nbc_partner_player?cmsID=403659436&amp;videoID=5qTaE2xYJBma&amp;origin=nbcnewyork.com&amp;sec=news&amp;subsec=local&amp;width=500&amp;height=281&amp;turl=undefined%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;ourl=undefined&amp;lp=1&amp;random=aycy4r
 208.80.59.66
HTTP/1.1 200 OK
Content-Type: image/gif
Date: Wed, 21 Dec 2016 23:00:36 GMT
Server: Apache
Set-Cookie: ld=Mu22xE31nv/5oqvYSWVB+n8WyPAe5ybf; Domain=s.clickability.com; Expires=Tue, 09-Jan-2085 02:14:43 GMT; Path=/ JSESSIONID=B6231B85251A30D1F0627696A8594334.stats0x; Path=/; HttpOnly vid=CPNEomneoEWf+dVta6V9+oDqKWATzos5; Domain=s.clickability.com; Expires=Tue, 09-Jan-2085 02:14:43 GMT; Path=/ Stats_Session=2068317706.20480.0000; path=/
P3P: policyref=&quot;http://www.clickability.com/w3c/p3p.xml&quot;, CP=&quot;NOI DSP COR NID ADM DEV PSA OUR IND UNI PUR COM NAV INT STA&quot;
Content-Length: 42
X-Server-Name: va-c1-r3-u31-b1
Connection: close
GET /tr/?id=505866882913758&ev=PageView&dl=http%3A%2F%2Fwww.nbcnewyork.com%2Ftemplates%2Fnbc_partner_player%3FcmsID%3D403659436%26videoID%3D5qTaE2xYJBma%26origin%3Dnbcnewyork.com%26sec%3Dnews%26subsec%3Dlocal%26width%3D500%26height%3D281%26turl%3Dundefined%252Fnews%252F2016-12-21%252Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified%26ourl%3Dundefined%26lp%3D1%26random%3Daycy4r&rl=http%3A%2F%2Fwww.zerohedge.com%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&if=true&ts=1482361226652&v=2.5.1 HTTP/1.1

Host: www.facebook.com
GET /tr/?id=505866882913758&amp;ev=PageView&amp;dl=http%3A%2F%2Fwww.nbcnewyork.com%2Ftemplates%2Fnbc_partner_player%3FcmsID%3D403659436%26videoID%3D5qTaE2xYJBma%26origin%3Dnbcnewyork.com%26sec%3Dnews%26subsec%3Dlocal%26width%3D500%26height%3D281%26turl%3Dundefined%252Fnews%252F2016-12-21%252Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified%26ourl%3Dundefined%26lp%3D1%26random%3Daycy4r&amp;rl=http%3A%2F%2Fwww.zerohedge.com%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;if=true&amp;ts=1482361226652&amp;v=2.5.1 HTTP/1.1

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.nbcnewyork.com/templates/nbc_partner_player?cmsID=403659436&amp;videoID=5qTaE2xYJBma&amp;origin=nbcnewyork.com&amp;sec=news&amp;subsec=local&amp;width=500&amp;height=281&amp;turl=undefined%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;ourl=undefined&amp;lp=1&amp;random=aycy4r
 31.13.66.36
HTTP/1.1 200 OK
Content-Type: image/gif
Date: Wed, 21 Dec 2016 23:00:36 GMT
Expires: Wed, 21 Dec 2016 23:00:36 GMT
Last-Modified: Fri, 21 Dec 2012 00:00:01 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Set-Cookie: fr=0VeIu7Hr5KMEChIjm..BYWwmU...1.0.BYWwmU.; expires=Tuesday, 21-Mar-2017 23:00:36 GMT; path=/; domain=.facebook.com
Server: proxygen
Connection: keep-alive
Content-Length: 44
GET /yts/cssbin/www-embed-player-vflDXx7qo.css HTTP/1.1

Host: s.ytimg.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/css,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://www.youtube.com/embed/A9aDSRufG7g
 216.58.211.142
HTTP/1.1 200 OK
Content-Type: text/css
Vary: Accept-Encoding, Origin
Content-Encoding: gzip
timing-allow-origin: https://www.youtube.com
Date: Tue, 20 Dec 2016 02:25:30 GMT
Expires: Wed, 20 Dec 2017 02:25:30 GMT
Last-Modified: Mon, 19 Dec 2016 21:03:58 GMT
X-Content-Type-Options: nosniff
Server: sffe
Content-Length: 46331
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=31536000
Age: 160506
Alt-Svc: quic=&quot;:443&quot;; ma=2592000; v=&quot;35,34&quot;
GET /tr/?id=505866882913758&ev=ViewContent&dl=http%3A%2F%2Fwww.nbcnewyork.com%2Ftemplates%2Fnbc_partner_player%3FcmsID%3D403659436%26videoID%3D5qTaE2xYJBma%26origin%3Dnbcnewyork.com%26sec%3Dnews%26subsec%3Dlocal%26width%3D500%26height%3D281%26turl%3Dundefined%252Fnews%252F2016-12-21%252Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified%26ourl%3Dundefined%26lp%3D1%26random%3Daycy4r&rl=http%3A%2F%2Fwww.zerohedge.com%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&if=true&ts=1482361226650&v=2.5.1 HTTP/1.1

Host: www.facebook.com
GET /tr/?id=505866882913758&amp;ev=ViewContent&amp;dl=http%3A%2F%2Fwww.nbcnewyork.com%2Ftemplates%2Fnbc_partner_player%3FcmsID%3D403659436%26videoID%3D5qTaE2xYJBma%26origin%3Dnbcnewyork.com%26sec%3Dnews%26subsec%3Dlocal%26width%3D500%26height%3D281%26turl%3Dundefined%252Fnews%252F2016-12-21%252Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified%26ourl%3Dundefined%26lp%3D1%26random%3Daycy4r&amp;rl=http%3A%2F%2Fwww.zerohedge.com%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;if=true&amp;ts=1482361226650&amp;v=2.5.1 HTTP/1.1

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.nbcnewyork.com/templates/nbc_partner_player?cmsID=403659436&amp;videoID=5qTaE2xYJBma&amp;origin=nbcnewyork.com&amp;sec=news&amp;subsec=local&amp;width=500&amp;height=281&amp;turl=undefined%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;ourl=undefined&amp;lp=1&amp;random=aycy4r
 31.13.66.36
HTTP/1.1 200 OK
Content-Type: image/gif
Date: Wed, 21 Dec 2016 23:00:37 GMT
Expires: Wed, 21 Dec 2016 23:00:37 GMT
Last-Modified: Fri, 21 Dec 2012 00:00:01 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Set-Cookie: fr=0qFl9bpQ6tD6R0Pva..BYWwmV...1.0.BYWwmV.; expires=Tuesday, 21-Mar-2017 23:00:37 GMT; path=/; domain=.facebook.com
Server: proxygen
Connection: keep-alive
Content-Length: 44
GET /yts/jsbin/www-embed-player-vflxURu0w/www-embed-player.js HTTP/1.1

Host: s.ytimg.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://www.youtube.com/embed/A9aDSRufG7g
 216.58.211.142
HTTP/1.1 200 OK
Content-Type: text/javascript
Vary: Accept-Encoding, Origin
Content-Encoding: gzip
timing-allow-origin: https://www.youtube.com
Date: Tue, 20 Dec 2016 02:25:30 GMT
Expires: Wed, 28 Dec 2016 02:25:30 GMT
Last-Modified: Sun, 18 Dec 2016 17:02:35 GMT
X-Content-Type-Options: nosniff
Server: sffe
Content-Length: 41483
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=691200
Age: 160507
Alt-Svc: quic=&quot;:443&quot;; ma=2592000; v=&quot;35,34&quot;
GET /x.png HTTP/1.1

Host: cloudfront-labs.amazonaws.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 72.21.202.25
HTTP/1.1 302 Found
HTTP/1.1 302 Found
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 UTC
Access-Control-Allow-Origin: *
Location: http://ab6a30c0fb4f0fbe769826dbb11b8e447.profile.sfo9.cloudfront.net/test.png
Content-Length: 0
Date: Wed, 21 Dec 2016 23:00:37 GMT
Server: Server
GET /test.png HTTP/1.1

Host: ab6a30c0fb4f0fbe769826dbb11b8e447.profile.sfo9.cloudfront.net

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 52.84.230.249
HTTP/1.1 200 OK
Content-Type: text/plain
Server: CloudFront
Date: Wed, 21 Dec 2016 23:00:38 GMT
Content-Length: 58
Connection: keep-alive
Expires: Wed, 21 Dec 2016 23:00:38 GMT
Cache-Control: max-age=0
X-Amz-Cf-Id: ECjM_YwNwB7Tzm1taAVmX5UcQW_dwcgw-BAwxYB_IT1Un65lH52cCQ==
X-Cache: RoutingProfileExp from cloudfront
Via: 1.1 1b52a5dd431f9e3c81753e61dfdf467a.cloudfront.net (CloudFront)
GET /yts/jsbin/player-en_US-vfla6wgHS/base.js HTTP/1.1

Host: s.ytimg.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://www.youtube.com/embed/A9aDSRufG7g
 216.58.211.142
HTTP/1.1 200 OK
Content-Type: text/javascript
Vary: Accept-Encoding, Origin
Content-Encoding: gzip
timing-allow-origin: https://www.youtube.com
Date: Wed, 21 Dec 2016 02:03:45 GMT
Expires: Thu, 29 Dec 2016 02:03:45 GMT
Last-Modified: Tue, 20 Dec 2016 23:23:04 GMT
X-Content-Type-Options: nosniff
Server: sffe
Content-Length: 441117
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=691200
Age: 75412
Alt-Svc: quic=&quot;:443&quot;; ma=2592000; v=&quot;35,34&quot;
GET /atrk.gif?frame_height=775&frame_width=1176&iframe=0&title=Man%20Who%20Stole%20%241.6%20Million%20Bucket%20Full%20Of%20Gold%20In%20Midtown%20Manhattan%20Has%20Been%20Identified%20%7C%20Zero%20Hedge&time=1482361237214&time_zone_offset=-60&screen_params=1176x885x24&java_enabled=1&cookie_enabled=1&ref_url=&host_url=http%3A%2F%2Fwww.zerohedge.com%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&random_number=10350715453&sess_cookie=7fb36c06159239d6edda9ba9a22&sess_cookie_flag=1&user_cookie=7fb36c06159239d6edda9ba9a22&user_cookie_flag=1&dynamic=true&domain=zerohedge.com&account=BUYlk1a0CM000j&jsv=20130128&user_lang=en-US HTTP/1.1

Host: d5nxst8fruw4z.cloudfront.net
GET /atrk.gif?frame_height=775&amp;frame_width=1176&amp;iframe=0&amp;title=Man%20Who%20Stole%20%241.6%20Million%20Bucket%20Full%20Of%20Gold%20In%20Midtown%20Manhattan%20Has%20Been%20Identified%20%7C%20Zero%20Hedge&amp;time=1482361237214&amp;time_zone_offset=-60&amp;screen_params=1176x885x24&amp;java_enabled=1&amp;cookie_enabled=1&amp;ref_url=&amp;host_url=http%3A%2F%2Fwww.zerohedge.com%2Fnews%2F2016-12-21%2Fman-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified&amp;random_number=10350715453&amp;sess_cookie=7fb36c06159239d6edda9ba9a22&amp;sess_cookie_flag=1&amp;user_cookie=7fb36c06159239d6edda9ba9a22&amp;user_cookie_flag=1&amp;dynamic=true&amp;domain=zerohedge.com&amp;account=BUYlk1a0CM000j&amp;jsv=20130128&amp;user_lang=en-US HTTP/1.1

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.zerohedge.com/news/2016-12-21/man-who-stole-16-million-bucket-full-gold-midtown-manhattan-has-been-identified
 54.230.141.14
HTTP/1.1 200 OK
Content-Type: image/gif
Content-Length: 43
Connection: keep-alive
Date: Mon, 28 Mar 2016 22:11:37 GMT
x-amz-meta-alexa-last-modified: 20110117123941
Last-Modified: Mon, 17 Jan 2011 20:41:40 GMT
Etag: &quot;221d8352905f2c38b3cb2bd191d630b0&quot;
Accept-Ranges: bytes
Server: AmazonS3
Age: 39792
X-Cache: Hit from cloudfront
Via: 1.1 cff9911a0035fa608bcaa4e9709161b3.cloudfront.net (CloudFront)
X-Amz-Cf-Id: pP_gNbjVuTVpr7angbdVAGGWEyf0orJum1XbT4cuxEU8KgqGevPsiw==
POST /ocsp HTTP/1.1

Host: clients1.google.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 107
Content-Type: application/ocsp-request
 216.58.211.142
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
Date: Wed, 21 Dec 2016 23:00:44 GMT
Expires: Sun, 25 Dec 2016 23:00:44 GMT
Cache-Control: public, max-age=345600
Server: ocsp_responder
Content-Length: 463
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
GET /s/roboto/v15/2UX7WLTfW3W8TclTUvlFyQ.woff HTTP/1.1

Host: fonts.gstatic.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://www.youtube.com/embed/A9aDSRufG7g
Origin: https://www.youtube.com
 216.58.211.131
HTTP/1.1 200 OK
Content-Type: font/woff
Access-Control-Allow-Origin: *
timing-allow-origin: *
Date: Fri, 16 Dec 2016 02:42:06 GMT
Expires: Sat, 16 Dec 2017 02:42:06 GMT
Last-Modified: Wed, 14 Jan 2015 22:47:37 GMT
X-Content-Type-Options: nosniff
Server: sffe
Content-Length: 18520
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=31536000
Age: 505118
Alt-Svc: quic=&quot;:443&quot;; ma=2592000; v=&quot;35,34&quot;
POST /ocsp HTTP/1.1

Host: clients1.google.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 107
Content-Type: application/ocsp-request
 216.58.211.142
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
Date: Wed, 21 Dec 2016 23:00:44 GMT
Expires: Sun, 25 Dec 2016 23:00:44 GMT
Cache-Control: public, max-age=345600
Server: ocsp_responder
Content-Length: 463
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
GET /yts/swfbin/player-vflxvK0Is/watch_as3.swf HTTP/1.1

Host: s.ytimg.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://www.youtube.com/embed/A9aDSRufG7g
 216.58.211.142
HTTP/1.1 200 OK
Content-Type: application/x-shockwave-flash
timing-allow-origin: https://www.youtube.com
Date: Wed, 21 Dec 2016 00:23:47 GMT
Expires: Thu, 29 Dec 2016 00:23:47 GMT
Last-Modified: Tue, 20 Dec 2016 23:22:55 GMT
X-Content-Type-Options: nosniff
Server: sffe
Content-Length: 291997
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=691200
Age: 81417
Alt-Svc: quic=&quot;:443&quot;; ma=2592000; v=&quot;35,34&quot;
GET /pagead/id HTTP/1.1

Host: googleads.g.doubleclick.net

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://www.youtube.com/embed/A9aDSRufG7g
Origin: https://www.youtube.com
 216.58.201.162
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
P3P: policyref=&quot;https://googleads.g.doubleclick.net/pagead/gcn_p3p_.xml&quot;, CP=&quot;CURa ADMa DEVa TAIo PSAo PSDo OUR IND UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR&quot;
timing-allow-origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://www.youtube.com
Date: Wed, 21 Dec 2016 23:00:44 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename=&quot;f.txt&quot;
Content-Encoding: gzip
Server: cafe
X-XSS-Protection: 1; mode=block
Alt-Svc: quic=&quot;:443&quot;; ma=2592000; v=&quot;35,34&quot;
Transfer-Encoding: chunked
POST /ocsp HTTP/1.1

Host: clients1.google.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 107
Content-Type: application/ocsp-request
 216.58.211.142
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
Date: Wed, 21 Dec 2016 23:00:45 GMT
Expires: Sun, 25 Dec 2016 23:00:45 GMT
Cache-Control: public, max-age=345600
Server: ocsp_responder
Content-Length: 463
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
GET /instream/ad_status.js HTTP/1.1

Host: static.doubleclick.net

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://www.youtube.com/embed/A9aDSRufG7g
 216.58.211.134
HTTP/1.1 200 OK
Content-Type: text/javascript
Access-Control-Allow-Origin: *
timing-allow-origin: *
Date: Wed, 21 Dec 2016 22:51:42 GMT
Expires: Wed, 21 Dec 2016 23:06:42 GMT
Last-Modified: Thu, 12 Dec 2013 23:40:16 GMT
X-Content-Type-Options: nosniff
Server: sffe
Content-Length: 29
X-XSS-Protection: 1; mode=block
Age: 542
Cache-Control: public, max-age=900
Alt-Svc: quic=&quot;:443&quot;; ma=2592000; v=&quot;35,34&quot;
GET /js/bg/tpAXzIz6GEIJa0NhNE598D1Ux2rQjrdRxDvHaUyoSes.js HTTP/1.1

Host: www.google.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://www.youtube.com/embed/A9aDSRufG7g
 216.58.211.132
HTTP/1.1 200 OK
Content-Type: text/javascript
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Fri, 16 Dec 2016 02:41:34 GMT
Expires: Sat, 16 Dec 2017 02:41:34 GMT
Last-Modified: Thu, 08 Dec 2016 01:00:57 GMT
X-Content-Type-Options: nosniff
Server: sffe
Content-Length: 4503
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=31536000
Age: 505151
Alt-Svc: quic=&quot;:443&quot;; ma=2592000; v=&quot;35,34&quot;
GET /favicon.ico HTTP/1.1

Host: www.zerohedge.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: pnctest=1; sc_is_visitor_unique=rx4867115.1482361227.7C36A10343434FD95088D30CCB9B2CBE.1.1.1.1.1.1.1.1.1; _ga=GA1.2.114390876.1482361227; _gat_UA-11091066-1=1; __qca=P0-1370393526-1482361230202; bm_last_load_status=NOT_BLOCKING; bm_monthly_unique=true; bm_daily_unique=true; bm_sample_frequency=1; __asc=7fb36c06159239d6edda9ba9a22; __auc=7fb36c06159239d6edda9ba9a22
 52.55.79.220
HTTP/1.1 200 OK
Content-Type: image/x-icon
Accept-Ranges: bytes
Age: 42
Date: Wed, 21 Dec 2016 23:00:45 GMT
Etag: &quot;584889ae-c30&quot;
Last-Modified: Wed, 07 Dec 2016 22:14:06 GMT
Server: nginx/1.4.6 (Ubuntu)
Via: 1.1 varnish
X-Varnish: 1037909614 1037865293
X-Varnish-Cache: HIT
X-Varnish-Cache-Count: 98
X-Varnish-Hostname: ip-172-30-0-34
Content-Length: 3120
Connection: keep-alive
GET /crossdomain.xml HTTP/1.1

Host: i.ytimg.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
 216.58.211.142
HTTP/1.1 200 OK
Content-Type: text/x-cross-domain-policy
Vary: Accept-Encoding
Date: Wed, 21 Dec 2016 20:15:46 GMT
Expires: Thu, 22 Dec 2016 02:15:46 GMT
Last-Modified: Thu, 21 Apr 2016 03:17:22 GMT
X-Content-Type-Options: nosniff
Content-Encoding: gzip
Server: sffe
Content-Length: 97
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=21600
Age: 9899
Alt-Svc: quic=&quot;:443&quot;; ma=2592000; v=&quot;35,34&quot;
POST /ad_data_204 HTTP/1.1

Host: www.youtube.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
X-YouTube-Client-Name: 1
X-YouTube-Client-Version: 1.20161219
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: https://www.youtube.com/embed/A9aDSRufG7g
Content-Length: 611
Cookie: VISITOR_INFO1_LIVE=2dg-7VP7-cQ; YSC=jozAjxgIxP8; PREF=f1=50000000
Pragma: no-cache
Cache-Control: no-cache
 216.58.211.142
HTTP/1.1 204 No Content
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=31536000
X-Content-Type-Options: nosniff
Content-Length: 0
Expires: Tue, 27 Apr 1971 19:44:06 EST
Date: Wed, 21 Dec 2016 23:00:46 GMT
Server: YouTubeFrontEnd
X-XSS-Protection: 1; mode=block
Alt-Svc: quic=&quot;:443&quot;; ma=2592000; v=&quot;35,34&quot;
GET /vi/A9aDSRufG7g/sddefault.jpg HTTP/1.1

Host: i.ytimg.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
 216.58.211.142
HTTP/1.1 200 OK
Content-Type: image/jpeg
Date: Wed, 21 Dec 2016 21:38:38 GMT
Expires: Wed, 21 Dec 2016 23:38:38 GMT
Etag: &quot;0&quot;
X-Content-Type-Options: nosniff
Server: sffe
Content-Length: 63628
X-XSS-Protection: 1; mode=block
Age: 4928
Cache-Control: public, max-age=7200
Alt-Svc: quic=&quot;:443&quot;; ma=2592000; v=&quot;35,34&quot;