#!/usr/bin/env bash
# Timestamp: 2026-10-08 | Version: 2.2.0
# Author & Credits: https://www.alawise.es/1-s
# Standalone data-driven ISO mirror and portal generator.
set -Eeuo pipefail
if ! command -v python3 >/dev/null 2>&1; then
    printf '%s\n' 'Missing python3; see DEPLOYMENT.md.' >&2
    exit 1
fi
export AUX_FAST_BOOT_SELF="${BASH_SOURCE[0]}"
python3 - "$@" <<'PY_AUX_FAST_BOOT_ENGINE'
DEFAULT_URLS = r'''https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-13.7.0-amd64-gnome.iso
https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-13.7.0-amd64-xfce.iso
https://cdimage.debian.org/cdimage/daily-builds/daily/current/amd64/iso-cd/debian-testing-amd64-netinst.iso
https://cdimage.debian.org/cdimage/daily-builds/daily/current/arm64/iso-cd/debian-testing-arm64-netinst.iso
https://cdimage.debian.org/cdimage/release/13.7.0/amd64/iso-cd/debian-13.7.0-amd64-netinst.iso
https://cdimage.debian.org/cdimage/release/13.7.0/arm64/iso-cd/debian-13.7.0-arm64-netinst.iso
https://fedora.mirrorservice.org/fedora/linux/releases/44/Workstation/x86_64/iso/Fedora-Workstation-Live-44-1.7.x86_64.iso
https://fedora.ipacct.com/fedora/linux/releases/44/Workstation/aarch64/iso/Fedora-Workstation-Live-44-1.7.aarch64.iso
https://fedora.ipacct.com/fedora/linux/releases/44/Server/x86_64/iso/Fedora-Server-netinst-x86_64-44-1.7.iso
https://fedora.ipacct.com/fedora/linux/releases/44/Server/aarch64/iso/Fedora-Server-netinst-aarch64-44-1.7.iso
https://fedora.ipacct.com/fedora/linux/development/rawhide/Workstation/x86_64/iso/Fedora-Workstation-Live-Rawhide-20260929.n.0.x86_64.iso
https://releases.ubuntu.com/26.10/ubuntu-26.10-beta-netboot-amd64.tar.gz
https://releases.ubuntu.com/stonking/ubuntu-26.10-beta-live-server-amd64.iso
https://releases.ubuntu.com/stonking/ubuntu-26.10-beta-desktop-amd64.iso
https://archlinux.org/static/netboot/ipxe-arch.lkrn
https://archlinux.org/static/netboot/ipxe-arch.pxe
https://archlinux.org/static/netboot/ipxe-arch.efi
https://mirror.xenyth.net/archlinux/iso/2026.10.01/archlinux-x86_64.iso
https://mirror.xenyth.net/archlinux/iso/2026.10.01/archlinux-2026.10.01-x86_64.iso
https://distfiles.gentoo.org/releases/amd64/autobuilds/current-livegui-amd64/livegui-amd64-20260913T163055Z.iso
https://distfiles.gentoo.org/releases/amd64/autobuilds/current-install-amd64-minimal/install-amd64-minimal-20260913T163055Z.iso
https://kali.download/base-images/kali-2026.2/kali-linux-2026.2-installer-amd64.iso
https://kali.download/base-images/kali-2026.2/kali-linux-2026.2-installer-netinst-amd64.iso
https://kali.download/base-images/kali-2026.2/kali-linux-2026.2-installer-purple-amd64.iso
https://enterprise.proxmox.com/iso/proxmox-ve_9.2-1.iso
https://sourceforge.net/projects/clonezilla/files/clonezilla_live_testing/3.3.4-6/clonezilla-live-3.3.4-6-amd64.iso/download
https://sourceforge.net/projects/gparted/files/gparted-live-stable/1.7.0-1/gparted-live-1.7.0-1-amd64.iso/download
https://sourceforge.net/projects/boot-repair-cd/files/boot-repair-disk-64bit.iso/download
https://github.com/netbootxyz/netboot.xyz/releases/latest/download/netboot.xyz.kpxe
https://github.com/netbootxyz/netboot.xyz/releases/latest/download/netboot.xyz.efi
https://memtest.org/download/v8.00/mt86plus_8.00_i586.iso.zip
https://memtest.org/download/v8.00/mt86plus_8.00_x86_64.iso.zip
https://memtest.org/download/v8.00/mt86plus_8.00_x86_64.grub.iso.zip
https://sourceforge.net/projects/dban/files/dban/dban-2.3.0/dban-2.3.0_i586.iso/download
https://sourceforge.net/projects/supergrub2/files/2.06s1-beta2/super_grub2_disk_2.06s1-beta2/supergrub2-2.06s1-beta2-multiarch-CD.iso/download
'''
TEMPLATES = {}
TEMPLATES['index.html'] = r'''
<!doctype html>
<!-- Timestamp: 2026-10-08 | Version: 2.2.0 | Author & Credits: https://www.alawise.es/1-s -->
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="Linux images, rescue tools and network boot resources. One open catalog, one data-driven deployment engine.">
  <meta name="theme-color" content="#f6f5f1">
  <title>aux. / The open boot repository</title>
  <link rel="canonical" href="@@CANONICAL@@">
  <link rel="icon" type="image/png" href="assets/favicon.png">
  <link rel="stylesheet" href="assets/portal.css">
  <script src="assets/portal.js" defer></script>
</head>
<body>
  <a class="skip-link" href="#catalog">Skip to downloads</a>
  <a class="skip-link" href="cli.html">Text / SSH downloads</a>
  <aside class="sidebar">
    <a class="brand" href="#top" aria-label="aux home">aux<span>.</span><i>/</i></a>
    <p class="brand-caption">THE OPEN BOOT REPOSITORY</p>
    <div class="nav-label">WORKSPACE</div>
    <nav class="side-nav" aria-label="Main navigation">
      <a href="#catalog" class="active"><span class="nav-icon">◫</span>Download catalog <span class="nav-count" id="side-count">@@COUNT@@</span></a>
      <a href="cli.html"><span class="nav-icon">&gt;_</span>Text / SSH downloads</a>
      <a href="#network"><span class="nav-icon">⌘</span>Network boot</a>
      <a href="#deployment"><span class="nav-icon">↗</span>Deployment engine</a>
      <a href="#project-files"><span class="nav-icon">▤</span>Project files</a>
    </nav>
    <div class="sidebar-note"><span class="tiny-square"></span> Built to begin again.<p>Open systems.<br>Less friction.</p></div>
    <div class="sidebar-footer">
      <a class="repo-link" href="https://github.com/1wise/aux.1-s.eu" target="_blank" rel="noopener noreferrer"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 2a10 10 0 0 0-3.16 19.49c.5.09.68-.22.68-.48v-1.86c-2.78.6-3.37-1.18-3.37-1.18-.45-1.16-1.11-1.47-1.11-1.47-.91-.62.07-.61.07-.61 1 .07 1.53 1.03 1.53 1.03.89 1.52 2.34 1.08 2.91.82.09-.64.35-1.08.64-1.33-2.22-.25-4.55-1.11-4.55-4.94 0-1.09.39-1.98 1.03-2.68-.1-.25-.45-1.27.1-2.65 0 0 .84-.27 2.75 1.02a9.58 9.58 0 0 1 5 0c1.91-1.29 2.75-1.02 2.75-1.02.55 1.38.2 2.4.1 2.65.64.7 1.03 1.59 1.03 2.68 0 3.84-2.33 4.68-4.56 4.93.36.31.68.92.68 1.86v2.75c0 .27.18.58.69.48A10 10 0 0 0 12 2Z"/></svg> View on GitHub <span>↗</span></a>
      <a class="project-credit" href="https://www.alawise.es/1-s" target="_blank" rel="noopener noreferrer"><img src="assets/aux-logo.png" alt="" width="34" height="34"><span>A 1wise project<small>Shared knowledge. Open minds.</small></span></a>
    </div>
  </aside>
  <div class="workspace" id="top">
    <header class="topbar"><div><span>Resources</span><span class="slash">/</span><strong>Download catalog</strong></div><span class="source-label"><span></span>@@LABEL@@</span></header>
    <main>
      <section class="hero">
        <div class="hero-copy"><div class="eyebrow"><span></span> A FRESH START IS A DOWNLOAD AWAY</div><h1>A clean start.<br>For every <em>machine.</em></h1><p>Linux images, rescue tools and network boot.<br>Everything needed to get up and running, in one place.</p><div class="hero-actions"><a class="button button-primary" href="#catalog">Explore downloads <span>↓</span></a><a class="button button-outline" href="cli.html#network" data-open-boot>Boot over the network <span>↗</span></a></div><div class="hero-meta"><span>BIOS & UEFI</span><i></i><span>x86_64 & ARM64</span><i></i><span>OPEN SOURCE</span></div></div>
        <div class="terminal"><div class="terminal-bar"><span class="terminal-dots"><i></i><i></i><i></i></span><span>network-boot.ipxe</span><span class="terminal-symbol">↗</span></div><div class="terminal-body"><p class="terminal-comment"># A small command. A new beginning.</p><p><span class="terminal-prompt">iPXE&gt;</span> dhcp</p><p><span class="terminal-prompt">iPXE&gt;</span> chain <span class="terminal-url">@@PXE_URL@@/<b>menu.ipxe</b></span></p><div class="terminal-cursor"></div></div><div class="terminal-footer"><span><i></i> Connect. Choose. Boot.</span><button data-enhance hidden data-copy-boot aria-label="Copy iPXE chain command"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M7 7h9v10H7zM4 13H2V2h10v2"/></svg>Copy command</button></div></div>
      </section>
      <div class="intro-strip"><span class="strip-icon">↙</span><strong>One catalog. Many ways forward.</strong><span>Desktop · Server · Recovery · Network boot</span><a href="downloads/fast-boot.sh" download>Get fast-boot.sh <span>↗</span></a></div>
      <section class="catalog-section" id="catalog" aria-labelledby="catalog-title">
        <div class="section-heading"><div><div class="eyebrow">THE CATALOG</div><h2 id="catalog-title">Find the right starting point.</h2></div><div class="catalog-total"><strong id="total-count">@@COUNT@@</strong> resources <a class="cli-access" href="cli.html">Text / SSH ↗</a></div></div>
        <div class="catalog-toolbar" data-enhance hidden><div class="search-box"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="8.5" cy="8.5" r="5.5"/><path d="m13 13 4 4"/></svg><label class="sr-only" for="search">Search resources</label><input id="search" type="search" placeholder="Search distributions, tools, filenames…" autocomplete="off"><kbd>/</kbd></div><label class="select-wrap"><span class="sr-only">Architecture</span><select id="arch"><option value="all">All architectures</option><option value="x86_64">x86_64</option><option value="arm64">ARM64</option><option value="i386">32-bit x86</option></select></label><label class="select-wrap mirror-wrap"><span class="select-caption">FROM</span><span class="sr-only">Download origin</span><select id="mirror"><option value="auto">Local when ready / upstream</option><option value="source">Configured upstreams</option><option value="local">Excalibur · aux.1-s.es</option><option value="france">France · b.1-s.eu</option></select></label></div>
        <div class="catalog-tabs" data-enhance hidden role="group" aria-label="Resource category"><button class="selected" data-category="all" aria-pressed="true">All resources <span id="count-all">@@COUNT@@</span></button><button data-category="distribution" aria-pressed="false">Distributions <span id="count-distribution"></span></button><button data-category="rescue" aria-pressed="false">Rescue & tools <span id="count-rescue"></span></button><button data-category="netboot" aria-pressed="false">Network boot <span id="count-netboot"></span></button><label class="sort-wrap"><span class="sr-only">Sort resources</span><select id="sort"><option value="catalog">Catalog order</option><option value="name">Name: A–Z</option><option value="release">Release: newest first</option></select></label></div>
        <div class="catalog-caption"><span id="result-count" role="status" aria-live="polite">Showing all resources</span><span id="origin-note">Local when published · upstream otherwise</span></div>
        <div class="table-wrap"><table class="resource-table"><thead><tr><th scope="col">RESOURCE</th><th scope="col">RELEASE</th><th scope="col">ARCHITECTURE</th><th scope="col">FORMAT</th><th scope="col" class="action-heading">DOWNLOAD</th></tr></thead><tbody id="resource-rows">
@@ROWS@@
</tbody></table><div class="empty-state" id="empty-state" hidden><span>⌕</span><h3>No matching resources</h3><p>Try a different name, architecture or category.</p><button class="button button-outline" id="reset-filters">Clear filters</button></div></div>
        <p class="catalog-footnote"><span>ⓘ</span><span id="catalog-note">This catalog preserves the supplied source URLs. Remote files and mirror availability have not been checked. The deployment engine records local sizes and SHA-256 hashes after sync.</span></p>
        <noscript><p class="catalog-footnote">All downloads work without JavaScript. <a href="cli.html">Open the compact text / SSH catalog</a> for architecture groups and wget/curl commands.</p></noscript>
      </section>
      <section class="network-section" id="network"><div><div class="eyebrow">SKIP THE USB</div><h2>The network is<br>the starting line.</h2><p>Start an iPXE client, request an address and load the menu from the boot server. The generated menu adapts to the client architecture and firmware.</p><a class="text-link" href="cli.html#network" data-open-boot>Open the network boot guide <span>↗</span></a></div><div class="network-steps"><div><span>01</span><section><h3>Connect the client</h3><p>Start iPXE from a network card, a USB key or an existing bootloader.</p></section></div><div><span>02</span><section><h3>Load the boot menu</h3><p>Use DHCP, then chain the generated <code>menu.ipxe</code> from the mirror.</p></section></div><div><span>03</span><section><h3>Choose a fresh start</h3><p>Only local payloads with a supported recipe and required files appear in the generated menu.</p></section></div></div></section>
      <section class="deployment-section" id="deployment"><div class="section-heading"><div><div class="eyebrow">THE ENGINE BEHIND THE CATALOG</div><h2>One script. Everything in sync.</h2></div><a class="button button-outline" href="downloads/fast-boot.sh" download>Download fast-boot.sh <span>↓</span></a></div><div class="deployment-grid"><div class="deployment-copy"><p><code>fast-boot.sh</code> turns a list of URLs into a working mirror. It downloads the payloads, prepares their files and generates the catalog, PHP page, iPXE menu and sitemap together.</p><div class="mode-selector" data-enhance hidden role="group" aria-label="Deployment mode"><button data-mode="mount" class="selected" aria-pressed="true">Mount</button><button data-mode="extract" aria-pressed="false">Extract</button><button data-mode="ram" aria-pressed="false">RAM</button></div><h3 id="mode-title">Disk-backed ISO mounts</h3><p class="mode-description" id="mode-description">For Excalibur: read-only loop mounts and symlinks keep the original ISO on disk without duplicating its contents. Root access is required; Linux manages the page cache.</p><a class="text-link" href="downloads/DEPLOYMENT.md" download>Read the deployment notes <span>↗</span></a></div><div class="deployment-code"><div class="code-label"><span>BASH / LINUX</span><button data-enhance hidden id="copy-deploy" aria-label="Copy deployment command">Copy <span>▢</span></button></div><pre id="deploy-command"># Review the script, then run locally.
sudo bash fast-boot.sh \
  --mode mount \
  --output /var/www/aux.1-s.es/html \
  --base-url @@BASE_URL@@ \
  --pxe-url @@PXE_URL@@</pre><div class="generated-files"><span>GENERATES</span><code>index.php</code><code>menu.ipxe</code><code>sitemaps.xml</code></div></div></div></section>
      <section class="files-section" id="project-files"><div class="section-heading"><div><div class="eyebrow">TAKE IT WITH YOU</div><h2>Open files. Open possibilities.</h2></div><a class="text-link" href="downloads/aux-fast-boot.zip" download>Download the bundle <span>↓</span></a></div><div class="file-list"><a href="downloads/fast-boot.sh" download><span class="file-icon">&gt;_</span><span><strong>fast-boot.sh</strong><small>Standalone download & deployment engine</small></span><span class="file-type">BASH</span><span class="file-arrow">↓</span></a><a href="downloads/index.php.txt" download="index.php"><span class="file-icon">&lt;/&gt;</span><span><strong>index.php</strong><small>The portal, generated from catalog.json</small></span><span class="file-type">PHP</span><span class="file-arrow">↓</span></a><a href="downloads/menu.ipxe" download><span class="file-icon">⌘</span><span><strong>menu.ipxe</strong><small>Initial menu · payload entries appear after sync</small></span><span class="file-type">iPXE</span><span class="file-arrow">↓</span></a><a href="downloads/sitemaps.xml" download><span class="file-icon">▤</span><span><strong>sitemaps.xml</strong><small>Generated resource links for the mirror</small></span><span class="file-type">XML</span><span class="file-arrow">↓</span></a><a href="downloads/urls.txt" download><span class="file-icon">↗</span><span><strong>urls.txt</strong><small>The editable source list · no version logic duplicated</small></span><span class="file-type">TXT</span><span class="file-arrow">↓</span></a></div></section>
    </main>
    <footer class="footer"><span class="footer-brand">aux<span>.</span> <small>A little help. A clean start.</small></span><a href="https://www.alawise.es/1-s" target="_blank" rel="noopener noreferrer">Author & Credits · 1wise <span>↗</span></a></footer>
  </div>
  <dialog data-enhance hidden id="boot-dialog" aria-labelledby="boot-title"><div class="dialog-head"><span class="eyebrow">NETWORK BOOT</span><button class="close-dialog" data-close-dialog aria-label="Close network boot guide">×</button></div><h2 id="boot-title">Start with iPXE.</h2><p>Run the engine on the mirror first. These commands load the menu hosted at the configured boot server.</p><label class="field-label" for="boot-platform">Client firmware</label><select id="boot-platform"><option value="uefi">x86_64 UEFI</option><option value="bios">Legacy BIOS</option><option value="arm">ARM64 UEFI</option></select><div class="boot-guide"><h3 id="boot-method-title">Start an x86_64 UEFI iPXE client</h3><p id="boot-method-description">Use an iPXE EFI build with the network driver and HTTP support for the target machine. Then enter the following commands at its prompt.</p></div><div class="dialog-code"><pre id="boot-command">dhcp
chain @@PXE_URL@@/menu.ipxe</pre><button data-enhance hidden data-copy-boot>Copy commands <span>▢</span></button></div><p class="dialog-note">Secure Boot needs a trusted, signed boot chain. Boot recipes are checked for local files; hardware and firmware boot tests remain separate.</p><div class="dialog-links"><a href="downloads/menu.ipxe" download>Download initial menu <span>↓</span></a><a href="https://ipxe.org/download" target="_blank" rel="noopener noreferrer">iPXE documentation <span>↗</span></a></div></dialog>
  <dialog data-enhance hidden id="resource-dialog" aria-labelledby="resource-title"><div class="dialog-head"><span class="eyebrow">RESOURCE DETAILS</span><button class="close-dialog" data-close-dialog aria-label="Close resource details">×</button></div><h2 id="resource-title"></h2><p id="resource-description"></p><dl id="resource-meta"></dl><p><a id="resource-commands" class="text-link" href="cli.html">wget / curl commands <span>↗</span></a></p><div class="url-field"><label class="field-label" for="resource-url">Download URL</label><textarea id="resource-url" readonly rows="3"></textarea><button class="text-link" id="copy-resource">Copy URL <span>▢</span></button></div><div class="dialog-links"><a id="resource-download" class="button button-primary" target="_blank" rel="noopener noreferrer">Download file <span>↓</span></a><a id="resource-source" target="_blank" rel="noopener noreferrer">View upstream <span>↗</span></a></div></dialog>
  <div class="toast" id="toast" role="status" aria-live="polite"></div>
  <script id="catalog-data" type="application/json">@@CATALOG@@</script>
</body>
</html>
'''
TEMPLATES['portal.css'] = r'''
/* Timestamp: 2026-10-08 | Version: 2.2.0 | Author & Credits: https://www.alawise.es/1-s */
:root{--paper:#f7f7f3;--white:#fff;--sidebar:#f0f0eb;--ink:#262922;--muted:#77796f;--line:#e2e3db;--accent:#de612c;--accent-pale:#f8e9e1;--mono:ui-monospace,SFMono-Regular,Consolas,monospace;font-family:Inter,"Helvetica Neue",Arial,sans-serif;font-synthesis:none;color:var(--ink);background:var(--paper)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;font-size:14px;line-height:1.5}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{color:inherit;cursor:pointer}button:disabled{cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:4px}svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.5}h1,h2,h3,p{margin:0}button{border:0;background:none}select{cursor:pointer}code{font-family:var(--mono);font-size:.87em}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[hidden]{display:none!important}.skip-link{position:fixed;top:-60px;left:250px;padding:10px;background:var(--ink);color:white;z-index:30}.skip-link:focus{top:8px}
.sidebar{position:fixed;inset:0 auto 0 0;width:230px;background:var(--sidebar);border-right:1px solid var(--line);padding:34px 21px 20px;display:flex;flex-direction:column;z-index:5}.brand{font-size:59px;font-weight:800;line-height:1;letter-spacing:-5px;display:block;padding-left:7px}.brand span,.footer-brand>span{color:var(--accent)}.brand i{font-weight:400;font-style:normal;font-size:40px;color:var(--accent);margin-left:13px;vertical-align:5px}.brand-caption{font-size:8px;font-weight:600;letter-spacing:1.25px;margin:12px 0 50px 9px;color:var(--muted)}.nav-label{font:9px var(--mono);letter-spacing:1.4px;color:#999b91;padding-left:12px;margin-bottom:14px}.side-nav{display:grid;gap:5px}.side-nav a{display:flex;align-items:center;gap:10px;padding:11px 10px;font-size:12px;font-weight:500;border-radius:5px;color:#73766d}.side-nav a:hover{color:var(--ink);background:#e8e9e1}.side-nav .active{background:#e4e6dc;color:var(--ink)}.nav-icon{font-size:17px;font-weight:400;width:20px;text-align:center}.nav-count{margin-left:auto;font:10px var(--mono);color:#6a6c64;border:1px solid #cfd2c5;border-radius:4px;padding:0 4px}.sidebar-note{padding:40px 10px 0;color:#868a7e;font-size:10px;letter-spacing:.2px}.tiny-square{display:inline-block;width:6px;height:6px;background:var(--accent);margin-right:4px}.sidebar-note p{font-size:20px;line-height:1.45;letter-spacing:-.5px;color:#a0a496;margin-top:12px}.sidebar-footer{margin-top:auto}.repo-link{display:flex;gap:8px;align-items:center;font-size:11px;color:#676c60;padding:14px 9px;border-bottom:1px solid var(--line)}.repo-link svg{fill:currentColor;stroke:none;width:16px;height:16px}.repo-link>span{margin-left:auto}.project-credit{display:flex;gap:9px;align-items:center;margin:19px 4px 0;font-size:11px}.project-credit img{border-radius:6px;object-fit:cover}.project-credit small{display:block;font-size:8px;color:var(--muted);margin-top:2px}.workspace{margin-left:230px}.topbar{height:69px;padding:0 44px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);font-size:11px}.topbar>div{display:flex;gap:18px;align-items:center}.topbar>div>span:first-child{color:var(--muted)}.slash{color:#bbbeb2}.topbar strong{font-weight:500}.source-label{font:8px var(--mono);letter-spacing:1.1px;color:#7b8170;display:flex;gap:7px;align-items:center}.source-label>span{width:5px;height:5px;background:#889c70;border-radius:50%}main{max-width:1440px;margin:0 auto;padding:0 44px}.hero{display:grid;grid-template-columns:1.15fr 1fr;gap:45px;padding:56px 0 47px;align-items:center}.eyebrow{font-size:8px;font-weight:600;letter-spacing:1.6px;color:#868b7a}.hero .eyebrow{display:flex;align-items:center;gap:8px}.hero .eyebrow>span{width:5px;height:5px;background:var(--accent)}h1{font-size:clamp(37px,3.7vw,64px);font-weight:600;line-height:1.075;letter-spacing:-2.2px;margin:18px 0 23px}h1 em{color:var(--accent);font-style:normal}.hero-copy>p{font-size:12px;line-height:1.85;color:var(--muted)}.hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:29px}.button{min-height:40px;padding:10px 14px;display:inline-flex;gap:15px;align-items:center;justify-content:center;border-radius:5px;font-size:10px;font-weight:500;transition:background .15s,transform .15s}.button span{font-size:14px}.button:hover{transform:translateY(-1px)}.button-primary{background:var(--accent);color:white;border:1px solid var(--accent)}.button-primary:hover{background:#c64f1f}.button-outline{background:transparent;border:1px solid #d6d8cc}.button-outline:hover{background:#eaece2}.hero-meta{display:flex;align-items:center;gap:11px;margin-top:25px;font:7px var(--mono);letter-spacing:.5px;color:#8a8d81}.hero-meta i{width:3px;height:3px;background:#a7ad9d;border-radius:50%}.terminal{background:#272d27;color:#ecf0e7;border:1px solid #30372d;border-radius:9px;overflow:hidden;transform:rotate(-1deg);box-shadow:0 16px 34px #28332010}.terminal-bar{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid #454c4088;color:#919b87;font:9px var(--mono)}.terminal-dots{display:flex;gap:5px}.terminal-dots i{width:5px;height:5px;border-radius:50%;background:#788270}.terminal-dots i:first-child{background:#d77651}.terminal-symbol{font-size:15px}.terminal-body{padding:30px 22px 28px;font:11px/1.9 var(--mono);min-height:209px}.terminal-comment{color:#8e9c83;margin-bottom:20px;font-size:9px}.terminal-body>p{margin-bottom:7px}.terminal-prompt{color:#b0c59e}.terminal-url{display:block;padding-left:45px;color:#c9d8bb;overflow-wrap:anywhere;font-size:10px}.terminal-url b{font-weight:400;color:#e98b60}.terminal-cursor{width:7px;height:14px;margin-top:18px;background:#e98b60}.terminal-footer{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-top:1px solid #454c4088;font-size:8px;color:#98a78e}.terminal-footer>span{display:flex;gap:6px;align-items:center}.terminal-footer i{width:4px;height:4px;border-radius:50%;background:#afc697}.terminal-footer button{color:#c6d3bd;font-size:8px;display:flex;gap:6px;align-items:center}.terminal-footer svg{width:12px;height:12px}.intro-strip{display:flex;gap:11px;align-items:center;padding:14px 17px;border:1px solid var(--line);border-radius:5px;background:#eeefe7;font-size:10px}.strip-icon{color:var(--accent);font-size:20px;line-height:1}.intro-strip strong{font-weight:500}.intro-strip>span:nth-of-type(2){color:var(--muted);font-size:9px}.intro-strip>a{margin-left:auto;color:var(--accent);white-space:nowrap;font-size:9px}.intro-strip>a span{margin-left:10px}.catalog-section{padding:41px 0 44px}.section-heading{display:flex;gap:18px;align-items:center;justify-content:space-between;margin-bottom:24px}h2{font-size:26px;font-weight:500;line-height:1.2;letter-spacing:-.7px}.section-heading .eyebrow{margin-bottom:9px}.catalog-total{font:9px var(--mono);color:var(--muted);align-self:flex-end;padding-bottom:3px}.catalog-total strong{font-weight:500;color:var(--ink)}.catalog-toolbar{display:flex;gap:10px;margin-bottom:18px}.search-box{flex:1;min-width:170px;display:flex;gap:10px;align-items:center;border:1px solid var(--line);background:white;border-radius:5px;padding:0 12px;height:40px}.search-box svg{width:14px;height:14px;color:#929987;flex-shrink:0}.search-box input{border:none;outline:none;background:none;width:100%;min-width:0;font-size:10px;color:var(--ink)}.search-box:focus-within{border-color:var(--accent)}.search-box input::placeholder{color:#a0a393}.search-box input:focus-visible{outline:none}.search-box kbd{border:1px solid var(--line);border-radius:3px;font:9px var(--mono);color:#a0a393;padding:0 4px}.select-wrap{display:flex;gap:5px;align-items:center;border:1px solid var(--line);border-radius:5px;background:white;padding:0 11px}.select-wrap select{border:0;background:transparent;color:#6c7261;font-size:10px;height:38px;max-width:190px}.select-caption{font:7px var(--mono);color:#a0a393;margin-right:3px}.catalog-tabs{display:flex;align-items:center;gap:5px;border-bottom:1px solid var(--line);padding-bottom:13px}.catalog-tabs button{display:flex;align-items:center;gap:7px;font-size:10px;padding:6px 9px;border-radius:4px;color:#818574;white-space:nowrap}.catalog-tabs button.selected{background:#e4e7db;color:#3d4932}.catalog-tabs button:hover{background:#eeefe7}.catalog-tabs button span{font:8px var(--mono);padding:0 3px;background:#daddd0;border-radius:3px;color:#748169}.sort-wrap{margin-left:auto}.sort-wrap select{border:none;background:transparent;color:#818574;font-size:9px;max-width:125px}.catalog-caption{display:flex;justify-content:space-between;gap:15px;color:#909784;font:8px var(--mono);padding:15px 1px 11px}.table-wrap{border:1px solid var(--line);border-radius:7px;overflow:hidden;background:white}.resource-table{width:100%;border-collapse:collapse;text-align:left}.resource-table thead{background:#f2f3ec}.resource-table th{font-size:7px;font-weight:500;letter-spacing:1px;color:#8a9380;padding:11px 16px;border-bottom:1px solid var(--line);white-space:nowrap}.resource-table td{padding:14px 16px;border-bottom:1px solid #eceee5;font-size:10px}.resource-table tr:last-child td{border-bottom:0}.resource-table tbody tr:hover{background:#fbfcf8}.resource-cell{display:flex;gap:11px;align-items:center;min-width:0}.distro-icon{width:33px;height:33px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #e5e6de;border-radius:7px;flex-shrink:0;font-size:18px;font-weight:600;background:#f7f8f4;color:#6e7963}.distro-icon.debian{color:#b84e67;background:#fdf3f5}.distro-icon.fedora{color:#4b7198;background:#eef4fa}.distro-icon.ubuntu{color:#cf7145;background:#fff3ed}.distro-icon.arch{color:#497e9c;background:#eef7fa}.distro-icon.gentoo{color:#8675ac;background:#f6f3fd}.distro-icon.kali{color:#6e83a5;background:#f0f4fb}.distro-icon.proxmox{color:#bd7839;background:#fdf7ef}.resource-name{font-size:11px;font-weight:500;display:block;text-align:left;line-height:1.5;padding:0}.resource-name:hover{color:var(--accent)}.resource-filename{display:block;margin-top:3px;max-width:clamp(150px,22vw,400px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:7px var(--mono);color:#999e90}.release{color:#6d7662;font:9px var(--mono);white-space:nowrap}.release.preview{color:#a57d38}.arch-badge{display:inline-block;font:8px var(--mono);color:#7b836f;white-space:nowrap}.format-badge{font:7px var(--mono);color:#868e7d;border:1px solid #e5e9dd;border-radius:3px;padding:3px 5px;white-space:nowrap}.row-actions{display:flex;justify-content:flex-end;gap:10px;align-items:center;white-space:nowrap}.download-link{display:flex;align-items:center;gap:7px;color:#545e49;font-size:9px;font-weight:500}.download-link:hover{color:var(--accent)}.download-link span{font-size:14px}.details-button{font-size:16px;color:#919983;border:1px solid #e6e9df;width:25px;height:25px;border-radius:4px;line-height:1}.details-button:hover{color:var(--accent);border-color:var(--accent)}.action-heading{text-align:right}.empty-state{text-align:center;padding:40px 20px}.empty-state>span{font-size:35px;color:var(--muted)}.empty-state h3{font-size:17px;margin-top:8px}.empty-state p{font-size:12px;color:var(--muted);margin:8px 0 20px}.catalog-footnote{display:flex;gap:7px;color:#989e8e;font-size:8px;line-height:1.8;margin:14px 0 0}.catalog-footnote>span:first-child{font-size:11px}.network-section{display:grid;grid-template-columns:1fr 1fr;gap:70px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:41px 0 43px}.network-section h2{font-size:34px;letter-spacing:-1px;margin-top:12px}.network-section>div>p{max-width:340px;font-size:11px;line-height:1.85;color:var(--muted);margin:17px 0}.text-link{display:inline-flex;gap:15px;align-items:center;font-size:10px;color:var(--accent);padding:0}.text-link:hover{text-decoration:underline}.text-link span{font-size:14px}.network-steps{display:flex;flex-direction:column;justify-content:center;gap:19px}.network-steps>div{display:flex;gap:19px}.network-steps>div>span{font:9px var(--mono);color:#b4baa7;border:1px solid #dce1d2;border-radius:50%;width:30px;height:30px;flex-shrink:0;display:grid;place-items:center}.network-steps h3{font-size:12px;font-weight:500}.network-steps p{font-size:10px;line-height:1.8;color:var(--muted);margin-top:4px;max-width:330px}.deployment-section{padding:41px 0;border-bottom:1px solid var(--line)}.deployment-grid{display:grid;grid-template-columns:1fr 1fr;gap:50px}.deployment-copy>p{font-size:11px;color:var(--muted);line-height:1.85}.deployment-copy>p code{color:#59654d}.mode-selector{display:inline-flex;border:1px solid var(--line);border-radius:5px;padding:3px;gap:3px;margin:20px 0 15px}.mode-selector button{font-size:9px;padding:5px 15px;border-radius:3px;color:#929b82}.mode-selector button.selected{background:#e4e7dc;color:#465638}.deployment-copy h3{font-size:11px;font-weight:500}.deployment-copy .mode-description{margin:7px 0 16px;font-size:10px;min-height:54px}.deployment-code{background:#eeefe7;border:1px solid #dde1d2;border-radius:7px;align-self:start}.code-label{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #dde1d2;font:8px var(--mono);color:#8d9880}.code-label button{font-size:8px;color:#647353;display:flex;gap:8px;align-items:center}.deployment-code pre{padding:22px 16px;margin:0;font:9px/2.1 var(--mono);color:#5f6c50;white-space:pre-wrap;overflow-wrap:anywhere;min-height:170px}.generated-files{border-top:1px solid #dde1d2;padding:12px 16px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.generated-files>span{font:7px var(--mono);color:#94a183;letter-spacing:.7px;margin-right:5px}.generated-files code{font-size:8px;background:#e2e6d7;padding:2px 5px;border-radius:3px;color:#6b795c}.files-section{padding:40px 0}.file-list{display:grid;grid-template-columns:1fr 1fr;gap:0 30px}.file-list>a{display:flex;gap:12px;align-items:center;padding:17px 0;border-bottom:1px solid var(--line)}.file-icon{font:13px var(--mono);width:35px;height:35px;display:grid;place-items:center;border:1px solid var(--line);border-radius:5px;color:#859276;flex-shrink:0}.file-list strong{font-family:var(--mono);font-size:10px;font-weight:400}.file-list small{display:block;font-size:8px;color:var(--muted);margin-top:3px}.file-type{font:7px var(--mono);color:#97a087;margin-left:auto}.file-arrow{font-size:17px;color:#a3ad94}.file-list>a:hover .file-arrow,.file-list>a:hover strong{color:var(--accent)}.footer{margin:0 44px;padding:23px 0 28px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:8px;color:#98a08d}.footer-brand{font-size:22px;font-weight:700;letter-spacing:-1px;color:#7c886d}.footer-brand small{font-size:8px;font-weight:400;letter-spacing:0;margin-left:12px;color:#98a08d}.footer>a span{margin-left:8px}
dialog{border:1px solid #dadfcf;background:var(--paper);color:var(--ink);border-radius:10px;width:520px;max-width:calc(100vw - 28px);max-height:calc(100dvh - 40px);padding:26px;box-shadow:0 25px 90px #17201530}dialog::backdrop{background:#252c2855;backdrop-filter:blur(4px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:21px}.close-dialog{font-size:24px;line-height:1;width:30px;height:30px;border-radius:5px;color:var(--muted)}.close-dialog:hover{background:#e5e9da}dialog h2{font-size:29px;overflow-wrap:anywhere}dialog>p{font-size:12px;color:var(--muted);line-height:1.8;margin:15px 0}.field-label{display:block;font-size:10px;color:var(--muted);margin:20px 0 7px}#boot-platform{border:1px solid var(--line);background:white;border-radius:5px;padding:9px;width:100%;font-size:12px}.boot-guide{margin:20px 0}.boot-guide h3{font-size:12px;font-weight:500}.boot-guide p{font-size:11px;line-height:1.8;color:var(--muted);margin-top:6px}.dialog-code{background:#272d27;border-radius:6px;padding:16px;color:#cbd7be}.dialog-code pre{white-space:pre-wrap;overflow-wrap:anywhere;font:10px/1.9 var(--mono);margin:0}.dialog-code button{color:#b8caa9;font-size:10px;margin-top:16px}.dialog-links{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-top:23px;font-size:11px}.dialog-links>a{color:var(--accent)}.dialog-links>a.button{color:white}dialog .dialog-note{font-size:10px;color:#929b85}#resource-meta{display:grid;grid-template-columns:110px 1fr;gap:9px;font-size:11px;margin:20px 0}#resource-meta dt{color:var(--muted)}#resource-meta dd{margin:0;overflow-wrap:anywhere;font-family:var(--mono);font-size:10px}.url-field textarea{width:100%;border:1px solid var(--line);background:white;color:#75826a;border-radius:5px;padding:10px;font:9px/1.7 var(--mono);resize:vertical}.url-field button{margin-top:9px}.toast{position:fixed;bottom:25px;left:calc(50% + 115px);transform:translate(-50%,18px);background:#293124;color:#eef4e7;padding:11px 18px;font-size:11px;border-radius:6px;box-shadow:0 5px 25px #28332020;z-index:50;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:85vw}.toast.visible{opacity:1;transform:translate(-50%,0)}
@media(min-width:1600px){main{padding:0 64px}.topbar{padding:0 64px}.hero{gap:80px}.hero-copy>p{font-size:14px}.button{font-size:12px}.terminal-body{font-size:13px}.resource-table td{padding-top:17px;padding-bottom:17px}.resource-name{font-size:13px}.resource-filename{font-size:9px}}
@media(max-width:1200px){.sidebar{width:210px}.workspace{margin-left:210px}main{padding:0 30px}.topbar{padding:0 30px}.hero{gap:25px;padding-top:44px}.hero-actions{gap:8px}.button{padding:9px 11px;font-size:9px}.hero-meta{font-size:6px;gap:8px}.terminal-body{padding:24px 15px;font-size:10px}.terminal-url{font-size:9px;padding-left:40px}.intro-strip>span:nth-of-type(2){display:none}.catalog-toolbar{flex-wrap:wrap}.search-box{flex-basis:45%}.select-wrap select{max-width:165px}.resource-table th,.resource-table td{padding-left:12px;padding-right:12px}.resource-filename{max-width:210px}.network-section{gap:40px}.deployment-grid{gap:30px}.toast{left:calc(50% + 105px)}}
@media(max-width:960px){.sidebar{width:185px;padding-left:13px;padding-right:13px}.workspace{margin-left:185px}.brand-caption{font-size:7px;letter-spacing:.7px}.side-nav a{font-size:10px;gap:7px}.sidebar-note{display:none}.project-credit small{font-size:7px}main{padding:0 23px}.topbar{padding:0 23px}.hero{grid-template-columns:1fr;padding:36px 0;gap:25px}h1{font-size:52px}.terminal{max-width:460px;transform:none}.terminal-body{min-height:165px;padding:21px;font-size:11px}.terminal-url{display:inline;padding-left:0;font-size:10px}.hero-copy>p br{display:none}.hero-actions .button{font-size:11px}.hero-meta{font-size:8px}.catalog-tabs{flex-wrap:wrap}.catalog-tabs button{font-size:9px}.sort-wrap{flex:1;text-align:right}.resource-table th:nth-child(4),.resource-table td:nth-child(4){display:none}.resource-filename{max-width:200px}.resource-table td{padding:13px 9px}.distro-icon{width:28px;height:28px;font-size:16px}.resource-cell{gap:8px}.download-link{font-size:8px;gap:3px}.row-actions{gap:6px}.resource-name{font-size:10px}.network-section{gap:25px}.network-section h2{font-size:29px}.deployment-grid{grid-template-columns:1fr}.deployment-copy .mode-description{min-height:0}.deployment-code pre{min-height:0}.file-list{grid-template-columns:1fr}.footer{margin:0 23px}.toast{left:calc(50% + 92px)}}
@media(max-width:680px){.sidebar{position:relative;width:auto;inset:auto;height:auto;padding:17px 20px 11px;display:flex;border-right:0;border-bottom:1px solid var(--line)}.brand{font-size:35px;letter-spacing:-3px;padding-left:0;width:max-content}.brand i{font-size:25px;vertical-align:2px;margin-left:9px}.brand-caption{position:absolute;top:29px;left:108px;margin:0;font-size:7px}.nav-label,.sidebar-footer{display:none}.side-nav{display:flex;gap:4px;overflow-x:auto;margin-top:17px}.side-nav a{padding:6px 7px;font-size:9px;white-space:nowrap}.nav-icon{width:auto;font-size:13px}.nav-count{display:none}.workspace{margin-left:0}.topbar{height:45px;padding:0 20px;font-size:9px}.topbar>div{gap:12px}.source-label{font-size:6px;letter-spacing:.6px}main{padding:0 20px}.hero{padding:30px 0 29px;gap:25px}.hero .eyebrow{font-size:7px;letter-spacing:1px}h1{font-size:45px;letter-spacing:-1.7px;margin:17px 0}.hero-copy>p{font-size:12px}.hero-actions{margin-top:21px}.hero-actions .button{font-size:9px;gap:9px}.hero-meta{font-size:6px;gap:10px;margin-top:18px}.terminal{max-width:none}.terminal-body{min-height:160px;padding:21px 17px;font-size:10px}.terminal-comment{font-size:8px}.terminal-url{display:block;font-size:9px;padding-left:42px}.intro-strip{padding:11px 10px;font-size:8px;gap:7px}.intro-strip a{font-size:8px}.catalog-section{padding:30px 0}.section-heading{margin-bottom:19px}.section-heading h2{font-size:23px}.section-heading .eyebrow{font-size:7px}.catalog-total{font-size:8px;white-space:nowrap}.catalog-toolbar{gap:8px;margin-bottom:13px}.search-box{flex-basis:100%}.select-wrap{flex:1;min-width:0;padding:0 9px}.select-wrap select{font-size:9px;width:100%;max-width:none}.mirror-wrap{flex:1.6}.select-caption{font-size:6px}.catalog-tabs{gap:3px;padding-bottom:9px}.catalog-tabs button{padding:5px 7px;font-size:8px;gap:5px}.catalog-tabs button span{font-size:7px}.sort-wrap{flex-basis:100%;text-align:right;padding-top:3px}.sort-wrap select{font-size:8px}.catalog-caption{font-size:7px}.catalog-caption>span:last-child{max-width:155px;text-align:right}.resource-table th:nth-child(2),.resource-table td:nth-child(2){display:none}.resource-table th{font-size:6px;padding:10px 8px}.resource-table td{padding:12px 7px}.resource-cell{gap:7px}.distro-icon{width:27px;height:27px;font-size:14px;border-radius:5px}.resource-name{font-size:9px}.resource-filename{font-size:6px;max-width:155px}.arch-badge{font-size:6px}.row-actions{gap:6px}.download-link{font-size:0;gap:0}.download-link span{font-size:16px}.details-button{width:22px;height:23px;font-size:14px}.catalog-footnote{font-size:7px}.network-section{grid-template-columns:1fr;gap:28px;padding:29px 0}.network-section h2{font-size:31px}.network-section>div>p{max-width:100%}.network-steps{gap:18px}.network-steps p{max-width:100%}.deployment-section{padding:30px 0}.deployment-section>.section-heading{flex-wrap:wrap}.deployment-section h2{font-size:24px}.deployment-section .button{font-size:9px}.deployment-grid{gap:20px}.files-section{padding:30px 0}.files-section>.section-heading{align-items:flex-start}.files-section h2{font-size:23px;max-width:190px}.files-section .text-link{font-size:8px;gap:6px;white-space:nowrap;margin-top:22px}.file-list>a{padding:14px 0}.file-list strong{font-size:10px}.footer{margin:0 20px;padding:19px 0;gap:10px}.footer-brand{font-size:20px}.footer-brand small{display:block;margin:2px 0;font-size:7px}.footer>a{font-size:7px}.toast{left:50%}dialog{padding:21px}dialog h2{font-size:26px}.dialog-links{font-size:10px;gap:10px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.button:hover{transform:none}}

.cli-access{display:block;color:var(--accent);margin-top:7px;font-size:9px}.details-button{display:inline-grid;place-items:center}.catalog-footnote a{color:var(--accent);text-decoration:underline}
'''
TEMPLATES['portal.js'] = r'''
/** Timestamp: 2026-10-08 | Version: 2.2.0 | Author & Credits: https://www.alawise.es/1-s */
'use strict';

const dat_cat = JSON.parse(document.getElementById('catalog-data').textContent);
const rec_all = dat_cat.resources || [];
const el = nom_id => document.getElementById(nom_id);
let flt_cat = 'all';
let mod_act = 'mount';
let rec_act = null;
let tmr_toast;
const sym_fam = {debian:'◉', fedora:'f', ubuntu:'◌', arch:'A', gentoo:'g', kali:'K', proxmox:'×', clonezilla:'C', gparted:'▥', memtest:'▤', netboot:'↗', dban:'D', supergrub:'S', bootrepair:'↻'};
const url_pxe = dat_cat.pxe_url || 'http://pxeboot.1-s.es';
const cmd_boot = `dhcp\nchain ${url_pxe}/menu.ipxe`;
const mod_desc = {
  mount:['Disk-backed ISO mounts', 'For Excalibur: read-only loop mounts and symlinks keep the original ISO on disk without duplicating its contents. Root access is required; Linux manages the page cache.'],
  extract:['Physical extraction', 'For a shared hosting mirror: extract each ISO into a real directory and copy its download file into the webroot. Run on a Linux preparation machine with bsdtar, then upload the generated tree.'],
  ram:['Explicit RAM copy', 'For a memory-backed mirror: copy the payloads into an existing tmpfs directory, then mount the ISO contents read-only. This uses real RAM capacity and needs enough free space.']
};

// URL selection stays separate from availability so a configured mirror never appears verified.
function obt_url(rec) {
  const mir_act = el('mirror').value;
  if (mir_act === 'source' || (mir_act === 'auto' && (!rec.published || rec.status === 'checksum-failed'))) return rec.url;
  const url_base = mir_act === 'france' ? 'https://b.1-s.eu' : dat_cat.base_url;
  return `${url_base.replace(/\/$/, '')}/${encodeURIComponent(rec.filename)}`;
}

function flt_rec() {
  const bus_txt = el('search').value.toLowerCase().trim();
  const arq_act = el('arch').value;
  let rec_vis = rec_all.filter(rec =>
    (flt_cat === 'all' || rec.category === flt_cat) &&
    (arq_act === 'all' || rec.arch === arq_act) &&
    [rec.name,rec.filename,rec.release,rec.family,rec.arch].join(' ').toLowerCase().includes(bus_txt));
  if (el('sort').value === 'name') rec_vis.sort((a,b) => a.name.localeCompare(b.name) || a.filename.localeCompare(b.filename));
  if (el('sort').value === 'release') rec_vis.sort((a,b) => b.release.localeCompare(a.release,undefined,{numeric:true}) || a.name.localeCompare(b.name));
  return rec_vis;
}

function gen_row(rec) {
  const fil = document.createElement('tr');
  const cel_nom = document.createElement('td');
  const div_nom = document.createElement('div');
  div_nom.className = 'resource-cell';
  const ico = document.createElement('span');
  ico.className = `distro-icon ${rec.family}`;
  ico.textContent = sym_fam[rec.family] || '↗';
  ico.setAttribute('aria-hidden','true');
  const div_txt = document.createElement('div');
  const btn_nom = document.createElement('a');
  btn_nom.className = 'resource-name';
  btn_nom.href = `files/${rec.id}.html`;
  btn_nom.textContent = rec.name;
  btn_nom.addEventListener('click',evt => open_details(evt,rec));
  const arc_nom = document.createElement('span');
  arc_nom.className = 'resource-filename';
  arc_nom.textContent = rec.filename;
  arc_nom.title = rec.filename;
  div_txt.append(btn_nom,arc_nom);
  div_nom.append(ico,div_txt);
  cel_nom.append(div_nom);
  fil.append(cel_nom);
  for (const [val,cls] of [[rec.release,'release'],[rec.arch === 'arm64' ? 'ARM64' : rec.arch,'arch-badge'],[rec.format,'format-badge']]) {
    const cel = document.createElement('td');
    const spn = document.createElement('span');
    spn.className = cls;
    spn.textContent = val;
    cel.append(spn);
    fil.append(cel);
  }
  const cel_acc = document.createElement('td');
  const div_acc = document.createElement('div');
  div_acc.className = 'row-actions';
  const lnk = document.createElement('a');
  lnk.className = 'download-link';
  lnk.href = obt_url(rec);
  lnk.target = '_blank';
  lnk.rel = 'noopener noreferrer';
  lnk.setAttribute('aria-label',`Download ${rec.name}, ${rec.arch}`);
  lnk.append(document.createTextNode('Download '));
  const fle = document.createElement('span');
  fle.textContent = '↓';
  fle.setAttribute('aria-hidden','true');
  lnk.append(fle);
  if (dat_cat.state === 'synced' && el('mirror').value === 'local' && !rec.published) {
    lnk.removeAttribute('href');
    lnk.setAttribute('aria-disabled','true');
    lnk.title = 'Not published locally. See resource details or select an upstream.';
    lnk.addEventListener('click',()=>ver_rec(rec));
  }
  const btn = document.createElement('a');
  btn.className = 'details-button';
  btn.href = `files/${rec.id}.html`;
  btn.textContent = '⋯';
  btn.setAttribute('aria-label',`Details for ${rec.name}`);
  btn.addEventListener('click',evt => open_details(evt,rec));
  div_acc.append(lnk,btn);
  cel_acc.append(div_acc);
  fil.append(cel_acc);
  return fil;
}

function act_cat() {
  const rec_vis = flt_rec();
  el('resource-rows').replaceChildren(...rec_vis.map(gen_row));
  el('empty-state').hidden = rec_vis.length > 0;
  document.querySelector('.resource-table').hidden = rec_vis.length === 0;
  el('result-count').textContent = `Showing ${rec_vis.length} of ${rec_all.length} resources`;
  const mir_act = el('mirror').value;
  el('origin-note').textContent = mir_act === 'auto' ? 'Local when published · upstream otherwise' : mir_act === 'source' ? 'Configured URLs · upstream availability unverified' : 'Generated mirror paths · remote availability unverified';
  document.querySelectorAll('[data-category]').forEach(btn => {
    const sel = btn.dataset.category === flt_cat;
    btn.classList.toggle('selected',sel);
    btn.setAttribute('aria-pressed',String(sel));
  });
  if (rec_act && el('resource-dialog').open) act_rec(rec_act);
}

function obt_tam(tam_byt) {
  if (!tam_byt) return 'Recorded after sync';
  const uni = ['B','KiB','MiB','GiB','TiB'];
  const idx = Math.min(4,Math.floor(Math.log(tam_byt)/Math.log(1024)));
  return `${(tam_byt / 1024**idx).toFixed(idx ? 2 : 0)} ${uni[idx]}`;
}

function act_rec(rec) {
  el('resource-title').textContent = rec.name;
  el('resource-description').textContent = rec.description;
  el('resource-meta').replaceChildren();
  const lis_meta = [
    ['Filename',rec.filename],['Release',rec.release],['Architecture',rec.arch],['Format',rec.format],
    ['Local size',obt_tam(rec.size)],['Local state',rec.status === 'source' ? 'Source URL only' : rec.status],
    ['PXE',rec.pxe_ready ? 'Required files found · boot test pending' : 'Generated after sync when supported'],
    ['SHA-256',rec.sha256 || 'Computed after sync; no upstream authentication claim']
  ];
  for (const [nom,val] of lis_meta) {
    const dt = document.createElement('dt');dt.textContent=nom;
    const dd = document.createElement('dd');dd.textContent=val;
    el('resource-meta').append(dt,dd);
  }
  el('resource-url').value = obt_url(rec);
  el('resource-download').href = obt_url(rec);
  el('resource-source').href = rec.url;
  el('resource-commands').href = `files/${rec.id}.html`;
}

function ver_rec(rec) {rec_act=rec;act_rec(rec);el('resource-dialog').showModal();}
function open_details(evt,rec) {
  if(evt.button || evt.ctrlKey || evt.metaKey || evt.shiftKey || evt.altKey || typeof el('resource-dialog').showModal !== 'function') return;
  evt.preventDefault();ver_rec(rec);
}
function ver_toast(txt) {
  clearTimeout(tmr_toast);
  el('toast').textContent = txt;
  el('toast').classList.add('visible');
  tmr_toast = setTimeout(() => el('toast').classList.remove('visible'),2800);
}

async function cop_txt(txt) {
  try {
    await navigator.clipboard.writeText(txt);
    ver_toast('Copied to clipboard');
  } catch {
    // The fallback keeps copy actions useful in HTTP-hosted mirror deployments.
    const tmp = document.createElement('textarea');
    tmp.value = txt;tmp.style.position='fixed';tmp.style.opacity='0';
    (document.querySelector('dialog[open]') || document.body).append(tmp);
    tmp.select();
    const ok = document.execCommand('copy');tmp.remove();
    ver_toast(ok ? 'Copied to clipboard' : 'Copy unavailable. Select the command manually.');
  }
}

function act_mod() {
  const [tit,txt] = mod_desc[mod_act];
  el('mode-title').textContent=tit;el('mode-description').textContent=txt;
  const sudo = mod_act === 'extract' ? '' : 'sudo ';
  const ram = mod_act === 'ram' ? ' \\\n  --ram-dir /dev/shm/aux-fast-boot' : '';
  el('deploy-command').textContent = `# Review the script, then run locally.\n${sudo}bash fast-boot.sh \\\n  --mode ${mod_act} \\\n  --output /var/www/aux.1-s.es/html \\\n  --base-url https://aux.1-s.es \\\n  --pxe-url http://pxeboot.1-s.es${ram}`;
  document.querySelectorAll('[data-mode]').forEach(btn => {
    const sel = btn.dataset.mode === mod_act;btn.classList.toggle('selected',sel);btn.setAttribute('aria-pressed',String(sel));
  });
}

function act_boot() {
  const plat=el('boot-platform').value;
  const met={
    uefi:['Start an x86_64 UEFI iPXE client','Use an iPXE EFI build with the network driver and HTTP support for the target machine. Then enter the following commands at its prompt.'],
    bios:['Start a legacy BIOS iPXE client','Use a BIOS iPXE build from a NIC option ROM, GRUB, or a prepared USB key. The menu checks CPU long-mode support before offering 64-bit kernels.'],
    arm:['Start an ARM64 UEFI iPXE client','Use an ARM64 EFI build for the target board. An x86_64 EFI binary cannot run on ARM hardware; board firmware support is required.']
  }[plat];
  el('boot-method-title').textContent=met[0];el('boot-method-description').textContent=met[1];
  el('boot-command').textContent=cmd_boot;
}

el('search').addEventListener('input',act_cat);
for (const nom of ['arch','mirror','sort']) el(nom).addEventListener('change',act_cat);
document.querySelectorAll('[data-category]').forEach(btn => btn.addEventListener('click',()=>{flt_cat=btn.dataset.category;act_cat();}));
document.querySelectorAll('[data-mode]').forEach(btn => btn.addEventListener('click',()=>{mod_act=btn.dataset.mode;act_mod();}));
document.querySelectorAll('[data-open-boot]').forEach(btn=>btn.addEventListener('click',evt=>{
  if(evt.button || evt.ctrlKey || evt.metaKey || evt.shiftKey || evt.altKey || typeof el('boot-dialog').showModal !== 'function') return;
  evt.preventDefault();el('boot-dialog').showModal();
}));
document.querySelectorAll('[data-copy-boot]').forEach(btn=>btn.addEventListener('click',()=>cop_txt(cmd_boot)));
document.querySelectorAll('[data-close-dialog]').forEach(btn=>btn.addEventListener('click',()=>btn.closest('dialog').close()));
document.querySelectorAll('dialog').forEach(dlg=>dlg.addEventListener('click',evt=>{
  const box=dlg.getBoundingClientRect();
  if(evt.target===dlg && (evt.clientX<box.left||evt.clientX>box.right||evt.clientY<box.top||evt.clientY>box.bottom)) dlg.close();
}));
el('boot-platform').addEventListener('change',act_boot);
el('copy-deploy').addEventListener('click',()=>cop_txt(el('deploy-command').textContent));
el('copy-resource').addEventListener('click',()=>cop_txt(el('resource-url').value));
el('reset-filters').addEventListener('click',()=>{el('search').value='';el('arch').value='all';flt_cat='all';act_cat();});
document.addEventListener('keydown',evt=>{
  if(evt.key==='/' && !['INPUT','TEXTAREA','SELECT'].includes(document.activeElement.tagName) && !document.querySelector('dialog[open]')){evt.preventDefault();el('search').focus();}
});
for(const cat of ['all','distribution','rescue','netboot']) el(`count-${cat}`).textContent=rec_all.filter(rec=>cat==='all'||rec.category===cat).length;
el('total-count').textContent=rec_all.length;el('side-count').textContent=rec_all.length;
if(dat_cat.state==='synced') {
  el('mirror').value='auto';
  el('catalog-note').textContent='Local file sizes and SHA-256 hashes are recorded by the engine. PXE file checks do not replace a boot test on target hardware. External mirror availability has not been checked.';
  document.querySelector('.source-label').lastChild.textContent='LOCAL CATALOG';
}
const opt_loc=el('mirror').querySelector('option[value="local"]');
opt_loc.textContent=`Local mirror · ${new URL(dat_cat.base_url).host}`;
el('boot-command').textContent=cmd_boot;
document.querySelector('.terminal-url').textContent=`${url_pxe}/menu.ipxe`;
if('IntersectionObserver' in window){
  const nav_obs=new IntersectionObserver(entries=>{
    const vis=entries.filter(entry=>entry.isIntersecting).sort((a,b)=>b.intersectionRatio-a.intersectionRatio)[0];
    if(!vis)return;
    document.querySelectorAll('.side-nav a').forEach(a=>a.classList.toggle('active',a.hash===`#${vis.target.id}`));
  },{rootMargin:'-5% 0px -45% 0px',threshold:[0,.2,.5]});
  for(const nom of ['catalog','network','deployment','project-files']) nav_obs.observe(el(nom));
}
act_cat();act_mod();act_boot();
// Reveal optional controls only after initialization succeeds. HTML links already work.
document.querySelectorAll('[data-enhance]').forEach(node=>{node.hidden=false;});
'''
TEMPLATES['DEPLOYMENT.md'] = r'''
# aux / Fast Boot

Timestamp: 2026-10-08 · Version: 2.2.0
Author & Credits: https://www.alawise.es/1-s

`fast-boot.sh` is a standalone Bash entrypoint with an embedded Python engine, URL catalog and portal assets. The supplied dynamic-engine URL list is preserved. Versions are pinned by those URLs; a dated filename is not a claim that the upstream file exists or is the newest release.

The engine is verbose by default. Each parallel transfer is labelled with its filename and reports its source, percentage, bytes, speed, ETA, resume state, validation and SHA-256 result. The labels remain readable when four downloads run together. Use `--quiet` when only errors and the final summary are wanted; `--verbose` or `-v` explicitly selects the default live output.

```bash
sudo bash fast-boot.sh --verbose --jobs 4
sudo bash fast-boot.sh --quiet --generate-only
```

## Start safely

Review the script, then inspect the plan without writes or network requests:

```bash
bash fast-boot.sh --dry-run
```

Requirements: Bash, Python 3.12 or newer, curl, and bsdtar (`libarchive-tools` on Debian, `bsdtar` on Fedora). Mount and RAM modes also need root, util-linux mount/umount, and stat. Dependencies are checked; the script does not install packages or alter firewall, DNS, PHP-FPM, nginx or systemd configuration.

## Excalibur: disk-backed mounts

```bash
sudo bash fast-boot.sh \
  --mode mount \
  --output /var/www/aux.1-s.es/html \
  --cache /var/www/aux.1-s.es/isos \
  --base-url https://aux.1-s.es \
  --pxe-url http://pxeboot.1-s.es
```

ISOs stay in the cache. The webroot exposes symlinks to their files and read-only loop mounts to their contents. These are disk-backed mounts: symlinks do not load ISOs into RAM. Linux uses available memory as its page cache.

Mounts are not automatically restored after a reboot. Rerun the same command after networking is available. This version does not create a systemd unit. nginx must serve the same webroot for aux and pxeboot hostnames, permit intentional symlink access to the cache, prioritize `index.php`, and pass PHP to a configured PHP-FPM service. Fedora SELinux labels and policy must also permit those paths; this script does not change or disable SELinux.

## Excalibur: actual RAM copies

```bash
sudo bash fast-boot.sh \
  --mode ram \
  --ram-dir /dev/shm/aux-fast-boot \
  --output /var/www/aux.1-s.es/html \
  --base-url https://aux.1-s.es \
  --pxe-url http://pxeboot.1-s.es
```

The RAM directory must already reside on tmpfs. Each payload is copied there and consumes its full size. The engine checks free space before copying, keeps the durable disk download cache, and reports failures rather than claiming a disk-backed file is a RAM copy. Contents and mounts disappear after reboot. RAM mode is unsuitable for a catalog larger than available tmpfs capacity.

## OVH France: physical preparation

Run on a Linux machine where bsdtar is available; then upload the complete generated webroot to shared hosting:

```bash
bash fast-boot.sh \
  --mode extract \
  --output ./france/html \
  --cache ./france/isos \
  --base-url https://b.1-s.eu \
  --pxe-url http://b.1-s.eu
```

This mode duplicates the cached download into the webroot and physically extracts the ISO into its own directory. The generated webroot is self-contained for upload and needs both compressed image and extracted tree disk capacity. Serve `assets/`, `catalog.json`, payload files and extracted trees. No root or loop mount is required on the shared hosting server.

## Catalog and updates

```bash
bash fast-boot.sh --url-file urls.txt --dry-run
sudo bash fast-boot.sh --url-file urls.txt --refresh
sudo bash fast-boot.sh --only debian
bash fast-boot.sh --generate-only --output ./prepared/html --cache ./prepared/isos
```

The external URL list replaces the embedded list. Exact duplicate URLs are removed; distinct URLs with the same basename cause an explicit collision error. SourceForge `/download` suffixes are removed when deriving filenames. Queries are not used as filenames. HTTP(S) sources are supported, with HTTPS preferred.

Valid cached files are reused. `--refresh` fetches them again; interrupted downloads retain `.part` data for a later resume. The verbose output announces whether the partial file resumes with `If-Range` or restarts because no server validator is available. Completed HTML responses, empty files, invalid ISO signatures and invalid archives are rejected. Failed updates preserve the previous valid cache and report a nonzero exit status. Upstream servers can reject resume requests; remove the specific `.part` file to retry a full transfer in that case.

`--generate-only` performs no download, extraction or mount. It reads valid existing cache files and already prepared trees, then writes the portal and menu. It can expose an existing cache through a webroot symlink. Ensure any manually prepared tree matches its ISO before using this option.

There is no automatic deletion of old payloads or unrelated webroot files. A cache lock prevents concurrent runs. Replacing generated pages preserves prior versions under the cache's `backups/` directory. Existing unmanaged payload trees are left for inspection; only trees recorded by this engine may be remounted or replaced. Old ISOs can continue to consume space until deliberately removed.

## Download from an SSH terminal

After deploying the generated webroot on the mirror:

```bash
links https://aux.1-s.es/cli.html
# Or:
lynx https://aux.1-s.es/cli.html
```

`cli.html` is a compact HTML page with no JavaScript, stylesheets, images, cookies or app dependencies. ISO downloads come first, grouped by architecture. Every filename is a real HTTP(S) link. Open the adjacent **commands** link for the exact `wget -c -O filename -- URL` or `curl -fL -C - -o filename -- URL` command. Both specify the output filename, so SourceForge URLs ending in `/download` retain the ISO's real name. Copy a command into the SSH shell in the desired destination directory; rerun it to resume when the server supports HTTP Range requests.

The visual catalog also contains all rows and links in the initial HTML response, in both `index.html` and `index.php`. JavaScript adds filters and dialogs. Resource names lead to ordinary HTML detail pages when JavaScript is unavailable. The original colors and layout remain in the visual catalog.

The default link uses the local mirror only after the engine marks that file as published. Otherwise it uses the configured upstream. The optional mirror selector remains available in the visual catalog. `downloads/isos.tsv` provides one ISO per line with filename, architecture, selected URL and the local SHA-256 when available; it excludes compressed archives and non-ISO boot binaries. `downloads/urls.txt` remains the original complete source list. Do not feed source URLs blindly to `wget -i`: multiple SourceForge URLs can otherwise use the same `download` filename.

Resume only the same image/version, and verify its checksum before use. If a rolling image was replaced on the server, download a fresh copy. These pages work on an ordinary static server or PHP host. The private Sites preview still requires its platform sign-in; the SSH workflow uses the mirror's own HTTP(S) address without that sign-in layer.

## Generated files

- `index.php`: the complete pre-rendered catalog and a fixed-path catalog reader for enhanced interactions. No visitor request parameters control URLs or shell commands.
- `index.html`: static version of the same portal for Sites or a static web server.
- `cli.html`: compact text-browser catalog with direct download links and architecture groups.
- `files/`: lightweight resource pages with explicit filenames, resume commands and recorded hashes.
- `assets/`: local styles, JavaScript, supplied logo and favicon.
- `catalog.json`: source URLs, metadata, local state, real sizes and hashes.
- `menu.ipxe`: architecture and firmware-aware menu generated from prepared local files.
- `sitemaps.xml`: the canonical root and locally published download files, serialized as valid XML.
- `SHA256SUMS`: hashes of locally published downloads.
- `downloads/`: engine, documentation, source list, ISO TSV list, source PHP text, initial menu and a portable portal bundle.

The ZIP contains the portal and engine, not multi-gigabyte ISO payloads. Upload the prepared webroot directly for a physical mirror.

## Integrity

`SHA256SUMS` records the downloaded bytes; it does not authenticate them against a distribution's signing key. For an independently trusted checksum list, use:

```bash
sudo bash fast-boot.sh --checksums trusted-SHA256SUMS
```

Payloads listed in that file must match before publication. Obtain and authenticate checksum/signature records through the distribution's verification procedure. Unlisted payloads are only checked for a valid container and given a local SHA-256 hash.

## Boot scope

Supported recipes cover recognized Debian and Kali installers, Debian-style live trees, Ubuntu casper images, Fedora live and netinst media, Arch media, and matching native network boot clients. Actual kernel/initrd pairs and required filesystem files must exist before a recipe enters the menu. The initial menu contains only the shell, reboot and local-disk options until preparation succeeds.

Debian-style live-boot HTTP fetch can need a numeric IPv4 URL. The engine resolves the boot hostname to IPv4 during generation, or accepts `--live-url http://SERVER_IP`. A failed resolution leaves these live recipes out of the menu. Regenerate after the mirror address changes. HTTPS boot support depends on the iPXE build and certificates; the default client boot URL uses HTTP independently of the portal's HTTPS URL.

Fedora netinst uses the local `.treeinfo` tree for `inst.stage2` and the corresponding upstream `/os/` package repository for `inst.repo`. A netinst ISO is not a full package repository. Kernel/initrd file checks are necessary but do not prove boot compatibility: test on intended BIOS/UEFI/ARM clients. Secure Boot requires a separately trusted, signed boot chain.

Gentoo, Proxmox and Super GRUB images remain downloadable without speculative automatic recipes. Memtest ZIP files are unpacked, including nested ISO contents; only discovered native `memtest.efi` or `memtest.bin` files become menu entries. DBAN stays download-only and never receives an automatic erasure command.

From an iPXE shell:

```text
dhcp
chain http://pxeboot.1-s.es/menu.ipxe
```

The Sites portal initially uses the configured upstream URL catalog. It does not execute Bash, host ISO payloads, deploy to Excalibur, configure DHCP/TFTP, or assert that external mirrors are online. Mirror downloads are generated paths and visibly unverified. Run the engine on the intended preparation/server machine to create the operational mirror.

## Primary technical references

- iPXE platform, build architecture and CPU detection: https://ipxe.org/cfg/platform, https://ipxe.org/cfg/buildarch, https://ipxe.org/cmd/cpuid
- iPXE chainloading: https://ipxe.org/cmd/chain
- Debian live-boot options: https://manpages.debian.org/unstable/live-boot-doc/live-boot.7.en.html
- Anaconda stage2 and install repositories: https://anaconda-installer.readthedocs.io/en/latest/user-guide/boot-options.html
- Project source: https://github.com/1wise/aux.1-s.eu
'''
BINARY_ASSETS = {'aux-logo.png': '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', 'favicon.png': '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'}
#!/usr/bin/env python3
# Timestamp: 2026-10-08 | Version: 2.2.0
# Author & Credits: https://www.alawise.es/1-s
# iPXE command semantics: https://ipxe.org
"""Build a mirror from one URL catalog without clearing unrelated web files."""

