(n=>{n||(n=document.location.href);const t="https://tracking-api.g2.com",e="",i="5128",a="external",o="",r="";let s=()=>{};if(new URLSearchParams(document.location.search).has("g2debug")){function m(){const n={universal:[],gtag:[],gtm:[]};return window.ga&&"function"==typeof window.ga.getAll&&(n.universal=window.ga.getAll().map((n=>n.get("trackingId")))),Array.isArray(window.dataLayer)&&(n.gtag=window.dataLayer.filter((n=>"config"===n[0]&&"string"==typeof n[1])).map((n=>n[1]))),n.gtm=Array.from(document.scripts).map((n=>n.src)).filter((n=>n.includes("googletagmanager.com"))).map((n=>{const t=n.match(/\?id=([^&]+)/);return t&&t[1]})).filter(Boolean),console.log("Available Analytics IDs →",JSON.stringify(n)),n}s=(n,t="log")=>console[t](`g2debug: ${n}`),m()}const c={allKeys:[],key:"",localStorageKey:"g2tracking",date:((n=new Date)=>(1e4*n.getFullYear()+100*n.getMonth()+n.getDate()).toString())(),setKey:function(n){this.key=n.map((([n,t])=>t)).join(",").replace(/\s/g,"")},isFresh:function(){return this.refresh(),this.allKeys.includes(this.key)},refresh:function(){try{const n=window.localStorage.getItem(this.localStorageKey),t=n&&JSON.parse(n)[this.date];t?(s("cache found"),this.allKeys=t):(s("no cache found"),this.allKeys=[])}catch(n){s(n,"error"),this.allKeys=[]}},persist:function(){const n=this.isFresh()?this.allKeys:[this.key,...this.allKeys],t=Object.fromEntries([[this.date,n]]);try{window.localStorage.setItem(this.localStorageKey,JSON.stringify(t)),s("cache persisted")}catch(n){s(n,"error")}}};let g=!1,d=!1,l=0;const w=7;function f(n){return n<=1?n:f(n-1)+f(n-2)}function h(t,e=""){const g=window.navigator&&window.navigator.userAgent,d=window.screen&&window.screen.availHeight.toString(),l=[["aid",e],["ua",g],["sr",(window.screen&&window.screen.availWidth.toString())+"x"+d],["lang",window.navigator.language],["tz",(new Date).getTimezoneOffset().toString()],["sid",i],["uid",r],["e",""]];if(c.setKey(l),c.isFresh())s("fresh cache -- skipping conversion ping");else{if(window.navigator&&window.navigator.sendBeacon){s("pinging via sendBeacon");const e=new FormData;e.append("pid",o),e.append("p",n),e.append("s",a),l.forEach((([n,t])=>e.append(n,t))),window.navigator.sendBeacon(t,e)}else if(window.fetch){s("pinging via fetch");const e={p:n,pid:o,s:a,...Object.fromEntries(l)};window.fetch(t,{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify(e)})}c.persist()}}function u(n){if(g)return!1;n?(g=!0,h(`${t}/attribution_tracking/conversions/assign`,n)):(d||(h(`${t}/attribution_tracking/conversions/assign`),d=!0),y())}function p(){if(g||l>=w)return h(`${t}/attribution_tracking/conversions/assign`);e?s(`searching for trackerId ${e}`):(s("no trackerId"),h(`${t}/attribution_tracking/conversions/assign`),g=!0),window.ga?function(n,t){s("handleUniversal");const e=window.ga&&window.ga.getAll&&window.ga.getAll();let i;s(`trackers found: ${e&&e.length||0}`),function(n,t){for(let e=0,i=n.length;e=w)return s("maxAttempts reached"),void(g=!0);window.setTimeout(p,500*f(l)),l+=1}p()})("https://www.dnsfilter.com/privacy-policy?utm_medium=email");