1!function(){"use strict";const e=document.currentScript?.getAttribute("data-endpoint")||document.currentScript?.src.replace(/\/[^/]+$/,"/api/analytics")||"/api/analytics",t="analytics_session",i="analytics_visitor";let n=!1;function o(){let e=localStorage.getItem(i);return e||(e=window.crypto.randomUUID(),localStorage.setItem(i,e)),e}function a(){let e=sessionStorage.getItem(t);if(e)return JSON.parse(e).sessionId;const i={sessionId:window.crypto.randomUUID(),startTime:Date.now()};return sessionStorage.setItem(t,JSON.stringify(i)),i.sessionId}function r(){const e=navigator.userAgent;return{browser:e.match(/(firefox|msie|chrome|safari|trident|edge)/i)?.[0]||"unknown",os:e.match(/(windows|mac|linux|android|ios)/i)?.[0]||"unknown",deviceType:/mobile/i.test(e)?"Mobile":/tablet/i.test(e)?"Tablet":"Desktop"}}function s(){if(u()||l())return;d({type:"view",visitor_id:o(),session_id:a(),url:window.location.href,referrer:document.referrer||null,user_agent:navigator.userAgent,ip_address:null,country:null,region:null,city:null,timestamp:(new Date).toISOString(),...r()})}function c(e,t=""){if(u()||l())return;d({type:"event",url:window.location.href,visitor_id:o(),session_id:a(),name:e,event_data:t,timestamp:(new Date).toISOString()})}function d(t){try{if(!navigator.sendBeacon(e,JSON.stringify(t)))throw new Error("Beacon not sent")}catch(i){fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),keepalive:!0}).catch(console.error)}}function u(){return[/adidxbot/i,/ahrefs/i,/applebot/i,/baidu/i,/bing/i,/bitly/i,/bot/i,/brandwatch/i,/ccbot/i,/cloudflare/i,/crawl/i,/datadome/i,/discordbot/i,/dotbot/i,/duckduckgo/i,/duckduckbot/i,/embedly/i,/exabot/i,/facebook/i,/feedfetcher/i,/google/i,/gurujibot/i,/gptbot/i,/ia_archiver/i,/instagram/i,/linkedin/i,/lumendatabase/i,/mailchimp/i,/mail.ru/i,/mediapartners/i,/mj12bot/i,/msnbot/i,/netcraft/i,/netpilot/i,/outbrain/i,/pingdom/i,/pinterest/i,/proximic/i,/python/i,/quora/i,/redditbot/i,/rogerbot/i,/seznambot/i,/semrush/i,/slackbot/i,/slack-img-proxy/i,/slack-imgproxy/i,/slurp/i,/sogou/i,/speedy/i,/spider/i,/swiftbot/i,/teoma/i,/telegrambot/i,/tumblr/i,/twitter/i,/ubermetrics/i,/vkshare/i,/webcrawler/i,/webmaster/i,/whatsapp/i,/yahoo/i,/yandex/i,/yodaobot/i,/youtubedl/i,/zabbix/i,/zoominfo/i].some((e=>e.test(navigator.userAgent)))}function l(){return navigator.webdriver||/HeadlessChrome|puppeteer|playwright|selenium/i.test(navigator.userAgent)}function m(){document.querySelectorAll("[data-analytics-name]").forEach((e=>{const t=e.getAttribute("data-analytics-type")||"click",i=()=>{c(e.getAttribute("data-analytics-name"),e.getAttribute("data-analytics-data")||"")};e.addEventListener(t,i,{once:e.hasAttribute("data-analytics-once")}),e._interactionHandler=i}))}function b(){document.querySelectorAll("[data-analytics-name]").forEach((e=>{const t=e.getAttribute("data-analytics-type")||"click",i=e._analyticsEventHandler;i&&(e.removeEventListener(t,i),delete e._analyticsEventHandler)}))}function y(){s(),setTimeout(m,700)}function p(){if(n)return;n=!0;let e=!1;function t(){e||(e=!0,window.addEventListener("popstate",y),window.addEventListener("visibilitychange",(()=>{"visible"===document.visibilityState?s():c("hidden",document.visibilityState)})),document.removeEventListener("mousemove",t),document.removeEventListener("mousedown",t),document.removeEventListener("scroll",t),document.removeEventListener("keydown",t),s())}document.addEventListener("mousemove",t,{once:!0}),document.addEventListener("mousedown",t,{once:!0}),document.addEventListener("scroll",t,{once:!0}),document.addEventListener("keydown",t,{once:!0}),m()}const v=history.pushState;history.pushState=()=>{b(),v.apply(history,arguments),y()},window.addEventListener("beforeunload",(()=>{b(),window.removeEventListener("popstate",y),window.removeEventListener("hashchange",y)}),{once:!0}),window.analytics={trackEvent:c},"loading"!==document.readyState?p():document.addEventListener("DOMContentLoaded",p,{once:!0})}();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.