import argparse
import base64
import concurrent.futures
import configparser
import datetime as dt
import fcntl
import hashlib
import html
import json
import os
from pathlib import Path
import re
import shlex
import shutil
import socket
import subprocess
import sys
import tarfile
import tempfile
import threading
import time
from urllib.parse import urlsplit, unquote, quote, urlunsplit
import xml.etree.ElementTree as ET
import zipfile

DEFAULT_URLS = globals().get('DEFAULT_URLS', '')
TEMPLATES = globals().get('TEMPLATES', {})
BINARY_ASSETS = globals().get('BINARY_ASSETS', {})
VERSION = '2.2.0'
CREDITS = 'https://www.alawise.es/1-s'
mtx_log = threading.Lock()


def obt_args():
    arg = argparse.ArgumentParser(description=__doc__)
    arg.add_argument('--output', default='/var/www/aux.1-s.es/html', help='Generated webroot')
    arg.add_argument('--cache', help='Download cache outside the webroot; defaults to a sibling isos directory')
    arg.add_argument('--base-url', default='https://aux.1-s.es', help='Canonical web mirror URL')
    arg.add_argument('--pxe-url', default='http://pxeboot.1-s.es', help='Client-reachable boot mirror URL')
    arg.add_argument('--live-url', help='Numeric IPv4 HTTP URL for Debian-style live-boot fetch')
    arg.add_argument('--mode', choices=['mount', 'extract', 'ram'], default='mount')
    arg.add_argument('--ram-dir', default='/dev/shm/aux-fast-boot', help='Directory on an already mounted tmpfs')
    arg.add_argument('--url-file', help='One HTTP(S) payload URL per line; comments start with #')
    arg.add_argument('--checksums', help='Optional trusted SHA256SUMS file; listed payloads must match')
    arg.add_argument('--jobs', type=int, default=4, help='Parallel downloads, from 1 to 16')
    arg.add_argument('--only', help='Select resources by family or filename substring')
    arg.add_argument('--refresh', action='store_true', help='Fetch again, even when a valid cache exists')
    arg.add_argument('--generate-only', action='store_true', help='Generate pages and menu from already prepared local files')
    arg.add_argument('--dry-run', action='store_true', help='Print the catalog and targets without writes or network calls')
    grp_log = arg.add_mutually_exclusive_group()
    grp_log.add_argument('-v', '--verbose', dest='quiet', action='store_false', help='Show live per-file download progress (default)')
    grp_log.add_argument('-q', '--quiet', dest='quiet', action='store_true', help='Show only errors and the final resource summary')
    arg.set_defaults(quiet=False)
    arg.add_argument('--version', action='version', version=VERSION)
    cfg = arg.parse_args()
    if not 1 <= cfg.jobs <= 16:
        arg.error('--jobs must be between 1 and 16')
    cfg.output = Path(cfg.output).expanduser().resolve()
    cfg.cache = Path(cfg.cache).expanduser().resolve() if cfg.cache else cfg.output.parent / 'isos'
    cfg.ram_dir = Path(cfg.ram_dir).expanduser().resolve()
    if cfg.output == Path('/') or cfg.cache == Path('/') or cfg.cache.is_relative_to(cfg.output):
        arg.error('The webroot cannot be /, and the cache must be outside the webroot')
    for nom in ['base_url', 'pxe_url', 'live_url']:
        val = getattr(cfg, nom)
        if val:
            url = urlsplit(val)
            if url.scheme not in ('https', 'http') or not url.hostname or url.username or url.password or url.query or url.fragment or any(c.isspace() for c in val):
                arg.error(f'--{nom.replace("_", "-")} must be a plain HTTP(S) URL without credentials, query or fragment')
            setattr(cfg, nom, val.rstrip('/'))
    if cfg.live_url:
        url = urlsplit(cfg.live_url)
        if url.scheme != 'http' or not re.fullmatch(r'\d+\.\d+\.\d+\.\d+', url.hostname):
            arg.error('--live-url must use http:// and a numeric IPv4 address')
    return cfg


