Skip to content

Releases

HyperDL v1.3.56

Choose a tag to compare

@itswill00 itswill00 released this 04 Nov 08:13

HyperDL v1.3.56

b13560 · full-zip release · changes since v1.3.55

Hardens vault isolation, download cleanup, and root control files while making URL handling and bundled-tool trust safer across the module.


Highlights

Area What changed
Vault privacy Missing or unreadable domain lists now fail private, and vault routing stays intact through resolver fallbacks
Download integrity Audio extraction, remuxing, and slideshow builds use temporary outputs so a failed attempt cannot destroy a good file
Safer inputs Download, probe, and media fetches accept HTTP(S) only, with format and extension checks
Trusted tools yt-dlp is pinned, checksum-verified, and never borrowed from PATH; TLS verification stays enabled
Native controls Status parsing, PID identity checks, atomic writes, and file permissions are hardened
WebUI URL and host handling is exact, storage errors no longer break the app, and long actions get realistic timeouts
Release safety RUNPATH, build freshness, deploy PID, packaging completeness, and tag checks now fail loudly

Vault and URL privacy

  • Kept private media private when the domain list breaks. If the vault flag is enabled but vault_domains.conf is missing or unreadable, every host is treated as vault content instead of falling back to the public folder.
  • Removed nested vault paths. Vault routing now resolves $OUTDIR/.vault/Stream once, so a second pass cannot create .vault/Stream/.vault/Stream.
  • Preserved vault decisions through CDN fallbacks. Resolver fallbacks that return a different media host still inherit the original page's vault destination, so a signed CDN link cannot move private media into the public library.
  • Matched hosts exactly. Downloader routing, DoH interception, the clipboard daemon, and WebUI URL detection now use exact or subdomain matches, so notyoutube.com and other lookalikes no longer trigger YouTube handling.
  • Kept public scans out of the vault. yt-dlp fallback scans skip hidden directories, and a public request cannot adopt a file that happens to sit inside .vault.

Downloads that clean up after themselves

  • Fixed the resolver fallback crash. Fallbacks now forward is_yt correctly instead of raising TypeError: download_with_ytdlp_direct() got an unexpected keyword argument 'is_yt'.
  • Extracted audio from the real source. Direct audio downloads return the actual file, fallback audio uses the correct source, and FFmpeg now receives -vn so a video stream cannot break MP3 or M4A conversion.
  • Protected older files during remux and conversion. Muxing, audio encoding, HLS remuxing, and slideshow creation write to hidden temporary files first, then replace the final path only after success.
  • Stopped sidecars from masquerading as media. Destination results and fallback scans are filtered by media extension, so subtitles, thumbnails, and .part files cannot replace the requested video or audio.
  • Cleaned failed output. Empty mux results, slideshow partials, temporary media sidecars, stale partials, and abandoned downloads are removed instead of being left for the next attempt to reuse.
  • Rejected unsupported schemes. Downloader, probe, and media-fetch entry points now accept HTTP(S) only, and the native bridge validates URL and format arguments before starting work.

Trusted tools and native controls

  • Verified yt-dlp before use. The downloader checks the pinned version and SHA-256 digest, writes the digest atomically, and never falls back to an arbitrary yt-dlp found on PATH.
  • Kept certificate checks on. TLS verification remains enabled when cacert.pem is present, and FFmpeg receives the same certificate environment used by the downloader.
  • Parsed status without depending on whitespace. The native bridge now recognizes spaced JSON such as "status": "downloading", and a dead PID with an active status becomes paused instead of spinning forever.
  • Rechecked identity before killing. Pause, cancel, and deploy cleanup validate the numeric PID and the HyperDL process marker before sending signals, and probes are stopped as a process group.
  • Hardened control files. PID, status, probe, and clipboard files use atomic writes and owner-only modes for private data, the last-clip cache resists pre-created symlinks, and logs are fixed at 0640.
  • Made clipboard handling deliberate. The daemon drains the clipboard helper, requires an explicit HTTP(S) URL, applies a timeout, and keeps its last-clip cache 0600.

