1(function () { 2 "use strict"; 3 if (!document.querySelector(".mobile-chat-launcher")) { 4 const mobile = window.matchMedia("(max-width: 680px)"); 5 const api = window.Tawk_API = window.Tawk_API || {}; 6 const style = document.createElement("style"); 7 style.textContent = ".mobile-chat-launcher{display:none}.mobile-chat-launcher .fa-comments::before{content:'\\f086'}@media(max-width:680px){.mobile-chat-launcher:not([hidden]){position:fixed;right:12px;bottom:72px;z-index:1000;display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:50%;color:#fff;background:#087132;box-shadow:0 3px 12px rgba(0,0,0,.2);cursor:pointer;font-size:20px}.mobile-chat-launcher:focus-visible{outline:3px solid #f8bd23;outline-offset:3px}}"; 8 document.head.appendChild(style); 9 const launcher = document.createElement("button"); 10 launcher.className = "mobile-chat-launcher"; 11 launcher.type = "button"; 12 launcher.hidden = true; 13 launcher.setAttribute("aria-label", "Open live chat"); 14 launcher.title = "Open live chat"; 15 launcher.innerHTML = '<i class="fa-solid fa-comments" aria-hidden="true"></i>'; 16 document.body.appendChild(launcher); 17 let openWhenReady = false; 18 19 function syncChat() { 20 if (!mobile.matches) { 21 launcher.hidden = true; 22 if (typeof api.showWidget === "function") api.showWidget(); 23 } else if (!openWhenReady && !(typeof api.isChatMaximized === "function" && api.isChatMaximized())) { 24 launcher.hidden = false; 25 if (typeof api.hideWidget === "function") api.hideWidget(); 26 } 27 } 28 29 launcher.addEventListener("click", function () { 30 openWhenReady = true; 31 launcher.hidden = true; 32 loadTawk(); 33 if (typeof api.showWidget === "function") { 34 api.showWidget(); 35 api.maximize(); 36 openWhenReady = false; 37 } 38 }); 39 api.onBeforeLoad = function () { 40 if (mobile.matches && !openWhenReady) api.hideWidget(); 41 }; 42 api.onLoad = function () { 43 if (openWhenReady) { 44 api.showWidget(); 45 api.maximize(); 46 openWhenReady = false; 47 } else if (mobile.matches && typeof api.isChatOngoing === "function" && api.isChatOngoing()) { 48 launcher.hidden = true; 49 } else { 50 syncChat(); 51 } 52 }; 53 api.onChatMinimized = function () { 54 if (mobile.matches) { 55 api.hideWidget(); 56 launcher.hidden = false; 57 } 58 }; 59 api.onChatHidden = function () { 60 if (mobile.matches) launcher.hidden = false; 61 }; 62 mobile.addEventListener("change", syncChat); 63 syncChat(); 64 } 65 let tawkLoaded = false; 66 function loadTawk() { 67 if (tawkLoaded || document.querySelector('script[src*="embed.tawk.to"]')) return; 68 tawkLoaded = true; 69 window.Tawk_API = window.Tawk_API || {}; 70 window.Tawk_LoadStart = new Date(); 71 const script = document.createElement("script"); 72 script.async = true; 73 script.src = "https://embed.tawk.to/6a1dc51c0071501c2cc23f23/1jq24ju8e"; 74 script.charset = "UTF-8"; 75 script.setAttribute("crossorigin", "*"); 76 document.head.appendChild(script); 77 } 78 window.addEventListener("load", function () { 79 window.setTimeout(loadTawk, 12000); 80 }, { once: true }); 81})();
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.