def obt_meta(url):
    part = urlsplit(url)
    if part.scheme not in ('http', 'https') or not part.hostname or part.username or part.password or any(c.isspace() for c in url):
        raise ValueError(f'Invalid payload URL: {url}')
    pth = part.path.rstrip('/')
    if pth.endswith('/download'):
        pth = pth[:-9]
    nom_arc = unquote(pth.rsplit('/', 1)[-1])
    if not re.fullmatch(r'[A-Za-z0-9][A-Za-z0-9._+-]*', nom_arc):
        raise ValueError(f'Unsafe or missing filename in URL: {url}')
    low = nom_arc.lower()
    fam = next((nom for nom, pat in [
        ('debian', 'debian'), ('fedora', 'fedora'), ('ubuntu', 'ubuntu'),
        ('arch', 'archlinux'), ('arch', 'ipxe-arch'), ('gentoo', 'livegui'),
        ('gentoo', 'install-amd64-minimal'), ('kali', 'kali'), ('proxmox', 'proxmox'),
        ('clonezilla', 'clonezilla'), ('gparted', 'gparted'), ('memtest', 'mt86plus'),
        ('netboot', 'netboot.xyz'), ('bootrepair', 'boot-repair'), ('dban', 'dban'),
        ('supergrub', 'supergrub')
    ] if pat in low), 'other')
    if 'aarch64' in low or 'arm64' in low:
        arq = 'arm64'
    elif re.search(r'(?:i[356]86|_32|[._-]32[._-])', low):
        arq = 'i386'
    else:
        arq = 'x86_64'
    cat = 'distribution' if fam in ('debian', 'fedora', 'ubuntu', 'arch', 'gentoo') else 'rescue'
    fmt = next((ext.upper() for ext in ['tar.gz', 'iso.zip', 'grub.iso.zip', 'img.xz', 'iso', 'efi', 'kpxe', 'pxe', 'lkrn', 'qcow2'] if low.endswith('.' + ext)), 'FILE')
    if low.endswith(('.efi', '.kpxe', '.pxe', '.lkrn')):
        cat = 'netboot'
    rel = re.search(r'(?<!\d)(\d{4}\.\d{2}\.\d{2}|\d{4}\.\d+|\d+\.\d+(?:\.\d+)?(?:-\d+)?|\d{8}T\d+Z)(?!\d)', nom_arc)
    release = rel.group(1) if rel else 'Rolling'
    if fam == 'fedora':
        rel_fed = re.search(r'(?:Live-|netinst-(?:x86_64-|aarch64-)?)(\d+)-', nom_arc)
        release = 'Rawhide' if 'rawhide' in low else (rel_fed.group(1) if rel_fed else release)
    if 'testing' in low:
        release = 'Testing'
    if 'beta' in low:
        release += ' beta'
    base_nom = {'debian': 'Debian', 'fedora': 'Fedora', 'ubuntu': 'Ubuntu', 'arch': 'Arch Linux',
                'gentoo': 'Gentoo', 'kali': 'Kali Linux', 'proxmox': 'Proxmox VE',
                'clonezilla': 'Clonezilla Live', 'gparted': 'GParted Live', 'memtest': 'Memtest86+',
                'netboot': 'netboot.xyz', 'bootrepair': 'Boot Repair', 'dban': 'DBAN',
                'supergrub': 'Super GRUB2 Disk', 'other': 'Boot resource'}[fam]
    var = ''
    for pat, tit in [('gnome', 'GNOME Live'), ('xfce', 'XFCE Live'), ('purple', 'Purple Installer'),
                     ('workstation', 'Workstation Live'), ('live-server', 'Server'), ('desktop', 'Desktop'),
                     ('server-netinst', 'Server Netinstall'), ('netinst', 'Netinstall'), ('livegui', 'LiveGUI'),
                     ('minimal', 'Minimal Install'), ('installer', 'Installer')]:
        if pat in low:
            var = tit
            break
    if cat == 'netboot':
        var = 'UEFI' if low.endswith('.efi') else ('BIOS kernel' if low.endswith('.lkrn') else 'Legacy BIOS')
    if fam == 'ubuntu' and fmt == 'TAR.GZ':
        var = 'Netboot archive'
    if fam == 'memtest' and '.grub.' in low:
        var = 'GRUB image'
    description = {
        'debian': 'Debian installation or live media from the supplied source manifest.',
        'fedora': 'Fedora workstation or server media. The source version is pinned in the URL list.',
        'ubuntu': 'Ubuntu desktop, server or network boot resources from the supplied source list.',
        'arch': 'Arch Linux rolling installation media or a native iPXE boot client.',
        'gentoo': 'Gentoo live or minimal media. Downloadable; no unverified automatic PXE recipe is emitted.',
        'kali': 'Kali installation media for authorized security work and defensive environments.',
        'proxmox': 'Proxmox virtualization installer. Downloadable; its ISO is not advertised as a complete HTTP PXE installer.',
        'clonezilla': 'Live media for disk imaging and backup. Run recovery actions deliberately on the target system.',
        'gparted': 'Partition management live media. Partition changes require a separate decision on the target system.',
        'memtest': 'Memory test media. PXE entries require actual native EFI or BIN payloads after extraction.',
        'netboot': 'A firmware-specific network boot client. Choose the binary that matches the target firmware.',
        'bootrepair': 'Boot recovery media. Local payload paths are discovered after preparation.',
        'dban': 'Legacy disk erasure media. Download only; this engine never creates an automatic disk wipe entry.',
        'supergrub': 'GRUB boot recovery image. Download only unless a recipe is explicitly supported.',
        'other': 'A payload provided in the source URL manifest.'
    }[fam]
    stem = re.sub(r'\.(?:grub\.iso\.zip|iso\.zip|tar\.gz|img\.xz|iso|zip)$', '', nom_arc, flags=re.I)
    return {'id': 'r_' + hashlib.sha256(nom_arc.encode()).hexdigest()[:12], 'name': f'{base_nom} {var}'.strip(),
            'family': fam, 'category': cat, 'arch': arq, 'release': release, 'format': fmt,
            'filename': nom_arc, 'tree': stem, 'url': url, 'description': description,
            'status': 'source', 'size': None, 'sha256': None, 'published': False, 'pxe_ready': False}


