1document.addEventListener("DOMContentLoaded",function(){var audioPlayers=document.querySelectorAll(".audio__player");if(audioPlayers)audioPlayers.forEach(function(audioPlayer){function getTimeCodeFromNum(num){let seconds=parseInt(num);let minutes=parseInt(seconds/60);seconds-=60*minutes;const hours=parseInt(minutes/60);if(minutes-=60*hours,0===hours)return`${minutes}:${String(seconds%60).padStart(2,0)}`;else return`${String(hours).padStart(2,0)}:${minutes}:${String(seconds%60).padStart(2,0)}`}const track=audioPlayer.querySelector(".audio__play").getAttribute("data-audio");const audio=new Audio(track);audio.addEventListener("loadeddata",()=>{audioPlayer.querySelector(".audio__time .audio__length").textContent=getTimeCodeFromNum(audio.duration)},false);const timeline=audioPlayer.querySelector(".audio__timeline");timeline.addEventListener("click",e=>{const timelineWidth=window.getComputedStyle(timeline).width;const timeToSeek=e.offsetX/parseInt(timelineWidth)*audio.duration;audio.currentTime=timeToSeek},false),setInterval(()=>{const progressBar=audioPlayer.querySelector(".audio__progress");progressBar.style.width=audio.currentTime/audio.duration*100+"%",audioPlayer.querySelector(".audio__time .audio__current").textContent=getTimeCodeFromNum(audio.currentTime)},500);const playBtn=audioPlayer.querySelector(".audio__controls .audio__toggle-play");playBtn.addEventListener("click",()=>{if(audio.paused)playBtn.classList.remove("audio__play"),playBtn.classList.add("audio__pause"),audio.play();else playBtn.classList.remove("audio__pause"),playBtn.classList.add("audio__play"),audio.pause()},false)})});
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.