Interface and release tooling

  • Guarded WebView storage failures. Unavailable localStorage no longer stops the app from mounting, and audio-format changes still reach the bridge when storage writes fail.
  • Fixed URL extraction edge cases. Uppercase schemes, subdomains, instagr.am, and false YouTube lookalikes are covered by regression tests.
  • Extended long-action timeouts. Update checks, yt-dlp updates, cleanup, and probes now get enough time to return a real result instead of timing out silently.
  • Made build and deploy fail safely. The build requires patchelf and readelf, strips Termux RUNPATH from the bridge, verifies generated payload freshness, validates deploy PIDs, and deletes incomplete release archives.
  • Added regression coverage. Python tests cover vault fail-private behavior, URL validation, yt-dlp verification, and download cleanup; WebUI tests cover host matching and shell escaping.

Install

Method Steps
Flash the zip Download HyperDL-v1.3.56.zip below, then install it from KernelSU, APatch, or Magisk › Install from storage
Live deploy ./build.sh --deploy updates the module on a connected device without a reboot

Requires Android 10+ on ARM64 with root. Cookies stay optional for public media.


Full changelog: README.md

Update from your root manager or flash HyperDL-v1.3.56.zip.

HyperDL v1.3.55

Choose a tag to compare

@itswill00 itswill00 released this 24 Oct 15:39

HyperDL v1.3.55

b13550 · full-zip release · changes since v1.3.54

Stops the module from resolving media libraries through the Termux toolchain, trims the bundled Python runtime, and makes the build and release helpers refuse to ship a broken or accidental result.


Highlights

Area What changed
Library resolution The native bridge no longer carries a Termux RUNPATH or accepts a Termux libavformat as proof that FFmpeg works
Bundled runtime venv, distutils, and lib2to3 are gone from python314.zip; asyncio stays because yt-dlp needs it
Version helper Unknown arguments now abort instead of silently bumping the version
Release metadata update.json reuses the release notes intro verbatim again, and tests pin the contract
Build safety The build fails loudly if the bridge still points back at the builder

Honest media-tool detection

  • Dropped the Termux library check. runtime_libs_present() treated a libavformat.so under /data/data/com.termux as proof that FFmpeg works, because that path was left over from development. The wrapper pins LD_LIBRARY_PATH to /system/lib64:/system/lib:<module>/lib, so a Termux copy could never load and the check reported a broken install as healthy.
  • Kept the check local to the module. Only <module>/lib/libavformat.so counts now, because that is the one location the wrapper actually searches.

No more toolchain paths in the bridge

  • Stripped the Termux RUNPATH. The Termux clang driver prepends its own toolchain path on every link, so bin/libhyperdl.so shipped with /data/data/com.termux/files/usr/bin/../../usr/lib in its dynamic section. On a device that has Termux installed, the loader could resolve libc.so from there, which defeats the standalone guarantee.
  • Failed the build instead of shipping it. build.sh removes the RUNPATH after linking and aborts if any DT_RPATH/DT_RUNPATH still names that path, because a silent regression here is invisible until it breaks someone's install.
  • Confirmed the bridge only needs Android. The shipped bridge declares just libc.so and libdl.so in NEEDED, so it runs before anything is staged.

Leaner bundled Python

  • Pruned unreachable modules. venv, distutils, and lib2to3 slipped past the stdlib skip list and added weight to python314.zip for code nothing on device can reach.
  • Kept asyncio on purpose. yt-dlp's downloader/websocket.pyc imports it, so pruning it would have broken websocket downloads silently.

Build and release tooling that refuses accidents

  • Validated every argument first. bump_version.py writes to all six versioned files as soon as parsing succeeds, and its loop silently ignored anything unrecognised. Running it with --help therefore bumped the version instead of printing usage. Unknown flags, stray words, repeated bump types, and --notes without a value now exit 2 without touching a file, and --help exits 0.
  • Restored the notes contract. update.json:notes must be the release notes intro verbatim, because the root manager prompt and the release page should never describe the same build differently. v1.3.54 shipped a paraphrase; this release carries the v1.3.55 intro unchanged.
  • Pinned all of it with tests. Three new suites cover the version helper, the release metadata standard, and the standalone isolation rules, so a fresh clone catches these regressions without a device.

Install

Method Steps
Flash the zip Download HyperDL-v1.3.55.zip below, then install it from KernelSU, APatch, or Magisk › Install from storage
Live deploy ./build.sh --deploy updates the module on a connected device without a reboot

Requires Android 10+ on ARM64 with root. Cookies stay optional for public media.