def obt_catalog(txt, sel=None):
    rec_all, url_vistos, nom_vistos = [], set(), {}
    for lin in txt.splitlines():
        url = lin.strip()
        if not url or url.startswith('#') or url in url_vistos:
            continue
        rec = obt_meta(url)
        if rec['filename'] in nom_vistos:
            raise ValueError(f'Filename collision: {rec["filename"]}; keep one source URL per filename')
        url_vistos.add(url)
        nom_vistos[rec['filename']] = url
        if not sel or sel.lower() in (rec['family'] + ' ' + rec['filename']).lower():
            rec_all.append(rec)
    if not rec_all:
        raise ValueError('The selected URL catalog is empty')
    return rec_all


def arc_valido(pth, nom_arc):
    if not pth.is_file() or pth.stat().st_size == 0:
        return False
    with pth.open('rb') as arc:
        cab = arc.read(512)
        low = cab.lstrip().lower()
        if low.startswith((b'<!doctype html', b'<html', b'<?xml', b'{"error')):
            return False
        if nom_arc.endswith('.iso'):
            arc.seek(32769)
            return arc.read(5) in (b'CD001', b'BEA01', b'NSR02', b'NSR03')
    if nom_arc.endswith('.zip'):
        return zipfile.is_zipfile(pth)
    if nom_arc.endswith('.tar.gz'):
        return tarfile.is_tarfile(pth)
    if nom_arc.endswith('.efi'):
        return cab.startswith(b'MZ')
    if nom_arc.endswith('.img.xz'):
        return cab.startswith(b'\xfd7zXZ\x00')
    return True


