1<!DOCTYPE HTML> 2<html lang="en" class="dark" dir="ltr"> 3 <head> 4 <!-- Book generated using mdBook --> 5 <meta charset="UTF-8"> 6 <title>Install - xplr book</title> 7 8 9 <!-- Custom HTML head --> 10 11 <meta name="description" content="A hackable, minimal, fast TUI file explorer"> 12 <meta name="viewport" content="width=device-width, initial-scale=1"> 13 <meta name="theme-color" content="#ffffff"> 14 15 <link rel="shortcut icon" href="favicon.png"> 16 <link rel="stylesheet" href="css/variables.css"> 17 <link rel="stylesheet" href="css/general.css"> 18 <link rel="stylesheet" href="css/chrome.css"> 19 <link rel="stylesheet" href="css/print.css" media="print"> 20 21 <!-- Fonts --> 22 <link rel="stylesheet" href="FontAwesome/css/font-awesome.css"> 23 <link rel="stylesheet" href="fonts/fonts.css"> 24 25 <!-- Highlight.js Stylesheets --> 26 <link rel="stylesheet" href="highlight.css"> 27 <link rel="stylesheet" href="tomorrow-night.css"> 28 <link rel="stylesheet" href="ayu-highlight.css"> 29 30 <!-- Custom theme stylesheets --> 31 32 33 <!-- EthicalAds --> 34
34<script async src="https://media.ethicalads.io/media/client/ethicalads.min.js"></script>
34 35 </head> 36 <body class="sidebar-visible no-js"> 37 <div id="body-container"> 38 <!-- Provide site root to javascript --> 39
39<script> 40 var path_to_root = ""; 41 var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "coal" : "dark"; 42 </script>
42 43 44 <!-- Work around some values being stored in localStorage wrapped in quotes --> 45
45<script> 46 try { 47 var theme = localStorage.getItem('mdbook-theme'); 48 var sidebar = localStorage.getItem('mdbook-sidebar'); 49 50 if (theme.startsWith('"') && theme.endsWith('"')) { 51 localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1)); 52 } 53 54 if (sidebar.startsWith('"') && sidebar.endsWith('"')) { 55 localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1)); 56 } 57 } catch (e) { } 58 </script>
58 59 60 <!-- Set the theme before any content is loaded, prevents flash --> 61
61<script> 62 var theme; 63 try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { } 64 if (theme === null || theme === undefined) { theme = default_theme; } 65 var html = document.querySelector('html'); 66 html.classList.remove('dark') 67 html.classList.add(theme); 68 var body = document.querySelector('body'); 69 body.classList.remove('no-js') 70 body.classList.add('js'); 71 </script>
71 72 73 <input type="checkbox" id="sidebar-toggle-anchor" class="hidden"> 74 75 <!-- Hide / unhide sidebar before it is displayed --> 76
76<script> 77 var body = document.querySelector('body'); 78 var sidebar = null; 79 var sidebar_toggle = document.getElementById("sidebar-toggle-anchor"); 80 if (document.body.clientWidth >= 1080) { 81 try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { } 82 sidebar = sidebar || 'visible'; 83 } else { 84 sidebar = 'hidden'; 85 } 86 sidebar_toggle.checked = sidebar === 'visible'; 87 body.classList.remove('sidebar-visible'); 88 body.classList.add("sidebar-" + sidebar); 89 </script>
89 90 91 <nav id="sidebar" class="sidebar" aria-label="Table of contents"> 92 <div class="sidebar-scrollbox"> 93 <ol class="chapter"><li class="chapter-item expanded "><a href="introduction.html"><strong aria-hidden="true">1.</strong> Introduction</a></li><li class="chapter-item expanded "><a href="quickstart.html"><strong aria-hidden="true">2.</strong> Quickstart</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="install.html" class="active"><strong aria-hidden="true">2.1.</strong> Install</a></li><li class="chapter-item expanded "><a href="post-install.html"><strong aria-hidden="true">2.2.</strong> Post Install</a></li></ol></li><li class="chapter-item expanded "><a href="configuration.html"><strong aria-hidden="true">3.</strong> Configuration</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="general-config.html"><strong aria-hidden="true">3.1.</strong> General</a></li><li class="chapter-item expanded "><a href="node_types.html"><strong aria-hidden="true">3.2.</strong> Node Types</a></li><li class="chapter-item expanded "><a href="layouts.html"><strong aria-hidden="true">3.3.</strong> Layouts</a></li><li class="chapter-item expanded "><a href="modes.html"><strong aria-hidden="true">3.4.</strong> Modes</a></li></ol></li><li class="chapter-item expanded "><a href="concept.html"><strong aria-hidden="true">4.</strong> Concept</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="sum-type.html"><strong aria-hidden="true">4.1.</strong> Sum Type</a></li><li class="chapter-item expanded "><a href="key-bindings.html"><strong aria-hidden="true">4.2.</strong> Key Bindings</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="configure-key-bindings.html"><strong aria-hidden="true">4.2.1.</strong> Configure Key Bindings</a></li><li class="chapter-item expanded "><a href="default-key-bindings.html"><strong aria-hidden="true">4.2.2.</strong> Default Key Bindings</a></li><li class="chapter-item expanded "><a href="debug-key-bindings.html"><strong aria-hidden="true">4.2.3.</strong> Debug Key Bindings</a></li></ol></li><li class="chapter-item expanded "><a href="node-type.html"><strong aria-hidden="true">4.3.</strong> Node Type</a></li><li class="chapter-item expanded "><a href="layout.html"><strong aria-hidden="true">4.4.</strong> Layout</a></li><li class="chapter-item expanded "><a href="mode.html"><strong aria-hidden="true">4.5.</strong> Mode</a></li><li class="chapter-item expanded "><a href="message.html"><strong aria-hidden="true">4.6.</strong> Message</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="messages.html"><strong aria-hidden="true">4.6.1.</strong> Full List of Messages</a></li><li class="chapter-item expanded "><a href="input-operation.html"><strong aria-hidden="true">4.6.2.</strong> Input Operation</a></li></ol></li><li class="chapter-item expanded "><a href="borders.html"><strong aria-hidden="true">4.7.</strong> Borders</a></li><li class="chapter-item expanded "><a href="style.html"><strong aria-hidden="true">4.8.</strong> Style</a></li><li class="chapter-item expanded "><a href="searching.html"><strong aria-hidden="true">4.9.</strong> Searching</a></li><li class="chapter-item expanded "><a href="sorting.html"><strong aria-hidden="true">4.10.</strong> Sorting</a></li><li class="chapter-item expanded "><a href="filtering.html"><strong aria-hidden="true">4.11.</strong> Filtering</a></li><li class="chapter-item expanded "><a href="column-renderer.html"><strong aria-hidden="true">4.12.</strong> Column Renderer</a></li><li class="chapter-item expanded "><a href="lua-function-calls.html"><strong aria-hidden="true">4.13.</strong> Lua Function Calls</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="xplr.util.html"><strong aria-hidden="true">4.13.1.</strong> xplr.util</a></li></ol></li><li class="chapter-item expanded "><a href="environment-variables-and-pipes.html"><strong aria-hidden="true">4.14.</strong> Environment Variables and Pipes</a></li></ol></li><li class="chapter-item expanded "><a href="awesome-hacks.html"><strong aria-hidden="true">5.</strong> Awesome Hacks</a></li><li class="chapter-item expanded "><a href="plugin.html"><strong aria-hidden="true">6.</strong> Plugin</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="installing-plugins.html"><strong aria-hidden="true">6.1.</strong> Installing Plugins</a></li><li class="chapter-item expanded "><a href="writing-plugins.html"><strong aria-hidden="true">6.2.</strong> Writing Plugins</a></li><li class="chapter-item expanded "><a href="awesome-plugins.html"><strong aria-hidden="true">6.3.</strong> Awesome Plugins</a></li></ol></li><li class="chapter-item expanded "><a href="integration.html"><strong aria-hidden="true">7.</strong> Integration</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="awesome-integrations.html"><strong aria-hidden="true">7.1.</strong> Awesome Integrations</a></li></ol></li><li class="chapter-item expanded "><a href="alternatives.html"><strong aria-hidden="true">8.</strong> Alternatives</a></li><li class="chapter-item expanded "><a href="upgrade-guide.html"><strong aria-hidden="true">9.</strong> Upgrade Guide</a></li></ol> 94 95 <!-- EthicalAds --> 96 <div 97 id="docs-sidebar-bottom" 98 class="dark flat" 99 data-ea-publisher="xplrdev" 100 data-ea-type="image" 101 ></div> 102 </div> 103 <div id="sidebar-resize-handle" class="sidebar-resize-handle"> 104 <div class="sidebar-resize-indicator"></div> 105 </div> 106 </nav> 107 108 <!-- Track and set sidebar scroll position --> 109
109<script> 110 var sidebarScrollbox = document.querySelector('#sidebar .sidebar-scrollbox'); 111 sidebarScrollbox.addEventListener('click', function(e) { 112 if (e.target.tagName === 'A') { 113 sessionStorage.setItem('sidebar-scroll', sidebarScrollbox.scrollTop); 114 } 115 }, { passive: true }); 116 var sidebarScrollTop = sessionStorage.getItem('sidebar-scroll'); 117 sessionStorage.removeItem('sidebar-scroll'); 118 if (sidebarScrollTop) { 119 // preserve sidebar scroll position when navigating via links within sidebar 120 sidebarScrollbox.scrollTop = sidebarScrollTop; 121 } else { 122 // scroll sidebar to current active section when navigating via "next/previous chapter" buttons 123 var activeSection = document.querySelector('#sidebar .active'); 124 if (activeSection) { 125 activeSection.scrollIntoView({ block: 'center' }); 126 } 127 } 128 </script>
128 129 130 <div id="page-wrapper" class="page-wrapper"> 131 132 <div class="page"> 133 <div id="menu-bar-hover-placeholder"></div> 134 <div id="menu-bar" class="menu-bar sticky"> 135 <div class="left-buttons"> 136 <label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar"> 137 <i class="fa fa-bars"></i> 138 </label> 139 <button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list"> 140 <i class="fa fa-paint-brush"></i> 141 </button> 142 <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu"> 143 <li role="none"><button role="menuitem" class="theme" id="light">Light</button></li> 144 <li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li> 145 <li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li> 146 <li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li> 147 <li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li> 148 </ul> 149 <button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar"> 150 <i class="fa fa-search"></i> 151 </button> 152 </div> 153 154 <h1 class="menu-title">xplr book</h1> 155 156 <div class="right-buttons"> 157 <a href="print.html" title="Print this book" aria-label="Print this book"> 158 <i id="print-button" class="fa fa-print"></i> 159 </a> 160 <a href="https://github.com/sayanarijit/xplr" title="Git repository" aria-label="Git repository"> 161 <i id="git-repository-button" class="fa fa-github"></i> 162 </a> 163 <a href="https://github.com/sayanarijit/xplr/edit/main/docs/en/src/install.md" title="Suggest an edit" aria-label="Suggest an edit"> 164 <i id="git-edit-button" class="fa fa-edit"></i> 165 </a> 166 167 </div> 168 </div> 169 170 <div id="search-wrapper" class="hidden"> 171 <form id="searchbar-outer" class="searchbar-outer"> 172 <input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header"> 173 </form> 174 <div id="searchresults-outer" class="searchresults-outer hidden"> 175 <div id="searchresults-header" class="searchresults-header"></div> 176 <ul id="searchresults"> 177 </ul> 178 </div> 179 </div> 180 181 <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM --> 182
182<script> 183 document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible'); 184 document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible'); 185 Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) { 186 link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1); 187 }); 188 </script>
188 189 190 <div id="content" class="content"> 191 <main> 192 <h1 id="try-in-docker"><a class="header" href="#try-in-docker">Try in Docker</a></h1> 193<p>If you prefer to try it before installing, here's the snippet for your 194convenience.</p> 195<pre><code class="language-bash">docker run -w / -it --rm ubuntu sh -uec ' 196 apt-get update -y 197 apt-get install -y wget tar vim less 198 wget https://github.com/sayanarijit/xplr/releases/latest/download/xplr-linux.tar.gz 199 tar -xzvf xplr-linux.tar.gz 200 ./xplr 201' 202</code></pre> 203<h1 id="install"><a class="header" href="#install">Install</a></h1> 204<p>You can install xplr using one of the following ways. Each has their own 205advantages and limitations.</p> 206<p>For example, the <a href="#direct-download">Direct Download</a>, <a href="#from-cratesio">From crates.io</a>, and 207<a href="#build-from-source">Build From Source</a> methods allow the users to install the latest possible 208version of xplr, but they have one common drawback - the user will need to keep 209an eye on the releases, and manually upgrade xplr when a new version is 210available.</p> 211<p>One way to keep an eye on the releases is to <a href="https://github.com/sayanarijit/xplr/watchers">watch the repository</a>.</p> 212<h2 id="community-maintained-repositories"><a class="header" href="#community-maintained-repositories">Community Maintained Repositories</a></h2> 213<p>xplr can be installed from one of the following community maintained 214repositories:</p> 215<p><a href="https://repology.org/project/xplr/versions"><img src="https://repology.org/badge/vertical-allrepos/xplr.svg" alt="packaging status" /></a></p> 216<h3 id="cross-platform"><a class="header" href="#cross-platform">Cross-platform</a></h3> 217<h4 id="nixpkgs"><a class="header" href="#nixpkgs"><a href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/xp/xplr/package.nix">Nixpkgs</a></a></h4> 218<pre><code>nix-env -f https://github.com/NixOS/nixpkgs/tarball/master -iA xplr 219</code></pre> 220<p>Or</p> 221<pre><code class="language-nix"># configuration.nix or darwin-configuration.nix 222environment.systemPackages = with nixpkgs; [ 223 xplr 224 # ... 225]; 226</code></pre> 227<h4 id="home-manager"><a class="header" href="#home-manager"><a href="https://github.com/nix-community/home-manager/blob/master/modules/programs/xplr.nix">Home Manager</a></a></h4> 228<pre><code class="language-nix"># home.nix 229home.packages = with nixpkgs; [ 230 xplr 231 # ... 232]; 233</code></pre> 234<p>Or</p> 235<pre><code class="language-nix"># home.nix 236programs.xplr = { 237 enable = true; 238 239 # Optional params: 240 plugins = { 241 tree-view = fetchFromGitHub { 242 owner = "sayanarijit"; 243 repo = "tree-view.xplr"; 244 }; 245 local-plugin = "/home/user/.config/xplr/plugins/local-plugin"; 246 }; 247 extraConfig = '' 248 require("tree-view").setup() 249 require("local-plugin").setup() 250 ''; 251}; 252</code></pre> 253<h3 id="ubuntu"><a class="header" href="#ubuntu">Ubuntu</a></h3> 254<p>Snap</p> 255<pre><code class="language-bash">sudo snap install xplr 256</code></pre> 257<h3 id="arch-linux"><a class="header" href="#arch-linux">Arch Linux</a></h3> 258<p>(same for Manjaro Linux)</p> 259<h4 id="official-community-repo"><a class="header" href="#official-community-repo"><a href="https://archlinux.org/packages/extra/x86_64/xplr">Official Community Repo</a></a></h4> 260<pre><code>sudo pacman -S xplr 261</code></pre> 262<h4 id="aur"><a class="header" href="#aur"><a href="https://aur.archlinux.org/packages/?O=0&SeB=n&K=xplr&outdated=&SB=n&SO=a&PP=50&do_Search=Go">AUR</a></a></h4> 263<p>Git version:</p> 264<pre><code>paru -S xplr-git 265</code></pre> 266<h3 id="alpine-linux"><a class="header" href="#alpine-linux">Alpine Linux</a></h3> 267<h4 id="edge-testing-repo"><a class="header" href="#edge-testing-repo"><a href="https://pkgs.alpinelinux.org/packages?name=xplr">Edge Testing Repo</a></a></h4> 268<pre><code> 269# Add the following line in /etc/apk/repositories: 270 271# https://dl-cdn.alpinelinux.org/alpine/edge/testing 272 273apk add xplr bash less 274</code></pre> 275<h3 id="void-linux"><a class="header" href="#void-linux">Void Linux</a></h3> 276<h4 id="void-templates-by-shubham"><a class="header" href="#void-templates-by-shubham"><a href="https://github.com/shubham-cpp/void-pkg-templates">void-templates by shubham</a></a></h4> 277<h3 id="gentoo"><a class="header" href="#gentoo">Gentoo</a></h3> 278<h4 id="overlay-guru"><a class="header" href="#overlay-guru"><a href="https://gpo.zugaina.org/Overlays/guru/app-misc/xplr">Overlay GURU</a></a></h4> 279<h3 id="macos"><a class="header" href="#macos">macOS</a></h3> 280<p>Make sure you have the latest version of <a href="https://formulae.brew.sh/formula/coreutils">GNU core utilities</a> installed.</p> 281<h4 id="macports"><a class="header" href="#macports"><a href="https://ports.macports.org/port/xplr">MacPorts</a></a></h4> 282<pre><code>sudo port selfupdate 283sudo port install xplr 284</code></pre> 285<h4 id="homebrew"><a class="header" href="#homebrew"><a href="https://formulae.brew.sh/formula/xplr">Homebrew</a></a></h4> 286<p>Stable branch:</p> 287<pre><code>brew install xplr 288</code></pre> 289<p>HEAD branch:</p> 290<pre><code>brew install --head xplr 291</code></pre> 292<h3 id="freebsd"><a class="header" href="#freebsd">FreeBSD</a></h3> 293<h4 id="ports"><a class="header" href="#ports"><a href="https://cgit.freebsd.org/ports/plain/misc/xplr/">ports</a></a></h4> 294<pre><code>pkg install xplr 295</code></pre> 296<p>Or</p> 297<pre><code>cd /usr/ports/misc/xplr 298make install clean 299</code></pre> 300<h3 id="netbsd"><a class="header" href="#netbsd">NetBSD</a></h3> 301<h4 id="pkgsrc"><a class="header" href="#pkgsrc"><a href="https://pkgsrc.se/sysutils/xplr">pkgsrc</a></a></h4> 302<pre><code>pkgin install xplr 303</code></pre> 304<p>Or</p> 305<pre><code>cd /usr/pkgsrc/sysutils/xplr 306make install 307</code></pre> 308<h2 id="direct-download"><a class="header" href="#direct-download">Direct Download</a></h2> 309<p>One can directly download the standalone binary from the 310<a href="https://github.com/sayanarijit/xplr/releases">releases</a>.</p> 311<p>Currently, the following options are available for direct download:</p> 312<ul> 313<li><a href="https://github.com/sayanarijit/xplr/releases/latest/download/xplr-linux.tar.gz">GNU/Linux</a></li> 314<li><a href="https://github.com/sayanarijit/xplr/releases/latest/download/xplr-macos.tar.gz">macOS</a></li> 315</ul> 316<p>Command-line instructions:</p> 317<pre><code class="language-bash">platform="linux" # or "macos" 318 319# Download 320wget https://github.com/sayanarijit/xplr/releases/latest/download/xplr-$platform.tar.gz 321 322# Extract 323tar xzvf xplr-$platform.tar.gz 324 325# Place in $PATH 326sudo mv xplr /usr/local/bin/ 327</code></pre> 328<h2 id="from-cratesio"><a class="header" href="#from-cratesio">From <a href="https://crates.io/crates/xplr">crates.io</a></a></h2> 329<p>Prerequisites:</p> 330<ul> 331<li><a href="https://www.rust-lang.org/tools/install">Rust toolchain</a>,</li> 332<li><a href="https://gcc.gnu.org/">gcc</a></li> 333<li><a href="https://www.gnu.org/software/make/">make</a></li> 334</ul> 335<p>Command-line instructions:</p> 336<pre><code class="language-bash">cargo install --locked --force xplr 337</code></pre> 338<h2 id="build-from-source"><a class="header" href="#build-from-source">Build From Source</a></h2> 339<p>Prerequisites:</p> 340<ul> 341<li><a href="https://git-scm.com/">git</a></li> 342<li><a href="https://www.rust-lang.org/tools/install">Rust toolchain</a></li> 343<li><a href="https://gcc.gnu.org/">gcc</a></li> 344<li><a href="https://www.gnu.org/software/make/">make</a></li> 345</ul> 346<p>Command-line instructions:</p> 347<pre><code class="language-bash"># Clone the repository 348git clone https://github.com/sayanarijit/xplr.git 349cd xplr 350 351# Build 352cargo build --locked --release --bin xplr 353 354# Place in $PATH 355sudo cp target/release/xplr /usr/local/bin/ 356</code></pre> 357 358 </main> 359 360 <nav class="nav-wrapper" aria-label="Page navigation"> 361 <!-- Mobile navigation buttons --> 362 <a rel="prev" href="quickstart.html" class="mobile-nav-chapter
362s previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left"> 363 <i class="fa fa-angle-left"></i> 364 </a> 365 366 <a rel="next prefetch" href="post-install.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right"> 367 <i class="fa fa-angle-right"></i> 368 </a> 369 370 <div style="clear: both"></div> 371 </nav> 372 </div> 373 </div> 374 375 <nav class="nav-wide-wrapper" aria-label="Page navigation"> 376 <a rel="prev" href="quickstart.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left"> 377 <i class="fa fa-angle-left"></i> 378 </a> 379 380 <a rel="next prefetch" href="post-install.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right"> 381 <i class="fa fa-angle-right"></i> 382 </a> 383 </nav> 384 385 </div> 386 387 388 389 390
390<script> 391 window.playground_copyable = true; 392 </script>
392 393 394 395
395<script src="elasticlunr.min.js"></script>
395 396
396<script src="mark.min.js"></script>
396 397
397<script src="searcher.js"></script>
397 398 399
399<script src="clipboard.min.js"></script>
399 400
400<script src="highlight.js"></script>
400 401
401<script src="book.js"></script>
401 402 403 <!-- Custom JS scripts --> 404 405 406 </div> 407 <!-- Cloudflare Pages Analytics -->
vendor: 99 bytes, line 407
407<script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "
4078bfbf0ee75264eee8127fff6987fdc7d
vendor: 13 bytes, line 407
407"}'></script>
407<!-- Cloudflare Pages Analytics --></body> 408</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.