Full changelog: README.md

Update from your root manager or flash HyperDL-v1.3.55.zip.

HyperDL v1.3.54

Choose a tag to compare

@itswill00 itswill00 released this 22 Oct 23:10

HyperDL v1.3.54

b13540 · full-zip release · changes since v1.3.53

Rebuilds the scraper recovery paths that dead endpoints had broken, pins the yt-dlp release with checksum verification, and fixes six WebUI bugs — the worst of which made open-file taps silently do nothing and delete actions report success on failure.


Highlights

Area What changed
Scrapers Dead endpoints replaced and recovery paths repaired so Facebook, X, and Instagram resolve again
yt-dlp Extractor pinned to a verified release, checked on every build
WebUI open Tapping a file now actually opens it — the button silently ran status before
WebUI honesty Delete, cookie saves, and cleanup no longer announce success when the bridge failed

Repaired scraper recovery paths

  • Replaced dead endpoints. Bilibili resolves through yt-dlp again after its direct API kept returning HTTP 412, because a fallback that always fails is worse than none.
  • Kept the requested format. HLS remuxes that fall back to yt-dlp no longer discard the format the user picked, because a 1080p request silently delivering 360p is a bug, not a fallback.
  • Covered the regressions. The recovery paths now have tests, so the next endpoint rot gets caught before release instead of after.

Pinned yt-dlp with checksum verification

  • Pinned the extractor release. ytdlp.pin locks the version to 2026.10.21 and the build verifies its checksum, because an unpinned fetch could pull an untested extractor overnight.
  • Re-resolved on every run. The build gates on drift between the pin and what is installed, so a stale runtime is caught at build time instead of at download time.
  • Kept startup fast. The pinned payload ships as optimized .pyc, benchmarked to load faster than the plain source.

WebUI: open actions actually open

  • Fixed the dispatch bug. open and open_folder were rewritten to status inside the bridge command builder, so every tap returned download status instead of opening the file. The feature had never worked.
  • Quoted the action too. Paths were escaped but actions were interpolated raw, because the original builder only protected one of the two.
  • Distinguished real failures. A missing binary, a path outside the download folder, and an empty response each get their own message instead of silence.

WebUI: honest success and failure

  • Delete reports the truth. A rejected path returns success:false, and a partial delete (two of three removed) now says exactly that instead of claiming all three, because the bridge answers {"success":true,"deleted":2} for partial work.
  • Cookie saves validate. decode_failed and open_failed get distinct messages, and an empty response is treated as a failure rather than a save, because cookies are a live login session.
  • Cleanup and toggles verify. Junk cleanup, notification mode, and vault-domain saves check the payload before claiming success.
  • The status poller cannot leak. A bridge that stops answering stops the poll after roughly ten seconds and tells the user, instead of leaving a 400 ms timer running forever.

Install

Method Steps
Flash the zip Download HyperDL-v1.3.54.zip below, then install it from KernelSU, APatch, or Magisk › Install from storage
Live deploy ./build.sh --deploy updates the module on a connected device without a reboot

Requires Android 10+ on ARM64 with root. Cookies stay optional for public media.


Full changelog: README.md

Update from your root manager or flash HyperDL-v1.3.54.zip.

HyperDL v1.3.53

Choose a tag to compare

@itswill00 itswill00 released this 09 Oct 06:00

HyperDL v1.3.53

b13530 · full-zip release · changes since v1.3.52

TikTok photo posts with background audio now save as a single slideshow video when video format is picked, with tougher Facebook and X extractors behind it.


Highlights

Area What changed
TikTok slideshow Photo posts with audio now mux into one MP4 on video requests instead of dropping the track
Facebook More stream patterns plus og:video fallback catch links the old regexes missed
X / Twitter Extra guest mirror keeps video resolution working when one endpoint is rate-limited

TikTok photo posts finally honor the video format

  • Muxed photo-plus-audio into one MP4. Video requests on carousels now build a slideshow with ffmpeg instead of returning bare JPGs, because users asked for a video and got photos.
  • Kept Photos and Audio honest. album still returns per-slide images and audio still returns the background track, because each format should do exactly what its label promises.
  • Fell back safely. A failed mux drops to the photo album plus the mirror resolver instead of crashing, because an on-device ffmpeg is not guaranteed on every setup.