def obt_sha(pth):
    dig = hashlib.sha256()
    with pth.open('rb') as arc:
        for tro in iter(lambda: arc.read(4 * 1024 * 1024), b''):
            dig.update(tro)
    return dig.hexdigest()


def esc_atomic(pth, contenido):
    pth.parent.mkdir(parents=True, exist_ok=True)
    byt = contenido if isinstance(contenido, bytes) else contenido.encode('utf-8')
    with tempfile.NamedTemporaryFile(dir=pth.parent, prefix='.fast-boot-', delete=False) as arc:
        tmp = Path(arc.name)
        try:
            arc.write(byt)
            arc.flush()
            os.fsync(arc.fileno())
            os.chmod(tmp, 0o644)
            os.replace(tmp, pth)
        finally:
            tmp.unlink(missing_ok=True)


def msg_descarga(cfg, rec, etapa, texto, forzar=False):
    if cfg.quiet and not forzar:
        return
    nom_arc = rec['filename'] if rec else 'fast-boot'
    # Complete, flushed lines stay readable with parallel workers and through tee.
    with mtx_log:
        hora = dt.datetime.now().astimezone().strftime('%H:%M:%S')
        print(f'[{hora}] [{etapa}] {nom_arc} | {texto}', file=sys.stderr, flush=True)


