text: ! function() {
    var e = new Image,
      t = new Image,
      n = new Image,
      i = new Image;
    window.location && window.location.href && 1 < window.location.href.toLowerCase().indexOf("webapps/mpp/offers") && window.dataLayer && window.dataLayer.contentCountry && "us" === window.dataLayer.contentCountry.toLowerCase() && (e.src = "https://t.paypal.com/ts?v=nojs&e=ad_im&s=ci&page=main:mktg:personal::offers:::&t=" + Date.now() + "&pgrp=main:mktg:personal::offers", t.src = "https://ad.doubleclick.net/ddm/activity/src=6386697;type=mppmz0;cat=fptit000;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1?", n.src = "https://pixel.mathtag.com/event/img?mt_id=1249931&mt_adid=136505&mt_exem=&mt_excl=&v1=&v2=&v3=&s1=&s2=&s3=", i.src = "https://secure.ace-tag.advertising.com/action/type=139813/bins=1/rich=0/Mnum=1516")
  }(),
  function ensightenInit() {
    var ensightenOptions = {
        client: "paypal",
        clientId: 1620,
        publishPath: "paypal_chunk_poc",
        isPublic: 1,
        serverComponentLocation: "nexus.ensighten.com/paypal/paypal_chunk_poc/serverComponent.php",
        staticJavascriptPath: "www.paypalobjects.com/tagmgmt/codefiles/",
        ns: "Bootstrapper",
        nexus: "nexus.ensighten.com",
        scUseCacheBuster: "true",
        enableTagAuditBeacon: "false",
        enablePagePerfBeacon: "false",
        registryNs: "ensBootstraps",
        generatedOn: "Thu May 17 21:40:12 GMT 2018",
        beaconSamplingSeedValue: 11,
        xhrJsonServerComponentRequest: !0,
        encoded: !0
      },
      cv, dv, lp, mp, op, pp, vo, wo, xo, yo;
    window[ensightenOptions.ns] || (window[ensightenOptions.registryNs] || (window[ensightenOptions.registryNs] = {}), window[ensightenOptions.registryNs][ensightenOptions.ns] = window[ensightenOptions.ns] = function(c) {
      var u = {},
        l = {};
  
      function e(e) {
        this.name = "DependencyNotAvailableException", this.message = "Dependency with id " + e + "is missing"
      }
  
      function t(e) {
        this.name = "BeaconException", this.message = "There was an error durring beacon initialization", e = e || {}, this.lineNumber = e.lineNumber || e.line, this.fileName = e.fileName
      }
  
      function s() {
        for (var e = l.dataDefinitionIds.length, t = !0, n = 0; n < e; n++) {
          var i = l.dataDefinitionIds[n],
            o = l.dataDefinitions[i];
          if (!o || null == o.endRegistration) {
            t = !1;
            break
          }
        }
        t && l.callOnDataDefintionComplete()
      }
      l.ensightenOptions = ensightenOptions, l.scDataObj = {}, u.version = "1.26.0", u.nexus = c.nexus || "nexus.ensighten.com", u.rand = -1, u.currSec = (new Date).getSeconds(), u.options = {
        interval: c.interval || 100,
        erLoc: c.errorLocation || u.nexus + "/error/e.gif",
        scLoc: c.serverComponentLocation || u.nexus + "/" + c.client + "/serverComponent.php",
        sjPath: c.staticJavascriptPath || u.nexus + "/" + c.client + "/code/",
        alLoc: c.alertLocation || u.nexus + "/alerts/a.gif",
        publishPath: c.publishPath,
        isPublic: c.isPublic,
        client: c.client,
        clientId: c.clientId,
        enableTagAuditBeacon: c.enableTagAuditBeacon,
        scUseCacheBuster: c.scUseCacheBuster,
        beaconSamplingSeedValue: c.beaconSamplingSeedValue || -1
      }, u.ruleList = [], u.allDeploymentIds = [], u.runDeploymentIds = [], u.exceptionList = [], u.ensightenVariables = {}, u.test = function(e) {
        if (!(e.executionData.hasRun || e.executionData.runTime && 0 < e.executionData.runTime.length)) {
          for (var t = 0; t < e.dependencies.length; t++)
            if (!1 === e.dependencies[t]()) return;
          e.execute()
        }
      }, (e.prototype = new Error) || (e.prototype = {}), e.prototype.constructor = e, u.DependencyNotAvailableException = e, (t.prototype = new Error) || (t.prototype = {}), t.prototype.constructor = t, u.BeaconException = t, u.checkForInvalidDependencies = function(e, t, n, i) {
        for (var o = 0; o < n.length; o++)
          if ("DEPENDENCYNEVERAVAILABLE" === n[o]) return l.currentRuleId = this.id, l.currentDeploymentId = this.deploymentId, l.reportException(new u.DependencyNotAvailableException(i[o])), t && -1 !== t && u.allDeploymentIds.push(t), !0;
        return !1
      }, l.currentRuleId = -1, l.currentDeploymentId = -1, l.reportedErrors = [], l.reportedAlerts = [], l.AF = [], l._serverTime = "", l._clientIP = "", l.sampleBeacon = function() {
        var e = !1;
        try {
          var t = (u.currSec || 0) % 20,
            n = u.options.beaconSamplingSeedValue; - 1 === n ? e = !0 : 0 !== t && n % t == 0 && (e = !0)
        } catch (e) {}
        return e
      }, l.getServerComponent = function(e) {
        l.callOnGetServerComponent(), l.ensightenOptions.xhrJsonServerComponentRequest && (e || (e = {}), e.ensJson = "true");
        var t = l.addServerComponentData(window.location.protocol + "//" + u.options.scLoc, e || !0, u.options.scUseCacheBuster, l.ensightenOptions.xhrJsonServerComponentRequest);
        l.ensightenOptions.xhrJsonServerComponentRequest ? l.sendXhrRequest(t, function(e) {
          var t = JSON.parse(e),
            n = t.pageFiles;
          l.setPageSpecificDataDefinitionIds(t.dataDefinitionIds);
          for (var i = 0; i < n.length; i++) {
            var o = window.location.protocol + "//" + u.options.sjPath + n[i];
            l.ensightenOptions.encoded && (o = window.location.protocol + "//" + u.options.sjPath + l.base64.decode(n[i])), i + 1 === n.length ? l.loadScriptCallback(o, l.callOnPageSpecificCompletion) : l.insertScript(o)
          }
        }) : l.insertScript(t)
      }, l.setVariable = function(e, t) {
        u.ensightenVariables[e] = t
      }, l.getVariable = function(e) {
        return e in u.ensightenVariables ? u.ensightenVariables[e] : null
      }, l.testAll = function() {
        for (var e = 0; e < u.ruleList.length; e++) u.test(u.ruleList[e])
      }, l.executionState = {
        DOMParsed: !1,
        DOMLoaded: !1,
        dataDefinitionComplete: !1,
        conditionalRules: !1,
        readyForServerComponent: !1
      }, l.reportException = function(e) {
        e.timestamp = (new Date).getTime(), u.exceptionList.push(e);
        var t = window.location.protocol + "//" + u.options.erLoc + "?msg=" + encodeURIComponent(e.message || "") + "&lnn=" + encodeURIComponent(e.lineNumber || e.line || -1) + "&fn=" + encodeURIComponent(e.fileName || "") + "&cid=" + encodeURIComponent(u.options.clientId || -1) + "&client=" + encodeURIComponent(u.options.client || "") + "&publishPath=" + encodeURIComponent(u.options.publishPath || "") + "&rid=" + encodeURIComponent(l.currentRuleId || -1) + "&did=" + encodeURIComponent(l.currentDeploymentId || -1) + "&errorName=" + encodeURIComponent(e.name || ""),
          n = l.imageRequest(t);
        n.timestamp = (new Date).getTime(), this.reportedErrors.push(n)
      }, l.Rule = function(e) {
        this.execute = function() {
          this.executionData.runTime.push(new Date), l.currentRuleId = this.id, l.currentDeploymentId = this.deploymentId;
          try {
            this.code()
          } catch (e) {
            window[ensightenOptions.ns].reportException(e)
          } finally {
            this.executionData.hasRun = !0, -1 !== this.deploymentId && u.runDeploymentIds.push(this.deploymentId), l.testAll()
          }
        }, this.id = e.id, this.deploymentId = e.deploymentId, this.dependencies = e.dependencies || [], this.code = e.code, this.executionData = {
          hasRun: !1,
          runTime: []
        }
      }, l.registerRule = function(e) {
        return (!l.getRule(e.id) || -1 === e.id) && (u.ruleList.push(e), -1 !== e.deploymentId && u.allDeploymentIds.push(e.deploymentId), l.testAll(), !0)
      }, l.getRule = function(e) {
        for (var t = 0; t < u.ruleList.length; t++)
          if (u.ruleList[t].id === e) return u.ruleList[t];
        return !1
      }, l.getAllDeploymentIds = function() {
        return u.allDeploymentIds
      }, l.getRunDeploymentIds = function() {
        return u.runDeploymentIds
      }, l.hasRuleRun = function(e) {
        var t = l.getRule(e);
        return !!t && t.executionData.hasRun
      }, u.toTwoChar = function(e) {
        return (2 === e.toString().length ? "" : "0") + e
      }, l.Alert = function(e) {
        var t = new Date,
          n = t.getFullYear() + "-" + u.toTwoChar(t.getMonth()) + "-" + u.toTwoChar(t.getDate()) + " " + u.toTwoChar(t.getHours()) + ":" + u.toTwoChar(t.getMinutes()) + ":" + u.toTwoChar(t.getSeconds());
        this.severity = e.severity || 1, this.subject = e.subject || "", this.type = e.type || 1, this.ruleId = e.ruleId || -1, this.severity = encodeURIComponent(this.severity), this.date = encodeURIComponent(n), this.subject = encodeURIComponent(this.subject), this.type = encodeURIComponent(this.type)
      }, l.generateAlert = function(e) {
        var t = window.location.protocol + "//" + u.options.alLoc + "?d=" + e.date + "&su=" + e.subject + "&se=" + e.severity + "&t=" + e.type + "&cid=" + u.options.clientId + "&client=" + u.options.client + "&publishPath=" + u.options.publishPath + "&rid=" + l.currentRuleId + "&did=" + l.currentDeploymentId,
          n = l.imageRequest(t);
        n.timestamp = (new Date).getTime(), this.reportedAlerts.push(n)
      }, l.imageRequest = function(e) {
        var t = new Image(0, 0);
        return t.src = e, t
      }, l.addServerComponentData = function(e, t, n, o) {
        if (t) {
          t = 1 == t && "object" == typeof l.scDataObj ? l.scDataObj : t, u.rand = Math.random() * ("1E" + (10 * Math.random()).toFixed(0));
          var r = window.location.href;
          if ("object" == typeof t)
            for (i in t) {
              var a = ~r.indexOf("#") ? r.slice(r.indexOf("#"), r.length) : "";
              r = (r = r.slice(0, a.length ? r.length - a.length : r.length)) + (~r.indexOf("?") ? "&" : "?");
              for (k in t) r += k + "=" + t[k] + "&";
              r = r.slice(0, -1) + a;
              break
            }
          e += "?", n && (e += "r=" + u.rand + "&"), o && (e += "ensJson=true&"), e += "ClientID=" + encodeURIComponent(u.options.clientId) + "&PageID=" + encodeURIComponent(r)
        }
        return e
      }, l.base64 = {
        _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
        encode: function(e) {
          var t, n, i, o, r, a, s, c = "",
            u = 0;
          for (e = l.base64._utf8_encode(e); u < e.length;) o = (t = e.charCodeAt(u++)) >> 2, r = (3 & t) << 4 | (n = e.charCodeAt(u++)) >> 4, a = (15 & n) << 2 | (i = e.charCodeAt(u++)) >> 6, s = 63 & i, isNaN(n) ? a = s = 64 : isNaN(i) && (s = 64), c = c + this._keyStr.charAt(o) + this._keyStr.charAt(r) + this._keyStr.charAt(a) + this._keyStr.charAt(s);
          return c
        },
        decode: function(e) {
          var t, n, i, o, r, a, s = "",
            c = 0;
          for (e = e.replace(/[^A-Za-z0-9\+\/\=]/g, ""); c < e.length;) t = this._keyStr.indexOf(e.charAt(c++)) << 2 | (o = this._keyStr.indexOf(e.charAt(c++))) >> 4, n = (15 & o) << 4 | (r = this._keyStr.indexOf(e.charAt(c++))) >> 2, i = (3 & r) << 6 | (a = this._keyStr.indexOf(e.charAt(c++))), s += String.fromCharCode(t), 64 != r && (s += String.fromCharCode(n)), 64 != a && (s += String.fromCharCode(i));
          return s = l.base64._utf8_decode(s)
        },
        _utf8_encode: function(e) {
          e = e.replace(/\r\n/g, "\n");
          for (var t = "", n = 0; n < e.length; n++) {
            var i = e.charCodeAt(n);
            i < 128 ? t += String.fromCharCode(i) : (127 < i && i < 2048 ? t += String.fromCharCode(i >> 6 | 192) : (t += String.fromCharCode(i >> 12 | 224), t += String.fromCharCode(i >> 6 & 63 | 128)), t += String.fromCharCode(63 & i | 128))
          }
          return t
        },
        _utf8_decode: function(e) {
          for (var t = "", n = 0, i = c1 = c2 = 0; n < e.length;)(i = e.charCodeAt(n)) < 128 ? (t += String.fromCharCode(i), n++) : 191 < i && i < 224 ? (c2 = e.charCodeAt(n + 1), t += String.fromCharCode((31 & i) << 6 | 63 & c2), n += 2) : (c2 = e.charCodeAt(n + 1), c3 = e.charCodeAt(n + 2), t += String.fromCharCode((15 & i) << 12 | (63 & c2) << 6 | 63 & c3), n += 3);
          return t
        }
      }, l.insertScriptEncoded = function(e, t, n, i) {
        l.insertScript(l.base64.decode(string), t, n, i)
      }, l.insertScript = function(e, t, n, i) {
        var o, r, a, s, c = document.getElementsByTagName("script");
        c[0];
        if (i = void 0 === i || i, t = void 0 === t || t)
          for (o = 0; o < c.length; o++)
            if (c[o].src === e && c[o].readyState && /loaded|complete/.test(c[o].readyState)) return;
        n && (e = l.addServerComponentData(e, n, i)), window, r = document, a = e, s = r.head || r.getElementsByTagName("head"), setTimeout(function() {
          if ("item" in s) {
            if (!s[0]) return void setTimeout(arguments.callee, 25);
            s = s[0]
          }
          var e = r.createElement("script");
          e.src = a, e.crossOrigin = "anonymous", e.onload = e.onerror = function() {
            this.addEventListener && (this.readyState = "loaded")
          }, s.insertBefore(e, s.firstChild)
        }, 0)
      }, l.loadScriptCallbackEncoded = function(e, t, n) {
        l.loadScriptCallback(l.base64.decode(e), t, n)
      }, l.loadScriptCallback = function(e, t, n) {
        var i, o = document.getElementsByTagName("script"),
          r = o[0];
        if (n = n || !0)
          for (i = 0; i < o.length; i++)
            if (o[i].src === e && o[i].readyState && /loaded|complete/.test(o[i].readyState)) try {
              t()
            } catch (e) {
              window[ensightenOptions.ns].reportException(e)
            } finally {
              return
            }
        var a = document.createElement("script");
        a.type = "text/javascript", a.async = !0, a.crossOrigin = "anonymous", a.src = e, a.onerror = function() {
          this.addEventListener && (this.readyState = "loaded")
        }, a.onload = a.onreadystatechange = function() {
          if (!this.readyState || "complete" === this.readyState || "loaded" === this.readyState) {
            this.onload = this.onreadystatechange = null, this.addEventListener && (this.readyState = "loaded");
            try {
              t.call(this)
            } catch (e) {
              window[ensightenOptions.ns].reportException(e)
            }
          }
        }, r.parentNode.insertBefore(a, r)
      }, l.unobtrusiveAddEvent = function(e, t, n) {
        try {
          var i = e[t] ? e[t] : function() {};
          e[t] = function() {
            return n.apply(this, arguments), i.apply(this, arguments)
          }
        } catch (e) {
          window[ensightenOptions.ns].reportException(e)
        }
      }, l.anonymous = function(e, t) {
        return function() {
          try {
            l.currentRuleId = t || "anonymous", e()
          } catch (e) {
            window[ensightenOptions.ns].reportException(e)
          }
        }
      }, l.setCurrentRuleId = function(e) {
        l.currentRuleId = e
      }, l.setCurrentDeploymentId = function(e) {
        l.currentDeploymentId = e
      }, l.bindImmediate = function(e, t, n) {
        var i;
        if ("function" == typeof e) i = new l.Rule({
          id: t || -1,
          deploymentId: n || -1,
          dependencies: [],
          code: e
        });
        else {
          if ("object" != typeof e) return !1;
          i = e
        }
        l.registerRule(i)
      }, l.bindDOMParsed = function(e, t, n) {
        var i;
        if ("function" == typeof e) i = new l.Rule({
          id: t || -1,
          deploymentId: n || -1,
          dependencies: [function() {
            return window[ensightenOptions.ns].executionState.DOMParsed
          }],
          code: e
        });
        else {
          if ("object" != typeof e) return !1;
          i = e
        }
        l.registerRule(i)
      }, l.bindDOMLoaded = function(e, t, n) {
        var i;
        if ("function" == typeof e) i = new l.Rule({
          id: t || -1,
          deploymentId: n || -1,
          dependencies: [function() {
            return window[ensightenOptions.ns].executionState.DOMLoaded
          }],
          code: e
        });
        else {
          if ("object" != typeof e) return !1;
          i = e
        }
        l.registerRule(i)
      }, l.bindPageSpecificCompletion = function(e, t, n) {
        var i;
        if ("function" == typeof e) i = new l.Rule({
          id: t || -1,
          deploymentId: n || -1,
          dependencies: [function() {
            return window[ensightenOptions.ns].executionState.conditionalRules
          }],
          code: e
        });
        else {
          if ("object" != typeof e) return !1;
          i = e
        }
        l.registerRule(i)
      }, l.bindOnGetServerComponent = function(e, t, n) {
        var i;
        if ("function" == typeof e) i = new l.Rule({
          id: t || -1,
          deploymentId: n || -1,
          dependencies: [function() {
            return window[ensightenOptions.ns].executionState.readyForServerComponent
          }],
          code: e
        });
        else {
          if ("object" != typeof e) return !1;
          i = e
        }
        l.registerRule(i)
      }, l.bindDataDefinitionComplete = function(e, t, n) {
        var i;
        if ("function" == typeof e) i = new l.Rule({
          id: t || -1,
          deploymentId: n || -1,
          dependencies: [function() {
            return window[ensightenOptions.ns].executionState.dataDefinitionComplete
          }],
          code: e
        });
        else {
          if ("object" != typeof e) return !1;
          i = e
        }
        l.registerRule(i)
      }, l.checkHasRun = function(e) {
        if (0 === e.length) return !0;
        for (var t, n = 0; n < e.length; ++n) {
          if (!(t = l.getRule(parseInt(e[n], 10)))) return !1;
          if (!t.executionData.hasRun) return !1
        }
        return !0
      }, l.bindDependencyImmediate = function(e, t, n, i, o) {
        var r, a = [];
        if (!u.checkForInvalidDependencies(t, i, n, o)) {
          if (a.push(function() {
              return window[ensightenOptions.ns].checkHasRun(n)
            }), "function" == typeof e) r = new l.Rule({
            id: t || -1,
            deploymentId: i || -1,
            dependencies: a,
            code: e
          });
          else {
            if ("object" != typeof e) return !1;
            r = e
          }
          l.registerRule(r)
        }
      }, l.bindDependencyDOMLoaded = function(e, t, n, i, o) {
        var r, a = [];
        if (!u.checkForInvalidDependencies(t, i, n, o)) {
          if (a.push(function() {
              return window[ensightenOptions.ns].executionState.DOMLoaded
            }), a.push(function() {
              return window[ensightenOptions.ns].checkHasRun(n)
            }), "function" == typeof e) r = new l.Rule({
            id: t || -1,
            deploymentId: i || -1,
            dependencies: a,
            code: e
          });
          else {
            if ("object" != typeof e) return !1;
            r = e
          }
          l.registerRule(r)
        }
      }, l.bindDependencyDOMParsed = function(e, t, n, i, o) {
        var r, a = [];
        if (!u.checkForInvalidDependencies(t, i, n, o)) {
          if (a.push(function() {
              return window[ensightenOptions.ns].executionState.DOMParsed
            }), a.push(function() {
              return window[ensightenOptions.ns].checkHasRun(n)
            }), "function" == typeof e) r = new l.Rule({
            id: t || -1,
            deploymentId: i || -1,
            dependencies: a,
            code: e
          });
          else {
            if ("object" != typeof e) return !1;
            r = e
          }
          l.registerRule(r)
        }
      }, l.bindDependencyPageSpecificCompletion = function(e, t, n, i, o) {
        var r, a = [];
        if (!u.checkForInvalidDependencies(t, i, n, o)) {
          if (a.push(function() {
              return window[ensightenOptions.ns].executionState.conditionalRules
            }), a.push(function() {
              return window[ensightenOptions.ns].checkHasRun(n)
            }), "function" == typeof e) r = new l.Rule({
            id: t || -1,
            deploymentId: i || -1,
            dependencies: a,
            code: e
          });
          else {
            if ("object" != typeof e) return !1;
            r = e
          }
          l.registerRule(r)
        }
      }, l.bindDependencyOnGetServerComponent = function(e, t, n, i, o) {
        var r, a = [];
        if (!u.checkForInvalidDependencies(t, i, n, o)) {
          if (a.push(function() {
              return window[ensightenOptions.ns].executionState.readyForServerComponent
            }), a.push(function() {
              return window[ensightenOptions.ns].checkHasRun(n)
            }), "function" == typeof e) r = new l.Rule({
            id: t || -1,
            deploymentId: i || -1,
            dependencies: a,
            code: e
          });
          else {
            if ("object" != typeof e) return !1;
            r = e
          }
          l.registerRule(r)
        }
      }, l.bindDependencyPageSpecificCompletion = function(e, t, n, i, o) {
        var r, a = [];
        if (!u.checkForInvalidDependencies(t, i, n, o)) {
          if (a.push(function() {
              return window[ensightenOptions.ns].executionState.dataDefinitionComplete
            }), a.push(function() {
              return window[ensightenOptions.ns].checkHasRun(n)
            }), "function" == typeof e) r = new l.Rule({
            id: t || -1,
            deploymentId: i || -1,
            dependencies: a,
            code: e
          });
          else {
            if ("object" != typeof e) return !1;
            r = e
          }
          l.registerRule(r)
        }
      }, l.dataDefintionIds = [], l.dataDefinitions = [], l.pageSpecificDataDefinitionsSet = !1, l.setPageSpecificDataDefinitionIds = function(e) {
        for (var t = e.length, n = 0; n < t; n++) {
          var i = e[n];
          if (Array.prototype.indexOf) - 1 == l.dataDefinitionIds.indexOf(i) && l.dataDefinitionIds.push(i);
          else {
            for (var o = !1, r = l.dataDefinitionIds.length, a = 0; a < r; a++)
              if (l.dataDefinitionIds[a] === i) {
                o = !0;
                break
              } o || l.dataDefinitionIds.push(i)
          }
        }
        l.pageSpecificDataDefinitionsSet = !0, s()
      }, l.DataDefinition = function(e, t) {
        this.id = e, this.registrationFn = t, this.startRegistrationTime = null, this.endRegistrationTime = null, this.startRegistration = function() {
          this.startRegistrationTime = new Date
        }, this.endRegistration = function() {
          this.endRegistrationTime = new Date
        }
      }, l.registerDataDefinition = function(e, t) {
        var n = l.dataDefinitions[t];
        n || (n = new l.DataDefinition(t, e), l.dataDefinitions[t] = n), n.startRegistrationTime || (n.startRegistration(), n.registrationFn(), n.endRegistration()), l.pageSpecificDataDefinitionsSet && s()
      }, l.callOnDataDefintionComplete = function() {
        l.executionState.dataDefinitionComplete = !0, l.testAll()
      }, l.callOnDOMParsed = function() {
        window[ensightenOptions.ns].executionState.DOMParsed = !0, window[ensightenOptions.ns].testAll()
      }, l.callOnDOMLoaded = function() {
        window[ensightenOptions.ns].executionState.DOMParsed = !0, window[ensightenOptions.ns].executionState.DOMLoaded = !0, window[ensightenOptions.ns].testAll()
      }, l.callOnPageSpecificCompletion = function() {
        for (var e = document.getElementsByTagName("script"), t = 0, n = e.length; t < n; t++)
          if (e[t].src.match(/\.ensighten\.com\/(.+?)\/code\/.*/i) && "loaded" != e[t].readyState && "complete" != e[t].readyState) return void setTimeout(window[ensightenOptions.ns].callOnPageSpecificCompletion, 50);
        setTimeout(function() {
          window[ensightenOptions.ns].executionState.conditionalRules = !0, window[ensightenOptions.ns].testAll()
        }, 1)
      }, l.callOnGetServerComponent = function() {
        window[ensightenOptions.ns].executionState.readyForServerComponent = !0, window[ensightenOptions.ns].testAll()
      }, l.hasDOMParsed = function() {
        return window[ensightenOptions.ns].executionState.DOMParsed
      }, l.hasDOMLoaded = function() {
        return window[ensightenOptions.ns].executionState.DOMLoaded
      }, l.hasPageSpecificCompletion = function() {
        return window[ensightenOptions.ns].executionState.conditionalRules
      }, l.sendXhrRequest = function(e, t, n) {
        var r = [function() {
          var e = new XDomainRequest;
          return e.onload = function() {
            e.readyState = 4, e.status = 200, e.onreadystatechange()
          }, e.onerror = function() {
            e.readyState = 4, e.status = 500, e.onreadystatechange()
          }, e
        }, function() {
          return new XMLHttpRequest
        }, function() {
          return new ActiveXObject("Msxml2.XMLHTTP")
        }, function() {
          return new ActiveXObject("Msxml3.XMLHTTP")
        }, function() {
          return new ActiveXObject("Microsoft.XMLHTTP")
        }];
        ! function(e, t, n) {
          var i = function() {
            for (var e = !1, t = 0; t < r.length; t++) {
              try {
                e = r[t]()
              } catch (e) {
                continue
              }
              break
            }
            return e
          }();
          if (i) {
            var o = n ? "POST" : "GET";
            i.open(o, e, !0), n && i.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), i.onreadystatechange = function() {
              if (4 == i.readyState && (200 == i.status || 304 == i.status)) {
                var e = i.responseText;
                t(e)
              }
            }, 4 != i.readyState && i.send(n)
          }
        }(e, t, n)
      };
      return l.new_fArray = function() {
          return o = i = !(n = []), {
            add: function(e) {
              !i || o ? "function" == typeof e && (n[n.length] = e) : e()
            },
            exec: function() {
              o = !0;
              do {
                var e = n;
                n = [], i = !0;
                for (var t = 0; t < e.length; t++) try {
                  e[t].call(window)
                } catch (e) {
                  window[ensightenOptions.ns].reportException(e)
                }
              } while (0 < n.length);
              o = !1
            },
            haveRun: function() {
              return i
            }
          };
          var n, i, o
        }, u.timer = null,
        function() {
          function e(e, t) {
            return function() {
              e.apply(t, arguments)
            }
          }
          window.console || (window.console = {});
          var t = window.console;
          if (!t.log)
            if (window.log4javascript) {
              var n = log4javascript.getDefaultLogger();
              t.log = e(n.info, n), t.debug = e(n.debug, n), t.info = e(n.info, n), t.warn = e(n.warn, n), t.error = e(n.error, n)
            } else t.log = function() {};
          t.debug || (t.debug = t.log), t.info || (t.info = t.log), t.warn || (t.warn = t.log), t.error || (t.error = t.log)
        }(), document.addEventListener ? (-1 < navigator.userAgent.indexOf("AppleWebKit/") ? u.timer = window.setInterval(function() {
          /loaded|complete/.test(document.readyState) && (clearInterval(u.timer), l.callOnDOMParsed())
        }, 50) : document.addEventListener("DOMContentLoaded", l.callOnDOMParsed, !1), window.addEventListener("load", l.callOnDOMLoaded, !1)) : (setTimeout(function() {
          var e = window.document;
          ! function() {
            try {
              if (!document.body) throw "continue";
              e.documentElement.doScroll("left")
            } catch (e) {
              return setTimeout(arguments.callee, 15)
            }
            window[ensightenOptions.ns].callOnDOMParsed()
          }()
        }, 1), window.attachEvent("onload", function() {
          window[ensightenOptions.ns].callOnDOMLoaded()
        })), "true" === u.options.enableTagAuditBeacon && l.sampleBeacon() && window.setTimeout(function() {
          if (window[ensightenOptions.ns] && !window[ensightenOptions.ns].mobilePlatform) try {
            for (var e, t, n, i, o = [], r = 0; r < u.ruleList.length; ++r) n = (t = u.ruleList[r]).executionData.hasRun ? "1" : "0", i = t.deploymentId.toString() + "|" + t.id.toString() + "|" + n, o.push(i);
            e = "[" + o.join(";") + "]";
            var a = window.location.protocol + "//" + u.nexus + "/" + encodeURIComponent(c.client) + "/" + encodeURIComponent(c.publishPath) + "/TagAuditBeacon.rnc?cid=" + encodeURIComponent(c.clientId) + "&data=" + e + "&idx=0&r=" + u.rand;
            l.imageRequest(a)
          } catch (e) {
            l.currentRuleId = -1, l.currentDeploymentId = -1;
            var s = new u.BeaconException(e);
            window[ensightenOptions.ns].reportException(s)
          }
        }, 3e3), window.setInterval(l.testAll, u.options.interval), l
    }(ensightenOptions), "true" === ensightenOptions.enablePagePerfBeacon && window[ensightenOptions.ns] && window[ensightenOptions.ns].sampleBeacon() && window[ensightenOptions.ns].bindDOMParsed(function() {
      ! function() {
        if (!window[ensightenOptions.ns].mobilePlatform) {
          var e = window.performance;
          if (!e) return;
          var t, n = e.timing || {},
            i = "",
            o = n.navigationStart || 0,
            r = {
              connectEnd: "ce",
              connectStart: "cs",
              domComplete: "dc",
              domContentLoadedEventEnd: "dclee",
              domContentLoadedEventStart: "dcles",
              domInteractive: "di",
              domLoading: "dl",
              domainLookupEnd: "dle",
              domainLookupStart: "dls",
              fetchStart: "fs",
              loadEventEnd: "lee",
              loadEventStart: "les",
              redirectEnd: "rede",
              redirectStart: "reds",
              requestStart: "reqs",
              responseStart: "resps",
              responseEnd: "respe",
              secureConnectionStart: "scs",
              unloadEventStart: "ues",
              unloadEventEnd: "uee"
            };
          for (var a in i = "&ns=" + encodeURIComponent(n.navigationStart), r) void 0 !== n[a] ? (t = n[a] - o, i += "&" + r[a] + "=" + (0 < t ? encodeURIComponent(t) : 0)) : i += "&" + r[a] + "=-1";
          window[ensightenOptions.ns].timing = i;
          var s = ensightenOptions.nexus || "nexus.ensighten.com",
            c = ensightenOptions.staticJavascriptPath || "",
            u = c.indexOf(".com/"),
            l = c.indexOf("/code/"),
            d = c.substring(u + 4, l) + "/perf.rnc";
          d += "?cid=" + encodeURIComponent(ensightenOptions.clientId) + window[ensightenOptions.ns].timing, window[ensightenOptions.ns].imageRequest("//" + s + d)
        }
      }()
    }), window[ensightenOptions.ns].data || (window.JSON && "object" == typeof JSON || (window[ensightenOptions.ns].JSON = {}), function() {
      "use strict";
      var JSON = window.JSON ? window.JSON : window[ensightenOptions.ns].JSON;
  
      function f(e) {
        return e < 10 ? "0" + e : e
      }
      "function" != typeof Date.prototype.toJSON && (Date.prototype.toJSON = function() {
        return isFinite(this.valueOf()) ? this.getUTCFullYear() + "-" + f(this.getUTCMonth() + 1) + "-" + f(this.getUTCDate()) + "T" + f(this.getUTCHours()) + ":" + f(this.getUTCMinutes()) + ":" + f(this.getUTCSeconds()) + "Z" : null
      }, String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function() {
        return this.valueOf()
      });
      var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        gap, indent, meta = {
          "\b": "\\b",
          "\t": "\\t",
          "\n": "\\n",
          "\f": "\\f",
          "\r": "\\r",
          '"': '\\"',
          "\\": "\\\\"
        },
        rep;
  
      function quote(e) {
        return escapable.lastIndex = 0, escapable.test(e) ? '"' + e.replace(escapable, function(e) {
          var t = meta[e];
          return "string" == typeof t ? t : "\\u" + ("0000" + e.charCodeAt(0).toString(16)).slice(-4)
        }) + '"' : '"' + e + '"'
      }
  
      function str(e, t) {
        var n, i, o, r, a, s = gap,
          c = t[e];
        switch (c && "object" == typeof c && "function" == typeof c.toJSON && (c = c.toJSON(e)), "function" == typeof rep && (c = rep.call(t, e, c)), typeof c) {
          case "string":
            return quote(c);
          case "number":
            return isFinite(c) ? String(c) : "null";
          case "boolean":
          case "null":
            return String(c);
          case "object":
            if (!c) return "null";
            if (gap += indent, a = [], "[object Array]" === Object.prototype.toString.apply(c)) {
              for (r = c.length, n = 0; n < r; n += 1) a[n] = str(n, c) || "null";
              return o = 0 === a.length ? "[]" : gap ? "[\n" + gap + a.join(",\n" + gap) + "\n" + s + "]" : "[" + a.join(",") + "]", gap = s, o
            }
            if (rep && "object" == typeof rep)
              for (r = rep.length, n = 0; n < r; n += 1) "string" == typeof rep[n] && (o = str(i = rep[n], c)) && a.push(quote(i) + (gap ? ": " : ":") + o);
            else
              for (i in c) Object.prototype.hasOwnProperty.call(c, i) && (o = str(i, c)) && a.push(quote(i) + (gap ? ": " : ":") + o);
            return o = 0 === a.length ? "{}" : gap ? "{\n" + gap + a.join(",\n" + gap) + "\n" + s + "}" : "{" + a.join(",") + "}", gap = s, o
        }
      }
      "function" != typeof JSON.stringify && (JSON.stringify = function(e, t, n) {
        var i;
        if (indent = gap = "", "number" == typeof n)
          for (i = 0; i < n; i += 1) indent += " ";
        else "string" == typeof n && (indent = n);
        if ((rep = t) && "function" != typeof t && ("object" != typeof t || "number" != typeof t.length)) throw new Error("JSON.stringify");
        return str("", {
          "": e
        })
      }), "function" != typeof JSON.parse && (JSON.parse = function(text, reviver) {
        var j;
  
        function walk(e, t) {
          var n, i, o = e[t];
          if (o && "object" == typeof o)
            for (n in o) Object.prototype.hasOwnProperty.call(o, n) && (void 0 !== (i = walk(o, n)) ? o[n] = i : delete o[n]);
          return reviver.call(e, t, o)
        }
        if (text = String(text), cx.lastIndex = 0, cx.test(text) && (text = text.replace(cx, function(e) {
            return "\\u" + ("0000" + e.charCodeAt(0).toString(16)).slice(-4)
          })), /^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) return j = eval("(" + text + ")"), "function" == typeof reviver ? walk({
          "": j
        }, "") : j;
        throw new SyntaxError("JSON.parse")
      })
    }(), window[ensightenOptions.ns].when = function() {
      function h(e, t, n, i) {
        return s(e).then(t, n, i)
      }
  
      function a(e) {
        this.then = e
      }
  
      function s(t) {
        return l(function(e) {
          e(t)
        })
      }
  
      function l(e) {
        var s, c = [];
        try {
          e(t, n, function(e) {
            c && i(c, function i(o) {
              var r = new a(function(e, t, n) {
                try {
                  return "function" == typeof n ? i(n(o)) : r
                } catch (e) {
                  return i(e)
                }
              });
              return r
            }(e))
          })
        } catch (e) {
          n(e)
        }
        return new a(function(o, r, a) {
          return l(function(t, n, i) {
            c ? c.push(function(e) {
              e.then(o, r, a).then(t, n, i)
            }) : D(function() {
              s.then(o, r, a).then(t, n, i)
            })
          })
        });
  
        function t(e) {
          c && (s = o(e), i(c, s), c = O)
        }
  
        function n(e) {
          t(u(e))
        }
      }
  
      function o(o) {
        return o instanceof a ? o : o !== Object(o) ? r(o) : l(function(t, n, i) {
          D(function() {
            try {
              var e = o.then;
              "function" == typeof e ? g(e, o, t, n, i) : t(r(o))
            } catch (e) {
              n(e)
            }
          })
        })
      }
  
      function r(t) {
        var n = new a(function(e) {
          try {
            return "function" == typeof e ? o(e(t)) : n
          } catch (e) {
            return u(e)
          }
        });
        return n
      }
  
      function u(n) {
        var i = new a(function(e, t) {
          try {
            return "function" == typeof t ? o(t(n)) : i
          } catch (e) {
            return u(e)
          }
        });
        return i
      }
  
      function i(n, i) {
        D(function() {
          for (var e, t = 0; e = n[t++];) e(i)
        })
      }
  
      function c(e, g, t, n, i) {
        return x(2, arguments), h(e, function(f) {
          return l(function(t, n, e) {
            var i, o, r, a, s, c, u, l;
            if (u = f.length >>> 0, i = Math.max(0, Math.min(g, u)), r = [], o = u - i + 1, a = [], i)
              for (c = function(e) {
                  a.push(e), --o || (s = c = S, n(a))
                }, s = function(e) {
                  r.push(e), --i || (s = c = S, t(r))
                }, l = 0; l < u; ++l) l in f && h(f[l], p, d, e);
            else t(r);
  
            function d(e) {
              c(e)
            }
  
            function p(e) {
              s(e)
            }
          }).then(t, n, i)
        })
      }
  
      function n(e, t, n, i) {
        return x(1, arguments), d(e, C).then(t, n, i)
      }
  
      function d(e, u) {
        return h(e, function(c) {
          return l(function(n, i, o) {
            var r, e, a, t, s;
            if (a = e = c.length >>> 0, r = [], a)
              for (t = function(e, t) {
                  h(e, u).then(function(e) {
                    r[t] = e, --a || n(r)
                  }, i, o)
                }, s = 0; s < e; s++) s in c ? t(c[s], s) : --a;
            else n(r)
          })
        })
      }
      var p, f, g, t, v, w, e, m, y, O;
  
      function D(e) {
        1 === v.push(e) && t(b)
      }
  
      function b() {
        for (var e, t = 0; e = v[t++];) e();
        v = []
      }
  
      function x(e, t) {
        for (var n, i = t.length; e < i;)
          if (null != (n = t[--i]) && "function" != typeof n) throw new Error("arg " + i + " must be a function")
      }
  
      function S() {}
  
      function C(e) {
        return e
      }
      return h.defer = function() {
        var e, o, r;
        return (e = {
          promise: O,
          resolve: O,
          reject: O,
          notify: O,
          resolver: {
            resolve: O,
            reject: O,
            notify: O
          }
        }).promise = o = l(function(t, n, i) {
          e.resolve = e.resolver.resolve = function(e) {
            return r ? s(e) : (r = !0, t(e), o)
          }, e.reject = e.resolver.reject = function(e) {
            return r ? s(u(e)) : (r = !0, n(e), o)
          }, e.notify = e.resolver.notify = function(e) {
            return i(e), e
          }
        }), e
      }, h.resolve = s, h.reject = function(e) {
        return h(e, u)
      }, h.join = function() {
        return d(arguments, C)
      }, h.all = n, h.map = d, h.reduce = function(e, r) {
        var t = g(f, arguments, 1);
        return h(e, function(e) {
          var o;
          return o = e.length, t[0] = function(e, n, i) {
            return h(e, function(t) {
              return h(n, function(e) {
                return r(t, e, i, o)
              })
            })
          }, p.apply(e, t)
        })
      }, h.any = function(e, t, n, i) {
        return c(e, 1, function(e) {
          return t ? t(e[0]) : e[0]
        }, n, i)
      }, h.some = c, h.isPromise = function(e) {
        return e && "function" == typeof e.then
      }, a.prototype = {
        otherwise: function(e) {
          return this.then(O, e)
        },
        ensure: function(e) {
          return this.then(t, t).yield(this);
  
          function t() {
            return s(e())
          }
        },
        yield: function(e) {
          return this.then(function() {
            return e
          })
        },
        spread: function(t) {
          return this.then(function(e) {
            return n(e, function(e) {
              return t.apply(O, e)
            })
          })
        },
        always: function(e, t) {
          return this.then(e, e, t)
        }
      }, v = [], w = setTimeout, t = "function" == typeof setImmediate ? "undefined" == typeof window ? setImmediate : setImmediate.bind(window) : "object" == typeof process && process.nextTick ? process.nextTick : function(e) {
        w(e, 0)
      }, m = (e = Function.prototype).call, g = e.bind ? m.bind(m) : function(e, t) {
        return e.apply(t, f.call(arguments, 2))
      }, f = (y = []).slice, p = y.reduce || function(e) {
        var t, n, i, o, r;
        if (r = 0, o = (t = Object(this)).length >>> 0, (n = arguments).length <= 1)
          for (;;) {
            if (r in t) {
              i = t[r++];
              break
            }
            if (++r >= o) throw new TypeError
          } else i = n[1];
        for (; r < o; ++r) r in t && (i = e(i, t[r], r, t));
        return i
      }, h
    }(), function() {
      var o, r;
  
      function a(t, e) {
        return o.all(e || [], function(e) {
          return t.apply(null, e)
        })
      }
  
      function e(e) {
        var t = r.call(arguments, 1);
        return function() {
          return a(e, t.concat(r.call(arguments)))
        }
      }
      o = window[ensightenOptions.ns].when, r = [].slice, o.apply = a, o.call = function(e) {
        return a(e, r.call(arguments, 1))
      }, o.lift = e, o.bind = e, o.compose = function(n) {
        var i = r.call(arguments, 1);
        return function() {
          var e = r.call(arguments),
            t = a(n, e);
          return o.reduce(i, function(e, t) {
            return t(e)
          }, t)
        }
      }
    }(), window[ensightenOptions.ns].data = function(window, undefined) {
      var _private = {
          engines: {
            memory: {
              get: function(e) {
                if (_public.utils.isArray(e)) {
                  for (var t = [], n = 0; n < e.length; n++) t.push(_private.data[e[n]]);
                  return window[ensightenOptions.ns].when.resolve(t)
                }
                var i = _private.dataDefinitions[e] || {
                    storage: {
                      get: function() {}
                    }
                  },
                  o = i.storage.get(i);
                return _private.data[e] = o, window[ensightenOptions.ns].when.resolve(_private.data[e])
              },
              set: function(e, t) {
                if (_public.utils.isArray(e)) {
                  for (var n in e) _private.data[e[n]] = t[n];
                  return window[ensightenOptions.ns].when.resolve(!0)
                }
                return _private.data[e] = t, window[ensightenOptions.ns].when.resolve(!0)
              },
              remove: function(e) {
                if (_public.utils.isArray(e)) {
                  for (var t in e) delete _private.data[e[t]];
                  return window[ensightenOptions.ns].when.resolve(!0)
                }
                return delete _private.data[e], window[ensightenOptions.ns].when.resolve(!0)
              },
              clear: function(e) {
                return _private.data = {}, _private.definitions = {}, window[ensightenOptions.ns].when.resolve(!0)
              },
              all: function() {
                return window[ensightenOptions.ns].when.resolve(_private.data)
              }
            }
          },
          normalizeInputArgs: function(e, t) {
            var n, i = {
              key: [],
              val: undefined
            };
            if (_public.utils.isPlainObject(e))
              for (n in i.val = [], e) i.key.push(n), i.val.push(e[n]);
            else _public.utils.isArray(e), i.key = e, i.val = t;
            return i
          },
          definitions: {},
          data: {}
        },
        _public = {
          utils: {
            isPlainObject: function(e) {
              return !!e && "[object Object]" === Object.prototype.toString.call(e)
            },
            isArray: function(e) {
              return "[object Array]" === Object.prototype.toString.call(e)
            },
            escapeRegEx: function(t) {
              try {
                return t.replace(/([.*+?^${}()|\[\]\/\\])/g, "\\$1")
              } catch (e) {
                return t
              }
            }
          }
        },
        noop = function() {
          return window[ensightenOptions.ns].when.reject("Not Implemented.")
        };
  
      function DataDefinitionException(e, t) {
        this.name = "DataDefinitionException", this.message = t || "Data definitions cannot be resolved as there are invalid id(s): " + e
      }
      if (DataDefinitionException.prototype = new Error, DataDefinitionException.prototype || (DataDefinitionException.prototype = {}), DataDefinitionException.prototype.constructor = DataDefinitionException, _private.DataDefinitionException = DataDefinitionException, _private.checkForInvalidDataDefinitions = function(e) {
          if (_public.utils.isArray(e) || (e = [e]), e && 0 < e.length) {
            var t = e.join(",");
            if (-1 < t.indexOf("invalid_id")) return window[ensightenOptions.ns].reportException(new _private.DataDefinitionException(t)), !0
          }
          return !1
        }, _private.collectAvailableDataDefinitions = function(e) {
          for (var t = [], n = 0; n < e.length; n++) {
            var i = parseInt(e[n], 10),
              o = window[ensightenOptions.ns].dataDefinitions[i];
            if (null === o || o === undefined) {
              var r = {
                  id: i
                },
                a = _public.storage.session.get(r);
              if (null === a || a === undefined) return window[ensightenOptions.ns].reportException(new _private.DataDefinitionException(e, "Invalid data definition used: " + i)), {
                promises: [],
                isInvalid: !0
              };
              _public.set(i, a);
              var s = _public.storage.visitor;
              _private.dataDefinitions[i] = {
                id: i,
                load: "visitor",
                storage: s,
                missingDDFromCache: !0
              }, t.push(window[ensightenOptions.ns].data.get("" + i))
            } else t.push(window[ensightenOptions.ns].data.get(e[n]))
          }
          return {
            promises: t,
            isInvalid: !1
          }
        }, _private.getSync = function(e) {
          var a = [],
            s = function() {
              return document
            },
            c = function(e) {
              return null !== e && e !== undefined ? e.toString() : null
            };
          var t = parseInt(e),
            n = "string" == typeof e ? e.split(".") : [],
            i = {},
            o = "";
          return isNaN(t) ? 3 == n.length && (i = _public.getDataDefinitionBySourceCollectionName(n[0], n[1], n[2])) : i = _public.getDataDefinitionById(t), o = i.load && i.load.match(/(session|visitor)/i) && i.storage && i.storage.get ? i.storage.get(i) : function(e) {
            var t = e.extract || s,
              n = e.transform || c,
              i = !1,
              o = null,
              r = null;
            try {
              o = t()
            } catch (e) {
              i = !(o = null)
            }
            try {
              r = n(o)
            } catch (e) {
              i = !(r = null)
            }
            return i && a.push(e.id), r
          }(i), 0 < a.length && window[ensightenOptions.ns].reportException(new _private.DataDefinitionException(a, "Error resolving data definitions synchronously: " + a)), o
        }, _private.dataDefinitions = {}, _private.dataDefinitionsBySourceCollName = {}, _public.defineEngine = function(e, t) {
          var n, i = ["get", "set", "remove", "clear", "all"];
          if (!(_private.engines[e] = t).returnsPromise)
            for (n = 0; n < i.length; n++) {
              var o = i[n];
              t[o] = window[ensightenOptions.ns].when.lift(t[o])
            }
        }, _public.storage = {
          instance: {
            set: function(e, t) {},
            get: function(e) {
              return _private.getSync(e.id)
            }
          },
          page: {
            set: function(e, t) {},
            get: function(e) {
              return _private.data[e.id]
            }
          },
          session: {
            set: function(e, t) {
              var n = _public.storage.session.get({
                  id: e
                }),
                i = new Date,
                o = i.getTime();
              o += 18e5, i.setTime(o), null != n && (t = n), window[ensightenOptions.ns].data.cookie.utils.set(e, t, {
                expires: i.toGMTString()
              });
              var r = {
                expires: i.getTime(),
                value: t
              };
              window[ensightenOptions.ns].data.local.utils.set(e, r)
            },
            get: function(e) {
              var t, n = window[ensightenOptions.ns].data.cookie.utils.get(e.id),
                i = window.JSON && window.JSON.stringify ? window.JSON : window[ensightenOptions.ns].JSON;
              i = i || {};
              var o = new Date;
              if (o = o.getTime(), null === n) {
                try {
                  t = i.parse(window[ensightenOptions.ns].data.local.utils.get(e.id))
                } catch (e) {
                  t = null
                }
                null != t && (t.expires = +t.expires, o <= t.expires ? n = t.value : "" == t.expires && t.value != undefined ? n = t.value : window[ensightenOptions.ns].data.local.utils.remove(e.id))
              }
              return n
            }
          },
          visitor: {
            set: function(e, t) {
              var n = _public.storage.session.get({
                id: e
              });
              null != n && (t = n), window[ensightenOptions.ns].data.cookie.utils.set(e, t);
              var i = {
                expires: "",
                value: t
              };
              window[ensightenOptions.ns].data.local.utils.set(e, i)
            },
            get: function(e) {
              return _public.storage.session.get(e)
            }
          }
        }, _public.getEngine = _public.engine = function(e) {
          return e ? _private.engines[e] || {
            get: noop,
            set: noop,
            remove: noop,
            clear: noop,
            all: noop
          } : _private.engines
        }, _public.all = function(e) {
          return e = e || "memory", window[ensightenOptions.ns].data.engine(e).all()
        }, _public.get = function(e, t, n) {
          var i, o;
          return t = t || "memory", n = n || {}, -1 < e.indexOf(",") ? (i = e.split(","), o = _private.normalizeInputArgs(i)) : o = _private.normalizeInputArgs(e), n.wait ? _private.getWait(o.key, window[ensightenOptions.ns].data.engine(t), n) : !!_private.data && _private.data.hasOwnProperty(o.key) ? window[ensightenOptions.ns].data.engine(t).get(o.key) : _private.getWaitForKey(o.key, window[ensightenOptions.ns].data.engine(t), n)
        }, _private.getWait = function(t, n, i) {
          var o = +new Date,
            r = window[ensightenOptions.ns].when.defer(),
            a = function() {
              var e = n.get(t);
              if (-1 === i.wait) return e;
              e.then(function(e) {
                i.setCheck(e) ? r.resolve(e) : setTimeout(s, i.interval)
              }, function(e) {
                setTimeout(s, i.interval)
              })
            },
            s = function() {
              var e = +new Date - o; - 1 !== i.wait && e < i.wait ? a() : r.reject("Timeout")
            };
          return i.interval = i.interval || 500, i.wait = i.wait || 5e3, _public.utils.isArray(t) ? i.setCheck = i.setCheck || function(e) {
            for (var t = !0, n = 0; n < e.length; n++) t = t && !!e[n];
            return t
          } : i.setCheck = i.setCheck || function(e) {
            return !!e
          }, a(), r.promise
        }, _private.getWaitForKey = function(t, n, i) {
          var o = window[ensightenOptions.ns].when.defer(),
            e = function() {
              if (!!_private.data && _private.data.hasOwnProperty(t)) {
                var e = n.get(t);
                if (-1 === i.wait) return e;
                e.then(function(e) {
                  o.resolve(e)
                }, function(e) {
                  o.reject(e)
                })
              } else setTimeout(r, i.interval)
            },
            r = function() {
              e()
            };
          return i.interval = i.interval || 100, i.wait = i.wait || 1, e(), o.promise
        }, _public.set = function(e, t, n) {
          var i = _private.normalizeInputArgs(e, t);
          Array.prototype.slice.call(arguments);
          return n = n || "memory", window[ensightenOptions.ns].data.engine(n).set(i.key, i.val)
        }, _public.remove = function(e, t) {
          return t = t || "memory", window[ensightenOptions.ns].data.engine(t).remove(e)
        }, _public.clear = function(e) {
          return e = e || "memory", window[ensightenOptions.ns].data.engine(e).clear()
        }, _public.define = function(o, e) {
          if (e && (o.name = e.id || e.name), !o.name) return window[ensightenOptions.ns].when.reject(new Error("Invalid parameters: missing 'name'"));
          o.id = o.name;
          var t = o.load || "page";
          o.load = o.load || "javascript", o.load = -1 < o.load.indexOf("javascript") ? o.load : o.load + ",javascript", o.trigger = o.trigger || function() {
            return window[ensightenOptions.ns].when.resolve()
          }, o.priv = o.priv || !1, o.collection = o.collection || "Data Layer", o.persist = window[ensightenOptions.ns].data.engine("memory"), o.storage = _public.storage[t.toLowerCase()] || _public.storage.page;
          var n = o.extract || function() {
              return document
            },
            i = o.transform || function(e) {
              return e
            },
            r = function(e, t) {
              var n = [];
              n.push(o.persist.set(e, t)), o.storage.set(o.id, t), "object" == typeof window[ensightenOptions.ns].data.dataExport && window[ensightenOptions.ns].data.dataExport(e, t, o.collection), window[ensightenOptions.ns].when.all(n).then(function(e) {
                a.resolve(e)
              }, function(e) {
                a.reject(e)
              })
            },
            a = window[ensightenOptions.ns].when.defer();
          o.trigger().then(function() {
            a.resolve(window[ensightenOptions.ns].when.reduce([n(), i, r], function(e, t, n, i) {
              if (1 == n) return t(e);
              2 == n && t(o.name, e)
            }))
          }, function(e) {
            a.reject(e)
          });
          var s = (_private.dataDefinitions[o.id] = o).source + "." + o.collection + "." + o.dataDefName;
          return _private.dataDefinitionsBySourceCollName[s] = o, a.promise
        }, _public.checkConditions = function(e) {
          var i = {
            lt: function(e, t) {
              var n = +e,
                i = +t;
              return isNaN(n) || isNaN(i) ? (window[ensightenOptions.ns].reportException(new _private.DataDefinitionException(null, "Value(s) cannot be converted to number: compareWith: " + e + ", compareTo: " + t)), !1) : n < i
            },
            gt: function(e, t) {
              var n = +e,
                i = +t;
              return isNaN(n) || isNaN(i) ? (window[ensightenOptions.ns].reportException(new _private.DataDefinitionException(null, "Value(s) cannot be converted to number: compareWith: " + e + ", compareTo: " + t)), !1) : i < n
            },
            eql: function(e, t) {
              return e == t
            },
            exists: function(e, t) {
              return null != e && e != undefined && "" != e
            },
            re: function(e, t, n) {
              var i = new RegExp(t, n ? "i" : "");
              try {
                return e.match(i)
              } catch (e) {
                return !1
              }
            },
            starts: function(e, t, n) {
              return t = _public.utils.escapeRegEx(t), i.re(e, "^" + t, n)
            },
            ends: function(e, t, n) {
              return t = _public.utils.escapeRegEx(t), i.re(e, t + "$", n)
            },
            contains: function(e, t, n) {
              return t = _public.utils.escapeRegEx(t), i.re(e, ".*" + t + ".*", n)
            }
          };
          i.is = i.eql, i["starts with"] = i.starts, i["ends with"] = i.ends, i["is greater than"] = i.gt, i["is less than"] = i.lt, i.matches = i.re;
          for (var t = 0; t < e.values.length; t++) {
            var n = (e.customComparator && e.customComparator[t] ? e.customComparator[t] : i[e.comparators[t]])(e.values[t], e.compareTo[t], e.caseInsensitive && e.caseInsensitive[t] || !1);
            if (e.not[t] && (n = !n), !n) return !1
          }
          return !0
        }, _public.triggerPromise = function(t, n, i) {
          i = i || 5e3;
          var o = +new Date,
            r = window[ensightenOptions.ns].when.defer();
          return function() {
            var e = t();
            e != n ? r.resolve(e) : +new Date - o < i ? setTimeout(arguments.callee, 200) : r.reject("timed out")
          }(), r.promise
        }, _public.timeoutPromise = function(e, t) {
          var n = window[ensightenOptions.ns].when.defer();
          t = t || 800;
          return e.then(n.resolve, n.reject), setTimeout(function() {
            n.reject(new Error("timed out"))
          }, t), n.promise
        }, _public.delayTrigger = function(e) {
          e = e || 10;
          var t = window[ensightenOptions.ns].when.defer();
          return setTimeout(function() {
            t.resolve()
          }, e), t.promise
        }, _public.delayUntilTrigger = function(t, n, i, o) {
          i = i || null, o = o || 200;
          var r = +new Date,
            a = window[ensightenOptions.ns].when.defer();
          return function() {
            var e = t();
            e != n ? a.resolve(e) : i ? +new Date - r < i ? setTimeout(arguments.callee, o) : a.reject("timed out") : setTimeout(arguments.callee, o)
          }(), a.promise
        }, _private.applyTrigger = function(e) {
          var t = window[ensightenOptions.ns].when.defer();
          return e(function() {
            t.resolve(!0)
          }), t.promise
        }, _public.bottomOfBodyTrigger = function() {
          return _private.applyTrigger(window[ensightenOptions.ns].bindDOMParsed)
        }, _public.afterEnsightenCompleteTrigger = function() {
          return _private.applyTrigger(window[ensightenOptions.ns].bindPageSpecificCompletion)
        }, _public.afterElementsDownloadedTrigger = function() {
          return _private.applyTrigger(window[ensightenOptions.ns].bindDOMLoaded)
        }, _public.getAllDataDefinitionsOnCurrentPage = function() {
          return _private.dataDefinitions
        }, _public.getAllDataDefinitionsOnCurrentPage_S_C_N = function() {
          return _private.dataDefinitionsBySourceCollName
        }, _public.getDataDefinitionById = function(e) {
          return e = e || -1, _private.dataDefinitions[e] || {}
        }, _public.getDataDefinitionBySourceCollectionName = function(e, t, n) {
          var i = e + "." + t + "." + n;
          return _private.dataDefinitionsBySourceCollName[i] || {}
        }, _public.getDataDefinitionByPercentSyntax = function(e) {
          var t = (e = "" + e).split("_");
          if (t.length < 1) return {};
          var n = t[1];
          return _private.dataDefinitions[n] || {}
        }, _public.resolve = function(n, i) {
          var o = this;
          if (!_private.checkForInvalidDataDefinitions(n)) {
            if (!i) {
              var e = [],
                t = n;
              if (!_public.utils.isArray(n)) t = [n];
              for (var r = 0; r < t.length; r++) e.push(_private.getSync(t[r]));
              return _public.utils.isArray(n) ? e : e[0]
            }
            window[ensightenOptions.ns].bindDataDefinitionComplete(function() {
              var e = _private.collectAvailableDataDefinitions(n);
              if (!e.isInvalid) {
                var t = e.promises;
                window[ensightenOptions.ns].when.all(t).then(function(e) {
                  try {
                    i.apply(o, e)
                  } catch (e) {
                    window[ensightenOptions.ns].reportException(new _private.DataDefinitionException(n, "Error resolving data definitions: " + n + ". Details: " + e))
                  }
                }, function(e) {
                  window[ensightenOptions.ns].reportException(new _private.DataDefinitionException(n, "Error resolving data definitions: " + n + ". Details: " + e))
                })
              }
            })
          }
        }, _public.extract = function(g, t) {
          var value = "",
            getElementByXPathStep = function(e, t) {
              var n = ~t.indexOf("#") ? t.split("#")[1] : "",
                i = n ? 0 : ~t.indexOf("[") ? parseInt(t.match(/\[(\d+)\]/)[1]) : 0,
                o = (n ? t.split("#")[0] : i ? t.split("[")[0] : t).toLowerCase();
              if (e == document && "html" == o && 0 == i) return document.getElementsByTagName("html")[0];
              if (~t.indexOf("#")) return document.getElementById(t.split("#")[1]);
              var r = e.firstChild;
              if (!r) return null;
              var a = 0;
              for (i = 0 != i ? i - 1 : i; r;) {
                if (1 == r.nodeType) {
                  if (r.tagName.toLowerCase() == o && "" != n && r.id == n) return r;
                  if (r.tagName.toLowerCase() == o && a == i && "" == n) return r;
                  r.tagName.toLowerCase() == o && a++
                }
                r = r.nextSibling
              }
            },
            getElementByXPath = function(e, t) {
              e = e.split("/");
              for (var n = getElementByXPathStep(t || document, e[1]), i = 2; i < e.length; i++) {
                if (null == n) return null;
                n = getElementByXPathStep(n, e[i])
              }
              return n
            },
            getMetaCache = function() {
              for (var e = {}, t = window.document.getElementsByTagName("META") || [], n = 0, i = t.length; n < i; n++) {
                var o = t[n].name || t[n].getAttribute("property") || "";
                0 !== o.length && (e[o] = t[n].content)
              }
              return e
            }(),
            getMeta = function(e) {
              var t = getMetaCache[e];
              if (t) return t;
              for (var n = window.document.getElementsByTagName("META") || [], i = 0, o = n.length; i < o; i++) {
                if (e == (n[i].name || n[i].getAttribute("property") || "")) return n[i].content
              }
            },
            getParam = function(e) {
              return (val = new RegExp("&" + e + "=([^&]*)").exec(window.location.search.replace(/^\?/, "&"))) ? val[0].split("=")[1] : ""
            },
            getCookie = function(e) {
              return (val = new RegExp("^" + e + "=.*|;\\s*" + e + "=.*").exec(window.document.cookie)) ? val[0].split("=")[1].split(";")[0] : ""
            },
            getContent = function(e) {
              var t = getElement(e);
              return t && t.nodeType && 1 == t.nodeType && (t = t.value || t.innerHTML || ""), t.toString().replace(/\n|\r|\s\s+/g, "") || ""
            },
            getElement = function(x) {
              var n = "";
              if (0 == x.indexOf("/HTML/BODY")) n = getElementByXPath(x);
              else try {
                n = eval(x)
              } catch (e) {
                n = ""
              }
              return n
            };
          try {
            return t ? "meta" == t ? value = getMeta(g) : "cookie" == t ? value = getCookie(g) : "param" == t ? value = getParam(g) : "content" == t ? value = getContent(g) : "event" == t ? value = getElement(g) : "var" == t && (value = window[g]) : value = getMeta(g) || getCookie(g) || getParam(g) || getContent(g) || getElement(g) || window[g] || "", value || ""
          } catch (e) {
            return ""
          }
        }, void 0 === module) var module = {
          exports: {}
        },
        exports = module.exports;
      return exports = _public, _public
    }(window), window[ensightenOptions.ns].data.defineEngine("store", function() {
      var r, a = {},
        e = window,
        t = e.document,
        s = "localStorage",
        n = "globalStorage",
        c = Array.isArray || function(e) {
          return "[object Array]" === Object.prototype.toString.call(e)
        };
      a.set = function(e, t) {}, a.get = function(e) {}, a.remove = function(e) {}, a.clear = function() {};
      try {
        if (s in e && e[s]) r = e[s], a.set = function(e, t) {
          var n, i, o = window.JSON && window.JSON.stringify ? window.JSON : window[ensightenOptions.ns].JSON;
          if (c(e))
            for (n = 0, i = e.length; n < i; n++) r.setItem(e[n], "string" == typeof t[n] ? t[n] : o.stringify(t[n]));
          else r.setItem(e, "string" == typeof t ? t : o.stringify(t))
        }, a.get = function(e) {
          if (c(e)) {
            var t, n, i = {};
            for (t = 0, n = e.length; t < n; t++) i[e[t]] = r.getItem(e[t]);
            return i
          }
          return r.getItem(e)
        }, a.remove = function(e) {
          var t, n;
          if (c(e))
            for (t = 0, n = e.length; t < n; t++) r.removeItem(e[t]);
          else r.removeItem(e)
        }, a.clear = function() {
          r.clear()
        }, a.all = function() {
          return r
        };
        else if (n in e && e[n]) r = e[n][e.location.hostname], a.set = function(e, t) {
          var n, i;
          if (c(e))
            for (n = 0, i = e.length; n < i; n++) r[e[n]] = t[n];
          else r[e] = t
        }, a.get = function(e) {
          if (c(e)) {
            var t, n, i = {};
            for (t = 0, n = e.length; t < n; t++) i[e[t]] = r[e[t]] && r[e[t]].value;
            return i
          }
          return r[e] && r[e].value
        }, a.remove = function(e) {
          var t, n;
          if (c(e))
            for (t = 0, n = e.length; t < n; t++) delete r[e[t]];
          else delete r[e]
        }, a.clear = function() {
          for (var e in r) delete r[e]
        }, a.all = function() {
          return r
        };
        else if (t.documentElement.addBehavior) {
          var i, o;
          try {
            (o = new ActiveXObject("htmlfile")).open(), o.write('<script>document.w=window<\/script><iframe src="/favicon.ico"></frame>'), o.close(), i = o.w.frames[0].document, r = i.createElement("div")
          } catch (e) {
            r = t.createElement("div"), i = t.body
          }
  
          function u(n) {
            return function() {
              var e = Array.prototype.slice.call(arguments, 0);
              e.unshift(r), i.appendChild(r), r.addBehavior("#default#userData"), r.load(s);
              var t = n.apply(store, e);
              return i.removeChild(r), t
            }
          }
          var l = new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]", "g");
  
          function d(e) {
            return e.replace(l, "___")
          }
          a.set = u(function(e, t, n) {
            if (c(t)) {
              var i, o;
              for (i = 0, o = t.length; i < o; i++) {
                if (fixedKey = d(t[i]), void 0 === n[i]) return a.remove(fixedKey);
                e.setAttribute(fixedKey, n[i]), e.save(s)
              }
            } else {
              if (fixedKey = d(t), void 0 === n) return a.remove(fixedKey);
              e.setAttribute(fixedKey, n), e.save(s)
            }
          }), a.get = u(function(e, t) {
            if (c(t)) {
              var n, i, o, r = {};
              for (i = 0, o = t.length; i < o; i++) n = d(t[i]), r[t[i]] = e.getAttribute(n);
              return r
            }
            return t = d(t), e.getAttribute(t)
          }), a.remove = u(function(e, t) {
            var n, i;
            if (c(t))
              for (n = 0, i = t.length; n < i; n++) e.removeAttribute(d(t[n])), e.save(s);
            else t = d(t), e.removeAttribute(t), e.save(s)
          }), a.clear = u(function(e) {
            var t = e.XMLDocument.documentElement.attributes;
            e.load(s);
            for (var n, i = 0; n = t[i]; i++) e.removeAttribute(n.name);
            e.save(s)
          }), a.all = u(function(e) {
            for (var t, n = e.XMLDocument.documentElement.attributes, i = {}, o = 0; t = n[o]; ++o) {
              var r = d(t.name);
              i[t.name] = e.getAttribute(r)
            }
            return i
          })
        }
      } catch (e) {}
      var p, f = {};
      for (p in a) f[p] = a[p];
      return f.testStorage = function() {
        try {
          var e = "tk_" + Math.ceil(5e7 * Math.random());
          if (f.set(e, "test"), "test" === f.get(e)) return f.remove(e), !0
        } catch (e) {}
        return !1
      }, a.utils = f, window[ensightenOptions.ns].data.local = a
    }()), window[ensightenOptions.ns].data.defineEngine("cookie", (vo = document, xo = function() {
      return xo.get.apply(xo, arguments)
    }, yo = xo.utils = {
      isArray: Array.isArray || function(e) {
        return "[object Array]" === Object.prototype.toString.call(e)
      },
      isPlainObject: window[ensightenOptions.ns].data.utils.isPlainObject,
      toArray: function(e) {
        return Array.prototype.slice.call(e)
      },
      getKeys: Object.keys || function(e) {
        var t = [],
          n = "";
        for (n in e) e.hasOwnProperty(n) && t.push(n);
        return t
      },
      escape: function(e) {
        return String(e).replace(/[,;"\\=\s%]/g, function(e) {
          return encodeURIComponent(e)
        })
      },
      retrieve: function(e, t) {
        return null == e ? t : e
      },
      getAllCookies: function() {
        if ("" === vo.cookie) return {};
        for (var e = vo.cookie.split("; "), t = {}, n = 0, i = e.length; n < i; n++) {
          var o = e[n].split("=");
          t[decodeURIComponent(o[0])] = decodeURIComponent(o[1])
        }
        return t
      },
      set: function(e, t, n) {
        if (n = n || -1, yo.isPlainObject(e))
          for (var i in e) e.hasOwnProperty(i) && xo.set(i, e[i], t);
        else if (yo.isArray(e)) {
          var o, r;
          for (o = 0, r = e.length; o < r; o++) xo.set(e[o], t[o], n)
        } else {
          var a = n.expires !== wo ? n.expires : xo.defaults.expires || "";
          "number" === typeof a && (a = new Date(a)), a = yo.isPlainObject(a) && "toGMTString" in a ? ";expires=" + a.toGMTString() : yo.isPlainObject(a) && a instanceof Date ? ";expires=" + a.toUTCString() : ";expires=" + a;
          var s = n.path || xo.defaults.path;
          s = s ? ";path=" + s : "";
          var c = n.domain || xo.defaults.domain;
          c = c ? ";domain=" + c : "";
          var u = n.secure || xo.defaults.secure ? ";secure" : "";
          vo.cookie = yo.escape(e) + "=" + yo.escape(t) + a + s + c + u
        }
      },
      get: function(e, t) {
        t = t || wo;
        var n = yo.getAllCookies();
        if (yo.isArray(e)) {
          for (var i = {}, o = 0, r = e.length; o < r; o++) i[e[o]] = yo.retrieve(n[e[o]], t), i[e[o]] === wo && (i[e[o]] = null);
          return i
        }
        return (i = yo.retrieve(n[e], t)) === wo ? null : i
      },
      getGMTString: function(e) {
        var t = new Date;
        return t.setTime(t.getTime() + 24 * e * 60 * 60 * 1e3), t.toGMTString()
      }
    }, xo.defaults = {
      path: "/",
      expires: yo.getGMTString(90)
    }, xo.set = function(e, t) {
      yo.set(e, t)
    }, xo.remove = function(e) {
      for (var t = 0, n = (e = yo.isArray(e) ? e : yo.toArray(arguments)).length; t < n; t++) yo.set(e[t], "", {
        expires: -1
      })
    }, xo.clear = function() {
      return xo.remove(yo.getKeys(yo.getAllCookies()))
    }, xo.get = function(e, t) {
      return yo.get(e, t)
    }, xo.all = function() {
      return yo.getAllCookies()
    }, xo.utils = yo, window[ensightenOptions.ns].data.cookie = xo))), window[ensightenOptions.ns].ensEvent || (window[ensightenOptions.ns].ensEvent = (lp = window, op = {
      queue: {},
      pollQueue: {},
      pushTrigger: function(e, t) {
        if ("[object Array]" === Object.prototype.toString.call(e)) {
          for (var n = 0; n < e.length; n++) op.pushTrigger(e[n], t);
          return !0
        }
        return "string" == typeof e && (this.queue[e] = this.queue[e] || {
          fn: []
        }, "function" == typeof t && this.queue[e].fn.push(t), !0)
      },
      callTrigger: function(e, t, n) {
        if ("string" != typeof e) return !1;
        var i = op.queue[e];
        if ("object" == typeof i && i.fn && i.fn.length && (0 != i.fireOnFirstSet && t == mp || t != mp && 0 != i.fireOnUpdate))
          for (var o = 0; o < i.fn.length; o++) i.fn[o].call(this)
      },
      setPollOptions: function(e, t, n) {
        this.queue[e] = this.queue[e] || {
          fn: []
        }, this.queue[e].fireOnFirstSet = t, this.queue[e].fireOnUpdate = n
      },
      callPoll: function(e, t, n, i, o) {
        if ("string" == typeof e && t && t.length && !(t.length < 1)) {
          for (var r = 0; r < t.length; r++) op.setPollOptions(t[r], i, o);
          op.pushWatch(e, t, n)
        }
      },
      pushWatch: function(e, t, n) {
        this.pollQueue[e] || (this.pollQueue[e] = {
          previousVal: mp,
          eventArr: [],
          valueFn: n
        }), this.pollQueue[e].eventArr = this.pollQueue[e].eventArr.concat(t), this.pollQueue[e].valueFn = n
      },
      globalWatch: function() {
        setInterval(function() {
          for (key in op.pollQueue) {
            var e = op.pollQueue[key],
              t = e.valueFn(key);
            if (e.previousVal !== t) {
              for (var n = 0; n < e.eventArr.length; n++) op.callTrigger.call(lp, e.eventArr[n], e.previousVal, t);
              op.pollQueue[key].previousVal = t
            }
          }
        }, 500)
      }
    }, pp = {
      add: function(e, t) {
        return op.pushTrigger(e, t)
      },
      get: function(e) {
        return op.queue[e]
      },
      trigger: function(e, t) {
        var n = t || lp;
        return op.callTrigger.call(n, e)
      },
      poll: function(e, t, n, i, o) {
        return o = o || lp[ensightenOptions.ns].data.resolve, op.callPoll(e, t, o, n, i)
      }
    }, op.globalWatch(), pp), window[ensightenOptions.ns].qwery = function() {
      var a, s = document,
        n = s.documentElement,
        c = "getElementsByClassName",
        g = "getElementsByTagName",
        r = "querySelectorAll",
        t = "useNativeQSA",
        v = "tagName",
        w = "nodeType",
        m = /#([\w\-]+)/,
        y = /\.[\w\-]+/g,
        h = /^#([\w\-]+)$/,
        u = /^([\w]+)?\.([\w\-]+)$/,
        l = /(^|,)\s*[>~+]/,
        d = /^\s+|\s*([,\s\+\~>]|$)\s*/g,
        e = /[\s\>\+\~]/,
        i = /(?![\s\w\-\/\?\&\=\:\.\(\)\!,@#%<>\{\}\$\*\^'"]*\]|[\s\w\+\-]*\))/,
        o = /([.*+?\^=!:${}()|\[\]\/\\])/g,
        p = new RegExp(h.source + "|" + /^([\w\-]+)$/.source + "|" + /^\.([\w\-]+)$/.source),
        O = new RegExp("(" + e.source + ")" + i.source, "g"),
        D = new RegExp(e.source + i.source),
        f = new RegExp(/^(\*|[a-z0-9]+)?(?:([\.\#]+[\w\-\.#]+)?)/.source + "(" + /\[([\w\-]+)(?:([\|\^\$\*\~]?\=)['"]?([ \w\-\/\?\&\=\:\.\(\)\!,@#%<>\{\}\$\*\^]+)["']?)?\]/.source + ")?(" + /:([\w\-]+)(\(['"]?([^()]+)['"]?\))?/.source + ")?"),
        b = {
          " ": function(e) {
            return e && e !== n && e.parentNode
          },
          ">": function(e, t) {
            return e && e.parentNode == t.parentNode && e.parentNode
          },
          "~": function(e) {
            return e && e.previousSibling
          },
          "+": function(e, t, n, i) {
            return !!e && (n = N(e)) && (i = N(t)) && n == i && n
          }
        };
  
      function x() {
        this.c = {}
      }
      x.prototype = {
        g: function(e) {
          return this.c[e] || void 0
        },
        s: function(e, t, n) {
          return t = n ? new RegExp(t) : t, this.c[e] = t
        }
      };
      var S = new x,
        C = new x,
        I = new x,
        E = new x;
  
      function _(e) {
        return S.g(e) || S.s(e, "(^|\\s+)" + e + "(\\s+|$)", 1)
      }
  
      function T(e, t) {
        for (var n = 0, i = e.length; n < i; n++) t(e[n])
      }
  
      function A(e) {
        for (var t = [], n = 0, i = e.length; n < i; ++n) U(e[n]) ? t = t.concat(e[n]) : t[t.length] = e[n];
        return t
      }
  
      function R(e) {
        for (var t = 0, n = e.length, i = []; t < n; t++) i[t] = e[t];
        return i
      }
  
      function N(e) {
        for (;
          (e = e.previousSibling) && 1 != e[w];);
        return e
      }
  
      function P(e) {
        return e.match(f)
      }
  
      function B(e, t, n, i, o, r, a, s, c, u, l) {
        var d, p, f, g, h;
        if (1 !== this[w]) return !1;
        if (t && "*" !== t && this[v] && this[v].toLowerCase() !== t) return !1;
        if (n && (p = n.match(m)) && p[1] !== this.id) return !1;
        if (n && (h = n.match(y)))
          for (d = h.length; d--;)
            if (!_(h[d].slice(1)).test(this.className)) return !1;
        if (c && F.pseudos[c] && !F.pseudos[c](this, l)) return !1;
        if (i && !a)
          for (f in g = this.attributes)
            if (Object.prototype.hasOwnProperty.call(g, f) && (g[f].name || f) == o) return this;
        return !(i && ! function(e, t, n) {
          switch (e) {
            case "=":
              return t == n;
            case "^=":
              return t.match(I.g("^=" + n) || I.s("^=" + n, "^" + j(n), 1));
            case "$=":
              return t.match(I.g("$=" + n) || I.s("$=" + n, j(n) + "$", 1));
            case "*=":
              return t.match(I.g(n) || I.s(n, j(n), 1));
            case "~=":
              return t.match(I.g("~=" + n) || I.s("~=" + n, "(?:^|\\s+)" + j(n) + "(?:\\s+|$)", 1));
            case "|=":
              return t.match(I.g("|=" + n) || I.s("|=" + n, "^" + j(n) + "(-|$)", 1))
          }
          return 0
        }(r, $(this, o) || "", a)) && this
      }
  
      function j(e) {
        return C.g(e) || C.s(e, e.replace(o, "\\$1"))
      }
  
      function k(e, o, r, t) {
        var a;
        return (a = function e(t, n, i) {
          for (; i = b[r[n]](i, t);)
            if (L(i) && B.apply(i, P(o[n]))) {
              if (!n) return i;
              if (a = e(i, n - 1, i)) return a
            }
        }(e, o.length - 1, e)) && (!t || G(a, t))
      }
  
      function L(e, t) {
        return e && "object" == typeof e && (t = e[w]) && (1 == t || 9 == t)
      }
  
      function M(e) {
        var t, n, i = [];
        e: for (t = 0; t < e.length; ++t) {
          for (n = 0; n < i.length; ++n)
            if (i[n] == e[t]) continue e;
          i[i.length] = e[t]
        }
        return i
      }
  
      function U(e) {
        return "object" == typeof e && isFinite(e.length)
      }
  
      function q(e, t, n) {
        return 9 === e[w] ? e.getElementById(t) : e.ownerDocument && ((n = e.ownerDocument.getElementById(t)) && G(n, e) && n || !G(e, e.ownerDocument) && a('[id="' + t + '"]', e)[0])
      }
  
      function F(e, t) {
        var n, i, o, r = (o = t) ? "string" == typeof o ? F(o)[0] : !o[w] && U(o) ? o[0] : o : s;
        if (!r || !e) return [];
        if (e === window || L(e)) return !t || e !== window && L(r) && G(e, r) ? [e] : [];
        if (e && U(e)) return A(e);
        if (n = e.match(p)) {
          if (n[1]) return (i = q(r, n[1])) ? [i] : [];
          if (n[2]) return R(r[g](n[2]));
          if (X && n[3]) return R(r[c](n[3]))
        }
        return a(e, r)
      }
  
      function J(i, o) {
        return function(e) {
          var t, n;
          l.test(e) ? 9 !== i[w] && ((n = t = i.getAttribute("id")) || i.setAttribute("id", n = "__qwerymeupscotty"), e = '[id="' + n + '"]' + e, o(i.parentNode || i, e, !0), t || i.removeAttribute("id")) : e.length && o(i, e, !1)
        }
      }
      var V, G = "compareDocumentPosition" in n ? function(e, t) {
          return 16 == (16 & t.compareDocumentPosition(e))
        } : "contains" in n ? function(e, t) {
          return (t = 9 === t[w] || t == window ? n : t) !== e && t.contains(e)
        } : function(e, t) {
          for (; e = e.parentNode;)
            if (e === t) return 1;
          return 0
        },
        $ = ((V = s.createElement("p")).innerHTML = '<a href="#x">x</a>') && "#x" != V.firstChild.getAttribute("href") ? function(e, t) {
          return "class" === t ? e.className : "href" === t || "src" === t ? e.getAttribute(t, 2) : e.getAttribute(t)
        } : function(e, t) {
          return e.getAttribute(t)
        },
        X = !!s[c],
        H = s.querySelector && s[r],
        W = function(e, t) {
          var n, i, o = [];
          try {
            return 9 !== t[w] && l.test(e) ? (T(n = e.split(","), J(t, function(e, t) {
              1 == (i = e[r](t)).length ? o[o.length] = i.item(0) : i.length && (o = o.concat(R(i)))
            })), 1 < n.length && 1 < o.length ? M(o) : o) : R(t[r](e))
          } catch (e) {}
          return K(e, t)
        },
        K = function(e, i) {
          var t, n, o, r, a, s, c = [];
          if (e = e.replace(d, "$1"), n = e.match(u)) {
            for (a = _(n[2]), t = i[g](n[1] || "*"), o = 0, r = t.length; o < r; o++) a.test(t[o].className) && (c[c.length] = t[o]);
            return c
          }
          return T(s = e.split(","), J(i, function(e, t, n) {
            for (a = function(e, t) {
                var n, i, o, r, a, s, c, u = [],
                  l = [],
                  d = t,
                  p = E.g(e) || E.s(e, e.split(D)),
                  f = e.match(O);
                if (!p.length) return u;
                if (r = (p = p.slice(0)).pop(), p.length && (o = p[p.length - 1].match(h)) && (d = q(t, o[1])), !d) return u;
                for (s = P(r), a = d !== t && 9 !== d[w] && f && /^[+~]$/.test(f[f.length - 1]) ? function(e) {
                    for (; d = d.nextSibling;) 1 == d[w] && (!s[1] || s[1] == d[v].toLowerCase()) && (e[e.length] = d);
                    return e
                  }([]) : d[g](s[1] || "*"), n = 0, i = a.length; n < i; n++)(c = B.apply(a[n], s)) && (u[u.length] = c);
                return p.length ? (T(u, function(e) {
                  k(e, p, f) && (l[l.length] = e)
                }), l) : u
              }(t, e), o = 0, r = a.length; o < r; o++)(9 === e[w] || n || G(a[o], i)) && (c[c.length] = a[o])
          })), 1 < s.length && 1 < c.length ? M(c) : c
        },
        Q = function(e) {
          void 0 !== e[t] && (a = e[t] && H ? W : K)
        };
      return Q({
        useNativeQSA: !0
      }), F.configure = Q, F.uniq = M, F.is = function(e, t, n) {
        if (L(t)) return e == t;
        if (U(t)) return !!~A(t).indexOf(e);
        for (var i, o, r = t.split(","); t = r.pop();)
          if (i = E.g(t) || E.s(t, t.split(D)), o = t.match(O), i = i.slice(0), B.apply(e, P(i.pop())) && (!i.length || k(e, i, o, n))) return !0;
        return !1
      }, F.pseudos = {}, F
    }(), function() {
      var s, d = 0,
        i = 0,
        p = {},
        f = {};
      var c = function(e, t) {
        for (var n = t.length, i = 0; i < n; i++)
          if (e === t[i]) return !0;
        return !1
      };
  
      function g(e, t, n) {
        var i, o, r, a = (s || (s = window[ensightenOptions.ns].qwery)).call(n, t, n);
        if (a && 0 < a.length) {
          return i = e, r = n, "_root" == (o = t) ? r : i !== r ? c(i, a) ? i : i.parentNode ? (d++, g(i.parentNode, o, r)) : void 0 : void 0
        }
        return !1
      }
  
      function h(e, t, n, i) {
        if (i || n)
          if (i) {
            for (var o = 0; o < p[e.id][t][n].length; o++)
              if (p[e.id][t][n][o] === i) {
                p[e.id][t][n].pop(o, 1);
                break
              }
          } else delete p[e.id][t][n];
        else p[e.id][t] = {}
      }
  
      function o(e, t, n, i) {
        e instanceof Array || (e = [e]), n || "function" != typeof t || (n = t, t = "_root");
        var o, r, a, s, c, u = this.id;
  
        function l(t) {
          return function(e) {
            ! function(e, t, n) {
              if (p[e][n]) {
                var i, o, r = t.target || t.srcElement,
                  a = {},
                  s = 0,
                  c = 0;
                for (i in d = 0, p[e][n]) p[e][n].hasOwnProperty(i) && (o = g(r, i, f[e].element)) && v.matchesEvent(n, f[e].element, o, "_root" == i, t) && (d++, p[e][n][i].match = o, a[d] = p[e][n][i]);
                for (t.stopPropagation = function() {
                    t.cancelBubble = !0
                  }, s = 0; s <= d; s++)
                  if (a[s])
                    for (c = 0; c < a[s].length; c++) {
                      if (!1 === a[s][c].call(a[s].match, t)) return v.cancel(t);
                      if (t.cancelBubble) return
                    }
              }
            }(u, e, t)
          }
        }
        for (o = 0; o < e.length; o++) p[u] && p[u][e[o]] || v.addEvent(this, e[o], l(e[o])), i ? h(this, e[o], t, n) : (r = this, a = e[o], s = t, c = n, p[r.id] || (p[r.id] = {}), p[r.id][a] || (p[r.id][a] = {}), p[r.id][a][s] || (p[r.id][a][s] = []), p[r.id][a][s].push(c));
        return this
      }
  
      function v(e, t) {
        if (("string" == typeof e && "function" == typeof t || "string" == typeof t) && v(document).on(e, t, arguments[2], arguments[3] || !1), !(this instanceof v)) {
          for (var n in f)
            if (f[n].element === e) return f[n];
          return f[++i] = new v(e, i), f[i]._on = f[i].on, f[i].on = function(e, t, n, i) {
            var o = "function" == typeof t ? t : n;
            if (!("function" == typeof t ? n || !1 : i || !1)) return this._on.call(this, e, t, n);
            var r, a = [e];
            "string" == typeof t && a.push(t), a.push((r = o, function(e) {
              if (e.defaultPrevented || window[ensightenOptions.ns].Delegate.load(this), this.nodeName && "a" != this.nodeName.toLowerCase()) return r.call(this);
              void 0 !== e.preventDefault ? e.preventDefault() : e.returnValue = !1, r.call(this)
            })), this._on.apply(this, a)
          }, f[i]
        }
        this.element = e, this.id = t
      }
      v.prototype.on = function(e, t, n) {
        return o.call(this, e, t, n)
      }, v.prototype.off = function(e, t, n) {
        return o.call(this, e, t, n, !0)
      }, v.cancel = function(e) {
        e.preventDefault(), e.stopPropagation()
      }, v.addEvent = function(e, t, n) {
        var i = "blur" == t || "focus" == t;
        e.element.addEventListener(t, n, i)
      }, v.matchesEvent = function() {
        return !0
      }, v.load = function(e) {
        var t, n;
        setTimeout((n = (t = e).href || "", function() {
          if (t.nodeName && "a" == t.nodeName.toLowerCase()) {
            if (n && /^javascript\s*\:/.test(n)) return new Function(unescape(n)).call(window);
            n && (window.location.href = n)
          }
        }), 750)
      }, window[ensightenOptions.ns].Delegate = v
    }(), cv = window[ensightenOptions.ns].Delegate, dv = cv.addEvent, cv.addEvent = function(e, t, n) {
      if (e.element.addEventListener) return dv(e, t, n);
      "focus" == t && (t = "focusin"), "blur" == t && (t = "focusout"), e.element.attachEvent("on" + t, n)
    }, cv.cancel = function(e) {
      e.preventDefault && e.preventDefault(), e.stopPropagation && e.stopPropagation(), e.returnValue = !1, e.cancelBubble = !0
    }, window[ensightenOptions.ns].on = window[ensightenOptions.ns].Delegate), Bootstrapper.dataDefinitionIds = [45161, 44907, 44908, 44909, 19470, 44911, 52335, 44912, 19472, 44913, 11505, 11506, 45724], Bootstrapper.bindImmediate(function() {
      var o = window.Bootstrapper;
      o.ensightenOptions;
      o.pageLimit = 100, o.currentPageCount = 0;
      var r = o.insertScript;
      o.insertScript = function(e, t, n, i) {
        -1 < e.indexOf(o.ensightenOptions.staticJavascriptPath) ? o.currentPageCount < o.pageLimit && (r.call(o, e, t, n, i), o.currentPageCount++) : r.call(o, e, t, n, i)
      }
    }, 879098, 318540), Bootstrapper.bindImmediate(function() {
      var t = window.Bootstrapper;
      t.ensightenOptions;
      t.deploymentLimit = 100, t.currentDeploymentCount = 0;
      var e = t.bindImmediate,
        n = t.bindDomParsed,
        i = t.bindDomLoaded,
        o = t.bindDependencyImmediate,
        r = t.bindDependencyDOMLoaded;
      t.bindDependencyDOMParsed;
  
      function a(e) {
        return function() {
          -1 !== arguments[1] ? t.currentDeploymentCount < t.deploymentLimit && (e.apply(t, arguments), t.currentDeploymentCount++) : e.apply(t, arguments)
        }
      }
      t.bindImmediate = a(e), t.bindDomParsed = a(n), t.bindDomLoaded = a(i), t.bindDependencyImmediate = a(o), t.bindDependencyDOMParsed = a(r), t.bindDependencyDOMLoaded = a(r)
    }, 886749, 318581), Bootstrapper.bindImmediate(function() {
      var e = window.Bootstrapper;
      e.ensightenOptions;
      e.registerDataDefinition(function() {
        e.data.define({
          extract: function() {
            var e = "";
            return null !== window.pre && void 0 !== window.pre && null !== window.pre.cart && void 0 !== window.pre.cart && window.pre.cart.res.data.purchase.amounts.total.currency_code && (e = window.pre.cart.res.data.purchase.amounts.total.currency_code), e
          },
          transform: function(e) {
            return e || ""
          },
          load: "page",
          trigger: e.data.bottomOfBodyTrigger,
          dataDefName: "Currency Code",
          collection: "Global Data",
          source: "Manage",
          priv: "false"
        }, {
          id: "44909"
        })
      }, 44909)
    }, -1, -1), Bootstrapper.bindImmediate(function() {
      var e = window.Bootstrapper;
      e.ensightenOptions;
      e.registerDataDefinition(function() {
        e.data.define({
          extract: function() {
            return " UTC" + -(new Date).getTimezoneOffset() / 60
          },
          load: "page",
          dataDefName: "Client Timezone offset",
          collection: "Global Data",
          source: "Manage",
          priv: "false"
        }, {
          id: "11506"
        })
      }, 11506)
    }, -1, -1), Bootstrapper.bindImmediate(function() {
      var n = window.Bootstrapper;
      n.ensightenOptions;
      n.getExtraParams = function() {
        var e = n && n.Cookies && n.Cookies.get("enforce_policy") || "",
          t = ((n && n.Cookies && n.Cookies.get("cookie_prefs") || "").split("T=")[1] || "")[0];
        return {
          tms_country: window.dataLayer.contentCountry,
          tms_enforce_policy: e,
          tms_targeting: t
        }
      }
    }, 2451118, 373800), Bootstrapper.bindImmediate(function() {
      var e, i, t = window.Bootstrapper;
      t.ensightenOptions;
      t.Cookies = {
        domain: location.hostname,
        get: function(e, t) {
          for (var n = document.cookie.split(";"), i = 0; i < n.length; i++) {
            var o = n[i].replace(/^\s+/, "").split("=");
            if (o[0] == e) return t ? o[1] : decodeURIComponent(o[1])
          }
          return ""
        },
        set: function(e, t, n) {
          return document.cookie = e + "=" + encodeURIComponent(t) + (n ? ";expires=" + n : "") + ";path=/;domain=" + this.domain, this.get(e) == t
        },
        test: function(e) {
          return !!this.get(e)
        }
      }, t.propertyWatcher = ((i = {
        watchers: []
      }).options = {}, i.options.interval = i.options.interval || 50, i.Watcher = function(e, t) {
        var n = {};
        return n.propertyFn = e, n.lastValue = void 0, n.options = t, n.change = function(e, t) {}, n
      }, i.doChecks = function() {
        for (var e = 0; e < i.watchers.length; e++) {
          var t = i.watchers[e],
            n = t.propertyFn ? t.propertyFn() : null;
          t.lastValue != n && (t.change(t.lastValue, n), t.lastValue = n)
        }
        i.resetTimer()
      }, i.resetTimer = function() {
        window.setTimeout(function() {
          i.doChecks()
        }, i.options.interval)
      }, i.addWatcher = function(e, t) {
        var n = i.Watcher(e, t);
        return i.watchers.push(n), n
      }, e = {
        create: i.addWatcher
      }, i.doChecks(), e), t.getProp = function(e, t, n) {
        return (e = e[(t = Array.isArray(t) ? t : t.split("."))[0]]) && 1 < t.length ? this.getProp(e, t.slice(1), n) : void 0 === e ? n : e
      }
    }, 2451120, 340736), Bootstrapper.bindImmediate(function() {
      var e = window.Bootstrapper;
      e.ensightenOptions;
      e.registerDataDefinition(function() {
        e.data.define({
          extract: function() {
            var e = "";
            return null !== window.fpti && void 0 !== window.fpti && window.fpti.page && 0 < window.fpti.page.length && (e = window.fpti.page), e
          },
          transform: function(e) {
            return e || ""
          },
          load: "page",
          trigger: e.data.bottomOfBodyTrigger,
          dataDefName: "FPTI Page Name",
          collection: "Global Data",
          source: "Manage",
          priv: "false"
        }, {
          id: "44911"
        })
      }, 44911)
    }, -1, -1), Bootstrapper.bindImmediate(function() {
      var e = window.Bootstrapper;
      e.ensightenOptions;
      e.registerDataDefinition(function() {
        e.data.define({
          extract: function() {
            return window.location.href
          },
          transform: function(e) {
            return e || ""
          },
          load: "page",
          trigger: e.data.bottomOfBodyTrigger,
          dataDefName: "URL",
          collection: "Global Data",
          source: "Manage",
          priv: "false"
        }, {
          id: "44912"
        })
      }, 44912)
    }, -1, -1), Bootstrapper.bindImmediate(function() {
      var e = window.Bootstrapper;
      e.ensightenOptions;
      e.registerDataDefinition(function() {
        e.data.define({
          extract: function() {
            var e = "";
            return null !== window.fpti && void 0 !== window.fpti && window.fpti.flnm && 0 < window.fpti.flnm.length && (e = window.fpti.flnm), e
          },
          transform: function(e) {
            return e || ""
          },
          load: "page",
          trigger: e.data.bottomOfBodyTrigger,
          dataDefName: "FPTI Flow Name",
          collection: "Global Data",
          source: "Manage",
          priv: "false"
        }, {
          id: "44913"
        })
      }, 44913)
    }, -1, -1), Bootstrapper.bindImmediate(function() {
      var e = window.Bootstrapper;
      e.ensightenOptions;
      e.registerDataDefinition(function() {
        e.data.define({
          extract: function() {
            return dataLayer.contentCountry || ""
          },
          transform: function(e) {
            return e ? e.toLowerCase() : ""
          },
          load: "page",
          trigger: e.data.bottomOfBodyTrigger,
          dataDefName: "Country Code",
          collection: "Global Data",
          source: "Manage",
          priv: "false"
        }, {
          id: "19472"
        })
      }, 19472)
    }, -1, -1), Bootstrapper.bindImmediate(function() {
      var t = window.Bootstrapper;
      t.ensightenOptions;
      t.ensEvent.overrides = t.ensEvent.overrides || {}, t.ensEvent.overrides.evt_queue = {}, t.ensEvent.overrides.sitvs = {}, t.ensEvent.overrides.evt_processor = function(e) {
        e && (t.ensEvent.overrides.sitvs[e].counter = 0, t.ensEvent.overrides.sitvs[e].si = setInterval(function() {
          "unprocessed" == t.ensEvent.overrides.evt_queue[e] && (void 0 !== t.ensEvent.get(e) && (t.ensEvent.overrides.evt_queue[e] = "processed", t.ensEvent.trigger(e), clearInterval(t.ensEvent.overrides.sitvs[e].si)), t.ensEvent.overrides.sitvs[e].counter++, 40 == t.ensEvent.overrides.sitvs[e].counter && clearInterval(t.ensEvent.overrides.sitvs[e].si))
        }, 500))
      }, t.ensEvent.overrides.custom_delegator = function(e) {
        e && (void 0 === t.ensEvent.get(e) ? (t.ensEvent.overrides.evt_queue[e] = "unprocessed", t.ensEvent.overrides.sitvs[e] = {}, t.ensEvent.overrides.evt_processor(e)) : t.ensEvent.trigger(e))
      }
    }, 2451119, 537193), Bootstrapper.bindImmediate(function() {
      var e = window.Bootstrapper;
      e.ensightenOptions;
      e.registerDataDefinition(function() {
        e.data.define({
          extract: function() {
            var e = new RegExp("vr=([^&#]*)").exec(decodeURIComponent(document.cookie.match("(^|;)\\s*ts_c\\s*=\\s*([^;]+)")));
            return null === e ? "" : e[1].replace(/\+/g, " ")
          },
          load: "page",
          trigger: e.data.bottomOfBodyTrigger,
          dataDefName: "FPTI ID",
          collection: "Global Data",
          source: "Manage",
          priv: "false"
        }, {
          id: "19470"
        })
      }, 19470)
    }, -1, -1), Bootstrapper.bindImmediate(function() {
      var e = window.Bootstrapper;
      e.ensightenOptions;
      e.registerDataDefinition(function() {
        e.data.define({
          extract: function() {
            var e = "";
            return null !== window.pre && void 0 !== window.pre && null !== window.pre.payee && void 0 !== window.pre.payee && window.pre.payee.res.data.merchant.id && (e = window.pre.payee.res.data.merchant.id), e
          },
          transform: function(e) {
            return e || ""
          },
          load: "visitor",
          trigger: e.data.bottomOfBodyTrigger,
          dataDefName: "Merchant ID",
          collection: "Global Data",
          source: "Manage",
          priv: "false"
        }, {
          id: "44907"
        })
      }, 44907)
    }, -1, -1), Bootstrapper.bindImmediate(function() {
      var n = window.Bootstrapper;
      n.ensightenOptions;
      n.registerDataDefinition(function() {
        n.data.define({
          extract: function() {
            var e = "";
            return null !== window.fpti && void 0 !== window.fpti && void 0 !== window.fpti.page && (e = window.fpti.page), e
          },
          transform: function(e) {
            return e || ""
          },
          load: "page",
          trigger: function() {
            var e = n.when.defer(),
              t = setInterval(function() {
                window.fpti && void 0 !== window.fpti.page && (clearInterval(t), e.resolve(!0))
              }, 500);
            return e.promise
          },
          dataDefName: "C2C fpti pageName",
          collection: "Data Layer",
          source: "Manage",
          priv: "false"
        }, {
          id: "52335"
        })
      }, 52335)
    }, -1, -1), Bootstrapper.bindImmediate(function() {
      var e = window.Bootstrapper;
      e.ensightenOptions;
      e.registerDataDefinition(function() {
        e.data.define({
          extract: function() {
            var e = "";
            return null !== window.pre && void 0 !== window.pre && window.pre.cart.res.data.purchase.amounts.total.amount && (e = window.pre.cart.res.data.purchase.amounts.total.amount), e
          },
          transform: function(e) {
            return e || ""
          },
          load: "page",
          trigger: e.data.bottomOfBodyTrigger,
          dataDefName: "Total Amount",
          collection: "Global Data",
          source: "Manage",
          priv: "false"
        }, {
          id: "44908"
        })
      }, 44908)
    }, -1, -1), Bootstrapper.bindImmediate(function() {
      var e = window.Bootstrapper;
      e.ensightenOptions;
      e.registerDataDefinition(function() {
        e.data.define({
          extract: function() {
            try {
              return window.xoom.util.Analytics.getData().xoomId
            } catch (e) {
              return ""
            }
          },
          transform: function(e) {
            return e || ""
          },
          load: "page",
          trigger: e.data.bottomOfBodyTrigger,
          dataDefName: "Xoom-Data-Xoom-Id",
          collection: "Data Layer",
          source: "Manage",
          priv: "false"
        }, {
          id: "45724"
        })
      }, 45724)
    }, -1, -1), Bootstrapper.bindImmediate(function() {
      var e = window.Bootstrapper;
      e.ensightenOptions;
      e.registerDataDefinition(function() {
        e.data.define({
          extract: function() {
            var e = "";
            return null !== window.pre && void 0 !== window.pre && window.pre.checkoutAppData.res.data.flow_id && (e = window.pre.checkoutAppData.res.data.flow_id), e
          },
          transform: function(e) {
            return e || ""
          },
          load: "page",
          trigger: e.data.bottomOfBodyTrigger,
          dataDefName: "Flow ID",
          collection: "Global Data",
          source: "Manage",
          priv: "false"
        }, {
          id: "45161"
        })
      }, 45161)
    }, -1, -1), Bootstrapper.bindImmediate(function() {
      var e = window.Bootstrapper;
      e.ensightenOptions;
      e.registerDataDefinition(function() {
        e.data.define({
          extract: function() {
            return (new Date).toString()
          },
          load: "page",
          dataDefName: "Client Local Time",
          collection: "Global Data",
          source: "Manage",
          priv: "false"
        }, {
          id: "11505"
        })
      }, 11505)
    }, -1, -1), Bootstrapper.getServerComponent(Bootstrapper.getExtraParams ? Bootstrapper.getExtraParams() : void 0))
  }();