Tougher Facebook extraction

  • Matched more stream shapes. Added hd_src/sd_src patterns next to the existing progressive and native URLs, because Facebook serves different markup per surface.
  • Used og:video before giving up. Video requests now try the embed tag before the generic fallback, because a direct file beats another resolver round-trip.

Steadier X resolution

  • Added the vxtwitter mirror. Guest resolution now fans out to three endpoints, because a single mirror gets throttled and kills downloads.

Install

Method Steps
Flash the zip Download HyperDL-v1.3.53.zip below, then install it from KernelSU, APatch, or Magisk › Install from storage
Live deploy ./build.sh --deploy updates the module on a connected device without a reboot

Requires Android 10+ on ARM64 with root. Cookies stay optional for public media.


Full changelog: README.md

Update from your root manager or flash HyperDL-v1.3.53.zip.

HyperDL v1.3.52

Choose a tag to compare

@itswill00 itswill00 released this 01 Oct 04:40

HyperDL v1.3.52

b13520 · full-zip release · changes since v1.3.51

Bundles the full FFmpeg shared-library closure so audio downloads work on phones without Termux, detects broken media tools honestly, and fails fast with clear errors instead of cryptic logs.


Highlights

Area What changed
Audio fix FFmpeg and its library closure ship inside the module, so extraction works on clean devices
Detection Health check probes the real binaries instead of trusting the executable bit
Errors Audio fails fast with an actionable message when the toolchain is broken
Packaging Broken media runtimes are rejected at build time, never shipped

Fixed audio on Termux-free phones

  • Bundled the full media closure. ffmpeg and ffprobe now ship with every shared library they need, because the old build only worked where Termux happened to be installed.
  • Patched all runpaths. Every binary and library points at relative locations, so nothing references Termux paths at runtime.
  • System libraries load first. Platform libraries always resolve to the system copy, because bundled copies shadowed them and broke linking on stock devices.

Honest media-tool detection

  • Probe runs the real binary. Detection executes -version instead of checking the executable bit, because a present-but-broken binary lied to the health screen.
  • Audio fails fast. Extraction checks for working ffmpeg/ffprobe before starting yt-dlp, because a mid-run failure only produced cryptic logs.
  • Clearer messages. Toolchain failures now name the cause and the remedy (reboot, then try again) instead of dumping raw yt-dlp stderr.

Strict packaging gate

  • Broken builds are rejected. Packaging requires the media binaries plus their libav closure, because an incomplete runtime previously passed verification and shipped.
  • Covered by tests. Detection, error mapping, environment ordering, and audio fail-fast all have unit tests, so regressions break the build instead of users.

Install

Method Steps
Flash the zip Download HyperDL-v1.3.52.zip below, then install it from KernelSU, APatch, or Magisk › Install from storage
Live deploy ./build.sh --deploy updates the module on a connected device without a reboot

Requires Android 10+ on ARM64 with root. Cookies stay optional for public media.


Full changelog: README.md

Update from your root manager or flash HyperDL-v1.3.52.zip.

HyperDL v1.3.51

Choose a tag to compare

@itswill00 itswill00 released this 30 Sep 05:24

HyperDL v1.3.51

b13510 · full-zip release · changes since v1.3.48

Locks down every root shell path, makes resolving visibly faster with live step feedback and background prefetching, overhauls the console log and motion design, and clears a second full audit with zero findings left open.


Highlights

Area What changed
Security Shell-free media scan, open, delete, query, and clipboard paths
Reliability Stale resume files restart clean, Instagram extractor bounded, atomic status writes
Speed Leaner cold start, fairer probe scheduling, YouTube probes prefetched on paste
Console Color-coded rows with level filters and a follow toggle
Motion Every reveal animated, sheets and dialogs animate closed too
Layout Slimmer header, history rows, clipboard banner, smarter buttons

Security hardening

  • No shell left in the bridge. Media scan, file open, removal cleanup, media query, and clipboard reads now use direct process spawning, so remote video titles can never break into a root shell.
  • No shell left in the extractor. Media scanning spawns its helpers argument by argument instead of through a command string.
  • Crash-safe status files. Every status write goes through a temporary file plus rename, including the daemon, so a kill mid-write never leaves truncated JSON.
  • Escaped output. File names and pasted links are escaped before entering JSON, and media queries escape quotes, backslashes, dollars, and backticks.
  • Null-safe parsing. Social platform responses now survive explicit null fields instead of crashing on them.
  • Exact vault matching. Required domains match whole lines only, so lookalike entries can no longer suppress them.
  • Stricter plumbing. Daemon liveness uses the same process check everywhere, and utility downloads fail loudly instead of saving error pages as binaries.

