1window.addEventListener('load', function (_) { 2 const themeLs = localStorage.getItem('theme'); 3 const theme = document.documentElement.getAttribute('data-bs-theme'); 4 if (theme !== themeLs) 5 toggleTheme(); 6 7 setHtmlLanguage(); 8 window.resizeHomeTop(); 9}, true); 10window.addEventListener('resize', function (_) { 11 window.resizeHomeTop(); 12}, true); 13 14window.resizeHomeTop = () => { 15 if (location.pathname !== '/') return; 16 17 const img = document.querySelector('.main-bg'); 18 const title = document.querySelector('.hero-title'); 19 const subtitle = document.querySelector('.hero-subtitle'); 20 const width = img.clientWidth; 21 if (width > 730) { 22 title.style.fontSize = ''; 23 subtitle.style.marginTop = ''; 24 subtitle.style.marginBottom = ''; 25 subtitle.style.fontSize = ''; 26 return; 27 } 28 29 var size = (0.00000268 * width * width + 0.00182 * width + 0.143).toFixed(5); 30 title.style.fontSize = size + 'rem'; 31 32 let marT; 33 let marB; 34 let fs; 35 if (width > 585) { 36 marT = (0.007692 * width - 2.165).toFixed(5); 37 marB = marT; 38 fs = 1.3; 39 } else { 40 marT = (0.0015 * width + 1.4225).toFixed(5); 41 marB = (0.0115 * width - 4.5).toFixed(5); 42 fs = (0.0015 * width + 0.4).toFixed(5); 43 } 44 subtitle.style.marginTop = marT + 'rem'; 45 subtitle.style.marginBottom = marB + 'rem'; 46 subtitle.style.fontSize = fs + 'rem'; 47} 48 49window.selectPicker = (id, title, noResults) => $(`#${id}`).selectpicker({ 50 title: title, 51 noneSelectedText: title, 52 noneResultsText: noResults, 53 container: 'body' 54}); 55window.selectPickerValue = (id, value) => $(`#${id}`).selectpicker('val', value); 56window.selectPickerDestroy = (id) => $(`#${id}`).selectpicker('destroy'); 57 58window.browserTime = () => new Date(); 59window.timeZoneOffset = () => new Date().getTimezoneOffset(); 60 61window.setLanguage = (lang) => document.cookie = `language=${lang}; path=/;`; 62window.getLanguage = () => { 63 const match = document.cookie.match(new RegExp('(^| )language=([^;]+)')); 64 return match ? match[2] : 'en'; 65} 66 67var HideNavBar = () => $('.offcanvas').offcanvas('hide'); 68 69var Focus = (id) => { 70 var interval = setInterval(() => { 71 let el = window.document.querySelector(`#${id}`); 72 if (!el) return; 73 if (el.tagName.toLowerCase() === 'select') 74 el = window.document.querySelector(`#${id} + button.dropdown-toggle`); 75 if (!el) return; 76 el.focus(); 77 if (document.activeElement === el) 78 clearInterval(interval); 79 }, 80 100); 81} 82 83var Scroll = (id) => { 84 const el = document.getElementById(id); 85 if (el) 86 el.scrollIntoView({ behavior: "smooth", block: "start" }); 87} 88 89setInterval(() => { 90 for (let key in localStorage) { 91 if (key.startsWith('exp_')) { 92 const dtValue = localStorage.getItem(key); 93 const dt = Date.parse(dtValue); 94 if (dt < Date.now()) { 95 localStorage.removeItem(key); 96 localStorage.removeItem('data_' + key.substring(4)); 97 } 98 } 99 else if (key.startsWith('data_')) { 100 const mainKey = key.substring(5); 101 if (!localStorage.getItem('exp_' + mainKey)) 102 localStorage.removeItem(key); 103 } 104 } 105}, 30 * 1000); 106 107var toggleTheme = () => { 108 const currentTheme = document.documentElement.getAttribute('data-bs-theme'); 109 const newTheme = currentTheme === 'dark' ? 'light' : 'dark'; 110 document.documentElement.setAttribute('data-bs-theme', newTheme); 111 localStorage.setItem('theme', newTheme); 112 document.cookie = `theme=${newTheme}; path=/;`; 113 const themeToggler = document.getElementById('page-theme-toggler'); 114 if (themeToggler) { 115 themeToggler.innerText = newTheme === 'dark' ? 'ð' : 'ð'; 116 themeToggler.classList.toggle('btn-dark', newTheme === 'dark'); 117 themeToggler.classList.toggle('btn-light', newTheme === 'light'); 118 } 119} 120 121var fixThemeButton = () => { 122 const theme = localStorage.getItem('theme'); 123 const themeToggler = document.getElementById('page-theme-toggler'); 124 if (themeToggler) { 125 themeToggler.innerText = theme === 'dark' ? 'ð' : 'ð'; 126 themeToggler.classList.toggle('btn-dark', theme === 'dark'); 127 themeToggler.classList.toggle('btn-light', theme === 'light'); 128 } 129} 130 131var setHtmlLanguage = () => { 132 const language = localStorage.getItem('language') ?? 'en'; 133 document.documentElement.setAttribute('lang', language); 134} 135 136var ShowCaptcha = (id, lang, dnHelper) => { 137 hcaptcha.render(id, 138 { 139 'hl': lang, 140 'callback': (args) =>
140 dnHelper.invokeMethodAsync('HCaptchaOnSuccess', args), 141 'expired-callback': (args) => dnHelper.invokeMethodAsync('HCaptchaOnExpired', args) 142 }); 143}; 144 145var UpdateSelects = (title, noResults) => { 146 const selects = document.querySelectorAll('select[id]'); 147 selects.forEach((select) => { 148 window.selectPickerDestroy(select.id); 149 window.selectPicker(select.id, title, noResults); 150 }); 151} 152 153var lockResolver; 154(function() { 155 if (navigator && navigator.locks && navigator.locks.request) { 156 const promise = new Promise((res) => lockResolver = res); 157 navigator.locks.request('unique_lock_name', { mode: "shared" }, () => promise); 158 } 159})();
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.