//! TrackJS JavaScript error monitoring agent. //! COPYRIGHT (c) 2021 ALL RIGHTS RESERVED //! See License at https://trackjs.com/terms/ self.TrackJS=self.trackJs=(function(g,l,n){"use awesome";var u=function(a,b){this.config=a;this.onError=b;a.enabled&&this.watch()};u.prototype={watch:function(){c.forEach(["EventTarget","Node","XMLHttpRequest"],function(a){c.has(g,a+".prototype.addEventListener")&&c.hasOwn(g[a].prototype,"addEventListener")&&this.wrapEventTarget(g[a].prototype)},this);this.wrapTimer("setTimeout");this.wrapTimer("setInterval")},wrap:function(a){function b(){try{return a.apply(this,arguments)}catch(b){throw d.onError("catch",b,{bindTime:e,bindStack:f}), c.wrapError(b);}}var d=this;try{if(!c.isFunction(a)||c.hasOwn(a,"__trackjs__"))return a;if(c.hasOwn(a,"__trackjs_state__"))return a.__trackjs_state__}catch(p){return a}var e,f;if(d.config.bindStack)try{throw Error();}catch(p){f=p.stack,e=c.isoNow()}for(var h in a)c.hasOwn(a,h)&&(b[h]=a[h]);b.prototype=a.prototype;b.__trackjs__=!0;return a.__trackjs_state__=b},wrapEventTarget:function(a){var b=this;c.has(a,"addEventListener.call")&&c.has(a,"removeEventListener.call")&&(c.patch(a,"addEventListener", function(a){return function(e,f,h,p){try{c.has(f,"handleEvent")&&(f.handleEvent=b.wrap(f.handleEvent))}catch(g){}return a.call(this,e,b.wrap(f),h,p)}}),c.patch(a,"removeEventListener",function(a){return function(b,f,c,g){try{f=f&&(f.__trackjs_state__||f)}catch(k){}return a.call(this,b,f,c,g)}}))},wrapTimer:function(a){var b=this;c.patch(g,a,function(a){return function(e,f){var h=Array.prototype.slice.call(arguments),g=h[0];c.isFunction(g)&&(h[0]=b.wrap(g));return c.has(a,"apply")?a.apply(this,h): a(h[0],h[1])}})}};var q=function(a){this.initCurrent(a)||console.warn("[TrackJS] invalid config")};q.prototype={current:{},initOnly:{application:!0,cookie:!0,enabled:!0,token:!0,callback:{enabled:!0},console:{enabled:!0},navigation:{enabled:!0},network:{enabled:!0,fetch:!0},visitor:{enabled:!0},window:{enabled:!0,promise:!0}},defaults:{application:"",cookie:!1,dedupe:!0,dependencies:!0,enabled:!0,forwardingDomain:"",errorURL:"https://capture.trackjs.com/capture",errorNoSSLURL:"http://capture.trackjs.com/capture", faultURL:"https://usage.trackjs.com/fault.gif",usageURL:"https://usage.trackjs.com/usage.gif",onError:function(){return!0},serialize:function(a){function b(a){var d="<"+a.tagName.toLowerCase();a=a.attributes||[];for(var b=0;b"}if(""===a)return"Empty String";if(a===n)return"undefined";if(c.isString(a)||c.isNumber(a)||c.isBoolean(a)||c.isFunction(a))return""+a;if(c.isElement(a))return b(a);if("symbol"===typeof a)return Symbol.prototype.toString.call(a); var d;try{d=JSON.stringify(a,function(a,d){return d===n?"undefined":c.isNumber(d)&&isNaN(d)?"NaN":c.isError(d)?{name:d.name,message:d.message,stack:d.stack}:c.isElement(d)?b(d):d})}catch(f){d="";for(var e in a)if(a.hasOwnProperty(e))try{d+=',"'+e+'":"'+a[e]+'"'}catch(h){}d=d?"{"+d.replace(",","")+"}":"Unserializable Object"}return d.replace(/"undefined"/g,"undefined").replace(/"NaN"/g,"NaN")},sessionId:"",token:"",userId:"",version:"",callback:{enabled:!0,bindStack:!1},console:{enabled:!0,display:!0, error:!0,warn:!1,watch:["log","debug","info","warn","error"]},navigation:{enabled:!0},network:{enabled:!0,error:!0,fetch:!0},visitor:{enabled:!0},window:{enabled:!0,promise:!0}},initCurrent:function(a){this.removeEmpty(a);if(this.validate(a,this.defaults,"[TrackJS] config",{}))return this.current=c.defaultsDeep({},a,this.defaults),!0;this.current=c.defaultsDeep({},this.defaults);return!1},setCurrent:function(a){return this.validate(a,this.defaults,"[TrackJS] config",this.initOnly)?(this.current=c.defaultsDeep({}, a,this.current),!0):!1},removeEmpty:function(a){for(var b in a)a.hasOwnProperty(b)&&a[b]===n&&delete a[b]},validate:function(a,b,d,e){var f=!0;d=d||"";e=e||{};for(var c in a)if(a.hasOwnProperty(c))if(b.hasOwnProperty(c)){var g=typeof b[c];g!==typeof a[c]?(console.warn(d+"."+c+": property must be type "+g+"."),f=!1):"[object Array]"!==Object.prototype.toString.call(a[c])||this.validateArray(a[c],b[c],d+"."+c)?"[object Object]"===Object.prototype.toString.call(a[c])?f=this.validate(a[c],b[c],d+"."+ c,e[c]):e.hasOwnProperty(c)&&(console.warn(d+"."+c+": property cannot be set after load."),f=!1):f=!1}else console.warn(d+"."+c+": property not supported."),f=!1;return f},validateArray:function(a,b,d){var e=!0;d=d||"";for(var f=0;fthis.maxLength&&(this.appender= this.appender.slice(Math.max(this.appender.length-this.maxLength,0)))},add:function(a,b){var d=this.util.uuid();this.appender.push({key:d,category:a,value:b});this.truncate();return d},get:function(a,b){var d,e;for(e=0;ec.indexOf("localhost:0")&&(c=b.escapeUrl(c),this._trackJs={method:a,url:c});return d.apply(this,arguments)};a.prototype.send=function(){if(!this._trackJs)try{return e.apply(this,arguments)}catch(a){b.onError("ajax",a);return}try{this._trackJs.logId=b.log.add("n",{type:"xhr",startedOn:b.util.isoNow(),method:this._trackJs.method,url:c.truncate(this._trackJs.url,2E3)}),b.listenForNetworkComplete(this)}catch(a){b.onFault(a)}return e.apply(this,arguments)};return a},listenForNetworkComplete:function(a){var b= this;b.window.ProgressEvent&&a.addEventListener&&a.addEventListener("readystatechange",function(){4===a.readyState&&b.finalizeNetworkEvent(a)},!0);a.addEventListener?a.addEventListener("load",function(){b.finalizeNetworkEvent(a);b.checkNetworkFault(a)},!0):setTimeout(function(){try{var d=a.onload;a.onload=function(){b.finalizeNetworkEvent(a);b.checkNetworkFault(a);"function"===typeof d&&b.util.hasFunction(d,"apply")&&d.apply(a,arguments)};var e=a.onerror;a.onerror=function(){b.finalizeNetworkEvent(a); b.checkNetworkFault(a);"function"===typeof oldOnError&&e.apply(a,arguments)}}catch(c){b.onFault(c)}},0)},finalizeNetworkEvent:function(a){if(a._trackJs){var b=this.log.get("n",a._trackJs.logId);b&&(b.completedOn=this.util.isoNow(),a.getAllResponseHeaders&&a.getResponseHeader&&0<=(a.getAllResponseHeaders()||"").toLowerCase().indexOf("trackjs-correlation-id")&&(b.requestCorrelationId=a.getResponseHeader("trackjs-correlation-id")),b.statusCode=1223==a.status?204:a.status,b.statusText=1223==a.status? "No Content":a.statusText)}},checkNetworkFault:function(a){if(this.options.error&&400<=a.status&&1223!=a.status){var b=a._trackJs||{};this.onError("ajax",a.status+" : "+b.method+" "+b.url)}},report:function(){return this.log.all("n")}};var t=function(a,b){this.util=a;this.config=b;this.disabled=!1;this.throttleStats={attemptCount:0,throttledCount:0,lastAttempt:(new Date).getTime()};g.JSON&&g.JSON.stringify||(this.disabled=!0)};t.prototype={errorEndpoint:function(a){var b=this.config.current,d=b.errorURL; c.isBrowser&&!c.testCrossdomainXhr()&&-1===g.location.protocol.indexOf("https")?d=b.errorNoSSLURL:b.forwardingDomain&&(d="https://"+b.forwardingDomain+"/capture");return d+"?token="+a+"&v=3.10.1"},usageEndpoint:function(a){var b=this.config.current,d=b.usageURL;b.forwardingDomain&&(d="https://"+b.forwardingDomain+"/usage.gif");return this.appendObjectAsQuery(a,d)},trackerFaultEndpoint:function(a){var b=(this.config||{}).current||q.prototype.defaults,d=b.faultURL;b.forwardingDomain&&(d="https://"+ b.forwardingDomain+"/fault.gif");return this.appendObjectAsQuery(a,d)},appendObjectAsQuery:function(a,b){b+="?";for(var d in a)a.hasOwnProperty(d)&&(b+=encodeURIComponent(d)+"="+encodeURIComponent(a[d])+"&");return b},getCORSRequest:function(a,b){var d;this.util.testCrossdomainXhr()?(d=new g.XMLHttpRequest,d.open(a,b),d.setRequestHeader("Content-Type","text/plain")):"undefined"!==typeof g.XDomainRequest?(d=new g.XDomainRequest,d.open(a,b)):d=null;return d},sendTrackerFault:function(a){this.throttle(a)|| (c.isBrowser?l.createElement("img").src=this.trackerFaultEndpoint(a):fetch(this.trackerFaultEndpoint(a),{mode:"no-cors",__trackjs__:!0}))},sendUsage:function(a){c.isBrowser?l.createElement("img").src=this.usageEndpoint(a):fetch(this.usageEndpoint(a),{mode:"no-cors",__trackjs__:!0})},sendError:function(a,b){var d=this;if(!this.disabled&&!this.throttle(a))try{if(c.isBrowser){var e=this.getCORSRequest("POST",this.errorEndpoint(b));e.onreadystatechange=function(){4!==e.readyState||c.contains([200,202], e.status)||(d.disabled=!0)};e._trackJs=n;e.send(g.JSON.stringify(a))}else if(c.isWorker){var f={method:"POST",mode:"cors",body:g.JSON.stringify(a),__trackjs__:1};fetch(this.errorEndpoint(b),f).then(function(a){a.ok||(d.disabled=!0)})["catch"](function(a){d.disabled=!0})}}catch(h){throw this.disabled=!0,h;}},throttle:function(a){var b=(new Date).getTime();this.throttleStats.attemptCount++;if(this.throttleStats.lastAttempt+1E3>=b){if(this.throttleStats.lastAttempt=b,10h&&"[object Object]"===b(e[c])?(d[c]=d[c]||{},a(d[c],[e[c]],f,h+1)):d.hasOwnProperty(c)||(d[c]=e[c])})});return d}function b(a){return Object.prototype.toString.call(a)}return{isBrowser:"undefined"!== typeof g&&"undefined"!==typeof g.document,isWorker:"object"===typeof self&&self.constructor&&0<=(self.constructor.name||"").indexOf("WorkerGlobalScope"),isNode:"undefined"!==typeof process&&null!=process.versions&&null!=process.versions.node,addEventListenerSafe:function(a,b,c,h){a.addEventListener?a.addEventListener(b,c,h):a.attachEvent&&a.attachEvent("on"+b,c)},afterDocumentLoad:function(a){if(c.isWorker)c.defer(a);else{var b=!1;"complete"===l.readyState?c.defer(a):(c.addEventListenerSafe(l,"readystatechange", function(){"complete"!==l.readyState||b||(c.defer(a),b=!0)}),setTimeout(function(){b||(c.defer(a),b=!0)},1E4))}},bind:function(a,b){return function(){return a.apply(b,Array.prototype.slice.call(arguments))}},contains:function(a,b){return 0<=a.indexOf(b)},defaults:function(d){return a(d,Array.prototype.slice.call(arguments,1),!1)},defaultsDeep:function(d){return a(d,Array.prototype.slice.call(arguments,1),!0)},defer:function(a,b){setTimeout(function(){a.apply(b)})},forEach:function(a,b,f){if(c.isArray(a)){if(a.forEach)return a.forEach(b, f);for(var h=0;h