Faster resolving

  • Live step feedback. TikTok, Instagram, Facebook, and X now report each resolving stage, so the task card keeps moving instead of freezing on one line.
  • Bounded Instagram extractor. A hung interpreter falls back after 25 seconds instead of stalling without word.
  • Leaner cold start. Rare-path imports load on demand, cutting roughly 200ms off every fresh process start.
  • Fairer probe scheduling. Probes run at the same priority as downloads instead of the lowest one.
  • YouTube prefetch. Pasting a link quietly starts probing in the background, so the resolution sheet often opens with results ready.

Console and layout

  • Readable activity log. Color-coded rows for errors, warnings, success, and info, level filter chips, JSON shortened to human lines, and an optional follow toggle.
  • Slimmer chrome. The sticky header, history rows, action buttons, and clipboard banner all lost padding without losing touch targets.
  • Smarter buttons. Download stays hidden until a link exists, saving cookies stays disabled until text exists, and update buttons keep a fixed width with fading labels.
  • Correct language label. The subtitle chip reads Indonesian, and old notes were fixed to match.

Motion everywhere

  • Smooth reveals. Buttons rise in, lists cascade, empty states fade, and notices slide down — nothing pops like a jumpscare.
  • Animated dismissal. Sheets, dialogs, and previews slide and fade closed instead of vanishing.
  • Calmer motion. Checkbox and health rows animate only color and border, and one-shot animations no longer hold compositor layers.

Install

Method Steps
Flash the zip Download HyperDL-v1.3.51.zip below, then install it from KernelSU, APatch, or Magisk › Install from storage
Live deploy ./build.sh --deploy updates the module on a connected device without a reboot

Requires Android 10+ on ARM64 with root. Cookies stay optional for public media.


Full changelog: README.md

Update from your root manager or flash HyperDL-v1.3.51.zip.

HyperDL v1.3.48

Choose a tag to compare

@itswill00 itswill00 released this 29 Sep 16:06

HyperDL v1.3.48

b13480 · full-zip release · changes since v1.3.47

Download several links in a row without babysitting the app, retry failures where they happened, grab whole playlists and subtitles, check for HyperDL updates without leaving the app, and manage the vault list safely.


Highlights

Area What changed
Queue Line up links and let them download one by one
Recovery Failed downloads keep a retry button where they failed
Media Playlist ranges, subtitle tracks, and cover art in the picker
Control In-app update check, notification modes, vault list editor

Queue and recovery

  • Download queue. The download card has a Queue button next to Download. Queued links wait their turn and start on their own, so pasting five links no longer means watching the first four finish.
  • Failed ledger. A failed download now stays visible with its error message, a Retry button that reuses the same format, and Dismiss. Failures survive restarts, so nothing silently disappears.
  • Queue and ledger both live on the device only and never leave it.

Media options

  • Playlists. Flip the Playlist switch on a series link and optionally set a from/to range. Each item lands as its own file, named and numbered by the platform order.
  • Subtitles. Video downloads offer None, Indonesia, English, or both. Tracks save alongside the video as separate subtitle files, and the picker tells you which languages a video actually has.
  • Cover art. The resolution picker now shows the video thumbnail, so you can confirm the right video before committing to a large file.
  • More audio targets. The console offers M4A and Opus next to MP3 and FLAC. Both are now real download paths instead of silently falling back to MP3.

Control and safety

  • In-app update check. The console has a HyperDL update row next to the yt-dlp one. It shows the latest version with its notes and a link, instead of making you check the releases page by hand.
  • Notification modes. Automation settings offer Normal (milestones), Verbose (every tick), and Silent. Previously these needed hidden flag files.
  • Vault list editor. The vault tab now shows the watched domain list with a count, and saving validates every line. Bad lines are skipped instead of breaking routing.
  • Tighter file access. Opening and previewing now enforce the same folder boundary as deletion, and the audio format setting rejects anything outside the four supported targets.

Install