def ejec_curl(cmd, rec, cfg, reanudar=False):
    """Relay curl's carriage-return progress meter as labelled terminal lines."""
    lis_err = []
    tms_ult = 0.0
    txt_ult = None

    def procesa_linea(raw):
        nonlocal tms_ult, txt_ult
        lin = raw.decode('utf-8', errors='replace').strip()
        if not lin or lin.startswith(('% Total', 'Dload  Upload')):
            return
        cols = lin.split()
        if len(cols) >= 12 and cols[0].isdigit() and cols[2].isdigit() and cols[4].isdigit():
            # Curl's byte units are 1024-based. A resumed meter covers the remaining transfer.
            txt = (f'{cols[2]}% | {cols[3]}/{cols[1]} B | speed {cols[11]} B/s | '
                   f'ETA {cols[10]}' + (' | remaining transfer' if reanudar else ''))
            tms_act = time.monotonic()
            if txt != txt_ult and (tms_act - tms_ult >= 2 or cols[2] == '100'):
                msg_descarga(cfg, rec, 'PROGRESS', txt)
                tms_ult, txt_ult = tms_act, txt
            return
        lis_err.append(lin)
        del lis_err[:-8]
        msg_descarga(cfg, rec, 'CURL', lin, forzar=True)

    if cfg.quiet:
        cmd += ['--silent']
    with subprocess.Popen(cmd + [rec['url']], stdout=subprocess.DEVNULL, stderr=subprocess.PIPE,
                          bufsize=0, env={**os.environ, 'LC_ALL': 'C'}) as proc:
        buf = b''
        while True:
            chunk = proc.stderr.read(4096)
            if not chunk:
                break
            buf += chunk
            parts = re.split(br'[\r\n]+', buf)
            buf = parts.pop()
            for raw in parts:
                procesa_linea(raw)
        if buf:
            procesa_linea(buf)
        return proc.wait(), '\n'.join(lis_err)


def sin_descarga(rec, cfg, sumas):
    arc_cac = cfg.cache / rec['filename']
    tmp = cfg.cache / (rec['filename'] + '.part')
    es_valid = arc_valido(arc_cac, rec['filename'])
    error = None
    if not cfg.generate_only and (cfg.refresh or not es_valid):
        msg_descarga(cfg, rec, 'START', 'Downloading from ' + urlsplit(rec['url']).netloc)
        cmd = ['curl', '--fail', '--location', '--show-error', '--retry', '3',
               '--connect-timeout', '20', '--speed-limit', '1024', '--speed-time', '60',
               '--proto', '=http,https', '--proto-redir', '=http,https', '--output', str(tmp)]
        # Resume only with a server validator so a changed upstream cannot splice two images.
        arc_cab = cfg.cache / (rec['filename'] + '.part.headers')
        validator = None
        if tmp.exists() and arc_cab.exists():
            cabs = arc_cab.read_text(errors='replace')
            etags = re.findall(r'^etag:\s*(.+)$', cabs, re.I | re.M)
            mods = re.findall(r'^last-modified:\s*(.+)$', cabs, re.I | re.M)
            validator = (etags or mods or [None])[-1]
        if tmp.exists() and validator:
            msg_descarga(cfg, rec, 'RESUME', f'{tmp.stat().st_size:,} bytes already saved; validating the upstream with If-Range')
            cmd += ['--continue-at', '-', '--header', 'If-Range: ' + validator.strip()]
        elif tmp.exists():
            msg_descarga(cfg, rec, 'RESTART', 'Partial file has no server validator; starting a fresh download')
            tmp.unlink()
        cmd += ['--dump-header', str(arc_cab)]
        cod_ret, txt_err = ejec_curl(cmd, rec, cfg, reanudar=bool(validator))
        if cod_ret == 0 and arc_valido(tmp, rec['filename']):
            msg_descarga(cfg, rec, 'VERIFY', f'{tmp.stat().st_size:,} bytes received; calculating SHA-256')
            dig = obt_sha(tmp)
            if rec['filename'] in sumas and sumas[rec['filename']] != dig:
                error = 'Trusted checksum mismatch'
                tmp.unlink(missing_ok=True)
            else:
                os.chmod(tmp, 0o644)
                os.replace(tmp, arc_cac)
                es_valid = True
                rec['sha256'] = dig
                rec['status'] = 'downloaded'
                msg_descarga(cfg, rec, 'DONE', f'{arc_cac.stat().st_size:,} bytes saved; ' + ('trusted checksum matched' if rec['filename'] in sumas else 'SHA-256 recorded'))
        else:
            error = f'curl exited with code {cod_ret}' + (': ' + txt_err if txt_err else '') if cod_ret else 'Download returned an invalid payload'
            # A completed invalid response must not be resumed as if it were a partial image.
            if cod_ret in (0, 33, 36):
                tmp.unlink(missing_ok=True)
        if error:
            msg_descarga(cfg, rec, 'ERROR', error, forzar=True)
            if tmp.exists():
                msg_descarga(cfg, rec, 'PARTIAL', f'{tmp.stat().st_size:,} bytes retained for a later resume', forzar=True)
    if es_valid:
        rec['size'] = arc_cac.stat().st_size
        if not rec['sha256']:
            msg_descarga(cfg, rec, 'VERIFY', f'Checking cached file: {rec["size"]:,} bytes; calculating SHA-256')
        rec['sha256'] = rec['sha256'] or obt_sha(arc_cac)
        if rec['filename'] in sumas and sumas[rec['filename']] != rec['sha256']:
            rec['status'] = 'checksum-failed'
            rec['error'] = 'Cached payload differs from trusted checksum'
            msg_descarga(cfg, rec, 'ERROR', rec['error'], forzar=True)
            return rec
        if rec['status'] != 'downloaded':
            rec['status'] = 'cached' if not error else 'cached-after-error'
            msg_descarga(cfg, rec, 'CACHE', f'Reusing {rec["size"]:,} bytes' + (' from the previous valid copy after the failed refresh' if error else ''))
    elif not cfg.generate_only:
        rec['status'] = 'failed'
    if error:
        rec['error'] = error
    return rec


def pub_arc(pth_src, pth_dst, fisico=False, owned=False):
    if pth_dst.is_symlink() and pth_dst.resolve() == pth_src.resolve() and not fisico:
        return
    if pth_dst.exists() and not pth_dst.is_symlink():
        if pth_dst.is_file() and pth_dst.stat().st_size == pth_src.stat().st_size and obt_sha(pth_dst) == obt_sha(pth_src):
            return
        if not owned:
            raise ValueError(f'Refusing to overwrite an unrelated payload: {pth_dst}')
    elif pth_dst.is_symlink() and not owned and pth_dst.resolve() != pth_src.resolve():
        raise ValueError(f'Refusing to replace an unrelated symlink: {pth_dst}')
    tmp = pth_dst.with_name('.fast-boot-link-' + pth_dst.name)
    tmp.unlink(missing_ok=True)
    try:
        if fisico:
            shutil.copy2(pth_src, tmp)
            os.chmod(tmp, 0o644)
        else:
            tmp.symlink_to(pth_src)
        os.replace(tmp, pth_dst)
    finally:
        tmp.unlink(missing_ok=True)


