(function() {
try {
    try {
    if (typeof MtVoid === 'undefined') {
	var MtVoid = {
            loc_data : {},
            scr_data : {
  "s1":"",
  "mt_pqc":"mt_aid",
  "mt_gfp":"mt_fp_mt_aid",
  "v1":"",
  "mt_excl":"",
  "mt_1p":"1",
  "s3":"",
  "mt_if":"1",
  "mt_exem":"",
  "mt_lr":"1",
  "mt_eng":"10",
  "mt_id":"1299791",
  "mt_adid":"206110",
  "mt_dwell":"120",
  "v3":"",
  "s2":"",
  "mt_fpa":"1",
  "v2":""
},
            acq_data : {},
            get: function(obj_name, var_name) {
		return this[obj_name][var_name];
	    },
            set: function(obj_name, var_name, value) {
		this[obj_name][var_name] = value;
		return value;
	    },

            parse_qry: function(qs, destination) {
		qs.replace(/[?&]([^=]+)=([^&]*)/g, function(all, key, value) {
		    destination[key]= value;
		});
            },

            makeqs : function() {
		var qs = "";
		var keys = [].concat.call(arguments);
		if (keys.length < 2) {
		    keys = Object.keys(this.acq_data);
		}
		var pairs = [];
		var self = this;
		keys.forEach(function(key) {
		    pairs.push(key+'='+encodeURIComponent(self.acq_data[key]));
		});
		return pairs.join("&");
	    },

	    gcook: function(name) {
		if (document.cookie == null)
		    return null;
		const fetch_cookie = RegExp(name+"=([^;]+)");
		if (fetch_cookie == null)
                    return null;
		const values = document.cookie.match(fetch_cookie);
		if (values == null)
		    return null;
		this.set('acq_data', name, values[1]);
		var abbrev = name.replace(/mt_fp_/g, '');
		this.set('acq_data', abbrev, values[1]);
		return values[1];
	    },

 	    scook: function(name, value, expire_secs) {
        	var date = new Date();
		date.setTime(date.getTime() + expire_secs);
       		var expire = date.toUTCString();
		var domain = window.location.hostname.match("[^.]+\.[^.]+$")[0];
       		var cookie_str = name+'='+value +
		    '; domain='+domain +
                    '; expires='+expire +
                    '; path=/; Secure; SameSite=None';
		document.cookie = cookie_str;
		return document.cookie;
	    }
	}

	MtVoid.parse_qry(window.location.search, MtVoid.loc_data);
	MtVoid.set('acq_data', 'primary-x-request-id', "0e17d395c1a365b60889debdedfaece0");
	MtVoid.set('acq_data', 'mt_sec', 'kv');

	var mt_fp_uuid = MtVoid.gcook("mt_fp_uuid")
	if (mt_fp_uuid == null) {
            if (MtVoid.get('scr_data', 'mt_sfp') != null) {
		MtVoid.scook('mt_fp_uuid', "e1ef656b-bbe7-4700-b823-a08c2c29441e", 396*24*60*60*1000);
            }
	}

        if (MtVoid.get('scr_data', 'mt_fpa') != null) {
	    var mt_aid = MtVoid.get("loc_data", "mt_aid");
	    if (mt_aid != null) {
		MtVoid.scook('mt_fp_mt_aid', mt_aid, 30*60*60*24*1000);
            }
	}

	var mt_pqc = MtVoid.get('scr_data', 'mt_pqc');
	if (mt_pqc != null) {
            var pqc = mt_pqc.split(/[:,|]/);
	    pqc.forEach(function(key) {
		if (MtVoid.get('loc_data', key) != null)
    		    MtVoid.set('acq_data', key, MtVoid.get('loc_data', key));
	    })
	}

	var mt_gfp = MtVoid.get('scr_data', 'mt_gfp');
	if (mt_gfp != null) {
	    var gfp = mt_gfp.split(/[:,|]/);
	    gfp.forEach(function(key) {
    		MtVoid.gcook(key)
	    })
	}
    }
}
catch(ex) {
    new Image().src = "//pixel.mathtag.com/error/img?error_domain=jskvstore&what=" + encodeURIComponent(ex.message);
}
if (typeof window.MtBts === 'undefined') {
    window.MtBts = function() {
	metric = function(url, wait)
	{	
            setTimeout(function() {
                var e = new Image();
                e.src = url;
            }, wait);
	}
	var intervals = [0, 10];
	var inlen = intervals.length;
	for (var k = 0; k < inlen; ++k)
            this.metric("https://pixel.mathtag.com/comp/img?mt_id=99&ns=xx&bcdv="+k, intervals[k] * 1000);
    };
    window.MtBts()
}
 var keys = []; (async function () { var providers = [{"callback":false,"next":{"callback":{"method":"id.getUserId"},"next":false,"custom":false,"url":false,"name":"if","check":false,"method":"current.value.onAvailable"},"custom":false,"url":false,"name":"if","check":"ID5","method":"ID5.init({partnerId:3})"},{"callback":false,"next":{"callback":false,"next":false,"custom":false,"url":false,"name":"lr","check":false,"method":"current.value.envelope"},"custom":false,"url":false,"name":"lr","check":false,"method":"ats.retrieveEnvelope"}]; var firebackUrl = new URL(document.currentScript.src); firebackUrl.pathname = "/event/comp"; firebackUrl.searchParams.set("primary-x-request-id", "0e17d395c1a365b60889debdedfaece0"); var pixel = { url: firebackUrl }; pixel.append = function (Name, value) { Name = Name.toString(); value = encodeURIComponent(value.toString()); this.url.searchParams.delete("mt_"+Name); this.url.searchParams.set(Name, value); }; var errors = { errs: "" }; errors.push = function (err, current) { current.resolve({ "name": current.name, "value": false }); this.errs = this.errs + '\n' + err; }; errors.check = function () { if (this.errs.length > 0) { return this.errs; }; return false; }; var _idProviders = function (providers) { this.ids = []; this.providers = providers; }; _idProviders.prototype.init = async function () { for (let i = 0; i < this.providers.length; i++) { this.ids.push( this.get( this.providers[i], false )); }; await Promise.all(this.ids); }; _idProviders.prototype.get = async function (provider, current) { if (!current) { current = {}; current.name = provider.name; current.value = null; current.promise = new Promise(function (resolve, reject) { current.resolve = resolve; current.reject = reject; }); setTimeout(this.get.bind(this), 0, provider, current); return current.promise; }; var value = ''; var key = keys[provider.name]; try { if (provider.check) { let check = eval(provider.check); if (check == undefined) { throw ("") }; }; var method = eval(provider.method); if (method == undefined) { throw ("") }; } catch (err) { try { if (!provider.url) { let err = "ID Publisher or Advertiser error. name: " + provider.name; errors.push(err, current); return; } await this.load(provider.url); var method = eval(provider.method); } catch (err) { errors.push(provider.name + " Load or Init error in Script: " + provider.url, current); current.resolve(); return; }; }; var type = typeof (method); if (type == "function") { method = method.bind(current.value); if (provider.callback) { var callback = {}; callback.promise = new Promise(function (resolve, reject) { callback.resolve = resolve; callback.reject = reject; }); method(function (id) { getId = eval(provider.callback.method); type = typeof (getId); if (type == "function") { getId = getId.bind(current.value); callback.resolve(getId()); return; } else { callback.resolve(getId); return; } errors.push(current.name + ": Unknown error", current); callback.reject(); return; }); value = await callback.promise; } else { value = await new Promise(function (resolve, reject) { try { resolve(method()); } catch (err) { errors.push(current.name + ": " + err, current); reject(undefined); } }); } } else { value = method; }; try { if (value != undefined && value != null) { let idType = typeof (value); if (idType != "string" && idType != "number") { throw (current.name + ": Not a string or number."); } if (value.length == 0) { throw (current.name + ': ID empty.'); }; current.resolve({ "name": current.name, "value": value }); return; } throw (current.name + ': ID value undefined or null.'); } catch (err) { if (!provider.next) { errors.push(err, current); return; } else { current.value = value; await this.get(provider.next, current); return; }; }; }; _idProviders.prototype.load = function (url) { return new Promise(function (resolve, reject) { let script = document.createElement('script'); script.src = url; script.style.visibility = 'hidden'; script.style.display = 'none'; script.addEventListener('load', function () { resolve(true); }); script.addEventListener('error', function () { reject("Cannot load " + url); }); if (document.body) { document.body.appendChild(script); } else if (document.head) { document.head.appendChild(script); }; }); }; _idProviders.prototype.send = async function () { for (let i = 0; i < this.ids.length; i++) { await this.ids[i].then(function (id) { if (id.value) { let name = id.name; let value = id.value; pixel.append(name, value); } }); } let fireback = document.createElement('img'); fireback.style.visibility = 'hidden'; fireback.style.display = 'none'; fireback.src = pixel.url.href; if (document.body) document.body.appendChild(fireback); else if (document.head) document.head.appendChild(fireback); }; var idProvider = new _idProviders(providers); await idProvider.init(); idProvider.send(); var errs = errors.check(); if (errs) { throw new Error(errs); }; })().catch( function (ex) { document.createElement("img").src = "//pixel.mathtag.com/error/img?error_domain=idProvider&what=" + encodeURIComponent(ex.message); });         (function() {
            try {
                var start = Date.now();
                var fired = 0;
                var timeout = setTimeout(function() {
                    dodwell("timeout")
                }, 120 * 1000);

                function dodwell(ev) {

	            if (ev == "visibilitychange") {
                        var vis = document.visibilityState;
                        if (vis != 'hidden') return;
                    }

                    if (fired++) return;

                    var duration = Math.round((Date.now() - start) / 1000.0);

                    var append = "";
                    if (typeof MtVoid != 'undefined') {
                    	MtVoid.set('acq_data', 'mt_dwelled', duration);
                    	append = "&"+MtVoid.makeqs();
                    }

                    new Image().src = "https://pixel.mathtag.com/comp/img?mt_id=1299791&mt_adid=206110&mt_exem=&mt_excl=&v1=&v2=&v3=&s1=&s2=&s3=&stat=dwelled"+append;

                    clearTimeout(timeout);
                    document.removeEventListener('visibilitychange', dodwell);
                    window.removeEventListener('pagehide', dodwell);

                    return;
                }

                if (window.addEventListener) {
                    window.addEventListener("pagehide", function() {
                        dodwell("pagehide")
                    }, {
                        once: true,
                        passive: true
                    });
                }

                if (document.visibilityState) {
                    document.addEventListener('visibilitychange', function() {
                        dodwell("visibilitychange")
                    }, {
                        once: true,
                        passive: true
                    });
                }

            } catch (ex) {
                new Image().src = "//pixel.mathtag.com/error/img?error_domain=dwell&what=" + encodeURIComponent(ex.message);
            }
        })();
(function() {
    try {
	setTimeout(function() {
       	    var append = "";
            if (typeof MtVoid != 'undefined') {
            	MtVoid.set('acq_data', 'engs', 10);
                append = "&"+MtVoid.makeqs();
            }
	    var e = new Image();
	    e.src = "https://pixel.mathtag.com/comp/img?mt_id=1299791&mt_adid=206110&mt_exem=&mt_excl=&v1=&v2=&v3=&s1=&s2=&s3=&stat=engaged"+append
	}, 10 * 1000);
    } catch(ex) {
	new Image().src="//%s/error/img?error_domain=engage&what="+encodeURIComponent(ex.message);
    }
}
)();
(function() {
    try {
        var refire = "https://pixel.mathtag.com/event/img?mt_id=1299791&mt_adid=206110&mt_exem=&mt_excl=&v1=&v2=&v3=&s1=&s2=&s3=&stat=immediate&primary_mt_timestamp=1701559271&"+MtVoid.makeqs();
        new Image().src= refire;
    } catch(ex) {
	new Image().src="//%s/error/img?error_domain=immediate&what="+encodeURIComponent(ex.message);
    }
}
)();
(function(){
/**/

})();
(function() {
    try {
        if (document.getElementById('mm_sync_back_ground'))
           return;
        var frm = document.createElement('iframe');
        frm.style.visibility = 'hidden';
        frm.style.display = 'none';
        frm.src = "https://pixel.mathtag.com/sync/iframe?mt_uuid=e1ef656b-bbe7-4700-b823-a08c2c29441e&no_iframe=1&mt_adid=206110&source=mathtag";
        frm.setAttribute("id", "mm_sync_back_ground");
        frm.title="MediaMath Advertising";

        if (document.body)
            document.body.appendChild(frm);
        else
            if (document.head)
                document.head.appendChild(frm);
    }
    catch(ex)
    {
        new Image().src="//pixel.mathtag.com/error/img?error_domain=synciframe&what="+encodeURIComponent(ex.message);
    }
})();

}
catch(ex)
{
   new Image().src="//pixel.mathtag.com/error/img?error_domain=wrap_js&what="+encodeURIComponent(ex.message);
}
})();
