1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/assets/index-BhRMDBBT.css" data-rsc-css-href="/assets/index-BhRMDBBT.css" data-precedence="vite-rsc/importer-resources"/><title>KM4SPL Amateur Radio Downloads</title><meta name="description" content="Amateur-radio software, documentation, and station resources from Mike Hutson, KM4SPL."/><link rel="shortcut icon" href="/favicon.svg"/><link rel="icon" href="/favicon.svg"/> 2</head><body><main><header class="site-header"><a class="brand" href="#top" aria-label="KM4SPL home"><span class="brand-mark" aria-hidden="true">K4</span><span><strong>KM4SPL</strong><small>Amateur Radio</small></span></a><nav aria-label="Primary navigation"><a href="/projects/">Projects</a><a href="/projects/help/">Help</a><a href="#downloads">Downloads</a><a href="#about">About</a></nav></header><section class="hero" id="top"><div class="signal-field" aria-hidden="true"></div><div class="hero-copy"><p class="eyebrow"><svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-radio" aria-hidden="true"><path d="M16.247 7.761a6 6 0 0 1 0 8.478"></path><path d="M19.075 4.933a10 10 0 0 1 0 14.134"></path><path d="M4.925 19.067a10 10 0 0 1 0-14.134"></path><path d="M7.753 16.239a6 6 0 0 1 0-8.478"></path><circle cx="12" cy="12" r="2"></circle></svg> KM4SPL ⢠Savannah, Georgia</p><h1>Radio tools built for the shack and the field.</h1><p class="hero-summary">Software, documentation, and station resources from Mike Hutson, KM4SPL. Downloads are published here with clear version and safety information.</p><div class="hero-notes" aria-label="Site highlights"><span>QRZ Connected</span><span>ARES</span><span>Open station resources</span></div><div class="km4spl-project-actions"><a href="/projects/">Explore my projects â</a><a href="/demo/">Try Digital Command Center</a><a href="/projects/help/">Help guide</a></div></div><article class="featured-download" id="downloads"><div class="download-heading"><div class="app-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="27" height="27" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-monitor-down" aria-hidden="true"><path d="M12 13V7"></path><path d="m15 10-3 3-3-3"></path><rect width="20" height="14" x="2" y="3" rx="2"></rect><path d="M12 17v4"></path><path d="M8 21h8"></path></svg></div><div><p>Featured download</p><h2>Digital Command Center</h2></div></div><p class="download-description">A modern station interface for FT8 monitoring, radio setup, live waterfall activity, safety controls, and future automation.</p><dl class="release-grid"><div><dt>Release</dt><dd>Windows Alpha 1</dd></div><div><dt>Platform</dt><dd>Windows 10/11</dd></div><div><dt>Size</dt><dd>20.4 MB</dd></div><div><dt>Safety</dt><dd>Receive-only</dd></div></dl><a class="download-button" href="/downloads/Digital-Command-Center-Windows-Alpha.zip" download=""><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-download" aria-hidden="true"><path d="M12 15V3"></path><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><path d="m7 10 5 5 5-5"></path></svg>Download Windows Alpha</a><p class="release-warning"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg> Transmit is locked in this preview build. CAT and FT8 decoding are still being completed.</p></article></section><section id="km4spl-project-feature" aria-labelledby="km4spl-project-title"> 3<div class="km4spl-project-overview"><div><p>PROJECTS · BY KM4SPL</p><h2 id="km4spl-project-title">Digital Command Center</h2><span>Explore FT8, FT4, JS8, WSPR, PSK31, and RTTY in the browser demo. Find downloads, radio setup, and a complete searchable help guide right here.</span></div><a href="/projects/">Explore the project â</a></div> 4<div class="km4spl-project-shortcuts"><a href="/demo/">Launch demo â</a><a href="/projects/#downloads">Downloads â</a><a href="/projects/help/">Full help guide â</a></div> 5<section class="help-search" id="home-help-search" data-help-search aria-label="Search project help"> 6<form role="search" action="/projects/help/" method="get"><label for="home-help-search-input">Search projects & help</label><input id="home-help-search-input" name="q" type="search" maxlength="200" placeholder="Try ALC, FT4, radio setup, or saved profiles" aria-controls="home-help-search-results" autocomplete="off"><button type="submit">Search</button><button type="button" class="help-search-clear" hidden>Clear</button></form> 7<div class="help-search-examples"><span>Popular:</span><button type="button" data-search-example="first contact">First contact</button><button type="button" data-search-example="ALC">ALC slider</button><button type="button" data-search-example="no messages">No messages</button><button type="button" data-search-example="install windows">Install</button></div>
8<p class="help-search-status" role="status" aria-live="polite">Search needs JavaScript. You can always browse the complete guide below.</p><ol id="home-help-search-results" class="help-search-results"></ol><button type="button" class="help-search-more" hidden>Show all matching topics</button> 9<noscript><p><a href="/projects/help/">Open the full guide</a> and use your browser's Find command.</p></noscript></section> 10</section> 11<section class="content-section release-section"><div class="section-heading"><p class="eyebrow">Current files</p><h2>Downloads</h2><p>Each published file includes a release label and integrity details so you know exactly what you are installing.</p></div><div class="file-list"><article class="file-row"><div class="file-type" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-archive" aria-hidden="true"><path d="M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5"></path><path d="M14 2v5a1 1 0 0 0 1 1h5"></path><path d="M8 12v-1"></path><path d="M8 18v-2"></path><path d="M8 7V6"></path><circle cx="8" cy="20" r="2"></circle></svg></div><div class="file-details"><h3>Digital Command Center â Windows Alpha 1</h3><p>Portable Windows preview. Extract the ZIP and run DigitalCommandCenter.exe.</p><code title="SHA-256 checksum">SHA-256 5fa3a94d5a9bâ¦e566bfa1</code></div><a href="/downloads/Digital-Command-Center-Windows-Alpha.zip" download="" aria-label="Download Digital Command Center Windows Alpha 1"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-download" aria-hidden="true"><path d="M12 15V3"></path><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><path d="m7 10 5 5 5-5"></path></svg> Download</a></article><article class="file-row muted-file"><div class="file-type" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-radio" aria-hidden="true"><path d="M16.247 7.761a6 6 0 0 1 0 8.478"></path><path d="M19.075 4.933a10 10 0 0 1 0 14.134"></path><path d="M4.925 19.067a10 10 0 0 1 0-14.134"></path><path d="M7.753 16.239a6 6 0 0 1 0-8.478"></path><circle cx="12" cy="12" r="2"></circle></svg></div><div class="file-details"><h3>Digital Command Center â Raspberry Pi</h3><p>The first public Raspberry Pi package is being prepared.</p></div><span class="status-pill">Coming soon</span></article></div></section><section class="about-section" id="about"><div class="callsign-block" aria-hidden="true"><span>CALLSIGN</span><strong>KM4SPL</strong><small>Savannah, Georgia</small></div><div class="about-copy"><p class="eyebrow">About this station</p><h2>Practical amateur radio, emergency communications, and digital experimentation.</h2><p>Iâm Mike Hutson, KM4SPL. This is the home for the radio software and station resources I build and use. Digital Command Center is the first project published here, with additional releases added as they are ready.</p></div></section><footer><div><strong>KM4SPL</strong><span>Amateur Radio ⢠Savannah, Georgia</span></div><a href="#downloads">Download center</a></footer></main> 12<!-- KM4SPL QRZ INTEGRATION BEGIN --> 13<style id="km4spl-qrz-styles"> 14#km4spl-qrz { 15 max-width: 1180px; 16 margin: 0 auto; 17 padding: 72px 24px 90px; 18 color: #eef7fa; 19 border-top: 1px solid #183743; 20} 21 22#km4spl-qrz .qrz-label { 23 color: #43d7ee; 24 font: 700 13px/1.4 monospace; 25 letter-spacing: .16em; 26 text-transform: uppercase; 27} 28 29#km4spl-qrz .qrz-heading { 30 margin: 12px 0 12px; 31 font-size: clamp(32px, 5vw, 58px); 32 line-height: 1.02; 33} 34 35#km4spl-qrz .qrz-description { 36 max-width: 760px; 37 color: #aad2df; 38 font-size: 17px; 39 line-height: 1.7; 40} 41 42#km4spl-qrz .qrz-actions { 43 display: flex; 44 flex-wrap: wrap; 45 gap: 12px; 46 margin: 26px 0 32px; 47} 48 49#km4spl-qrz .qrz-button { 50 display: inline-flex;
51 align-items: center; 52 justify-content: center; 53 min-height: 48px; 54 padding: 0 22px; 55 border: 1px solid #2c6775; 56 border-radius: 12px; 57 color: #07131a; 58 background: #f9b936; 59 font-weight: 800; 60 text-decoration: none; 61} 62 63#km4spl-qrz .qrz-button.secondary { 64 color: #dff8ff; 65 background: #0c222b; 66} 67 68#km4spl-qrz .qrz-frame { 69 overflow: auto; 70 border: 1px solid #214854; 71 border-radius: 18px; 72 background: #ffffff; 73} 74 75#km4spl-qrz iframe { 76 display: block; 77 width: 100%; 78 min-width: 640px; 79 height: 540px; 80 border: 0; 81} 82 83#km4spl-qrz .qrz-note { 84 margin-top: 12px; 85 color: #789da8; 86 font-size: 13px; 87} 88 89@media (max-width: 700px) { 90 #km4spl-qrz { 91 padding: 54px 18px 70px; 92 } 93 94 #km4spl-qrz .qrz-button { 95 width: 100%; 96 } 97} 98</style> 99
100<script id="km4spl-qrz-loader"> 101(() => { 102 const removeIncorrectClass = () => { 103 document.querySelectorAll("body *").forEach((element) => { 104 if (element.children.length !== 0) return; 105 106 const text = element.textContent.trim(); 107 108 if (text === "QRZ Profile") { 109 element.textContent = "QRZ Connected"; 110 } 111 112 if (text === "Savannah, Georgia") { 113 element.textContent = "Savannah, Georgia"; 114 } 115 }); 116 }; 117 118 const mountQRZ = () => { 119 removeIncorrectClass(); 120 121 if (document.getElementById("km4spl-qrz")) return; 122 123 const section = document.createElement("section"); 124 section.id = "km4spl-qrz"; 125 section.innerHTML = ` 126 <div class="qrz-label">QRZ.COM</div> 127 <h2 class="qrz-heading">KM4SPL on QRZ</h2> 128 <p class="qrz-description"> 129 Visit my QRZ callsign page or browse the latest public 130 contacts from my QRZ Logbook. 131 </p> 132 133 <div class="qrz-actions"> 134 <a class="qrz-button" 135 href="https://www.qrz.com/db/KM4SPL" 136 target="_blank" 137 rel="noopener noreferrer"> 138 View My QRZ Profile 139 </a> 140 141 <a class="qrz-button secondary" 142 href="https://logbook.qrz.com/lbstat/KM4SPL/" 143 target="_blank" 144 rel="noopener noreferrer"> 145 Open Public Logbook 146 </a> 147 </div> 148 149 <div class="qrz-frame"> 150 <iframe 151 src="https://logbook.qrz.com/lbstat/KM4SPL/" 152 title="KM4SPL QRZ Logbook" 153 loading="lazy"> 154 </iframe> 155 </div> 156 157 <div class="qrz-note"> 158 Latest public logbook entries supplied by QRZ.com. 159 </div> 160 `; 161 162 const footer = document.querySelector("footer"); 163 164 if (footer) { 165 footer.before(section); 166 } else { 167 document.body.append(section); 168 } 169 }; 170 171 let timer; 172 173 new MutationObserver(() => { 174 clearTimeout(timer); 175 timer = setTimeout(mountQRZ, 50); 176 }).observe(document.body, { 177 childList: true, 178 subtree: true 179 }); 180 181 if (document.readyState === "loading") { 182 document.addEventListener("DOMContentLoaded", mountQRZ); 183 } else { 184 mountQRZ(); 185 } 186})(); 187</script>
187 188<!-- KM4SPL QRZ INTEGRATION END --> 189 190<!-- KM4SPL-REPEATERS-START --> 191<style id="km4spl-repeaters-style"> 192 #repeaters.km4spl-repeaters { 193 width: min(1180px, calc(100% - 40px)); 194 margin: 0 auto; 195 padding: 92px 0; 196 border-top: 1px solid rgba(100, 220, 236, .18); 197 color: #eaf5f7; 198 } 199 .km4spl-repeaters-head { 200 display: grid; 201 grid-template-columns: minmax(0, .82fr) minmax(0, 1.18fr); 202 gap: 52px; 203 align-items: end; 204 margin-bottom: 34px; 205 } 206 .km4spl-repeaters .km4spl-kicker { 207 margin: 0 0 12px; 208 color: #51d9ed; 209 font: 700 13px/1.2 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; 210 letter-spacing: .12em; 211 text-transform: uppercase; 212 } 213 .km4spl-repeaters h2 { 214 margin: 0; 215 max-width: 700px; 216 color: #f5fafb; 217 font-size: clamp(34px, 5vw, 58px); 218 line-height: 1.02; 219 letter-spacing: -.045em; 220 } 221 .km4spl-repeaters-intro { 222 margin: 0; 223 color: #b8d7dd; 224 font-size: 17px; 225 line-height: 1.7; 226 } 227 .km4spl-repeater-grid { 228 display: grid; 229 grid-template-columns: repeat(2, minmax(0, 1fr)); 230 gap: 22px; 231 } 232 .km4spl-repeater-card { 233 position: relative; 234 display: flex; 235 flex-direction: column; 236 min-height: 420px; 237 padding: 30px; 238 overflow: hidden; 239 border: 1px solid rgba(91, 191, 208, .28); 240 border-radius: 22px; 241 background: linear-gradient(145deg, rgba(15, 40, 49, .96), rgba(8, 27, 34, .98)); 242 box-shadow: 0 18px 55px rgba(0, 0, 0, .18); 243 } 244 .km4spl-repeater-card::before { 245 content: ""; 246 position: absolute; 247 inset: 0 0 auto; 248 height: 3px; 249 background: linear-gradient(90deg, #f8bc43, #53d9eb, transparent 80%); 250 } 251 .km4spl-repeater-band { 252 display: flex; 253 justify-content: space-between; 254 gap: 18px; 255 align-items: center; 256 margin-bottom: 22px; 257 } 258 .km4spl-band-label, 259 .km4spl-call-label { 260 color: #74dceb; 261 font: 700 12px/1.2 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; 262 letter-spacing: .1em; 263 text-transform: uppercase; 264 } 265 .km4spl-call-label { 266 padding: 7px 10px; 267 border: 1px solid rgba(116, 220, 235, .28); 268 border-radius: 999px; 269 } 270 .km4spl-repeater-card h3 { 271 margin: 0; 272 color: #f8bc43; 273 font-size: clamp(34px, 5vw, 52px); 274 line-height: 1; 275 letter-spacing: -.045em; 276 } 277 .km4spl-repeater-card h3 span { 278 color: #c6e0e5; 279 font-size: 16px; 280 font-weight: 600; 281 letter-spacing: 0; 282 } 283 .km4spl-repeater-specs { 284 display: grid; 285 grid-template-columns: repeat(2, minmax(0, 1fr)); 286 gap: 1px; 287 margin: 25px 0; 288 overflow: hidden; 289 border: 1px solid rgba(106, 200, 215, .22); 290 border-radius: 14px; 291 background: rgba(106, 200, 215, .16); 292 } 293 .km4spl-repeater-specs div { 294 padding: 14px 16px; 295 background: #0b252d; 296 } 297 .km4spl-repeater-specs dt { 298 margin-bottom: 5px; 299 color: #77bac5; 300 font: 700 11px/1.2 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; 301 letter-spacing: .09em; 302 text-transform: uppercase; 303 } 304 .km4spl-repeater-specs dd { 305 margin: 0; 306 color: #f0f7f8; 307 font-size: 14px; 308 font-weight: 700; 309 } 310 .km4spl-repeater-copy { 311 margin: 0 0 24px; 312 color: #b8d7dd; 313 line-height: 1.65; 314 } 315 .km4spl-repeater-actions { 316 display: grid; 317 gap: 10px; 318 margin-top: auto; 319 } 320 .km4spl-status-button, 321 .km4spl-cars-button { 322 display: inline-flex; 323 justify-content: center; 324 align-items: center; 325 min-height: 52px; 326 padding: 12px 18px; 327 border-radius: 12px; 328 font-weight: 800; 329 line-height: 1.25; 330 text-align: center; 331 text-decoration: none; 332 transition: transform .18s ease, filter .18s ease, border-color .18s ease; 333 } 334 .km4spl-status-button { 335 color: #06141a; 336 background: #f8bc43; 337 } 338 .km4spl-cars-button { 339 color: #9eeaf5; 340 border: 1px solid rgba(94, 215, 232, .34); 341 background: rgba(21, 72, 82, .35); 342 } 343 .km4spl-status-button:hover, 344 .km4spl-cars-button:hover { 345 transform: translateY(-2px); 346 filter: brightness(1.06); 347 } 348 .km4spl-http-note { 349 margin: 22px 0 0; 350 color: #7faab2; 351 font-size: 13px; 352 line-height: 1.55; 353 } 354 @media (max-width: 820px) { 355 #repeaters.km4spl-repeaters { padding: 68px 0; } 356 .km4spl-repeaters-head, 357 .km4spl-repeater-grid { grid-template-columns: 1fr; } 358 .km4spl-repeaters-head { gap: 20px; } 359 .km4spl-repeater-card { min-height: 0; } 360 } 361 @media (max-width: 520px) { 362 #repeaters.km4spl-repeaters { width: min(100% - 28px, 1180px); } 363 .km4spl-repeater-card { padding: 24px 20px; border-radius: 18px; } 364 .km4spl-repeater-specs { grid-template-columns: 1fr; } 365 } 366</style>
367<script id="km4spl-repeaters-script"> 368(function () { 369 const sectionHTML = ` 370 <section class="km4spl-repeaters" id="repeaters" aria-labelledby="repeaters-title"> 371 <div class="km4spl-repeaters-head"> 372 <div> 373 <p class="km4spl-kicker">Savannah repeater resources</p> 374 <h2 id="repeaters-title">W4LHS repeaters and EchoLink status</h2> 375 </div> 376 <p class="km4spl-repeaters-intro"> 377 The Coastal Amateur Radio Society supports amateur radio in and around Savannah, Georgia. 378 Use these links to view the live EchoLink status pages, or visit CARS for club and repeater information. 379 </p> 380 </div> 381 <div class="km4spl-repeater-grid"> 382 <article class="km4spl-repeater-card"> 383 <div class="km4spl-repeater-band"> 384 <span class="km4spl-band-label">VHF repeater</span> 385 <span class="km4spl-call-label">W4LHS</span> 386 </div> 387 <h3>147.330 <span>MHz</span></h3> 388 <dl class="km4spl-repeater-specs"> 389 <div><dt>Offset</dt><dd>+600 kHz</dd></div> 390 <div><dt>CTCSS tone</dt><dd>203.5 Hz</dd></div> 391 </dl> 392 <p class="km4spl-repeater-copy"> 393 Located at the WSAV tower on Victory Drive, this repeater covers much of Chatham County, 394 with especially strong service around downtown and eastern Savannah. EchoLink is linked to the Georgia Conference. 395 </p> 396 <div class="km4spl-repeater-actions"> 397 <a class="km4spl-status-button" href="http://echolink33.w4lhs.ampr.org/" target="_blank" rel="noopener noreferrer">Check 147.330 EchoLink status</a> 398 <a class="km4spl-cars-button" href="https://coastalamateurradiosociety.net/wpW4LHSblog/?page_id=10" target="_blank" rel="noopener noreferrer">View CARS repeater details</a> 399 </div> 400 </article> 401 <article class="km4spl-repeater-card"> 402 <div class="km4spl-repeater-band"> 403 <span class="km4spl-band-label">UHF repeater</span> 404 <span class="km4spl-call-label">W4LHS</span> 405 </div> 406 <h3>442.700 <span>MHz</span></h3> 407 <dl class="km4spl-repeater-specs"> 408 <div><dt>Offset</dt><dd>+5 MHz</dd></div> 409 <div><dt>CTCSS tone</dt><dd>123.0 Hz</dd></div> 410 </dl> 411 <p class="km4spl-repeater-copy"> 412 Its antenna is about 850 feet high at the WSAV tower on Little Neck Road, providing broad regional coverage. 413 CARS holds its Sunday ragchew net here at 8:30 p.m. local time, and all licensed amateurs are welcome. 414 </p> 415 <div class="km4spl-repeater-actions"> 416 <a class="km4spl-status-button" href="http://echolink700.w4lhs.ampr.org/" target="_blank" rel="noopener noreferrer">Check 442.700 EchoLink status</a> 417 <a class="km4spl-cars-button" href="https://coastalamateurradiosociety.net/wpW4LHSblog/" target="_blank" rel="noopener noreferrer">Visit Coastal Amateur Radio Society</a> 418 </div> 419 </article> 420 </div> 421 <p class="km4spl-http-note"> 422 EchoLink status pages are provided on HTTP addresses and open in a new tab; your browser may mark those status pages as âNot secure.â 423 </p> 424 </section>`; 425 426 function mountRepeaters() { 427 if (!document.getElementById("repeaters")) { 428 const holder = document.createElement("div"); 429 holder.innerHTML = sectionHTML.trim(); 430 const section = holder.firstElementChild; 431 const footer = document.querySelector("footer"); 432 const about = document.getElementById("about"); 433 if (footer && footer.parentNode) { 434 footer.parentNode.insertBefore(section, footer); 435 } else if (about && about.parentNode) { 436 about.parentNode.insertBefore(section, about.nextSibling); 437 } else { 438 document.body.appendChild(section); 439 } 440 } 441 442 const nav = document.querySelector(".site-header nav"); 443 if (nav && !nav.querySelector('a[href="#repeaters"]')) { 444 const link = document.createElement("a"); 445 link.href = "#repeaters"; 446 link.textContent = "Repeaters"; 447 nav.appendChild(link); 448 } 449 } 450 451 if (document.readyState === "loading") { 452 document.addEventListener("DOMContentLoaded", mountRepeaters, { once: true });
453 } else { 454 mountRepeaters(); 455 } 456 window.addEventListener("load", mountRepeaters, { once: true }); 457 setTimeout(mountRepeaters, 400); 458 setTimeout(mountRepeaters, 1400); 459 460 const observer = new MutationObserver(function () { 461 if (!document.getElementById("repeaters")) mountRepeaters(); 462 }); 463 observer.observe(document.documentElement, { childList: true, subtree: true }); 464})(); 465</script>
465 466<!-- KM4SPL-REPEATERS-END --> 467<link id="km4spl-project-links" rel="stylesheet" href="/projects/site-links.css?v=1860eb431fc5"><link rel="stylesheet" href="/projects/help.css?v=ed0a5b4b99f4">
467<script defer src="/projects/help-index.js?v=96ba0cb71630"></script>
467<script defer src="/projects/help-search.js?v=fc970f5b4665"></script>
467</body></html>
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.