def ext_archive(pth_src, pth_dst):
    if pth_src.name.endswith('.zip'):
        with zipfile.ZipFile(pth_src) as arc:
            for ent in arc.infolist():
                if not (pth_dst / ent.filename).resolve().is_relative_to(pth_dst.resolve()):
                    raise ValueError('Archive contains an unsafe path')
            arc.extractall(pth_dst)
    elif pth_src.name.endswith('.tar.gz'):
        with tarfile.open(pth_src) as arc:
            # The data filter rejects escapes, device nodes and unsafe link targets.
            arc.extractall(pth_dst, filter='data')
    else:
        subprocess.run(['bsdtar', '-xf', str(pth_src), '-C', str(pth_dst)], check=True, capture_output=True)
    # Memtest distributions often wrap their actual native binaries in one ISO.
    for iso in list(pth_dst.rglob('*.iso')):
        des = iso.with_suffix('')
        des.mkdir(exist_ok=True)
        subprocess.run(['bsdtar', '-xf', str(iso), '-C', str(des)], check=True, capture_output=True)


def prep_rec(rec, cfg):
    if rec['size'] is None or rec['status'] == 'checksum-failed':
        return
    arc_cac = cfg.cache / rec['filename']
    arc_pub = cfg.output / rec['filename']
    pth_src = arc_cac
    if cfg.mode == 'ram' and not cfg.generate_only:
        cfg.ram_dir.mkdir(parents=True, exist_ok=True)
        typ = subprocess.run(['stat', '-f', '-c', '%T', str(cfg.ram_dir)], check=True, capture_output=True, text=True).stdout.strip()
        if typ != 'tmpfs':
            raise ValueError('--ram-dir must be on an existing tmpfs filesystem')
        pth_src = cfg.ram_dir / rec['filename']
        if not arc_valido(pth_src, rec['filename']) or obt_sha(pth_src) != rec['sha256']:
            if shutil.disk_usage(cfg.ram_dir).free < rec['size'] + 16 * 1024 * 1024:
                raise ValueError(f'Not enough tmpfs space for {rec["filename"]}')
            tmp = pth_src.with_name('.fast-boot-' + pth_src.name)
            shutil.copy2(arc_cac, tmp)
            os.chmod(tmp, 0o644)
            os.replace(tmp, pth_src)
    arc_pub_est = cfg.cache / 'file-state' / (rec['id'] + '.json')
    pub_ant = json.loads(arc_pub_est.read_text()) if arc_pub_est.exists() else {}
    owned = pub_ant.get('path') == str(arc_pub) and arc_pub.is_file() and (arc_pub.is_symlink() or pub_ant.get('sha256') == obt_sha(arc_pub))
    pub_arc(pth_src, arc_pub, fisico=cfg.mode == 'extract' and not cfg.generate_only, owned=owned)
    rec['published'] = True
    esc_atomic(arc_pub_est, json.dumps({'path': str(arc_pub), 'sha256': rec['sha256']}))
    if cfg.generate_only or not rec['filename'].endswith(('.iso', '.zip', '.tar.gz')):
        return
    pth_tree = cfg.output / rec['tree']
    arc_est = cfg.cache / 'tree-state' / (rec['id'] + '.json')
    est_ant = json.loads(arc_est.read_text()) if arc_est.exists() else {}
    est_nue = {'sha256': rec['sha256'], 'mode': cfg.mode, 'source': str(pth_src), 'tree': str(pth_tree)}
    is_mount = os.path.ismount(pth_tree)
    if est_ant == est_nue and pth_tree.is_dir() and (is_mount or cfg.mode == 'extract' or not rec['filename'].endswith('.iso')) and any(pth_tree.iterdir()):
        return
    if is_mount:
        if est_ant.get('tree') != str(pth_tree):
            raise ValueError(f'Refusing to unmount an unmanaged tree: {pth_tree}')
        subprocess.run(['umount', str(pth_tree)], check=True, capture_output=True)
    if pth_tree.exists():
        if pth_tree.is_symlink() or (any(pth_tree.iterdir()) and est_ant.get('tree') != str(pth_tree)):
            raise ValueError(f'Existing unmanaged tree: {pth_tree}; inspect it and use --generate-only if appropriate')
    if rec['filename'].endswith('.iso') and cfg.mode in ('mount', 'ram'):
        pth_tree.mkdir(exist_ok=True)
        subprocess.run(['mount', '-o', 'loop,ro,nosuid,nodev,noexec', str(pth_src), str(pth_tree)], check=True, capture_output=True)
    else:
        tmp = Path(tempfile.mkdtemp(prefix='.fast-boot-tree-', dir=cfg.output))
        try:
            ext_archive(pth_src, tmp)
            if not any(tmp.iterdir()):
                raise ValueError('Payload extraction produced an empty tree')
            if pth_tree.exists():
                shutil.rmtree(pth_tree)
            os.replace(tmp, pth_tree)
        finally:
            if tmp.exists():
                shutil.rmtree(tmp)
    esc_atomic(arc_est, json.dumps(est_nue))


def obt_live_url(cfg):
    if cfg.live_url:
        return cfg.live_url
    part = urlsplit(cfg.pxe_url)
    if part.scheme != 'http':
        return None
    try:
        ip = socket.gethostbyname(part.hostname)
    except OSError:
        return None
    host = ip + (':' + str(part.port) if part.port else '')
    return urlunsplit(('http', host, part.path, '', ''))


def obt_par(pth_tree, pares):
    if not pth_tree.is_dir():
        return None
    for pat_ker, pat_ini in pares:
        ker_all = sorted(pth_tree.glob(pat_ker))
        ini_all = sorted(pth_tree.glob(pat_ini))
        for ker in ker_all:
            for ini in ini_all:
                if ker.is_file() and ini.is_file() and ker.stat().st_size and ini.stat().st_size and ker.resolve().is_relative_to(pth_tree.resolve()) and ini.resolve().is_relative_to(pth_tree.resolve()):
                    return ker, ini
    return None


def gen_boot(rec, cfg, url_live=None):
    if not rec['published'] or rec['size'] is None or rec['status'] in ('checksum-failed', 'prepare-failed') or not (cfg.output / rec['filename']).is_file():
        return None
    pth_tree = cfg.output / rec['tree']
    url_arc = cfg.pxe_url + '/' + quote(rec['filename'])
    fam = rec['family']
    if rec['filename'].endswith(('.efi', '.kpxe', '.pxe', '.lkrn')):
        return {'commands': [f'chain --autofree {url_arc} || goto error'], 'firmware': 'efi' if rec['filename'].endswith('.efi') else 'pcbios'}
    if fam == 'memtest' and pth_tree.is_dir():
        for pat, cmd, firm in [('**/memtest.efi', 'chain', 'efi'), ('**/memtest.bin', 'kernel', 'pcbios')]:
            bin_all = sorted(pth_tree.glob(pat))
            if bin_all:
                url = cfg.pxe_url + '/' + quote(str(bin_all[0].relative_to(cfg.output)))
                return {'commands': [f'{cmd} {url} || goto error'] + (['boot || goto error'] if cmd == 'kernel' else []), 'firmware': firm}
        return None
    par = obt_par(pth_tree, [
        ('install.amd/vmlinuz*', 'install.amd/initrd.gz'), ('install.a64/vmlinuz*', 'install.a64/initrd.gz'),
        ('images/pxeboot/vmlinuz', 'images/pxeboot/initrd.img'), ('casper/vmlinuz*', 'casper/initrd*'),
        ('live/vmlinuz*', 'live/initrd*'), ('arch/boot/x86_64/vmlinuz-linux', 'arch/boot/x86_64/initramfs-linux.img')
    ])
    if not par:
        return None
    ker, ini = par
    args = None
    if (fam in ('debian', 'kali') and 'netinst' in rec['filename']) or (fam == 'kali' and 'installer' in rec['filename']):
        args = 'ip=dhcp --- quiet'
        if fam == 'kali':
            args = 'ip=dhcp mirror/country=manual mirror/http/hostname=http.kali.org mirror/http/directory=/kali --- quiet'
    elif fam in ('debian', 'clonezilla', 'gparted', 'kali') and (pth_tree / 'live/filesystem.squashfs').is_file() and url_live:
        args = 'boot=live components ip=dhcp fetch=' + url_live + '/' + quote(rec['tree']) + '/live/filesystem.squashfs'
    elif fam == 'ubuntu' or fam == 'bootrepair':
        if ker.parent.name == 'casper' and rec['filename'].endswith('.iso') and any(pth_tree.glob('casper/*.squashfs')):
            args = 'boot=casper ip=dhcp url=' + url_arc
    elif fam == 'fedora':
        if 'Live' in rec['filename'] and (pth_tree / 'LiveOS/squashfs.img').is_file():
            args = 'ip=dhcp rd.neednet=1 rd.live.image ro root=live:' + url_arc
        elif 'netinst' in rec['filename'] and (pth_tree / '.treeinfo').is_file():
            inf_tree = configparser.ConfigParser()
            try:
                inf_tree.read(pth_tree / '.treeinfo')
                img_stage = inf_tree.get('stage2', 'mainimage', fallback='')
            except configparser.Error:
                return None
            if not img_stage or not (pth_tree / img_stage).resolve().is_relative_to(pth_tree.resolve()) or not (pth_tree / img_stage).is_file():
                return None
            part = urlsplit(rec['url'])
            repo_pth = re.sub(r'/iso/[^/]+$', '/os/', part.path)
            if repo_pth != part.path:
                repo = urlunsplit((part.scheme, part.netloc, repo_pth, '', ''))
                args = 'ip=dhcp inst.stage2=' + cfg.pxe_url + '/' + quote(rec['tree']) + '/ inst.repo=' + repo
    elif fam == 'arch' and any((pth_tree / 'arch/x86_64' / nom).is_file() for nom in ['airootfs.sfs', 'airootfs.erofs']):
        args = 'initrd=initrd ip=dhcp archisobasedir=arch archiso_http_srv=' + cfg.pxe_url + '/' + quote(rec['tree']) + '/'
    if args is None:
        return None
    url_ker = cfg.pxe_url + '/' + quote(str(ker.relative_to(cfg.output)))
    url_ini = cfg.pxe_url + '/' + quote(str(ini.relative_to(cfg.output)))
    return {'commands': [f'kernel {url_ker} {args} || goto error', f'initrd --name initrd {url_ini} || goto error', 'boot || goto error'], 'firmware': None}


def gen_ipxe(rec_all, cfg):
    lin = ['#!ipxe', f'# Timestamp: {dt.date.today()} | Version: {VERSION}', f'# Author & Credits: {CREDITS}',
           '# iPXE commands: https://ipxe.org', '# Required local files checked; hardware boot tests are separate.',
           'isset ${ip} || dhcp || goto error', 'set cpu_arch ${buildarch}',
           'iseq ${buildarch} i386 && cpuid --ext 29 && set cpu_arch x86_64 ||', ':start',
           f'menu aux / {urlsplit(cfg.base_url).netloc}', 'item --gap -- Local payloads with supported boot recipes']
    for rec in rec_all:
        boot = rec.get('_boot')
        if not boot:
            continue
        gate = 'iseq ${cpu_arch} ' + rec['arch']
        if rec['arch'] == 'i386':
            gate = 'iseq ${buildarch} i386'
        if boot['firmware']:
            gate += ' && iseq ${platform} ' + boot['firmware']
            if boot['firmware'] == 'efi':
                gate += ' && iseq ${buildarch} ' + rec['arch']
        lin.append(f'{gate} && item {rec["id"]} {rec["name"]} [{rec["release"]}, {rec["arch"]}] ||')
    if not any(rec.get('_boot') for rec in rec_all):
        lin.append('item --gap -- No prepared local payloads. Run fast-boot.sh on the mirror first.')
    lin += ['item --gap --', 'item shell Open iPXE shell', 'item reboot Reboot', 'item exit Boot local disk',
            'choose target && goto ${target} || goto start']
    for rec in rec_all:
        boot = rec.get('_boot')
        if boot:
            lin += ['', ':' + rec['id'], 'imgfree'] + boot['commands']
    lin += ['', ':shell', 'shell', 'goto start', ':reboot', 'reboot', ':exit', 'exit', ':error',
            'echo Boot failed. Check the HTTP paths, payload files and client firmware.',
            'prompt Press any key to return...', 'goto start', '']
    return '\n'.join(lin)


def gen_sitemap(rec_all, cfg):
    ns = 'http://www.sitemaps.org/schemas/sitemap/0.9'
    ET.register_namespace('', ns)
    root = ET.Element('{' + ns + '}urlset')
    for loc in [cfg.base_url + '/'] + [cfg.base_url + '/' + quote(rec['filename']) for rec in rec_all if rec['published'] and rec['status'] != 'checksum-failed']:
        url = ET.SubElement(root, '{' + ns + '}url')
        ET.SubElement(url, '{' + ns + '}loc').text = loc
        ET.SubElement(url, '{' + ns + '}lastmod').text = dt.date.today().isoformat()
    ET.indent(root)
    return ET.tostring(root, encoding='utf-8', xml_declaration=True)


def obt_preferred_url(rec, cfg):
    """Use a published local file; otherwise keep the actual upstream URL."""
    if rec['published'] and rec['status'] != 'checksum-failed':
        return cfg.base_url + '/' + quote(rec['filename'], safe='')
    return rec['url']


def gen_rows(rec_all, cfg):
    """The first HTTP response contains every resource and download link."""
    symbols = {'debian': '◉', 'fedora': 'f', 'ubuntu': '◌', 'arch': 'A', 'gentoo': 'g',
               'kali': 'K', 'proxmox': '×', 'clonezilla': 'C', 'gparted': '▥',
               'memtest': '▤', 'netboot': '↗', 'dban': 'D', 'supergrub': 'S', 'bootrepair': '↻'}
    rows = []
    for rec in rec_all:
        val = {key: html.escape(str(value), quote=True) for key, value in rec.items()}
        detail = 'files/' + val['id'] + '.html'
        url = html.escape(obt_preferred_url(rec, cfg), quote=True)
        arch = 'ARM64' if rec['arch'] == 'arm64' else val['arch']
        rows.append(f'''<tr>
<td><div class="resource-cell"><span class="distro-icon {val['family']}" aria-hidden="true">{symbols.get(rec['family'], '↗')}</span><div><a class="resource-name" href="{detail}">{val['name']}</a><span class="resource-filename" title="{val['filename']}">{val['filename']}</span></div></div></td>
<td><span class="release">{val['release']}</span></td><td><span class="arch-badge">{arch}</span></td><td><span class="format-badge">{val['format']}</span></td>
<td><div class="row-actions"><a class="download-link" href="{url}" aria-label="Download {val['filename']}">Download <span aria-hidden="true">↓</span></a><a class="details-button" href="{detail}" aria-label="Details for {val['name']}">⋯</a></div></td>
</tr>''')
    return '\n'.join(rows)


