Showing preview only (5,513K chars total). Download the full file or copy to clipboard to get everything.
Repository: KillingSpark/zstd-rs
Branch: master
Commit: da53f315692c
Files: 735
Total size: 5.1 MB
Directory structure:
gitextract_f9ilxv7s/
├── .github/
│ └── workflows/
│ └── ci.yml
├── .gitignore
├── Cargo.toml
├── Changelog.md
├── LICENSE
├── Readme.md
├── cli/
│ ├── Cargo.toml
│ └── src/
│ ├── main.rs
│ └── progress.rs
├── optimizations.md
└── ruzstd/
├── Cargo.toml
├── benches/
│ └── decode_all.rs
├── decodecorpus_files/
│ ├── abc.txt
│ ├── abc.txt.zst
│ ├── z000000
│ ├── z000000.zst
│ ├── z000001
│ ├── z000001.zst
│ ├── z000002
│ ├── z000002.zst
│ ├── z000003
│ ├── z000003.zst
│ ├── z000004
│ ├── z000004.zst
│ ├── z000005
│ ├── z000005.zst
│ ├── z000006
│ ├── z000006.zst
│ ├── z000007
│ ├── z000007.zst
│ ├── z000008
│ ├── z000008.zst
│ ├── z000009
│ ├── z000009.zst
│ ├── z000010
│ ├── z000010.zst
│ ├── z000011
│ ├── z000011.zst
│ ├── z000012
│ ├── z000012.zst
│ ├── z000013
│ ├── z000013.zst
│ ├── z000014
│ ├── z000014.zst
│ ├── z000015
│ ├── z000015.zst
│ ├── z000016
│ ├── z000016.zst
│ ├── z000017
│ ├── z000017.zst
│ ├── z000018
│ ├── z000018.zst
│ ├── z000019
│ ├── z000019.zst
│ ├── z000020
│ ├── z000020.zst
│ ├── z000021
│ ├── z000021.zst
│ ├── z000022
│ ├── z000022.zst
│ ├── z000023
│ ├── z000023.zst
│ ├── z000024
│ ├── z000024.zst
│ ├── z000025
│ ├── z000025.zst
│ ├── z000026
│ ├── z000026.zst
│ ├── z000027
│ ├── z000027.zst
│ ├── z000028
│ ├── z000028.zst
│ ├── z000029
│ ├── z000029.zst
│ ├── z000030
│ ├── z000030.zst
│ ├── z000031
│ ├── z000031.zst
│ ├── z000032
│ ├── z000032.zst
│ ├── z000033
│ ├── z000033.zst
│ ├── z000034
│ ├── z000034.zst
│ ├── z000035
│ ├── z000035.zst
│ ├── z000036
│ ├── z000036.zst
│ ├── z000037
│ ├── z000037.zst
│ ├── z000038
│ ├── z000038.zst
│ ├── z000039
│ ├── z000039.zst
│ ├── z000040
│ ├── z000040.zst
│ ├── z000041
│ ├── z000041.zst
│ ├── z000042
│ ├── z000042.zst
│ ├── z000043
│ ├── z000043.zst
│ ├── z000044
│ ├── z000044.zst
│ ├── z000045
│ ├── z000045.zst
│ ├── z000046
│ ├── z000046.zst
│ ├── z000047
│ ├── z000047.zst
│ ├── z000048
│ ├── z000048.zst
│ ├── z000049
│ ├── z000049.zst
│ ├── z000050
│ ├── z000050.zst
│ ├── z000051
│ ├── z000051.zst
│ ├── z000052
│ ├── z000052.zst
│ ├── z000053
│ ├── z000053.zst
│ ├── z000054
│ ├── z000054.zst
│ ├── z000055
│ ├── z000055.zst
│ ├── z000056
│ ├── z000056.zst
│ ├── z000057
│ ├── z000057.zst
│ ├── z000058
│ ├── z000058.zst
│ ├── z000059
│ ├── z000059.zst
│ ├── z000060
│ ├── z000060.zst
│ ├── z000061
│ ├── z000061.zst
│ ├── z000062
│ ├── z000062.zst
│ ├── z000063
│ ├── z000063.zst
│ ├── z000064
│ ├── z000064.zst
│ ├── z000065
│ ├── z000065.zst
│ ├── z000066
│ ├── z000066.zst
│ ├── z000067
│ ├── z000067.zst
│ ├── z000068
│ ├── z000068.zst
│ ├── z000069
│ ├── z000069.zst
│ ├── z000070
│ ├── z000070.zst
│ ├── z000071
│ ├── z000071.zst
│ ├── z000072
│ ├── z000072.zst
│ ├── z000073
│ ├── z000073.zst
│ ├── z000074
│ ├── z000074.zst
│ ├── z000075
│ ├── z000075.zst
│ ├── z000076
│ ├── z000076.zst
│ ├── z000077
│ ├── z000077.zst
│ ├── z000078
│ ├── z000078.zst
│ ├── z000079
│ ├── z000079.zst
│ ├── z000080
│ ├── z000080.zst
│ ├── z000081
│ ├── z000081.zst
│ ├── z000082
│ ├── z000082.zst
│ ├── z000083
│ ├── z000083.zst
│ ├── z000084
│ ├── z000084.zst
│ ├── z000085
│ ├── z000085.zst
│ ├── z000086
│ ├── z000086.zst
│ ├── z000087
│ ├── z000087.zst
│ ├── z000088
│ ├── z000088.zst
│ ├── z000089
│ ├── z000089.zst
│ ├── z000090
│ ├── z000090.zst
│ ├── z000091
│ ├── z000091.zst
│ ├── z000092
│ ├── z000092.zst
│ ├── z000093
│ ├── z000093.zst
│ ├── z000094
│ ├── z000094.zst
│ ├── z000095
│ ├── z000095.zst
│ ├── z000096
│ ├── z000096.zst
│ ├── z000097
│ ├── z000097.zst
│ ├── z000098
│ ├── z000098.zst
│ ├── z000099
│ └── z000099.zst
├── dict_tests/
│ ├── dictionary
│ └── files/
│ ├── ModemManager.service
│ ├── ModemManager.service.zst
│ ├── NetworkManager-dispatcher.service
│ ├── NetworkManager-dispatcher.service.zst
│ ├── NetworkManager-wait-online.service
│ ├── NetworkManager-wait-online.service.zst
│ ├── NetworkManager.service
│ ├── NetworkManager.service.zst
│ ├── auditd.service
│ ├── auditd.service.zst
│ ├── autovt@.service
│ ├── autovt@.service.zst
│ ├── avahi-daemon.service
│ ├── avahi-daemon.service.zst
│ ├── avahi-dnsconfd.service
│ ├── avahi-dnsconfd.service.zst
│ ├── blk-availability.service
│ ├── blk-availability.service.zst
│ ├── btrfs-scrub@.service
│ ├── btrfs-scrub@.service.zst
│ ├── canberra-system-bootup.service
│ ├── canberra-system-bootup.service.zst
│ ├── canberra-system-shutdown-reboot.service
│ ├── canberra-system-shutdown-reboot.service.zst
│ ├── canberra-system-shutdown.service
│ ├── canberra-system-shutdown.service.zst
│ ├── clean-mount-point@.service
│ ├── clean-mount-point@.service.zst
│ ├── colord.service
│ ├── colord.service.zst
│ ├── console-getty.service
│ ├── console-getty.service.zst
│ ├── container-getty@.service
│ ├── container-getty@.service.zst
│ ├── cpupower.service
│ ├── cpupower.service.zst
│ ├── dbus-org.freedesktop.hostname1.service
│ ├── dbus-org.freedesktop.hostname1.service.zst
│ ├── dbus-org.freedesktop.import1.service
│ ├── dbus-org.freedesktop.import1.service.zst
│ ├── dbus-org.freedesktop.locale1.service
│ ├── dbus-org.freedesktop.locale1.service.zst
│ ├── dbus-org.freedesktop.login1.service
│ ├── dbus-org.freedesktop.login1.service.zst
│ ├── dbus-org.freedesktop.machine1.service
│ ├── dbus-org.freedesktop.machine1.service.zst
│ ├── dbus-org.freedesktop.portable1.service
│ ├── dbus-org.freedesktop.portable1.service.zst
│ ├── dbus-org.freedesktop.timedate1.service
│ ├── dbus-org.freedesktop.timedate1.service.zst
│ ├── dbus.service
│ ├── dbus.service.zst
│ ├── debug-shell.service
│ ├── debug-shell.service.zst
│ ├── dhcpcd.service
│ ├── dhcpcd.service.zst
│ ├── dhcpcd@.service
│ ├── dhcpcd@.service.zst
│ ├── dm-event.service
│ ├── dm-event.service.zst
│ ├── dmraid.service
│ ├── dmraid.service.zst
│ ├── dnsmasq.service
│ ├── dnsmasq.service.zst
│ ├── e2scrub@.service
│ ├── e2scrub@.service.zst
│ ├── e2scrub_all.service
│ ├── e2scrub_all.service.zst
│ ├── e2scrub_fail@.service
│ ├── e2scrub_fail@.service.zst
│ ├── e2scrub_reap.service
│ ├── e2scrub_reap.service.zst
│ ├── ebtables.service
│ ├── ebtables.service.zst
│ ├── emergency.service
│ ├── emergency.service.zst
│ ├── fancontrol.service
│ ├── fancontrol.service.zst
│ ├── firewalld.service
│ ├── firewalld.service.zst
│ ├── fstrim.service
│ ├── fstrim.service.zst
│ ├── ftpd.service
│ ├── ftpd.service.zst
│ ├── getty@.service
│ ├── getty@.service.zst
│ ├── git-daemon@.service
│ ├── git-daemon@.service.zst
│ ├── gluster-ta-volume.service
│ ├── gluster-ta-volume.service.zst
│ ├── glusterd.service
│ ├── glusterd.service.zst
│ ├── glustereventsd.service
│ ├── glustereventsd.service.zst
│ ├── glusterfssharedstorage.service
│ ├── glusterfssharedstorage.service.zst
│ ├── gpm.service
│ ├── gpm.service.zst
│ ├── healthd.service
│ ├── healthd.service.zst
│ ├── hv_fcopy_daemon.service
│ ├── hv_fcopy_daemon.service.zst
│ ├── hv_kvp_daemon.service
│ ├── hv_kvp_daemon.service.zst
│ ├── hv_vss_daemon.service
│ ├── hv_vss_daemon.service.zst
│ ├── initrd-cleanup.service
│ ├── initrd-cleanup.service.zst
│ ├── initrd-parse-etc.service
│ ├── initrd-parse-etc.service.zst
│ ├── initrd-switch-root.service
│ ├── initrd-switch-root.service.zst
│ ├── initrd-udevadm-cleanup-db.service
│ ├── initrd-udevadm-cleanup-db.service.zst
│ ├── ip6tables.service
│ ├── ip6tables.service.zst
│ ├── iptables.service
│ ├── iptables.service.zst
│ ├── kmod-static-nodes.service
│ ├── kmod-static-nodes.service.zst
│ ├── krb5-kadmind.service
│ ├── krb5-kadmind.service.zst
│ ├── krb5-kdc.service
│ ├── krb5-kdc.service.zst
│ ├── krb5-kpropd.service
│ ├── krb5-kpropd.service.zst
│ ├── krb5-kpropd@.service
│ ├── krb5-kpropd@.service.zst
│ ├── ldconfig.service
│ ├── ldconfig.service.zst
│ ├── libvirt-guests.service
│ ├── libvirt-guests.service.zst
│ ├── libvirtd.service
│ ├── libvirtd.service.zst
│ ├── lm_sensors.service
│ ├── lm_sensors.service.zst
│ ├── logrotate.service
│ ├── logrotate.service.zst
│ ├── lvm2-lvmetad.service
│ ├── lvm2-lvmetad.service.zst
│ ├── lvm2-lvmpolld.service
│ ├── lvm2-lvmpolld.service.zst
│ ├── lvm2-monitor.service
│ ├── lvm2-monitor.service.zst
│ ├── lvm2-pvscan@.service
│ ├── lvm2-pvscan@.service.zst
│ ├── man-db.service
│ ├── man-db.service.zst
│ ├── mdadm-grow-continue@.service
│ ├── mdadm-grow-continue@.service.zst
│ ├── mdadm-last-resort@.service
│ ├── mdadm-last-resort@.service.zst
│ ├── mdmon@.service
│ ├── mdmon@.service.zst
│ ├── mdmonitor.service
│ ├── mdmonitor.service.zst
│ ├── mkinitcpio-generate-shutdown-ramfs.service
│ ├── mkinitcpio-generate-shutdown-ramfs.service.zst
│ ├── ndctl-monitor.service
│ ├── ndctl-monitor.service.zst
│ ├── netcf-transaction.service
│ ├── netcf-transaction.service.zst
│ ├── netctl-auto@.service
│ ├── netctl-auto@.service.zst
│ ├── netctl-ifplugd@.service
│ ├── netctl-ifplugd@.service.zst
│ ├── netctl-sleep.service
│ ├── netctl-sleep.service.zst
│ ├── netctl-wait-online.service
│ ├── netctl-wait-online.service.zst
│ ├── netctl.service
│ ├── netctl.service.zst
│ ├── netctl@.service
│ ├── netctl@.service.zst
│ ├── nftables.service
│ ├── nftables.service.zst
│ ├── ninfod.service
│ ├── ninfod.service.zst
│ ├── nscd.service
│ ├── nscd.service.zst
│ ├── openvpn-client@.service
│ ├── openvpn-client@.service.zst
│ ├── openvpn-server@.service
│ ├── openvpn-server@.service.zst
│ ├── polkit.service
│ ├── polkit.service.zst
│ ├── ppp@.service
│ ├── ppp@.service.zst
│ ├── quotaon.service
│ ├── quotaon.service.zst
│ ├── rarpd@.service
│ ├── rarpd@.service.zst
│ ├── rdisc.service
│ ├── rdisc.service.zst
│ ├── rescue.service
│ ├── rescue.service.zst
│ ├── rfkill-block@.service
│ ├── rfkill-block@.service.zst
│ ├── rfkill-unblock@.service
│ ├── rfkill-unblock@.service.zst
│ ├── rlogin@.service
│ ├── rlogin@.service.zst
│ ├── rpcbind.service
│ ├── rpcbind.service.zst
│ ├── rsh@.service
│ ├── rsh@.service.zst
│ ├── rtkit-daemon.service
│ ├── rtkit-daemon.service.zst
│ ├── sddm.service
│ ├── sddm.service.zst
│ ├── sensord.service
│ ├── sensord.service.zst
│ ├── serial-getty@.service
│ ├── serial-getty@.service.zst
│ ├── shadow.service
│ ├── shadow.service.zst
│ ├── spice-webdavd.service
│ ├── spice-webdavd.service.zst
│ ├── sshd.service
│ ├── sshd.service.zst
│ ├── sshdgenkeys.service
│ ├── sshdgenkeys.service.zst
│ ├── syncthing-resume.service
│ ├── syncthing-resume.service.zst
│ ├── syncthing@.service
│ ├── syncthing@.service.zst
│ ├── system-update-cleanup.service
│ ├── system-update-cleanup.service.zst
│ ├── systemd-ask-password-console.service
│ ├── systemd-ask-password-console.service.zst
│ ├── systemd-ask-password-wall.service
│ ├── systemd-ask-password-wall.service.zst
│ ├── systemd-backlight@.service
│ ├── systemd-backlight@.service.zst
│ ├── systemd-binfmt.service
│ ├── systemd-binfmt.service.zst
│ ├── systemd-bless-boot.service
│ ├── systemd-bless-boot.service.zst
│ ├── systemd-boot-check-no-failures.service
│ ├── systemd-boot-check-no-failures.service.zst
│ ├── systemd-boot-system-token.service
│ ├── systemd-boot-system-token.service.zst
│ ├── systemd-coredump@.service
│ ├── systemd-coredump@.service.zst
│ ├── systemd-exit.service
│ ├── systemd-exit.service.zst
│ ├── systemd-firstboot.service
│ ├── systemd-firstboot.service.zst
│ ├── systemd-fsck-root.service
│ ├── systemd-fsck-root.service.zst
│ ├── systemd-fsck@.service
│ ├── systemd-fsck@.service.zst
│ ├── systemd-halt.service
│ ├── systemd-halt.service.zst
│ ├── systemd-hibernate-resume@.service
│ ├── systemd-hibernate-resume@.service.zst
│ ├── systemd-hibernate.service
│ ├── systemd-hibernate.service.zst
│ ├── systemd-hostnamed.service
│ ├── systemd-hostnamed.service.zst
│ ├── systemd-hwdb-update.service
│ ├── systemd-hwdb-update.service.zst
│ ├── systemd-hybrid-sleep.service
│ ├── systemd-hybrid-sleep.service.zst
│ ├── systemd-importd.service
│ ├── systemd-importd.service.zst
│ ├── systemd-initctl.service
│ ├── systemd-initctl.service.zst
│ ├── systemd-journal-catalog-update.service
│ ├── systemd-journal-catalog-update.service.zst
│ ├── systemd-journal-flush.service
│ ├── systemd-journal-flush.service.zst
│ ├── systemd-journal-gatewayd.service
│ ├── systemd-journal-gatewayd.service.zst
│ ├── systemd-journal-remote.service
│ ├── systemd-journal-remote.service.zst
│ ├── systemd-journal-upload.service
│ ├── systemd-journal-upload.service.zst
│ ├── systemd-journald.service
│ ├── systemd-journald.service.zst
│ ├── systemd-kexec.service
│ ├── systemd-kexec.service.zst
│ ├── systemd-localed.service
│ ├── systemd-localed.service.zst
│ ├── systemd-logind.service
│ ├── systemd-logind.service.zst
│ ├── systemd-machine-id-commit.service
│ ├── systemd-machine-id-commit.service.zst
│ ├── systemd-machined.service
│ ├── systemd-machined.service.zst
│ ├── systemd-modules-load.service
│ ├── systemd-modules-load.service.zst
│ ├── systemd-network-generator.service
│ ├── systemd-network-generator.service.zst
│ ├── systemd-networkd-wait-online.service
│ ├── systemd-networkd-wait-online.service.zst
│ ├── systemd-networkd.service
│ ├── systemd-networkd.service.zst
│ ├── systemd-nspawn@.service
│ ├── systemd-nspawn@.service.zst
│ ├── systemd-portabled.service
│ ├── systemd-portabled.service.zst
│ ├── systemd-poweroff.service
│ ├── systemd-poweroff.service.zst
│ ├── systemd-pstore.service
│ ├── systemd-pstore.service.zst
│ ├── systemd-quotacheck.service
│ ├── systemd-quotacheck.service.zst
│ ├── systemd-random-seed.service
│ ├── systemd-random-seed.service.zst
│ ├── systemd-reboot.service
│ ├── systemd-reboot.service.zst
│ ├── systemd-remount-fs.service
│ ├── systemd-remount-fs.service.zst
│ ├── systemd-resolved.service
│ ├── systemd-resolved.service.zst
│ ├── systemd-rfkill.service
│ ├── systemd-rfkill.service.zst
│ ├── systemd-suspend-then-hibernate.service
│ ├── systemd-suspend-then-hibernate.service.zst
│ ├── systemd-suspend.service
│ ├── systemd-suspend.service.zst
│ ├── systemd-sysctl.service
│ ├── systemd-sysctl.service.zst
│ ├── systemd-sysusers.service
│ ├── systemd-sysusers.service.zst
│ ├── systemd-time-wait-sync.service
│ ├── systemd-time-wait-sync.service.zst
│ ├── systemd-timedated.service
│ ├── systemd-timedated.service.zst
│ ├── systemd-timesyncd.service
│ ├── systemd-timesyncd.service.zst
│ ├── systemd-tmpfiles-clean.service
│ ├── systemd-tmpfiles-clean.service.zst
│ ├── systemd-tmpfiles-setup-dev.service
│ ├── systemd-tmpfiles-setup-dev.service.zst
│ ├── systemd-tmpfiles-setup.service
│ ├── systemd-tmpfiles-setup.service.zst
│ ├── systemd-udev-settle.service
│ ├── systemd-udev-settle.service.zst
│ ├── systemd-udev-trigger.service
│ ├── systemd-udev-trigger.service.zst
│ ├── systemd-udevd.service
│ ├── systemd-udevd.service.zst
│ ├── systemd-update-done.service
│ ├── systemd-update-done.service.zst
│ ├── systemd-update-utmp.service
│ ├── systemd-update-utmp.service.zst
│ ├── systemd-user-sessions.service
│ ├── systemd-user-sessions.service.zst
│ ├── systemd-vconsole-setup.service
│ ├── systemd-vconsole-setup.service.zst
│ ├── systemd-volatile-root.service
│ ├── systemd-volatile-root.service.zst
│ ├── talk.service
│ ├── talk.service.zst
│ ├── teamd@.service
│ ├── teamd@.service.zst
│ ├── telnet@.service
│ ├── telnet@.service.zst
│ ├── udisks2.service
│ ├── udisks2.service.zst
│ ├── upower.service
│ ├── upower.service.zst
│ ├── usbipd.service
│ ├── usbipd.service.zst
│ ├── usbmuxd.service
│ ├── usbmuxd.service.zst
│ ├── user-runtime-dir@.service
│ ├── user-runtime-dir@.service.zst
│ ├── user@.service
│ ├── user@.service.zst
│ ├── uuidd.service
│ ├── uuidd.service.zst
│ ├── virtinterfaced.service
│ ├── virtinterfaced.service.zst
│ ├── virtlockd.service
│ ├── virtlockd.service.zst
│ ├── virtlogd.service
│ ├── virtlogd.service.zst
│ ├── virtlxcd.service
│ ├── virtlxcd.service.zst
│ ├── virtnetworkd.service
│ ├── virtnetworkd.service.zst
│ ├── virtnodedevd.service
│ ├── virtnodedevd.service.zst
│ ├── virtnwfilterd.service
│ ├── virtnwfilterd.service.zst
│ ├── virtproxyd.service
│ ├── virtproxyd.service.zst
│ ├── virtqemud.service
│ ├── virtqemud.service.zst
│ ├── virtsecretd.service
│ ├── virtsecretd.service.zst
│ ├── virtstoraged.service
│ ├── virtstoraged.service.zst
│ ├── virtvboxd.service
│ ├── virtvboxd.service.zst
│ ├── wpa_supplicant-nl80211@.service
│ ├── wpa_supplicant-nl80211@.service.zst
│ ├── wpa_supplicant-wired@.service
│ ├── wpa_supplicant-wired@.service.zst
│ ├── wpa_supplicant.service
│ ├── wpa_supplicant.service.zst
│ ├── wpa_supplicant@.service
│ ├── wpa_supplicant@.service.zst
│ ├── xfs_scrub@.service
│ ├── xfs_scrub@.service.zst
│ ├── xfs_scrub_all.service
│ ├── xfs_scrub_all.service.zst
│ ├── xfs_scrub_fail@.service
│ ├── xfs_scrub_fail@.service.zst
│ ├── zram-setup@.service
│ └── zram-setup@.service.zst
├── fuzz/
│ ├── .gitignore
│ ├── Cargo.toml
│ ├── artifacts/
│ │ ├── decode/
│ │ │ ├── crash-003e8871ae1b398af243ed3bdd895e6a9b417d09
│ │ │ ├── crash-06be9bcd30e08d36a1231291fdc393be2286ccd1
│ │ │ ├── crash-0b8dd1ec99c11d29f489b7ed1ea0a641b22f1c4b
│ │ │ ├── crash-0e471543b70867a4e3d6884e281e504018f6a4e0
│ │ │ ├── crash-13621a677af75daa6007d30f8e91a6706ce8b2b7
│ │ │ ├── crash-1f4e23456d1aa3bcd5a13947ba1b71536c479a3a
│ │ │ ├── crash-285afb3e50455f20ba4f19ffdd3ca2767771d67c
│ │ │ ├── crash-2a4da82402386b074fd8be53271812ce2d8e2b18
│ │ │ ├── crash-2ec60cbc7b68479802290177232e2472625d5e5d
│ │ │ ├── crash-2f47b61c081dfbce296e9674cae4448f7bfa1277
│ │ │ ├── crash-3151768e96e3ce234cc8304da8fa51c65ec2bfb6
│ │ │ ├── crash-3d348c53c3db2c13e65f6a8ea95848fc9ddfaf01
│ │ │ ├── crash-431e8c5fa22def362a489a04e4f9470d9409f111
│ │ │ ├── crash-49bec46e6271a44740b1ab82e79e9b371d832b8c
│ │ │ ├── crash-4d0dfb5fcd91a4c960619fdb17364f34d05f7310
│ │ │ ├── crash-4fda2fa7e33a2589cc514990dd9fe7ab03bf985a
│ │ │ ├── crash-50f1812780e355be23520eb604bcc18df1c222bb
│ │ │ ├── crash-663779067554d3f2a8c56ffc939cc7e842ed63ec
│ │ │ ├── crash-7eb5677508a2696ad1f778c464a38303267ab4ee
│ │ │ ├── crash-8373dd7d83fda197b92858a7dfc101c3208c1238
│ │ │ ├── crash-adb83ab8f58b2724f649a0cea5a5ed2004fa25c5
│ │ │ ├── crash-b5e12760caa036f8467d9f9963606e675f913ce1
│ │ │ ├── crash-bacc82e4bc4975593010cae0002c55d0967da6a3
│ │ │ ├── crash-bbead0dbe38036346fb694ad1893cec85a0b8700
│ │ │ ├── crash-bc1ef1499329fe12f4ba10998c86778a3102452d
│ │ │ ├── crash-c11a4207fca22f987266fe797c83eb0bb2c9fbc4
│ │ │ ├── crash-c746b132a6561becc94bbaf80f0fcd22c805ae7e
│ │ │ ├── crash-ca663bc7ccd4c4e6e7a02651bc06236b11e20170
│ │ │ ├── crash-cb08bdd38c7904891e88d217fe105a0c7102cf46
│ │ │ ├── crash-cb2b9b0b711020aad1153f8a6fff1b5dfbf0e084
│ │ │ ├── crash-cddb11de78f42d894d9b15b23bbad791b06a7c75
│ │ │ ├── crash-d5f00d39b2b269f380d4ffc5dd40c76acf43ac13
│ │ │ ├── crash-d7a5385da30608d3ea21916c0291e3592a627c48
│ │ │ ├── crash-d8943dbbbf4f0a40fdaef7375207c7778b333864
│ │ │ ├── crash-d95d11d3a0d91d39c1d5ba9added01f249b39b82
│ │ │ ├── crash-da39a3ee5e6b4b0d3255bfef95601890afd80709
│ │ │ ├── crash-efefea0a61c8cab9ec201ca547ec55924b51547e
│ │ │ ├── crash-f02fdd84d0bc12c221de04a60c81993a6bb56467
│ │ │ ├── crash-f2c779cdf7827b4827e33eb5510e9e2d3d83371f
│ │ │ └── crash-fb4314c59f9013d610ac2b8d698c97e518fa095e
│ │ ├── fse/
│ │ │ ├── crash-16fdc285684fe17e4a84ff6605c7f0e362af3dfa
│ │ │ ├── crash-da39a3ee5e6b4b0d3255bfef95601890afd80709
│ │ │ └── crash-e587fc04ebe1b7e97d0aa916ef8d3f2cc92fb4b1
│ │ ├── huff0/
│ │ │ ├── crash-da39a3ee5e6b4b0d3255bfef95601890afd80709
│ │ │ └── crash-e7d75b9bfbab3e8e4df53bb28b87a1a01ee99d3d
│ │ └── interop/
│ │ ├── crash-5ba93c9db0cff93f52b521d7420e43f6eda2784f
│ │ └── crash-a9f55c479d7c420764bde5bd6c666a7997d79d26
│ └── fuzz_targets/
│ ├── decode.rs
│ ├── encode.rs
│ ├── fse.rs
│ ├── huff0.rs
│ └── interop.rs
├── src/
│ ├── bit_io/
│ │ ├── bit_reader.rs
│ │ ├── bit_reader_reverse.rs
│ │ ├── bit_writer.rs
│ │ └── mod.rs
│ ├── blocks/
│ │ ├── block.rs
│ │ ├── literals_section.rs
│ │ ├── mod.rs
│ │ └── sequence_section.rs
│ ├── common/
│ │ └── mod.rs
│ ├── decoding/
│ │ ├── block_decoder.rs
│ │ ├── decode_buffer.rs
│ │ ├── dictionary.rs
│ │ ├── errors.rs
│ │ ├── frame.rs
│ │ ├── frame_decoder.rs
│ │ ├── literals_section_decoder.rs
│ │ ├── mod.rs
│ │ ├── ringbuffer.rs
│ │ ├── scratch.rs
│ │ ├── sequence_execution.rs
│ │ ├── sequence_section_decoder.rs
│ │ └── streaming_decoder.rs
│ ├── dictionary/
│ │ ├── cover.rs
│ │ ├── frequency.rs
│ │ ├── mod.rs
│ │ └── reservoir.rs
│ ├── encoding/
│ │ ├── block_header.rs
│ │ ├── blocks/
│ │ │ ├── compressed.rs
│ │ │ └── mod.rs
│ │ ├── frame_compressor.rs
│ │ ├── frame_header.rs
│ │ ├── levels/
│ │ │ ├── fastest.rs
│ │ │ └── mod.rs
│ │ ├── match_generator.rs
│ │ ├── mod.rs
│ │ └── util.rs
│ ├── fse/
│ │ ├── fse_decoder.rs
│ │ ├── fse_encoder.rs
│ │ └── mod.rs
│ ├── huff0/
│ │ ├── huff0_decoder.rs
│ │ ├── huff0_encoder.rs
│ │ └── mod.rs
│ ├── io_nostd.rs
│ ├── io_std.rs
│ ├── lib.rs
│ └── tests/
│ ├── bit_reader.rs
│ ├── decode_corpus.rs
│ ├── dict_test.rs
│ ├── encode_corpus.rs
│ ├── fuzz_regressions.rs
│ └── mod.rs
└── test_fixtures/
└── abc.txt.zst
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/ci.yml
================================================
on: [push, pull_request]
name: CI
jobs:
tests:
name: stable lint, test, build
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Install cargo-hack and cargo-msrv
uses: taiki-e/install-action@v2
with:
tool: cargo-hack, cargo-msrv
- name: check
run: cargo hack check --workspace --feature-powerset --exclude-features rustc-dep-of-std
- name: cargo hack clippy
run: cargo hack clippy --workspace --feature-powerset --exclude-features rustc-dep-of-std
- name: cargo hack test
run: cargo hack test --workspace --feature-powerset --exclude-features rustc-dep-of-std
- name: Verify MSRV (cli)
run: cargo msrv verify --path cli/
- name: Verify MSRV (lib)
run: cargo msrv verify --path ruzstd/
nightly-stuff:
name: nightly lint, miri
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Install nightly toolchain
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt, clippy, miri
- run: cargo +nightly fmt --all -- --check
- run: cargo +nightly clippy --workspace --no-default-features -- -D warnings
- run: cargo +nightly clippy --workspace -- -D warnings
- run: cargo +nightly miri test ringbuffer
- run: cargo +nightly miri test short_Writer
================================================
FILE: .gitignore
================================================
/target
**/*.rs.bk
Cargo.lock
/local_corpus_files
/local_dict_corpus_files
/orig-zstd
fuzz_decodecorpus
perf.data*
fuzz/corpus
.idea
================================================
FILE: Cargo.toml
================================================
[workspace]
resolver = "3"
members = ["ruzstd", "cli"]
================================================
FILE: Changelog.md
================================================
# Changelog
This document records the changes made between versions, starting with version 0.5.0
# After 0.8.2 (Current)
* Introduce the `rust-version` field
# After 0.8.1
* The CLI has been refactored to use `clap`
* The MatchDriverGenerator has been made public so users can name it as `M` in `FrameCompressor<R,W,M>`
# After 0.8.0
* The compressor now includes a `content_checksum` when the `hash` feature is enabled
* Dictionary generation has been added
# After 0.7.3
* Add initial compression support
* **Breaking** Refactor modules to reflect that this is now also a compression library
# After 0.7.2
* Soundness fix in decoding::RingBuffer. The lengths of the diferent regions where sometimes calculated wrongly, resulting in reads of heap memory not belonging to that ringbuffer
* Fixed by https://github.com/paolobarbolini
* Affected versions: 0.7.0 up to and including 0.7.2
* Added convenience functions to FrameDecoder to decode multiple frames from a buffer (https://github.com/philipc)
# After 0.7.1
* Remove byteorder dependency (https://github.com/workingjubilee)
* Preparations to become a std dependency (https://github.com/workingjubilee)
# After 0.7.0
* Fix for drain_to functions into limited targets (https://github.com/michaelkirk)
# After 0.6.0
* Small fix in the zstd binary, progress tracking was slighty off for skippable frames resulting in an error only when the last frame in a file was skippable
* Small performance improvement by reorganizing code with `#[cold]` annotations
* Documentation for `StreamDecoder` mentioning the limitations around multiple frames (https://github.com/Sorseg)
* Documentation around skippable frames (https://github.com/Sorseg)
* **Breaking** `StreamDecoder` API changes to get access to the inner parts (https://github.com/ifd3f)
* Big internal documentation contribution (https://github.com/zleyyij)
* Dropped derive_more as a dependency (https://github.com/xd009642)
* Small improvement by removing the error cases from the reverse bitreader (and making sure invalid requests can't even happen)
# After 0.5.0
* Make the hashing checksum optional (thanks to [@tamird](https://github.com/tamird))
* breaking change as the public API changes based on features
* The FrameDecoder is now Send + Sync (RingBuffer impls these traits now)
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2019 Moritz Borcherding
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: Readme.md
================================================
# Ruzstd (a pure rust zstd format implementation)
[](https://docs.rs/ruzstd)
[](https://github.com/killingspark/zstd-rs/actions?query=workflow%3ACI)
# What is this
A pure Rust implementation of the Zstandard compression format, as defined in [RFC8878](https://www.rfc-editor.org/rfc/rfc8878.pdf).
This crate contains a fully operational implementation of the decompression portion of the standard.
It also provides a compressor which is usable, but it does not yet reach the speed, ratio or configurability of the original zstd library.
This crate is currently actively maintained.
# Current Status
## Decompression
The `decoding` module provides a complete
implementation of a Zstandard decompressor.
In terms of speed, `ruzstd` is behind the original C implementation
which has a rust binding located [here](https://github.com/gyscos/zstd-rs).
Measuring with the 'time' utility the original zstd and my decoder both
decoding the same enwik9.zst file from a ramfs, my decoder is about 3.5
times slower. Enwik9 is highly compressible, for less compressible data
(like a ubuntu installation .iso) my decoder comes close to only being
1.4 times slower.
## Compression
On the compression side:
- Support for generating compressed blocks at any compression level
- [x] Uncompressed
- [x] Fastest (roughly level 1)
- [ ] Default (roughly level 3)
- [ ] Better (roughly level 7)
- [ ] Best (roughly level 11)
- [x] Checksums
- [ ] Dictionaries
## Dictionary Generation
When the `dict_builder` feature is enabled, the `dictionary` module
provides the ability to create new dictionaries.
On the `github-users` sample set, our implementation benchmarks within
0.2% of the official implementation (as of commit
`09e52d07340acdb2e13817b066e8be6e424f7258`):
```no_build
uncompressed: 100.00% (7484607 bytes)
no dict: 34.99% of original size (2618872 bytes)
reference dict: 16.16% of no dict size (2195672 bytes smaller)
our dict: 16.28% of no dict size (2192400 bytes smaller)
```
The dictionary generator only provides support for creating "raw
content" dictionaries. Tagged dictionaries are currently unsupported.
See <https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#dictionary-format>
for clarification.
# How can you use it?
## Compression
The easiest is to use the provided `compress`/`compress_to_vec` functions
```rust, no_run
use ruzstd::encoding::{compress, compress_to_vec, CompressionLevel};
let data: &[u8] = todo!();
// Either
let mut compressed = Vec::new();
compress(data, &mut compressed, CompressionLevel::Fastest);
// or
let compressed = compress_to_vec(data, CompressionLevel::Fastest);
```
Or you can use the `FrameDecoder` manually to compress data. This allows you to process encoded data while it is being encoded instead of collecting into a big vector.
## Decompression
Additionally to the descriptions and the docs you can have a look at the zstd / zstd_streaming binaries. They showcase how this library can be used.
### Easy
The easiest is to wrap the io::Read into a StreamingDecoder which itself implements io::Read. It will decode blocks as necessary to fulfill the read requests
```rust, no_run
use ruzstd::decoding::StreamingDecoder;
use ruzstd::io::Read;
let mut source: &[u8] = todo!("Get a reader from a File or any other source");
let mut decoder = StreamingDecoder::new(&mut source).unwrap();
let mut result = Vec::new();
decoder.read_to_end(&mut result).unwrap();
```
This might be a problem if you are accepting user provided data. Frames can be REALLY big when decoded. If this is the case you should either check how big the frame
actually is or use the memory efficient approach described below.
### Memory efficient
If memory is a concern you can decode frames partially. There are two ways to do this:
#### Streaming decoder
Use the StreamingDecoder and use a while loop to fill your buffer (see src/bin/zstd_stream.rs for an example). This is the
recommended approach.
#### Use the lower level FrameDecoder
For an example see the src/bin/zstd.rs file. Basically you can decode the frame until either a
given block count has been decoded or the decodebuffer has reached a certain size. Then you can collect no longer needed bytes from the buffer and do something with them, discard them and resume decoding the frame in a loop until the frame has been decoded completely.
## Roadmap
1. More Performance optimizations
1. sequence_decoding and reverse_bitreader::get_bits. Those account for about 50% of the whole time used in decoding
2. Matching suffixes. This accounts for >60% of the whole time used in encoding
2. Implement encoder features
1. More levels
2. Dictionaries
3. Checksums
## Testing
Tests take two forms.
1. Tests using well-formed files that have to decode correctly and are checked against their originals
1. Tests using malformed input that have been generated by the fuzzer. These don't have to decode (they are garbage) but they must not make the decoder panic
## Fuzzing
Fuzzing has been done on
1. Random input with no initial corpus
2. The \*.zst in /fuzz_decodecorpus
### You want to help fuzz?
Use `cargo +nightly fuzz run decode` or some other fuzz target to run the fuzzer. It is seeded with files created with decodecorpus.
If the fuzzer finds a crash it will be saved to the artifacts dir by the fuzzer. Run `cargo test artifacts` to run the artifacts tests.
This will tell you where the decoder panics exactly. If you are able to fix the issue please feel free to do a pull request. If not please still submit the offending input and I will see how to fix it myself.
# Contributing
Contributions will be published under the same MIT license as this project. Please make an entry in the Changelog.md file when you make a PR.
## AI Contributions
Contributions may be created by using whatever tools you like. They must be read, verified and decided to be a value added to the project by a human (you! not a maintainer) before submitting a PR and the communication about the PR must be handled by a human and not an agent. This is meant to be more or less in the spirit of the [LLVM policy](https://llvm.org/docs/AIToolPolicy.html) adapted to a much smaller project.
================================================
FILE: cli/Cargo.toml
================================================
[package]
name = "ruzstd-cli"
version = "0.8.2"
rust-version = "1.87.0"
authors = ["Moritz Borcherding <moritz.borcherding@web.de>"]
edition = "2018"
license = "MIT"
homepage = "https://github.com/KillingSpark/zstd-rs"
repository = "https://github.com/KillingSpark/zstd-rs"
description = "A command line interface for the `ruzstd` zstd implementation"
readme = "../Readme.md"
keywords = ["zstd", "zstandard", "decompression"]
categories = ["compression"]
[dependencies]
# Used for the command line binary only
clap = { version = "4.5.46", features = ["derive"]}
color-eyre = { version = "0.6.5" }
tracing = { version = "0.1.41" }
indicatif = { version = "0.18.0" }
tracing-indicatif = { version = "0.3.13" }
console = { version = "0.16.1" }
tracing-subscriber = { version = "0.3.20" }
ruzstd = { path = "../ruzstd", features = ["std"] }
[dev-dependencies]
criterion = "0.5"
rand = { version = "0.8.5", features = ["small_rng"] }
zstd = "0.13.2"
================================================
FILE: cli/src/main.rs
================================================
extern crate ruzstd;
mod progress;
use progress::ProgressMonitor;
use std::fs::File;
use std::io::BufReader;
use std::path::Path;
use std::path::PathBuf;
use progress::fmt_size;
use clap::{Parser, Subcommand};
use color_eyre::eyre::{ContextCompat, WrapErr};
use ruzstd::encoding::CompressionLevel;
use tracing::info;
use tracing_indicatif::IndicatifLayer;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
#[derive(Parser)]
#[command(version, about)]
struct Cli {
#[command(subcommand)]
command: Option<Commands>,
}
// TODO: implement a dictionary creation command, and a command for benchmarking
#[derive(Subcommand)]
enum Commands {
/// Compress a single file. If no output file is specified,
/// output will be written to <INPUT_FILE>.zst
Compress {
/// File to compress
input_file: PathBuf,
/// Where the compressed file is written
/// [default: <INPUT_FILE>.zst]
output_file: Option<PathBuf>,
/// How thoroughly the file should be compressed. A higher level will take
/// more time to compress but result in a smaller file, and vice versa.
///
/// - 0: Uncompressed
/// - 1: Fastest
/// - 2: Default
/// - 3: Better
/// - 4: Best
#[arg(
short,
long,
value_name = "COMPRESSION_LEVEL",
default_value_t = 2,
verbatim_doc_comment
)]
level: u8,
},
Decompress {
/// .zst archive to decompress
input_file: PathBuf,
/// Where the compressed file is written
/// [default: <ARCHIVE_NAME>]
output_file: Option<PathBuf>,
},
}
fn main() -> color_eyre::Result<()> {
// Process CLI arguments
let cli = Cli::parse();
// Initialize logging (with indicatif integration)
let indicatif_layer = IndicatifLayer::new();
tracing_subscriber::registry()
.with(
tracing_subscriber::fmt::layer()
.with_writer(indicatif_layer.get_stderr_writer())
.without_time(),
)
.with(indicatif_layer)
.init();
let command: Commands = cli.command.wrap_err("no subcommand provided").unwrap();
match command {
Commands::Compress {
input_file,
output_file,
level,
} => {
let output_file = output_file.unwrap_or_else(|| add_extension(&input_file, ".zst"));
compress(input_file, output_file, level)?;
}
Commands::Decompress {
input_file,
output_file,
} => {
let output_file = output_file.unwrap_or(
input_file
.file_stem()
.expect("input has a file name")
.into(),
);
decompress(input_file, output_file)?;
}
}
Ok(())
}
fn compress(input: PathBuf, output: PathBuf, level: u8) -> color_eyre::Result<()> {
info!("compressing {input:?} to {output:?}");
let compression_level: ruzstd::encoding::CompressionLevel = match level {
0 => CompressionLevel::Uncompressed,
1 => CompressionLevel::Fastest,
2 => CompressionLevel::Default,
3 => CompressionLevel::Better,
4 => CompressionLevel::Best,
_ => {
unimplemented!("unsupported compression level: {}", level);
}
};
let source_file = File::open(input).wrap_err("failed to open input file")?;
let source_size = source_file.metadata()?.len() as usize;
let buffered_source = BufReader::new(source_file);
let encoder_input = ProgressMonitor::new(buffered_source, source_size);
let output: File = File::create(output).wrap_err("failed to open output file for writing")?;
ruzstd::encoding::compress(encoder_input, &output, compression_level);
let compressed_size = output.metadata()?.len();
let compression_ratio = compressed_size as f64 / source_size as f64 * 100.0;
info!(
"{} ——> {} ({compression_ratio:.2}%)",
fmt_size(source_size as f64),
fmt_size(compressed_size as f64)
);
Ok(())
}
fn decompress(input: PathBuf, output: PathBuf) -> color_eyre::Result<()> {
info!("extracting {input:?} to {output:?}");
let source_file = File::open(input).wrap_err("failed to open input file")?;
let source_size = source_file.metadata()?.len() as usize;
let buffered_source = BufReader::new(source_file);
let decoder_input = ProgressMonitor::new(buffered_source, source_size);
let mut output: File =
File::create(output).wrap_err("failed to open output file for writing")?;
let mut decoder = ruzstd::decoding::StreamingDecoder::new(decoder_input)?;
std::io::copy(&mut decoder, &mut output)?;
info!(
"inflated {} ——> {}",
fmt_size(source_size as f64),
fmt_size(output.metadata()?.len() as f64),
);
Ok(())
}
/// A temporary utility function that appends a file extension
/// to the provided path buf.
///
/// Pending removal when our MSRV reaches 1.91 so we can use
///
/// <https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.add_extension>
fn add_extension<P: AsRef<Path>>(path: &Path, extension: P) -> PathBuf {
let mut output = path.to_path_buf().into_os_string();
output.push(extension.as_ref().as_os_str());
output.into()
}
#[cfg(test)]
mod tests {
use std::path::PathBuf;
use crate::add_extension;
#[test]
fn extension_added() {
let filename = PathBuf::from("README.md");
assert_eq!(
add_extension(&filename, ".zst"),
PathBuf::from("README.md.zst")
);
}
}
================================================
FILE: cli/src/progress.rs
================================================
// ! Utilities for displaying a progress monitor to track compression/decompression/whatever else
//!
//! This implementation relies heavily on the `indicatif` crate, see <https://docs.rs/indicatif>cargo hack check --feature-powerset --exclude-features rustc-dep-of-std
use std::{fmt::Write, io::Read, time::Duration};
use indicatif::{ProgressBar, ProgressDrawTarget, ProgressStyle};
use tracing::info;
/// A generic wrapper around a reader that keeps track of how many bytes have been read
/// from the total.
///
/// This wrapper has a lock on standard out for the lifetime of the monitor
pub struct ProgressMonitor<R: Read> {
/// The total amount that the reader will read
pub total: usize,
/// Amount read so far
pub read: usize,
/// The internal reader
reader: R,
progress_bar: ProgressBar,
}
impl<R: Read> ProgressMonitor<R> {
/// Create a new progress monitor, initialized with zero bytes read
pub fn new(reader: R, size: usize) -> Self {
// https://docs.rs/indicatif/latest/indicatif/index.html#templates
let style = ProgressStyle::with_template(
"{wide_bar} {binary_bytes}/{binary_total_bytes} \n[est. {eta} remaining]",
)
.unwrap();
let progress_bar = ProgressBar::new(size as u64).with_style(style);
// The default is 20hz, this reduces rendering overhead
progress_bar.set_draw_target(ProgressDrawTarget::stderr_with_hz(8));
Self {
reader,
total: size,
read: 0,
progress_bar,
}
}
/// This function is called whenever a new read is made, and is responsible for updating the UI
fn update(&mut self, delta: u64) {
self.progress_bar.inc(delta);
if self.total == self.read && !self.progress_bar.is_finished() {
self.progress_bar.finish_and_clear();
info!(
"processed {} in {} ({}/s avg)",
fmt_size(self.total as f64),
fmt_duration(self.progress_bar.elapsed()),
fmt_size(self.total as f64 / self.progress_bar.elapsed().as_secs_f64())
);
}
}
}
impl<R: Read> Read for ProgressMonitor<R> {
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
// Fall back on the internally stored reader, but filch the number of bytes read
// along the way
let out = self.reader.read(buf)?;
self.read += out;
self.update(out as u64);
Ok(out)
}
}
/// Converts a quantity in bytes to a human readable size, "GiB, MiB, KiB, etc"
pub fn fmt_size(size_in_bytes: f64) -> String {
let units = ["B", "KiB", "MiB", "GiB", "TiB", "PiB"];
let order_of_magnitude = (size_in_bytes).log10() as usize;
// Overflow to the next order of magnitude if there are more than `upper_bound` figures
// before the decimal
let upper_bound = 3;
let unit_index = (order_of_magnitude / upper_bound).clamp(0, units.len() - 1);
let decimal = size_in_bytes / 2_f64.powi((unit_index * 10) as i32);
// Only use a decimal if displaying a unit larger than a byte
if unit_index > 0 {
format!("{:.2}{}", decimal, units[unit_index])
} else {
format!("{:.0}{}", decimal, units[unit_index])
}
}
/// Converts a [`std::time::Duration`] to a human readable format
fn fmt_duration(duration: Duration) -> String {
let as_secs = duration.as_secs_f64();
let as_min = (as_secs / 60.0).floor() as usize;
// When displayed in long form, the value shown
let secs_portion: f64 = as_secs % 60.0;
let min_portion: usize = ((as_secs - secs_portion) as usize / 60) % 60;
let hr_portion: usize = ((as_min - min_portion) / 60) % 60;
let mut output = String::with_capacity(8);
if hr_portion > 0 {
write!(&mut output, "{hr_portion}h ").unwrap();
}
if min_portion > 0 {
write!(&mut output, "{min_portion}m ").unwrap();
}
// Formatting for seconds is fairly manual
// to provide a "useful" level of precision
if as_secs > 60.0 && secs_portion != 0.0 {
// Zero points of precision
write!(&mut output, "{:.0}s", secs_portion.round()).unwrap();
} else if secs_portion > 4.0 {
// One point of precision
write!(&mut output, "{secs_portion:.1}s").unwrap();
} else if secs_portion > 1.0 {
// Two points of precision
write!(&mut output, "{secs_portion:.2}s").unwrap();
} else if secs_portion > 0.0 {
// Display as ms with two units of precision
write!(&mut output, "{:.2}ms", secs_portion * 1000.0).unwrap();
}
output.trim().to_string()
}
#[cfg(test)]
mod tests {
use std::time::Duration;
use super::{fmt_duration, fmt_size};
#[test]
fn human_readable_filesize() {
// Bytes
assert_eq!(&fmt_size(100.0), "100B");
// Kibibytes
assert_eq!(&fmt_size(12.0 * 2.0_f64.powi(10)), "12.00KiB");
// Mebibytes
assert_eq!(&fmt_size(7.0 * 2.0_f64.powi(20)), "7.00MiB");
// Gibibytes
assert_eq!(&fmt_size(123.0 * 2.0_f64.powi(30)), "123.00GiB");
}
#[test]
fn human_readable_duration() {
assert_eq!(&fmt_duration(Duration::from_millis(7)), "7.00ms");
assert_eq!(&fmt_duration(Duration::from_millis(1500)), "1.50s");
assert_eq!(&fmt_duration(Duration::from_secs(30)), "30.0s");
assert_eq!(&fmt_duration(Duration::from_secs(90)), "1m 30s");
assert_eq!(&fmt_duration(Duration::from_secs(5 * 60)), "5m");
assert_eq!(&fmt_duration(Duration::from_secs(3 * 60 * 60)), "3h");
assert_eq!(
&fmt_duration(Duration::from_secs(1 * 60 * 60 + 20 * 60 + 30)),
"1h 20m 30s"
);
}
}
================================================
FILE: optimizations.md
================================================
# Optimizations
This document tracks which optimizations have been done after the initial implementation passed corpus tests and a good amount of fuzzing.
## Introducing more unsafe code:
These optimizations introduced more unsafe code. These should yield significant improvements, or else they are not really worth it.
### Optimizing bitreader with byteorder which uses ptr::copy_nonoverlapping
* Reverse bitreader_reversed::get_bits was identified by linux perf tool using about 36% of the whole time
* Benchmark: decode enwik9
* Before: about 14.7 seconds
* After: about 12.2 seconds with about 25% of the time used for get_bits()
### Optimizing decodebuffer::repeat with ptr::copy_nonoverlapping
* decodebuffer::repeate was identified by linux perf tool using about 28% of the whole time
* Benchmark: decode enwik9
* Before: about 9.9 seconds
* After: about 9.4 seconds
### Use custom ringbuffer in the decodebuffer
The decode buffer must be able to do two things efficiently
* Collect bytes from the front
* Copy bytes from the contents to the end
The stdlibs VecDequeu and Vec can each do one but not the other efficiently. So a custom implementation of a ringbuffer was written.
## Introducing NO additional unsafe code
These are just nice to have
### Even better bitreaders
Studying this material lead to a big improvement in bitreader speed
* https://fgiesen.wordpress.com/2018/02/19/reading-bits-in-far-too-many-ways-part-1/
* https://fgiesen.wordpress.com/2018/02/20/reading-bits-in-far-too-many-ways-part-2/
================================================
FILE: ruzstd/Cargo.toml
================================================
[package]
name = "ruzstd"
version = "0.8.3"
rust-version = "1.87"
authors = ["Moritz Borcherding <moritz.borcherding@web.de>"]
edition = "2018"
license = "MIT"
homepage = "https://github.com/KillingSpark/zstd-rs"
repository = "https://github.com/KillingSpark/zstd-rs"
description = "A decoder for the zstd compression format"
exclude = ["decodecorpus_files/*", "dict_tests/*", "fuzz_decodecorpus/*"]
readme = "Readme.md"
keywords = ["zstd", "zstandard", "decompression"]
categories = ["compression"]
[dependencies]
# Locked behind the `hash` feature flag
twox-hash = { version = "2.0", default-features = false, features = ["xxhash64"], optional = true }
fastrand = {version = "2.3.0", optional = true }
# Internal feature, only used when building as part of libstd, not part of the
# stable interface of this crate.
compiler_builtins = { version = "0.1.2", optional = true }
core = { version = "1.0.0", optional = true, package = "rustc-std-workspace-core" }
alloc = { version = "1.0.0", optional = true, package = "rustc-std-workspace-alloc" }
[dev-dependencies]
criterion = "0.5"
rand = { version = "0.8.5", features = ["small_rng"] }
zstd = "0.13.2"
[features]
default = ["hash", "std"]
dict_builder = ["std", "dep:fastrand"]
hash = ["dep:twox-hash"]
fuzz_exports = []
std = []
# Internal feature, only used when building as part of libstd, not part of the
# stable interface of this crate.
rustc-dep-of-std = ["dep:compiler_builtins", "dep:core", "dep:alloc"]
[[bench]]
name = "decode_all"
harness = false
================================================
FILE: ruzstd/benches/decode_all.rs
================================================
use criterion::{criterion_group, criterion_main, Criterion};
use ruzstd::decoding::FrameDecoder;
fn criterion_benchmark(c: &mut Criterion) {
let mut fr = FrameDecoder::new();
let target_slice = &mut vec![0u8; 1024 * 1024 * 200];
let src = include_bytes!("../decodecorpus_files/z000033.zst");
c.bench_function("decode_all_slice", |b| {
b.iter(|| {
fr.decode_all(src, target_slice).unwrap();
})
});
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);
================================================
FILE: ruzstd/decodecorpus_files/abc.txt
================================================
abcdefghijklmnopqrstuvwxy
================================================
FILE: ruzstd/decodecorpus_files/z000000
================================================
_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+++_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________o++<++_________________________________________________<++++_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+<+++M___________________________________________________+<M<++++++M++o_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________++<+++M<+++M<<++<_______________________________________________________________________________________________________________________________________________________________++MM++<+<^++______________________________________________________________________+<+________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________M___________________________________________________________________________________++++<+<+++M+++<M+<<+<+_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<++++<<+++++M+<++<+++++M<+++M++++<<+MM+M+++__________________________________________________+M<M<<<++++++<_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<M<++M+++<++++++++++++<+++++<M++_______________________________+<+________________________________________________________________________________________________________________________________________________________________________________________________________________________+MM______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+<++_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________++++^<<+++<++^+<+<++++++++<+++^+<<++MM++++<_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________++_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+^++M<_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+M++++++++<<________________________________________________________________________________________________________________________________________________________________________<<+<M^M+<+++<M++<^++<++<+<+++++<+<+++<<<+M+<___________________________________________________________________________________________________________________________________________+^<++++++<++____________________________________+++++^MM+++<<^++<+<+<+++<+<+<M+++<<^M+_____________________________<++++<+<+++<++<+<^+M++++<++<+o^+M+++++o<++<+++++<+MM++<+++M+^+++oM++^<^+o++++_______________________________________________________________________________________________________________________________________________________________________________________________<<+M+<<+<<++M<+<+Mo_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+<+^M+++^+++<<M+^++<+M^++++<+<o^M+++++M<<+M+<<<M+++++++++<++M++_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+M___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+++++_________________________________________________________________________________________________________________________________________________________________+MM+_________________________________________________________________M++++<<+++____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________++MM+++++<+++______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+++________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________++_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<++<+<++<+<<++++++++++_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+++++<+++<+M+<+<++++<+++<^++_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________++M++++M+M+++++<+^+<++++++<M++o+_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+++<<+++<__________________________________________________________________________________________________M+MM<___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________++++++M++M<<+M++M++++++M+<++++++++<+<+<+<++++____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+++M<++M+++^<+++M+<<<+++M________________________________________________________________________________________________________________+<______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+M+<+++++++________________________________________+++<<<++<+___________________________++M+<++++++++++<+<^++<+++<M<++<++<+M<MM+o<+<++++___________________________________________________________________________________________________________________________________________________________________________________________________________________________+<+++++____________________++MM+<MM+++++M____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________++++M++++++<++++++<+M+<<++++++++<<+++<++++^+o______________________________________________________________________________________________________________________________________________________++++++^M++<++++++++<<+<+++M++++___________________________________________________________+<++_______MM+________________________________________+_______________________________________________________________________________+___________________________________________________________________________________________________________________________________________________<_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+^+++<<___________________<++___+___________________+____^+o____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________++______________________________________________________________+_________M___<_____+<_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<_____________________________________________________________________________________________________________________________________________________________________________________________________+________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<____________________________________________________________________________________________________________________________________+___________________________________________________________________________________________________________________________________________________________________________________o______________________________________________________________________________________________________________________________________<______________________________________________________________________________________________________________________________M____________________________________________________________________________________________________________________________________________________________________________________________________________________++<++________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+<+____________________________+___________________________________________________________________________________________________________________+__________________________________________<________________________________++M___________________________________________________________________________________________________________________________________________________________________________________________________________________________________+_________________________________________________________________________________________________________________________<____________+________________________________________________________________________<^+o+++________________________________________________________________________________________________________________________________________________________________________________________________________________________________<_________________________________________________________________________<____________________________________________________________________________________________________________+___________________________________________________________________________+++__________________________________________________________________________+___+++M<+_______________________________________________________________+_________________<_________________________________________________________________+___________________M________________________+_________________________________________________________________________________________________________________________________________<_________________________________________________________________________________________________________________________________+______________________________________________________________________________________________o___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+______________________________________________________________________________________________________________<__________________________________________________________________+___________________________________________________________________________________________________________________________________________________________________________________________________________________________________+__________________________________________________________________________________________________________________________________________________________________________+_______________________________________________________________________________________________________________________________________________________________+_______________________________________+________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+________________________+_______________________________________________________________________________________+_______+++_______________________________________________________________________________________________________+____________________________________________________________________________________________________________________________________________________________________________________+_____________________________________________________+______________________________________+_________________<_______+MM_________________________________________________________________________________________________<+++______________________++M++<_____________________________________________________________________________________________________________M______________________________________________________+<+++______________+___________________________________________________________________________+___________________________________________________________________________________________________^___+_____________+__________________________+<^______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+___________________________________________________+_________________________________________________________________________________________________________________________+___________________________________________________________________________________________________________________________+++________++<+___o______________________________________________________________________________________________+_______________________________________________________________________________________+____________________________<____++++_____________________________________+______+____________________________________________________________________________________________________________________________________________________________________________________________________________+______++M<+___________________________________________________________________<______________________________________________________+____________________________________________<_____________+______________+________________________________________+_____________________________________________________________________________________________<____________________________________+_________________________________________________________++<_______________________________________________________________________+_______________________________________________________________________+______________________________________+___________________________________________________________________________________________________________________________________________________________+_______________________________________________________________________________________________________________________________________+_____+_____+_____________________________________________________+_______________________________________________<____________________________________________________<_______________________________________________________________________++___________________________________________+_____________________________________________________________________________________________+_______________+_______________________+<+<______________+____+____________________________________________________________________+___________________________________________________<___________________________________________________________________+___________________________________________________________________<_______________________________________________________________________________________________M___________________________________________________________________________+________________________________________________________________________________________________+_________________________________________________________________________________________________+___________________________________<___________<______+____________________________________________________________________________________________________________________________________________________________________________________________________________M______+________________________________________________________________________________________________________________________________________________________+____________________________________________________<______________<__________________________________________<________________________________+__________________+______________________<_________+___________________________________________________________+__________________________________________________<______________________________________________________________________+________________________<____________________________________________________________+____________+________________________+__________________________________________________^_________________________________________________________________________+_____________________________________________________________+______________+____________________________+_________________________________________________________________________________________+___________________________________________________________________________________________________________________________+_______________+______________________________________+_________________________________________________________________________________________+______________________________<____+_________+___+_______________________________________________________________________________________________________________<___+__________________________________________________^__________________________________________________+___________________________________________________________________________________________________________________________________+___________<+___________<____________________________________M____<_________________________+_________________________________________________________________________________________________+____________________________________________________+__________________________________________________+___<____________________________________^________________^________________________<_________________________________________+_____________________________________________________+__________________+_______________________________________________________________________________________________________________________________+_______________________________________________________<___________________________________________+____________+_____________________________++___________________M_______________________________________M________________+___________________________________________+____________+_____________________+___________________+___________<____________________<+<M^_________________________________________________________________________+______________________++<++________________+++_________________________+___________^________________________+__________________________________+_______________________________________________________________________________________________________________________________________________<_______+___+___________________________+_________________________________________+_______________^____________________________________+______+____________+_______________+_______+_______________________+______________________________________________M___________________++++________+______________+_______________________________________________________________________________________________M__________________M______________+<+++<__________________________________________________________________________________________________++^M_______________+_________________________________________________________________________________________________________<________________________________^________________________________M_______________________________________________________________________________________+__________+________________________<_______________________+___________________________________________________________________________________________________________________________+______++____________________________________+_____________________________________+_____________________________+_________+_______________________________________________________________________________________________________+____________+___________<__________________+______________________+________________<____________<_________________________________<______^______+_________________________________________________+_________________________+<___<_____o___<_____________<___________+_______+__________<______o___________________________________________________________________+____________________________________________________________________________<_________________________________<________________________________________________________________________<_____________________________________________________________________________________________+_________________________________________+_____________________________________<_______________________________+_________+____________________________________+_________________________+_________+____________________________________________________________________________________________________<_______________________________________+_______________________________________________________________________________M_____________+________M________________+___________+_______________________________________<_________________________<________________________________________++<___________^______________________________+___________+__________+_________M____________+____________________________+_____________________________+____________________________+___________+____________________________<___________<+______+______________________+____<+_________________________+_________________________+______M+++++M+________________________________+________________________________+_______________________________+___________<_______+____________________+_________________________________<___________________<_____________________________________+___________________________________<<++<<<____________________+___________________________________________________________________________________________++<+<___________+________________________________________________<__________+______+___________<______________________+_____________________+______M______+_______+____+_______________________________________________+_____<_____________________________++____________________<_____________________________________+___<_________+______________________________+________________________________<_______________________<____________________________________+_____________________________+_________++____________+__________<M+___________________________________<_________M_____________________+___________o________+________________________________________________________+^______+___________________+___+___________________________________________+_______+______________+_________________+_____________________________________________________________________________________________^_____________+___________________________M_________+<__________________________________+______________________++M+_________<_____________________________+____________________++<<______________________________________+_________________________________+_______________________________M_________________________+__________M____________________________+________________________________________________________________+<++_______________+_____________________________+________________________________________________________+________________________________+_____________________+________________+____________________________+________________________________+____M____________________________________________________________+________________________________________<_______________M________________________________+_______+___________________+____________+____________________________^_______________________+_______<__________+________________________<___________________________________+________________+___<____+_____<___<_______________+____________+++___________________________________________________+____________+++++_________________+_______<________++^_________<____________________________<______+___________________________________+______________________________________+______________<________<M______________________o___________________________________________________________________+___<_______+__+____+_______________+_________________+_______+___________________________+__________________________+________________________________________<________________________________+<___+___________________<________________+______+______________<___M____________+______________________________________________________+++_____________________________________________________+__________________________________+_________+__________________________+____________________________+__________++M______________+_______________________+______________<++__________________+_____+__________<___o________________________++__________________<____M________________________________+<+________________________________________+___________________<________________<_______________+___________________________+<^_______________<__________________________________________________+__________________________<__________________+___________________+_____________________<_____+____M___+_________+_________________________________+_____<____+________+_____________+<_____+_________________+<+<_________________<___________M____<_______+_________+______________________________________<___________________________________________________+_______________+__________+______<______o_______+________________________+_______________________+_+____________________+___________________<_______<_______+_________+_________________________________________________________________________+_____________<___+___________________________________+_________+____<_____+____<_________________<___<____________________+_____________________________________<____________________+____<++________________________+___+__________________+_______+___+_____________________________________<____________+_______________________+____________________________________________________________________+___________________________________________^__________+________________________________________________++^____+__________________________________<+______________+____________<______<_________________+___M_________________________________<_____________+___________________+___________________+_______________________+___________________________o______________+____________+___________________________++_____________________________+_______________________<______________________+______+________________+_____________________________________+_________________+_________________+____M_______________+_______++______________________M_____+_____________+__________________<___<__________________________________o__________<____+_______+______+_________________________________________________<____________________________________________<____________+___________________________+______++__<_______________M___+____________<____________+_____________________________M____________________<__________________________________________________________<____________<__________________<__________+_______________+___________________+________+_____+___+___________________________________________________________________o___<____M_____________________+___^__________________________^______________________+___________________+_________o_________^________+____<__________+______++______________<_____+_______<____________________<___________________________________________________^+<+_________<____________+___M________________________<___________________M____________________________+____<______________+________________<____________________<____+___________________________<___________<<<+_____________<________<____+_______M______________________________________________+_____________________________________+____++___+_______________________________________________________M________________________+___+<_________+^_______+______+_______________M______M_______________________<_______+____+___________________M____+________+__________________________++___________+_________+________________________++____+M________<___________________________________________________+_______________________________M_____________________________+<___+_________+__________<_________________M_____<_________________+_____________+__________<___+____<_____________+___________+_____+____________<___________^M___+________________+______+_____________<_________________________________++____________________<___________<_______________+_____+_______________<_________<___________+____________________M____________<____+___________+________________+<__________+___________+_____________+____<____+____________+_______+____________o___+_____+++______M_____________+____________+____________^++<_+____o___<_________++____+________++_____o_____+___++_______________<_________<_______+++___<_______________<________+________<___^+_______+_____________++____________<____________<_________+__________________________________+_______^______________________+M___________+_______________________+___________+______++_____________________________+____________+_____________+________+___M_____________+____________<_____+________o___M+____________________+_______<______++_____+_______________<_________+___________+_________________++________+_____++______+________________________+______<_______++_________________+_______________M____________________+<___+_________+______________+___+++<_____M_______+________+______________________+___+_________+M____________+____<____+<_____________++_______+________________________+___<<___<____+<____________++___+<_______+_______+++++M++<++<M+++_______________++++M<+<+<<<^++++++++<M<+<+<M++__<________________<____<++++<M<++M^+<+<+M<+<_______+<+++______________________________________+<<_______++++<<M+++<++++<<<<oM+M+++++____________________+++++<+<++++++<+<++____+<<<+<<++++<+<<+<+++<+<+<^<<++<+++<+<M+^+++M++<<+<+<+<++++<+M<________________________________+_______++^^+______++++MM++<^<+++^M^+M+M^+<+^+MM_____<+<<++M<+<+<++__<_________++M++<M++++<______+_______<+<+++<^<M+M+M+_____________________M^+++M<M++M______+++<+M<+<+++M<+<++^<<^<+M+MM++<+M+++M<++++o+<<M<+<+<+<o<+++M+<+<<<<<___++<<+<+M+M+M++<<+M<++++<++______+<+M<Mo<^<+<MM______+<<++^<<+<<++<++++<++<+++<++_________+M++<++oM<+<+o<++<+++M+++<<+^M++<<+++M<++++<^+++<+<++<+<++<<<+++++++_______M+<<<+<^+<<M++++___+++^<o<++<+<<++<^++<+++<<++++++<+M+++++M+<+++<++++M<M<++<+M++++<+++_______+++++<+M______+<M<<<+<+++<++++M<+__________<M+___+<+<+<+M++++++++<+<++<<+<<MM+<+++<++++MM+<++<<M+M++<+^+++++<o++<++++<+++<+<+++<<+++<<__+__+<+<+^++____M+<M+++<+++<++++o<<+M+<<+M++M+++++___________++++M++++++oM++<+<+<<++M++++<++M+<+<+++MM<++<++<+++++M<++<+^<<+<<++++^++<<<++<<<++<M<++++<++++M++++++<<+M++<+__________________++_____________________________________________________________________________________________________+____+_________________________________________________________________________+___o__________________M_____________________________+_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<++_____________________________________________________________________________________M_________________________________________________________________________________________________________________________________________________________o_________________________+________+________________________________________________________________________________________________________________________________________________<+M______________________________________________________________________________________________________________________+<M+______________+++<_________________+______________________________________________^++___________________________________________________________________________________________^_____________________________________________+++M+<<+____________________________________________________________________+MM___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+__+_______________________________________________________+_________________________________++<_____________________________________________________________________________________________________________________________________________+^____________________________________________________________________________________________________<+<+<+_________________________________+______________________________________________________________________________________________________________^++_______________________________________________+++_____________________<++++_______________________________________________________________________________________________________+_______________________________________________________________________________________________________________________________________________________________________________________________________++___+_______________________________+__________________________________<+<+__________________<_____________________________________________________________________________________________________________________________________________________+________________________________________________________________________________________________________________________________________________________________________________________________________+______________________________________________________________________M_________________________________++_______________++___________________________________________________________________________________+++<++<_________________________________________________________________________________________________________________________________+__________________________________________________________________________________________________________________________________M+__________________________<______________________________________________________<<+M________________<<<+_____________________________________________++__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+_____+<_____________________________________________________________________________________________________________________________________________++<+<^+_____________________________+^M++_________________<_____________________________________________________________________________________________________________________________________________________+<___________________________________________________++_________________________________________________________________________________________________________________________________________________________________________________________________<__________________________________<<<+_________________________________________________________________________________________________________________________________+___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________M___________M<+<________________________M++++__________________________________________________________________________________________________________________________________________________________________________________<<++___________________________________________________________________+______________________________________________________________________________________________________________________________________+______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+<+<_______++_______________________________________________________________________________________________________________________________<<+___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<____________________+<^<+++_________________________________________________________________________________________<_____________________________________________________________________+++M<+________________________________________________o________________________________________________________________________________________________________________________________________________________________________________+__________________________________+____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+_______+______________________________________________________________________________________________________________++____________________________________________________________________________________________________________________________________________________+___________________________________________________________________________^++_______________________________________________________________________________________++<+++<_____________________________________________________________________________+______________________++<+__________________________________________________________________________________________________________________________________________<^+________________________________________________________________________________________________________________________________________________________________++________________M+<++____________________+_________________________________________________________________________________<<+____<<+++_________________________________________________________________________________________________________________________________________________________________________________________o______________________________+___________________________________________________________________________________________+___________________________+___________________________________________________________________________________________________M_____________________________________________++++<++++_________________________________________________________________________________________________________________________________<+___________________________<______________________________________________________________________________________________________+___________<___________________________________________________________________________________________________________________________________++M<____________________________________________________________________________________________________________________________+_____________________________________________________+M++_______________________________________<____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+<++____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<___________________________________________________________________________________________________________________________________________________________________________________________________________________________________+++<+M+____________________________________________________+++++_______________________________________________________________________________________________________________+________________________________<____+_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<______________________M_____<++_____M++______+<+________________________________________________________________________________________________________________+++++_____+__________________________+_______________________________________________________________________________________________________________+________________________________________________________________________________________________________________________________________________________________________________++++____________________________________<_____________________________________________________________________________________________________________________^_________________________________________________________________________________________________________________________________________________________________________________+++<__________++_____________________________________________________________________________________________________________________________________________________________________o__________________________________________________M___________MM__________________________________________________________________________________________________________________________________________________________________________<_______________________________________________________________________________________________________________________________________________+__________________________________________________________________________________________<__________________________________________________________________________________________________+++_________________________________________________________________________________________________________________++__<_____________________________M___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________++++_+_____________________________________________________________________________________________________________________<_______________________________________________________________________+<+^+_________+++__________________________________________________________________________________________________________________________________________________________________+____________________________________________________________________________________________________________________________________________________________________________________________+___________________________________________________________________________+_________________________________________________________________++++_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________Mo_______+__________________________________________________________________________________M____________________________________________________<++___^+M+______________________________________________M______________________________________________________________________________________________________________________________________________________________________________________________________________________________+^<<+______________________________________________________________________<++<<__________________________________________________________________________________+++^<<+____________________________________________________________________________++M+____________________+<___________+___________________________________________________________________++______________________________+__+__________<_____________M__________________________________________________________________________________________________________________________________________________________________________<+++____________________________________________________________________________<_________________________+<+_________________________________________________________________________________________________+____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+<++________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+_______________________+_______________________________________________________________________________________________________^+___________________+++<___________________________________________________________________________________________________________________________________________________+___________________________________________________________________________________________________________________________________________________________________________________________+________________+_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+____________________________________________________________________________________+_____________________________________________________+_____<__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+++________________________________________________________________________________________________________________________________________________________________________+____________________________<____+____________________________________________________________________________________________________________________________________M____________________________________________________________________________+__________________________+++<<++____________________________________________+________________________________+_____+<+<_____________________________________________________________________________________________________________________________________________+____________________________________________________+____________________________________________________________________________________________________________+M++____________M________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<____________________________________________________________________________________________________________________________________________________________________________________________<______________________<^+__________________<_______________________+________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________^_________________________________________________++<__________________________________________________________________________________________________________________________________________________________________________+_______________________________________________________________________________________________________________________________________________________________+_____________________________________________________________________________________________________________________________________++________________________________________+______________________________________________________________________________________________________________________________________________________M+<________++<+_______________________________________________________________________________________________________________+_________________<________________________________________________________________________<+<<+___________________+<____________________________<+^_____________________________________________________________________________________________________________________________________________________________________________________+_____________________________________________________________________+______________________________________________________________________________________________________________________+_____________________________________________________________________________________________+<++______________+<o++_________________+M____________________________________________________________________________________________________________________________________________________________________+_______________________________________________________________________________________________________++<__________________+_+++______________________________________^____________________________________________________________+_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+++____________________________<________+______________________________________________________________________________+_________________________________________________________M<+__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+____________________________________________________+__________________________________________________________________________________________________________________________________________________________________________________________________++^_____________________________________________________________________________________________________________________________________________________________________________________________________________________<______________________________________________________________________________________<______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+_________________________________________++__M__________________________________________________________________________________________________+<______________+_________M______________________________________________________________+++<___________________________________________________________________________________________________________________________________________________________________________________________+____________________________________________________________________________________________________________+++____________________________________________________+_____+________________+_______++____________+________________________________++^<^____++______________________________________________________+_____________________________________+++<<<_______________________________________________________________________++++___+++<________________________________________________________________________________________________________________________________________________________________________________________________________________________________M_______________________________________________________________________________________________________________________________________________________________+______________________________________________________________________________+_________________________________+___________________________<M<+____________________<____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+_____________________________________________________________________________________________________________________________+__________+M<+____________+________________________________________________________________________________________________________________+________________________________________________________________________<+++__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________^MM+______________________________________________________________________________________________________________________________________________________________________________________________________________________________________+_________________________________________________________________________________________________________________+____+____________________________________________________________________________________________________+__________________________________________________________________________________________+<<+___________________________________________________________________________________________________________________________________________________________+___________________________++_____________________+____________+_______________________________________________________+_______________________<_________________________________________________________________________++<____________________________________________________________________________________________________________________________________________________________________________________________o________________________________________________+++___________________________________________________<___++______________________________________________________________________________________________________________________________________________________________________________<_______________________+___________________________<_______________________________________________________________________________________________________________________<__________+<_______________________+<____________________________________<^<<_____________+_____________________<___<___________________________________________________________________________________________________________+M<_________________________________________________+__________________________________________M^_____________________________________________________________________________________+<____________________________________________++<+______________________________________________________________________________________________________________<M<+_______________________+__________________________________________________________________________________________________________________________________________________________MM+_____________________________________________________________<++++____++<___________________________________________________________________________________________________________________________________________________________________<^+________________oM<+_________________________________________________________________________________<<M++__________________________________________________________________________________________________________________________________+__+<+____________________________M<_+___+++M______________________+____________________________________+__________________________________________________________<++^<<______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<____+_________________________________________________________________________________++++<+__________________________________________M++_________________________________________________________________________________________________________________________________+_____________________________________________________________________________________________________+____________________________________________________________________________________________________________________________________________________________________________________________+___________________________________________________________________________________________________________________________________________________________________________________________________________________+________________________________________________________________________________________________+__________________________________________________________________________________________++__________________+_______________________________________________________________________________________________________________________________________________M__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<_____________________________________________________<M<+______________________________+_____________________________________________________________________________+______________________+<<+__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+__________+<+__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+++_____________________________________________________________________________________________________________________________________++++<_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+++<+______________________________________________________________________++<__+__________________________________________________________+++++_________________________________________________________________________________________________________________________________________________________________________________________________________________________________+___________________________________M+_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________+________________________________________________________________________<______________________________________________________________________________________________________________________________^_____M___________________________________________________________++_________________________________________________________________________________________________________________________________________________________________________________________________________________________+_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<+<++M+______________________________________________________________________++___________+_________________________________________________________+______________++______________________________________________________________________<++M_______+_______+________________________+______________________________M++_______________________________________________________________________________________________________________________________________________________________________________________________<___________________________________________________+______________________________++____________________________________________________________________________________________________<______________+_____+++_________________________________________________+__________________________________________________________________________________________________________________________________+__________________________________________________________________________________________________________________________________________________________________________________________++________________________________________________________________________________+___________++__________________________________________________________________________________<++___________________________________________________________________________________________________________________________++M______________________+______________________________________________________________________________________________________________________________________________<______++__<__________________________________________________________________________________________________________________++++__________________________________________________________________________________________________________________+___________________________________________________________<______________________________+_______________________________________________________________________________________+<______<+M_______________________________________________++M<___<<<^______________________________________________________________________________________________________________________________________________++_____________+<________________________________________________________________________________________________________________________________________________________________________________________________________________++M_____________________________________________________________________________________________________________________________________________<___________________________________________________________________________+___________________________________________________________________<+++__________________++__________________________________+________________________________________________________________________________________________________________________<____________________________________________________________________________________+++___________________________________________________________________________________________________________________________+___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+______________________________+________________________________________________________<___________________________________________________________________________________________________________________________________________________+___________________________________________<<+_________________________+___________________________________________________________________________________________________________<___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________^+_______________________________________________________________________________________________________________<+++__________________<<+________________________________________________________________________________________________________+_______________________________________________________________________________________________________________________________________________________________________________________<______________________________________________________________________________________________________________________________________________________________________________+___________________________________________________________________<________________________+______________________________________________________________________________________________________________________________________<_____________________________+_________M_____________________________________________________________________________________________________________________________________________________^++++______________________________________________________________________________________________________________________________________________________________<_______________+++____M____M+___________________________________________________________________________________________________+_________________________________________________________________________________________________________________________________________________+<________________________________________________________________________________________________________________________________________^+________________________________________________________________________+_________________________<__+_________________________________________________________________________++<________________________________________________________________________________________________________+++________________________________________________________________________+<+________________^___________________________________________________+________________________________________________________________<M_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________++<___________________+__+<______________________+_____________________________________________________________________+__________________+___________________________________________________________________________+__________________________________________________________________________________________________+______________________________________________________________________________________________________________________________________________________________________________+_______________________________________________________________+<______________________________________________________________________________________________________________________________________________________________+_____________________________________________________________________________________________________________________________<___________________________________________________________________________________________________+________________________________________________________________________________________________________________________<______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________++++______________________________________________________________________________________________________________________________________________________________________________________________________________________________+<<+________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+______________________________________+_____________+_____________________________________________________________________________________________________________________________________________________________________________________________________________________<___________________________________________________________________________________________________________________+++<_________________________________________________________________<__________________________________________________________M+<+________________________________________________M+<+<<<<<_____________________________________________<_________________________________________________________________________________________________________++______________________________________________^______________________________<M+______________________<_________________________________________________________________________________+_________________________________________________________________________________________________________________________________________________________________________________+++________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<<________________________________________________+<____________________________________________________________________________+++____________________________________________________________________________________________________________<_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+++++<o++<+_____________<<++______^_________________________________________________________________________________________<_______________________________________________________________________________________________________________________________________________________________+++_____M++___________++++<____________<<+<++____________________________________+<M___________________________________________________________________^++____+__________________________________________________________++<+<____M____________________o_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<++_______________________________________________________________________________________________________________________________________________________________________________________++<<________________________________________________+<________________<_____+____<____________________________________________________________________________________________________________________<____________________________<___________________________________________________________________________________________________________________________________________________________________________________________________<<____________________________________________________________________________________________________________________________<++++^______________________________________________________________________________________________________________________________________________________________________________________________________o________________________________________________________+<_____++<+<_________________________________+____+___________________________________________+_______++________________________________________________________M____________+_________________________________________<________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________M+<_____________________________________________________________________________________M_______+_____________________________________________________+___+_______________________________________++<________________________________________________+____________________________M_______________________________________________________________________________________+_________________________________________________________________________________________+_________________________+__________<+<_______________________<______________________________________________________<____________________________________________________________________________________________________________________________________________<_____________________________________________________________________+<+<________+++_____<__________________+______________________________________________________________________________________________________________________+______________________________________________________________________________________________________________________________________________+MM_________________________________________________________________________________+________________________________________________________________M__________________________________________________________+++_________________________________________________________________________+++<___<__________________________________________<_________________________________________________________+__<_________+___________________________________________________________________________________________________________+____________________________________+++_________________________________________________________________________________________________________________________________________________________<+<o^__________________________________________________________________________________+M+<<+___________________________________________________________________________+__________________________________________________________________________________________________________________+______________________________________________________________________<_____________________________________________________________________M___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________<___________________________++__________________________________________+___________________________________________+___________________________________________________________<<+_________________________________________________________________________________________________________________________________________________<____________________________________________________________<_________________________________________________________________________________________________________________________________________________+____________<_________________________________++<^_____________+<++___________________________________________________<_______+______________________________________+________________________________________________________________________________+________________________________________________________________________________________________________________________________________________________________________________M_________________________________________________________________________________________________________________+M<____<_______________+_________<+++___________________________________________________________________________MM+<______M___________________________________+__________________________<_____________+______________++__<_____________________________________________________________________________________M_____________________________________________________________________________________________________________________++_____________________________________________________________+______________________________________________________________+_____________________________________________________________________________________________________________+_______________________+_____+_________________________________________________________________________+<M^________________________________________________________________________________________________________________________________________________________________________+_______________________________<<++________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+__________________________________<_____________________________________________________________________________________+<++_____________________+______________________++___________+_____________________________________________+____M+<+__________+<_____________________________+M______________________________________<___________________________________________________________________________________________________________++___________________________________________________________________________________________________________________+__________________________________________________________________<++_____________________________<^+___________________________________________________<+________________________++_________+___________________________________________________________++<_________________________________________________________________M<_______________________________________________________________________________________<______+____________________________________________________________________________________+_________________________+++_______________________________________________________________________________________________________________________________________________________________________+______________________________________M__________________________________________________________________________________________________________________________________________________________________________________++M<________________________________________________________________________________________________________________________________________________________+_______________________________________________________________________________________________________________________+________+_____________________________________+______________________________________________________________________________________________________________________________________________________________________________________________________________++<_____+________________________________________________________________________________________________________<____________________________<__________________________________________________________________________________________M+++____________________________________________________________________________________________________________________________________________________________________________________________________________________+____________________________________________________________________________________________<++++_________________________________________________________________________________________________+___________________________________+________________________________________________________________________________________________________________________________________________________________+____________________________________+_________+<++M++________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________+__________________________________________________________________M++____________________________________________________________
gitextract_f9ilxv7s/
├── .github/
│ └── workflows/
│ └── ci.yml
├── .gitignore
├── Cargo.toml
├── Changelog.md
├── LICENSE
├── Readme.md
├── cli/
│ ├── Cargo.toml
│ └── src/
│ ├── main.rs
│ └── progress.rs
├── optimizations.md
└── ruzstd/
├── Cargo.toml
├── benches/
│ └── decode_all.rs
├── decodecorpus_files/
│ ├── abc.txt
│ ├── abc.txt.zst
│ ├── z000000
│ ├── z000000.zst
│ ├── z000001
│ ├── z000001.zst
│ ├── z000002
│ ├── z000002.zst
│ ├── z000003
│ ├── z000003.zst
│ ├── z000004
│ ├── z000004.zst
│ ├── z000005
│ ├── z000005.zst
│ ├── z000006
│ ├── z000006.zst
│ ├── z000007
│ ├── z000007.zst
│ ├── z000008
│ ├── z000008.zst
│ ├── z000009
│ ├── z000009.zst
│ ├── z000010
│ ├── z000010.zst
│ ├── z000011
│ ├── z000011.zst
│ ├── z000012
│ ├── z000012.zst
│ ├── z000013
│ ├── z000013.zst
│ ├── z000014
│ ├── z000014.zst
│ ├── z000015
│ ├── z000015.zst
│ ├── z000016
│ ├── z000016.zst
│ ├── z000017
│ ├── z000017.zst
│ ├── z000018
│ ├── z000018.zst
│ ├── z000019
│ ├── z000019.zst
│ ├── z000020
│ ├── z000020.zst
│ ├── z000021
│ ├── z000021.zst
│ ├── z000022
│ ├── z000022.zst
│ ├── z000023
│ ├── z000023.zst
│ ├── z000024
│ ├── z000024.zst
│ ├── z000025
│ ├── z000025.zst
│ ├── z000026
│ ├── z000026.zst
│ ├── z000027
│ ├── z000027.zst
│ ├── z000028
│ ├── z000028.zst
│ ├── z000029
│ ├── z000029.zst
│ ├── z000030
│ ├── z000030.zst
│ ├── z000031
│ ├── z000031.zst
│ ├── z000032
│ ├── z000032.zst
│ ├── z000033
│ ├── z000033.zst
│ ├── z000034
│ ├── z000034.zst
│ ├── z000035
│ ├── z000035.zst
│ ├── z000036
│ ├── z000036.zst
│ ├── z000037
│ ├── z000037.zst
│ ├── z000038
│ ├── z000038.zst
│ ├── z000039
│ ├── z000039.zst
│ ├── z000040
│ ├── z000040.zst
│ ├── z000041
│ ├── z000041.zst
│ ├── z000042
│ ├── z000042.zst
│ ├── z000043
│ ├── z000043.zst
│ ├── z000044
│ ├── z000044.zst
│ ├── z000045
│ ├── z000045.zst
│ ├── z000046
│ ├── z000046.zst
│ ├── z000047
│ ├── z000047.zst
│ ├── z000048
│ ├── z000048.zst
│ ├── z000049
│ ├── z000049.zst
│ ├── z000050
│ ├── z000050.zst
│ ├── z000051
│ ├── z000051.zst
│ ├── z000052
│ ├── z000052.zst
│ ├── z000053
│ ├── z000053.zst
│ ├── z000054
│ ├── z000054.zst
│ ├── z000055
│ ├── z000055.zst
│ ├── z000056
│ ├── z000056.zst
│ ├── z000057
│ ├── z000057.zst
│ ├── z000058
│ ├── z000058.zst
│ ├── z000059
│ ├── z000059.zst
│ ├── z000060
│ ├── z000060.zst
│ ├── z000061
│ ├── z000061.zst
│ ├── z000062
│ ├── z000062.zst
│ ├── z000063
│ ├── z000063.zst
│ ├── z000064
│ ├── z000064.zst
│ ├── z000065
│ ├── z000065.zst
│ ├── z000066
│ ├── z000066.zst
│ ├── z000067
│ ├── z000067.zst
│ ├── z000068
│ ├── z000068.zst
│ ├── z000069
│ ├── z000069.zst
│ ├── z000070
│ ├── z000070.zst
│ ├── z000071
│ ├── z000071.zst
│ ├── z000072
│ ├── z000072.zst
│ ├── z000073
│ ├── z000073.zst
│ ├── z000074
│ ├── z000074.zst
│ ├── z000075
│ ├── z000075.zst
│ ├── z000076
│ ├── z000076.zst
│ ├── z000077
│ ├── z000077.zst
│ ├── z000078
│ ├── z000078.zst
│ ├── z000079
│ ├── z000079.zst
│ ├── z000080
│ ├── z000080.zst
│ ├── z000081
│ ├── z000081.zst
│ ├── z000082
│ ├── z000082.zst
│ ├── z000083
│ ├── z000083.zst
│ ├── z000084
│ ├── z000084.zst
│ ├── z000085
│ ├── z000085.zst
│ ├── z000086
│ ├── z000086.zst
│ ├── z000087
│ ├── z000087.zst
│ ├── z000088
│ ├── z000088.zst
│ ├── z000089
│ ├── z000089.zst
│ ├── z000090
│ ├── z000090.zst
│ ├── z000091
│ ├── z000091.zst
│ ├── z000092
│ ├── z000092.zst
│ ├── z000093
│ ├── z000093.zst
│ ├── z000094
│ ├── z000094.zst
│ ├── z000095
│ ├── z000095.zst
│ ├── z000096
│ ├── z000096.zst
│ ├── z000097
│ ├── z000097.zst
│ ├── z000098
│ ├── z000098.zst
│ ├── z000099
│ └── z000099.zst
├── dict_tests/
│ ├── dictionary
│ └── files/
│ ├── ModemManager.service
│ ├── ModemManager.service.zst
│ ├── NetworkManager-dispatcher.service
│ ├── NetworkManager-dispatcher.service.zst
│ ├── NetworkManager-wait-online.service
│ ├── NetworkManager-wait-online.service.zst
│ ├── NetworkManager.service
│ ├── NetworkManager.service.zst
│ ├── auditd.service
│ ├── auditd.service.zst
│ ├── autovt@.service
│ ├── autovt@.service.zst
│ ├── avahi-daemon.service
│ ├── avahi-daemon.service.zst
│ ├── avahi-dnsconfd.service
│ ├── avahi-dnsconfd.service.zst
│ ├── blk-availability.service
│ ├── blk-availability.service.zst
│ ├── btrfs-scrub@.service
│ ├── btrfs-scrub@.service.zst
│ ├── canberra-system-bootup.service
│ ├── canberra-system-bootup.service.zst
│ ├── canberra-system-shutdown-reboot.service
│ ├── canberra-system-shutdown-reboot.service.zst
│ ├── canberra-system-shutdown.service
│ ├── canberra-system-shutdown.service.zst
│ ├── clean-mount-point@.service
│ ├── clean-mount-point@.service.zst
│ ├── colord.service
│ ├── colord.service.zst
│ ├── console-getty.service
│ ├── console-getty.service.zst
│ ├── container-getty@.service
│ ├── container-getty@.service.zst
│ ├── cpupower.service
│ ├── cpupower.service.zst
│ ├── dbus-org.freedesktop.hostname1.service
│ ├── dbus-org.freedesktop.hostname1.service.zst
│ ├── dbus-org.freedesktop.import1.service
│ ├── dbus-org.freedesktop.import1.service.zst
│ ├── dbus-org.freedesktop.locale1.service
│ ├── dbus-org.freedesktop.locale1.service.zst
│ ├── dbus-org.freedesktop.login1.service
│ ├── dbus-org.freedesktop.login1.service.zst
│ ├── dbus-org.freedesktop.machine1.service
│ ├── dbus-org.freedesktop.machine1.service.zst
│ ├── dbus-org.freedesktop.portable1.service
│ ├── dbus-org.freedesktop.portable1.service.zst
│ ├── dbus-org.freedesktop.timedate1.service
│ ├── dbus-org.freedesktop.timedate1.service.zst
│ ├── dbus.service
│ ├── dbus.service.zst
│ ├── debug-shell.service
│ ├── debug-shell.service.zst
│ ├── dhcpcd.service
│ ├── dhcpcd.service.zst
│ ├── dhcpcd@.service
│ ├── dhcpcd@.service.zst
│ ├── dm-event.service
│ ├── dm-event.service.zst
│ ├── dmraid.service
│ ├── dmraid.service.zst
│ ├── dnsmasq.service
│ ├── dnsmasq.service.zst
│ ├── e2scrub@.service
│ ├── e2scrub@.service.zst
│ ├── e2scrub_all.service
│ ├── e2scrub_all.service.zst
│ ├── e2scrub_fail@.service
│ ├── e2scrub_fail@.service.zst
│ ├── e2scrub_reap.service
│ ├── e2scrub_reap.service.zst
│ ├── ebtables.service
│ ├── ebtables.service.zst
│ ├── emergency.service
│ ├── emergency.service.zst
│ ├── fancontrol.service
│ ├── fancontrol.service.zst
│ ├── firewalld.service
│ ├── firewalld.service.zst
│ ├── fstrim.service
│ ├── fstrim.service.zst
│ ├── ftpd.service
│ ├── ftpd.service.zst
│ ├── getty@.service
│ ├── getty@.service.zst
│ ├── git-daemon@.service
│ ├── git-daemon@.service.zst
│ ├── gluster-ta-volume.service
│ ├── gluster-ta-volume.service.zst
│ ├── glusterd.service
│ ├── glusterd.service.zst
│ ├── glustereventsd.service
│ ├── glustereventsd.service.zst
│ ├── glusterfssharedstorage.service
│ ├── glusterfssharedstorage.service.zst
│ ├── gpm.service
│ ├── gpm.service.zst
│ ├── healthd.service
│ ├── healthd.service.zst
│ ├── hv_fcopy_daemon.service
│ ├── hv_fcopy_daemon.service.zst
│ ├── hv_kvp_daemon.service
│ ├── hv_kvp_daemon.service.zst
│ ├── hv_vss_daemon.service
│ ├── hv_vss_daemon.service.zst
│ ├── initrd-cleanup.service
│ ├── initrd-cleanup.service.zst
│ ├── initrd-parse-etc.service
│ ├── initrd-parse-etc.service.zst
│ ├── initrd-switch-root.service
│ ├── initrd-switch-root.service.zst
│ ├── initrd-udevadm-cleanup-db.service
│ ├── initrd-udevadm-cleanup-db.service.zst
│ ├── ip6tables.service
│ ├── ip6tables.service.zst
│ ├── iptables.service
│ ├── iptables.service.zst
│ ├── kmod-static-nodes.service
│ ├── kmod-static-nodes.service.zst
│ ├── krb5-kadmind.service
│ ├── krb5-kadmind.service.zst
│ ├── krb5-kdc.service
│ ├── krb5-kdc.service.zst
│ ├── krb5-kpropd.service
│ ├── krb5-kpropd.service.zst
│ ├── krb5-kpropd@.service
│ ├── krb5-kpropd@.service.zst
│ ├── ldconfig.service
│ ├── ldconfig.service.zst
│ ├── libvirt-guests.service
│ ├── libvirt-guests.service.zst
│ ├── libvirtd.service
│ ├── libvirtd.service.zst
│ ├── lm_sensors.service
│ ├── lm_sensors.service.zst
│ ├── logrotate.service
│ ├── logrotate.service.zst
│ ├── lvm2-lvmetad.service
│ ├── lvm2-lvmetad.service.zst
│ ├── lvm2-lvmpolld.service
│ ├── lvm2-lvmpolld.service.zst
│ ├── lvm2-monitor.service
│ ├── lvm2-monitor.service.zst
│ ├── lvm2-pvscan@.service
│ ├── lvm2-pvscan@.service.zst
│ ├── man-db.service
│ ├── man-db.service.zst
│ ├── mdadm-grow-continue@.service
│ ├── mdadm-grow-continue@.service.zst
│ ├── mdadm-last-resort@.service
│ ├── mdadm-last-resort@.service.zst
│ ├── mdmon@.service
│ ├── mdmon@.service.zst
│ ├── mdmonitor.service
│ ├── mdmonitor.service.zst
│ ├── mkinitcpio-generate-shutdown-ramfs.service
│ ├── mkinitcpio-generate-shutdown-ramfs.service.zst
│ ├── ndctl-monitor.service
│ ├── ndctl-monitor.service.zst
│ ├── netcf-transaction.service
│ ├── netcf-transaction.service.zst
│ ├── netctl-auto@.service
│ ├── netctl-auto@.service.zst
│ ├── netctl-ifplugd@.service
│ ├── netctl-ifplugd@.service.zst
│ ├── netctl-sleep.service
│ ├── netctl-sleep.service.zst
│ ├── netctl-wait-online.service
│ ├── netctl-wait-online.service.zst
│ ├── netctl.service
│ ├── netctl.service.zst
│ ├── netctl@.service
│ ├── netctl@.service.zst
│ ├── nftables.service
│ ├── nftables.service.zst
│ ├── ninfod.service
│ ├── ninfod.service.zst
│ ├── nscd.service
│ ├── nscd.service.zst
│ ├── openvpn-client@.service
│ ├── openvpn-client@.service.zst
│ ├── openvpn-server@.service
│ ├── openvpn-server@.service.zst
│ ├── polkit.service
│ ├── polkit.service.zst
│ ├── ppp@.service
│ ├── ppp@.service.zst
│ ├── quotaon.service
│ ├── quotaon.service.zst
│ ├── rarpd@.service
│ ├── rarpd@.service.zst
│ ├── rdisc.service
│ ├── rdisc.service.zst
│ ├── rescue.service
│ ├── rescue.service.zst
│ ├── rfkill-block@.service
│ ├── rfkill-block@.service.zst
│ ├── rfkill-unblock@.service
│ ├── rfkill-unblock@.service.zst
│ ├── rlogin@.service
│ ├── rlogin@.service.zst
│ ├── rpcbind.service
│ ├── rpcbind.service.zst
│ ├── rsh@.service
│ ├── rsh@.service.zst
│ ├── rtkit-daemon.service
│ ├── rtkit-daemon.service.zst
│ ├── sddm.service
│ ├── sddm.service.zst
│ ├── sensord.service
│ ├── sensord.service.zst
│ ├── serial-getty@.service
│ ├── serial-getty@.service.zst
│ ├── shadow.service
│ ├── shadow.service.zst
│ ├── spice-webdavd.service
│ ├── spice-webdavd.service.zst
│ ├── sshd.service
│ ├── sshd.service.zst
│ ├── sshdgenkeys.service
│ ├── sshdgenkeys.service.zst
│ ├── syncthing-resume.service
│ ├── syncthing-resume.service.zst
│ ├── syncthing@.service
│ ├── syncthing@.service.zst
│ ├── system-update-cleanup.service
│ ├── system-update-cleanup.service.zst
│ ├── systemd-ask-password-console.service
│ ├── systemd-ask-password-console.service.zst
│ ├── systemd-ask-password-wall.service
│ ├── systemd-ask-password-wall.service.zst
│ ├── systemd-backlight@.service
│ ├── systemd-backlight@.service.zst
│ ├── systemd-binfmt.service
│ ├── systemd-binfmt.service.zst
│ ├── systemd-bless-boot.service
│ ├── systemd-bless-boot.service.zst
│ ├── systemd-boot-check-no-failures.service
│ ├── systemd-boot-check-no-failures.service.zst
│ ├── systemd-boot-system-token.service
│ ├── systemd-boot-system-token.service.zst
│ ├── systemd-coredump@.service
│ ├── systemd-coredump@.service.zst
│ ├── systemd-exit.service
│ ├── systemd-exit.service.zst
│ ├── systemd-firstboot.service
│ ├── systemd-firstboot.service.zst
│ ├── systemd-fsck-root.service
│ ├── systemd-fsck-root.service.zst
│ ├── systemd-fsck@.service
│ ├── systemd-fsck@.service.zst
│ ├── systemd-halt.service
│ ├── systemd-halt.service.zst
│ ├── systemd-hibernate-resume@.service
│ ├── systemd-hibernate-resume@.service.zst
│ ├── systemd-hibernate.service
│ ├── systemd-hibernate.service.zst
│ ├── systemd-hostnamed.service
│ ├── systemd-hostnamed.service.zst
│ ├── systemd-hwdb-update.service
│ ├── systemd-hwdb-update.service.zst
│ ├── systemd-hybrid-sleep.service
│ ├── systemd-hybrid-sleep.service.zst
│ ├── systemd-importd.service
│ ├── systemd-importd.service.zst
│ ├── systemd-initctl.service
│ ├── systemd-initctl.service.zst
│ ├── systemd-journal-catalog-update.service
│ ├── systemd-journal-catalog-update.service.zst
│ ├── systemd-journal-flush.service
│ ├── systemd-journal-flush.service.zst
│ ├── systemd-journal-gatewayd.service
│ ├── systemd-journal-gatewayd.service.zst
│ ├── systemd-journal-remote.service
│ ├── systemd-journal-remote.service.zst
│ ├── systemd-journal-upload.service
│ ├── systemd-journal-upload.service.zst
│ ├── systemd-journald.service
│ ├── systemd-journald.service.zst
│ ├── systemd-kexec.service
│ ├── systemd-kexec.service.zst
│ ├── systemd-localed.service
│ ├── systemd-localed.service.zst
│ ├── systemd-logind.service
│ ├── systemd-logind.service.zst
│ ├── systemd-machine-id-commit.service
│ ├── systemd-machine-id-commit.service.zst
│ ├── systemd-machined.service
│ ├── systemd-machined.service.zst
│ ├── systemd-modules-load.service
│ ├── systemd-modules-load.service.zst
│ ├── systemd-network-generator.service
│ ├── systemd-network-generator.service.zst
│ ├── systemd-networkd-wait-online.service
│ ├── systemd-networkd-wait-online.service.zst
│ ├── systemd-networkd.service
│ ├── systemd-networkd.service.zst
│ ├── systemd-nspawn@.service
│ ├── systemd-nspawn@.service.zst
│ ├── systemd-portabled.service
│ ├── systemd-portabled.service.zst
│ ├── systemd-poweroff.service
│ ├── systemd-poweroff.service.zst
│ ├── systemd-pstore.service
│ ├── systemd-pstore.service.zst
│ ├── systemd-quotacheck.service
│ ├── systemd-quotacheck.service.zst
│ ├── systemd-random-seed.service
│ ├── systemd-random-seed.service.zst
│ ├── systemd-reboot.service
│ ├── systemd-reboot.service.zst
│ ├── systemd-remount-fs.service
│ ├── systemd-remount-fs.service.zst
│ ├── systemd-resolved.service
│ ├── systemd-resolved.service.zst
│ ├── systemd-rfkill.service
│ ├── systemd-rfkill.service.zst
│ ├── systemd-suspend-then-hibernate.service
│ ├── systemd-suspend-then-hibernate.service.zst
│ ├── systemd-suspend.service
│ ├── systemd-suspend.service.zst
│ ├── systemd-sysctl.service
│ ├── systemd-sysctl.service.zst
│ ├── systemd-sysusers.service
│ ├── systemd-sysusers.service.zst
│ ├── systemd-time-wait-sync.service
│ ├── systemd-time-wait-sync.service.zst
│ ├── systemd-timedated.service
│ ├── systemd-timedated.service.zst
│ ├── systemd-timesyncd.service
│ ├── systemd-timesyncd.service.zst
│ ├── systemd-tmpfiles-clean.service
│ ├── systemd-tmpfiles-clean.service.zst
│ ├── systemd-tmpfiles-setup-dev.service
│ ├── systemd-tmpfiles-setup-dev.service.zst
│ ├── systemd-tmpfiles-setup.service
│ ├── systemd-tmpfiles-setup.service.zst
│ ├── systemd-udev-settle.service
│ ├── systemd-udev-settle.service.zst
│ ├── systemd-udev-trigger.service
│ ├── systemd-udev-trigger.service.zst
│ ├── systemd-udevd.service
│ ├── systemd-udevd.service.zst
│ ├── systemd-update-done.service
│ ├── systemd-update-done.service.zst
│ ├── systemd-update-utmp.service
│ ├── systemd-update-utmp.service.zst
│ ├── systemd-user-sessions.service
│ ├── systemd-user-sessions.service.zst
│ ├── systemd-vconsole-setup.service
│ ├── systemd-vconsole-setup.service.zst
│ ├── systemd-volatile-root.service
│ ├── systemd-volatile-root.service.zst
│ ├── talk.service
│ ├── talk.service.zst
│ ├── teamd@.service
│ ├── teamd@.service.zst
│ ├── telnet@.service
│ ├── telnet@.service.zst
│ ├── udisks2.service
│ ├── udisks2.service.zst
│ ├── upower.service
│ ├── upower.service.zst
│ ├── usbipd.service
│ ├── usbipd.service.zst
│ ├── usbmuxd.service
│ ├── usbmuxd.service.zst
│ ├── user-runtime-dir@.service
│ ├── user-runtime-dir@.service.zst
│ ├── user@.service
│ ├── user@.service.zst
│ ├── uuidd.service
│ ├── uuidd.service.zst
│ ├── virtinterfaced.service
│ ├── virtinterfaced.service.zst
│ ├── virtlockd.service
│ ├── virtlockd.service.zst
│ ├── virtlogd.service
│ ├── virtlogd.service.zst
│ ├── virtlxcd.service
│ ├── virtlxcd.service.zst
│ ├── virtnetworkd.service
│ ├── virtnetworkd.service.zst
│ ├── virtnodedevd.service
│ ├── virtnodedevd.service.zst
│ ├── virtnwfilterd.service
│ ├── virtnwfilterd.service.zst
│ ├── virtproxyd.service
│ ├── virtproxyd.service.zst
│ ├── virtqemud.service
│ ├── virtqemud.service.zst
│ ├── virtsecretd.service
│ ├── virtsecretd.service.zst
│ ├── virtstoraged.service
│ ├── virtstoraged.service.zst
│ ├── virtvboxd.service
│ ├── virtvboxd.service.zst
│ ├── wpa_supplicant-nl80211@.service
│ ├── wpa_supplicant-nl80211@.service.zst
│ ├── wpa_supplicant-wired@.service
│ ├── wpa_supplicant-wired@.service.zst
│ ├── wpa_supplicant.service
│ ├── wpa_supplicant.service.zst
│ ├── wpa_supplicant@.service
│ ├── wpa_supplicant@.service.zst
│ ├── xfs_scrub@.service
│ ├── xfs_scrub@.service.zst
│ ├── xfs_scrub_all.service
│ ├── xfs_scrub_all.service.zst
│ ├── xfs_scrub_fail@.service
│ ├── xfs_scrub_fail@.service.zst
│ ├── zram-setup@.service
│ └── zram-setup@.service.zst
├── fuzz/
│ ├── .gitignore
│ ├── Cargo.toml
│ ├── artifacts/
│ │ ├── decode/
│ │ │ ├── crash-003e8871ae1b398af243ed3bdd895e6a9b417d09
│ │ │ ├── crash-06be9bcd30e08d36a1231291fdc393be2286ccd1
│ │ │ ├── crash-0b8dd1ec99c11d29f489b7ed1ea0a641b22f1c4b
│ │ │ ├── crash-0e471543b70867a4e3d6884e281e504018f6a4e0
│ │ │ ├── crash-13621a677af75daa6007d30f8e91a6706ce8b2b7
│ │ │ ├── crash-1f4e23456d1aa3bcd5a13947ba1b71536c479a3a
│ │ │ ├── crash-285afb3e50455f20ba4f19ffdd3ca2767771d67c
│ │ │ ├── crash-2a4da82402386b074fd8be53271812ce2d8e2b18
│ │ │ ├── crash-2ec60cbc7b68479802290177232e2472625d5e5d
│ │ │ ├── crash-2f47b61c081dfbce296e9674cae4448f7bfa1277
│ │ │ ├── crash-3151768e96e3ce234cc8304da8fa51c65ec2bfb6
│ │ │ ├── crash-3d348c53c3db2c13e65f6a8ea95848fc9ddfaf01
│ │ │ ├── crash-431e8c5fa22def362a489a04e4f9470d9409f111
│ │ │ ├── crash-49bec46e6271a44740b1ab82e79e9b371d832b8c
│ │ │ ├── crash-4d0dfb5fcd91a4c960619fdb17364f34d05f7310
│ │ │ ├── crash-4fda2fa7e33a2589cc514990dd9fe7ab03bf985a
│ │ │ ├── crash-50f1812780e355be23520eb604bcc18df1c222bb
│ │ │ ├── crash-663779067554d3f2a8c56ffc939cc7e842ed63ec
│ │ │ ├── crash-7eb5677508a2696ad1f778c464a38303267ab4ee
│ │ │ ├── crash-8373dd7d83fda197b92858a7dfc101c3208c1238
│ │ │ ├── crash-adb83ab8f58b2724f649a0cea5a5ed2004fa25c5
│ │ │ ├── crash-b5e12760caa036f8467d9f9963606e675f913ce1
│ │ │ ├── crash-bacc82e4bc4975593010cae0002c55d0967da6a3
│ │ │ ├── crash-bbead0dbe38036346fb694ad1893cec85a0b8700
│ │ │ ├── crash-bc1ef1499329fe12f4ba10998c86778a3102452d
│ │ │ ├── crash-c11a4207fca22f987266fe797c83eb0bb2c9fbc4
│ │ │ ├── crash-c746b132a6561becc94bbaf80f0fcd22c805ae7e
│ │ │ ├── crash-ca663bc7ccd4c4e6e7a02651bc06236b11e20170
│ │ │ ├── crash-cb08bdd38c7904891e88d217fe105a0c7102cf46
│ │ │ ├── crash-cb2b9b0b711020aad1153f8a6fff1b5dfbf0e084
│ │ │ ├── crash-cddb11de78f42d894d9b15b23bbad791b06a7c75
│ │ │ ├── crash-d5f00d39b2b269f380d4ffc5dd40c76acf43ac13
│ │ │ ├── crash-d7a5385da30608d3ea21916c0291e3592a627c48
│ │ │ ├── crash-d8943dbbbf4f0a40fdaef7375207c7778b333864
│ │ │ ├── crash-d95d11d3a0d91d39c1d5ba9added01f249b39b82
│ │ │ ├── crash-da39a3ee5e6b4b0d3255bfef95601890afd80709
│ │ │ ├── crash-efefea0a61c8cab9ec201ca547ec55924b51547e
│ │ │ ├── crash-f02fdd84d0bc12c221de04a60c81993a6bb56467
│ │ │ ├── crash-f2c779cdf7827b4827e33eb5510e9e2d3d83371f
│ │ │ └── crash-fb4314c59f9013d610ac2b8d698c97e518fa095e
│ │ ├── fse/
│ │ │ ├── crash-16fdc285684fe17e4a84ff6605c7f0e362af3dfa
│ │ │ ├── crash-da39a3ee5e6b4b0d3255bfef95601890afd80709
│ │ │ └── crash-e587fc04ebe1b7e97d0aa916ef8d3f2cc92fb4b1
│ │ ├── huff0/
│ │ │ ├── crash-da39a3ee5e6b4b0d3255bfef95601890afd80709
│ │ │ └── crash-e7d75b9bfbab3e8e4df53bb28b87a1a01ee99d3d
│ │ └── interop/
│ │ ├── crash-5ba93c9db0cff93f52b521d7420e43f6eda2784f
│ │ └── crash-a9f55c479d7c420764bde5bd6c666a7997d79d26
│ └── fuzz_targets/
│ ├── decode.rs
│ ├── encode.rs
│ ├── fse.rs
│ ├── huff0.rs
│ └── interop.rs
├── src/
│ ├── bit_io/
│ │ ├── bit_reader.rs
│ │ ├── bit_reader_reverse.rs
│ │ ├── bit_writer.rs
│ │ └── mod.rs
│ ├── blocks/
│ │ ├── block.rs
│ │ ├── literals_section.rs
│ │ ├── mod.rs
│ │ └── sequence_section.rs
│ ├── common/
│ │ └── mod.rs
│ ├── decoding/
│ │ ├── block_decoder.rs
│ │ ├── decode_buffer.rs
│ │ ├── dictionary.rs
│ │ ├── errors.rs
│ │ ├── frame.rs
│ │ ├── frame_decoder.rs
│ │ ├── literals_section_decoder.rs
│ │ ├── mod.rs
│ │ ├── ringbuffer.rs
│ │ ├── scratch.rs
│ │ ├── sequence_execution.rs
│ │ ├── sequence_section_decoder.rs
│ │ └── streaming_decoder.rs
│ ├── dictionary/
│ │ ├── cover.rs
│ │ ├── frequency.rs
│ │ ├── mod.rs
│ │ └── reservoir.rs
│ ├── encoding/
│ │ ├── block_header.rs
│ │ ├── blocks/
│ │ │ ├── compressed.rs
│ │ │ └── mod.rs
│ │ ├── frame_compressor.rs
│ │ ├── frame_header.rs
│ │ ├── levels/
│ │ │ ├── fastest.rs
│ │ │ └── mod.rs
│ │ ├── match_generator.rs
│ │ ├── mod.rs
│ │ └── util.rs
│ ├── fse/
│ │ ├── fse_decoder.rs
│ │ ├── fse_encoder.rs
│ │ └── mod.rs
│ ├── huff0/
│ │ ├── huff0_decoder.rs
│ │ ├── huff0_encoder.rs
│ │ └── mod.rs
│ ├── io_nostd.rs
│ ├── io_std.rs
│ ├── lib.rs
│ └── tests/
│ ├── bit_reader.rs
│ ├── decode_corpus.rs
│ ├── dict_test.rs
│ ├── encode_corpus.rs
│ ├── fuzz_regressions.rs
│ └── mod.rs
└── test_fixtures/
└── abc.txt.zst
SYMBOL INDEX (589 symbols across 49 files)
FILE: cli/src/main.rs
type Cli (line 22) | struct Cli {
type Commands (line 29) | enum Commands {
function main (line 64) | fn main() -> color_eyre::Result<()> {
function compress (line 104) | fn compress(input: PathBuf, output: PathBuf, level: u8) -> color_eyre::R...
function decompress (line 133) | fn decompress(input: PathBuf, output: PathBuf) -> color_eyre::Result<()> {
function add_extension (line 160) | fn add_extension<P: AsRef<Path>>(path: &Path, extension: P) -> PathBuf {
function extension_added (line 174) | fn extension_added() {
FILE: cli/src/progress.rs
type ProgressMonitor (line 14) | pub struct ProgressMonitor<R: Read> {
function new (line 26) | pub fn new(reader: R, size: usize) -> Self {
function update (line 44) | fn update(&mut self, delta: u64) {
method read (line 59) | fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
function fmt_size (line 70) | pub fn fmt_size(size_in_bytes: f64) -> String {
function fmt_duration (line 87) | fn fmt_duration(duration: Duration) -> String {
function human_readable_filesize (line 127) | fn human_readable_filesize() {
function human_readable_duration (line 139) | fn human_readable_duration() {
FILE: ruzstd/benches/decode_all.rs
function criterion_benchmark (line 4) | fn criterion_benchmark(c: &mut Criterion) {
FILE: ruzstd/fuzz/fuzz_targets/interop.rs
function decode_ruzstd (line 8) | fn decode_ruzstd(data: &mut dyn std::io::Read) -> Vec<u8> {
function decode_ruzstd_writer (line 15) | fn decode_ruzstd_writer(mut data: impl Read) -> Vec<u8> {
function encode_zstd (line 31) | fn encode_zstd(data: &[u8]) -> Result<Vec<u8>, std::io::Error> {
function encode_ruzstd_uncompressed (line 35) | fn encode_ruzstd_uncompressed(data: &mut dyn std::io::Read) -> Vec<u8> {
function encode_ruzstd_compressed (line 41) | fn encode_ruzstd_compressed(data: &mut dyn std::io::Read) -> Vec<u8> {
function decode_zstd (line 47) | fn decode_zstd(data: &[u8]) -> Result<Vec<u8>, std::io::Error> {
FILE: ruzstd/src/bit_io/bit_reader.rs
type BitReader (line 3) | pub struct BitReader<'s> {
function new (line 9) | pub fn new(source: &'s [u8]) -> BitReader<'s> {
function bits_left (line 13) | pub fn bits_left(&self) -> usize {
function bits_read (line 17) | pub fn bits_read(&self) -> usize {
function return_bits (line 21) | pub fn return_bits(&mut self, n: usize) {
function get_bits (line 28) | pub fn get_bits(&mut self, n: usize) -> Result<u64, GetBitsError> {
type GetBitsError (line 96) | pub enum GetBitsError {
method fmt (line 111) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
FILE: ruzstd/src/bit_io/bit_reader_reverse.rs
type BitReaderReversed (line 6) | pub struct BitReaderReversed<'s> {
function bits_remaining (line 27) | pub fn bits_remaining(&self) -> isize {
function new (line 31) | pub fn new(source: &'s [u8]) -> BitReaderReversed<'s> {
function refill (line 43) | fn refill(&mut self) {
function get_bits (line 92) | pub fn get_bits(&mut self, n: u8) -> u64 {
function peek_bits (line 105) | pub fn peek_bits(&mut self, n: u8) -> u64 {
function peek_bits_triple (line 118) | pub fn peek_bits_triple(&mut self, sum: u8, n1: u8, n2: u8, n3: u8) -> (...
function consume (line 144) | pub fn consume(&mut self, n: u8) {
function get_bits_triple (line 151) | pub fn get_bits_triple(&mut self, n1: u8, n2: u8, n3: u8) -> (u64, u64, ...
function it_works (line 169) | fn it_works() {
FILE: ruzstd/src/bit_io/bit_writer.rs
type BitWriter (line 7) | pub(crate) struct BitWriter<V: AsMut<Vec<u8>>> {
function new (line 20) | pub fn new() -> Self {
function from (line 32) | pub fn from(mut output: V) -> BitWriter<V> {
function index (line 42) | pub fn index(&self) -> usize {
function reset_to (line 47) | pub fn reset_to(&mut self, index: usize) {
function change_bits (line 57) | pub fn change_bits(&mut self, idx: usize, bits: impl Into<u64>, num_bits...
function change_bits_64 (line 62) | pub fn change_bits_64(&mut self, mut idx: usize, mut bits: u64, mut num_...
function append_bytes (line 105) | pub fn append_bytes(&mut self, data: &[u8]) {
function flush (line 115) | pub fn flush(&mut self) {
function write_bits (line 127) | pub fn write_bits(&mut self, bits: impl Into<u64>, num_bits: usize) {
function write_bits_64_cold (line 134) | fn write_bits_64_cold(&mut self, bits: u64, num_bits: usize) {
function write_bits_64 (line 170) | pub fn write_bits_64(&mut self, bits: u64, num_bits: usize) {
function dump (line 195) | pub fn dump(mut self) -> V {
function misaligned (line 205) | pub fn misaligned(&self) -> usize {
function from_existing (line 221) | fn from_existing() {
function change_bits (line 231) | fn change_bits() {
function single_byte_written_4_4 (line 244) | fn single_byte_written_4_4() {
function single_byte_written_3_5 (line 259) | fn single_byte_written_3_5() {
function single_byte_written_1_7 (line 270) | fn single_byte_written_1_7() {
function single_byte_written_8 (line 281) | fn single_byte_written_8() {
function multi_byte_clean_boundary_4_4_4_4 (line 291) | fn multi_byte_clean_boundary_4_4_4_4() {
function multi_byte_clean_boundary_16_8 (line 302) | fn multi_byte_clean_boundary_16_8() {
function multi_byte_boundary_crossed_4_12 (line 311) | fn multi_byte_boundary_crossed_4_12() {
function multi_byte_boundary_crossed_4_5_7 (line 320) | fn multi_byte_boundary_crossed_4_5_7() {
function multi_byte_boundary_crossed_1_9_6 (line 330) | fn multi_byte_boundary_crossed_1_9_6() {
function catches_unaligned_dump (line 341) | fn catches_unaligned_dump() {
function catches_dirty_upper_bits (line 351) | fn catches_dirty_upper_bits() {
function add_multiple_aligned (line 357) | fn add_multiple_aligned() {
FILE: ruzstd/src/blocks/block.rs
type BlockType (line 5) | pub enum BlockType {
method fmt (line 19) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> Result<(), core::fm...
type BlockHeader (line 31) | pub struct BlockHeader {
FILE: ruzstd/src/blocks/literals_section.rs
type LiteralsSection (line 9) | pub struct LiteralsSection {
method new (line 56) | pub fn new() -> LiteralsSection {
method header_bytes_needed (line 66) | pub fn header_bytes_needed(&self, first_byte: u8) -> Result<u8, Litera...
method parse_from_header (line 117) | pub fn parse_from_header(&mut self, raw: &[u8]) -> Result<u8, Literals...
method section_type (line 226) | fn section_type(raw: u8) -> Result<LiteralsSectionType, LiteralsSectio...
type LiteralsSectionType (line 31) | pub enum LiteralsSectionType {
method default (line 49) | fn default() -> Self {
FILE: ruzstd/src/blocks/sequence_section.rs
constant MAX_LITERAL_LENGTH_CODE (line 6) | pub(crate) const MAX_LITERAL_LENGTH_CODE: u8 = 35;
constant MAX_MATCH_LENGTH_CODE (line 7) | pub(crate) const MAX_MATCH_LENGTH_CODE: u8 = 52;
constant MAX_OFFSET_CODE (line 8) | pub(crate) const MAX_OFFSET_CODE: u8 = 31;
type SequencesHeader (line 10) | pub struct SequencesHeader {
method new (line 100) | pub fn new() -> SequencesHeader {
method parse_from_header (line 108) | pub fn parse_from_header(&mut self, source: &[u8]) -> Result<u8, Seque...
type Sequence (line 21) | pub struct Sequence {
method fmt (line 40) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> Result<(), core::fm...
type CompressionModes (line 47) | pub struct CompressionModes(u8);
method decode_mode (line 67) | pub fn decode_mode(m: u8) -> ModeType {
method ll_mode (line 77) | pub fn ll_mode(self) -> ModeType {
method of_mode (line 82) | pub fn of_mode(self) -> ModeType {
method ml_mode (line 87) | pub fn ml_mode(self) -> ModeType {
type ModeType (line 49) | pub enum ModeType {
method default (line 93) | fn default() -> Self {
FILE: ruzstd/src/common/mod.rs
constant MAGIC_NUM (line 6) | pub const MAGIC_NUM: u32 = 0xFD2F_B528;
constant MIN_WINDOW_SIZE (line 10) | pub const MIN_WINDOW_SIZE: u64 = 1024;
constant MAX_WINDOW_SIZE (line 14) | pub const MAX_WINDOW_SIZE: u64 = (1 << 41) + 7 * (1 << 38);
constant MAX_BLOCK_SIZE (line 21) | pub const MAX_BLOCK_SIZE: u32 = 128 * 1024;
FILE: ruzstd/src/decoding/block_decoder.rs
type BlockDecoder (line 18) | pub struct BlockDecoder {
method decode_block_content (line 39) | pub fn decode_block_content(
method decompress_block (line 123) | fn decompress_block(
method read_block_header (line 227) | pub fn read_block_header(
method reset_buffer (line 275) | fn reset_buffer(&mut self) {
method is_last (line 281) | fn is_last(&self) -> bool {
method block_type (line 285) | fn block_type(&self) -> Result<BlockType, BlockTypeError> {
method block_content_size (line 296) | fn block_content_size(&self) -> Result<u32, BlockSizeError> {
method block_content_size_unchecked (line 305) | fn block_content_size_unchecked(&self) -> u32 {
type DecoderState (line 23) | enum DecoderState {
function new (line 31) | pub fn new() -> BlockDecoder {
FILE: ruzstd/src/decoding/decode_buffer.rs
type DecodeBuffer (line 9) | pub struct DecodeBuffer {
method new (line 35) | pub fn new(window_size: usize) -> DecodeBuffer {
method reset (line 46) | pub fn reset(&mut self, window_size: usize) {
method len (line 58) | pub fn len(&self) -> usize {
method push (line 62) | pub fn push(&mut self, data: &[u8]) {
method repeat (line 67) | pub fn repeat(&mut self, offset: usize, match_length: usize) -> Result...
method repeat_in_chunks (line 101) | fn repeat_in_chunks(&mut self, offset: usize, match_length: usize, sta...
method repeat_from_dict (line 132) | fn repeat_from_dict(
method can_drain_to_window_size (line 170) | pub fn can_drain_to_window_size(&self) -> Option<usize> {
method can_drain (line 179) | pub fn can_drain(&self) -> usize {
method drain_to_window_size (line 185) | pub fn drain_to_window_size(&mut self) -> Option<Vec<u8>> {
method drain_to_window_size_writer (line 201) | pub fn drain_to_window_size_writer(&mut self, mut sink: impl Write) ->...
method drain (line 209) | pub fn drain(&mut self) -> Vec<u8> {
method drain_to_writer (line 224) | pub fn drain_to_writer(&mut self, mut sink: impl Write) -> Result<usiz...
method read_all (line 229) | pub fn read_all(&mut self, target: &mut [u8]) -> Result<usize, Error> {
method drain_to (line 244) | fn drain_to(
method read (line 20) | fn read(&mut self, target: &mut [u8]) -> Result<usize, Error> {
function write_all_bytes (line 306) | fn write_all_bytes(mut sink: impl Write, buf: &[u8]) -> (usize, Result<(...
function short_writer (line 328) | fn short_writer() {
function wouldblock_writer (line 375) | fn wouldblock_writer() {
FILE: ruzstd/src/decoding/dictionary.rs
type Dictionary (line 12) | pub struct Dictionary {
method decode_dict (line 45) | pub fn decode_dict(raw: &[u8]) -> Result<Dictionary, DictionaryDecodeE...
constant MAGIC_NUM (line 40) | pub const MAGIC_NUM: [u8; 4] = [0x37, 0xA4, 0x30, 0xEC];
FILE: ruzstd/src/decoding/errors.rs
type FrameDescriptorError (line 14) | pub enum FrameDescriptorError {
method fmt (line 19) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
type FrameHeaderError (line 34) | pub enum FrameHeaderError {
method fmt (line 45) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
method from (line 88) | fn from(error: FrameDescriptorError) -> Self {
method source (line 79) | fn source(&self) -> Option<&(dyn StdError + 'static)> {
type ReadFrameHeaderError (line 95) | pub enum ReadFrameHeaderError {
method fmt (line 107) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
method from (line 149) | fn from(error: FrameDescriptorError) -> Self {
method source (line 135) | fn source(&self) -> Option<&(dyn StdError + 'static)> {
type BlockHeaderReadError (line 156) | pub enum BlockHeaderReadError {
method source (line 165) | fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
method fmt (line 176) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> ::core::fmt::Result {
method from (line 192) | fn from(val: Error) -> Self {
method from (line 198) | fn from(val: BlockTypeError) -> Self {
method from (line 204) | fn from(val: BlockSizeError) -> Self {
type BlockTypeError (line 211) | pub enum BlockTypeError {
method fmt (line 219) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
type BlockSizeError (line 232) | pub enum BlockSizeError {
method fmt (line 240) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
type DecompressBlockError (line 256) | pub enum DecompressBlockError {
method source (line 271) | fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
method fmt (line 285) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
method from (line 308) | fn from(val: Error) -> Self {
method from (line 314) | fn from(val: DecompressLiteralsError) -> Self {
method from (line 320) | fn from(val: LiteralsSectionParseError) -> Self {
method from (line 326) | fn from(val: SequencesHeaderParseError) -> Self {
method from (line 332) | fn from(val: DecodeSequenceError) -> Self {
method from (line 338) | fn from(val: ExecuteSequencesError) -> Self {
type DecodeBlockContentError (line 345) | pub enum DecodeBlockContentError {
method source (line 354) | fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
method fmt (line 364) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
method from (line 386) | fn from(val: DecompressBlockError) -> Self {
type DecodeBufferError (line 393) | pub enum DecodeBufferError {
method fmt (line 402) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
type DictionaryDecodeError (line 419) | pub enum DictionaryDecodeError {
method source (line 427) | fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
method fmt (line 437) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
method from (line 454) | fn from(val: FSETableError) -> Self {
method from (line 460) | fn from(val: HuffmanTableError) -> Self {
type FrameDecoderError (line 467) | pub enum FrameDecoderError {
method fmt (line 501) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> ::core::fmt::Result {
method from (line 558) | fn from(val: DictionaryDecodeError) -> Self {
method from (line 564) | fn from(val: BlockHeaderReadError) -> Self {
method from (line 570) | fn from(val: FrameHeaderError) -> Self {
method from (line 576) | fn from(val: ReadFrameHeaderError) -> Self {
method source (line 485) | fn source(&self) -> Option<&(dyn StdError + 'static)> {
type DecompressLiteralsError (line 583) | pub enum DecompressLiteralsError {
method source (line 599) | fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
method fmt (line 609) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
method from (line 661) | fn from(val: HuffmanDecoderError) -> Self {
method from (line 667) | fn from(val: GetBitsError) -> Self {
method from (line 673) | fn from(val: HuffmanTableError) -> Self {
type ExecuteSequencesError (line 680) | pub enum ExecuteSequencesError {
method fmt (line 687) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
method source (line 707) | fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
method from (line 716) | fn from(val: DecodeBufferError) -> Self {
type DecodeSequenceError (line 723) | pub enum DecodeSequenceError {
method source (line 740) | fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
method fmt (line 751) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
method from (line 794) | fn from(val: GetBitsError) -> Self {
method from (line 800) | fn from(val: FSETableError) -> Self {
method from (line 806) | fn from(val: FSEDecoderError) -> Self {
type LiteralsSectionParseError (line 813) | pub enum LiteralsSectionParseError {
method source (line 821) | fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
method fmt (line 829) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
method from (line 849) | fn from(val: GetBitsError) -> Self {
method fmt (line 855) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> Result<(), core::fmt:...
type SequencesHeaderParseError (line 867) | pub enum SequencesHeaderParseError {
method fmt (line 875) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
type FSETableError (line 889) | pub enum FSETableError {
method source (line 908) | fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
method fmt (line 917) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
method from (line 947) | fn from(val: GetBitsError) -> Self {
type FSEDecoderError (line 954) | pub enum FSEDecoderError {
method source (line 961) | fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
method fmt (line 970) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
method from (line 981) | fn from(val: GetBitsError) -> Self {
type HuffmanTableError (line 988) | pub enum HuffmanTableError {
method fmt (line 1040) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> ::core::fmt::Result {
method from (line 1107) | fn from(val: GetBitsError) -> Self {
method from (line 1113) | fn from(val: FSEDecoderError) -> Self {
method from (line 1119) | fn from(val: FSETableError) -> Self {
method source (line 1029) | fn source(&self) -> Option<&(dyn StdError + 'static)> {
type HuffmanDecoderError (line 1126) | pub enum HuffmanDecoderError {
method fmt (line 1131) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
method from (line 1148) | fn from(val: GetBitsError) -> Self {
method source (line 1140) | fn source(&self) -> Option<&(dyn StdError + 'static)> {
FILE: ruzstd/src/decoding/frame.rs
function read_frame_header (line 6) | pub fn read_frame_header(mut r: impl Read) -> Result<(FrameHeader, u8), ...
type FrameHeader (line 88) | pub struct FrameHeader {
method window_size (line 116) | pub fn window_size(&self) -> Result<u64, FrameHeaderError> {
method dictionary_id (line 142) | pub fn dictionary_id(&self) -> Option<u32> {
method frame_content_size (line 147) | pub fn frame_content_size(&self) -> u64 {
type FrameDescriptor (line 154) | pub struct FrameDescriptor(pub u8);
method frame_content_size_flag (line 173) | pub fn frame_content_size_flag(&self) -> u8 {
method reserved_flag (line 180) | pub fn reserved_flag(&self) -> bool {
method single_segment_flag (line 188) | pub fn single_segment_flag(&self) -> bool {
method content_checksum_flag (line 193) | pub fn content_checksum_flag(&self) -> bool {
method dict_id_flag (line 206) | pub fn dict_id_flag(&self) -> u8 {
method frame_content_size_bytes (line 213) | pub fn frame_content_size_bytes(&self) -> Result<u8, FrameDescriptorEr...
method dictionary_id_bytes (line 232) | pub fn dictionary_id_bytes(&self) -> Result<u8, FrameDescriptorError> {
FILE: ruzstd/src/decoding/frame_decoder.rs
constant MAXIMUM_ALLOWED_WINDOW_SIZE (line 19) | const MAXIMUM_ALLOWED_WINDOW_SIZE: u64 = 1024 * 1024 * 100;
type FrameDecoder (line 74) | pub struct FrameDecoder {
method new (line 141) | pub fn new() -> FrameDecoder {
method init (line 154) | pub fn init(&mut self, source: impl Read) -> Result<(), FrameDecoderEr...
method reset (line 164) | pub fn reset(&mut self, source: impl Read) -> Result<(), FrameDecoderE...
method add_dict (line 188) | pub fn add_dict(&mut self, dict: Dictionary) -> Result<(), FrameDecode...
method force_dict (line 193) | pub fn force_dict(&mut self, dict_id: u32) -> Result<(), FrameDecoderE...
method content_size (line 210) | pub fn content_size(&self) -> u64 {
method get_checksum_from_data (line 218) | pub fn get_checksum_from_data(&self) -> Option<u32> {
method get_calculated_checksum (line 230) | pub fn get_calculated_checksum(&self) -> Option<u32> {
method bytes_read_from_source (line 243) | pub fn bytes_read_from_source(&self) -> u64 {
method is_finished (line 254) | pub fn is_finished(&self) -> bool {
method blocks_decoded (line 267) | pub fn blocks_decoded(&self) -> usize {
method decode_blocks (line 279) | pub fn decode_blocks(
method collect (line 351) | pub fn collect(&mut self) -> Option<Vec<u8>> {
method collect_to_writer (line 363) | pub fn collect_to_writer(&mut self, w: impl Write) -> Result<usize, Er...
method can_collect (line 379) | pub fn can_collect(&self) -> usize {
method decode_from_to (line 409) | pub fn decode_from_to(
method decode_all (line 511) | pub fn decode_all(
method decode_all_to_vec (line 561) | pub fn decode_all_to_vec(
type FrameDecoderState (line 79) | struct FrameDecoderState {
method new (line 96) | pub fn new(source: impl Read) -> Result<FrameDecoderState, FrameDecode...
method reset (line 110) | pub fn reset(&mut self, source: impl Read) -> Result<(), FrameDecoderE...
type BlockDecodingStrategy (line 89) | pub enum BlockDecodingStrategy {
method default (line 132) | fn default() -> Self {
method read (line 586) | fn read(&mut self, target: &mut [u8]) -> Result<usize, Error> {
FILE: ruzstd/src/decoding/literals_section_decoder.rs
function decode_literals (line 12) | pub fn decode_literals(
function decompress_literals (line 40) | fn decompress_literals(
FILE: ruzstd/src/decoding/ringbuffer.rs
type RingBuffer (line 4) | pub struct RingBuffer {
method new (line 29) | pub fn new() -> Self {
method len (line 41) | pub fn len(&self) -> usize {
method free (line 47) | pub fn free(&self) -> usize {
method clear (line 53) | pub fn clear(&mut self) {
method reserve (line 61) | pub fn reserve(&mut self, amount: usize) {
method reserve_amortized (line 72) | fn reserve_amortized(&mut self, amount: usize) {
method push_back (line 125) | pub fn push_back(&mut self, byte: u8) {
method get (line 137) | pub fn get(&self, idx: usize) -> Option<u8> {
method extend (line 148) | pub fn extend(&mut self, data: &[u8]) {
method drop_first_n (line 185) | pub fn drop_first_n(&mut self, amount: usize) {
method data_slice_lengths (line 196) | fn data_slice_lengths(&self) -> (usize, usize) {
method data_slice_parts (line 213) | fn data_slice_parts(&self) -> ((*const u8, usize), (*const u8, usize)) {
method as_slices (line 223) | pub fn as_slices(&self) -> (&[u8], &[u8]) {
method free_slice_lengths (line 236) | fn free_slice_lengths(&self) -> (usize, usize) {
method free_slice_parts (line 255) | fn free_slice_parts(&self) -> ((*mut u8, usize), (*mut u8, usize)) {
method extend_from_within (line 266) | pub fn extend_from_within(&mut self, start: usize, len: usize) {
method extend_from_within_unchecked (line 292) | pub unsafe fn extend_from_within_unchecked(&mut self, start: usize, le...
method extend_from_within_unchecked_branchless (line 472) | pub unsafe fn extend_from_within_unchecked_branchless(&mut self, start...
method drop (line 527) | fn drop(&mut self) {
function copy_bytes_overshooting (line 556) | unsafe fn copy_bytes_overshooting(
function copy_without_checks (line 607) | unsafe fn copy_without_checks(
function copy_with_checks (line 631) | unsafe fn copy_with_checks(
function copy_with_nobranch_check (line 663) | unsafe fn copy_with_nobranch_check(
function smoke (line 749) | fn smoke() {
function edge_cases (line 802) | fn edge_cases() {
FILE: ruzstd/src/decoding/scratch.rs
type DecoderScratch (line 15) | pub struct DecoderScratch {
method new (line 30) | pub fn new(window_size: usize) -> DecoderScratch {
method reset (line 52) | pub fn reset(&mut self, window_size: usize) {
method init_from_dict (line 70) | pub fn init_from_dict(&mut self, dict: &Dictionary) {
type HuffmanScratch (line 81) | pub struct HuffmanScratch {
method new (line 86) | pub fn new() -> HuffmanScratch {
method default (line 94) | fn default() -> Self {
type FSEScratch (line 99) | pub struct FSEScratch {
method new (line 109) | pub fn new() -> FSEScratch {
method reinit_from (line 120) | pub fn reinit_from(&mut self, other: &Self) {
method default (line 131) | fn default() -> Self {
FILE: ruzstd/src/decoding/sequence_execution.rs
function execute_sequences (line 5) | pub fn execute_sequences(scratch: &mut DecoderScratch) -> Result<(), Exe...
function do_offset_history (line 59) | fn do_offset_history(offset_value: u32, lit_len: u32, scratch: &mut [u32...
FILE: ruzstd/src/decoding/sequence_section_decoder.rs
function decode_sequences (line 14) | pub fn decode_sequences(
function decode_sequences_with_rle (line 49) | fn decode_sequences_with_rle(
function decode_sequences_without_rle (line 154) | fn decode_sequences_without_rle(
function lookup_ll_code (line 227) | fn lookup_ll_code(code: u8) -> (u32, u8) {
function lookup_ml_code (line 258) | fn lookup_ml_code(code: u8) -> (u32, u8) {
constant LL_MAX_LOG (line 288) | pub const LL_MAX_LOG: u8 = 9;
constant ML_MAX_LOG (line 290) | pub const ML_MAX_LOG: u8 = 9;
constant OF_MAX_LOG (line 292) | pub const OF_MAX_LOG: u8 = 8;
function maybe_update_fse_tables (line 294) | fn maybe_update_fse_tables(
constant LL_DEFAULT_ACC_LOG (line 413) | const LL_DEFAULT_ACC_LOG: u8 = 6;
constant LITERALS_LENGTH_DEFAULT_DISTRIBUTION (line 418) | const LITERALS_LENGTH_DEFAULT_DISTRIBUTION: [i32; 36] = [
constant ML_DEFAULT_ACC_LOG (line 424) | const ML_DEFAULT_ACC_LOG: u8 = 6;
constant MATCH_LENGTH_DEFAULT_DISTRIBUTION (line 429) | const MATCH_LENGTH_DEFAULT_DISTRIBUTION: [i32; 53] = [
constant OF_DEFAULT_ACC_LOG (line 435) | const OF_DEFAULT_ACC_LOG: u8 = 5;
constant OFFSET_DEFAULT_DISTRIBUTION (line 440) | const OFFSET_DEFAULT_DISTRIBUTION: [i32; 29] = [
function test_ll_default (line 445) | fn test_ll_default() {
FILE: ruzstd/src/decoding/streaming_decoder.rs
type StreamingDecoder (line 45) | pub struct StreamingDecoder<READ: Read, DEC: BorrowMut<FrameDecoder>> {
function new_with_decoder (line 51) | pub fn new_with_decoder(
function new (line 61) | pub fn new(
function get_ref (line 72) | pub fn get_ref(&self) -> &READ {
function get_mut (line 79) | pub fn get_mut(&mut self) -> &mut READ {
function into_inner (line 84) | pub fn into_inner(self) -> READ
function into_parts (line 92) | pub fn into_parts(self) -> (READ, DEC)
function into_frame_decoder (line 100) | pub fn into_frame_decoder(self) -> DEC {
method read (line 106) | fn read(&mut self, buf: &mut [u8]) -> Result<usize, Error> {
FILE: ruzstd/src/dictionary/cover.rs
constant K (line 17) | pub(super) const K: usize = 16;
type KMer (line 23) | pub(super) type KMer = [u8; K];
type Segment (line 25) | pub struct Segment {
method eq (line 38) | fn eq(&self, other: &Self) -> bool {
method partial_cmp (line 45) | fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
method cmp (line 51) | fn cmp(&self, other: &Self) -> core::cmp::Ordering {
type Context (line 58) | pub struct Context {
function pick_best_segment (line 67) | pub fn pick_best_segment(
function score_segment (line 95) | fn score_segment(ctx: &mut Context, collection_sample: &[u8], segment: &...
function compute_epoch_info (line 119) | pub fn compute_epoch_info(
FILE: ruzstd/src/dictionary/frequency.rs
function estimate_frequency (line 8) | pub fn estimate_frequency(pattern: &[u8], body: &[u8]) -> usize {
function dead_beef (line 52) | fn dead_beef() {
function smallest_body (line 60) | fn smallest_body() {
function no_match (line 65) | fn no_match() {
FILE: ruzstd/src/dictionary/mod.rs
type DictParams (line 47) | pub(super) struct DictParams {
function create_raw_dict_from_dir (line 77) | pub fn create_raw_dict_from_dir<P: AsRef<Path>, W: io::Write>(
function create_raw_dict_from_source (line 128) | pub fn create_raw_dict_from_source<R: io::Read, W: io::Write>(
FILE: ruzstd/src/dictionary/reservoir.rs
function create_sample (line 8) | pub fn create_sample<R: io::Read>(input: &mut R, size: usize) -> Vec<u8> {
type Reservoir (line 17) | struct Reservoir {
method new (line 32) | pub fn new(size: usize) -> Self {
method fill (line 42) | pub fn fill<R: io::Read>(mut self, source: &mut R) -> Vec<u8> {
function initial_fill (line 116) | fn initial_fill() {
function shrinks_for_small_sample (line 126) | fn shrinks_for_small_sample() {
function lake_doesnt_grow (line 136) | fn lake_doesnt_grow() {
FILE: ruzstd/src/encoding/block_header.rs
type BlockHeader (line 5) | pub struct BlockHeader {
method serialize (line 24) | pub fn serialize(self, output: &mut Vec<u8>) {
function block_header_serialize (line 46) | fn block_header_serialize() {
FILE: ruzstd/src/encoding/blocks/compressed.rs
function compress_block (line 12) | pub fn compress_block<M: Matcher>(state: &mut CompressState<M>, output: ...
type FseTableMode (line 103) | enum FseTableMode<'a> {
function as_ref (line 110) | pub fn as_ref(&self) -> &FSETable {
function choose_table (line 119) | fn choose_table<'a>(
function encode_table (line 137) | fn encode_table(mode: &FseTableMode<'_>, writer: &mut BitWriter<&mut Vec...
function encode_fse_table_modes (line 145) | fn encode_fse_table_modes(
function encode_sequences (line 160) | fn encode_sequences(
function encode_seqnum (line 223) | fn encode_seqnum(seqnum: usize, writer: &mut BitWriter<impl AsMut<Vec<u8...
function encode_literal_length (line 245) | fn encode_literal_length(len: u32) -> (u8, u32, usize) {
function encode_match_len (line 272) | fn encode_match_len(len: u32) -> (u8, u32, usize) {
function encode_offset (line 301) | fn encode_offset(len: u32) -> (u8, u32, usize) {
function raw_literals (line 307) | fn raw_literals(literals: &[u8], writer: &mut BitWriter<&mut Vec<u8>>) {
function compress_literals (line 314) | fn compress_literals(
FILE: ruzstd/src/encoding/frame_compressor.rs
type FrameCompressor (line 38) | pub struct FrameCompressor<R: Read, W: Write, M: Matcher> {
type FseTables (line 47) | pub(crate) struct FseTables {
method new (line 57) | pub fn new() -> Self {
type CompressState (line 69) | pub(crate) struct CompressState<M: Matcher> {
function new (line 77) | pub fn new(compression_level: CompressionLevel) -> Self {
function new_with_matcher (line 95) | pub fn new_with_matcher(matcher: M, compression_level: CompressionLevel)...
function set_source (line 113) | pub fn set_source(&mut self, uncompressed_data: R) -> Option<R> {
function set_drain (line 120) | pub fn set_drain(&mut self, compressed_data: W) -> Option<W> {
function compress (line 131) | pub fn compress(&mut self) {
function source_mut (line 227) | pub fn source_mut(&mut self) -> Option<&mut R> {
function drain_mut (line 232) | pub fn drain_mut(&mut self) -> Option<&mut W> {
function source (line 237) | pub fn source(&self) -> Option<&R> {
function drain (line 242) | pub fn drain(&self) -> Option<&W> {
function take_source (line 247) | pub fn take_source(&mut self) -> Option<R> {
function take_drain (line 252) | pub fn take_drain(&mut self) -> Option<W> {
function replace_matcher (line 257) | pub fn replace_matcher(&mut self, mut match_generator: M) -> M {
function set_compression_level (line 263) | pub fn set_compression_level(
function compression_level (line 273) | pub fn compression_level(&self) -> CompressionLevel {
function frame_starts_with_magic_num (line 288) | fn frame_starts_with_magic_num() {
function very_simple_raw_compress (line 300) | fn very_simple_raw_compress() {
function very_simple_compress (line 311) | fn very_simple_compress() {
function rle_compress (line 335) | fn rle_compress() {
function aaa_compress (line 351) | fn aaa_compress() {
function checksum_two_frames_reused_compressor (line 372) | fn checksum_two_frames_reused_compressor() {
function fuzz_targets (line 436) | fn fuzz_targets() {
FILE: ruzstd/src/encoding/frame_header.rs
type FrameHeader (line 11) | pub struct FrameHeader {
method serialize (line 34) | pub fn serialize(self, output: &mut Vec<u8>) {
method descriptor (line 65) | fn descriptor(&self) -> u8 {
function minify_val_fcs (line 154) | fn minify_val_fcs(val: u64) -> Vec<u8> {
function frame_header_descriptor_decode (line 170) | fn frame_header_descriptor_decode() {
function frame_header_decode (line 186) | fn frame_header_decode() {
function catches_single_segment_no_fcs (line 204) | fn catches_single_segment_no_fcs() {
function catches_single_segment_no_winsize (line 219) | fn catches_single_segment_no_winsize() {
FILE: ruzstd/src/encoding/levels/fastest.rs
function compress_fastest (line 20) | pub fn compress_fastest<M: Matcher>(
FILE: ruzstd/src/encoding/match_generator.rs
constant MIN_MATCH_LEN (line 15) | const MIN_MATCH_LEN: usize = 5;
type MatchGeneratorDriver (line 18) | pub struct MatchGeneratorDriver {
method new (line 28) | pub(crate) fn new(slice_size: usize, max_slices_in_window: usize) -> S...
method reset (line 39) | fn reset(&mut self, _level: CompressionLevel) {
method window_size (line 52) | fn window_size(&self) -> u64 {
method get_next_space (line 56) | fn get_next_space(&mut self) -> Vec<u8> {
method get_last_space (line 64) | fn get_last_space(&mut self) -> &[u8] {
method commit_space (line 68) | fn commit_space(&mut self, space: Vec<u8>) {
method start_matching (line 85) | fn start_matching(&mut self, mut handle_sequence: impl for<'a> FnMut(Seq...
method skip_matching (line 88) | fn skip_matching(&mut self) {
type SuffixStore (line 95) | struct SuffixStore {
method with_capacity (line 104) | fn with_capacity(capacity: usize) -> Self {
method insert (line 112) | fn insert(&mut self, suffix: &[u8], idx: usize) {
method contains_key (line 118) | fn contains_key(&self, suffix: &[u8]) -> bool {
method get (line 124) | fn get(&self, suffix: &[u8]) -> Option<usize> {
method key (line 130) | fn key(&self, suffix: &[u8]) -> usize {
type WindowEntry (line 153) | struct WindowEntry {
type MatchGenerator (line 161) | pub(crate) struct MatchGenerator {
method new (line 177) | fn new(max_size: usize) -> Self {
method reset (line 189) | fn reset(&mut self, mut reuse_space: impl FnMut(Vec<u8>, SuffixStore)) {
method next_sequence (line 204) | fn next_sequence(&mut self, mut handle_sequence: impl for<'a> FnMut(Se...
method common_prefix_len (line 309) | fn common_prefix_len(a: &[u8], b: &[u8]) -> usize {
method mismatch_chunks (line 315) | fn mismatch_chunks<const N: usize>(xs: &[u8], ys: &[u8]) -> usize {
method add_suffixes_till (line 327) | fn add_suffixes_till(&mut self, idx: usize) {
method skip_matching (line 341) | fn skip_matching(&mut self) {
method add_data (line 350) | fn add_data(
method reserve (line 382) | fn reserve(&mut self, amount: usize, mut reuse_space: impl FnMut(Vec<u...
function matches (line 401) | fn matches() {
FILE: ruzstd/src/encoding/mod.rs
function compress (line 24) | pub fn compress<R: Read, W: Write>(source: R, target: W, level: Compress...
function compress_to_vec (line 37) | pub fn compress_to_vec<R: Read>(source: R, level: CompressionLevel) -> V...
type CompressionLevel (line 47) | pub enum CompressionLevel {
type Matcher (line 84) | pub trait Matcher {
method get_next_space (line 86) | fn get_next_space(&mut self) -> alloc::vec::Vec<u8>;
method get_last_space (line 88) | fn get_last_space(&mut self) -> &[u8];
method commit_space (line 90) | fn commit_space(&mut self, space: alloc::vec::Vec<u8>);
method skip_matching (line 92) | fn skip_matching(&mut self);
method start_matching (line 94) | fn start_matching(&mut self, handle_sequence: impl for<'a> FnMut(Seque...
method reset (line 96) | fn reset(&mut self, level: CompressionLevel);
method window_size (line 100) | fn window_size(&self) -> u64;
type Sequence (line 105) | pub enum Sequence<'data> {
FILE: ruzstd/src/encoding/util.rs
function find_min_size (line 7) | pub fn find_min_size(val: u64) -> usize {
function minify_val (line 27) | pub fn minify_val(val: u64) -> Vec<u8> {
function min_size_detection (line 39) | fn min_size_detection() {
function bytes_minified (line 50) | fn bytes_minified() {
FILE: ruzstd/src/fse/fse_decoder.rs
type FSEDecoder (line 5) | pub struct FSEDecoder<'table> {
function new (line 14) | pub fn new(table: &'t FSETable) -> FSEDecoder<'t> {
function decode_symbol (line 26) | pub fn decode_symbol(&self) -> u8 {
function init_state (line 32) | pub fn init_state(&mut self, bits: &mut BitReaderReversed<'_>) -> Result...
function update_state (line 43) | pub fn update_state(&mut self, bits: &mut BitReaderReversed<'_>) {
type FSETable (line 59) | pub struct FSETable {
method new (line 87) | pub fn new(max_symbol: u8) -> FSETable {
method reinit_from (line 98) | pub fn reinit_from(&mut self, other: &Self) {
method reset (line 108) | pub fn reset(&mut self) {
method build_decoder (line 116) | pub fn build_decoder(&mut self, source: &[u8], max_log: u8) -> Result<...
method build_from_probabilities (line 126) | pub fn build_from_probabilities(
method build_decoding_table (line 141) | fn build_decoding_table(&mut self) -> Result<(), FSETableError> {
method read_probabilities (line 224) | fn read_probabilities(&mut self, source: &[u8], max_log: u8) -> Result...
type Entry (line 312) | pub struct Entry {
constant ACC_LOG_OFFSET (line 324) | const ACC_LOG_OFFSET: u8 = 5;
function highest_bit_set (line 326) | fn highest_bit_set(x: u32) -> u32 {
function next_position (line 334) | fn next_position(mut p: usize, table_size: usize) -> usize {
function calc_baseline_and_numbits (line 340) | fn calc_baseline_and_numbits(
FILE: ruzstd/src/fse/fse_encoder.rs
type FSEEncoder (line 4) | pub(crate) struct FSEEncoder<'output, V: AsMut<Vec<u8>>> {
function new (line 10) | pub fn new(table: FSETable, writer: &mut BitWriter<V>) -> FSEEncoder<'_,...
function into_table (line 15) | pub fn into_table(self) -> FSETable {
function encode (line 26) | pub fn encode(&mut self, data: &[u8]) {
function encode_interleaved (line 53) | pub fn encode_interleaved(&mut self, data: &[u8]) {
function write_table (line 115) | fn write_table(&mut self) {
function acc_log (line 119) | pub(super) fn acc_log(&self) -> u8 {
type FSETable (line 125) | pub struct FSETable {
method next_state (line 133) | pub(crate) fn next_state(&self, symbol: u8, idx: usize) -> &State {
method start_state (line 138) | pub(crate) fn start_state(&self, symbol: u8) -> &State {
method acc_log (line 143) | pub fn acc_log(&self) -> u8 {
method write_table (line 147) | pub(crate) fn write_table<V: AsMut<Vec<u8>>>(&self, writer: &mut BitWr...
type SymbolStates (line 192) | pub(super) struct SymbolStates {
method get (line 199) | fn get(&self, idx: usize, max_idx: usize) -> &State {
type State (line 209) | pub(crate) struct State {
method contains (line 221) | fn contains(&self, idx: usize) -> bool {
function build_table_from_data (line 226) | pub fn build_table_from_data(
function build_table_from_counts (line 244) | fn build_table_from_counts(counts: &[usize], max_log: u8, avoid_0_numbit...
function build_table_from_probabilities (line 313) | pub(super) fn build_table_from_probabilities(probs: &[i32], acc_log: u8)...
function next_position (line 415) | fn next_position(mut p: usize, table_size: usize) -> usize {
constant ML_DIST (line 421) | const ML_DIST: &[i32] = &[
constant LL_DIST (line 426) | const LL_DIST: &[i32] = &[
constant OF_DIST (line 431) | const OF_DIST: &[i32] = &[
function default_ml_table (line 435) | pub(crate) fn default_ml_table() -> FSETable {
function default_ll_table (line 439) | pub(crate) fn default_ll_table() -> FSETable {
function default_of_table (line 443) | pub(crate) fn default_of_table() -> FSETable {
FILE: ruzstd/src/fse/mod.rs
function tables_equal (line 22) | fn tables_equal() {
function check_tables (line 32) | fn check_tables(dec_table: &fse_decoder::FSETable, enc_table: &fse_encod...
function roundtrip (line 46) | fn roundtrip() {
function round_trip (line 80) | pub fn round_trip(data: &[u8]) {
FILE: ruzstd/src/huff0/huff0_decoder.rs
constant MAX_MAX_NUM_BITS (line 9) | pub(crate) const MAX_MAX_NUM_BITS: u8 = 11;
type HuffmanDecoder (line 11) | pub struct HuffmanDecoder<'table> {
function new (line 19) | pub fn new(table: &'t HuffmanTable) -> HuffmanDecoder<'t> {
function decode_symbol (line 25) | pub fn decode_symbol(&mut self) -> u8 {
function init_state (line 32) | pub fn init_state(&mut self, br: &mut BitReaderReversed<'_>) -> u8 {
function next_state (line 41) | pub fn next_state(&mut self, br: &mut BitReaderReversed<'_>) -> u8 {
type HuffmanTable (line 57) | pub struct HuffmanTable {
method new (line 78) | pub fn new() -> HuffmanTable {
method reinit_from (line 93) | pub fn reinit_from(&mut self, other: &Self) {
method reset (line 104) | pub fn reset(&mut self) {
method build_decoder (line 117) | pub fn build_decoder(&mut self, source: &[u8]) -> Result<u32, HuffmanT...
method read_weights (line 132) | fn read_weights(&mut self, source: &[u8]) -> Result<u32, HuffmanTableE...
method build_table_from_weights (line 284) | fn build_table_from_weights(&mut self) -> Result<(), HuffmanTableError> {
method default (line 381) | fn default() -> Self {
type Entry (line 389) | pub struct Entry {
function highest_bit_set (line 398) | fn highest_bit_set(x: u32) -> u32 {
FILE: ruzstd/src/huff0/huff0_encoder.rs
type HuffmanEncoder (line 9) | pub(crate) struct HuffmanEncoder<'output, 'table, V: AsMut<Vec<u8>>> {
function new (line 15) | pub fn new<'o, 't>(
function encode (line 27) | pub fn encode(&mut self, data: &[u8], with_table: bool) {
function encode4x (line 39) | pub fn encode4x(&mut self, data: &[u8], with_table: bool) {
function encode_stream (line 87) | fn encode_stream<VV: AsMut<Vec<u8>>>(
function weights (line 106) | pub(super) fn weights(&self) -> Vec<u8> {
function write_table (line 119) | fn write_table(&mut self) {
type HuffmanTable (line 156) | pub struct HuffmanTable {
method build_from_data (line 162) | pub fn build_from_data(data: &[u8]) -> Self {
method build_from_counts (line 173) | pub fn build_from_counts(counts: &[usize]) -> Self {
method build_from_weights (line 196) | pub fn build_from_weights(weights: &[usize]) -> Self {
method can_encode (line 255) | pub fn can_encode(&self, other: &Self) -> Option<usize> {
function highest_bit_set (line 271) | fn highest_bit_set(x: usize) -> usize {
function huffman (line 277) | fn huffman() {
function distribute_weights (line 295) | fn distribute_weights(amount: usize) -> Vec<usize> {
function redistribute_weights (line 345) | fn redistribute_weights(weights: &mut [usize], max_num_bits: usize) {
function weights (line 402) | fn weights() {
function counts (line 448) | fn counts() {
function from_data (line 475) | fn from_data() {
FILE: ruzstd/src/huff0/mod.rs
function round_trip (line 15) | pub fn round_trip(data: &[u8]) {
function roundtrip (line 59) | fn roundtrip() {
FILE: ruzstd/src/io_nostd.rs
type ErrorKind (line 7) | pub enum ErrorKind {
method as_str (line 16) | fn as_str(&self) -> &'static str {
method fmt (line 29) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
type Error (line 34) | pub struct Error {
method fmt (line 40) | fn fmt(&self, f: &mut alloc::fmt::Formatter<'_>) -> Result<(), alloc::...
method new (line 51) | pub fn new(kind: ErrorKind, err: Box<dyn core::fmt::Display + Send + S...
method from (line 58) | pub fn from(kind: ErrorKind) -> Self {
method kind (line 62) | pub fn kind(&self) -> ErrorKind {
method is_interrupted (line 66) | pub fn is_interrupted(&self) -> bool {
method get_ref (line 70) | pub fn get_ref(&self) -> Option<&(dyn core::fmt::Display + Send + Sync...
method into_inner (line 74) | pub fn into_inner(self) -> Option<Box<dyn core::fmt::Display + Send + ...
method fmt (line 80) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
method from (line 92) | fn from(value: ErrorKind) -> Self {
type Read (line 97) | pub trait Read {
method read (line 98) | fn read(&mut self, buf: &mut [u8]) -> Result<usize, Error>;
method read_exact (line 100) | fn read_exact(&mut self, mut buf: &mut [u8]) -> Result<(), Error> {
method read_to_end (line 119) | fn read_to_end(&mut self, output: &mut alloc::vec::Vec<u8>) -> Result<...
method take (line 131) | fn take(self, limit: u64) -> Take<Self>
method read (line 140) | fn read(&mut self, buf: &mut [u8]) -> Result<usize, Error> {
method read (line 159) | fn read(&mut self, buf: &mut [u8]) -> Result<usize, Error> {
method read (line 192) | fn read(&mut self, buf: &mut [u8]) -> Result<usize, Error> {
type Take (line 164) | pub struct Take<R: Read> {
function limit (line 170) | pub fn limit(&self) -> u64 {
function set_limit (line 174) | pub fn set_limit(&mut self, limit: u64) {
function get_ref (line 178) | pub fn get_ref(&self) -> &R {
function get_mut (line 182) | pub fn get_mut(&mut self) -> &mut R {
function into_inner (line 186) | pub fn into_inner(self) -> R {
type Write (line 204) | pub trait Write {
method write (line 205) | fn write(&mut self, buf: &[u8]) -> Result<usize, Error>;
method flush (line 206) | fn flush(&mut self) -> Result<(), Error>;
method write_all (line 207) | fn write_all(&mut self, mut buf: &[u8]) -> Result<(), Error> {
method write (line 226) | fn write(&mut self, buf: &[u8]) -> Result<usize, Error> {
method flush (line 230) | fn flush(&mut self) -> Result<(), Error> {
method write (line 237) | fn write(&mut self, data: &[u8]) -> Result<usize, Error> {
method flush (line 245) | fn flush(&mut self) -> Result<(), Error> {
method write (line 252) | fn write(&mut self, data: &[u8]) -> Result<usize, Error> {
method flush (line 257) | fn flush(&mut self) -> Result<(), Error> {
FILE: ruzstd/src/lib.rs
constant VERBOSE (line 24) | pub(crate) const VERBOSE: bool = false;
FILE: ruzstd/src/tests/bit_reader.rs
function test_bitreader_reversed (line 2) | fn test_bitreader_reversed() {
function test_bitreader_normal (line 42) | fn test_bitreader_normal() {
FILE: ruzstd/src/tests/decode_corpus.rs
function test_decode_corpus_files (line 2) | fn test_decode_corpus_files() {
FILE: ruzstd/src/tests/dict_test.rs
function test_dict_parsing (line 2) | fn test_dict_parsing() {
function test_dict_decoding (line 78) | fn test_dict_decoding() {
FILE: ruzstd/src/tests/encode_corpus.rs
function test_encode_corpus_files_uncompressed_our_decompressor (line 2) | fn test_encode_corpus_files_uncompressed_our_decompressor() {
function test_encode_corpus_files_uncompressed_original_decompressor (line 57) | fn test_encode_corpus_files_uncompressed_original_decompressor() {
function test_encode_corpus_files_compressed_our_decompressor (line 119) | fn test_encode_corpus_files_compressed_our_decompressor() {
function test_encode_corpus_files_compressed_original_decompressor (line 174) | fn test_encode_corpus_files_compressed_original_decompressor() {
FILE: ruzstd/src/tests/fuzz_regressions.rs
function test_all_artifacts (line 2) | fn test_all_artifacts() {
FILE: ruzstd/src/tests/mod.rs
function read (line 12) | fn read(&mut self, buf: &mut [u8]) -> Result<usize, crate::io_nostd::Err...
function assure_error_impl (line 28) | fn assure_error_impl() {
function assure_decoder_send_sync (line 37) | fn assure_decoder_send_sync() {
function skippable_frame (line 48) | fn skippable_frame() {
function test_frame_header_reading (line 81) | fn test_frame_header_reading() {
function test_block_header_reading (line 90) | fn test_block_header_reading() {
function test_frame_decoder (line 104) | fn test_frame_decoder() {
function test_decode_from_to (line 130) | fn test_decode_from_to() {
function test_specific_file (line 233) | fn test_specific_file() {
function test_streaming (line 296) | fn test_streaming() {
function test_incremental_read (line 383) | fn test_incremental_read() {
function test_streaming_no_std (line 408) | fn test_streaming_no_std() {
function test_decode_all (line 491) | fn test_decode_all() {
function verbose_disabled (line 585) | fn verbose_disabled() {
Copy disabled (too large)
Download .json
Condensed preview — 735 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (10,757K chars).
[
{
"path": ".github/workflows/ci.yml",
"chars": 1619,
"preview": "on: [push, pull_request]\n\nname: CI\n\njobs:\n tests:\n name: stable lint, test, build\n runs-on: ubuntu-latest\n "
},
{
"path": ".gitignore",
"chars": 133,
"preview": "/target\n**/*.rs.bk\nCargo.lock\n/local_corpus_files\n/local_dict_corpus_files\n/orig-zstd\nfuzz_decodecorpus\nperf.data*\nfuzz/"
},
{
"path": "Cargo.toml",
"chars": 55,
"preview": "[workspace]\nresolver = \"3\"\nmembers = [\"ruzstd\", \"cli\"]\n"
},
{
"path": "Changelog.md",
"chars": 2320,
"preview": "# Changelog\n\nThis document records the changes made between versions, starting with version 0.5.0\n\n# After 0.8.2 (Curren"
},
{
"path": "LICENSE",
"chars": 1075,
"preview": "MIT License\n\nCopyright (c) 2019 Moritz Borcherding\n\nPermission is hereby granted, free of charge, to any person obtainin"
},
{
"path": "Readme.md",
"chars": 6360,
"preview": "# Ruzstd (a pure rust zstd format implementation)\n\n[](https://docs"
},
{
"path": "cli/Cargo.toml",
"chars": 948,
"preview": "\n[package]\nname = \"ruzstd-cli\"\nversion = \"0.8.2\"\nrust-version = \"1.87.0\"\nauthors = [\"Moritz Borcherding <moritz.borcherd"
},
{
"path": "cli/src/main.rs",
"chars": 5735,
"preview": "extern crate ruzstd;\nmod progress;\nuse progress::ProgressMonitor;\n\nuse std::fs::File;\nuse std::io::BufReader;\nuse std::p"
},
{
"path": "cli/src/progress.rs",
"chars": 5751,
"preview": "// ! Utilities for displaying a progress monitor to track compression/decompression/whatever else\n//!\n//! This implement"
},
{
"path": "optimizations.md",
"chars": 1529,
"preview": "# Optimizations\nThis document tracks which optimizations have been done after the initial implementation passed corpus t"
},
{
"path": "ruzstd/Cargo.toml",
"chars": 1517,
"preview": "[package]\nname = \"ruzstd\"\nversion = \"0.8.3\"\nrust-version = \"1.87\"\nauthors = [\"Moritz Borcherding <moritz.borcherding@web"
},
{
"path": "ruzstd/benches/decode_all.rs",
"chars": 524,
"preview": "use criterion::{criterion_group, criterion_main, Criterion};\nuse ruzstd::decoding::FrameDecoder;\n\nfn criterion_benchmark"
},
{
"path": "ruzstd/decodecorpus_files/abc.txt",
"chars": 26,
"preview": "abcdefghijklmnopqrstuvwxy\n"
},
{
"path": "ruzstd/decodecorpus_files/z000000",
"chars": 223864,
"preview": "________________________________________________________________________________________________________________________"
},
{
"path": "ruzstd/decodecorpus_files/z000001",
"chars": 12,
"preview": "d(ʟ\u001a/\u0012Bpl\u00156p"
},
{
"path": "ruzstd/decodecorpus_files/z000002",
"chars": 413,
"preview": "oooooooooooooooooooooooooooooo@oooooooooooooooooooooooooooooooooo\u0011oooooooooooooooooooo@oooooooooooooooooooooooooooo@oooo"
},
{
"path": "ruzstd/decodecorpus_files/z000004",
"chars": 67792,
"preview": "))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))"
},
{
"path": "ruzstd/decodecorpus_files/z000005",
"chars": 0,
"preview": ""
},
{
"path": "ruzstd/decodecorpus_files/z000009",
"chars": 0,
"preview": ""
},
{
"path": "ruzstd/decodecorpus_files/z000011",
"chars": 353969,
"preview": "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"
},
{
"path": "ruzstd/decodecorpus_files/z000013",
"chars": 1,
"preview": "\u0001"
},
{
"path": "ruzstd/decodecorpus_files/z000014",
"chars": 29639,
"preview": "~\rB~\r~$`\r\r\r~\rB~\r~$`\r\r\r~\rB~\r\r~\r\r`Y\r~~~\r\r~\r\r\r~\rB~\r~$`\r\r\r~\rB~\r~$`\r\r\r~\rB~\r\r~\r\r`Y\r~~~\r\r~\r\r\r~~`~~~\r\r~\r\r\r~\rB~\r~$`\r\r\rB~\r~$`\r\r\r~\r"
},
{
"path": "ruzstd/decodecorpus_files/z000015",
"chars": 63,
"preview": "ppppppppp\u000eU?\u000eҜ\u000ep{ppppp\u000eU{ҡ{ݬUݡҡpppp?J?p{p͡??${\u000e?\u0019??ҡ?ҡ\u000epp???\u000eU?"
},
{
"path": "ruzstd/decodecorpus_files/z000016",
"chars": 1271,
"preview": "\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007\u0007"
},
{
"path": "ruzstd/decodecorpus_files/z000017",
"chars": 14791,
"preview": ".R^'> \u001b> \u001b> \u001b>0.R^'> \u001b\u001b> \u001b> \u001b>0.R^'> \u001b\u001b> \u001b> \u001b>0a\u001b#U\u0002(\u0014'> \u001b> \u001b> \u001b>0.R^'> \u001b\u001b> '> \u001b\u001b> '> Fߤ~R^'> \u001b\u001b> \u001b> \u001b>0.ƪ;\u0002(\u0014'> \u0018\u000e '> "
},
{
"path": "ruzstd/decodecorpus_files/z000018",
"chars": 7162,
"preview": "߶߶߶߶߶\u0006`߶߶-߶߶߶ߋ߶߶5߶߶߶߶1߶߶`5߶߶߶ߋ߶`ߋ5߶߶߶߶߶߶߶߉߶߶5߶߶߶߶߶߶߶`5߶߶߶߶11߶߶ߴ߶߶߶5߶\bߋ߶߶5߶\u0006߶߶5߶߶\n߶1߶߶5߶߶߶5߶߶߶`1߶߲߶߶߶\n\n^߶߶߶\n^5߶\n߶\n^߶߶߶߶3ߋ"
},
{
"path": "ruzstd/decodecorpus_files/z000019",
"chars": 0,
"preview": ""
},
{
"path": "ruzstd/decodecorpus_files/z000020",
"chars": 15363,
"preview": "\r\r\r\r\r\rA\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\rڧ\rtڧ\r\r\rA\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\rt\r\r\r\r\r\r\r\r\r\r\r\rt\rt\r\r\r\r\r\r\r\r\r\r\r\r\r\rA\r\r\r\r\r\r\r\r\r\r\r\r\rt\r\r\r\r\r\rttA\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\rڧ\r"
},
{
"path": "ruzstd/decodecorpus_files/z000021",
"chars": 80563,
"preview": "ddddddddddddddddIddddIddddIddddddddddddddddIddddIddddIddddddddddddddddIddddIdddddddddddddddddIddddIddd[ddddddddddddddddd"
},
{
"path": "ruzstd/decodecorpus_files/z000022",
"chars": 199191,
"preview": "\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005"
},
{
"path": "ruzstd/decodecorpus_files/z000024",
"chars": 18119,
"preview": "yyyyyyyyyyyyy\u0001yy\u0001Fyyyyyyyyyyyyyyνy\u0001yyyy\u0001yyyyν\u0001yyy\u0001y\u0001yyyyy\u0001ννyy\u0001yyyyyyyy\u0001߽yyΛyyyy\u0001νyyyyyyyyy\u0001y\u0001νy\u0001yy\u0001\u0001yννyyyyy\u0001y\u0001yyy"
},
{
"path": "ruzstd/decodecorpus_files/z000026",
"chars": 230087,
"preview": ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
},
{
"path": "ruzstd/decodecorpus_files/z000027",
"chars": 287670,
"preview": "'\u0002\u0002\u0002\u0002\u0002\u0002\u0002'\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002'\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002'\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002'\u0002\u0002\u0002'\u0002\u0002\u0002''L'\u0002\u0002\u0002'\u0002\u0002\u0002''L'\u0002\u0002\u0002'\u0002'\u0002'\u0002\u0002\u0002\u0002'\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002'\u0002\u0002\u0002\u0002''L'\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002\u0002''''\u0002'\u0002'\u0002\u0002'\u0002"
},
{
"path": "ruzstd/decodecorpus_files/z000028",
"chars": 100176,
"preview": "\r\u000f\n\t\u0002\f\b\u0005\u000f\t\t\u000e\b\u0001\u000e\u0002\u0006\u0003\u0003\n\u000b\b\u0005\f\u0003\t\n\b\n\n\u0002\u0005\n\u0003\u000b\u0004\u000e\u000f\u0007\u0002\u000b\u0003\t\u0006\u0004\n\u0000\u0000\n\u0007\u0000\r\b\t\u0001\u0007\r\u0003\u0007\f\u000f\b\r\u0005\u0002\u000f\b\u0003\u0007\u0000\f\f\u000e\b\u000e\u0001\u0000\r\n\u0002\u0005\u000e\n\u0001\t\u0002\b\u000e\u0000\u0007\u0006\u0005\f\r\b\u000e\f\r\u0001\u0007\r\u0005\u0001\u0007\u0006\u000e\u0000\u0007\u0003\u0006\u0004\b\u0001\f\u0001\t\u0007\r\b\u0004"
},
{
"path": "ruzstd/decodecorpus_files/z000029",
"chars": 236,
"preview": "ϱϱϱϱޱޱϱޱϱޱϱϱޱϱޓޱϢޱޱuuޱޱϱϱϱޱޱϱޱޱޱϢޱޱޱޱϱޱޱޱޱޱޱϱޱޢޢޱϱޱޱޱϱޱޓޱޱޱϱޱޱޱޓޱޱޱϱuϱޱϱϱޓϓϱϱޢޓϱޱޱޱޓޱޢޱϱޱޱϱϱޱޱޱޢޓuޢޱޢϓϱޱޓޱޱϱޱϱޱϱޱޢޢϢޢޱϱޓ"
},
{
"path": "ruzstd/decodecorpus_files/z000031",
"chars": 62,
"preview": "\u0005\u0005\u0005\u001a\u0005/\u0005\u0005\u0005\u001a\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u001a\u0005\u0005\u0005\u0005\u001a\u0005\u001a\u0005\u0005\u0005\u0005\u0005\u0005\u001a\u001a\u0005D\u0005\u001a\u0005\u0005\u0005\u0005\u0005\u0005\u0005\u001a\u001a\u0005\u001a\u0005\u0005\u0005\u0005\u0005\u0005D\u0005\u001a\u0005\u0005\u0005"
},
{
"path": "ruzstd/decodecorpus_files/z000032",
"chars": 3,
"preview": "\f\f\f"
},
{
"path": "ruzstd/decodecorpus_files/z000036",
"chars": 9,
"preview": "[5V\u0013e##sR"
},
{
"path": "ruzstd/decodecorpus_files/z000040",
"chars": 359288,
"preview": "jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"
},
{
"path": "ruzstd/decodecorpus_files/z000042",
"chars": 2,
"preview": "r\""
},
{
"path": "ruzstd/decodecorpus_files/z000044",
"chars": 269735,
"preview": "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&EEE&EE&&&&&&&&&&&&&&&&&&&&&EEE&EE&&&&&&&&&&&&&&&&&&&&&EEE&EE&&&&&&&&&&&&&"
},
{
"path": "ruzstd/decodecorpus_files/z000045",
"chars": 622,
"preview": "\u0004\u00197\"\u0001\u001c\u001css...s..s....ss\u0019........ss.sss.s.\u0019ss.....s....s........s.......s..s...Ը.ss..s..s.s..ss..釸s.s.B..s...s..s..sB.s.\u001cB"
},
{
"path": "ruzstd/decodecorpus_files/z000047",
"chars": 114819,
"preview": "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP"
},
{
"path": "ruzstd/decodecorpus_files/z000048",
"chars": 24519,
"preview": "zzzzzzzzzzzzzzzzzzzzzzzzzzzzNdzzzzzzzzzzzzNzzzzzzzzzzzzzzzzzzz-zzzzzzzdzzzzzzzzzYzNzzzzzzzzzzzzozzzzzzzzzzzzzzzzzzzzzzzz"
},
{
"path": "ruzstd/decodecorpus_files/z000049",
"chars": 2312,
"preview": "777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777"
},
{
"path": "ruzstd/decodecorpus_files/z000051",
"chars": 261052,
"preview": "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
},
{
"path": "ruzstd/decodecorpus_files/z000054",
"chars": 26647,
"preview": "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy\u000e\u000e\u000eyyyyyyyyyyyyyyyyyyyyyyyyyyy"
},
{
"path": "ruzstd/decodecorpus_files/z000056",
"chars": 4025,
"preview": "cccccccccccccccccccccccccccccc%c%ccĩccccĩcc-cĩccHcccc-ckcccĆcccc-cc%cccĆ%cccĆ%c%c%ccĩccccĩcccccccccccc%ccc-ccccc%cccccĩc"
},
{
"path": "ruzstd/decodecorpus_files/z000057",
"chars": 109861,
"preview": "\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f"
},
{
"path": "ruzstd/decodecorpus_files/z000059",
"chars": 721,
"preview": "\u001c:\u001c\u001c\u001c\u001c\u001c\u001c\u001c\u001c\u001c\u001c\u001c\u001c\u001cX\u001c:\u001c\u001c:\u001c\u001c::\u001c\u001c:\u001c\u001c::\u001c\u001c::\u001c:\u0005:獫:\u001c\u001c::\u001c\u001c\u001c\u001c:竍\u001c\u001c\u001c:\u001cɫX\u001c\u001c\u001c:\u001c:\u001c\u001c\u001c\u001c\u001c:\u001c\u001c\u001c:\u001c\u001c:\u001c\u001c\u001c\u001c::\u001c:\u001c:\u001c::v\u001cɍ\u001c\u001cX\u001c\u001cɍ\u001c\u001c\u001c:::獍\u001c\u001c\u001c\u001c\u001c\u001c\u001c\u001c\u001c\u001c\u001c\u001c\u001c"
},
{
"path": "ruzstd/decodecorpus_files/z000060",
"chars": 4549,
"preview": "F\u0003\u0003FF\u0003\u0003F\u0003\u0003\u0003\u0003\u0003\u0003F}:\u0003FF}\u0003}F}FFF\u0003\u0003F\u0003\u0003\u0003F:FF\u0003\u0003FFFF}FF\u0003\u0003\u0003}:F:F\u0003F\u0003F}F\u0003\u0003F\u0003\u0003F\u0003FF:\u0003}}F\u0003FF}FFFF}\u0003FFF\u0003FF:FF:FFF\u0003\u0003F\u0003\u0003F}}:\u0003FFF\u0003F.\u0003F\u0003\u0003FF"
},
{
"path": "ruzstd/decodecorpus_files/z000062",
"chars": 0,
"preview": ""
},
{
"path": "ruzstd/decodecorpus_files/z000065",
"chars": 63530,
"preview": "999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999"
},
{
"path": "ruzstd/decodecorpus_files/z000069",
"chars": 8572,
"preview": "^^^^^^^^^^^^^^^^^^^^^^^^s^^^^^^^^s^^^^^^^^^^^^^^^s^^^^^^^ss^^^s^^^^^^^^^^^^^s^^s^^s^^^^^s^s^^^^^^s^^^^s^^^ssss^^^^^^s^^^"
},
{
"path": "ruzstd/decodecorpus_files/z000070",
"chars": 403062,
"preview": "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII"
},
{
"path": "ruzstd/decodecorpus_files/z000073",
"chars": 770,
"preview": "ttOtt\u0005tttttO*tOttttOttttttttttOtttOtttOOttttOttttO*tOtt*tttttttttOtOttOttOtt*ttttOtttttOtOOtttt*OtOtttttttOttttO*tttOttO"
},
{
"path": "ruzstd/decodecorpus_files/z000075",
"chars": 0,
"preview": ""
},
{
"path": "ruzstd/decodecorpus_files/z000076",
"chars": 14510,
"preview": "aaaaaaa\u0016\u0016\u0010z/z\u0016H/\u0016/aaaa\u0016\u0016\u0010z/\u0016H\u0016\u0016aH\u0016H\u0016H\u0016H\u0016H\u0016H\u0016H\u0016H\u0016H\u0016H\u0016H\u0016H\u0016H\u0016H\u0016HaaHHHHHH/a//zzHa//aH//\u0016H//H\u0016\u0016\u0016H\u0016\u0016)))))))\u0016H\u0016H\u0016H\u0016H\u0016H\u0016H\u0016H\u0016\u0016z\u0016z"
},
{
"path": "ruzstd/decodecorpus_files/z000077",
"chars": 4,
"preview": "؉\u0005'v"
},
{
"path": "ruzstd/decodecorpus_files/z000079",
"chars": 347501,
"preview": "????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????"
},
{
"path": "ruzstd/decodecorpus_files/z000084",
"chars": 100,
"preview": "WWWWZWWWWWWWWWWW%WWWWZWWW%%WZW%W%W%]WZW%(WW%%WZW%W%W%]WWWWW%WWWWWZvvvvvvvvvvvvvvߋvvvʋvvvvvvʋvvvvvv$'"
},
{
"path": "ruzstd/decodecorpus_files/z000085",
"chars": 11,
"preview": "UUUU\u001bq{X\\g("
},
{
"path": "ruzstd/decodecorpus_files/z000086",
"chars": 22,
"preview": "___________MM___M_____"
},
{
"path": "ruzstd/decodecorpus_files/z000087",
"chars": 3718,
"preview": "쒒\u0019쒒쒒Β쒒Β쒒Β\nݒ쒒Β7ΒݒΒ\u0019ΒݒݒݒΒ\u0019Βݒݒݒ\u0019Β\u0019Βݒݒ쒒\nݒF쒒7ݒΒΒݒ\u0019ݒ(쒒\u0019ݒΒΒ\n(\u0019ΒΒ쒒ݒ\n\nΒΒF쒒Βݒ쒒UΒΒ쒒ݒ쒒쒒쒒Β쒒쒒쒒7Βݒ\n7\u0019\u0019Uݒ\n쒒ݒ쒒ݒΒݒݒݒݒ쒒쒒ΒΒ7ݒ(Β쿒\nFݒΒ>w7J]LuR"
},
{
"path": "ruzstd/decodecorpus_files/z000088",
"chars": 219201,
"preview": "\u000b\u000b\u000b\u000b\u000b]\u000b\u000bz\u000b\u000b\u000b\u000bz\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b@\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b]\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000bѴ\u000b\u000b\u000b\u000b\u000b@\u000bї\u000b\u000b\u000b]\u000bz]@\u000b\u000b\u000bz\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000b\u000bї\u000bѴ\u000b\u000b\u000bzz\u000bї\u000b\u000bzzz\u000b\u000b\u000b\u000b@z\u000b\u000b\u000b\u000b\u000b"
},
{
"path": "ruzstd/decodecorpus_files/z000089",
"chars": 438,
"preview": " DiE E EEDE iD EE DiEEEE \u001f h Ei DEEEiEEiE \u001fE\u001fEEEEE D Eii iiDDED E Dii h E EE DiDEiiE֎ ED E EEDEiiE hײiiEiEi\u001fhECD"
},
{
"path": "ruzstd/decodecorpus_files/z000091",
"chars": 490650,
"preview": "tt1t55t55555tt55555tt55555tt55555tt55555tt55555tt55555tt5555tt5555ttttt5555t5t55t5555555t555t55555555tt55555t5t5115tt55t"
},
{
"path": "ruzstd/decodecorpus_files/z000093",
"chars": 1,
"preview": "I"
},
{
"path": "ruzstd/decodecorpus_files/z000094",
"chars": 218,
"preview": "3\u00027Q\u0015`Y8Y8YzY88YYY88zzz8Y88888888888Y88888888888888Y8888z88z888Y8Yz8888Y888Yz888z8z8Y88888z8Y8z88z8YYz888Y888Y888888Yz88"
},
{
"path": "ruzstd/decodecorpus_files/z000097",
"chars": 374398,
"preview": "{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{"
},
{
"path": "ruzstd/decodecorpus_files/z000098",
"chars": 0,
"preview": ""
},
{
"path": "ruzstd/decodecorpus_files/z000099",
"chars": 0,
"preview": ""
},
{
"path": "ruzstd/dict_tests/files/ModemManager.service",
"chars": 409,
"preview": "[Unit]\nDescription=Modem Manager\n\n[Service]\nType=dbus\nBusName=org.freedesktop.ModemManager1\nExecStart=/usr/bin/ModemMana"
},
{
"path": "ruzstd/dict_tests/files/NetworkManager-dispatcher.service",
"chars": 630,
"preview": "[Unit]\nDescription=Network Manager Script Dispatcher Service\n\n# Order the dispatcher before NetworkManager. While dispat"
},
{
"path": "ruzstd/dict_tests/files/NetworkManager-wait-online.service",
"chars": 302,
"preview": "[Unit]\nDescription=Network Manager Wait Online\nDocumentation=man:nm-online(1)\nRequires=NetworkManager.service\nAfter=Netw"
},
{
"path": "ruzstd/dict_tests/files/NetworkManager.service",
"chars": 1173,
"preview": "[Unit]\nDescription=Network Manager\nDocumentation=man:NetworkManager(8)\nWants=network.target\nAfter=network-pre.target dbu"
},
{
"path": "ruzstd/dict_tests/files/auditd.service",
"chars": 1396,
"preview": "[Unit]\nDescription=Security Auditing Service\nDefaultDependencies=no\n## If auditd is sending or recieving remote logging,"
},
{
"path": "ruzstd/dict_tests/files/autovt@.service",
"chars": 1952,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/avahi-daemon.service",
"chars": 1042,
"preview": "# This file is part of avahi.\n#\n# avahi is free software; you can redistribute it and/or modify it\n# under the terms of "
},
{
"path": "ruzstd/dict_tests/files/avahi-dnsconfd.service",
"chars": 975,
"preview": "# This file is part of avahi.\n#\n# avahi is free software; you can redistribute it and/or modify it\n# under the terms of "
},
{
"path": "ruzstd/dict_tests/files/blk-availability.service",
"chars": 428,
"preview": "[Unit]\nDescription=Availability of block devices\nBefore=shutdown.target\nAfter=lvm2-activation.service lvm2-lvmetad.servi"
},
{
"path": "ruzstd/dict_tests/files/btrfs-scrub@.service",
"chars": 140,
"preview": "[Unit]\nDescription=Btrfs scrub on %f\n\n[Service]\nNice=19\nIOSchedulingClass=idle\nKillSignal=SIGINT\nExecStart=/usr/bin/btrf"
},
{
"path": "ruzstd/dict_tests/files/canberra-system-bootup.service",
"chars": 491,
"preview": "[Unit]\nDescription=Play Bootup Sound\nDefaultDependencies=no\nAfter=alsa-restore.service\nBefore=shutdown.target\nConflicts="
},
{
"path": "ruzstd/dict_tests/files/canberra-system-shutdown-reboot.service",
"chars": 509,
"preview": "[Unit]\nDescription=Play Reboot Sound\nDefaultDependencies=no\nBefore=shutdown.target\n\n# A little optimization under the as"
},
{
"path": "ruzstd/dict_tests/files/canberra-system-shutdown.service",
"chars": 466,
"preview": "[Unit]\nDescription=Play Shutdown Sound\nDefaultDependencies=no\nBefore=shutdown.target\n\n# A little optimization under the "
},
{
"path": "ruzstd/dict_tests/files/clean-mount-point@.service",
"chars": 169,
"preview": "[Unit]\nDescription=Clean the %f mount point\nBefore=%i.mount\nBindsTo=%i.mount\nDefaultDependencies=no\n\n[Service]\nType=ones"
},
{
"path": "ruzstd/dict_tests/files/colord.service",
"chars": 291,
"preview": "[Unit]\nDescription=Manage, Install and Generate Color Profiles\n\n[Service]\nType=dbus\nBusName=org.freedesktop.ColorManager"
},
{
"path": "ruzstd/dict_tests/files/console-getty.service",
"chars": 1042,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/container-getty@.service",
"chars": 1223,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/cpupower.service",
"chars": 212,
"preview": "[Unit]\nDescription=Apply cpupower configuration\n\n[Service]\nType=oneshot\nEnvironmentFile=/etc/default/cpupower\nExecStart="
},
{
"path": "ruzstd/dict_tests/files/dbus-org.freedesktop.hostname1.service",
"chars": 1140,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/dbus-org.freedesktop.import1.service",
"chars": 1031,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/dbus-org.freedesktop.locale1.service",
"chars": 1129,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/dbus-org.freedesktop.login1.service",
"chars": 2012,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/dbus-org.freedesktop.machine1.service",
"chars": 1324,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/dbus-org.freedesktop.portable1.service",
"chars": 997,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/dbus-org.freedesktop.timedate1.service",
"chars": 1123,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/dbus.service",
"chars": 380,
"preview": "[Unit]\nDescription=D-Bus System Message Bus\nDocumentation=man:dbus-daemon(1)\nRequires=dbus.socket\n\n[Service]\nExecStart=/"
},
{
"path": "ruzstd/dict_tests/files/debug-shell.service",
"chars": 1055,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/dhcpcd.service",
"chars": 233,
"preview": "[Unit]\nDescription=dhcpcd on all interfaces\nWants=network.target\nBefore=network.target\n\n[Service]\nType=forking\nPIDFile=/"
},
{
"path": "ruzstd/dict_tests/files/dhcpcd@.service",
"chars": 316,
"preview": "[Unit]\nDescription=dhcpcd on %I\nWants=network.target\nBefore=network.target\nBindsTo=sys-subsystem-net-devices-%i.device\nA"
},
{
"path": "ruzstd/dict_tests/files/dm-event.service",
"chars": 344,
"preview": "[Unit]\nDescription=Device-mapper event daemon\nDocumentation=man:dmeventd(8)\nRequires=dm-event.socket\nAfter=dm-event.sock"
},
{
"path": "ruzstd/dict_tests/files/dmraid.service",
"chars": 336,
"preview": "[Unit]\nDescription=Assemble FakeRAID arrays\nDefaultDependencies=no\nRequires=systemd-udev-settle.service\nAfter=systemd-ud"
},
{
"path": "ruzstd/dict_tests/files/dnsmasq.service",
"chars": 346,
"preview": "[Unit]\nDescription=A lightweight DHCP and caching DNS server\nAfter=network.target\nDocumentation=man:dnsmasq(8)\n\n[Service"
},
{
"path": "ruzstd/dict_tests/files/e2scrub@.service",
"chars": 441,
"preview": "[Unit]\nDescription=Online ext4 Metadata Check for %I\nOnFailure=e2scrub_fail@%i.service\nDocumentation=man:e2scrub(8)\n\n[Se"
},
{
"path": "ruzstd/dict_tests/files/e2scrub_all.service",
"chars": 300,
"preview": "[Unit]\nDescription=Online ext4 Metadata Check for All Filesystems\nConditionACPower=true\nConditionCapability=CAP_SYS_ADMI"
},
{
"path": "ruzstd/dict_tests/files/e2scrub_fail@.service",
"chars": 228,
"preview": "[Unit]\nDescription=Online ext4 Metadata Check Failure Reporting for %I\nDocumentation=man:e2scrub(8)\n\n[Service]\nType=ones"
},
{
"path": "ruzstd/dict_tests/files/e2scrub_reap.service",
"chars": 553,
"preview": "[Unit]\nDescription=Remove Stale Online ext4 Metadata Check Snapshots\nConditionCapability=CAP_SYS_ADMIN\nConditionCapabili"
},
{
"path": "ruzstd/dict_tests/files/ebtables.service",
"chars": 272,
"preview": "[Unit]\nDescription=Ethernet bridge table\nBefore=network-pre.target\nWants=network-pre.target\n\n[Service]\nType=oneshot\nRema"
},
{
"path": "ruzstd/dict_tests/files/emergency.service",
"chars": 801,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/fancontrol.service",
"chars": 239,
"preview": "[Unit]\nDescription=Start fan control, if configured\nConditionFileNotEmpty=/etc/fancontrol\nAfter=lm_sensors.service\n\n[Ser"
},
{
"path": "ruzstd/dict_tests/files/firewalld.service",
"chars": 653,
"preview": "[Unit]\nDescription=firewalld - dynamic firewall daemon\nBefore=network-pre.target\nWants=network-pre.target\nAfter=dbus.ser"
},
{
"path": "ruzstd/dict_tests/files/fstrim.service",
"chars": 431,
"preview": "[Unit]\nDescription=Discard unused blocks on filesystems from /etc/fstab\nDocumentation=man:fstrim(8)\n\n[Service]\nType=ones"
},
{
"path": "ruzstd/dict_tests/files/ftpd.service",
"chars": 205,
"preview": "[Unit]\nDescription=FTPD Daemon\nAfter=network.target\n\n[Service]\nType=forking\nPIDFile=/run/ftpd.pid\nExecStart=/usr/bin/ftp"
},
{
"path": "ruzstd/dict_tests/files/getty@.service",
"chars": 1952,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/git-daemon@.service",
"chars": 324,
"preview": "[Unit]\nDescription=Git Daemon Instance\n\n[Service]\nUser=git\n# The '-' is to ignore non-zero exit statuses\nExecStart=-/usr"
},
{
"path": "ruzstd/dict_tests/files/gluster-ta-volume.service",
"chars": 425,
"preview": "[Unit]\nDescription=GlusterFS, Thin-arbiter process to maintain quorum for replica volume\nAfter=network.target\n\n[Service]"
},
{
"path": "ruzstd/dict_tests/files/glusterd.service",
"chars": 496,
"preview": "[Unit]\nDescription=GlusterFS, a clustered file-system server\nDocumentation=man:glusterd(8)\nRequires=rpcbind.service\nAfte"
},
{
"path": "ruzstd/dict_tests/files/glustereventsd.service",
"chars": 401,
"preview": "[Unit]\nDescription=Gluster Events Notifier\nAfter=network.target\nDocumentation=man:glustereventsd(8)\n\n\n[Service]\nEnvironm"
},
{
"path": "ruzstd/dict_tests/files/glusterfssharedstorage.service",
"chars": 294,
"preview": "[Unit]\nDescription=Mount glusterfs sharedstorage\nRequires=glusterd.service remote-fs-pre.target local-fs.target\n\n[Servic"
},
{
"path": "ruzstd/dict_tests/files/gpm.service",
"chars": 256,
"preview": "[Unit]\nDescription=Virtual console mouse server\nRequires=systemd-udevd.service\nAfter=systemd-udevd.service\nConditionPath"
},
{
"path": "ruzstd/dict_tests/files/healthd.service",
"chars": 199,
"preview": "[Unit]\nDescription=A daemon which can be used to alert you in the event of a hardware health monitoring alarm\n\n[Service]"
},
{
"path": "ruzstd/dict_tests/files/hv_fcopy_daemon.service",
"chars": 180,
"preview": "[Unit]\nDescription=Hyper-V file copy service (FCOPY)\nConditionPathExists=/dev/vmbus/hv_fcopy\n\n[Service]\nExecStart=/usr/b"
},
{
"path": "ruzstd/dict_tests/files/hv_kvp_daemon.service",
"chars": 171,
"preview": "[Unit]\nDescription=Hyper-V key-value pair (KVP)\nConditionPathExists=/dev/vmbus/hv_kvp\n\n[Service]\nExecStart=/usr/bin/hv_k"
},
{
"path": "ruzstd/dict_tests/files/hv_vss_daemon.service",
"chars": 183,
"preview": "[Unit]\nDescription=Hyper-V volume shadow copy service (VSS)\nConditionPathExists=/dev/vmbus/hv_vss\n\n[Service]\nExecStart=/"
},
{
"path": "ruzstd/dict_tests/files/initrd-cleanup.service",
"chars": 674,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/initrd-parse-etc.service",
"chars": 842,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/initrd-switch-root.service",
"chars": 593,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/initrd-udevadm-cleanup-db.service",
"chars": 708,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/ip6tables.service",
"chars": 393,
"preview": "[Unit]\nDescription=IPv6 Packet Filtering Framework\nBefore=network-pre.target\nWants=network-pre.target\nAfter=iptables.ser"
},
{
"path": "ruzstd/dict_tests/files/iptables.service",
"chars": 364,
"preview": "[Unit]\nDescription=IPv4 Packet Filtering Framework\nBefore=network-pre.target\nWants=network-pre.target\n\n[Service]\nType=on"
},
{
"path": "ruzstd/dict_tests/files/kmod-static-nodes.service",
"chars": 720,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/krb5-kadmind.service",
"chars": 136,
"preview": "[Unit]\nDescription=Kerberos 5 administration server\n\n[Service]\nExecStart=/usr/bin/kadmind -nofork\n\n[Install]\nWantedBy=mu"
},
{
"path": "ruzstd/dict_tests/files/krb5-kdc.service",
"chars": 128,
"preview": "[Unit]\nDescription=Kerberos 5 KDC\n\n[Service]\nExecStart=/usr/bin/krb5kdc -n\nRestart=always\n\n[Install]\nWantedBy=multi-user"
},
{
"path": "ruzstd/dict_tests/files/krb5-kpropd.service",
"chars": 127,
"preview": "[Unit]\nDescription=Kerberos 5 propagation server\n\n[Service]\nExecStart=/usr/bin/kpropd -S\n\n[Install]\nWantedBy=multi-user."
},
{
"path": "ruzstd/dict_tests/files/krb5-kpropd@.service",
"chars": 158,
"preview": "[Unit]\nDescription=Kerberos 5 propagation server\nConflicts=krb5-kpropd.service\n\n[Service]\nExecStart=/usr/bin/kpropd\nStan"
},
{
"path": "ruzstd/dict_tests/files/ldconfig.service",
"chars": 687,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/libvirt-guests.service",
"chars": 622,
"preview": "[Unit]\nDescription=Suspend/Resume Running libvirt Guests\nWants=libvirtd.service\nRequires=virt-guest-shutdown.target\nAfte"
},
{
"path": "ruzstd/dict_tests/files/libvirtd.service",
"chars": 1521,
"preview": "[Unit]\nDescription=Virtualization daemon\nRequires=virtlogd.socket\nRequires=virtlockd.socket\n# Use Wants instead of Requi"
},
{
"path": "ruzstd/dict_tests/files/lm_sensors.service",
"chars": 328,
"preview": "[Unit]\nDescription=Initialize hardware monitoring sensors\n\n[Service]\nEnvironmentFile=-/etc/conf.d/lm_sensors\nType=onesho"
},
{
"path": "ruzstd/dict_tests/files/logrotate.service",
"chars": 704,
"preview": "[Unit]\nDescription=Rotate log files\nDocumentation=man:logrotate(8) man:logrotate.conf(5)\nRequiresMountsFor=/var/log\nCond"
},
{
"path": "ruzstd/dict_tests/files/lvm2-lvmetad.service",
"chars": 336,
"preview": "[Unit]\nDescription=LVM2 metadata daemon\nDocumentation=man:lvmetad(8)\nRequires=lvm2-lvmetad.socket\nBefore=shutdown.target"
},
{
"path": "ruzstd/dict_tests/files/lvm2-lvmpolld.service",
"chars": 326,
"preview": "[Unit]\nDescription=LVM2 poll daemon\nDocumentation=man:lvmpolld(8)\nRequires=lvm2-lvmpolld.socket\nBefore=shutdown.target\nA"
},
{
"path": "ruzstd/dict_tests/files/lvm2-monitor.service",
"chars": 646,
"preview": "[Unit]\nDescription=Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling\nDocumentation=man:dmeve"
},
{
"path": "ruzstd/dict_tests/files/lvm2-pvscan@.service",
"chars": 409,
"preview": "[Unit]\nDescription=LVM2 PV scan on device %i\nDocumentation=man:pvscan(8)\nDefaultDependencies=no\nBindsTo=dev-block-%i.dev"
},
{
"path": "ruzstd/dict_tests/files/man-db.service",
"chars": 485,
"preview": "[Unit]\nDescription=Daily man-db regeneration\nDocumentation=man:mandb(8)\nConditionACPower=true\n\n[Service]\nType=oneshot\n# "
},
{
"path": "ruzstd/dict_tests/files/mdadm-grow-continue@.service",
"chars": 481,
"preview": "# This file is part of mdadm.\n#\n# mdadm is free software; you can redistribute it and/or modify it\n# under the terms "
},
{
"path": "ruzstd/dict_tests/files/mdadm-last-resort@.service",
"chars": 210,
"preview": "[Unit]\nDescription=Activate md array %I even though degraded\nDefaultDependencies=no\nConditionPathExists=!/sys/devices/vi"
},
{
"path": "ruzstd/dict_tests/files/mdmon@.service",
"chars": 1034,
"preview": "# This file is part of mdadm.\n#\n# mdadm is free software; you can redistribute it and/or modify it\n# under the terms "
},
{
"path": "ruzstd/dict_tests/files/mdmonitor.service",
"chars": 521,
"preview": "# This file is part of mdadm.\n#\n# mdadm is free software; you can redistribute it and/or modify it\n# under the terms "
},
{
"path": "ruzstd/dict_tests/files/mkinitcpio-generate-shutdown-ramfs.service",
"chars": 345,
"preview": "[Unit]\nDescription=Generate shutdown-ramfs\nDefaultDependencies=no\nBefore=shutdown.target\nConditionFileIsExecutable=!/run"
},
{
"path": "ruzstd/dict_tests/files/ndctl-monitor.service",
"chars": 134,
"preview": "[Unit]\nDescription=Ndctl Monitor Daemon\n\n[Service]\nType=simple\nExecStart=/usr/bin/ndctl monitor\n\n[Install]\nWantedBy=mult"
},
{
"path": "ruzstd/dict_tests/files/netcf-transaction.service",
"chars": 352,
"preview": "[Unit]\nDescription=Rollback uncommitted netcf network config change transactions\nBefore=network.target\nBefore=NetworkMan"
},
{
"path": "ruzstd/dict_tests/files/netctl-auto@.service",
"chars": 512,
"preview": "[Unit]\nDescription=Automatic wireless network connection using netctl profiles\nDocumentation=man:netctl.special(7)\nRequi"
},
{
"path": "ruzstd/dict_tests/files/netctl-ifplugd@.service",
"chars": 399,
"preview": "[Unit]\nDescription=Automatic wired network connection using netctl profiles\nDocumentation=man:netctl.special(7)\nRequisit"
},
{
"path": "ruzstd/dict_tests/files/netctl-sleep.service",
"chars": 284,
"preview": "[Unit]\nDescription=netctl sleep hook\nDocumentation=man:netctl.special(7)\nBefore=sleep.target\nStopWhenUnneeded=yes\n\n[Serv"
},
{
"path": "ruzstd/dict_tests/files/netctl-wait-online.service",
"chars": 289,
"preview": "[Unit]\nDescription=Wait for the enabled netctl profiles to come online\nDocumentation=man:netctl.special(7)\nAfter=network"
},
{
"path": "ruzstd/dict_tests/files/netctl.service",
"chars": 260,
"preview": "[Unit]\nDescription=(Re)store the netctl profile state\nDocumentation=man:netctl.special(7)\nBefore=network.target\n\n[Servic"
},
{
"path": "ruzstd/dict_tests/files/netctl@.service",
"chars": 316,
"preview": "[Unit]\nDescription=Networking for netctl profile %I\nDocumentation=man:netctl.profile(5)\nAfter=network-pre.target\nBefore="
},
{
"path": "ruzstd/dict_tests/files/nftables.service",
"chars": 348,
"preview": "[Unit]\nDescription=Netfilter Tables\nDocumentation=man:nft(8)\nWants=network-pre.target\nBefore=network-pre.target\n\n[Servic"
},
{
"path": "ruzstd/dict_tests/files/ninfod.service",
"chars": 525,
"preview": "[Unit]\nDescription=Respond to IPv6 Node Information Queries\nDocumentation=ninfod(8)\nRequires=network.target\nAfter=networ"
},
{
"path": "ruzstd/dict_tests/files/nscd.service",
"chars": 424,
"preview": "# systemd service file for nscd\n\n[Unit]\nDescription=Name Service Cache Daemon\n\n[Service]\nType=forking\nExecStart=/usr/sbi"
},
{
"path": "ruzstd/dict_tests/files/openvpn-client@.service",
"chars": 701,
"preview": "[Unit]\nDescription=OpenVPN tunnel for %I\nAfter=syslog.target network-online.target\nWants=network-online.target\nDocumenta"
},
{
"path": "ruzstd/dict_tests/files/openvpn-server@.service",
"chars": 823,
"preview": "[Unit]\nDescription=OpenVPN service for %I\nAfter=syslog.target network-online.target\nWants=network-online.target\nDocument"
},
{
"path": "ruzstd/dict_tests/files/polkit.service",
"chars": 172,
"preview": "[Unit]\nDescription=Authorization Manager\nDocumentation=man:polkit(8)\n\n[Service]\nType=dbus\nBusName=org.freedesktop.Policy"
},
{
"path": "ruzstd/dict_tests/files/ppp@.service",
"chars": 153,
"preview": "[Unit]\nDescription=PPP link to %I\nBefore=network.target\n\n[Service]\nExecStart=/usr/sbin/pppd call %I nodetach nolog\n\n[Ins"
},
{
"path": "ruzstd/dict_tests/files/quotaon.service",
"chars": 615,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/rarpd@.service",
"chars": 630,
"preview": "[Unit]\nDescription=Reverse Address Resolution Protocol Requests Server (%I)\nDocumentation=man:rarpd(8)\nRequires=network."
},
{
"path": "ruzstd/dict_tests/files/rdisc.service",
"chars": 601,
"preview": "[Unit]\nDescription=Network Router Discovery Daemon\nDocumentation=man:rdisc(8)\nRequires=network.target\nAfter=network.targ"
},
{
"path": "ruzstd/dict_tests/files/rescue.service",
"chars": 792,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/rfkill-block@.service",
"chars": 165,
"preview": "[Unit]\nDescription=RFKill-Block %I\nAfter=rfkill-unblock@all.service\n\n[Service]\nType=oneshot\nExecStart=/usr/bin/rfkill bl"
},
{
"path": "ruzstd/dict_tests/files/rfkill-unblock@.service",
"chars": 167,
"preview": "[Unit]\nDescription=RFKill-Unblock %I\nAfter=rfkill-block@all.service\n\n[Service]\nType=oneshot\nExecStart=/usr/bin/rfkill un"
},
{
"path": "ruzstd/dict_tests/files/rlogin@.service",
"chars": 132,
"preview": "[Unit]\nDescription=Remote Login Facilities Server\nAfter=local-fs.target\n\n[Service]\nExecStart=-/usr/bin/rlogind\nStandardI"
},
{
"path": "ruzstd/dict_tests/files/rpcbind.service",
"chars": 480,
"preview": "[Unit]\nDescription=RPC Bind\nDocumentation=man:rpcbind(8)\nDefaultDependencies=no\nRequiresMountsFor=/var/lib/rpcbind\n\n# Ma"
},
{
"path": "ruzstd/dict_tests/files/rsh@.service",
"chars": 129,
"preview": "[Unit]\nDescription=Remote Shell Facilities Server\nAfter=local-fs.target\n\n[Service]\nExecStart=-/usr/bin/rshd\nStandardInpu"
},
{
"path": "ruzstd/dict_tests/files/rtkit-daemon.service",
"chars": 1019,
"preview": "# This file is part of RealtimeKit.\n#\n# Copyright 2010 Lennart Poettering\n#\n# RealtimeKit is free software: you can redi"
},
{
"path": "ruzstd/dict_tests/files/sddm.service",
"chars": 314,
"preview": "[Unit]\nDescription=Simple Desktop Display Manager\nDocumentation=man:sddm(1) man:sddm.conf(5)\nConflicts=getty@tty1.servic"
},
{
"path": "ruzstd/dict_tests/files/sensord.service",
"chars": 268,
"preview": "[Unit]\nDescription=Log hardware monitoring data\nAfter=lm_sensors.service\n\n[Service]\nEnvironmentFile=/etc/conf.d/sensord\n"
},
{
"path": "ruzstd/dict_tests/files/serial-getty@.service",
"chars": 1463,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/shadow.service",
"chars": 319,
"preview": "[Unit]\nDescription=Verify integrity of password and group files\nAfter=systemd-sysusers.service\n\n[Service]\nType=simple\n# "
},
{
"path": "ruzstd/dict_tests/files/spice-webdavd.service",
"chars": 285,
"preview": "[Unit]\nDescription=webdav daemon for Spice guests\nRequires=dbus.service avahi-daemon.service\nAfter=dbus.service avahi-da"
},
{
"path": "ruzstd/dict_tests/files/sshd.service",
"chars": 250,
"preview": "[Unit]\nDescription=OpenSSH Daemon\nWants=sshdgenkeys.service\nAfter=sshdgenkeys.service\nAfter=network.target\n\n[Service]\nEx"
},
{
"path": "ruzstd/dict_tests/files/sshdgenkeys.service",
"chars": 527,
"preview": "[Unit]\nDescription=SSH Key Generation\nConditionPathExists=|!/etc/ssh/ssh_host_dsa_key\nConditionPathExists=|!/etc/ssh/ssh"
},
{
"path": "ruzstd/dict_tests/files/syncthing-resume.service",
"chars": 201,
"preview": "[Unit]\nDescription=Restart Syncthing after resume\nDocumentation=man:syncthing(1)\nAfter=sleep.target\n\n[Service]\nType=ones"
},
{
"path": "ruzstd/dict_tests/files/syncthing@.service",
"chars": 452,
"preview": "[Unit]\nDescription=Syncthing - Open Source Continuous File Synchronization for %I\nDocumentation=man:syncthing(1)\nAfter=n"
},
{
"path": "ruzstd/dict_tests/files/system-update-cleanup.service",
"chars": 1415,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/systemd-ask-password-console.service",
"chars": 746,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/systemd-ask-password-wall.service",
"chars": 760,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/systemd-backlight@.service",
"chars": 760,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/systemd-binfmt.service",
"chars": 1129,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/systemd-bless-boot.service",
"chars": 682,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/systemd-boot-check-no-failures.service",
"chars": 722,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/systemd-boot-system-token.service",
"chars": 1365,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/systemd-coredump@.service",
"chars": 1162,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/systemd-exit.service",
"chars": 556,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/systemd-firstboot.service",
"chars": 799,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/systemd-fsck-root.service",
"chars": 644,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/systemd-fsck@.service",
"chars": 697,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/systemd-halt.service",
"chars": 588,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
},
{
"path": "ruzstd/dict_tests/files/systemd-hibernate-resume@.service",
"chars": 675,
"preview": "# SPDX-License-Identifier: LGPL-2.1+\n#\n# This file is part of systemd.\n#\n# systemd is free software; you can redistri"
}
]
// ... and 535 more files (download for full content)
About this extraction
This page contains the full source code of the KillingSpark/zstd-rs GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 735 files (5.1 MB), approximately 1.4M tokens, and a symbol index with 589 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.