Method Steps
Flash the zip Download HyperDL-v1.3.48.zip below, then install it from KernelSU, APatch, or Magisk › Install from storage
Live deploy ./build.sh --deploy updates the module on a connected device without a reboot

Requires Android 10+ on ARM64 with root. Cookies stay optional for public media.


Full changelog: README.md

Update from your root manager or flash HyperDL-v1.3.48.zip.

HyperDL v1.3.46

Choose a tag to compare

@itswill00 itswill00 released this 29 Sep 15:30

HyperDL v1.3.46

b13460 · full-zip release · changes since v1.3.45

Hardens the native bridge so the delete action can never touch files outside your HyperDL folder, keeps your login cookies owner-only, and makes downloads work on work profiles and secondary users.


Highlights

Area What changed
Safety Deletion refuses any path outside the HyperDL download folder
Privacy Cookie sessions are no longer readable by other apps
Compatibility Downloads work on work profiles and secondary users

Safety

  • Deletion is now restricted to HyperDL's own folder. The bridge used to accept any path handed to it, so a malformed request could remove files outside your downloads. Every path is now checked against the output folder before anything is unlinked, and paths that try to climb out with ../ are rejected outright.
  • Nothing changed about normal use: deleting a download from the list or clearing junk behaves exactly as before.

Privacy

  • Cookie sessions are locked to owner-only. A cookie file is a live login session for your accounts, so it no longer sits in a world-readable file. HyperDL itself is unaffected, and the bridge already runs as root.
  • The configuration folder is owner-only for the same reason. Downloaded media stays readable so your gallery and file managers keep working normally.

Compatibility

  • Work profiles and secondary users can now download. Those users do not own /storage/emulated/0, which is where HyperDL used to hardcode its download folder. The output location is now detected at startup, falling back to /data/media/0 when needed, and the installer tells you when that happens.
  • On a normal single-user phone nothing changes: downloads still land in Download/HyperDL/.

Install

Method Steps
Flash the zip Download HyperDL-v1.3.46.zip below, then install it from KernelSU, APatch, or Magisk › Install from storage
Live deploy ./build.sh --deploy updates the module on a connected device without a reboot

Requires Android 10+ on ARM64 with root. Cookies stay optional for public media.


Full changelog: README.md

Update from your root manager or flash HyperDL-v1.3.46.zip.

HyperDL v1.3.45

Choose a tag to compare

@itswill00 itswill00 released this 29 Sep 15:17

HyperDL v1.3.45

b13450 · full-zip release · changes since v1.3.42

Fixes YouTube downloads that failed with HTTP 416, stops release packaging from quietly filling up your phone's shared storage, and rebuilds the documentation around actual usage.


Highlights

Area What changed
YouTube Resumed downloads no longer die with HTTP Error 416
Storage Release zips stay in internal builds, never copied to /sdcard
Docs README rebuilt with usage, configuration, troubleshooting, and FAQ

YouTube downloads

  • Fixed HTTP Error 416: Requested range not satisfiable on resumed downloads. YouTube hands out short-lived signed links, so a resumed request frequently asked for a byte range past the end of the newly issued file. YouTube now keeps its own temporary file instead of forcing resume flags.
  • Automatic recovery. If a range error still occurs, the stale partial is cleared and the download retries once from the start, so you never have to restart a job by hand.
  • Resume still works. Interrupted downloads continue from where they stopped, and the retry stays invisible unless it is actually needed.

Build & docs

  • No more shared-storage copies. Release zips are no longer mirrored to /sdcard; internal builds land in releases/ only. Packaging stopped quietly eating into your free space.
  • README rebuilt with a table of contents, step-by-step usage, a configuration reference for cookies, audio format, the private vault, and the clipboard watcher, plus troubleshooting and FAQ sections covering the most common download failures.

Distribution

  • Releases now live in this repository. Download from the Releases page.
  • The separate HyperDL-Release repo is kept as an archive for versions up to v1.3.42.

Install

Method Steps
Flash the zip Download HyperDL-v1.3.45.zip below, then install it from KernelSU, APatch, or Magisk › Install from storage
Live deploy ./build.sh --deploy updates the module on a connected device without a reboot

Requires Android 10+ on ARM64 with root. Cookies stay optional for public media.


Full changelog: README.md

Update from your root manager or flash HyperDL-v1.3.45.zip.