def gen_plain_page(title, body):
    """Small ordinary HTML documents for Links/Lynx: no assets or scripts."""
    return f'''<!doctype html>
<!-- Timestamp: {dt.date.today()} | Version: {VERSION} | Author & Credits: {CREDITS} -->
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>{html.escape(title)} | aux.</title></head>
<body>
{body}
<hr><p>aux. / <a href="{CREDITS}">Author &amp; Credits: 1wise</a></p>
</body></html>
'''


def gen_cli_page(rec_all, cfg):
    isos = [rec for rec in rec_all if rec['format'] == 'ISO']
    other = [rec for rec in rec_all if rec['format'] != 'ISO']
    body = [f'''<h1>aux. / Text &amp; SSH</h1>
<p><a href="index.html#catalog">Visual catalog</a> | <a href="#isos">ISOs ({len(isos)})</a> | <a href="#other">Other files ({len(other)})</a> | <a href="#network">iPXE</a></p>
<p>Choose a filename to download. Open "commands" for resumable wget/curl commands, size and SHA-256. Local files are preferred once published; other links use the configured upstream.</p>
<h2><a id="isos" name="isos"></a>ISO downloads</h2>
<p><a href="#x86_64">x86_64</a> | <a href="#arm64">ARM64</a> | <a href="#i386">32-bit x86</a> | <a href="downloads/isos.tsv">ISO list (TSV)</a></p>''']
    def entries(records):
        lines = ['<ul>']
        for rec in records:
            url = html.escape(obt_preferred_url(rec, cfg), quote=True)
            source = 'local' if rec['published'] and rec['status'] != 'checksum-failed' else 'upstream'
            lines.append(f'<li><a href="{url}">{html.escape(rec["filename"])}</a> '
                         f'[{html.escape(rec["arch"])}; {source}] '
                         f'<a href="files/{rec["id"]}.html">commands</a></li>')
        return '\n'.join(lines + ['</ul>']) if records else '<p>No files in this group.</p>'
    for arch, label in [('x86_64', 'x86_64'), ('arm64', 'ARM64'), ('i386', '32-bit x86')]:
        body += [f'<h3><a id="{arch}" name="{arch}"></a>{label}</h3>', entries([rec for rec in isos if rec['arch'] == arch])]
    body += ['<h2><a id="other" name="other"></a>Other boot and archive files</h2>', entries(other),
             '<h2><a id="network" name="network"></a>Network boot</h2>',
             '<p>At the iPXE prompt, after preparing the mirror:</p><pre>' + html.escape('dhcp\nchain ' + cfg.pxe_url + '/menu.ipxe') + '</pre>',
             '<h2>Project files</h2><p><a href="downloads/fast-boot.sh">fast-boot.sh</a> | <a href="downloads/DEPLOYMENT.md">Deployment notes</a> | <a href="downloads/urls.txt">Upstream URLs</a> | <a href="downloads/menu.ipxe">menu.ipxe</a></p>',
             '<p>Remote availability has not been checked. Resume depends on the download server. Verify images using the distribution\'s published checksums/signatures.</p>']
    return gen_plain_page('Text & SSH downloads', '\n'.join(body))


def gen_resource_page(rec, cfg):
    url = obt_preferred_url(rec, cfg)
    name = rec['filename']
    cmd_wget = 'wget -c -O ' + shlex.quote(name) + ' -- ' + shlex.quote(url)
    cmd_curl = 'curl -fL -C - -o ' + shlex.quote(name) + ' -- ' + shlex.quote(url)
    local = rec['published'] and rec['status'] != 'checksum-failed'
    size = str(rec['size']) + ' bytes' if rec['size'] is not None else 'Recorded after sync'
    body = f'''<p><a href="../cli.html">All downloads (text)</a> | <a href="../index.html#catalog">Visual catalog</a></p>
<h1>{html.escape(name)}</h1>
<p>{html.escape(rec['name'])} / {html.escape(rec['arch'])} / {html.escape(rec['format'])}</p>
<p><a href="{html.escape(url, quote=True)}">Download {html.escape(name)}</a></p>
<p>Origin: {'published local file' if local else 'configured upstream; availability unverified'}. Size: {html.escape(size)}.</p>
<h2>Download over SSH</h2>
<p>Run either command in the destination directory. Rerun the same command to resume if the server supports HTTP Range requests. Both commands keep the full filename, including for SourceForge redirects.</p>
<h3>wget</h3><pre>{html.escape(cmd_wget)}</pre>
<h3>curl</h3><pre>{html.escape(cmd_curl)}</pre>
<h2>SHA-256</h2>'''
    if local and rec['sha256']:
        cmd_hash = "printf '%s\\n' " + shlex.quote(rec['sha256'] + '  ' + name) + ' | sha256sum -c -'
        body += '<pre>' + html.escape(cmd_hash) + '</pre><p>This hash checks against the local mirror copy. Authenticate the image separately with the distribution\'s signed checksums.</p>'
    else:
        body += '<p>No local checksum recorded. Obtain the checksum/signature from the distribution.</p>'
    body += '<p>Resume only the same file/version. After a server-side replacement, download a fresh copy and verify it.</p>'
    body += '<p><a href="' + html.escape(rec['url'], quote=True) + '">Configured upstream</a></p>'
    return gen_plain_page(name, body)


def gen_pages(rec_all, cfg, state='synced'):
    datos = {'version': VERSION, 'state': state, 'base_url': cfg.base_url, 'pxe_url': cfg.pxe_url,
             'generated_at': dt.datetime.now(dt.timezone.utc).isoformat(),
             'resources': [{k: v for k, v in rec.items() if not k.startswith('_')} for rec in rec_all]}
    dat_json = json.dumps(datos, ensure_ascii=True, indent=2).replace('<', '\\u003c')
    pag = TEMPLATES['index.html'].replace('@@CANONICAL@@', html.escape(cfg.base_url + '/', quote=True))
    for token, value in {
        '@@ROWS@@': gen_rows(rec_all, cfg), '@@COUNT@@': str(len(rec_all)),
        '@@LABEL@@': 'LOCAL CATALOG' if state == 'synced' else 'SOURCE CATALOG',
        '@@PXE_URL@@': html.escape(cfg.pxe_url, quote=True),
        '@@BASE_URL@@': html.escape(cfg.base_url, quote=True),
    }.items():
        pag = pag.replace(token, value)
    pag_html = pag.replace('@@CATALOG@@', dat_json)
    php_str = lambda val: "'" + val.replace('\\', '\\\\').replace("'", "\\'") + "'"
    cab_php = f'''<?php
/**
 * Timestamp: {dt.date.today()} | Version: {VERSION}
 * Author & Credits: {CREDITS}
 * Read the generated catalog from a fixed local path, without request-controlled redirects.
 */
$arc_cat = __DIR__ . '/catalog.json';
$dat_cat = is_file($arc_cat) ? json_decode(file_get_contents($arc_cat), true) : array('resources' => array());
if (!is_array($dat_cat)) {{ $dat_cat = array('resources' => array()); }}
$dat_cat += array('base_url' => {php_str(cfg.base_url)}, 'pxe_url' => {php_str(cfg.pxe_url)});
?>
'''
    pag_php = cab_php + pag.replace('@@CATALOG@@', '<?php echo json_encode($dat_cat, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT); ?>')
    artifacts = {'index.html': pag_html, 'index.php': pag_php, 'catalog.json': dat_json,
                 'cli.html': gen_cli_page(rec_all, cfg),
                 'menu.ipxe': gen_ipxe(rec_all, cfg), 'sitemaps.xml': gen_sitemap(rec_all, cfg),
                 'robots.txt': 'User-agent: *\nAllow: /\nSitemap: ' + cfg.base_url + '/sitemaps.xml\n',
                 'assets/portal.css': TEMPLATES['portal.css'], 'assets/portal.js': TEMPLATES['portal.js'],
                 'downloads/urls.txt': '\n'.join(rec['url'] for rec in rec_all) + '\n',
                 'downloads/DEPLOYMENT.md': TEMPLATES['DEPLOYMENT.md']}
    artifacts['downloads/isos.tsv'] = 'filename\tarchitecture\turl\tsha256\n' + ''.join(
        '\t'.join([rec['filename'], rec['arch'], obt_preferred_url(rec, cfg),
                   (rec['sha256'] or '') if rec['published'] and rec['status'] != 'checksum-failed' else '']) + '\n'
        for rec in rec_all if rec['format'] == 'ISO')
    for rec in rec_all:
        artifacts['files/' + rec['id'] + '.html'] = gen_resource_page(rec, cfg)
    artifacts['downloads/index.php.txt'] = pag_php
    artifacts['downloads/menu.ipxe'] = artifacts['menu.ipxe']
    artifacts['downloads/sitemaps.xml'] = artifacts['sitemaps.xml']
    for nom, val in BINARY_ASSETS.items():
        artifacts['assets/' + nom] = base64.b64decode(val)
    pth_self = Path(os.environ.get('AUX_FAST_BOOT_SELF', ''))
    if pth_self.is_file():
        artifacts['downloads/fast-boot.sh'] = pth_self.read_bytes()
    # Previous generated files are recoverable, and unrelated directory contents are preserved.
    pth_bak = cfg.cache / 'backups' / dt.datetime.now(dt.timezone.utc).strftime('%Y%m%dT%H%M%S')
    for nom, val in artifacts.items():
        pth = cfg.output / nom
        byt = val if isinstance(val, bytes) else val.encode()
        if pth.is_file() and pth.read_bytes() != byt:
            des = pth_bak / nom
            des.parent.mkdir(parents=True, exist_ok=True)
            shutil.copy2(pth, des)
        esc_atomic(pth, byt)
    esc_atomic(cfg.output / 'SHA256SUMS', ''.join(f'{rec["sha256"]}  {rec["filename"]}\n' for rec in rec_all if rec['published'] and rec['sha256'] and rec['status'] != 'checksum-failed'))
    pth_zip = cfg.output / 'downloads/aux-fast-boot.zip'
    tmp = pth_zip.with_suffix('.zip.tmp')
    with zipfile.ZipFile(tmp, 'w', compression=zipfile.ZIP_DEFLATED) as arc:
        for nom in artifacts:
            arc.write(cfg.output / nom, nom)
        arc.write(cfg.output / 'SHA256SUMS', 'SHA256SUMS')
        if pth_self.is_file():
            arc.write(pth_self, 'fast-boot.sh')
        arc.writestr('urls.txt', artifacts['downloads/urls.txt'])
        arc.writestr('DEPLOYMENT.md', TEMPLATES['DEPLOYMENT.md'])
    os.replace(tmp, pth_zip)
    return datos


def main():
    cfg = obt_args()
    txt = Path(cfg.url_file).read_text() if cfg.url_file else DEFAULT_URLS
    rec_all = obt_catalog(txt, cfg.only)
    if cfg.dry_run:
        print(f'fast-boot.sh {VERSION} | mode={cfg.mode} | resources={len(rec_all)}')
        print(f'Webroot: {cfg.output}\nCache: {cfg.cache}\nBoot URL: {cfg.pxe_url}')
        for rec in rec_all:
            print(f'{rec["arch"]:7} {rec["filename"]}\n         {rec["url"]}')
        return 0
    if not cfg.generate_only:
        req_tar = any(rec['filename'].endswith(('.zip', '.tar.gz')) or (cfg.mode == 'extract' and rec['filename'].endswith('.iso')) for rec in rec_all)
        for cmd in ['curl'] + (['mount', 'umount', 'stat'] if cfg.mode != 'extract' else []) + (['bsdtar'] if req_tar else []):
            if not shutil.which(cmd):
                raise ValueError(f'Missing dependency: {cmd}; see DEPLOYMENT.md')
        if cfg.mode in ('mount', 'ram') and os.geteuid() != 0:
            raise ValueError('ISO mounting requires root; use sudo or --mode extract')
    sumas = {}
    if cfg.checksums:
        for lin in Path(cfg.checksums).read_text().splitlines():
            par = re.fullmatch(r'([a-fA-F0-9]{64})\s+\*?(.+)', lin)
            if par:
                sumas[par.group(2)] = par.group(1).lower()
            elif lin.strip() and not lin.lstrip().startswith('#'):
                raise ValueError('Malformed trusted SHA256SUMS record')
        if not any(rec['filename'] in sumas for rec in rec_all):
            raise ValueError('No selected payload matches the trusted checksum list')
    cfg.output.mkdir(parents=True, exist_ok=True)
    cfg.cache.mkdir(parents=True, exist_ok=True)
    with (cfg.cache / '.fast-boot.lock').open('a') as arc_lock:
        try:
            fcntl.flock(arc_lock, fcntl.LOCK_EX | fcntl.LOCK_NB)
        except BlockingIOError:
            raise ValueError('Another fast-boot run is using this cache')
        msg_descarga(cfg, None, 'PLAN', f'{len(rec_all)} resources | {cfg.jobs} parallel downloads | mode={cfg.mode}')
        msg_descarga(cfg, None, 'CACHE', str(cfg.cache))
        with concurrent.futures.ThreadPoolExecutor(max_workers=cfg.jobs) as pool:
            rec_all = list(pool.map(lambda rec: sin_descarga(rec, cfg, sumas), rec_all))
        url_live = None
        if any(rec['size'] is not None and rec['family'] in ('debian', 'clonezilla', 'gparted', 'kali') for rec in rec_all):
            url_live = obt_live_url(cfg)
        for rec in rec_all:
            try:
                msg_descarga(cfg, rec, 'PREPARE', 'Checking existing payloads' if cfg.generate_only else f'Publishing payload; mode={cfg.mode}')
                prep_rec(rec, cfg)
            except (ValueError, OSError, subprocess.CalledProcessError, tarfile.TarError, zipfile.BadZipFile) as exc:
                rec['status'] = 'prepare-failed'
                rec['error'] = str(exc)
            rec['_boot'] = gen_boot(rec, cfg, url_live)
            rec['pxe_ready'] = bool(rec['_boot'])
            if not cfg.quiet:
                print(f'[{rec["status"]}] {rec["filename"]}' + (' | PXE files found' if rec['pxe_ready'] else ''), flush=True)
            if rec.get('error'):
                print('  ' + rec['error'], file=sys.stderr)
        state = 'synced' if any(rec['published'] for rec in rec_all) else 'source'
        msg_descarga(cfg, None, 'GENERATE', 'Writing the portal, text catalog, iPXE menu and sitemap')
        gen_pages(rec_all, cfg, state)
    fails = [rec for rec in rec_all if rec['status'] in ('failed', 'prepare-failed', 'checksum-failed') or rec.get('error')]
    print(f'Generated index.php, menu.ipxe and sitemaps.xml in {cfg.output}')
    print(f'{sum(rec["pxe_ready"] for rec in rec_all)} PXE file sets; {len(fails)} resources need attention.')
    return 1 if fails else 0


if __name__ == '__main__':
    try:
        sys.exit(main())
    except (ValueError, OSError, subprocess.CalledProcessError) as exc:
        print(f'fast-boot: {exc}', file=sys.stderr)
        sys.exit(1)

PY_AUX_FAST_BOOT_ENGINE

