From 30b4e9b02e46a065debd36d5b282f38e84c651fa Mon Sep 17 00:00:00 2001 From: Klaus Post Date: Mon, 2 Apr 2018 14:53:57 +0200 Subject: [PATCH] Implement huff0 entropy encoder (#89) * Implement huff0 entropy encoder. --- .travis.yml | 1 + README.md | 3 + fse/fse.go | 21 +- huff0/.gitignore | 1 + huff0/bitreader.go | 115 ++++ huff0/bitwriter.go | 176 ++++++ huff0/bytereader.go | 54 ++ huff0/compress.go | 595 ++++++++++++++++++ huff0/compress_test.go | 437 +++++++++++++ huff0/decompress.go | 392 ++++++++++++ huff0/decompress_test.go | 482 ++++++++++++++ ...01ace8efdfd46d82b0fef511b259933ced9d13ec-2 | 1 + ...049f4a878ab48c404bd0950e2366e3c0eaad4318-3 | Bin 0 -> 41 bytes ...04bc4648208f40ba61ffb9a929f760c24101522c-1 | Bin 0 -> 1647 bytes .../0a7ce59229caf93ee64d5a828aecab7b5e434bbc | 1 + .../0ceda9053c751bf974334c7c1676832feea92d69 | Bin 0 -> 1919 bytes ...0dde84d337ceb9269489c3919d205ea9789c158a-5 | 1 + ...0e90b9893889f69194ca72e28082a1f6081c4b35-1 | 1 + ...0fcf0d8fa929e950029b365ad631e876ec5f3c47-1 | Bin 0 -> 117 bytes ...112b9d35e8cbeabce6fda543aec804ab83185543-1 | 1 + ...130efc33e0d8f0327a73110deac85474bc91dc8d-3 | Bin 0 -> 4 bytes .../1eb38d67be98350dd6ce98f72e5b1b75043ce8c7 | 1 + .../234ec5ad1fc105fcc08523ff91bd8430284aa1f3 | Bin 0 -> 131073 bytes ...26ccc59f9c4d89063210f2e8ddd0c26394c2a607-2 | 1 + .../287d18afe5e0d54d4554a39aa2acff99d696136d | 1 + ...29e95908e0f3e9f3e189441de6ed797b7bee2449-2 | 1 + ...c93d4381a547aa7001acfffcf51dc323a0cdf2b-10 | Bin 0 -> 67 bytes ...2e0d10ca05bdebe3fe84c481004adb11a1cc761c-2 | Bin 0 -> 1700 bytes ...2e85ccbaa127cbf77bb8f0b5c3afdcf53f63f2d8-2 | 1 + .../30632e96a06600a75b47b4cbe0db74b959d09aa5 | Bin 0 -> 553 bytes ...08f53f64ce26d56e4379931ff3611a7dd49325f-10 | Bin 0 -> 64 bytes ...31e020e2f79260ddcbf377c8e1256288b57d32b8-1 | 1 + ...32a3cf4aef238d77278831c3744c1327dcc8f8c0-3 | Bin 0 -> 3 bytes ...350b061ff78cfb97b28716ec96e27f616d439f97-1 | Bin 0 -> 302 bytes ...3542214eb977ea9bdabcc55601d7876b6227b501-2 | Bin 0 -> 506 bytes ...3693a58b98ececb7670844f49caa795c1735ddf0-1 | Bin 0 -> 292 bytes ...3b1d88a86a30b301e5f509a756f43ef34fad55b0-2 | Bin 0 -> 1055 bytes ...f85a2df398429128e89cb13f51f612645550408-11 | Bin 0 -> 16 bytes .../40b8de701a171fddefdc4459023121a1e605b16c | 1 + ...4106d42682c6b5f9f068148a3d94f5b52d9a2862-1 | Bin 0 -> 1089 bytes .../43726b29460c5060782f19cb0facac8443ad5d0b | 2 + .../43a26357597ae65521480220432ff645450d01f1 | Bin 0 -> 1476 bytes ...46fc2fe81fed8fdc49861d8a8433560c5a02d503-2 | 1 + .../4869e00fbc61867ccab5b83187c3a146ecb36775 | Bin 0 -> 982 bytes .../489d689da4860f3116a62db6b089bb0d5ba4de40 | Bin 0 -> 2569 bytes ...48bc76aeb21bc6070323247927d87e591e51eaa9-1 | Bin 0 -> 984 bytes ...4959a4a9db83af17f9368cf490b8a0356d872147-1 | Bin 0 -> 298 bytes ...49dce428e704656d5a4f1053a443ba44f51e91f0-4 | Bin 0 -> 4 bytes ...4a98d52bab6ca703e4521093afa2a400e10f4a7d-2 | Bin 0 -> 342 bytes ...4b4859f278820e969c13c975669322e2c9df9823-5 | Bin 0 -> 6 bytes ...4d1adbc376464b88c52a00ed562cdacbffa4af1a-1 | Bin 0 -> 166 bytes ...4f506d462241876610a0f92a5aa1e2b38ea8722c-7 | Bin 0 -> 10 bytes ...51bdcd2cbd098b042fddc528083572bdbcfbe449-1 | Bin 0 -> 346 bytes ...51c91bfe65eaa40fe4144306d6332ad84e4bb8ed-1 | 1 + ...53bcc0e78275d3efe9e012e6d30412066bf354f9-2 | 1 + ...545828581071b0d01c3fd9d15c7850c3f83ea15f-2 | Bin 0 -> 25 bytes ...56860900c11ef30e85ce99b14e0e687745b269ae-9 | Bin 0 -> 63 bytes ...581ed2fb7f25a6a5a8de40beae3dfd1666c511d0-2 | 1 + .../5b5d4262260375deb5146e3fa43f689923e856a7 | Bin 0 -> 5895 bytes ...5c4b6679ee378f2533b099450ed21e40d54f6cd0-3 | 1 + ...5e13404b6713db5f2d4972747da143057beaaf64-2 | 1 + ...5e6c62abd0fe49668d26e9bfced0ef0dc699f6a5-3 | Bin 0 -> 32 bytes .../5e701f4039d099c3a15c4e8d9b070eafc96de0e9 | 1 + .../5f9642a02959a51bf5a67e5347d702fe0ba6af79 | 1 + ...5fcc48ee5b52b608e5d909ca4eddae9bd8f3a6ae-8 | Bin 0 -> 11 bytes ...60031506809cb3ff39b549968772a652cdaf8e1d-1 | Bin 0 -> 981 bytes .../60df0cda93981b671836008ff12625cd51171e9d | Bin 0 -> 1776 bytes ...61077e99c801f3eb732ba4fae2296091eaea9c01-2 | Bin 0 -> 109 bytes ...612edfc64ec2f157158ac6b0b7bdceeb1338d3b8-6 | Bin 0 -> 8 bytes ...617132f8209014d1839691bc6c7d77e70ed60095-7 | Bin 0 -> 16 bytes ...6182f2935dfb8967ce0d259c3fbc143167528f3b-1 | 1 + .../64bd2417583750313dd74d25c8b2f3eed25909a8 | Bin 0 -> 670 bytes ...64dae3270e5806311fac4518cef7b473e2d3cd91-4 | 1 + ...67519fd21225a9a0f3c5a86a76de43fd7234e1d4-1 | 1 + ...6b8432daf9022411b253dd7c8f5611c22cdc3895-2 | 1 + .../6d44323de19d56374597e2ac06e3beee133a42df | 2 + ...72fa415daeee2a5f74a86a035e9dda32a29e34e4-2 | 1 + ...747e5c3eed27e2c0a7a8987c78981b9cece0150c-2 | 1 + ...780851224f52ce3b64a90ba56b4fc567aba4cd3d-1 | Bin 0 -> 132 bytes ...7d233588c41ecc575034228477393f70d8acb5fd-1 | Bin 0 -> 418 bytes .../7f255b276b164c4309adbab19b872422d979c5e5 | Bin 0 -> 1219 bytes ...7fca1fadd76fce238c82e9542eb05acd5bd38653-1 | 1 + ...8036c610dcec87d7bc42ba4ddddd660372392268-1 | Bin 0 -> 111 bytes ...82186327d4a14ac0da15581a5c7f37e83df72cf5-1 | 1 + ...85bb13fef173edaeb7be4e6675bf8374bf136d9c-1 | 1 + .../85d8aceca37403b2a0b6ed82502afd40f2513541 | Bin 0 -> 302 bytes ...872784ffeda8c586972151364e6917bc0fb463d2-4 | Bin 0 -> 33 bytes ...88b9cf63d84dab51dd67f44df0e64977da9dd7f2-3 | Bin 0 -> 23 bytes ...88c2814de9919316170e12c1cbe39ff2a4e3dc69-2 | Bin 0 -> 197 bytes ...89f86a63a2de2d2877451bceaa2bd4e38abc8e64-1 | Bin 0 -> 1648 bytes .../8c6d7def5f4465fc685347875a8e64e108b393df | 2 + ...8d43559e0f27f4a754db78baa697b37013f8a01d-1 | 1 + .../8d69ef1f7f28824fd8267ae8b36833e3e0b94765 | 1 + ...9239364aad81b3afb16be9487b5721a6fce7d375-2 | 1 + ...9508e90548b0440a4a61e5743b76c1e309b23b7f-3 | Bin 0 -> 3 bytes ...567d94166370de252e759169b215fa8c2288746-11 | Bin 0 -> 64 bytes ...962ecf57ef5bbb4107aaff02072f03d3316077c9-1 | Bin 0 -> 817 bytes .../96629c94c3faec6af9790f99bd72567d4534f9db | Bin 0 -> 980 bytes ...9aa393616dd8a00cd97be9a58bf70a9b4164d802-1 | Bin 0 -> 666 bytes ...9b3ec560e1ed89789a09e834a18fb9f1d042f5dd-2 | 1 + ...9c61b17678d14d0b9ae09be017c6bbd6a3c3cabe-1 | 1 + ...9e3fc7fad4bf135219a974a8dac87e366f5b8e8c-2 | 1 + .../a0bd71e19da9f0265508cdd2a50a458e5cd6bb19 | Bin 0 -> 1232 bytes ...a3c5cb453e89aef7359f952459685c26cea30d63-1 | Bin 0 -> 53 bytes .../a48f8d3562980d5cd8b9f0eb3859ee562d7c0596 | Bin 0 -> 981 bytes .../a5ef3d034850ec9510bb931f21a1547518a76f14 | 1 + ...a70573a8edabc05a2431773757158ac90e63d43a-1 | 1 + ...a8d099f456e0a9444c10bf1cdfe788da8f65f8d5-6 | Bin 0 -> 11 bytes ...a8d2bd34ee5b24064975a68298bfa566b63a133c-2 | 1 + .../ac04c28afed2d337f787d007a992e8ec7f937b36 | 1 + .../ad336c19a004476640934db99f827f2917a09bf8 | Bin 0 -> 17674 bytes ...aef8193ef7e7916cebd428e02ae7c9081b9e56a1-6 | Bin 0 -> 12 bytes .../af640328532d29ae2f935b87564cb595f6cbb54e | Bin 0 -> 1035 bytes .../b16d3306a414bbbffd9344eb00f460a160fb06bc | Bin 0 -> 504 bytes ...b585a3f5c60ffeef5d5bf13dccca17199d7ab311-2 | 1 + ...b776d26f33e5cb69dd1ee1bd66da9024509c62b6-1 | 1 + ...ba4b4565a95f651dd9c3e90b0742db3a422498e1-3 | 1 + .../bcd851430da545599a636bdf22499157116d652a | 1 + .../bd0ec04037fbff5629b94a88915ce29cfa3c9f9e | Bin 0 -> 9996 bytes .../bf297fbc5cd66aeca02688585a23f98a9f0081f5 | Bin 0 -> 878 bytes ...bf30493a58dc0fad8c77816086b2b32875cade69-1 | 1 + ...c05bf2b6c368beec9fe1ab4172da851e547b1e49-9 | 1 + .../c07ac5a6c29ec72f00d7fe9cfcd9900ebf6fcc1a | 1 + ...c4d93c018e1686a8e4aaf0a4dad8d60fecd13675-4 | Bin 0 -> 3 bytes ...c64b47ad9a354cefde19e93efca0d656a20fe024-6 | Bin 0 -> 4 bytes ...c6f1d808e0fd8c0a973e1b251e93ddae5930638e-1 | 1 + ...c7fd10d5817ad18dcb798e82328e8a7b087fbbea-1 | Bin 0 -> 928 bytes .../cb7cd34cfe31060ee210487d4d2eb6c1811e67c5 | Bin 0 -> 606 bytes .../cc6c7d741d3c9c4c6ceb1461068d6ec970805e3d | Bin 0 -> 755 bytes ...cdd398e0ae2a152bcb53d296a63e1e8ccaabb75b-3 | Bin 0 -> 1098 bytes .../d2142c494b1f6526189f383e88037cd4c05e16bb | 1 + ...d237dcb7a55a9542fbe886c9631804dea200b56a-2 | Bin 0 -> 504 bytes ...d38389226ead13791d80008cc5fb1eef75aa0be4-6 | Bin 0 -> 11 bytes ...d977ecea3fcbb78028aabdb98bf098594d5eaba7-2 | Bin 0 -> 544 bytes .../da39a3ee5e6b4b0d3255bfef95601890afd80709 | 0 ...dba30063a9e305d125c83f435e35e0aaa33c560c-1 | Bin 0 -> 1086 bytes .../dc2f0ff7f3e2d2a2b290bf36e85c695506c68782 | 1 + .../ddaf0bfb51c7134e58a010fe0a099e76e7bca7f6 | Bin 0 -> 1178 bytes ...ddc3609a7e8f2da5428973c80847b1ae0bc74af7-4 | 1 + ...dde60ed75565b253fc44c8543a788dbef7b9a53f-2 | Bin 0 -> 47 bytes ...e1170c6fe09522cb50935557856ba9d85c2b37de-3 | 1 + ...e1323173b156c91190a3b84ca33c955550404ade-2 | Bin 0 -> 36 bytes .../e295ba780df856ae31513226b96e8382063d034d | Bin 0 -> 1192 bytes ...e36bba8cd1c971edf6696aa76dfaf690e21e08c3-5 | Bin 0 -> 4 bytes .../e4862372d6534ac4eb19df7d21840887b8297df8 | 1 + .../e6722bb760655d9d3dbbdc4f9ebf7354a2461d97 | Bin 0 -> 600 bytes ...e77ce13737af5a84c7a50d9d18a6699fb862c63b-3 | 1 + ...e85ca8b54d82486ba7462ea0659c42a0a36cdb71-8 | Bin 0 -> 32 bytes ...ea616ea4310406f7893091a96e87e0b9c0412e4b-1 | Bin 0 -> 739 bytes ...ed0f1c5ee2700c3c2d9a0914de90363e750c3f47-3 | 2 + ...ee481cbb8636f3957618b3e627cc6a56caa1dce5-1 | Bin 0 -> 1593 bytes ...efa3bc9831786d0e203957fd2ac2c4de9d5c168a-2 | 1 + ...f0121676050a7bb84ade5c4783407e0527ca88a4-3 | 1 + ...f0bd04a4f5ccd427cf59b79e2f67caafdbfa0233-3 | Bin 0 -> 792 bytes ...f2a68d20b1e145bbf69037f17685e0adedfe68a4-6 | Bin 0 -> 11 bytes ...f320b3ab9e260a1bbd378762c54a8e23f794901a-2 | 1 + .../f5829f8a97a0a1dc008752245b460db0a0459c03 | Bin 0 -> 583 bytes ...f62e0a3c0c8bd15aa0b2f991898f2d27d2964d44-2 | 1 + ...f670ffe6dc8a8e0b45bfa675672498f90b44001e-2 | 1 + .../f7a76f4c851f342d0d576ffa71329438e109347c | Bin 0 -> 1647 bytes ...f8d134ecc8e30461236ed7b28aeb29bc2987e50e-1 | 1 + .../ffc64298b00af19e0f953728f42fa8e915d7b470 | 1 + ...0018ebe176ab4fa757c5da39cd8b2270f12de24-10 | Bin 0 -> 9 bytes ...0170787897b2aec4a4477ab507777ad13eb00e10-1 | Bin 0 -> 54 bytes ...0297e0b01e8ace9ec3a22311966681bbe06b875f-5 | Bin 0 -> 2 bytes ...04bc4648208f40ba61ffb9a929f760c24101522c-1 | Bin 0 -> 1278 bytes ...c4648208f40ba61ffb9a929f760c24101522c-1-4x | Bin 0 -> 1285 bytes ...04fe6043558c921672856d1d9332bb41b7d64087-2 | 1 + ...05575bdaa6ba33f22d304f9f3a62010e42f76acf-2 | Bin 0 -> 90 bytes .../0a7ce59229caf93ee64d5a828aecab7b5e434bbc | Bin 0 -> 501 bytes ...a7ce59229caf93ee64d5a828aecab7b5e434bbc-4x | Bin 0 -> 507 bytes .../0ceda9053c751bf974334c7c1676832feea92d69 | Bin 0 -> 1569 bytes ...ceda9053c751bf974334c7c1676832feea92d69-4x | Bin 0 -> 1577 bytes ...0e90b9893889f69194ca72e28082a1f6081c4b35-1 | Bin 0 -> 16 bytes ...0fcf0d8fa929e950029b365ad631e876ec5f3c47-1 | 1 + ...1050baf5be0eeaa50c7e2ccd22c386146d582668-5 | 1 + ...112b9d35e8cbeabce6fda543aec804ab83185543-1 | Bin 0 -> 52 bytes ...b9d35e8cbeabce6fda543aec804ab83185543-1-4x | Bin 0 -> 59 bytes ...118873131212b4f8e4f2b7aa9e398911bf83fb21-2 | Bin 0 -> 9 bytes ...12a386209a550aec21fbfa0b2ec8c066fe131db7-2 | Bin 0 -> 12 bytes ...17a53cfc55c261af6e258f0effbe34a9d0c3a117-2 | Bin 0 -> 19 bytes ...182516c486b2eafc720a03046af1949a758ff7b4-3 | 1 + ...1e23aabdf832d3bd167105c98f4931313e0df945-8 | 1 + .../1eb38d67be98350dd6ce98f72e5b1b75043ce8c7 | Bin 0 -> 78 bytes ...223bb6b768c691e0f2eb62db5821b8678a9ecc93-3 | 1 + ...2273a03f5b8fe56f4bbb7f7e9560c440fb8237c8-5 | Bin 0 -> 30 bytes .../234ec5ad1fc105fcc08523ff91bd8430284aa1f3 | Bin 0 -> 100227 bytes ...34ec5ad1fc105fcc08523ff91bd8430284aa1f3-4x | Bin 0 -> 100235 bytes ...236bd270f4d36e14eaf41daf5bf33e55ff5f463d-6 | 1 + ...269f2e5e3b3b1acba92aefd0a49444d0869af5ae-7 | 1 + ...2805bdad6bc68c3c6edd9344d658b6d43a8dbcbc-3 | 1 + ...187c5cc2c8b927997cbd46e9328581620116613-12 | Bin 0 -> 23 bytes ...34e0f846cc18c5c0a6e0334192411dc2c6a1c719-7 | 1 + ...36971f66110d363f2a217d16bf1913475c25a862-3 | Bin 0 -> 90 bytes ...38729163260fdf7a5526f17de3cb34f02661e8c9-1 | Bin 0 -> 28 bytes ...3885c38b78f31c98dd73bc1fa7d6dfe467eb0fa4-3 | Bin 0 -> 90 bytes ...3aa823c93e1ed004c38d32fc9f96c9f6036e7c77-5 | 1 + ...c48a486a1b94dc9df2201c25f411123cedd119c-10 | 1 + ...3cee784d376938121b711cd56f71a68f3496cda8-4 | Bin 0 -> 90 bytes ...f85a2df398429128e89cb13f51f612645550408-11 | Bin 0 -> 15 bytes .../40b8de701a171fddefdc4459023121a1e605b16c | Bin 0 -> 156 bytes ...0b8de701a171fddefdc4459023121a1e605b16c-4x | Bin 0 -> 164 bytes ...40fbf19f5ba46c802a2755c71c852b92fc334dd4-2 | Bin 0 -> 18 bytes ...4106d42682c6b5f9f068148a3d94f5b52d9a2862-1 | Bin 0 -> 943 bytes ...6d42682c6b5f9f068148a3d94f5b52d9a2862-1-4x | Bin 0 -> 951 bytes .../43726b29460c5060782f19cb0facac8443ad5d0b | Bin 0 -> 513 bytes ...3726b29460c5060782f19cb0facac8443ad5d0b-4x | Bin 0 -> 520 bytes .../43a26357597ae65521480220432ff645450d01f1 | Bin 0 -> 1115 bytes ...3a26357597ae65521480220432ff645450d01f1-4x | Bin 0 -> 1122 bytes ...44678db801ad65c4ba51cc5e0cd9095852f329cd-9 | 1 + ...46fc2fe81fed8fdc49861d8a8433560c5a02d503-2 | 3 + ...475dfd55b54d9a0a4287ab8b952f606f2773a49c-1 | Bin 0 -> 1122 bytes .../4869e00fbc61867ccab5b83187c3a146ecb36775 | Bin 0 -> 817 bytes ...869e00fbc61867ccab5b83187c3a146ecb36775-4x | Bin 0 -> 825 bytes ...489bdb7862474650462b753ed85d2a123d1730ca-2 | 1 + ...4bb7d1adac51afa9ac4650ee8ae5203297aa8fec-4 | Bin 0 -> 18 bytes ...542e60846887c634378dd1b29d3ce29b90e13f99-6 | 1 + ...54fbf0fc6ed4319b2c0986f26c3a142b194d9ca3-4 | Bin 0 -> 3 bytes ...5889a9b84fb69d2913d474a381ddceb217137d06-1 | Bin 0 -> 100238 bytes ...5b85e7d11f14ff2864b2c56e03188f15e52fd9bb-8 | 1 + ...649971daa4b93c4ffe6190415f22569030f2300a-3 | Bin 0 -> 34 bytes ...6903fccf79c27b4cffe21090d03c6879cbb72274-6 | Bin 0 -> 10 bytes ...695a09b31703a8f7f00422a62549912c31263506-3 | Bin 0 -> 34 bytes ...6a88ce804bf81bb01a233527595b27668cca331d-1 | Bin 0 -> 131073 bytes ...6c16b84194ac60c492487044ed3ee744c506faf6-2 | 1 + ...6cdd7b3f70c2448bb4f666c8bc5aa6a890a34f7a-3 | Bin 0 -> 27 bytes ...73e369adcad522a27653be74fe4a9ff8d30ea19e-7 | 1 + ...7f1623aee483c22124f8ecd37ad62c5acc932304-4 | Bin 0 -> 39 bytes ...87e26a4d86b6f1ffba523d73bdf7479715faa6c0-5 | Bin 0 -> 10 bytes ...8af40c705337fe65b50643a231029a953ea998af-5 | 1 + ...913987cb3ea3aa8df9fabade3b6440bfb0e14019-1 | Bin 0 -> 53 bytes ...4b18a8ac5c2cd3b040754e236dadeae895b3dae-13 | Bin 0 -> 10 bytes ...9835e8bdcd54890f9ff4dfdb634b5a6dc254f09e-2 | 1 + ...9f3d543656b54b38ac84f009a626bdfb074393cb-2 | Bin 0 -> 18 bytes ...a70fe33ef1a23361593e5d25ed782c2b4ee22813-1 | Bin 0 -> 18 bytes ...ab076dfc3f75d3a603806cbf3ab318bab8575591-7 | 1 + ...ac8feec2af44db5a6eafff09781dc9c922fc1380-4 | 1 + ...aeb91ce9a4b3547b57a3ab02add1500b6d6447a8-4 | Bin 0 -> 28 bytes ...af04c0ac0c9608e913ab0f27a1426630adc72f57-8 | 1 + ...b8fceb6a5aa974b33d2dc94526c96a3d46633e89-4 | 1 + ...ba01d6cf0fb9c71370ef35d6c6cebb1fa75018f6-5 | Bin 0 -> 10 bytes ...bf49b2edbbb9da8b0c135b3ed5e5a5a7e77e61a9-2 | 1 + ...c03c780b2d547bf3157d929730d554533b570acc-6 | 1 + ...c37533eda04d4cd770cce546fd0db044407d765c-1 | Bin 0 -> 13693 bytes ...c3793d6b45cba4a91dc18770c1c2a9946d334258-1 | Bin 0 -> 86784 bytes ...9d84a90c00d2393354dd80dbb9d26e8edd387e0-10 | 1 + ...d06c109bc27d8914b330b99ac8262cbceda79b4f-1 | 1 + ...d1f80ef35b58a2366e5b133473dc273f3740d57b-7 | 1 + ...d2e694ef05e527e478769df82b0f65fb3b442a45-1 | Bin 0 -> 506 bytes ...da39a3ee5e6b4b0d3255bfef95601890afd80709-2 | 0 ...db3bda50ea81814214d6e6c511736731a44d7b9a-2 | Bin 0 -> 76 bytes ...ddf623fc42f256fbee77d98e0c341d8f8e967d6f-6 | Bin 0 -> 13 bytes ...e7416101c16988f1aa4ad09e2e0ea26698a69fd5-6 | 1 + ...eae606b8c2871f94da1b8190d095e686e9f2eebc-5 | Bin 0 -> 90 bytes ...ec2c23b0ecfb55422bb7376b9de762f0cb2daabc-5 | Bin 0 -> 90 bytes ...ee5e3543ec53aa392b7485e16163661dc45c61b8-3 | Bin 0 -> 18 bytes ...f317ba679fa2f7020fd501a5ceb78a12da06a817-4 | Bin 0 -> 90 bytes ...fa0258e24eecdba8b3e9355740c458120b4babce-7 | 1 + ...fab8c92bc4068e05f10d9b1978a34bfd5a0c12da-4 | 1 + huff0/fuzz/run-compress.cmd | 4 + huff0/fuzz/run-decompress.cmd | 4 + huff0/fuzz_compress.go | 27 + huff0/fuzz_decompress.go | 16 + huff0/highbit_go19.go | 9 + huff0/highbit_old.go | 18 + huff0/huff0.go | 238 +++++++ 266 files changed, 2688 insertions(+), 8 deletions(-) create mode 100644 huff0/.gitignore create mode 100644 huff0/bitreader.go create mode 100644 huff0/bitwriter.go create mode 100644 huff0/bytereader.go create mode 100644 huff0/compress.go create mode 100644 huff0/compress_test.go create mode 100644 huff0/decompress.go create mode 100644 huff0/decompress_test.go create mode 100644 huff0/fuzz/compress/corpus/01ace8efdfd46d82b0fef511b259933ced9d13ec-2 create mode 100644 huff0/fuzz/compress/corpus/049f4a878ab48c404bd0950e2366e3c0eaad4318-3 create mode 100644 huff0/fuzz/compress/corpus/04bc4648208f40ba61ffb9a929f760c24101522c-1 create mode 100644 huff0/fuzz/compress/corpus/0a7ce59229caf93ee64d5a828aecab7b5e434bbc create mode 100644 huff0/fuzz/compress/corpus/0ceda9053c751bf974334c7c1676832feea92d69 create mode 100644 huff0/fuzz/compress/corpus/0dde84d337ceb9269489c3919d205ea9789c158a-5 create mode 100644 huff0/fuzz/compress/corpus/0e90b9893889f69194ca72e28082a1f6081c4b35-1 create mode 100644 huff0/fuzz/compress/corpus/0fcf0d8fa929e950029b365ad631e876ec5f3c47-1 create mode 100644 huff0/fuzz/compress/corpus/112b9d35e8cbeabce6fda543aec804ab83185543-1 create mode 100644 huff0/fuzz/compress/corpus/130efc33e0d8f0327a73110deac85474bc91dc8d-3 create mode 100644 huff0/fuzz/compress/corpus/1eb38d67be98350dd6ce98f72e5b1b75043ce8c7 create mode 100644 huff0/fuzz/compress/corpus/234ec5ad1fc105fcc08523ff91bd8430284aa1f3 create mode 100644 huff0/fuzz/compress/corpus/26ccc59f9c4d89063210f2e8ddd0c26394c2a607-2 create mode 100644 huff0/fuzz/compress/corpus/287d18afe5e0d54d4554a39aa2acff99d696136d create mode 100644 huff0/fuzz/compress/corpus/29e95908e0f3e9f3e189441de6ed797b7bee2449-2 create mode 100644 huff0/fuzz/compress/corpus/2c93d4381a547aa7001acfffcf51dc323a0cdf2b-10 create mode 100644 huff0/fuzz/compress/corpus/2e0d10ca05bdebe3fe84c481004adb11a1cc761c-2 create mode 100644 huff0/fuzz/compress/corpus/2e85ccbaa127cbf77bb8f0b5c3afdcf53f63f2d8-2 create mode 100644 huff0/fuzz/compress/corpus/30632e96a06600a75b47b4cbe0db74b959d09aa5 create mode 100644 huff0/fuzz/compress/corpus/308f53f64ce26d56e4379931ff3611a7dd49325f-10 create mode 100644 huff0/fuzz/compress/corpus/31e020e2f79260ddcbf377c8e1256288b57d32b8-1 create mode 100644 huff0/fuzz/compress/corpus/32a3cf4aef238d77278831c3744c1327dcc8f8c0-3 create mode 100644 huff0/fuzz/compress/corpus/350b061ff78cfb97b28716ec96e27f616d439f97-1 create mode 100644 huff0/fuzz/compress/corpus/3542214eb977ea9bdabcc55601d7876b6227b501-2 create mode 100644 huff0/fuzz/compress/corpus/3693a58b98ececb7670844f49caa795c1735ddf0-1 create mode 100644 huff0/fuzz/compress/corpus/3b1d88a86a30b301e5f509a756f43ef34fad55b0-2 create mode 100644 huff0/fuzz/compress/corpus/3f85a2df398429128e89cb13f51f612645550408-11 create mode 100644 huff0/fuzz/compress/corpus/40b8de701a171fddefdc4459023121a1e605b16c create mode 100644 huff0/fuzz/compress/corpus/4106d42682c6b5f9f068148a3d94f5b52d9a2862-1 create mode 100644 huff0/fuzz/compress/corpus/43726b29460c5060782f19cb0facac8443ad5d0b create mode 100644 huff0/fuzz/compress/corpus/43a26357597ae65521480220432ff645450d01f1 create mode 100644 huff0/fuzz/compress/corpus/46fc2fe81fed8fdc49861d8a8433560c5a02d503-2 create mode 100644 huff0/fuzz/compress/corpus/4869e00fbc61867ccab5b83187c3a146ecb36775 create mode 100644 huff0/fuzz/compress/corpus/489d689da4860f3116a62db6b089bb0d5ba4de40 create mode 100644 huff0/fuzz/compress/corpus/48bc76aeb21bc6070323247927d87e591e51eaa9-1 create mode 100644 huff0/fuzz/compress/corpus/4959a4a9db83af17f9368cf490b8a0356d872147-1 create mode 100644 huff0/fuzz/compress/corpus/49dce428e704656d5a4f1053a443ba44f51e91f0-4 create mode 100644 huff0/fuzz/compress/corpus/4a98d52bab6ca703e4521093afa2a400e10f4a7d-2 create mode 100644 huff0/fuzz/compress/corpus/4b4859f278820e969c13c975669322e2c9df9823-5 create mode 100644 huff0/fuzz/compress/corpus/4d1adbc376464b88c52a00ed562cdacbffa4af1a-1 create mode 100644 huff0/fuzz/compress/corpus/4f506d462241876610a0f92a5aa1e2b38ea8722c-7 create mode 100644 huff0/fuzz/compress/corpus/51bdcd2cbd098b042fddc528083572bdbcfbe449-1 create mode 100644 huff0/fuzz/compress/corpus/51c91bfe65eaa40fe4144306d6332ad84e4bb8ed-1 create mode 100644 huff0/fuzz/compress/corpus/53bcc0e78275d3efe9e012e6d30412066bf354f9-2 create mode 100644 huff0/fuzz/compress/corpus/545828581071b0d01c3fd9d15c7850c3f83ea15f-2 create mode 100644 huff0/fuzz/compress/corpus/56860900c11ef30e85ce99b14e0e687745b269ae-9 create mode 100644 huff0/fuzz/compress/corpus/581ed2fb7f25a6a5a8de40beae3dfd1666c511d0-2 create mode 100644 huff0/fuzz/compress/corpus/5b5d4262260375deb5146e3fa43f689923e856a7 create mode 100644 huff0/fuzz/compress/corpus/5c4b6679ee378f2533b099450ed21e40d54f6cd0-3 create mode 100644 huff0/fuzz/compress/corpus/5e13404b6713db5f2d4972747da143057beaaf64-2 create mode 100644 huff0/fuzz/compress/corpus/5e6c62abd0fe49668d26e9bfced0ef0dc699f6a5-3 create mode 100644 huff0/fuzz/compress/corpus/5e701f4039d099c3a15c4e8d9b070eafc96de0e9 create mode 100644 huff0/fuzz/compress/corpus/5f9642a02959a51bf5a67e5347d702fe0ba6af79 create mode 100644 huff0/fuzz/compress/corpus/5fcc48ee5b52b608e5d909ca4eddae9bd8f3a6ae-8 create mode 100644 huff0/fuzz/compress/corpus/60031506809cb3ff39b549968772a652cdaf8e1d-1 create mode 100644 huff0/fuzz/compress/corpus/60df0cda93981b671836008ff12625cd51171e9d create mode 100644 huff0/fuzz/compress/corpus/61077e99c801f3eb732ba4fae2296091eaea9c01-2 create mode 100644 huff0/fuzz/compress/corpus/612edfc64ec2f157158ac6b0b7bdceeb1338d3b8-6 create mode 100644 huff0/fuzz/compress/corpus/617132f8209014d1839691bc6c7d77e70ed60095-7 create mode 100644 huff0/fuzz/compress/corpus/6182f2935dfb8967ce0d259c3fbc143167528f3b-1 create mode 100644 huff0/fuzz/compress/corpus/64bd2417583750313dd74d25c8b2f3eed25909a8 create mode 100644 huff0/fuzz/compress/corpus/64dae3270e5806311fac4518cef7b473e2d3cd91-4 create mode 100644 huff0/fuzz/compress/corpus/67519fd21225a9a0f3c5a86a76de43fd7234e1d4-1 create mode 100644 huff0/fuzz/compress/corpus/6b8432daf9022411b253dd7c8f5611c22cdc3895-2 create mode 100644 huff0/fuzz/compress/corpus/6d44323de19d56374597e2ac06e3beee133a42df create mode 100644 huff0/fuzz/compress/corpus/72fa415daeee2a5f74a86a035e9dda32a29e34e4-2 create mode 100644 huff0/fuzz/compress/corpus/747e5c3eed27e2c0a7a8987c78981b9cece0150c-2 create mode 100644 huff0/fuzz/compress/corpus/780851224f52ce3b64a90ba56b4fc567aba4cd3d-1 create mode 100644 huff0/fuzz/compress/corpus/7d233588c41ecc575034228477393f70d8acb5fd-1 create mode 100644 huff0/fuzz/compress/corpus/7f255b276b164c4309adbab19b872422d979c5e5 create mode 100644 huff0/fuzz/compress/corpus/7fca1fadd76fce238c82e9542eb05acd5bd38653-1 create mode 100644 huff0/fuzz/compress/corpus/8036c610dcec87d7bc42ba4ddddd660372392268-1 create mode 100644 huff0/fuzz/compress/corpus/82186327d4a14ac0da15581a5c7f37e83df72cf5-1 create mode 100644 huff0/fuzz/compress/corpus/85bb13fef173edaeb7be4e6675bf8374bf136d9c-1 create mode 100644 huff0/fuzz/compress/corpus/85d8aceca37403b2a0b6ed82502afd40f2513541 create mode 100644 huff0/fuzz/compress/corpus/872784ffeda8c586972151364e6917bc0fb463d2-4 create mode 100644 huff0/fuzz/compress/corpus/88b9cf63d84dab51dd67f44df0e64977da9dd7f2-3 create mode 100644 huff0/fuzz/compress/corpus/88c2814de9919316170e12c1cbe39ff2a4e3dc69-2 create mode 100644 huff0/fuzz/compress/corpus/89f86a63a2de2d2877451bceaa2bd4e38abc8e64-1 create mode 100644 huff0/fuzz/compress/corpus/8c6d7def5f4465fc685347875a8e64e108b393df create mode 100644 huff0/fuzz/compress/corpus/8d43559e0f27f4a754db78baa697b37013f8a01d-1 create mode 100644 huff0/fuzz/compress/corpus/8d69ef1f7f28824fd8267ae8b36833e3e0b94765 create mode 100644 huff0/fuzz/compress/corpus/9239364aad81b3afb16be9487b5721a6fce7d375-2 create mode 100644 huff0/fuzz/compress/corpus/9508e90548b0440a4a61e5743b76c1e309b23b7f-3 create mode 100644 huff0/fuzz/compress/corpus/9567d94166370de252e759169b215fa8c2288746-11 create mode 100644 huff0/fuzz/compress/corpus/962ecf57ef5bbb4107aaff02072f03d3316077c9-1 create mode 100644 huff0/fuzz/compress/corpus/96629c94c3faec6af9790f99bd72567d4534f9db create mode 100644 huff0/fuzz/compress/corpus/9aa393616dd8a00cd97be9a58bf70a9b4164d802-1 create mode 100644 huff0/fuzz/compress/corpus/9b3ec560e1ed89789a09e834a18fb9f1d042f5dd-2 create mode 100644 huff0/fuzz/compress/corpus/9c61b17678d14d0b9ae09be017c6bbd6a3c3cabe-1 create mode 100644 huff0/fuzz/compress/corpus/9e3fc7fad4bf135219a974a8dac87e366f5b8e8c-2 create mode 100644 huff0/fuzz/compress/corpus/a0bd71e19da9f0265508cdd2a50a458e5cd6bb19 create mode 100644 huff0/fuzz/compress/corpus/a3c5cb453e89aef7359f952459685c26cea30d63-1 create mode 100644 huff0/fuzz/compress/corpus/a48f8d3562980d5cd8b9f0eb3859ee562d7c0596 create mode 100644 huff0/fuzz/compress/corpus/a5ef3d034850ec9510bb931f21a1547518a76f14 create mode 100644 huff0/fuzz/compress/corpus/a70573a8edabc05a2431773757158ac90e63d43a-1 create mode 100644 huff0/fuzz/compress/corpus/a8d099f456e0a9444c10bf1cdfe788da8f65f8d5-6 create mode 100644 huff0/fuzz/compress/corpus/a8d2bd34ee5b24064975a68298bfa566b63a133c-2 create mode 100644 huff0/fuzz/compress/corpus/ac04c28afed2d337f787d007a992e8ec7f937b36 create mode 100644 huff0/fuzz/compress/corpus/ad336c19a004476640934db99f827f2917a09bf8 create mode 100644 huff0/fuzz/compress/corpus/aef8193ef7e7916cebd428e02ae7c9081b9e56a1-6 create mode 100644 huff0/fuzz/compress/corpus/af640328532d29ae2f935b87564cb595f6cbb54e create mode 100644 huff0/fuzz/compress/corpus/b16d3306a414bbbffd9344eb00f460a160fb06bc create mode 100644 huff0/fuzz/compress/corpus/b585a3f5c60ffeef5d5bf13dccca17199d7ab311-2 create mode 100644 huff0/fuzz/compress/corpus/b776d26f33e5cb69dd1ee1bd66da9024509c62b6-1 create mode 100644 huff0/fuzz/compress/corpus/ba4b4565a95f651dd9c3e90b0742db3a422498e1-3 create mode 100644 huff0/fuzz/compress/corpus/bcd851430da545599a636bdf22499157116d652a create mode 100644 huff0/fuzz/compress/corpus/bd0ec04037fbff5629b94a88915ce29cfa3c9f9e create mode 100644 huff0/fuzz/compress/corpus/bf297fbc5cd66aeca02688585a23f98a9f0081f5 create mode 100644 huff0/fuzz/compress/corpus/bf30493a58dc0fad8c77816086b2b32875cade69-1 create mode 100644 huff0/fuzz/compress/corpus/c05bf2b6c368beec9fe1ab4172da851e547b1e49-9 create mode 100644 huff0/fuzz/compress/corpus/c07ac5a6c29ec72f00d7fe9cfcd9900ebf6fcc1a create mode 100644 huff0/fuzz/compress/corpus/c4d93c018e1686a8e4aaf0a4dad8d60fecd13675-4 create mode 100644 huff0/fuzz/compress/corpus/c64b47ad9a354cefde19e93efca0d656a20fe024-6 create mode 100644 huff0/fuzz/compress/corpus/c6f1d808e0fd8c0a973e1b251e93ddae5930638e-1 create mode 100644 huff0/fuzz/compress/corpus/c7fd10d5817ad18dcb798e82328e8a7b087fbbea-1 create mode 100644 huff0/fuzz/compress/corpus/cb7cd34cfe31060ee210487d4d2eb6c1811e67c5 create mode 100644 huff0/fuzz/compress/corpus/cc6c7d741d3c9c4c6ceb1461068d6ec970805e3d create mode 100644 huff0/fuzz/compress/corpus/cdd398e0ae2a152bcb53d296a63e1e8ccaabb75b-3 create mode 100644 huff0/fuzz/compress/corpus/d2142c494b1f6526189f383e88037cd4c05e16bb create mode 100644 huff0/fuzz/compress/corpus/d237dcb7a55a9542fbe886c9631804dea200b56a-2 create mode 100644 huff0/fuzz/compress/corpus/d38389226ead13791d80008cc5fb1eef75aa0be4-6 create mode 100644 huff0/fuzz/compress/corpus/d977ecea3fcbb78028aabdb98bf098594d5eaba7-2 create mode 100644 huff0/fuzz/compress/corpus/da39a3ee5e6b4b0d3255bfef95601890afd80709 create mode 100644 huff0/fuzz/compress/corpus/dba30063a9e305d125c83f435e35e0aaa33c560c-1 create mode 100644 huff0/fuzz/compress/corpus/dc2f0ff7f3e2d2a2b290bf36e85c695506c68782 create mode 100644 huff0/fuzz/compress/corpus/ddaf0bfb51c7134e58a010fe0a099e76e7bca7f6 create mode 100644 huff0/fuzz/compress/corpus/ddc3609a7e8f2da5428973c80847b1ae0bc74af7-4 create mode 100644 huff0/fuzz/compress/corpus/dde60ed75565b253fc44c8543a788dbef7b9a53f-2 create mode 100644 huff0/fuzz/compress/corpus/e1170c6fe09522cb50935557856ba9d85c2b37de-3 create mode 100644 huff0/fuzz/compress/corpus/e1323173b156c91190a3b84ca33c955550404ade-2 create mode 100644 huff0/fuzz/compress/corpus/e295ba780df856ae31513226b96e8382063d034d create mode 100644 huff0/fuzz/compress/corpus/e36bba8cd1c971edf6696aa76dfaf690e21e08c3-5 create mode 100644 huff0/fuzz/compress/corpus/e4862372d6534ac4eb19df7d21840887b8297df8 create mode 100644 huff0/fuzz/compress/corpus/e6722bb760655d9d3dbbdc4f9ebf7354a2461d97 create mode 100644 huff0/fuzz/compress/corpus/e77ce13737af5a84c7a50d9d18a6699fb862c63b-3 create mode 100644 huff0/fuzz/compress/corpus/e85ca8b54d82486ba7462ea0659c42a0a36cdb71-8 create mode 100644 huff0/fuzz/compress/corpus/ea616ea4310406f7893091a96e87e0b9c0412e4b-1 create mode 100644 huff0/fuzz/compress/corpus/ed0f1c5ee2700c3c2d9a0914de90363e750c3f47-3 create mode 100644 huff0/fuzz/compress/corpus/ee481cbb8636f3957618b3e627cc6a56caa1dce5-1 create mode 100644 huff0/fuzz/compress/corpus/efa3bc9831786d0e203957fd2ac2c4de9d5c168a-2 create mode 100644 huff0/fuzz/compress/corpus/f0121676050a7bb84ade5c4783407e0527ca88a4-3 create mode 100644 huff0/fuzz/compress/corpus/f0bd04a4f5ccd427cf59b79e2f67caafdbfa0233-3 create mode 100644 huff0/fuzz/compress/corpus/f2a68d20b1e145bbf69037f17685e0adedfe68a4-6 create mode 100644 huff0/fuzz/compress/corpus/f320b3ab9e260a1bbd378762c54a8e23f794901a-2 create mode 100644 huff0/fuzz/compress/corpus/f5829f8a97a0a1dc008752245b460db0a0459c03 create mode 100644 huff0/fuzz/compress/corpus/f62e0a3c0c8bd15aa0b2f991898f2d27d2964d44-2 create mode 100644 huff0/fuzz/compress/corpus/f670ffe6dc8a8e0b45bfa675672498f90b44001e-2 create mode 100644 huff0/fuzz/compress/corpus/f7a76f4c851f342d0d576ffa71329438e109347c create mode 100644 huff0/fuzz/compress/corpus/f8d134ecc8e30461236ed7b28aeb29bc2987e50e-1 create mode 100644 huff0/fuzz/compress/corpus/ffc64298b00af19e0f953728f42fa8e915d7b470 create mode 100644 huff0/fuzz/decompress/corpus/00018ebe176ab4fa757c5da39cd8b2270f12de24-10 create mode 100644 huff0/fuzz/decompress/corpus/0170787897b2aec4a4477ab507777ad13eb00e10-1 create mode 100644 huff0/fuzz/decompress/corpus/0297e0b01e8ace9ec3a22311966681bbe06b875f-5 create mode 100644 huff0/fuzz/decompress/corpus/04bc4648208f40ba61ffb9a929f760c24101522c-1 create mode 100644 huff0/fuzz/decompress/corpus/04bc4648208f40ba61ffb9a929f760c24101522c-1-4x create mode 100644 huff0/fuzz/decompress/corpus/04fe6043558c921672856d1d9332bb41b7d64087-2 create mode 100644 huff0/fuzz/decompress/corpus/05575bdaa6ba33f22d304f9f3a62010e42f76acf-2 create mode 100644 huff0/fuzz/decompress/corpus/0a7ce59229caf93ee64d5a828aecab7b5e434bbc create mode 100644 huff0/fuzz/decompress/corpus/0a7ce59229caf93ee64d5a828aecab7b5e434bbc-4x create mode 100644 huff0/fuzz/decompress/corpus/0ceda9053c751bf974334c7c1676832feea92d69 create mode 100644 huff0/fuzz/decompress/corpus/0ceda9053c751bf974334c7c1676832feea92d69-4x create mode 100644 huff0/fuzz/decompress/corpus/0e90b9893889f69194ca72e28082a1f6081c4b35-1 create mode 100644 huff0/fuzz/decompress/corpus/0fcf0d8fa929e950029b365ad631e876ec5f3c47-1 create mode 100644 huff0/fuzz/decompress/corpus/1050baf5be0eeaa50c7e2ccd22c386146d582668-5 create mode 100644 huff0/fuzz/decompress/corpus/112b9d35e8cbeabce6fda543aec804ab83185543-1 create mode 100644 huff0/fuzz/decompress/corpus/112b9d35e8cbeabce6fda543aec804ab83185543-1-4x create mode 100644 huff0/fuzz/decompress/corpus/118873131212b4f8e4f2b7aa9e398911bf83fb21-2 create mode 100644 huff0/fuzz/decompress/corpus/12a386209a550aec21fbfa0b2ec8c066fe131db7-2 create mode 100644 huff0/fuzz/decompress/corpus/17a53cfc55c261af6e258f0effbe34a9d0c3a117-2 create mode 100644 huff0/fuzz/decompress/corpus/182516c486b2eafc720a03046af1949a758ff7b4-3 create mode 100644 huff0/fuzz/decompress/corpus/1e23aabdf832d3bd167105c98f4931313e0df945-8 create mode 100644 huff0/fuzz/decompress/corpus/1eb38d67be98350dd6ce98f72e5b1b75043ce8c7 create mode 100644 huff0/fuzz/decompress/corpus/223bb6b768c691e0f2eb62db5821b8678a9ecc93-3 create mode 100644 huff0/fuzz/decompress/corpus/2273a03f5b8fe56f4bbb7f7e9560c440fb8237c8-5 create mode 100644 huff0/fuzz/decompress/corpus/234ec5ad1fc105fcc08523ff91bd8430284aa1f3 create mode 100644 huff0/fuzz/decompress/corpus/234ec5ad1fc105fcc08523ff91bd8430284aa1f3-4x create mode 100644 huff0/fuzz/decompress/corpus/236bd270f4d36e14eaf41daf5bf33e55ff5f463d-6 create mode 100644 huff0/fuzz/decompress/corpus/269f2e5e3b3b1acba92aefd0a49444d0869af5ae-7 create mode 100644 huff0/fuzz/decompress/corpus/2805bdad6bc68c3c6edd9344d658b6d43a8dbcbc-3 create mode 100644 huff0/fuzz/decompress/corpus/3187c5cc2c8b927997cbd46e9328581620116613-12 create mode 100644 huff0/fuzz/decompress/corpus/34e0f846cc18c5c0a6e0334192411dc2c6a1c719-7 create mode 100644 huff0/fuzz/decompress/corpus/36971f66110d363f2a217d16bf1913475c25a862-3 create mode 100644 huff0/fuzz/decompress/corpus/38729163260fdf7a5526f17de3cb34f02661e8c9-1 create mode 100644 huff0/fuzz/decompress/corpus/3885c38b78f31c98dd73bc1fa7d6dfe467eb0fa4-3 create mode 100644 huff0/fuzz/decompress/corpus/3aa823c93e1ed004c38d32fc9f96c9f6036e7c77-5 create mode 100644 huff0/fuzz/decompress/corpus/3c48a486a1b94dc9df2201c25f411123cedd119c-10 create mode 100644 huff0/fuzz/decompress/corpus/3cee784d376938121b711cd56f71a68f3496cda8-4 create mode 100644 huff0/fuzz/decompress/corpus/3f85a2df398429128e89cb13f51f612645550408-11 create mode 100644 huff0/fuzz/decompress/corpus/40b8de701a171fddefdc4459023121a1e605b16c create mode 100644 huff0/fuzz/decompress/corpus/40b8de701a171fddefdc4459023121a1e605b16c-4x create mode 100644 huff0/fuzz/decompress/corpus/40fbf19f5ba46c802a2755c71c852b92fc334dd4-2 create mode 100644 huff0/fuzz/decompress/corpus/4106d42682c6b5f9f068148a3d94f5b52d9a2862-1 create mode 100644 huff0/fuzz/decompress/corpus/4106d42682c6b5f9f068148a3d94f5b52d9a2862-1-4x create mode 100644 huff0/fuzz/decompress/corpus/43726b29460c5060782f19cb0facac8443ad5d0b create mode 100644 huff0/fuzz/decompress/corpus/43726b29460c5060782f19cb0facac8443ad5d0b-4x create mode 100644 huff0/fuzz/decompress/corpus/43a26357597ae65521480220432ff645450d01f1 create mode 100644 huff0/fuzz/decompress/corpus/43a26357597ae65521480220432ff645450d01f1-4x create mode 100644 huff0/fuzz/decompress/corpus/44678db801ad65c4ba51cc5e0cd9095852f329cd-9 create mode 100644 huff0/fuzz/decompress/corpus/46fc2fe81fed8fdc49861d8a8433560c5a02d503-2 create mode 100644 huff0/fuzz/decompress/corpus/475dfd55b54d9a0a4287ab8b952f606f2773a49c-1 create mode 100644 huff0/fuzz/decompress/corpus/4869e00fbc61867ccab5b83187c3a146ecb36775 create mode 100644 huff0/fuzz/decompress/corpus/4869e00fbc61867ccab5b83187c3a146ecb36775-4x create mode 100644 huff0/fuzz/decompress/corpus/489bdb7862474650462b753ed85d2a123d1730ca-2 create mode 100644 huff0/fuzz/decompress/corpus/4bb7d1adac51afa9ac4650ee8ae5203297aa8fec-4 create mode 100644 huff0/fuzz/decompress/corpus/542e60846887c634378dd1b29d3ce29b90e13f99-6 create mode 100644 huff0/fuzz/decompress/corpus/54fbf0fc6ed4319b2c0986f26c3a142b194d9ca3-4 create mode 100644 huff0/fuzz/decompress/corpus/5889a9b84fb69d2913d474a381ddceb217137d06-1 create mode 100644 huff0/fuzz/decompress/corpus/5b85e7d11f14ff2864b2c56e03188f15e52fd9bb-8 create mode 100644 huff0/fuzz/decompress/corpus/649971daa4b93c4ffe6190415f22569030f2300a-3 create mode 100644 huff0/fuzz/decompress/corpus/6903fccf79c27b4cffe21090d03c6879cbb72274-6 create mode 100644 huff0/fuzz/decompress/corpus/695a09b31703a8f7f00422a62549912c31263506-3 create mode 100644 huff0/fuzz/decompress/corpus/6a88ce804bf81bb01a233527595b27668cca331d-1 create mode 100644 huff0/fuzz/decompress/corpus/6c16b84194ac60c492487044ed3ee744c506faf6-2 create mode 100644 huff0/fuzz/decompress/corpus/6cdd7b3f70c2448bb4f666c8bc5aa6a890a34f7a-3 create mode 100644 huff0/fuzz/decompress/corpus/73e369adcad522a27653be74fe4a9ff8d30ea19e-7 create mode 100644 huff0/fuzz/decompress/corpus/7f1623aee483c22124f8ecd37ad62c5acc932304-4 create mode 100644 huff0/fuzz/decompress/corpus/87e26a4d86b6f1ffba523d73bdf7479715faa6c0-5 create mode 100644 huff0/fuzz/decompress/corpus/8af40c705337fe65b50643a231029a953ea998af-5 create mode 100644 huff0/fuzz/decompress/corpus/913987cb3ea3aa8df9fabade3b6440bfb0e14019-1 create mode 100644 huff0/fuzz/decompress/corpus/94b18a8ac5c2cd3b040754e236dadeae895b3dae-13 create mode 100644 huff0/fuzz/decompress/corpus/9835e8bdcd54890f9ff4dfdb634b5a6dc254f09e-2 create mode 100644 huff0/fuzz/decompress/corpus/9f3d543656b54b38ac84f009a626bdfb074393cb-2 create mode 100644 huff0/fuzz/decompress/corpus/a70fe33ef1a23361593e5d25ed782c2b4ee22813-1 create mode 100644 huff0/fuzz/decompress/corpus/ab076dfc3f75d3a603806cbf3ab318bab8575591-7 create mode 100644 huff0/fuzz/decompress/corpus/ac8feec2af44db5a6eafff09781dc9c922fc1380-4 create mode 100644 huff0/fuzz/decompress/corpus/aeb91ce9a4b3547b57a3ab02add1500b6d6447a8-4 create mode 100644 huff0/fuzz/decompress/corpus/af04c0ac0c9608e913ab0f27a1426630adc72f57-8 create mode 100644 huff0/fuzz/decompress/corpus/b8fceb6a5aa974b33d2dc94526c96a3d46633e89-4 create mode 100644 huff0/fuzz/decompress/corpus/ba01d6cf0fb9c71370ef35d6c6cebb1fa75018f6-5 create mode 100644 huff0/fuzz/decompress/corpus/bf49b2edbbb9da8b0c135b3ed5e5a5a7e77e61a9-2 create mode 100644 huff0/fuzz/decompress/corpus/c03c780b2d547bf3157d929730d554533b570acc-6 create mode 100644 huff0/fuzz/decompress/corpus/c37533eda04d4cd770cce546fd0db044407d765c-1 create mode 100644 huff0/fuzz/decompress/corpus/c3793d6b45cba4a91dc18770c1c2a9946d334258-1 create mode 100644 huff0/fuzz/decompress/corpus/c9d84a90c00d2393354dd80dbb9d26e8edd387e0-10 create mode 100644 huff0/fuzz/decompress/corpus/d06c109bc27d8914b330b99ac8262cbceda79b4f-1 create mode 100644 huff0/fuzz/decompress/corpus/d1f80ef35b58a2366e5b133473dc273f3740d57b-7 create mode 100644 huff0/fuzz/decompress/corpus/d2e694ef05e527e478769df82b0f65fb3b442a45-1 create mode 100644 huff0/fuzz/decompress/corpus/da39a3ee5e6b4b0d3255bfef95601890afd80709-2 create mode 100644 huff0/fuzz/decompress/corpus/db3bda50ea81814214d6e6c511736731a44d7b9a-2 create mode 100644 huff0/fuzz/decompress/corpus/ddf623fc42f256fbee77d98e0c341d8f8e967d6f-6 create mode 100644 huff0/fuzz/decompress/corpus/e7416101c16988f1aa4ad09e2e0ea26698a69fd5-6 create mode 100644 huff0/fuzz/decompress/corpus/eae606b8c2871f94da1b8190d095e686e9f2eebc-5 create mode 100644 huff0/fuzz/decompress/corpus/ec2c23b0ecfb55422bb7376b9de762f0cb2daabc-5 create mode 100644 huff0/fuzz/decompress/corpus/ee5e3543ec53aa392b7485e16163661dc45c61b8-3 create mode 100644 huff0/fuzz/decompress/corpus/f317ba679fa2f7020fd501a5ceb78a12da06a817-4 create mode 100644 huff0/fuzz/decompress/corpus/fa0258e24eecdba8b3e9355740c458120b4babce-7 create mode 100644 huff0/fuzz/decompress/corpus/fab8c92bc4068e05f10d9b1978a34bfd5a0c12da-4 create mode 100644 huff0/fuzz/run-compress.cmd create mode 100644 huff0/fuzz/run-decompress.cmd create mode 100644 huff0/fuzz_compress.go create mode 100644 huff0/fuzz_decompress.go create mode 100644 huff0/highbit_go19.go create mode 100644 huff0/highbit_old.go create mode 100644 huff0/huff0.go diff --git a/.travis.yml b/.travis.yml index b2ab17a917..a02999a764 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,7 @@ go: - 1.7.x - 1.8.x - 1.9.x + - 1.10.x - master install: diff --git a/README.md b/README.md index b35755d46d..8e5e13cf48 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,9 @@ It offers slightly better compression at lower compression settings, and up to 3 [![Sourcegraph Badge](https://sourcegraph.com/github.com/klauspost/compress/-/badge.svg)](https://sourcegraph.com/github.com/klauspost/compress?badge) # changelog + +* Apr 2, 2018: Added [huff0](https://godoc.org/github.com/klauspost/compress/huff0) en/decoder. Experimental for now, API may change. +* Mar 4, 2018: Added [FSE Entropy](https://godoc.org/github.com/klauspost/compress/fse) en/decoder. Experimental for now, API may change. * Nov 3, 2017: Add compression [Estimate](https://godoc.org/github.com/klauspost/compress#Estimate) function. * May 28, 2017: Reduce allocations when resetting decoder. * Apr 02, 2017: Change back to official crc32, since changes were merged in Go 1.7. diff --git a/fse/fse.go b/fse/fse.go index 677cda77c7..57cfda30f4 100644 --- a/fse/fse.go +++ b/fse/fse.go @@ -82,17 +82,22 @@ type Scratch struct { // Histogram allows to populate the histogram and skip that step in the compression, // It otherwise allows to inspect the histogram when compression is done. -// To indicate that you have populated the histogram call the returned function +// To indicate that you have populated the histogram call HistogramFinished // with the value of the highest populated symbol, as well as the number of entries // in the most populated entry. These are accepted at face value. // The returned slice will always be length 256. -// If you have *not* populated the histogram, send 0 as maxCount before next compression cycle. -func (s *Scratch) Histogram() ([]uint32, func(maxSymbol uint8, maxCount int)) { - return s.count[:], func(maxSymbol uint8, maxCount int) { - s.maxCount = maxCount - s.symbolLen = uint16(maxSymbol) + 1 - s.clearCount = maxCount != 0 - } +func (s *Scratch) Histogram() []uint32 { + return s.count[:] +} + +// HistogramFinished can be called to indicate that the histogram has been populated. +// maxSymbol is the index of the highest set symbol of the next data segment. +// maxCount is the number of entries in the most populated entry. +// These are accepted at face value. +func (s *Scratch) HistogramFinished(maxSymbol uint8, maxCount int) { + s.maxCount = maxCount + s.symbolLen = uint16(maxSymbol) + 1 + s.clearCount = maxCount != 0 } // prepare will prepare and allocate scratch tables used for both compression and decompression. diff --git a/huff0/.gitignore b/huff0/.gitignore new file mode 100644 index 0000000000..b3d262958f --- /dev/null +++ b/huff0/.gitignore @@ -0,0 +1 @@ +/huff0-fuzz.zip diff --git a/huff0/bitreader.go b/huff0/bitreader.go new file mode 100644 index 0000000000..7d0903c701 --- /dev/null +++ b/huff0/bitreader.go @@ -0,0 +1,115 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package huff0 + +import ( + "errors" + "io" +) + +// bitReader reads a bitstream in reverse. +// The last set bit indicates the start of the stream and is used +// for aligning the input. +type bitReader struct { + in []byte + off uint // next byte to read is at in[off - 1] + value uint64 + bitsRead uint8 +} + +// init initializes and resets the bit reader. +func (b *bitReader) init(in []byte) error { + if len(in) < 1 { + return errors.New("corrupt stream: too short") + } + b.in = in + b.off = uint(len(in)) + // The highest bit of the last byte indicates where to start + v := in[len(in)-1] + if v == 0 { + return errors.New("corrupt stream, did not find end of stream") + } + b.bitsRead = 64 + b.value = 0 + b.fill() + b.fill() + b.bitsRead += 8 - uint8(highBit32(uint32(v))) + return nil +} + +// getBits will return n bits. n can be 0. +func (b *bitReader) getBits(n uint8) uint16 { + if n == 0 || b.bitsRead >= 64 { + return 0 + } + return b.getBitsFast(n) +} + +// getBitsFast requires that at least one bit is requested every time. +// There are no checks if the buffer is filled. +func (b *bitReader) getBitsFast(n uint8) uint16 { + const regMask = 64 - 1 + v := uint16((b.value << (b.bitsRead & regMask)) >> ((regMask + 1 - n) & regMask)) + b.bitsRead += n + return v +} + +// peekBitsFast requires that at least one bit is requested every time. +// There are no checks if the buffer is filled. +func (b *bitReader) peekBitsFast(n uint8) uint16 { + const regMask = 64 - 1 + v := uint16((b.value << (b.bitsRead & regMask)) >> ((regMask + 1 - n) & regMask)) + return v +} + +// fillFast() will make sure at least 32 bits are available. +// There must be at least 4 bytes available. +func (b *bitReader) fillFast() { + if b.bitsRead < 32 { + return + } + // Do single re-slice to avoid bounds checks. + v := b.in[b.off-4 : b.off] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value = (b.value << 32) | uint64(low) + b.bitsRead -= 32 + b.off -= 4 +} + +// fill() will make sure at least 32 bits are available. +func (b *bitReader) fill() { + if b.bitsRead < 32 { + return + } + if b.off > 4 { + v := b.in[b.off-4 : b.off] + low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) + b.value = (b.value << 32) | uint64(low) + b.bitsRead -= 32 + b.off -= 4 + return + } + for b.off > 0 { + b.value = (b.value << 8) | uint64(b.in[b.off-1]) + b.bitsRead -= 8 + b.off-- + } +} + +// finished returns true if all bits have been read from the bit stream. +func (b *bitReader) finished() bool { + return b.off == 0 && b.bitsRead >= 64 +} + +// close the bitstream and returns an error if out-of-buffer reads occurred. +func (b *bitReader) close() error { + // Release reference. + b.in = nil + if b.bitsRead > 64 { + return io.ErrUnexpectedEOF + } + return nil +} diff --git a/huff0/bitwriter.go b/huff0/bitwriter.go new file mode 100644 index 0000000000..c9d8e0ef92 --- /dev/null +++ b/huff0/bitwriter.go @@ -0,0 +1,176 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package huff0 + +import "fmt" + +// bitWriter will write bits. +// First bit will be LSB of the first byte of output. +type bitWriter struct { + bitContainer uint64 + nBits uint8 + out []byte +} + +// bitMask16 is bitmasks. Has extra to avoid bounds check. +var bitMask16 = [32]uint16{ + 0, 1, 3, 7, 0xF, 0x1F, + 0x3F, 0x7F, 0xFF, 0x1FF, 0x3FF, 0x7FF, + 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF} /* up to 16 bits */ + +// addBits16NC will add up to 16 bits. +// It will not check if there is space for them, +// so the caller must ensure that it has flushed recently. +func (b *bitWriter) addBits16NC(value uint16, bits uint8) { + b.bitContainer |= uint64(value&bitMask16[bits&31]) << (b.nBits & 63) + b.nBits += bits +} + +// addBits16Clean will add up to 16 bits. value may not contain more set bits than indicated. +// It will not check if there is space for them, so the caller must ensure that it has flushed recently. +func (b *bitWriter) addBits16Clean(value uint16, bits uint8) { + b.bitContainer |= uint64(value) << (b.nBits & 63) + b.nBits += bits +} + +// addBits16Clean will add up to 16 bits. value may not contain more set bits than indicated. +// It will not check if there is space for them, so the caller must ensure that it has flushed recently. +func (b *bitWriter) encSymbol(ct cTable, symbol byte) { + enc := ct[symbol] + b.bitContainer |= uint64(enc.val) << (b.nBits & 63) + b.nBits += enc.nBits +} + +// addBits16ZeroNC will add up to 16 bits. +// It will not check if there is space for them, +// so the caller must ensure that it has flushed recently. +// This is fastest if bits can be zero. +func (b *bitWriter) addBits16ZeroNC(value uint16, bits uint8) { + if bits == 0 { + return + } + value <<= (16 - bits) & 15 + value >>= (16 - bits) & 15 + b.bitContainer |= uint64(value) << (b.nBits & 63) + b.nBits += bits +} + +// flush will flush all pending full bytes. +// There will be at least 56 bits available for writing when this has been called. +// Using flush32 is faster, but leaves less space for writing. +func (b *bitWriter) flush() { + v := b.nBits >> 3 + switch v { + case 0: + case 1: + b.out = append(b.out, + byte(b.bitContainer), + ) + case 2: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + ) + case 3: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + ) + case 4: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24), + ) + case 5: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24), + byte(b.bitContainer>>32), + ) + case 6: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24), + byte(b.bitContainer>>32), + byte(b.bitContainer>>40), + ) + case 7: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24), + byte(b.bitContainer>>32), + byte(b.bitContainer>>40), + byte(b.bitContainer>>48), + ) + case 8: + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24), + byte(b.bitContainer>>32), + byte(b.bitContainer>>40), + byte(b.bitContainer>>48), + byte(b.bitContainer>>56), + ) + default: + panic(fmt.Errorf("bits (%d) > 64", b.nBits)) + } + b.bitContainer >>= v << 3 + b.nBits &= 7 +} + +// flush32 will flush out, so there are at least 32 bits available for writing. +func (b *bitWriter) flush32() { + if b.nBits < 32 { + return + } + b.out = append(b.out, + byte(b.bitContainer), + byte(b.bitContainer>>8), + byte(b.bitContainer>>16), + byte(b.bitContainer>>24)) + b.nBits -= 32 + b.bitContainer >>= 32 +} + +// flushAlign will flush remaining full bytes and align to next byte boundary. +func (b *bitWriter) flushAlign() { + nbBytes := (b.nBits + 7) >> 3 + for i := uint8(0); i < nbBytes; i++ { + b.out = append(b.out, byte(b.bitContainer>>(i*8))) + } + b.nBits = 0 + b.bitContainer = 0 +} + +// close will write the alignment bit and write the final byte(s) +// to the output. +func (b *bitWriter) close() error { + // End mark + b.addBits16Clean(1, 1) + // flush until next byte. + b.flushAlign() + return nil +} + +// reset and continue writing by appending to out. +func (b *bitWriter) reset(out []byte) { + b.bitContainer = 0 + b.nBits = 0 + b.out = out +} diff --git a/huff0/bytereader.go b/huff0/bytereader.go new file mode 100644 index 0000000000..50bcdf6ea9 --- /dev/null +++ b/huff0/bytereader.go @@ -0,0 +1,54 @@ +// Copyright 2018 Klaus Post. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// Based on work Copyright (c) 2013, Yann Collet, released under BSD License. + +package huff0 + +// byteReader provides a byte reader that reads +// little endian values from a byte stream. +// The input stream is manually advanced. +// The reader performs no bounds checks. +type byteReader struct { + b []byte + off int +} + +// init will initialize the reader and set the input. +func (b *byteReader) init(in []byte) { + b.b = in + b.off = 0 +} + +// advance the stream b n bytes. +func (b *byteReader) advance(n uint) { + b.off += int(n) +} + +// Int32 returns a little endian int32 starting at current offset. +func (b byteReader) Int32() int32 { + v3 := int32(b.b[b.off+3]) + v2 := int32(b.b[b.off+2]) + v1 := int32(b.b[b.off+1]) + v0 := int32(b.b[b.off]) + return (v3 << 24) | (v2 << 16) | (v1 << 8) | v0 +} + +// Uint32 returns a little endian uint32 starting at current offset. +func (b byteReader) Uint32() uint32 { + v3 := uint32(b.b[b.off+3]) + v2 := uint32(b.b[b.off+2]) + v1 := uint32(b.b[b.off+1]) + v0 := uint32(b.b[b.off]) + return (v3 << 24) | (v2 << 16) | (v1 << 8) | v0 +} + +// unread returns the unread portion of the input. +func (b byteReader) unread() []byte { + return b.b[b.off:] +} + +// remain will return the number of bytes remaining. +func (b byteReader) remain() int { + return len(b.b) - b.off +} diff --git a/huff0/compress.go b/huff0/compress.go new file mode 100644 index 0000000000..f51a542203 --- /dev/null +++ b/huff0/compress.go @@ -0,0 +1,595 @@ +package huff0 + +import ( + "fmt" + "runtime" + "sync" +) + +func Compress1X(in []byte, s *Scratch) (out []byte, reUsed bool, err error) { + s, err = s.prepare(in) + if err != nil { + return nil, false, err + } + return compress(in, s, s.compress1X) +} + +func Compress4X(in []byte, s *Scratch) (out []byte, reUsed bool, err error) { + s, err = s.prepare(in) + if err != nil { + return nil, false, err + } + if false { + // TODO: compress4Xp only slightly faster. + const parallelThreshold = 8 << 10 + if len(in) < parallelThreshold || runtime.GOMAXPROCS(0) == 1 { + return compress(in, s, s.compress4X) + } + return compress(in, s, s.compress4Xp) + } + return compress(in, s, s.compress4X) +} + +func compress(in []byte, s *Scratch, compressor func(src []byte) ([]byte, error)) (out []byte, reUsed bool, err error) { + // Nuke previous table if we cannot reuse anyway. + if s.Reuse == ReusePolicyNone { + s.prevTable = s.prevTable[:0] + } + // Create histogram, if none was provided. + maxCount := s.maxCount + var canReuse = false + if maxCount == 0 { + maxCount, canReuse = s.countSimple(in) + } else { + canReuse = s.canUseTable(s.prevTable) + } + + // Reset for next run. + s.clearCount = true + s.maxCount = 0 + if maxCount >= len(in) { + if maxCount > len(in) { + return nil, false, fmt.Errorf("maxCount (%d) > length (%d)", maxCount, len(in)) + } + // One symbol, use RLE + return nil, false, ErrUseRLE + } + if maxCount == 1 || maxCount < (len(in)>>7) { + // Each symbol present maximum once or too well distributed. + return nil, false, ErrIncompressible + } + + if s.Reuse == ReusePolicyPrefer && canReuse { + keepTable := s.cTable + s.cTable = s.prevTable + s.Out, err = compressor(in) + s.cTable = keepTable + if err == nil && len(s.Out) < len(in) { + s.OutData = s.Out + return s.Out, true, nil + } + // Do not attempt to re-use later. + s.prevTable = s.prevTable[:0] + } + + // Calculate new table. + s.optimalTableLog() + err = s.buildCTable() + if err != nil { + return nil, false, err + } + + if !s.canUseTable(s.cTable) { + // TODO: Not needed. + panic("invalid table generated") + } + + if s.Reuse == ReusePolicyAllow && canReuse { + hSize := len(s.Out) + oldSize := s.prevTable.estimateSize(s.count[:s.symbolLen]) + newSize := s.cTable.estimateSize(s.count[:s.symbolLen]) + if oldSize <= hSize+newSize || hSize+12 >= len(in) { + // Retain cTable even if we re-use. + keepTable := s.cTable + s.cTable = s.prevTable + s.Out, err = compressor(in) + s.cTable = keepTable + if len(s.Out) >= len(in) { + return nil, false, ErrIncompressible + } + s.OutData = s.Out + return s.Out, true, nil + } + } + + // Use new table + s.cTable.write(s) + s.OutTable = s.Out + + // Compress using new table + s.Out, err = compressor(in) + if err != nil { + s.OutTable = nil + return nil, false, err + } + if len(s.Out) >= len(in) { + s.OutTable = nil + return nil, false, ErrIncompressible + } + // Move current table into previous. + s.prevTable, s.cTable = s.cTable, s.prevTable[:0] + s.OutData = s.Out[len(s.OutTable):] + return s.Out, false, nil +} + +func (s *Scratch) compress1X(src []byte) ([]byte, error) { + return s.compress1xDo(s.Out, src) +} + +func (s *Scratch) compress1xDo(dst, src []byte) ([]byte, error) { + var bw = bitWriter{out: dst} + + // N is length divisible by 4. + n := len(src) + n -= n & 3 + cTable := s.cTable[:256] + + // Encode last bytes. + for i := len(src) & 3; i > 0; i-- { + bw.encSymbol(cTable, src[n+i-1]) + } + if s.actualTableLog <= 8 { + n -= 4 + for ; n >= 0; n -= 4 { + tmp := src[n : n+4] + // tmp should be len 4 + bw.flush32() + bw.encSymbol(cTable, tmp[3]) + bw.encSymbol(cTable, tmp[2]) + bw.encSymbol(cTable, tmp[1]) + bw.encSymbol(cTable, tmp[0]) + } + } else { + n -= 4 + for ; n >= 0; n -= 4 { + tmp := src[n : n+4] + // tmp should be len 4 + bw.flush32() + bw.encSymbol(cTable, tmp[3]) + bw.encSymbol(cTable, tmp[2]) + bw.flush32() + bw.encSymbol(cTable, tmp[1]) + bw.encSymbol(cTable, tmp[0]) + } + } + err := bw.close() + return bw.out, err +} + +var sixZeros [6]byte + +func (s *Scratch) compress4X(src []byte) ([]byte, error) { + if len(src) < 12 { + return nil, ErrIncompressible + } + segmentSize := (len(src) + 3) / 4 + + // Add placeholder for output length + offsetIdx := len(s.Out) + s.Out = append(s.Out, sixZeros[:]...) + + for i := 0; i < 4; i++ { + toDo := src + if len(toDo) > segmentSize { + toDo = toDo[:segmentSize] + } + src = src[len(toDo):] + + var err error + idx := len(s.Out) + s.Out, err = s.compress1xDo(s.Out, toDo) + if err != nil { + return nil, err + } + // Write compressed length as little endian before block. + if i < 3 { + // Last length is not written. + length := len(s.Out) - idx + s.Out[i*2+offsetIdx] = byte(length) + s.Out[i*2+offsetIdx+1] = byte(length >> 8) + } + } + + return s.Out, nil +} + +// compress4Xp will compress 4 streams using separate goroutines. +func (s *Scratch) compress4Xp(src []byte) ([]byte, error) { + if len(src) < 12 { + return nil, ErrIncompressible + } + // Add placeholder for output length + s.Out = s.Out[:6] + + segmentSize := (len(src) + 3) / 4 + var wg sync.WaitGroup + var errs [4]error + wg.Add(4) + for i := 0; i < 4; i++ { + toDo := src + if len(toDo) > segmentSize { + toDo = toDo[:segmentSize] + } + src = src[len(toDo):] + + // Separate goroutine for each block. + go func(i int) { + s.tmpOut[i], errs[i] = s.compress1xDo(s.tmpOut[i][:0], toDo) + wg.Done() + }(i) + } + wg.Wait() + for i := 0; i < 4; i++ { + if errs[i] != nil { + return nil, errs[i] + } + o := s.tmpOut[i] + // Write compressed length as little endian before block. + if i < 3 { + // Last length is not written. + s.Out[i*2] = byte(len(o)) + s.Out[i*2+1] = byte(len(o) >> 8) + } + + // Write output. + s.Out = append(s.Out, o...) + } + return s.Out, nil +} + +// countSimple will create a simple histogram in s.count. +// Returns the biggest count. +// Does not update s.clearCount. +func (s *Scratch) countSimple(in []byte) (max int, reuse bool) { + reuse = true + for _, v := range in { + s.count[v]++ + } + m := uint32(0) + if len(s.prevTable) > 0 { + for i, v := range s.count[:] { + if v > m { + m = v + } + if v > 0 { + s.symbolLen = uint16(i) + 1 + if i >= len(s.prevTable) { + reuse = false + } else { + if s.prevTable[i].nBits == 0 { + reuse = false + } + } + } + } + return int(m), reuse + } + for i, v := range s.count[:] { + if v > m { + m = v + } + if v > 0 { + s.symbolLen = uint16(i) + 1 + } + } + return int(m), false +} + +func (s *Scratch) canUseTable(c cTable) bool { + if len(c) < int(s.symbolLen) { + return false + } + for i, v := range s.count[:s.symbolLen] { + if v != 0 && c[i].nBits == 0 { + return false + } + } + return true +} + +// minTableLog provides the minimum logSize to safely represent a distribution. +func (s *Scratch) minTableLog() uint8 { + minBitsSrc := highBit32(uint32(s.br.remain()-1)) + 1 + minBitsSymbols := highBit32(uint32(s.symbolLen-1)) + 2 + if minBitsSrc < minBitsSymbols { + return uint8(minBitsSrc) + } + return uint8(minBitsSymbols) +} + +// optimalTableLog calculates and sets the optimal tableLog in s.actualTableLog +func (s *Scratch) optimalTableLog() { + tableLog := s.TableLog + minBits := s.minTableLog() + maxBitsSrc := uint8(highBit32(uint32(s.br.remain()-1))) - 2 + if maxBitsSrc < tableLog { + // Accuracy can be reduced + tableLog = maxBitsSrc + } + if minBits > tableLog { + tableLog = minBits + } + // Need a minimum to safely represent all symbol values + if tableLog < minTablelog { + tableLog = minTablelog + } + if tableLog > tableLogMax { + tableLog = tableLogMax + } + s.actualTableLog = tableLog +} + +type cTableEntry struct { + val uint16 + nBits uint8 + // We have 8 bits extra +} + +const huffNodesMask = huffNodesLen - 1 + +func (s *Scratch) buildCTable() error { + s.huffSort() + s.cTable = s.cTable[:s.symbolLen] + + var startNode = int16(s.symbolLen) + nonNullRank := s.symbolLen - 1 + + nodeNb := int16(startNode) + huffNode := s.nodes[1 : huffNodesLen+1] + + // This overlays the slice above, but allows "-1" index lookups. + // Different from reference implementation. + huffNode0 := s.nodes[0 : huffNodesLen+1] + + for huffNode[nonNullRank].count == 0 { + nonNullRank-- + } + + lowS := int16(nonNullRank) + nodeRoot := nodeNb + lowS - 1 + lowN := nodeNb + huffNode[nodeNb].count = huffNode[lowS].count + huffNode[lowS-1].count + huffNode[lowS].parent, huffNode[lowS-1].parent = uint16(nodeNb), uint16(nodeNb) + nodeNb++ + lowS -= 2 + for n := nodeNb; n <= nodeRoot; n++ { + huffNode[n].count = 1 << 30 + } + // fake entry, strong barrier + huffNode0[0].count = 1 << 31 + + // create parents + for nodeNb <= nodeRoot { + var n1, n2 int16 + if huffNode0[lowS+1].count < huffNode0[lowN+1].count { + n1 = lowS + lowS-- + } else { + n1 = lowN + lowN++ + } + if huffNode0[lowS+1].count < huffNode0[lowN+1].count { + n2 = lowS + lowS-- + } else { + n2 = lowN + lowN++ + } + + huffNode[nodeNb].count = huffNode0[n1+1].count + huffNode0[n2+1].count + huffNode0[n1+1].parent, huffNode0[n2+1].parent = uint16(nodeNb), uint16(nodeNb) + nodeNb++ + } + + // distribute weights (unlimited tree height) + huffNode[nodeRoot].nbBits = 0 + for n := nodeRoot - 1; n >= startNode; n-- { + huffNode[n].nbBits = huffNode[huffNode[n].parent].nbBits + 1 + } + for n := uint16(0); n <= nonNullRank; n++ { + huffNode[n].nbBits = huffNode[huffNode[n].parent].nbBits + 1 + } + s.actualTableLog = s.setMaxHeight(int(nonNullRank)) + maxNbBits := s.actualTableLog + + // fill result into tree (val, nbBits) + if maxNbBits > tableLogMax { + return fmt.Errorf("internal error: maxNbBits (%d) > tableLogMax (%d)", maxNbBits, tableLogMax) + } + var nbPerRank [tableLogMax + 1]uint16 + var valPerRank [tableLogMax + 1]uint16 + for _, v := range huffNode[:nonNullRank+1] { + nbPerRank[v.nbBits]++ + } + // determine stating value per rank + { + min := uint16(0) + for n := maxNbBits; n > 0; n-- { + // get starting value within each rank + valPerRank[n] = min + min += nbPerRank[n] + min >>= 1 + } + } + + // push nbBits per symbol, symbol order + // TODO: changed `s.symbolLen` -> `nonNullRank+1` (micro-opt) + for _, v := range huffNode[:nonNullRank+1] { + s.cTable[v.symbol].nBits = v.nbBits + } + + // assign value within rank, symbol order + for n, val := range s.cTable[:s.symbolLen] { + v := valPerRank[val.nBits] + s.cTable[n].val = v + valPerRank[val.nBits] = v + 1 + } + + return nil +} + +// huffSort will sort symbols, decreasing order. +func (s *Scratch) huffSort() { + type rankPos struct { + base uint32 + current uint32 + } + + // Clear nodes + nodes := s.nodes[:huffNodesLen+1] + s.nodes = nodes + nodes = nodes[1 : huffNodesLen+1] + + // Sort into buckets based on length of symbol count. + var rank [32]rankPos + for _, v := range s.count[:s.symbolLen] { + r := highBit32(v+1) & 31 + rank[r].base++ + } + for n := 30; n > 0; n-- { + rank[n-1].base += rank[n].base + } + for n := range rank[:] { + rank[n].current = rank[n].base + } + for n, c := range s.count[:s.symbolLen] { + r := (highBit32(c+1) + 1) & 31 + pos := rank[r].current + rank[r].current++ + prev := nodes[(pos-1)&huffNodesMask] + for pos > rank[r].base && c > prev.count { + nodes[pos&huffNodesMask] = prev + pos-- + prev = nodes[(pos-1)&huffNodesMask] + } + nodes[pos&huffNodesMask] = nodeElt{count: c, symbol: byte(n)} + } + return +} + +func (s *Scratch) setMaxHeight(lastNonNull int) uint8 { + maxNbBits := s.TableLog + huffNode := s.nodes[1 : huffNodesLen+1] + //huffNode = huffNode[: huffNodesLen] + + largestBits := huffNode[lastNonNull].nbBits + + // early exit : no elt > maxNbBits + if largestBits <= maxNbBits { + return largestBits + } + totalCost := int(0) + baseCost := int(1) << (largestBits - maxNbBits) + n := uint32(lastNonNull) + + for huffNode[n].nbBits > maxNbBits { + totalCost += baseCost - (1 << (largestBits - huffNode[n].nbBits)) + huffNode[n].nbBits = maxNbBits + n-- + } + // n stops at huffNode[n].nbBits <= maxNbBits + + for huffNode[n].nbBits == maxNbBits { + n-- + } + // n end at index of smallest symbol using < maxNbBits + + // renorm totalCost + totalCost >>= largestBits - maxNbBits /* note : totalCost is necessarily a multiple of baseCost */ + + /* repay normalized cost */ + { + const noSymbol = 0xF0F0F0F0 + var rankLast [tableLogMax + 2]uint32 + + for i := range rankLast[:] { + rankLast[i] = noSymbol + } + + // Get pos of last (smallest) symbol per rank + { + currentNbBits := uint8(maxNbBits) + for pos := int(n); pos >= 0; pos-- { + if huffNode[pos].nbBits >= currentNbBits { + continue + } + currentNbBits = huffNode[pos].nbBits /* < maxNbBits */ + rankLast[maxNbBits-currentNbBits] = uint32(pos) + } + } + + for totalCost > 0 { + nBitsToDecrease := uint8(highBit32(uint32(totalCost))) + 1 + + for ; nBitsToDecrease > 1; nBitsToDecrease-- { + highPos := rankLast[nBitsToDecrease] + lowPos := rankLast[nBitsToDecrease-1] + if highPos == noSymbol { + continue + } + if lowPos == noSymbol { + break + } + highTotal := huffNode[highPos].count + lowTotal := 2 * huffNode[lowPos].count + if highTotal <= lowTotal { + break + } + } + // only triggered when no more rank 1 symbol left => find closest one (note : there is necessarily at least one !) + // HUF_MAX_TABLELOG test just to please gcc 5+; but it should not be necessary + // FIXME: try to remove + for (nBitsToDecrease <= tableLogMax) && (rankLast[nBitsToDecrease] == noSymbol) { + nBitsToDecrease++ + } + totalCost -= 1 << (nBitsToDecrease - 1) + if rankLast[nBitsToDecrease-1] == noSymbol { + // this rank is no longer empty + rankLast[nBitsToDecrease-1] = rankLast[nBitsToDecrease] + } + huffNode[rankLast[nBitsToDecrease]].nbBits++ + if rankLast[nBitsToDecrease] == 0 { + /* special case, reached largest symbol */ + rankLast[nBitsToDecrease] = noSymbol + } else { + rankLast[nBitsToDecrease]-- + if huffNode[rankLast[nBitsToDecrease]].nbBits != maxNbBits-nBitsToDecrease { + rankLast[nBitsToDecrease] = noSymbol /* this rank is now empty */ + } + } + } + + for totalCost < 0 { /* Sometimes, cost correction overshoot */ + if rankLast[1] == noSymbol { /* special case : no rank 1 symbol (using maxNbBits-1); let's create one from largest rank 0 (using maxNbBits) */ + for huffNode[n].nbBits == maxNbBits { + n-- + } + huffNode[n+1].nbBits-- + rankLast[1] = n + 1 + totalCost++ + continue + } + huffNode[rankLast[1]+1].nbBits-- + rankLast[1]++ + totalCost++ + } + } + return maxNbBits +} + +type nodeElt struct { + count uint32 + parent uint16 + symbol byte + nbBits uint8 +} diff --git a/huff0/compress_test.go b/huff0/compress_test.go new file mode 100644 index 0000000000..7cc3bb1efc --- /dev/null +++ b/huff0/compress_test.go @@ -0,0 +1,437 @@ +package huff0 + +import ( + "io/ioutil" + "os" + "path/filepath" + "strings" + "testing" + + "github.com/klauspost/compress/flate" +) + +type inputFn func() ([]byte, error) + +var testfiles = []struct { + name string + fn inputFn + err1X error + err4X error +}{ + // Digits is the digits of the irrational number e. Its decimal representation + // does not repeat, but there are only 10 possible digits, so it should be + // reasonably compressible. + {name: "digits", fn: func() ([]byte, error) { return ioutil.ReadFile("../testdata/e.txt") }}, + // gettysburg.txt is a small plain text. + {name: "gettysburg", fn: func() ([]byte, error) { return ioutil.ReadFile("../testdata/gettysburg.txt") }}, + // Twain is Project Gutenberg's edition of Mark Twain's classic English novel. + {name: "twain", fn: func() ([]byte, error) { return ioutil.ReadFile("../testdata/Mark.Twain-Tom.Sawyer.txt") }}, + // Random bytes + {name: "random", fn: func() ([]byte, error) { return ioutil.ReadFile("../testdata/sharnd.out") }, err1X: ErrIncompressible, err4X: ErrIncompressible}, + // Low entropy + {name: "low-ent.10k", fn: func() ([]byte, error) { return []byte(strings.Repeat("1221", 10000)), nil }}, + // Super Low entropy + {name: "superlow-ent-10k", fn: func() ([]byte, error) { return []byte(strings.Repeat("1", 10000) + strings.Repeat("2", 500)), nil }}, + // Zero bytes + {name: "zeroes", fn: func() ([]byte, error) { return make([]byte, 10000), nil }, err1X: ErrUseRLE, err4X: ErrUseRLE}, + {name: "crash1", fn: func() ([]byte, error) { return ioutil.ReadFile("../testdata/crash1.bin") }, err1X: ErrIncompressible, err4X: ErrIncompressible}, + {name: "crash2", fn: func() ([]byte, error) { return ioutil.ReadFile("../testdata/crash2.bin") }, err4X: ErrIncompressible}, + {name: "crash3", fn: func() ([]byte, error) { return ioutil.ReadFile("../testdata/crash3.bin") }, err1X: ErrIncompressible, err4X: ErrIncompressible}, + {name: "endzerobits", fn: func() ([]byte, error) { return ioutil.ReadFile("../testdata/endzerobits.bin") }, err1X: nil, err4X: ErrIncompressible}, + {name: "endnonzero", fn: func() ([]byte, error) { return ioutil.ReadFile("../testdata/endnonzero.bin") }, err4X: ErrIncompressible}, + {name: "case1", fn: func() ([]byte, error) { return ioutil.ReadFile("../testdata/case1.bin") }, err1X: nil}, + {name: "case2", fn: func() ([]byte, error) { return ioutil.ReadFile("../testdata/case2.bin") }, err1X: nil}, + {name: "case3", fn: func() ([]byte, error) { return ioutil.ReadFile("../testdata/case3.bin") }, err1X: nil}, + {name: "pngdata.001", fn: func() ([]byte, error) { return ioutil.ReadFile("../testdata/pngdata.bin") }, err1X: nil}, + {name: "normcount2", fn: func() ([]byte, error) { return ioutil.ReadFile("../testdata/normcount2.bin") }, err1X: nil}, +} + +type fuzzInput struct { + name string + fn inputFn +} + +var testfilesExtended []fuzzInput + +func init() { + filepath.Walk("./fuzz/compress/corpus", func(path string, info os.FileInfo, err error) error { + if info.Size() == 0 || info.IsDir() { + return nil + } + testfilesExtended = append(testfilesExtended, fuzzInput{ + name: filepath.Base(path), + fn: func() ([]byte, error) { + return ioutil.ReadFile(path) + }, + }) + return nil + }) +} + +func TestCompress1X(t *testing.T) { + for _, test := range testfiles { + t.Run(test.name, func(t *testing.T) { + var s Scratch + buf0, err := test.fn() + if err != nil { + t.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + b, re, err := Compress1X(buf0, &s) + if err != test.err1X { + t.Errorf("want error %v (%T), got %v (%T)", test.err1X, test.err1X, err, err) + } + if err != nil { + t.Log(test.name, err.Error()) + return + } + if b == nil { + t.Error("got no output") + return + } + min := s.minSize(len(buf0)) + if len(s.OutData) < min { + t.Errorf("output data length (%d) below shannon limit (%d)", len(s.OutData), min) + } + if len(s.OutTable) == 0 { + t.Error("got no table definition") + } + if re { + t.Error("claimed to have re-used.") + } + if len(s.OutData) == 0 { + t.Error("got no data output") + } + t.Logf("%s: %d -> %d bytes (%.2f:1) re:%t (table: %d bytes)", test.name, len(buf0), len(b), float64(len(buf0))/float64(len(b)), re, len(s.OutTable)) + s.Out = nil + bRe, _, err := Compress1X(b, &s) + if err == nil { + t.Log("Could re-compress to", len(bRe)) + } + }) + } +} + +func TestCompress4X(t *testing.T) { + for _, test := range testfiles { + t.Run(test.name, func(t *testing.T) { + var s Scratch + buf0, err := test.fn() + if err != nil { + t.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + b, re, err := Compress4X(buf0, &s) + if err != test.err4X { + t.Errorf("want error %v (%T), got %v (%T)", test.err1X, test.err4X, err, err) + } + if err != nil { + t.Log(test.name, err.Error()) + return + } + if b == nil { + t.Error("got no output") + return + } + if len(s.OutTable) == 0 { + t.Error("got no table definition") + } + if re { + t.Error("claimed to have re-used.") + } + if len(s.OutData) == 0 { + t.Error("got no data output") + } + + t.Logf("%s: %d -> %d bytes (%.2f:1) %t (table: %d bytes)", test.name, len(buf0), len(b), float64(len(buf0))/float64(len(b)), re, len(s.OutTable)) + }) + } +} + +func TestCompress1XReuse(t *testing.T) { + for _, test := range testfiles { + t.Run(test.name, func(t *testing.T) { + var s Scratch + buf0, err := test.fn() + if err != nil { + t.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + b, re, err := Compress1X(buf0, &s) + if err != test.err1X { + t.Errorf("want error %v (%T), got %v (%T)", test.err1X, test.err1X, err, err) + } + if err != nil { + t.Log(test.name, err.Error()) + return + } + if b == nil { + t.Error("got no output") + return + } + firstData := len(s.OutData) + s.Reuse = ReusePolicyAllow + b, re, err = Compress1X(buf0, &s) + if err != nil { + t.Errorf("got secondary error %v (%T)", err, err) + return + } + if !re { + t.Error("Didn't re-use even if data was the same") + } + if len(s.OutTable) != 0 { + t.Error("got table definition, don't want any") + } + if len(s.OutData) == 0 { + t.Error("got no data output") + } + if len(b) != firstData { + t.Errorf("data length did not match first: %d, second:%d", firstData, len(b)) + } + t.Logf("%s: %d -> %d bytes (%.2f:1) %t", test.name, len(buf0), len(b), float64(len(buf0))/float64(len(b)), re) + }) + } +} + +func BenchmarkDeflate(b *testing.B) { + for _, tt := range testfiles { + test := tt + if test.err1X != nil { + continue + } + b.Run(test.name, func(b *testing.B) { + dec, err := flate.NewWriter(ioutil.Discard, flate.HuffmanOnly) + if err != nil { + b.Fatal(err) + } + if test.err1X != nil { + b.Skip("skipping") + } + buf0, err := test.fn() + if err != nil { + b.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + b.ResetTimer() + b.ReportAllocs() + b.SetBytes(int64(len(buf0))) + for i := 0; i < b.N; i++ { + dec.Reset(ioutil.Discard) + n, err := dec.Write(buf0) + if err != nil { + b.Fatal(err) + } + if n != len(buf0) { + b.Fatal("mismatch", n, len(buf0)) + } + dec.Close() + } + }) + } +} + +func BenchmarkCompress1XReuseNone(b *testing.B) { + for _, tt := range testfiles { + test := tt + if test.err1X != nil { + continue + } + b.Run(test.name, func(b *testing.B) { + var s Scratch + s.Reuse = ReusePolicyNone + buf0, err := test.fn() + if err != nil { + b.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + _, re, err := Compress1X(buf0, &s) + if err != test.err1X { + b.Fatal("unexpected error:", err) + } + b.ResetTimer() + b.ReportAllocs() + b.SetBytes(int64(len(buf0))) + for i := 0; i < b.N; i++ { + _, re, _ = Compress1X(buf0, &s) + if re { + b.Fatal("reused") + } + } + }) + } +} + +func BenchmarkCompress1XReuseAllow(b *testing.B) { + for _, tt := range testfiles { + test := tt + if test.err1X != nil { + continue + } + b.Run(test.name, func(b *testing.B) { + var s Scratch + s.Reuse = ReusePolicyAllow + buf0, err := test.fn() + if err != nil { + b.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + _, re, err := Compress1X(buf0, &s) + if err != test.err1X { + b.Fatal("unexpected error:", err) + } + b.ResetTimer() + b.ReportAllocs() + b.SetBytes(int64(len(buf0))) + for i := 0; i < b.N; i++ { + _, re, _ = Compress1X(buf0, &s) + if !re { + b.Fatal("not reused") + } + } + }) + } +} + +func BenchmarkCompress1XReusePrefer(b *testing.B) { + for _, tt := range testfiles { + test := tt + if test.err1X != nil { + continue + } + b.Run(test.name, func(b *testing.B) { + var s Scratch + s.Reuse = ReusePolicyPrefer + buf0, err := test.fn() + if err != nil { + b.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + _, re, err := Compress1X(buf0, &s) + if err != test.err1X { + b.Fatal("unexpected error:", err) + } + b.ResetTimer() + b.ReportAllocs() + b.SetBytes(int64(len(buf0))) + for i := 0; i < b.N; i++ { + _, re, _ = Compress1X(buf0, &s) + if !re { + b.Fatal("not reused") + } + } + }) + } +} + +func BenchmarkCompress4XReuseNone(b *testing.B) { + for _, tt := range testfiles { + test := tt + if test.err4X != nil { + continue + } + b.Run(test.name, func(b *testing.B) { + var s Scratch + s.Reuse = ReusePolicyNone + buf0, err := test.fn() + if err != nil { + b.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + _, re, err := Compress4X(buf0, &s) + if err != test.err1X { + b.Fatal("unexpected error:", err) + } + b.ResetTimer() + b.ReportAllocs() + b.SetBytes(int64(len(buf0))) + for i := 0; i < b.N; i++ { + _, re, _ = Compress4X(buf0, &s) + if re { + b.Fatal("reused") + } + } + }) + } +} + +func BenchmarkCompress4XReuseAllow(b *testing.B) { + for _, tt := range testfiles { + test := tt + if test.err4X != nil { + continue + } + b.Run(test.name, func(b *testing.B) { + var s Scratch + s.Reuse = ReusePolicyAllow + buf0, err := test.fn() + if err != nil { + b.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + _, re, err := Compress4X(buf0, &s) + if err != test.err1X { + b.Fatal("unexpected error:", err) + } + b.ResetTimer() + b.ReportAllocs() + b.SetBytes(int64(len(buf0))) + for i := 0; i < b.N; i++ { + _, re, _ = Compress4X(buf0, &s) + if !re { + b.Fatal("not reused") + } + } + }) + } +} + +func BenchmarkCompress4XReusePrefer(b *testing.B) { + for _, tt := range testfiles { + test := tt + if test.err4X != nil { + continue + } + b.Run(test.name, func(b *testing.B) { + var s Scratch + s.Reuse = ReusePolicyPrefer + buf0, err := test.fn() + if err != nil { + b.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + _, re, err := Compress4X(buf0, &s) + if err != test.err4X { + b.Fatal("unexpected error:", err) + } + b.ResetTimer() + b.ReportAllocs() + b.SetBytes(int64(len(buf0))) + for i := 0; i < b.N; i++ { + _, re, _ = Compress4X(buf0, &s) + if !re { + b.Fatal("not reused") + } + } + }) + } +} diff --git a/huff0/decompress.go b/huff0/decompress.go new file mode 100644 index 0000000000..436cc41312 --- /dev/null +++ b/huff0/decompress.go @@ -0,0 +1,392 @@ +package huff0 + +import ( + "errors" + "fmt" + "io" + + "github.com/klauspost/compress/fse" +) + +type dTable struct { + single []dEntrySingle + double []dEntryDouble +} + +// single-symbols decoding +type dEntrySingle struct { + byte uint8 + nBits uint8 +} + +// double-symbols decoding +type dEntryDouble struct { + seq uint16 + nBits uint8 + len uint8 +} + +// ReadTable will read a table from the input. +// The size of the input may be larger than the table definition. +// Any content remaining after the table definition will be returned. +// if no Scratch is provided a new one is allocated. +// The returned Scratch can be used for decoding input using this table. +func ReadTable(in []byte, s *Scratch) (s2 *Scratch, remain []byte, err error) { + s, err = s.prepare(in) + if err != nil { + return s, nil, err + } + if len(in) <= 1 { + return s, nil, errors.New("input too small for table") + } + iSize := in[0] + in = in[1:] + if iSize >= 128 { + // Uncompressed + oSize := iSize - 127 + iSize = (oSize + 1) / 2 + if int(iSize) > len(in) { + return s, nil, errors.New("input too small for table") + } + for n := uint8(0); n < oSize; n += 2 { + v := in[n/2] + s.huffWeight[n] = v >> 4 + s.huffWeight[n+1] = v & 15 + } + s.symbolLen = uint16(oSize) + in = in[iSize:] + } else { + if len(in) <= int(iSize) { + return s, nil, errors.New("input too small for table") + } + // FSE compressed weights + s.fse.DecompressLimit = 255 + hw := s.huffWeight[:] + s.fse.Out = hw + b, err := fse.Decompress(in[:iSize], s.fse) + s.fse.Out = nil + if err != nil { + return s, nil, err + } + if len(b) > 255 { + return s, nil, errors.New("corrupt input: output table too large") + } + s.symbolLen = uint16(len(b)) + in = in[iSize:] + } + + // collect weight stats + var rankStats [tableLogMax + 1]uint32 + weightTotal := uint32(0) + for _, v := range s.huffWeight[:s.symbolLen] { + if v > tableLogMax { + return s, nil, errors.New("corrupt input: weight too large") + } + rankStats[v]++ + weightTotal += (1 << (v & 15)) >> 1 + } + if weightTotal == 0 { + return s, nil, errors.New("corrupt input: weights zero") + } + + // get last non-null symbol weight (implied, total must be 2^n) + { + tableLog := highBit32(weightTotal) + 1 + if tableLog > tableLogMax { + return s, nil, errors.New("corrupt input: tableLog too big") + } + s.actualTableLog = uint8(tableLog) + // determine last weight + { + total := uint32(1) << tableLog + rest := total - weightTotal + verif := uint32(1) << highBit32(rest) + lastWeight := highBit32(rest) + 1 + if verif != rest { + // last value must be a clean power of 2 + return s, nil, errors.New("corrupt input: last value not power of two") + } + s.huffWeight[s.symbolLen] = uint8(lastWeight) + s.symbolLen++ + rankStats[lastWeight]++ + } + } + + if (rankStats[1] < 2) || (rankStats[1]&1 != 0) { + // by construction : at least 2 elts of rank 1, must be even + return s, nil, errors.New("corrupt input: min elt size, even check failed ") + } + + // TODO: Choose between single/double symbol decoding + + // Calculate starting value for each rank + { + var nextRankStart uint32 + for n := uint8(1); n < s.actualTableLog+1; n++ { + current := nextRankStart + nextRankStart += rankStats[n] << (n - 1) + rankStats[n] = current + } + } + + // fill DTable (always full size) + tSize := 1 << tableLogMax + if len(s.dt.single) != tSize { + s.dt.single = make([]dEntrySingle, tSize) + } + + for n, w := range s.huffWeight[:s.symbolLen] { + length := (uint32(1) << w) >> 1 + d := dEntrySingle{ + byte: uint8(n), + nBits: s.actualTableLog + 1 - w, + } + for u := rankStats[w]; u < rankStats[w]+length; u++ { + s.dt.single[u] = d + } + rankStats[w] += length + } + return s, in, nil +} + +// Decompress1X will decompress a 1X encoded stream. +// The supplied input must match the end of a block exactly. +// Before this is called, the table must be initialized with ReadTable. +func (s *Scratch) Decompress1X(in []byte) (out []byte, err error) { + if len(s.dt.single) == 0 { + return nil, errors.New("no table loaded") + } + var br bitReader + err = br.init(in) + if err != nil { + return nil, err + } + s.Out = s.Out[:0] + + decode := func() byte { + val := br.peekBitsFast(s.actualTableLog) /* note : actualTableLog >= 1 */ + v := s.dt.single[val] + br.bitsRead += v.nBits + return v.byte + } + hasDec := func(v dEntrySingle) byte { + br.bitsRead += v.nBits + return v.byte + } + + // Avoid bounds check by always having full sized table. + const tlSize = 1 << tableLogMax + const tlMask = tlSize - 1 + dt := s.dt.single[:tlSize] + + // Use temp table to avoid bound checks/append penalty. + var tmp = s.huffWeight[:256] + var off uint8 + + for br.off >= 8 { + br.fillFast() + tmp[off+0] = hasDec(dt[br.peekBitsFast(s.actualTableLog)&tlMask]) + tmp[off+1] = hasDec(dt[br.peekBitsFast(s.actualTableLog)&tlMask]) + br.fillFast() + tmp[off+2] = hasDec(dt[br.peekBitsFast(s.actualTableLog)&tlMask]) + tmp[off+3] = hasDec(dt[br.peekBitsFast(s.actualTableLog)&tlMask]) + off += 4 + if off == 0 { + s.Out = append(s.Out, tmp...) + } + } + + s.Out = append(s.Out, tmp[:off]...) + + for !br.finished() { + br.fill() + s.Out = append(s.Out, decode()) + } + return s.Out, br.close() +} + +// Decompress4X will decompress a 4X encoded stream. +// Before this is called, the table must be initialized with ReadTable. +// The supplied input must match the end of a block exactly. +// The destination size of the uncompressed data must be known and provided. +func (s *Scratch) Decompress4X(in []byte, dstSize int) (out []byte, err error) { + if len(s.dt.single) == 0 { + return nil, errors.New("no table loaded") + } + if len(in) < 6+(4*1) { + return nil, errors.New("input too small") + } + // TODO: We do not detect when we overrun a buffer, except if the last one does. + + var br [4]bitReader + start := 6 + for i := 0; i < 3; i++ { + length := int(in[i*2]) | (int(in[i*2+1]) << 8) + if start+length >= len(in) { + return nil, errors.New("truncated input (or invalid offset)") + } + err = br[i].init(in[start : start+length]) + if err != nil { + return nil, err + } + start += length + } + err = br[3].init(in[start:]) + if err != nil { + return nil, err + } + + // Prepare output + if cap(s.Out) < dstSize { + s.Out = make([]byte, 0, dstSize) + } + s.Out = s.Out[:dstSize] + // destination, offset to match first output + dstOut := s.Out + dstEvery := (dstSize + 3) / 4 + + decode := func(br *bitReader) byte { + val := br.peekBitsFast(s.actualTableLog) /* note : actualTableLog >= 1 */ + v := s.dt.single[val] + br.bitsRead += v.nBits + return v.byte + } + + // Use temp table to avoid bound checks/append penalty. + var tmp = s.huffWeight[:256] + var off uint8 + + // Decode 2 values from each decoder/loop. + const bufoff = 256 / 4 +bigloop: + for { + for i := range br { + if br[i].off < 4 { + break bigloop + } + br[i].fillFast() + } + tmp[off] = decode(&br[0]) + tmp[off+bufoff] = decode(&br[1]) + tmp[off+bufoff*2] = decode(&br[2]) + tmp[off+bufoff*3] = decode(&br[3]) + tmp[off+1] = decode(&br[0]) + tmp[off+1+bufoff] = decode(&br[1]) + tmp[off+1+bufoff*2] = decode(&br[2]) + tmp[off+1+bufoff*3] = decode(&br[3]) + off += 2 + if off == bufoff { + copy(dstOut, tmp[:bufoff]) + copy(dstOut[dstEvery:], tmp[bufoff:bufoff*2]) + copy(dstOut[dstEvery*2:], tmp[bufoff*2:bufoff*3]) + copy(dstOut[dstEvery*3:], tmp[bufoff*3:bufoff*4]) + off = 0 + dstOut = dstOut[bufoff:] + // There must at least be 3 buffers left. + if len(dstOut) < dstEvery*3+3 { + return nil, errors.New("corruption detected: stream overrun") + } + } + } + if off > 0 { + ioff := int(off) + if len(dstOut) < dstEvery*3-ioff { + return nil, errors.New("corruption detected: stream overrun") + } + copy(dstOut, tmp[:off]) + copy(dstOut[dstEvery:dstEvery+ioff], tmp[bufoff:bufoff*2]) + copy(dstOut[dstEvery*2:dstEvery*2+ioff], tmp[bufoff*2:bufoff*3]) + copy(dstOut[dstEvery*3:dstEvery*3+ioff], tmp[bufoff*3:bufoff*4]) + dstOut = dstOut[off:] + } + + for i := range br { + offset := dstEvery * i + br := &br[i] + for !br.finished() { + br.fill() + if offset >= len(dstOut) { + return nil, errors.New("corruption detected: stream overrun") + } + dstOut[offset] = decode(br) + offset++ + } + err = br.close() + if err != nil { + return nil, err + } + } + + return s.Out, nil +} + +// matches will compare a decoding table to a coding table. +// Errors are written to the writer. +// Nothing will be written if table is ok. +func (s *Scratch) matches(ct cTable, w io.Writer) { + if s == nil || len(s.dt.single) == 0 { + return + } + dt := s.dt.single[:1< 0 { + fmt.Fprintf(w, "%d errros in base, stopping\n", errs) + continue + } + // Ensure that all combinations are covered. + for i := uint16(0); i < (1 << ub); i++ { + vval := top | i + dec := dt[vval] + if dec.nBits != enc.nBits { + fmt.Fprintf(w, "symbol 0x%x bit size mismatch (enc: %d, dec:%d).\n", vval, enc.nBits, dec.nBits) + errs++ + } + if dec.byte != uint8(sym) { + fmt.Fprintf(w, "symbol 0x%x decoder output mismatch (enc: %d, dec:%d).\n", vval, sym, dec.byte) + errs++ + } + if errs > 20 { + fmt.Fprintf(w, "%d errros, stopping\n", errs) + break + } + } + if errs == 0 { + ok++ + broken-- + } + } + if broken > 0 { + fmt.Fprintf(w, "%d broken, %d ok\n", broken, ok) + } +} diff --git a/huff0/decompress_test.go b/huff0/decompress_test.go new file mode 100644 index 0000000000..579ab399cd --- /dev/null +++ b/huff0/decompress_test.go @@ -0,0 +1,482 @@ +package huff0 + +import ( + "bytes" + "testing" + + "github.com/google/go-cmp/cmp" +) + +func TestDecompress1X(t *testing.T) { + for _, test := range testfiles { + t.Run(test.name, func(t *testing.T) { + var s = &Scratch{} + buf0, err := test.fn() + if err != nil { + t.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + b, re, err := Compress1X(buf0, s) + if err != test.err1X { + t.Errorf("want error %v (%T), got %v (%T)", test.err1X, test.err1X, err, err) + } + if err != nil { + t.Log(test.name, err.Error()) + return + } + if b == nil { + t.Error("got no output") + return + } + if len(s.OutTable) == 0 { + t.Error("got no table definition") + } + if re { + t.Error("claimed to have re-used.") + } + if len(s.OutData) == 0 { + t.Error("got no data output") + } + + wantRemain := len(s.OutData) + t.Logf("%s: %d -> %d bytes (%.2f:1) %t (table: %d bytes)", test.name, len(buf0), len(b), float64(len(buf0))/float64(len(b)), re, len(s.OutTable)) + + s.Out = nil + var remain []byte + s, remain, err = ReadTable(b, s) + if err != nil { + t.Error(err) + return + } + var buf bytes.Buffer + if s.matches(s.prevTable, &buf); buf.Len() > 0 { + t.Error(buf.String()) + } + if len(remain) != wantRemain { + t.Fatalf("remain mismatch, want %d, got %d bytes", wantRemain, len(remain)) + } + t.Logf("remain: %d bytes, ok", len(remain)) + dc, err := s.Decompress1X(remain) + if err != nil { + t.Error(err) + return + } + if len(buf0) != len(dc) { + t.Errorf(test.name+"decompressed, want size: %d, got %d", len(buf0), len(dc)) + if len(buf0) > len(dc) { + buf0 = buf0[:len(dc)] + } else { + dc = dc[:len(buf0)] + } + if !cmp.Equal(buf0, dc) { + if len(dc) > 1024 { + t.Log(string(dc[:1024])) + t.Errorf(test.name+"decompressed, got delta: \n(in)\t%02x !=\n(out)\t%02x\n", buf0[:1024], dc[:1024]) + } else { + t.Log(string(dc)) + t.Errorf(test.name+"decompressed, got delta: (in) %v != (out) %v\n", buf0, dc) + } + } + return + } + if !cmp.Equal(buf0, dc) { + if len(buf0) > 1024 { + t.Log(string(dc[:1024])) + } else { + t.Log(string(dc)) + } + //t.Errorf(test.name+": decompressed, got delta: \n%s") + t.Errorf(test.name + ": decompressed, got delta") + } + if !t.Failed() { + t.Log("... roundtrip ok!") + } + }) + } +} + +func TestDecompress4X(t *testing.T) { + for _, test := range testfiles { + t.Run(test.name, func(t *testing.T) { + var s = &Scratch{} + buf0, err := test.fn() + if err != nil { + t.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + b, re, err := Compress4X(buf0, s) + if err != test.err4X { + t.Errorf("want error %v (%T), got %v (%T)", test.err1X, test.err1X, err, err) + } + if err != nil { + t.Log(test.name, err.Error()) + return + } + if b == nil { + t.Error("got no output") + return + } + if len(s.OutTable) == 0 { + t.Error("got no table definition") + } + if re { + t.Error("claimed to have re-used.") + } + if len(s.OutData) == 0 { + t.Error("got no data output") + } + + wantRemain := len(s.OutData) + t.Logf("%s: %d -> %d bytes (%.2f:1) %t (table: %d bytes)", test.name, len(buf0), len(b), float64(len(buf0))/float64(len(b)), re, len(s.OutTable)) + + s.Out = nil + var remain []byte + s, remain, err = ReadTable(b, s) + if err != nil { + t.Error(err) + return + } + var buf bytes.Buffer + if s.matches(s.prevTable, &buf); buf.Len() > 0 { + t.Error(buf.String()) + } + if len(remain) != wantRemain { + t.Fatalf("remain mismatch, want %d, got %d bytes", wantRemain, len(remain)) + } + t.Logf("remain: %d bytes, ok", len(remain)) + dc, err := s.Decompress4X(remain, len(buf0)) + if err != nil { + t.Error(err) + return + } + if len(buf0) != len(dc) { + t.Errorf(test.name+"decompressed, want size: %d, got %d", len(buf0), len(dc)) + if len(buf0) > len(dc) { + buf0 = buf0[:len(dc)] + } else { + dc = dc[:len(buf0)] + } + if !cmp.Equal(buf0, dc) { + if len(dc) > 1024 { + t.Log(string(dc[:1024])) + t.Errorf(test.name+"decompressed, got delta: \n(in)\t%02x !=\n(out)\t%02x\n", buf0[:1024], dc[:1024]) + } else { + t.Log(string(dc)) + t.Errorf(test.name+"decompressed, got delta: (in) %v != (out) %v\n", buf0, dc) + } + } + return + } + if !cmp.Equal(buf0, dc) { + if len(buf0) > 1024 { + t.Log(string(dc[:1024])) + } else { + t.Log(string(dc)) + } + //t.Errorf(test.name+": decompressed, got delta: \n%s") + t.Errorf(test.name + ": decompressed, got delta") + } + if !t.Failed() { + t.Log("... roundtrip ok!") + } + }) + } +} + +func TestDecompress1XFuzz(t *testing.T) { + for _, test := range testfilesExtended { + t.Run(test.name, func(t *testing.T) { + var s = &Scratch{} + buf0, err := test.fn() + if err != nil { + t.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + b, re, err := Compress1X(buf0, s) + if err != nil { + if err == ErrIncompressible || err == ErrUseRLE || err == ErrTooBig { + t.Log(test.name, err.Error()) + return + } + t.Error(test.name, err.Error()) + return + } + if b == nil { + t.Error("got no output") + return + } + if len(s.OutTable) == 0 { + t.Error("got no table definition") + } + if re { + t.Error("claimed to have re-used.") + } + if len(s.OutData) == 0 { + t.Error("got no data output") + } + + wantRemain := len(s.OutData) + t.Logf("%s: %d -> %d bytes (%.2f:1) %t (table: %d bytes)", test.name, len(buf0), len(b), float64(len(buf0))/float64(len(b)), re, len(s.OutTable)) + + s.Out = nil + var remain []byte + s, remain, err = ReadTable(b, s) + if err != nil { + t.Error(err) + return + } + var buf bytes.Buffer + if s.matches(s.prevTable, &buf); buf.Len() > 0 { + t.Error(buf.String()) + } + if len(remain) != wantRemain { + t.Fatalf("remain mismatch, want %d, got %d bytes", wantRemain, len(remain)) + } + t.Logf("remain: %d bytes, ok", len(remain)) + dc, err := s.Decompress1X(remain) + if err != nil { + t.Error(err) + return + } + if len(buf0) != len(dc) { + t.Errorf(test.name+"decompressed, want size: %d, got %d", len(buf0), len(dc)) + if len(buf0) > len(dc) { + buf0 = buf0[:len(dc)] + } else { + dc = dc[:len(buf0)] + } + if !cmp.Equal(buf0, dc) { + if len(dc) > 1024 { + t.Log(string(dc[:1024])) + t.Errorf(test.name+"decompressed, got delta: \n(in)\t%02x !=\n(out)\t%02x\n", buf0[:1024], dc[:1024]) + } else { + t.Log(string(dc)) + t.Errorf(test.name+"decompressed, got delta: (in) %v != (out) %v\n", buf0, dc) + } + } + return + } + if !cmp.Equal(buf0, dc) { + if len(buf0) > 1024 { + t.Log(string(dc[:1024])) + } else { + t.Log(string(dc)) + } + //t.Errorf(test.name+": decompressed, got delta: \n%s") + t.Errorf(test.name + ": decompressed, got delta") + } + if !t.Failed() { + t.Log("... roundtrip ok!") + } + }) + } +} + +func TestDecompress4XFuzz(t *testing.T) { + for _, test := range testfilesExtended { + t.Run(test.name, func(t *testing.T) { + var s = &Scratch{} + buf0, err := test.fn() + if err != nil { + t.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + b, re, err := Compress4X(buf0, s) + if err != nil { + if err == ErrIncompressible || err == ErrUseRLE || err == ErrTooBig { + t.Log(test.name, err.Error()) + return + } + t.Error(test.name, err.Error()) + return + } + if b == nil { + t.Error("got no output") + return + } + if len(s.OutTable) == 0 { + t.Error("got no table definition") + } + if re { + t.Error("claimed to have re-used.") + } + if len(s.OutData) == 0 { + t.Error("got no data output") + } + + wantRemain := len(s.OutData) + t.Logf("%s: %d -> %d bytes (%.2f:1) %t (table: %d bytes)", test.name, len(buf0), len(b), float64(len(buf0))/float64(len(b)), re, len(s.OutTable)) + + s.Out = nil + var remain []byte + s, remain, err = ReadTable(b, s) + if err != nil { + t.Error(err) + return + } + var buf bytes.Buffer + if s.matches(s.prevTable, &buf); buf.Len() > 0 { + t.Error(buf.String()) + } + if len(remain) != wantRemain { + t.Fatalf("remain mismatch, want %d, got %d bytes", wantRemain, len(remain)) + } + t.Logf("remain: %d bytes, ok", len(remain)) + dc, err := s.Decompress4X(remain, len(buf0)) + if err != nil { + t.Error(err) + return + } + if len(buf0) != len(dc) { + t.Errorf(test.name+"decompressed, want size: %d, got %d", len(buf0), len(dc)) + if len(buf0) > len(dc) { + buf0 = buf0[:len(dc)] + } else { + dc = dc[:len(buf0)] + } + if !cmp.Equal(buf0, dc) { + if len(dc) > 1024 { + t.Log(string(dc[:1024])) + t.Errorf(test.name+"decompressed, got delta: \n(in)\t%02x !=\n(out)\t%02x\n", buf0[:1024], dc[:1024]) + } else { + t.Log(string(dc)) + t.Errorf(test.name+"decompressed, got delta: (in) %v != (out) %v\n", buf0, dc) + } + } + return + } + if !cmp.Equal(buf0, dc) { + if len(buf0) > 1024 { + t.Log(string(dc[:1024])) + } else { + t.Log(string(dc)) + } + //t.Errorf(test.name+": decompressed, got delta: \n%s") + t.Errorf(test.name + ": decompressed, got delta") + } + if !t.Failed() { + t.Log("... roundtrip ok!") + } + }) + } +} + +func BenchmarkDecompress1XTable(b *testing.B) { + for _, tt := range testfiles { + test := tt + if test.err1X != nil { + continue + } + b.Run(test.name, func(b *testing.B) { + var s = &Scratch{} + s.Reuse = ReusePolicyNone + buf0, err := test.fn() + if err != nil { + b.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + compressed, _, err := Compress1X(buf0, s) + if err != test.err1X { + b.Fatal("unexpected error:", err) + } + s.Out = nil + s, remain, _ := ReadTable(compressed, s) + s.Decompress1X(remain) + b.ResetTimer() + b.ReportAllocs() + b.SetBytes(int64(len(buf0))) + for i := 0; i < b.N; i++ { + s, remain, err := ReadTable(compressed, s) + if err != nil { + b.Fatal(err) + } + _, err = s.Decompress1X(remain) + if err != nil { + b.Fatal(err) + } + } + }) + } +} + +func BenchmarkDecompress1XNoTable(b *testing.B) { + for _, tt := range testfiles { + test := tt + if test.err1X != nil { + continue + } + b.Run(test.name, func(b *testing.B) { + var s = &Scratch{} + s.Reuse = ReusePolicyNone + buf0, err := test.fn() + if err != nil { + b.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + compressed, _, err := Compress1X(buf0, s) + if err != test.err1X { + b.Fatal("unexpected error:", err) + } + s.Out = nil + s, remain, _ := ReadTable(compressed, s) + s.Decompress1X(remain) + b.ResetTimer() + b.ReportAllocs() + b.SetBytes(int64(len(buf0))) + for i := 0; i < b.N; i++ { + _, err = s.Decompress1X(remain) + if err != nil { + b.Fatal(err) + } + } + }) + } +} + +func BenchmarkDecompress4XNoTable(b *testing.B) { + for _, tt := range testfiles { + test := tt + if test.err4X != nil { + continue + } + b.Run(test.name, func(b *testing.B) { + var s = &Scratch{} + s.Reuse = ReusePolicyNone + buf0, err := test.fn() + if err != nil { + b.Fatal(err) + } + if len(buf0) > BlockSizeMax { + buf0 = buf0[:BlockSizeMax] + } + compressed, _, err := Compress4X(buf0, s) + if err != test.err1X { + b.Fatal("unexpected error:", err) + } + s.Out = nil + s, remain, _ := ReadTable(compressed, s) + s.Decompress4X(remain, len(buf0)) + b.ResetTimer() + b.ReportAllocs() + b.SetBytes(int64(len(buf0))) + for i := 0; i < b.N; i++ { + _, err = s.Decompress4X(remain, len(buf0)) + if err != nil { + b.Fatal(err) + } + } + }) + } +} diff --git a/huff0/fuzz/compress/corpus/01ace8efdfd46d82b0fef511b259933ced9d13ec-2 b/huff0/fuzz/compress/corpus/01ace8efdfd46d82b0fef511b259933ced9d13ec-2 new file mode 100644 index 0000000000..69291ec93e --- /dev/null +++ b/huff0/fuzz/compress/corpus/01ace8efdfd46d82b0fef511b259933ced9d13ec-2 @@ -0,0 +1 @@ +012939495969798997C2 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/049f4a878ab48c404bd0950e2366e3c0eaad4318-3 b/huff0/fuzz/compress/corpus/049f4a878ab48c404bd0950e2366e3c0eaad4318-3 new file mode 100644 index 0000000000000000000000000000000000000000..84e824506e3f511550eab10b677551829223aca1 GIT binary patch literal 41 xcmaFAe=j!!lbNBJfsy6zsT+6BsF%8EVW^bk?Lh4mbb+ literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/04bc4648208f40ba61ffb9a929f760c24101522c-1 b/huff0/fuzz/compress/corpus/04bc4648208f40ba61ffb9a929f760c24101522c-1 new file mode 100644 index 0000000000000000000000000000000000000000..3494057c2ee107c202560c0ba1de1cd11149e283 GIT binary patch literal 1647 zcmcIkYmd`b5G^19ZBYbBNClOuf)D-BI$Ym}AJS6l8#^Jd&HKqpgB{y>zc+~!A@R#s z>Nr_;fqt&!+(hGus*q%8uuqdmjh;)%NuJ?Dyy6ZY96V zBGh3tY38iah&nK4;s@-?p*&J`&ZAy6Oth3on51r~LxBc@;cRr{r%9pc6xxShW z+tp4>XQEzT8s z{3fU@;x4htV~_paqp;b{#0(ah@@0R9=Pe6>OKcaWnJ%8CK0veB--Xza%a~<_k_wYD z6Ppt(8JVUu-B1cwNxUVIjurJ4Lp`9XEdeEgX&Uh;#w}CmU`0n*nT8TMBGdlPByq2Z zNigHcBl0D6rEN)HXGESDg+b4=HR<=hOE!t|U4%rwcUx}|+4~B?&^YybaS0dvt2-IW z%b6Z1aRXcz{7i98g+v}pTY<^+w9tdJCoxM`xuzv~Y^c?Gd+6rSQqA4G11>C5ZfN&3 z&Z96zlQ@*f_S0@aA}b`q@|`pfXo{GD@LeS=g)4Wx7C>JqpglZ=;`s8PTgU1CtxC-Z)8STLlZY6RTQEMG%wKv z0>)xfP186^MYxV%R3#WuQCv#U>o^;(Q;tPkLvA!?itmNWsh;>?BGJm~og z_M5ge{)I0`u$%c~@qOjdL(dD7*L#uvb}^uOa&v5E^zvyr(8Sl<;Yk^K(liA=!jrC) zxV5+|9+&jwGu)SWNXhjA27pW_Ek#kFak%rpkYP!*USQfLm!{*mAvYYm*OS~6woA^G zbP6(Um;=wX>@C0ozytz3Q>@j%7sR8AK@7n-3Qu)hO@Z>Ont5w_bbb8qd9r;f_Puj! z{Dg!yEA^nJ)mmGaNYaMUvIWZt@GXM_(f2e1a}`x=>jMqykbylgFnW3s%w0HxLLC?i Qd&ztgHX|t8paf6<1rmDMxc~qF literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/0a7ce59229caf93ee64d5a828aecab7b5e434bbc b/huff0/fuzz/compress/corpus/0a7ce59229caf93ee64d5a828aecab7b5e434bbc new file mode 100644 index 0000000000..80da8c0d0b --- /dev/null +++ b/huff0/fuzz/compress/corpus/0a7ce59229caf93ee64d5a828aecab7b5e434bbc @@ -0,0 +1 @@ +CaDCaDcAecDc7De7777-accD77DeDEEAf_ZohDnpPnXJKmFtxmGZFOVgbxbCaAEEAAfecbD4dc44.x.xAfF-45405050xdbCaDAEEd0EcdDA7AfecbD4dc454057025Vz-04454224054e-0276666767011776664.efZohQpggnpGPTrniXRqJlKmFtmGZFOgVMgwxAAfeB643xbBCaBABE3BEcd3AAfecbD64Bdc664423703235e-07503-0xB66C9fad.-75946554523692857652911-i1V___hoNaqWTStRM9101862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc1862645149230957031259101862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc186264514923095703125\B___L7D3PS0hd1_Gxkg_Eg2P_Uo_3yd3gU_a_2__Ct28_l1w16r4_p_Q898Fv_22_6_28282357FECfCFCdBEEaE47fb5Bc{1.0xd-0534420.-8911368683772161602973534420.-89113686<-7301351713.7376291319585350 [ \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/0ceda9053c751bf974334c7c1676832feea92d69 b/huff0/fuzz/compress/corpus/0ceda9053c751bf974334c7c1676832feea92d69 new file mode 100644 index 0000000000000000000000000000000000000000..9e7e94e292902cbfa51598545670e74c4d5a411e GIT binary patch literal 1919 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 literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/26ccc59f9c4d89063210f2e8ddd0c26394c2a607-2 b/huff0/fuzz/compress/corpus/26ccc59f9c4d89063210f2e8ddd0c26394c2a607-2 new file mode 100644 index 0000000000..20debe4dd8 --- /dev/null +++ b/huff0/fuzz/compress/corpus/26ccc59f9c4d89063210f2e8ddd0c26394c2a607-2 @@ -0,0 +1 @@ +012756789aefxbcdefx \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/287d18afe5e0d54d4554a39aa2acff99d696136d b/huff0/fuzz/compress/corpus/287d18afe5e0d54d4554a39aa2acff99d696136d new file mode 100644 index 0000000000..299c56cf46 --- /dev/null +++ b/huff0/fuzz/compress/corpus/287d18afe5e0d54d4554a39aa2acff99d696136d @@ -0,0 +1 @@ +8869-0x0e.-9101862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc186264514923095703125-70989128513186264514923095703125 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/29e95908e0f3e9f3e189441de6ed797b7bee2449-2 b/huff0/fuzz/compress/corpus/29e95908e0f3e9f3e189441de6ed797b7bee2449-2 new file mode 100644 index 0000000000..16749a6bf9 --- /dev/null +++ b/huff0/fuzz/compress/corpus/29e95908e0f3e9f3e189441de6ed797b7bee2449-2 @@ -0,0 +1 @@ +0345678defghijklmnopqrstuvwxyz18872161F029739CFeBEbaE7fb-05340.-13686 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/2c93d4381a547aa7001acfffcf51dc323a0cdf2b-10 b/huff0/fuzz/compress/corpus/2c93d4381a547aa7001acfffcf51dc323a0cdf2b-10 new file mode 100644 index 0000000000000000000000000000000000000000..02700fd0782fcb3a2096d6167c3459c66a77910f GIT binary patch literal 67 icmZQ%U<5-JMixd0i;)2+0OW#1pppmyup*!YG6Vn%iU4T< literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/2e0d10ca05bdebe3fe84c481004adb11a1cc761c-2 b/huff0/fuzz/compress/corpus/2e0d10ca05bdebe3fe84c481004adb11a1cc761c-2 new file mode 100644 index 0000000000000000000000000000000000000000..001954fdd732318a5c451b2cd9a2664ad6829d98 GIT binary patch literal 1700 zcmcJP*^k>c5Qm!v$k7%?`cR+=8lXtuib$bI>H;=xBw610TAz}SEWlXS;ZwdXSqPB7 ze1Q(--K1$=`p^mjB@SnXL-PCa$7k2izJL6oHlM$rf1JN{oQE~%`j^`DkNKai?)2XL z)o(A~ym<0q({g&X)^yXYO~3j0^Q(*6)r%(^@VxGIr?soY;oFVlT(w%W!`1Weoa$`W z8r<~C^TFxJ+lyc4t!mkEX1&vH*It!7wL_z`Pm)2Q(4DsT%cQm5ubbWNw7seBmyLQ- zcnzI?dsA6dm$|_(j7hV<-Bps+V4WI4(Ae&FH$SDmH8O19_6;NOHJNvRH*DM2a*GBg zf@DOnOb8|j5tLdZ+cu0a0IQ77;kK_5Wc$QW!G0T~@*pG=8ACiG1Yx9Ngs{Rtn8>n< z1*BjZ!wXg!t4LG$7v?+1LT(JT@#Na)>7RPhqc{@PwwW%Ys9pg{eJkn#3eV z=uz|RuVbR0mx6Sinz}s-sb-JICiUbI68elXcyxvsz3gV`H_>l8|*7 z+q0K%9xpB|YZ5Q^_04HgXq@`hN&QfbqxcjphNVVSkDd;Pak&FWJ&O;AS>-4Q1tEK9 z-4uef^gOkK)G`7g6@|1ESXRlu5&TsUyH2Uvp4E@D_Hn@2k+BLC@!-+@o5`u!-yO4T zSn2f2?g|F)zn`48$7~4w)xfeY#HaINtNJzp(z4ki>YbXqZ?n(k_`-al*)g<-rZ zyPaARKv7q-cyKr@vq2k569rL(>H;?lN}@YlOH`m(u?VraYD_{?Hy&-ZwFIb^KF z8WCe|JxW5cz(#iHX5CXQX47QLmh}P4*sjcW-2GZi0~=1u9u*4gjyTR|7!-jv;${r! zOnnb{DRN*4&|4&Y+~W?Ilae#+W&)OSE+wo2ovJ1xqG^PvNcc>5G3VGTsvJblxM!X7 za>~a%Gv|B^xlMnZ3nT|tKtz>^0hA)!2~OWD@T$=0ZAHCC5#9_E-3_hU{a)9 z0$>LAp{T+;3H-PaB;Xb4yaaIJMVPQWvuK#Nijd4NYf+$>+erHN&-Y~c$;4}cquaCw9S$SMn@XDS!I%_Hy6$T0BlH&CdG0imvlDborAiPGY3Mso= zN{JTpxs>x{OFkQhA!@(^nQf$;2#uM*1d8Cttz&H*B~-uN3@S@stm)ru2ff>me+J+C xU$PPrrNuxm<~PgvYAK%Ymf{Fq2z*YK-$Vc5N`U;YE+`4u(nZR(zWpTj`Cmlp=#>Bf literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/2e85ccbaa127cbf77bb8f0b5c3afdcf53f63f2d8-2 b/huff0/fuzz/compress/corpus/2e85ccbaa127cbf77bb8f0b5c3afdcf53f63f2d8-2 new file mode 100644 index 0000000000..e7c19ad979 --- /dev/null +++ b/huff0/fuzz/compress/corpus/2e85ccbaa127cbf77bb8f0b5c3afdcf53f63f2d8-2 @@ -0,0 +1 @@ +"4656612873077392578125 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/30632e96a06600a75b47b4cbe0db74b959d09aa5 b/huff0/fuzz/compress/corpus/30632e96a06600a75b47b4cbe0db74b959d09aa5 new file mode 100644 index 0000000000000000000000000000000000000000..4529b55e3b6911d6b439b8b7fa375747e418303b GIT binary patch literal 553 zcmZvW?N8cJ6vkDYF`{PCnJJrY&X~%F(Vy=7t9dMzMe>39(;emE}| zQcOS!laY)WV+1RK2qd8hN!tmG@V^j>!x)sH424;UUlN<^Je6uPNky2aoTe_Zh8}*^ zbpCtu(0RbVL}$#NU@w8_j69Q4Z=A(bnL~*w;FSS*VG2HE6AFwaxlD2m00b&jASv9z z;bQmT%aN|>jv~Lq`Fd}NtLCkFZMV+%HwS~CPkk?6H>-v%y2i|EJLW9wbWO|38ouTE zJ@OdKmInX; literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/308f53f64ce26d56e4379931ff3611a7dd49325f-10 b/huff0/fuzz/compress/corpus/308f53f64ce26d56e4379931ff3611a7dd49325f-10 new file mode 100644 index 0000000000000000000000000000000000000000..ec62c5ce57b6554a2286d417ab670e96af45e6db GIT binary patch literal 64 hcmZQ%U<5-JMixd0i;)2+0OW#1Kui!sh=4?qApi<=0A>IH literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/31e020e2f79260ddcbf377c8e1256288b57d32b8-1 b/huff0/fuzz/compress/corpus/31e020e2f79260ddcbf377c8e1256288b57d32b8-1 new file mode 100644 index 0000000000..2e05aff4ae --- /dev/null +++ b/huff0/fuzz/compress/corpus/31e020e2f79260ddcbf377c8e1256288b57d32b8-1 @@ -0,0 +1 @@ +186264514923095703125 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/32a3cf4aef238d77278831c3744c1327dcc8f8c0-3 b/huff0/fuzz/compress/corpus/32a3cf4aef238d77278831c3744c1327dcc8f8c0-3 new file mode 100644 index 0000000000000000000000000000000000000000..aa7650d5edefc154986e199c8ba41b90830ed110 GIT binary patch literal 3 KcmZQ#U;qFB2>=5C literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/350b061ff78cfb97b28716ec96e27f616d439f97-1 b/huff0/fuzz/compress/corpus/350b061ff78cfb97b28716ec96e27f616d439f97-1 new file mode 100644 index 0000000000000000000000000000000000000000..a502d68ede6c23ab30803e35856d4d9712027b2c GIT binary patch literal 302 zcmait%WA?v7)E^p*Y11*W$wu==g&+6N@*>UmTZ196ODqGSON`wiav5RBHbu%zmIc{ z_hySUI(zZS{+1v8#u>E{jr`c}4Pg_JZ-99T2Q+%xv^B1hYmC{;vJ}JQf2W}#> zUU?;;QcMXcG~-%EgfltOlu*S+Leld(9(??A(qEKG(p4T3R)RI)Tov({P;jBLS6}cp tz9<8Yd+SB;5A!MM>`GfLKs#5iMeJ+{AiT6C8TQ$G*n{S+^Q4*o`~hyQP*VT^ literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/3542214eb977ea9bdabcc55601d7876b6227b501-2 b/huff0/fuzz/compress/corpus/3542214eb977ea9bdabcc55601d7876b6227b501-2 new file mode 100644 index 0000000000000000000000000000000000000000..800763fc7a221e9856104550b7e5a0c25bb5a85b GIT binary patch literal 506 zcmXv~+iu!G5Y45jqFzwdhpLLyzVxB0THM{)UGG||)Ox`{A%shS5MD;uYZDS6KuqJ% z>!)|Ev`3@S8I9(gqxtya!Q&5K4u0%E`TfV@@Y7NM*FFFk7hGGGm^kMT@{j^t-2sc-lF^{?kHd*=^YAKO9R|mrmhsy2d7c#hZNb zwy-_wt*6~py^+mFh%HpuRFhkkX|0t`;!tU$T+RW~O*(`HzS>g`0L@`jamqa)o+K1V zWFi{gTN|MbN>A|8Ez=(_y* z?p|>;zo7$p-b#<1;(KTJBwY!r28=9EMXW1WBSKOe#{pWOZ!kY-eYS2%M%)owq5QCj82~ZQd~FwEpz>% literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/3b1d88a86a30b301e5f509a756f43ef34fad55b0-2 b/huff0/fuzz/compress/corpus/3b1d88a86a30b301e5f509a756f43ef34fad55b0-2 new file mode 100644 index 0000000000000000000000000000000000000000..edf320c82b1a51edfcb49add1ab577678723c72d GIT binary patch literal 1055 zcmcIi+fLg+5N$<8sai#?)EAKY(!SQ#UcI(NrDkI%1QH;35|9>ei~|X|lf<$3b)?P) zTG2jMtz}ueo|!Xq=9~|E7dv~Uk1t-m{c>FTdjI{+=lb;h{j|~8EuAbD=ebY0hf(9G zKWLRJ2mQ)YZErnXua~vfpsm!_<>pu%jNAVHt~KaXjt+{AM*p_8zM1#V=HuJfR<&bw zM&n|wv|60hj{BqbVv)A1{lleYB^gU4I!cqg)^@WqzOLjar+2;4*8jLG3J8HgkAJA!G#RMX*0D5rjP@P0=~kv z5p`Wk1+pkY6eYPZ2z+5M1s8}uqHVwgMbM3ktO)`hr%;ao%tBOf>NvzfLQskv><~&E zN-3e3+ZMtu5||+BaDp8QH~8hiIE26$h&X1L%sGZUz<>)yobjxG%1Fd20>m5gKNJuBX}-tA}|gE$3HXOf>3Hu@Bv3G_>!!tVk}8Effz9A2(v zC?%CNn~gP-gmKfv<7PZ+C!WWo7sf2;b|uq1w5)F^5g=N9#u#UIFY%+wlu9Dyk)PqB_Ox$j7#k{9g{7J|t``6oe`Cm|}jS~OL^UW5FLzx@+kDKsA sv~QW73Pk;Dg?)Ow-O`tyLWS0AwvDhX4Qo literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/3f85a2df398429128e89cb13f51f612645550408-11 b/huff0/fuzz/compress/corpus/3f85a2df398429128e89cb13f51f612645550408-11 new file mode 100644 index 0000000000000000000000000000000000000000..7da12c9097a8e5a60d74c2fd3f55eab67eba32fd GIT binary patch literal 16 UcmWe+;$Z*+Mn)iJU}Rwi00IgCD*ylh literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/40b8de701a171fddefdc4459023121a1e605b16c b/huff0/fuzz/compress/corpus/40b8de701a171fddefdc4459023121a1e605b16c new file mode 100644 index 0000000000..ac5355de43 --- /dev/null +++ b/huff0/fuzz/compress/corpus/40b8de701a171fddefdc4459023121a1e605b16c @@ -0,0 +1 @@ +0aaef11119910xC8fFCFCEEaEfb.144-0440.-89116868771616097937988815-9101862645149230957031250xbCaBEBEDAfebDBdc32-xcA3.7475562603-0x0e0862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc186264514923095703125|7318e000175420 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/4106d42682c6b5f9f068148a3d94f5b52d9a2862-1 b/huff0/fuzz/compress/corpus/4106d42682c6b5f9f068148a3d94f5b52d9a2862-1 new file mode 100644 index 0000000000000000000000000000000000000000..bf6dcb36149a8efffb81bcf92ff09ce1c7aebe98 GIT binary patch literal 1089 zcmXw1i&EQ06vYszd4!U5NGUBeDU%_LEoFBl?XD;-NHP-f+r~D=opx(kk}-aR47Pyq zU;Tl8m1nwg(w))0cW008>zr@@c>nWT#?My0Zmd0je%g6?{paJ#%G%DsQf%>Y?Rk=$ z=RdrT%*S@4(eQmbjUIj8n_GO^ig3vK!OGI){8PJsczEz` z{zJOKk$=Y`S+8#uEi>nN_U>-f`vJl|RG7gOsKb0rAu zcs#h^c4pG?<+NcKOE<0JFxAZ+9lT3t8;LNv7!xDe;jz^>2Uc@nm2P?=#O(57%_c7= zn&NIWV>L>pR#5Z2=Mr)JoUb@}C%6B@Wi+28Q zL?xI;YyDhy6!O5zg_-+mUd{aW z%#KHf!I%gD7#qORG?zLQhd0fjPWp1x1>n?k?L=d2*Au6w4mfQ%3F5g8JK;1aAmBum z0HH1*4|C$J`;2 zWg-zu2<81jND+aB!GLG3h3Q2m_F6Y##P)SAlWK98Om#VPjOmO~R>{yN)pecfF4cKX zM3C=StEi{a9}!X^#0bk!R*|X@2_gmPNY{x(fi4k^ubpC9hcpE7K2#*}Z4nRxrHTN? zgmZN5c9f1JB@y!&>oTEmtuVxrWnE#L0#MMy7nnVEU5tSg1V&x<3_)n7U`iA;uYqNu z*1fIdd|}@o_PmWs&AKWKxbppGZ(x0$sgpAOP>;FhOp!`m*Ey|rxU#Wpih?3^IEU5I z85ic6!e-h;d17!`n%c=WL=f^1p)Y(Q43CF%wqu@}HpaFs4pS&VXZ0lV&6ba>(SJho BI8^`u literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/43726b29460c5060782f19cb0facac8443ad5d0b b/huff0/fuzz/compress/corpus/43726b29460c5060782f19cb0facac8443ad5d0b new file mode 100644 index 0000000000..cce03e6dfb --- /dev/null +++ b/huff0/fuzz/compress/corpus/43726b29460c5060782f19cb0facac8443ad5d0b @@ -0,0 +1,2 @@ +*? | " +%`Rw_Y} [QQ.=Rtw ~Pk.Q_k__k__sb_QRif_L_SrsX6i_____UmUzjWyiPsmrgXsPltOrO_____IVSLw_OSN_jnYu_umzY_Rj__v_.ddz,{hyPXrsvzzSWIkVwoY\x&xe#y%)\ICkMYJuZx_KCS_o55_nZ__7LH5_W-1-11252251225127[1162651257125xC2717e61862651257125- VZGohQpFpGtnpGPTniXq_JlK_F__t____GZ__F_Og__VMgb5955baBBBAfbB25929531253._--=x7___Tr438niX_R6q_JlK_mF__t2___4A957_AxmGZ_8_BF_Og_8_VM28cgw491186264514923957031250xbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc1862645149230957031259101862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc1862645149230957031253.0xDe15814980304091872B9EEaf48EDccB4b5Da0< \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/43a26357597ae65521480220432ff645450d01f1 b/huff0/fuzz/compress/corpus/43a26357597ae65521480220432ff645450d01f1 new file mode 100644 index 0000000000000000000000000000000000000000..2a895564edbda33ea529e17991573ebb6f983e7c GIT binary patch literal 1476 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 U`P?6Q-{F@6o;25A3STnuPyWOEjQ{`u literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/48bc76aeb21bc6070323247927d87e591e51eaa9-1 b/huff0/fuzz/compress/corpus/48bc76aeb21bc6070323247927d87e591e51eaa9-1 new file mode 100644 index 0000000000000000000000000000000000000000..699dc96c7e52cf74879af20e3dca24c7e1c6a484 GIT binary patch literal 984 zcmZ8fZFAB}7`0gIOKq>$`qo;xYVBCZCT@~VHqkmY0TK!gkU$~eI8Q?$5XwtJA<){f zf89m>;N1PN^PD+5&zy7ie801EbL-}0KEHjveLtd3`ciyzNxY&de7@_m^K$WWFU=85v=L2t1GG zDnb(3f7^Ad%}R|+i(X`0>v54IB@czdtbz;ashC0K7S1SkIN@{~wU^~oX(aUGEJ*`b zCmLuRoLx@g66Xk{92ta|h8+a}*(Shr2tWkXsRN$}O3D2YJWf%%jg+WQ4GH44<-@uN zldfC8ilqj$i9%zuc=pD#*Z)0ua${qMEx4D)u@!>cH**HvYiGz~sv9HB5kh!QqJTnP zL`YaaV7>zTa&s?P3GB&WW`&cmR2c_$l%EWW=IqgX2*c8N7~~s^AWwbM>3GEpuU~YW zBQtV>Xy8OHKQ6Ys6BqNLb#YR*%Vn!@vdJzbR@jyGwN>WN$9!B$FdHme82{GyM;=wj zpt+xN{Z^X}DOc5SyCth?2CF_MI^RkWvX1n4q4dS|29=seDc(Iwk!~TF)q4ml;ZP!LiDWPipq&|FXlk<>j=6|yz(A(OI}1>GPR7FTD!hMo l|8K{vZ(jVeeDpuh>_6+fn=7hAw@+6-`apYVE{gc#)labM8<_wA literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/4959a4a9db83af17f9368cf490b8a0356d872147-1 b/huff0/fuzz/compress/corpus/4959a4a9db83af17f9368cf490b8a0356d872147-1 new file mode 100644 index 0000000000000000000000000000000000000000..c139454f98318a17260f78385f20b7fe1480a40e GIT binary patch literal 298 zcmWlN`AfoJ0EV+eDMidENYW@NHJ$F>CrG#h&HGv&^M{YkZEBv&%?q=Cz4h|&@bISk z52>5e#q!>=#H-&-!0&0roz7tB7+&`yv4}ewa;(ZPueEERXv~JJ!tGd#SSRkz0f(Rp z$H^Ke>-yJEB71mrp_zd945%tl0c}HL81`=*=TwYSSxo?T02-&Uq({L-P_I(BQZYmv z5JXX+tn}N7JAAl&_T3gPHhZSSG$+mCG08BMPkq?UO}h-V*Z7z+9UVey2WP!;E)CNV zAKQO{!XYjp2u1N;bj$GSR?|>o-_F+H>F gLgFKHS^u6JB{MJ8+Okenp=nT%oa=2VzZf@16opyD5Eo*6Fvdg^C@?)XEhIK&6z2+HqvkD@~{6^e_Yer|*EkgY$+W>#R!6j!bDxhzU`ik%NzY zJ|U}Sdu14wC5pU&d+YgTQ+XXMC#{4*?ZjgS;|yFz(RF~k&E{3b?x?gQiuBYU;PlZP z*QHj$%_8m&`Saj94CvTCsq4v|iZ)Fa-R{`y>TKL^mL1Pbb4N*CD|G9*?$Tz=h{qMh zZpRs8h+kQPhBy|v3iB&T`7`5&AW1ENH7HG)c;Ao(G$18FwV7go(*U_DmdT(fCGh(% DrYB-T literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/4b4859f278820e969c13c975669322e2c9df9823-5 b/huff0/fuzz/compress/corpus/4b4859f278820e969c13c975669322e2c9df9823-5 new file mode 100644 index 0000000000000000000000000000000000000000..74187530ebf395fa3906abb54c6c85bed686b9c9 GIT binary patch literal 6 NcmZQ%U}0on0RR9a01E&B literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/4d1adbc376464b88c52a00ed562cdacbffa4af1a-1 b/huff0/fuzz/compress/corpus/4d1adbc376464b88c52a00ed562cdacbffa4af1a-1 new file mode 100644 index 0000000000000000000000000000000000000000..028ba8762d949f7b3a47c6e7cb79a2949125b98e GIT binary patch literal 166 zcmY++y9&ZE7=~fJ0SE7+@+E)rCtZZ3$)J-Ucv?!Ev@9xa=l%gHjneZuA8d9R85S*^=(i&u~JeOcqT_PKxxg84Eh#ylcE$5mL)4KR4ECi tHXtE2p1JjvY@17)5a-DoO~!L`gI;K9XW*rmNA14ut}>>_vo_&n~p=`%;X?zb^6ho|ByW zXlYv2nEn1FpOfatQ6fJ0d~a+{EX z%!@1=xHjEyuE=H`SM<7$t-3NM|B!@xLqtRi$t=H9Gk(pRjyD{wi2^MJ>w+x6hH!OU zv;kO%Lwf%fu6uR5!&CbP<7(r?X2 z`l{VDERRp~jydd?sR$|&LH~kzK`iABpmW%H84d!0ugiF!S}!d`fCw-IZrOu809S`? ze}F;T#XwpElq#kVLOy-NoF0yID@6&$S{rgu_5qp(_P1E(F&|{GMHNaUL>0yB+K#k8 K%*g~{KKus-%wnbh literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/51c91bfe65eaa40fe4144306d6332ad84e4bb8ed-1 b/huff0/fuzz/compress/corpus/51c91bfe65eaa40fe4144306d6332ad84e4bb8ed-1 new file mode 100644 index 0000000000..12301f1709 --- /dev/null +++ b/huff0/fuzz/compress/corpus/51c91bfe65eaa40fe4144306d6332ad84e4bb8ed-1 @@ -0,0 +1 @@ +GPTrniXRqJlK_mFt____AmGZ__BF_Og__VM_gw.4995325xC2aBABd731BEd3A7Aecb8dc866414295731253.0xDe9D94B9EEaf48EDccB4b5Da0-0x0e-9101862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc186264514923095703125 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/53bcc0e78275d3efe9e012e6d30412066bf354f9-2 b/huff0/fuzz/compress/corpus/53bcc0e78275d3efe9e012e6d30412066bf354f9-2 new file mode 100644 index 0000000000..e59672dfc2 --- /dev/null +++ b/huff0/fuzz/compress/corpus/53bcc0e78275d3efe9e012e6d30412066bf354f9-2 @@ -0,0 +1 @@ +4995325233449559994-09-519341245142309503125 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/545828581071b0d01c3fd9d15c7850c3f83ea15f-2 b/huff0/fuzz/compress/corpus/545828581071b0d01c3fd9d15c7850c3f83ea15f-2 new file mode 100644 index 0000000000000000000000000000000000000000..b8bf81e791b5de8fdb2be92a0d608098cdbe9661 GIT binary patch literal 25 gcmZQz6xh4}y_uPzg}JeTxw)~Wk*T?bp^@oo09*V9-v9sr literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/56860900c11ef30e85ce99b14e0e687745b269ae-9 b/huff0/fuzz/compress/corpus/56860900c11ef30e85ce99b14e0e687745b269ae-9 new file mode 100644 index 0000000000000000000000000000000000000000..794b9115f31f23c873c083fb25b0d69d2ab180e9 GIT binary patch literal 63 gcmZQ%U<5-JMixd0i;)2+0OW#1pppmykRUPy018b2W&i*H literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/581ed2fb7f25a6a5a8de40beae3dfd1666c511d0-2 b/huff0/fuzz/compress/corpus/581ed2fb7f25a6a5a8de40beae3dfd1666c511d0-2 new file mode 100644 index 0000000000..a67655c657 --- /dev/null +++ b/huff0/fuzz/compress/corpus/581ed2fb7f25a6a5a8de40beae3dfd1666c511d0-2 @@ -0,0 +1 @@ +92309570312 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/5b5d4262260375deb5146e3fa43f689923e856a7 b/huff0/fuzz/compress/corpus/5b5d4262260375deb5146e3fa43f689923e856a7 new file mode 100644 index 0000000000000000000000000000000000000000..3340915b60239ddf0160f471cc9ccad228df1068 GIT binary patch literal 5895 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 literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/5c4b6679ee378f2533b099450ed21e40d54f6cd0-3 b/huff0/fuzz/compress/corpus/5c4b6679ee378f2533b099450ed21e40d54f6cd0-3 new file mode 100644 index 0000000000..e2127e696c --- /dev/null +++ b/huff0/fuzz/compress/corpus/5c4b6679ee378f2533b099450ed21e40d54f6cd0-3 @@ -0,0 +1 @@ +"465663981283077397778125 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/5e13404b6713db5f2d4972747da143057beaaf64-2 b/huff0/fuzz/compress/corpus/5e13404b6713db5f2d4972747da143057beaaf64-2 new file mode 100644 index 0000000000..2189bb453e --- /dev/null +++ b/huff0/fuzz/compress/corpus/5e13404b6713db5f2d4972747da143057beaaf64-2 @@ -0,0 +1 @@ +012@456789@4567x \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/5e6c62abd0fe49668d26e9bfced0ef0dc699f6a5-3 b/huff0/fuzz/compress/corpus/5e6c62abd0fe49668d26e9bfced0ef0dc699f6a5-3 new file mode 100644 index 0000000000000000000000000000000000000000..90d6f0afc9e3672922a9eb27ba0699ba5691da89 GIT binary patch literal 32 ocmaFAe=oP0nFRxrxuKbXk>&2G8+XpAm%3vGyw5XLxmN#YQX+otZtPE+?1*G4@@N0+0F9S=x?aFd9n5JB3U%DR9+AS8n= zh)I6-SKpz(`WBr&N*|$5;7LWM-_Gng-|WuL?zh|j`IG)Xzg4~}rYNbeZ+`gn)n|9x zU;g;;>h$|crE&vr?!Wrlxc}@sBgNd%js6AOe-ZosH1@UBsk)}?qBw|SZ4hhfAW3lI z7QbCuuBw_TMkBSUMFVP^1~l+W4h>$vji`X4@^`w&Jvs=)yC>bS+HjpQJ6p1v=THr$ zXiN4ERX9?n(fEuCtyxJ>oZvhb+({_fF;yrOn!q;vv7tB1&6c_7*7R!lfW}j|RqHXk zw{~)%3+Bo}BW%rrpfh_pY+XKhv)R8`REHh$Bg?uB9(~bRUUV8q&UnULc1=T^6usf4 zH|v%_oRDHde6jqjPs*jvMTgixbX)9pJM2GiO)4#8Y}SHNrCV+{dskL|U)Qai2`((3v zx_9_-Hv8CffMLl+RoOy z+{wCkkfAn~_1(3f?&akc6%Fz>b9m>?rZrzI^y)A?OWi{p*^SkqrtjqmsYOA@^@n7}!Es1JBJkmA^k^cM1+U&n>&P84 hF#4tXh@!HY%=`B&_@GUhXNlGTi|6F`KML!A{s$%*A^iXV literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/60df0cda93981b671836008ff12625cd51171e9d b/huff0/fuzz/compress/corpus/60df0cda93981b671836008ff12625cd51171e9d new file mode 100644 index 0000000000000000000000000000000000000000..e8054414abfbf771de0d86c5f6e0a88b622b9284 GIT binary patch literal 1776 zcmZWq3v=5<5O&hKxR01nrX>UtC>f^pG*We^$DKkU(aX#Ki zG|R6QO}kp9hFPUZ^suVgnpK;Hz8{NOc7La8`PQO8Gi$ScrD(2Vg_<9Rx*qDGqUoV+ zFRH#~ds?7)VVIirt$qL^XP)P&`)XCBK9y?K!WzZ^1HfyTT5VpZKb{}x`iGnN6O8eP zrDa&iq_oJfak1P3MVN`5%ye2fLi{-MKyYP<+g(JG})v48P3r{yT|9Z`CSX05< zZuyf*W=x;Tw2%%)nO3^kZFH|Z+jI8y{lxXX-)`5@W5);67<)44o1TC2~o~a7fN6&U9Ro zGb%4i?$KVH5iu_1cSYq{+_DPhW2kvfc1|<|WW) zUlN?=tRgN*^DbtsnI(Bb%o+`S_~!Y2?(ii3J>`!mN@J<$ilR4`w~3Ztw1i86)T31D z!2d6Bvfy4?z z;M(~>2tY;xQpXl1E3`=c&GW~PBlX_LZ|V;v>ETb$AcSk%XZiB$NR_C80wf752Nz-q zN)QX*LWpHZuM$~sp}+%#Bwj)&VD7U)5UA?vJfe(cB+4Qd1SGo*j$lSS!U$nLOL@T% zf$}8EsTF;SCG5CAi!}05y({vSjOK$DAUu! zh-Dd4B6$EsPKBz9c+9ChQYe9#vP~~B>J-rp@5rK#e1jrSS;qr+C=Pi(4~Z8s&y)uu zfh1p7Me>Z{MEHK~=7g?GD~n$)HCymBhUpeSfn^l0EeT9(G;b6G<|S=hZ<}^*ul%`l z|KGT@JG{FJa3aV;m$tCT3@Opg%PgTiBCeYRmXJo9B(0q60!RxQ0tnYkLkS#DV@@Y+ zq#a3e9CliOOPICuFi7_Un7O3PXLsPN*lE{o0Zz(`dh|z7w(2ZRZFOgT!hbRDU(H4) ina@`oBuC*nS+x9-MCM*@_uqSG6s|}~lVX=pR{jAGI|;S` literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/61077e99c801f3eb732ba4fae2296091eaea9c01-2 b/huff0/fuzz/compress/corpus/61077e99c801f3eb732ba4fae2296091eaea9c01-2 new file mode 100644 index 0000000000000000000000000000000000000000..1f19609c6737889f11cd76d35f44284cc8526016 GIT binary patch literal 109 zcmZRm=iw*|4)@HCRCZ2sNpg0vaB)nsah1#nEC|VrDD?97_stIU_9*uZ4Xw%vuguIX zh)Q*jijQ}T_fLL2AOGF^9 literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/612edfc64ec2f157158ac6b0b7bdceeb1338d3b8-6 b/huff0/fuzz/compress/corpus/612edfc64ec2f157158ac6b0b7bdceeb1338d3b8-6 new file mode 100644 index 0000000000000000000000000000000000000000..2dcac5c0c6a542ab1f2de355de90c7d6591ff314 GIT binary patch literal 8 PcmWgSWnf`rU}OLQ0T}=) literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/617132f8209014d1839691bc6c7d77e70ed60095-7 b/huff0/fuzz/compress/corpus/617132f8209014d1839691bc6c7d77e70ed60095-7 new file mode 100644 index 0000000000000000000000000000000000000000..8c3ffce1e3f23d1b3325d079338ed7dfeb95aec2 GIT binary patch literal 16 PcmZQ%U<5-JMhFA|0HgpJ literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/6182f2935dfb8967ce0d259c3fbc143167528f3b-1 b/huff0/fuzz/compress/corpus/6182f2935dfb8967ce0d259c3fbc143167528f3b-1 new file mode 100644 index 0000000000..3c11c80360 --- /dev/null +++ b/huff0/fuzz/compress/corpus/6182f2935dfb8967ce0d259c3fbc143167528f3b-1 @@ -0,0 +1 @@ +e11188721616029739CFeBEEbaE7fb-053440.-136868 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/64bd2417583750313dd74d25c8b2f3eed25909a8 b/huff0/fuzz/compress/corpus/64bd2417583750313dd74d25c8b2f3eed25909a8 new file mode 100644 index 0000000000000000000000000000000000000000..7ff626cf771e983fd725f5da2e7995381aca2b9f GIT binary patch literal 670 zcmZva*=rL~6vk_9MVlImOQA>wk)qO0yvy8KAVue9CTaFINz*hw9B0oq*~~J5VE=XR z^hrU^%g6bC=kVRbB@z)OQ7Tc!Xo?`lF3$G1+0@s}F=D9>o!k{`1QA40c(MJy{gSP{ zd3umNJ^UR`=i^Re7De?i%zUCWJ-KT&389DzSWM_b>OwITbFOl#8iA(BTvLc5%a0~g z5ygZ(AVrY{MS{IoJFTCqkNYq8Qs1^OE|10m|CL|IyM`>I?UM#ZXqTOGNB zet$W@mDn?U*YS1BvU8@FsX5IY8>Y`oR}HThTb85iDvdoSXQ`B1u4hs;5WLAfSCg5n zQ$0z+B*c6PAz5XTo+ye$TTbg3;m5!X{}UOBjXXzeZgR`=RH`BT_wwYOp8Ma)<6&=z zXOwMJdyV@#VjHp~W-e?5lW0}MvCN^ND$s8N@LIgQnZXQ-x&kXIH%Z9>K%hYjveFMY zefY3@^7*}K1gGgcv@61N!MYrCr+AI?swY!ChF!R$w;uo%43DKC9M& zDs=Ppuw4z;0b@2d0*5okGAHS?=etpUVHmL>AP@Brpj{>5nlQrRWjmJDNzY VC;#Bt2vqeRU;{=+BLF~_e*oUUx>x`J literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/64dae3270e5806311fac4518cef7b473e2d3cd91-4 b/huff0/fuzz/compress/corpus/64dae3270e5806311fac4518cef7b473e2d3cd91-4 new file mode 100644 index 0000000000..83f6396699 --- /dev/null +++ b/huff0/fuzz/compress/corpus/64dae3270e5806311fac4518cef7b473e2d3cd91-4 @@ -0,0 +1 @@ +"69128307397778125 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/67519fd21225a9a0f3c5a86a76de43fd7234e1d4-1 b/huff0/fuzz/compress/corpus/67519fd21225a9a0f3c5a86a76de43fd7234e1d4-1 new file mode 100644 index 0000000000..6ad7e9e866 --- /dev/null +++ b/huff0/fuzz/compress/corpus/67519fd21225a9a0f3c5a86a76de43fd7234e1d4-1 @@ -0,0 +1 @@ +bDabBef136316160973937988281250xCc8Ed-0534420.-89113686837721616 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/6b8432daf9022411b253dd7c8f5611c22cdc3895-2 b/huff0/fuzz/compress/corpus/6b8432daf9022411b253dd7c8f5611c22cdc3895-2 new file mode 100644 index 0000000000..7e367c970c --- /dev/null +++ b/huff0/fuzz/compress/corpus/6b8432daf9022411b253dd7c8f5611c22cdc3895-2 @@ -0,0 +1 @@ +11686837721616029739 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/6d44323de19d56374597e2ac06e3beee133a42df b/huff0/fuzz/compress/corpus/6d44323de19d56374597e2ac06e3beee133a42df new file mode 100644 index 0000000000..248aab2799 --- /dev/null +++ b/huff0/fuzz/compress/corpus/6d44323de19d56374597e2ac06e3beee133a42df @@ -0,0 +1,2 @@ +)+~\ zE!#TtSpei2D*kOySbJq4O!*e8xy- z9BF?DnhS|->XzjxR7F^~T+gJ+e2pr5E>>kCXv{Q1|0S64L_27`eQiG4PgjrO@;|&1(I<95U5auBMCcj5I>B@&XZ=tHJK~RY~@<2 z_nWyv5Dc==t3rMVna(``j6_1WE=nL>gtqPb^19%%quwAZeo-BE?nm{f@`K$-#*_P} z(n_>@GYY%6^_!;vp!`6BDbYwMuGCXHRk5B*HGIcag(uS}Cd(aAlp4ScQdN}*8#0E< EFFnt9@Bjb+ literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/7f255b276b164c4309adbab19b872422d979c5e5 b/huff0/fuzz/compress/corpus/7f255b276b164c4309adbab19b872422d979c5e5 new file mode 100644 index 0000000000000000000000000000000000000000..9e9eadabf04743a93c2cfc4a0f9428dcde3b6e94 GIT binary patch literal 1219 zcmZ9L2~XTc7=}3lp&?ySnzl4*q7o`KB-qT1XM9wfCgW@Gi)GmZq^VC>_JF;;gp^;t zQpZcANVO~<(tPtCew_Z{<;BbU?|#4kr}My6R<5O=Ui5xz_x|quc)gnG93LFL*~wh~ zTF8_p=bdtfdE@L>rB>gkv~49KU*09IujUsQ05S+880rubNY;Gn z`zEEPZ*_yfbQ~!N0?G6fbT;!-^@dX`^+?|tGy*~z>WfzD=Bjdgn=0RyhvU-aS>bXf zImyI_q10w4gWi~GgwYmby3I6UXnNPmc4jwDXnGh&p%9kBp)(r2+Fg8F9Q^sy&V9zVOOMH$C+CB$N~Jx> zty6lMZ(COKmxpJ^$$YW-%m9!oGWCf705GURJ=5b-fB@e$9BNs<0(8scmJ}L#uBqy= zEduxwi3kEPjnH<9=ZXR#L{bzYD*}L6hKL|UAOc7x5F;gV4gut$WXxYRBmphnfv*Ct zZs?|NS&|wHnNk?UGP2HPWFi3~kxk+Gmg|P%rwu+&9*2R%M1D`*w{PFQ%uyU~RWspO`9YWY1!wHnrXjt-V z4o3A(?c{Z(So^+EuTD`lGE~P20-0x+k7iB7!J+YFo;NYC2jlpI9!9R?YKE>;tcTo~ zXNH<*S~xT<>S(4LM5g!d^QNJiz8l4RU47li_>hCSSBK*M+S}dL`&REvY39ZEVsX54 z_LZ#hWuN19I_$R_CxdJ^XODZSmK~F(>pCG~WQ$Sa^%jVX=A5EQJ$>3p!))Ocq7IxM zt!&({^A;A#e|ZbvN{BmH96W4%dCbq_rzUW3SgJY8?A5huoIbH+`-F?K$Ag2+*hXTW zR}VjL7FZ8W`mJWRk1}0gH_O>p1^ktRai0A(;cdPcdf1ck?&?~rH-e=&*Xp%U5COL= zEG^r*Z+L##Rg~tup`zG*n!qeux-To-|MA|F?W5zLmzNjY;^>wkxmyEMJc2@Xsd>;4kM!3K3U=rTNIcR-n=6uaTQG!!|mM`Eg{6qq&( U`z(LTB>vY+zQ!iktZcIX0DH1l?EnA( literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/7fca1fadd76fce238c82e9542eb05acd5bd38653-1 b/huff0/fuzz/compress/corpus/7fca1fadd76fce238c82e9542eb05acd5bd38653-1 new file mode 100644 index 0000000000..1e3d89cd77 --- /dev/null +++ b/huff0/fuzz/compress/corpus/7fca1fadd76fce238c82e9542eb05acd5bd38653-1 @@ -0,0 +1 @@ +0123456789abcdefx \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/8036c610dcec87d7bc42ba4ddddd660372392268-1 b/huff0/fuzz/compress/corpus/8036c610dcec87d7bc42ba4ddddd660372392268-1 new file mode 100644 index 0000000000000000000000000000000000000000..591abacb3fadf58bebbf4f4c7ea63828eaa56354 GIT binary patch literal 111 zcmb=(s0@gYh<8dYDmE*ts)~xYjQ5In2@W^&%nmEhk4%eqPLksBow+ccfobpl_p*u3 z1%~m4>8>vEf$@gsrUs_w#s+3a2I8ic#v$g$si8gwrp6a1-nC@wS#ih2kww&S7ZL678)PvPal=A0|MuweUEVvq zFZ+%XcUgjAV&rqO2VKL<<+8GtMy-j`n0&`Ceh^#T4rH|IsD;`e`!_);M3ZYjisGAQyLE+Tl@&UeCY=X0Dpu2jrkLB`Mh`jXMbh+QD4t8_C zP$*0R$b%Y{1C+<>=a^@VJ=3IVjKKH%UTwx}Jc8i31mfw^ec&-6u$C^6I!%+&lUHPe zE6lLv)4Xt`te)CoIh)Jt77H@1Age=nz}DFD6-4E_KB literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/88b9cf63d84dab51dd67f44df0e64977da9dd7f2-3 b/huff0/fuzz/compress/corpus/88b9cf63d84dab51dd67f44df0e64977da9dd7f2-3 new file mode 100644 index 0000000000000000000000000000000000000000..4c2acc0ba32a8e45e4496711b29cf06c4bbdda50 GIT binary patch literal 23 ecmXpoG%`0eGq1VJP*GDDn>vtPExf4&~*`&&aCu$t?GcFZPTtjt2sD@7$>LbQc#_ zS7QTL7h`jmlw=bVOJf5|a|2^t1FmW|1E5e+MQW;AhApipLHuV4i literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/89f86a63a2de2d2877451bceaa2bd4e38abc8e64-1 b/huff0/fuzz/compress/corpus/89f86a63a2de2d2877451bceaa2bd4e38abc8e64-1 new file mode 100644 index 0000000000000000000000000000000000000000..ced275959bdc64aa352aba8b42609b0df3ac14d2 GIT binary patch literal 1648 zcmcIkYmd`L6fGbDZBYbBl?p0V1s^K4br{dXj-{p46FVWV&HKqp7dy7|es2;dLgJUN z)N5zi1=O#VY$qDuIdjgr=lb1~=NHd^{QhHcGP(C*@@ev}*?drJUR3ha*`PG|r8t`X zJ$YMgjPB$nuV4N3&&$UjbEQnCTpBzp<;vS`?fvRuwb?Evs-smQVVaHN$hObE`}Fhc zv*LO8<#1ZKe7qXg6WeiNSSoG{hiUWTqTLwf>cwsSe7xOu$9K!C=B&9mA69GA>S4S& zY&+-m#ET!o@MWxmDUH6K`6_#-TVL?bowX_qfSz0N^5-NI+X?5sWgt@PW5TDufayC?h2Fspngc!+hUomY1MJ5Jm-|9wVN`OdWAGsztRz zkKXvzWyBIm#vBLxM?tHXjT9`imCL~#pSLOiE|D(GvORp32LP?oU>_hMhcVL(Bozi_ z29gsj85)K(oInakNxUJUjyoD_hJHXzTLD@Evkc-Iu&5xSpoC06Mw*R&*$0=3@kj=elaso}J-7O%uZxo}&ciVC`%+0_cmUS66qhUj6=)N>rdijk-pd ziv2_(Y3f*}ZF?+5RQt0I*GfrGOE>c3Ir?R8fd3Fug<* z2pG9dHBIB_72!JmP?g|{itbW^VaMihopRj7H55l9srX)~oa%}91}Z(ZP`&NpwP7-n z`=TsC3#^6a|{cJO7Iqmc;D&hGlSR*tQe!lx_9JnAxJ^CAKKgu~a-WWZZ{H?A zA)&*{eW+{o_70|!bYQ${!)gkA$KXix1I@xhMHf5zP=f|!;Q$O$eZ2(6KA1zX0St}3 PWS#-rF;py2{HOl{i%r?% literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/8c6d7def5f4465fc685347875a8e64e108b393df b/huff0/fuzz/compress/corpus/8c6d7def5f4465fc685347875a8e64e108b393df new file mode 100644 index 0000000000..2131a20d19 --- /dev/null +++ b/huff0/fuzz/compress/corpus/8c6d7def5f4465fc685347875a8e64e108b393df @@ -0,0 +1,2 @@ +)~\ <_______?;bE1bEC_AcyvP__FPI1bE1d_)+u::]~? +__j_5bu__yU__Dv19WNu_13g_Y1_RYWQvX______1z_L_G_k1Mm[_&_6d48_7V9_hSINhG8r__yj1_8_SWh_pGx_Nk_S1__u08_iZVaayDaTxoo%uj DcH11Q._'riRZU/ h_UO__63v2_G052"B_w34C_K1K.-Afc64ZmsVOt-'tqnf0x8f4E.-07__g.-03255663.-6&OyGOaL_h_Tt2Y1k717n1_7o6vN_KQ6MFXEO_2ANI4__z_l_a_PLn5Hm61_birB_/ \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/8d43559e0f27f4a754db78baa697b37013f8a01d-1 b/huff0/fuzz/compress/corpus/8d43559e0f27f4a754db78baa697b37013f8a01d-1 new file mode 100644 index 0000000000..f9a4ce2b8b --- /dev/null +++ b/huff0/fuzz/compress/corpus/8d43559e0f27f4a754db78baa697b37013f8a01d-1 @@ -0,0 +1 @@ +-0xbafD8aae3Df5b9Bef111368683772161602973937988281250xCc3EBf357FEdaCfCF4CdeBEEbaE47fb5Bc691.-0xd-0Df5b9Bef11136868377216160297393797288281250xCc3EBf357FEdaCfCF4CdeBEEbaE47fb5Bcٻ691.-0xd-0534420.-8911368683772161602973534420.-89113686<37721 [616029739379882812 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/8d69ef1f7f28824fd8267ae8b36833e3e0b94765 b/huff0/fuzz/compress/corpus/8d69ef1f7f28824fd8267ae8b36833e3e0b94765 new file mode 100644 index 0000000000..582dcabb7f --- /dev/null +++ b/huff0/fuzz/compress/corpus/8d69ef1f7f28824fd8267ae8b36833e3e0b94765 @@ -0,0 +1 @@ +-0757e0664060273074361272e0x2cF8a8E.-9101862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc186264514923095703125-0xcA3.07047556026031-0x0e-9101862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc1862645149230957031257318e00017542035 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/9239364aad81b3afb16be9487b5721a6fce7d375-2 b/huff0/fuzz/compress/corpus/9239364aad81b3afb16be9487b5721a6fce7d375-2 new file mode 100644 index 0000000000..edd3edd9fe --- /dev/null +++ b/huff0/fuzz/compress/corpus/9239364aad81b3afb16be9487b5721a6fce7d375-2 @@ -0,0 +1 @@ +18695703125 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/9508e90548b0440a4a61e5743b76c1e309b23b7f-3 b/huff0/fuzz/compress/corpus/9508e90548b0440a4a61e5743b76c1e309b23b7f-3 new file mode 100644 index 0000000000000000000000000000000000000000..12db4781e63a8c821478a5af5c840908f228181d GIT binary patch literal 3 KcmZQ%U;qFB1^@y8 literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/9567d94166370de252e759169b215fa8c2288746-11 b/huff0/fuzz/compress/corpus/9567d94166370de252e759169b215fa8c2288746-11 new file mode 100644 index 0000000000000000000000000000000000000000..8f6fc5d28279a1d0b89f8df8737b15d96c60aa8b GIT binary patch literal 64 zcmZQ%1OoSxfTHBo;$q*_-29?S&%CsJpdf>xnSr?_BLjl~BLk2G5-dOnq`)+Y4T1oZ ChzNiH literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/962ecf57ef5bbb4107aaff02072f03d3316077c9-1 b/huff0/fuzz/compress/corpus/962ecf57ef5bbb4107aaff02072f03d3316077c9-1 new file mode 100644 index 0000000000000000000000000000000000000000..a143e7029bbb7fe22425d697eef2a83110e218fb GIT binary patch literal 817 zcmbu7OK+P%6ovbc+Ab>~RF$$TFi3;$Ip4j9`Fa0q|L{Y2w10B87&_}>d41=7+nBc@ zDmOux>4#LSvjL^Hx-1BPB78H-RJgt$XWSRAVj`~9fQ^vUG8+^7K?%!b=PMjtnplLx z3LqRyGkQvJH|g#H6T}PvZ5weLT6$7QOoow35QjE^h?+WITqO-3CdO9nYZbtAWBgYJZ~g|LkL+N5 zepAern@!ZH&TVHk?aJ7bxlSb$J(JQh^RVt)ry-IcPGRX}kU5DT&=h;nPFWIzteF+@ XY{n%1{AK%UyWLj*R8;wxbnoSFO#J83 literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/96629c94c3faec6af9790f99bd72567d4534f9db b/huff0/fuzz/compress/corpus/96629c94c3faec6af9790f99bd72567d4534f9db new file mode 100644 index 0000000000000000000000000000000000000000..2d4cb2d0d15834e8a2011862021f563f0a3fcf97 GIT binary patch literal 980 zcmYL{`A^$O7>0q;lZB-Ry;!B)QVM9XnemK0c1w%mB+ltLPSPY!7kxO+ePKglLZI!x z-hoQH(nvG!Z}0QWd$sjw>&N!mgT2Rpzu5S$>#C|+5A~bdR88I5cIW9k^~od|9Pcu~Kpy~8jfnrk(R1Pb&kcec zwE1oa5kh2!u#7~?WGQb2)qbhFvg>)DmqbDA`US(Pn68))_~5UN(` z(xPx6($kE=+eX_B`9z59pH>ml2-i-it|*kl6D-r2)GqHw_E+{JC*g88ZfFw0lXgs8 z5=GY@W{L?xI6CBlt|PnIP`S1An-0f0U$T=Kme%*z;q122WdTU24t?;jrgiHv*_b932ydOhjg(NS|7WGK@bcZ8 z_2&y8#8Eag^ygSpxfSSbAcavxF=I@^3J*L=GD74~_*RI60!IT;rN) zdMtUpDuZxF!&$Tr7pls)0W(RXkg_rV2mp1S8vtZFR+A?s=O<`h+>Mlb#mVTx_9uRU zKZERKWSJMwcFcU;K53gB&+>*=+6-#FU{niS$!dBom3;easaPu6`LD0U#ibv6YpW|l zq@O*@I%9(7O$RrdrmT(|8k@3FE3}xy$f=Fbn!G?-<(q|o^e>ZYR8|a-6_%_(o90G! zNim{R^YR?LkBiTQr(*uhohNg)uMW*jvIoTk6VR+3bKA|9KtwcC*N_nk-{9)!(^tC@ r_~+mc-!Ghvd)fN!wAn497Acxkr-TR?$+!vbhsh z$8Zf-(Zv=fz$QRQ88=}NuK=c?5KSXm>bb6CNRdupn5ID_t>@fPY8jzJWHIm^p7C+Y zsQH(PohTZ^kG?(p$K|J<7e%@*wu@Vlx@dr2oJ5LL#?bXpDNb z(K=?#6T-4$Uogg0EsaP)RapMz!M!+T0){aF*nrjNSY8pY;2cT>I{gv@R0gPZ5Xa-D IVWY2q0EVT(9smFU literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/9b3ec560e1ed89789a09e834a18fb9f1d042f5dd-2 b/huff0/fuzz/compress/corpus/9b3ec560e1ed89789a09e834a18fb9f1d042f5dd-2 new file mode 100644 index 0000000000..e158e78351 --- /dev/null +++ b/huff0/fuzz/compress/corpus/9b3ec560e1ed89789a09e834a18fb9f1d042f5dd-2 @@ -0,0 +1 @@ +3095703125 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/9c61b17678d14d0b9ae09be017c6bbd6a3c3cabe-1 b/huff0/fuzz/compress/corpus/9c61b17678d14d0b9ae09be017c6bbd6a3c3cabe-1 new file mode 100644 index 0000000000..4e0f55f565 --- /dev/null +++ b/huff0/fuzz/compress/corpus/9c61b17678d14d0b9ae09be017c6bbd6a3c3cabe-1 @@ -0,0 +1 @@ +412221647115710273365424.-0xaC4BFE3cCb3c7BE9 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/9e3fc7fad4bf135219a974a8dac87e366f5b8e8c-2 b/huff0/fuzz/compress/corpus/9e3fc7fad4bf135219a974a8dac87e366f5b8e8c-2 new file mode 100644 index 0000000000..ce50acc398 --- /dev/null +++ b/huff0/fuzz/compress/corpus/9e3fc7fad4bf135219a974a8dac87e366f5b8e8c-2 @@ -0,0 +1 @@ +111%613475767778796029739CFeBEEbaE7fb-053440.- \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/a0bd71e19da9f0265508cdd2a50a458e5cd6bb19 b/huff0/fuzz/compress/corpus/a0bd71e19da9f0265508cdd2a50a458e5cd6bb19 new file mode 100644 index 0000000000000000000000000000000000000000..cbd92cf77ae888c4ba4658f596469522e4519cbb GIT binary patch literal 1232 zcmbtT{ZA@K6cv3KW0e@wyjogq8`HjLEX#cE%qF(F3oJYk`H=54nJnzCf`EdHtSI`I zlXMnqn*PwFNpJRt**o{lxpU5)lh0?<{a;qoGN#|g&wiipU2gAhKJ9*e@Nr{%|NLlk z_x}8col)T+@$m7(SHGS;Z=AfWovwr@nZ4$h`%lqPwlL)~CXIcbusHV<{QRaj%T5Nq zW$+{a^lANdH#E3!7S2OE!;zP6nKi>Wc(TlXv%wpgY=z%E#P{Oz==Dz1bF6~_n@6wg=u-lN0^>d~-kXJ2S z)$&(U*D{QN+E~_>?qqdwSzi2?dioBalqyt#lp^v?+_!bvhohy;6txmb+laO5zb#D( zKd)`Q&KHZtNp$hDChu*lNR^*l*iNusIXzra!gE4$$eE!G@<`W16BVkNJv1)Zohm`~ zQnh?}S-PlhM@o0)oT4a^$2Yxa(Z`45RSl|;Fee6lwe8qUvrV(@tRn=2kQ4+G4FQb- zh``^nO92@NFc48^`cg-gEFB0S^bJD;5UtIC&))2~?K#pA+7}pSQBk-PF%TF43<7tU z>$E#e(-;mcN(LS=3<8EEmV2Fck_QZ&P@-X=$-^-{0+cDT^UbGqfEYszQh+hRh#<@; zMhqi}DNq?v36p^#Rbm(d%z)ei8UTNUR^#GPiM{zw$-DFa#m#@%348~eN{mJhHevun zhA~Be5Uf&_04n7KMD~XiDKxZEr=wd*ZY6ZHgWK3lrIHp*!dRcNrg#*3gCijXnuxl{ zU{PsgsDN1^@)bGZH$|3!5Ao%IM4n^8)B1j~u@$Yp%>T!PNIE$r;;$)@fA67)9;x-K zS1281JT%3(;2|@BwfMTVhibnvNKmG}?LtxVY literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/a3c5cb453e89aef7359f952459685c26cea30d63-1 b/huff0/fuzz/compress/corpus/a3c5cb453e89aef7359f952459685c26cea30d63-1 new file mode 100644 index 0000000000000000000000000000000000000000..3b5ad6f37a7306f11e8e2fbe95dd4ff115821168 GIT binary patch literal 53 zcmXpse7}D$Hv^NIp_ze^uVE16vYJ4?cWr;ab1-R6?tS^Cy-AzB zv_A{frw75_`R1%Yndm|3Pv9PTdxd{w@0H&I;zz71}Dv()80nfue557EhWoXU?%|+jOjv%L^^@5J^gI% zjjfB)zL!#4n9|NvkL7r^HdxTuvf48$EXptyNGvaqMS)ZH9oKfGj7)VCM@Ft~+R5TN z)QRvv&@}xY(8(T?;doyo=ML){Md*&;tG|| zm6oSawHaeRaY*7A%pi=Yf!)@2w$Wy5?O8Q3_xtb`Fo0pTvCB7S5Q}LIcHwJ+Bj^nH;S{EQ zIcJ9$BoR9uSWhB215MA|FvcaVz@>aMEUvk}B35Lw#L8;9jY`d*ahKUQw%OOpHoWwqOw4G)!tGK|W;l&*SHE{#G?slkp=7TQEd zh%&~J!4X-EjMe5ErX?fc$K0{Qr1XB_;il}aTwJ`Z8*;zy2LI=r)ergWqx?nQW3@W4 eo=Qu_!lq%X7G(g+))`PRw_qSGI5nV}J^KrjpdF(C literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/a5ef3d034850ec9510bb931f21a1547518a76f14 b/huff0/fuzz/compress/corpus/a5ef3d034850ec9510bb931f21a1547518a76f14 new file mode 100644 index 0000000000..4be5c9eddb --- /dev/null +++ b/huff0/fuzz/compress/corpus/a5ef3d034850ec9510bb931f21a1547518a76f14 @@ -0,0 +1 @@ +/ddDDd333DDDD33dDd3EdD3Dd23323DDEEED.=2320C2DEd7380EdD7AeD8Bd812370312001.0x01x2.01077e231171320353722057202000015.0413204 xEaae2e0.QTRKOMafB55.QxKHfUmUgWPfmgesPptx7ACR8aoILeONf6um5ERf-.-8785.-xd-,|e@.EZt15ms1V7nOPYOLtiLl.-<6"xaaee66.hQppGPtnpGPTrniXRqlKFtGZFOVMgaf555.fVZGohQpFpGPtgnpGPTrniXRqJlKFtmGZFOg__VMgwbBfbB955bBaBBBAAfbB592953253.3sqy5j_4_hFIS_j-_-x7___Tr4438niX_R6q_Jl\_mF__t2___4A957_EAxmGZ_8_BF_Og_8_VM28gw1641492953125xbC2aBABE73801BEAAfebdc86644973125-9101862645149230957031250xdbBC2aBABEd73801BEcdD3A7AfecbD864Bdc1862645149230957031253.0xDe9D94B9EEaf48EDccB4b5Da0-0xebeA4298b51AD6-R8Z1-66E_a__Z_n_oIVS6Lw_e9uO_1S_Nf1d_jn56Yu_umEz5Y1_E39Rj_Jfd_v_-.-0058291178955.-0xd1b-9101_626519230957031250xdbBC2aBBEEd73801BEd37feb864Bdc1862645149230957031253Vz-0x7AC8Ddb%hyPXrs6vzzZJSWIkVwoY__aC_pCaEEDAfbD4dc64425+ \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/a70573a8edabc05a2431773757158ac90e63d43a-1 b/huff0/fuzz/compress/corpus/a70573a8edabc05a2431773757158ac90e63d43a-1 new file mode 100644 index 0000000000..0fd087f234 --- /dev/null +++ b/huff0/fuzz/compress/corpus/a70573a8edabc05a2431773757158ac90e63d43a-1 @@ -0,0 +1 @@ +bbf.VZGohQpFpGPtgnpGPTrniX_Rq_JlK_F__t____mGZ__F_Og__VMgwbBBfbB9959955bBaBB3B3AAfb4B24549239531253.x994B9af4EccB4b5a-9101_24514923095031250xdbBC2aBDABEEd301BEcdD3A7AfecbD4Bdc12645149230957031253Vz-0x7___Tr4438niX_R6q_JlK_mF__t2___4A957_EAxmGZ_8_BF_O0g_8_VM28cgw49101862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc186264514923095703125-9101862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc1862645149230957031253.0xDe9D94B9EEaf48EDccB4b5Da0-9101_62645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc1862645149230957031253Vz-0x7AC8Ddb \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/a8d099f456e0a9444c10bf1cdfe788da8f65f8d5-6 b/huff0/fuzz/compress/corpus/a8d099f456e0a9444c10bf1cdfe788da8f65f8d5-6 new file mode 100644 index 0000000000000000000000000000000000000000..e075e6eb7c405311c19497e3bfcf8cbac9831023 GIT binary patch literal 11 ScmZQz2xMVoWMN@s2m}BFi2$+y literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/a8d2bd34ee5b24064975a68298bfa566b63a133c-2 b/huff0/fuzz/compress/corpus/a8d2bd34ee5b24064975a68298bfa566b63a133c-2 new file mode 100644 index 0000000000..ffc901c688 --- /dev/null +++ b/huff0/fuzz/compress/corpus/a8d2bd34ee5b24064975a68298bfa566b63a133c-2 @@ -0,0 +1 @@ +bbf.VZGohQpFpGPtgnpGPTrniX_Rq_JlK_F__t____mGZ__F_Og__VMgwbBBfbB9959955bBaBB3B3AAfb4B24549239531253.x994B9af4EccB4b5a-9101_24514923095031250xdbBC2aBDABEEd301BEcdD3A7AfecbD4Bdc12645149230957031253Vz-0x7___Tr4438niX_R6q_Jl\_mF__t2___4A957_EAxmGZ_8_BF_O0g_8_VM28cgw49101862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc186264514923095703125-9101862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc1862645149230957031253.0xDe9D94B9EEaf48EDccB4b5Da0-9101_62645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc1862645149230957031253Vz-0x7AC8Ddb \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/ac04c28afed2d337f787d007a992e8ec7f937b36 b/huff0/fuzz/compress/corpus/ac04c28afed2d337f787d007a992e8ec7f937b36 new file mode 100644 index 0000000000..e8a1dfff9a --- /dev/null +++ b/huff0/fuzz/compress/corpus/ac04c28afed2d337f787d007a992e8ec7f937b36 @@ -0,0 +1 @@ +efZohQpggnpGPTrniXRqJlKmFt__mGZ__F_Og__VM_gw.xAAfeB643xbBCaBABE3BEcd3AAfecbD64Bdc866449239703230xDe9D94B9EEaf48EDccB4b5Da0-0xB66C9fad.-75946554523692857652911-i1V___hoNaqWTStRM9101862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc1862645149230957031259101862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc186264514923095703125-0xe \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/ad336c19a004476640934db99f827f2917a09bf8 b/huff0/fuzz/compress/corpus/ad336c19a004476640934db99f827f2917a09bf8 new file mode 100644 index 0000000000000000000000000000000000000000..a76a3e6d9da6828c0807ebbc4f8d6093dfd57900 GIT binary patch literal 17674 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 VrZQ7!QPCU*O1E1p=}yD>e*jL`S)u>{ literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/aef8193ef7e7916cebd428e02ae7c9081b9e56a1-6 b/huff0/fuzz/compress/corpus/aef8193ef7e7916cebd428e02ae7c9081b9e56a1-6 new file mode 100644 index 0000000000000000000000000000000000000000..dc8b0c1cabeb1e4d6422315927e2989ea165d64e GIT binary patch literal 12 TcmZRGXNYHD6lREzXJh~X3XB1g literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/af640328532d29ae2f935b87564cb595f6cbb54e b/huff0/fuzz/compress/corpus/af640328532d29ae2f935b87564cb595f6cbb54e new file mode 100644 index 0000000000000000000000000000000000000000..60da00c87efe9105a52223574ff21d0b1a1ea97c GIT binary patch literal 1035 zcmcJO%Ws=79LM)iw;iTPt9DtXo_3geAo2r)k$M4a=sRiJrU{$m;Q(pVCZXg-qfY(H zBh9AkUg~Wc;(~2{-;X~(d+ly(d*k3}=hNEV{kM(ncVSo@UhSNn-(GGo*Oly`aWt6C zhJ(43l)CQQH!m-4i+OZ%zI)a6{rBt7?$yv&J+`a{7vpX&Kl+kU=`)w=8V294^ECZ% zahwNvIL*V;;%&VI(==l zXk_qcG~R8W94yjV3u8n>5e8AzGc+fg`vplnY2qdaV$7Ng6KXx#_}D*_>=LOsJU66&MT z7ovUGU&u@nLS*cD*u!onJwy;DRpEN+#ToY`i4_cZpuxZ)K+gij zp!s{LpUJF>wlUS=y~p&PYMy0!Ne|K|epVd+tFGRk>r<9U0|S6T>8p;h%7|j>nYL*< zm5$1tA3x%Qzu+~y+5s`0ANmk60JaIX^nQSCn-~KNS_qrS!WbhA)rkR)1E~XSWgTFP zAZTGofnxw@TB;f9v_J%qrCcJr_E|f4O3y#Jef3K~bfSBc#A_F<`5?`6IpNu^}g ziCpdb9jVPEk*7PcqDoQ=buEOLw3OKtNyN6V6%vARrU*rfOGGi@$ne@Fq4xfTP#as1v^T(%FJ*`o;!83oo}1Q_`_TetOxLAofUaco+5}FO zfCXg@Qi=c&*wBRU@2_(ocRsIf)>=Q$K6y?Odn`6~yDw6V(=x_o%gRr!LkO@TwtBU3 zb#^zdKHT-&lVN#wbrFOK&+)i5=$~r|#uv)JU~(!e#Q^jKmWj(C6TG2_xi_DNm;&X2 zsPaAxfK7W)1Yiw#?B5b7EO)@315~Q56htxi!Fs(q%Fi4p8x^h~59j7P7Xe8hiQ

-M>6v?t3&+$A!*_CC<^E}BWA%A(+ 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%0A}P%G77&n?`$>&wFRguE+P z4=y%7Td7O1+TVDCVD+U~wM4~>%irAM-2N*p;=Yk0bG#%_;!~6t*S^2lc<~pQT$72z zp(Bazm_R5t&KA!JiX`9(=-A@sP(`!6vTPB_E8uR_4a8dU=%8mOV?#ZCXx0 zfP9n?;O>|puAq!Ucke^5wl=G1nqAQpMZ|w%MZ;|;L35kw3e|Wjx-PLIx<0XRBb`N6 z#q$P^n59@#M`zE^JjaQz*ROwC{9j}f{xE{6f+!b|v}_5tIT7!dsDZJ+c?@2}QAO~1 zc@#8)>qd!)8rY`%B_baa$3HE>d-twg`y8b_knTcgnzr>Qt@uMlwW8S*MyFB86d5IdRWez>XmTrLhiz3hDog zcJ*(v;=}E{|Awa?Ii8hWno7)@V1=ww7K{?^wDZVZ|F1^yIiC_m|N3-oxt#dd41ZAE z0b!2PKlP8RbGP@)Z)`Pc$mw2gId5WJD&>Uw$d0&c^l; z2sUX@pw-SV|Eu3=!X$nAX?5`t$L$^UCMSqEllN4oX}Cw2JVg6A%(ZbgNq;BM7!+m# zVglob#zaPkRt`WaHXL?kp#q@~kjJtqkFmafp$2-4$&gr;3Jkp>jBq1YZ z3R7rnqzD6~^)}Ec>UTEhL)dO15-`j>$|{ge76)Z!qt%%O0k`IassaQcoIS+-4|vSAOKm5^2MvZsB|)I zL8Jg7Y^Mbh?RMj*fEHOH1N~l|6ij7qKq-K0191y|AaOvMK4|i`0AdB=KYO70^7FUS ze9{K^^!+u*tN+^$-oR}?$-;sXzWY=ozKeA%agDw0=bnQH-)vpEapMBSE7?cWgIiaA zJv+n33@gCFjVjr3E1?&I^eOHka-&8ZZ=T`GrqoE<61pB^E(>AE($mrj_U~PN)D0Bb zy3e=r_0Ay;R5tO}ADffng|R#d;I{N)l*jx4X`Mh+98_i8j|%~<2104v`OQF%r*#x) z5F4cw*79?4u!`4JH5+RL0>|HN-u>{79dB*N>p@m?_1HA%ZnEB5uQiS&HyPaH3ip;k+DSvz(v_Z+C=Gun6vU~ z6G5i~M5&ps+;?<$hYjT-5o$$uc;`S4e^Bh9`oZTe z)Nm4^7`g|-efN%`o#(&a{F^PX@+)q99XvbVzjb9E(t$T>OkZ;lR%_A2A S;|PJK{}w_Z8gg7~(f&WeR;qje literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/bf297fbc5cd66aeca02688585a23f98a9f0081f5 b/huff0/fuzz/compress/corpus/bf297fbc5cd66aeca02688585a23f98a9f0081f5 new file mode 100644 index 0000000000000000000000000000000000000000..884b46ff49575bd420e32f4458cdae2a21e6ce80 GIT binary patch literal 878 zcmWlXX>a045QZlS$!5a@tuo0dv%5q~m=C!O?RNW;&}Q%fgM+yb16j3vLm(VBcnrzz z{Boo$O@HHJVcn#Fu}d0Zv6Xm5MBXc zJ+3`uKWER0HV=88r+@i#^l2~qa9vO3zOQE73+K`cG^x4%wAS>7Vnv;}Xy^r-jneFn z^SW)@KYkRu)mP1?X>C}a&%LVpx{MwYB*`*4JFXK(-ey_b5ZGWm)6*C4gWPTQB%e1; zmZfFcVr5gpM+CuN=Dx(qC@hlv`nZS{IJOYaB(8oxfbe;vjF!a}bJ=X4PB31$8e$+~ zs=mv-R)vk$m~gVe37n{jaGHb+Bw=V70?eBRBUmQML=wePkfx|mmu16@s=6S{f^1rj zZ5q2fAhdMZ$-f9v~?GtA=j(MiyDd+3oUA|?5XgB`V-WJug zjZzw9;}3DdS2!;4`|ApSt4f+bTXj3C?M*zf)50xfS+NyAvs|EQr(c{c-D%C!7L&rV zUvO3T>R6Q0_x~=S4PjwPdew2eQE8v5-DW8EbTPI@CWlbezrhPga4br4cnLWYFBx_y z-3@ZDy>ceCzjsd{6gmb4X7z{_H)6$$SW(?DGU#;`5|W4SXE%9AlAZL=+&}yKr?W=1 zQj8B1Wu>O{>u^?W_LHe{rL-yB$Knrz&+&+m^TR(r#Nz4q>x&aY&9E#~$2BRK^GF3O z*d>Wb1ONhvMF>KMLJUIzh`@i{01H6FU5rtHVR2`rvAYwiQ(SIg3S-K`__x(^^jIoi z2bId*U&HnDvn5AxNl^u>aMJxW8I6W7i-t-wC<=z67=RE>0vb|O(aHg`e*0QBhFw;3@L{yG4V20${8KK>6Rc>HAm literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/bf30493a58dc0fad8c77816086b2b32875cade69-1 b/huff0/fuzz/compress/corpus/bf30493a58dc0fad8c77816086b2b32875cade69-1 new file mode 100644 index 0000000000..167d3ecd10 --- /dev/null +++ b/huff0/fuzz/compress/corpus/bf30493a58dc0fad8c77816086b2b32875cade69-1 @@ -0,0 +1 @@ +"4656612873077392578125 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/c05bf2b6c368beec9fe1ab4172da851e547b1e49-9 b/huff0/fuzz/compress/corpus/c05bf2b6c368beec9fe1ab4172da851e547b1e49-9 new file mode 100644 index 0000000000..3af542b36b --- /dev/null +++ b/huff0/fuzz/compress/corpus/c05bf2b6c368beec9fe1ab4172da851e547b1e49-9 @@ -0,0 +1 @@ +&& \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/c07ac5a6c29ec72f00d7fe9cfcd9900ebf6fcc1a b/huff0/fuzz/compress/corpus/c07ac5a6c29ec72f00d7fe9cfcd9900ebf6fcc1a new file mode 100644 index 0000000000..0ef2686918 --- /dev/null +++ b/huff0/fuzz/compress/corpus/c07ac5a6c29ec72f00d7fe9cfcd9900ebf6fcc1a @@ -0,0 +1 @@ +-0x3a832B3c2cD67857EB1bDb0ebDE1EAf.0225V_5ZGo_h9QpFgDt5g5np6_G3P7___Tr4438niX_R6q_JlK_mF__t2___4A957_EAxmGZ_8_BF_O0g_8_VM2_cgw4.-9101862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc1862645149230957031253.0xDe9D94B9EEaf48EDccB4b5Da0-0x0e-9101862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc1862645149230957031257318e00017542035 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/c4d93c018e1686a8e4aaf0a4dad8d60fecd13675-4 b/huff0/fuzz/compress/corpus/c4d93c018e1686a8e4aaf0a4dad8d60fecd13675-4 new file mode 100644 index 0000000000000000000000000000000000000000..b8238c4ee637c2c2d7e60c04cb332c432549c1ec GIT binary patch literal 3 KcmZQ#U;+RD3jhTG literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/c64b47ad9a354cefde19e93efca0d656a20fe024-6 b/huff0/fuzz/compress/corpus/c64b47ad9a354cefde19e93efca0d656a20fe024-6 new file mode 100644 index 0000000000000000000000000000000000000000..e45f8fbaacdde219dd5560ab577ea920f289442e GIT binary patch literal 4 LcmZQ%U||FR01*HO literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/c6f1d808e0fd8c0a973e1b251e93ddae5930638e-1 b/huff0/fuzz/compress/corpus/c6f1d808e0fd8c0a973e1b251e93ddae5930638e-1 new file mode 100644 index 0000000000..6958298c19 --- /dev/null +++ b/huff0/fuzz/compress/corpus/c6f1d808e0fd8c0a973e1b251e93ddae5930638e-1 @@ -0,0 +1 @@ +-0757x2cF8a60273074361272e0x2cF8a8E.-9101862645149230957031250xdbBC2aBDA86264514BEEd73801BEcdD3A7AfecbD864Bdc186264514923095703125-0xcA3.07047556026031-0x0e-910186264514923095250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc1862645149230957031257318e00017542035 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/c7fd10d5817ad18dcb798e82328e8a7b087fbbea-1 b/huff0/fuzz/compress/corpus/c7fd10d5817ad18dcb798e82328e8a7b087fbbea-1 new file mode 100644 index 0000000000000000000000000000000000000000..eb0bf142a588792fda15c10f7e22540f36237def GIT binary patch literal 928 zcmaJ;Yfl~^38Bt@x*v$mVE1_i_X*Vm_0em}L6 z`?Pnp5g87f-E`2&2{90XVHhIZe%~*TM36A!@mh5l#1s2x!*;sX?*yh#YfWd~9mU z3sh^%s(LdJLdKx3L!~iMG2(_23JoPyO`-;1hU+K*fkf8>JH&?yIW6Hu;!VD5GXaLy^fL~Twn#}HG%IAKJ+tBPtd3<2hV zW1s`@YkXq+MvFarOv$s$7mY&bV*bB2Qd%*L&`N_+s=oHHrNwAuZ8iol1+`Sbe87{c)k6U zOXMy#|2P`G8_mu~OAq%5A(tVhj=HFj)Me~BC_*xe-fxsbK56=>&!9>SJw-;)apAAr zWVkfhB1i2~9ob>!qXE8<7bQtfvo)Ma>K$;bo z26?5D3KgW42biq=y1Bln+-arLGg*{Q3nio!X4FwBFP-iPlX>ZO z$2UdLZ7bjFv>gjAX)=j|nW*)44aO{ihFsmi)RF|V5?7Kl?$}^k$StYAAM-gN)1AE( zv^@W*y~Fsw1037ZGyYq-*$;btJ~442T65yplHmgA4#=leSP4eM*%|SO$nvNnY`U%z zdBy1Nd_ogClQzvvs|qn$;lu;ZIJ30>U={0tg{MPZ2->AOsOyM?f5r3nfzG->c7eU!UFW z>>VE6t-ZYewY?Ygw@){IuWfCvK*xp%5C9PY3i-Zr0MtL*QjwOBZ4qcO1lVK5#*g{U zNhkflDy$)zzN7p!4bq@F?l&qy?f9U)e|mZ`IO~twqe1GdG#ryTwryFAWlH9?BdMbN zL`o#*-O=$?8q}NPtA4w2T^SrqgKnwTYxQPQe*_UTlcWH3XN#3djyU&~Ua{l~VttHT zs~K&M@v_7#Gm9B#zVCZndWGFexe==K1OOTXN(~GE23e?8n#9tJC}R}s){3FWb$b*8 z?nlbQT8*UVSX_5&5sP7ce+n=$3_xN70E-fX@WRHW?!w5?Qw*)7xN8_mG7cw` zw>uB-SJywj^V}rztVna-eDYv)hZESMwR)#EJv5C^i#q1{ahlerIsY90^%8!o8YaX{ zUbnizNJo^kJnj8Eq|$V_7*n-3O9%-$cilvCLWpS;j2GXBrK#&?I!2U4ttUjQih47| z^fw;kF$lgg`&VnJ8n?Y?q0E6(Ook=%C9wEy9~W DUF6m> literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/cdd398e0ae2a152bcb53d296a63e1e8ccaabb75b-3 b/huff0/fuzz/compress/corpus/cdd398e0ae2a152bcb53d296a63e1e8ccaabb75b-3 new file mode 100644 index 0000000000000000000000000000000000000000..1986e61f01862813fd1c6d987f8fabe578e14b69 GIT binary patch literal 1098 zcmcIi*>2N76a}%BEx-dv@PH7gNFXJe#p6Y4h3wc#x8S5r-6XAavB!40#A%wQwHvm- z;hEpymH&yvbwZ`859JBly7J7OIrrRi&#m{@Zr*?MMS$Qutojel*u;G>=B5CyUL!*7{LzH5nyUx0Vj2eE3buP*U%#-Wqnc4oXq9+o;w@ z{c62A?B|D9daIRDwNr7unqc_ygHB^rEOpc6N1Ms!c)!=(I@_y@W5$zVH)^rtI`w*k z{^*4}thkUr9q7a1vbV98Lga41#}M}W?Grdj#%);Nhm|;lQz*%Z7AOTOIAtOWnICfM zgglOPq^DzL#-}OnjXCACRLq0ukdFTD51K_R7Ft5V4N62BRLBYqy;rKY#t!RV8OQyLAPCg$R~)j$t`+{@vu|&g9voC)_%SUKd~pAWme*4Kn~F ze+mj{HRuz$3DwR>9TE5R#{IhQ`D5_*s^$Ho)>#B#o~DWW2q1w9LKTXH0eX5t>c7t( zj-FSm!<{t1p~$;|_XwqfcDZEVy?kx2ukUWZTK{ifij@aA&gnO$sH2Dz?!j8*y*H6k zLP<)6azIi<1rbsRN$LzCDNt)3*(eC?o4f1t=CmJ-Ha4U*#z^C&35Qr<@4I-W~sVgSZX)Qo`6Mx28F^uBZI!M?wpWuH3z+Er^_o!9($ zHm}{yuDj>AjY+fWr?r0dblf=^KW1!TO!)lJFvfCMjQ|4^(bL^U-ClI-%r>k&xxi;4 HE|>lS=unU@ literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/d38389226ead13791d80008cc5fb1eef75aa0be4-6 b/huff0/fuzz/compress/corpus/d38389226ead13791d80008cc5fb1eef75aa0be4-6 new file mode 100644 index 0000000000000000000000000000000000000000..714dbfe3ff93d5d51f73b4e6d4106cd85bb462e7 GIT binary patch literal 11 PcmZQ%WZ`CDVF3{U0Q~?h literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/d977ecea3fcbb78028aabdb98bf098594d5eaba7-2 b/huff0/fuzz/compress/corpus/d977ecea3fcbb78028aabdb98bf098594d5eaba7-2 new file mode 100644 index 0000000000000000000000000000000000000000..b53ee1bbde90c7a431a2e4a4901d56735fdfc897 GIT binary patch literal 544 zcmXBP>rR~{3U7>10LCRYV36;w*Nm2QR zr8J&V>^>l+rh$u_(`QMN#Fe@6wdDF<(%fyBnCGvDIk2^M%YT@FgFNt{wrGQXQ8hW{ z4XRk=ZaKhmA|pvEujxXCuXJPKQX&l7H?zDj_OmZX>qOKEu@9$!00CqWLM$Ty0SO4Q zJOEt!iqM&?-DK)wAz!Kq}ep1lgpyv8@SkcEMk0Q;3ph9Y*h4I2eQr1xm~gf z=NUSYqEqQnDl7Z$fxDAPQWG>?h@3b5)M|>4#<3psz7Yjpebw>3YA>jctiY-#%JLzU zeTX#HQxQr7E#9TB$o$7dW<7fXRMt6C(S0FkS8606I`N|yLdZc~uR)zaau%1`HbJC9 z2-E8=9z8_?sUFrLQQ9zOLgtb@iG*kYD7~VH3$Ps?KW@&9eA4Pc4|icWv~P6qom=c2 hx&M(N4#H0-{XLyY$+$QClG^b}p%@zFTIqg%=^vN`mU{pI literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/da39a3ee5e6b4b0d3255bfef95601890afd80709 b/huff0/fuzz/compress/corpus/da39a3ee5e6b4b0d3255bfef95601890afd80709 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/huff0/fuzz/compress/corpus/dba30063a9e305d125c83f435e35e0aaa33c560c-1 b/huff0/fuzz/compress/corpus/dba30063a9e305d125c83f435e35e0aaa33c560c-1 new file mode 100644 index 0000000000000000000000000000000000000000..866609ecda2ca5b9df92390623b6011419b1c2e6 GIT binary patch literal 1086 zcmXw24O6356g6?RG3%ywJ8P|N(r%rOn@K<(4|rg06^KFe9gT?Tw6FO9)O;JF37Ykn zXQmh3g_--_We(?^d+&MQ{{8zezi!Rv>(8GL=W&ejyW4-BqS5tuvb35inbykF`m<@e zGs`W{%9d5MtfiH3>D}4w>|piu&v-H%{`5W+P9-9d0J&I14nFTJt<1MVdw_{0qpLIj z{IoOJ-%oxFe=3w(0RAr(DmeqgI2+}SvTM4IlSo9Kmj7D3{Jp$%xHDRskMh2;RqmXf z$76%Dd~6nVeLtOc{Y(Ef6!i33LD%)wJD};6-Gk&u7U(m<0c?s5l}3lAF&G-|(5T(@ zZ>#`iWM7YKvRO6}DIObUt5!2_`nB_7wwRt(tb5a)^Lp)kGr|XomlEiV`RBv#qYD+a73}8st`q%;im0& z#*Q%@CY&N7j#Cr_r$PoPL&%jnIl(6)LY)dh_eW2Q#liMP8zD(TZPacDtBoYqvl}_j zLxzN;c4K(4xA~UR<>wzR)}*!HK76hB%ewo0u#tG4hXMsyD7ASBUg1ZcS9nFRc>xg# zON4mL8`kqYO#`W-A}d5xL|G7sVl%QJB7tBc6C%F|lzD=x!y&B)>?~#bH+R8~?rN_F z%H?}7MEDS>ds~!US<^IGvtaO(R(5G)z>O zfGi0bk^>BgPhi7K6}uScc95>05bvRuRxPX2FVLz5iGHXm*wl9H*hWQ=Yw!EaZjpwZyKk@e_Rd>c`j@YS z(+3}r5Kc0a%x^r$&y&|*-TLY6<43Q8A0K+N@9UE%AJ$E8;?1V@$z(hpHz)PUv+;P< zY|K{sS>@B-8+*fPZPE3H@6S(PMCW|8n$3sx+2K&Rf4=*B^;xyl?|)H!d)e+(L9Jyb zfU(?fo%yEYUDQf;vwa*4=GTpj@9an)oby975%Dk zRc!56O7uSGSy!qBfL+$|vItOs<^*6+pBw|rN&-ttrfwEkzGYdasVp~@>V)Z9Dy1d; z#0^6$V1EA1&w89(w&HmbI9D#fWyqk0)-k}fif%aI4IN0!;0ck!vJFs~IX%U+P$-8o z=nQv_sW)?^>rlsk_v^h6A0K}@pWi+I^R8;hFo;1&q~tHJZfW;EQc7Y%=uQEpZybzD z6utx%ixz6Qm%4FU?>IPsXB{L+x9EFVV45~q$%rK%UxeU z9k!Xv>)h$N54fSq6YDh=Cv2Rq%~1s~49Ce)zz8OBxuP@6r{x|PO}=Ap83#R>%_rc& zw0nfL2gOz0pN?MM5gH*lTdEO?sU%2pgb7L`#jUT#!gV9A3xq8bova;vnQwa$TkIotqpe z%i!n=3j;@F2?S+S{vDdVp@>nUQz5g%{^P!3(64Xb885eZz(>tpP0RnF-EQpGjINR= zL(nLp64N-3QimJ4Zy(&0(-Z1kfb3xiB^`QRi2<$v)O%Qvd5hclATh%5 zA3c61$5!k(|E9e9CX`0wXLrk?4`7uh(1Tiym3p6G+k}-??e9}xd{&vgA%ctkR06gYeVgLXD literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/ddc3609a7e8f2da5428973c80847b1ae0bc74af7-4 b/huff0/fuzz/compress/corpus/ddc3609a7e8f2da5428973c80847b1ae0bc74af7-4 new file mode 100644 index 0000000000..ded8a14ea7 --- /dev/null +++ b/huff0/fuzz/compress/corpus/ddc3609a7e8f2da5428973c80847b1ae0bc74af7-4 @@ -0,0 +1 @@ +"07397778125 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/dde60ed75565b253fc44c8543a788dbef7b9a53f-2 b/huff0/fuzz/compress/corpus/dde60ed75565b253fc44c8543a788dbef7b9a53f-2 new file mode 100644 index 0000000000000000000000000000000000000000..69c00733c46b7c1ea47c5b2b23a984dfca839674 GIT binary patch literal 47 zcmXpse7}D$x3QUpnFRxrxsjonp_ze^4w3VPRweQpRay3IJ|% B52OG9 literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/e1170c6fe09522cb50935557856ba9d85c2b37de-3 b/huff0/fuzz/compress/corpus/e1170c6fe09522cb50935557856ba9d85c2b37de-3 new file mode 100644 index 0000000000..f40fb195e8 --- /dev/null +++ b/huff0/fuzz/compress/corpus/e1170c6fe09522cb50935557856ba9d85c2b37de-3 @@ -0,0 +1 @@ +110�-38828388312238828 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/e1323173b156c91190a3b84ca33c955550404ade-2 b/huff0/fuzz/compress/corpus/e1323173b156c91190a3b84ca33c955550404ade-2 new file mode 100644 index 0000000000000000000000000000000000000000..1fd95e0e56573d42985dee7e6b49699ac2f8daf9 GIT binary patch literal 36 scmXps+`pHbfyvCka`)7YJ7?5iG&iz%ujJ=sq(3Kell--@75Z_ z++dW-T?{(6C%sg*eAa9>p;>O{M@ihCKIW>J%p|9&WCY*>-^FFqac+eOZHHS{)3GU| z4EHG$yi9TZ6OqujZO5{G+kZs*YbY@V`HdDrP!clRC!B;1HVYinBwS!+RA+EvUq`hD zX09FEzZNFPY9oShLvTh6gLA^T#yIDUQ=t;mq$V+_$q>XSr;?Zop&IgH5jBE~#*Fw6 zlM*U*rfV3R?6EDPBG#-C@ph4bB-D2Q;vjVmX}nnYk%WdN9sl#zW^7MUge$_t*KZH% zLwwENzm~eL?Y!SR+D@g;j!Tu!-f8x{+nsyX{bsB^FILhwwZ!fYO0^lgYLDludbG6| z*1Y|M=OrBMZCT#Ymy3ydQ_p9P7wJ;JwCc7h%g&@fZUxmzZrB^i>6NT2Zhe?87f%;K zws_th)Mm53yQ;Z`?#WzLB$fE-fuhp5GRXoIT)0rn^&u)B3Ex^PKOS_dP`CwDACdr5 zz^9+80|wa^K>4h-@I2JdYgnE@f>BiffLF#^o^N<4;A!^={8cH&X&C$*mp=Q;mTo0nISgWlfu z*+j4PRfy07sToY6;K8C&1pV)}LLizi#Un{`HNd*49p-w>@QR z^H3!?B#xhK1SGVYL|DF?)B=_uW+42A5<<`58kl4b(@cO9@Nl^E@0~`YupYdfUzEg1 Ac>n+a literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/e36bba8cd1c971edf6696aa76dfaf690e21e08c3-5 b/huff0/fuzz/compress/corpus/e36bba8cd1c971edf6696aa76dfaf690e21e08c3-5 new file mode 100644 index 0000000000000000000000000000000000000000..ee0ccc0697c49f4c8331392d39cd8c5e227f0e4e GIT binary patch literal 4 LcmZQ%VqgLQ01yBM literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/e4862372d6534ac4eb19df7d21840887b8297df8 b/huff0/fuzz/compress/corpus/e4862372d6534ac4eb19df7d21840887b8297df8 new file mode 100644 index 0000000000..1a0c9658ae --- /dev/null +++ b/huff0/fuzz/compress/corpus/e4862372d6534ac4eb19df7d21840887b8297df8 @@ -0,0 +1 @@ +-.ZohQpgtgpP___nX_Rq_JlK___t____mZ__Og___g.-____.--x-TyLn_iwrB_mMY_z_sI_s____'eVZGohQpFpGPtgnpGPTrniX_Rq_JlK_F__t____mGZ__F_Og__VMgwBBB55BBBB3AAB535353.xBfba-525xdbC2aBABd3BdA7Afebd62357031253Vz0x7Tr38niXR6qJlKmFt2__4A957_AxmGZ_8_BF_O0g_8_VM28gw49101862645149230957031250xdbBC2aBABEEd73801BEcdD3A7AfecbD864Bdc186264514923095703125-9101862645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc1862645149230957031253958.0210002111-9101_62645149230957031250xdbBC2aBDABEEd73801BEcdD3A7AfecbD864Bdc1862645149230957031253Vz-0x7AC8Dd \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/e6722bb760655d9d3dbbdc4f9ebf7354a2461d97 b/huff0/fuzz/compress/corpus/e6722bb760655d9d3dbbdc4f9ebf7354a2461d97 new file mode 100644 index 0000000000000000000000000000000000000000..5d81322328402038f9cebbbb68543016943f1485 GIT binary patch literal 600 zcmX|;-%k@k5XTY37}3V?zypaS#utg+xjVaivn4!u*S)q9+e#^v9&ivM z|GHaEOg6LG`F@2gMSyZh~xH_sdpVRLu$tnzz>YtOR~ zq+n9iJT+*vm)b6Pod3H3f-psHi$On2j1JP|uOj*SlKb}4qz`8&*bWEd@J=svw7cq} zY~xHy{~n3R4~s?%ve6>}H4!7)BZ9{HaY2NVC@AN{`nWLAAxelhZoM$P=o3eenhzDe zFvp>c0|=}Gd$Kr4x!|Bgce%tHG46F{dy{u=nFZA_3{4Q5%FbT16Q!e^G0YgEBN!8` zjI4@z7MldCRTO0!Mo1m_!R4HHv42?XyUrJPbbNhOOs^Y9H`8%%Hfa@&LH)3M5ar5kQ!!H{ zr}_KtpmAlvy2Xm&0zO^Pi!W)_i_68tuzN7P&y|XT!1wbwP)fN@W$X2SyUv6V`$P}q e_cYjz!7ZIrQ_yLzsfgQk9h`Cv7e`p*cYgq`#iqyr literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/e77ce13737af5a84c7a50d9d18a6699fb862c63b-3 b/huff0/fuzz/compress/corpus/e77ce13737af5a84c7a50d9d18a6699fb862c63b-3 new file mode 100644 index 0000000000..aa0e25e77b --- /dev/null +++ b/huff0/fuzz/compress/corpus/e77ce13737af5a84c7a50d9d18a6699fb862c63b-3 @@ -0,0 +1 @@ +c#x ,c \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/e85ca8b54d82486ba7462ea0659c42a0a36cdb71-8 b/huff0/fuzz/compress/corpus/e85ca8b54d82486ba7462ea0659c42a0a36cdb71-8 new file mode 100644 index 0000000000000000000000000000000000000000..57a5c01a97f5b48d0c6d51d44d1e7c8fb884b872 GIT binary patch literal 32 WcmZQ%U<5-JMixd0i;)4uhCu)VhyXDF literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/ea616ea4310406f7893091a96e87e0b9c0412e4b-1 b/huff0/fuzz/compress/corpus/ea616ea4310406f7893091a96e87e0b9c0412e4b-1 new file mode 100644 index 0000000000000000000000000000000000000000..672cdf36368f44da75641a181cbe585f81ff4b4c GIT binary patch literal 739 zcmb7?%Wm306oy+>mAa_1=rV86g{`@GW^5@N8xI7MCI*TDE7Fng2^ZsV2?j;V6ZHxD z09Bu%&(KFe>d;mpbl1&Dvp8q||NG|c*f88M{{pd7R%EB0w}=0 zgexdkQ|OE!g9p&66V0kZnVFU#)Zc2A*zMlGd$YUUc!T-kVY>}l-F|cIuV=%s46{f- z(YRr-szxN0iA(J`a$}Qo17njDZZK?E1X&DGOc<(?$f=RgacxH?f|>|BGTu)KJ4@q8 zP)c;l`5D(MSr18=k`ytHxUM?X%Z9fs)bV*<+zmSSt;t1w*$C>_{->NV7E*_14q=2c zN*LA0LA$!hF+0!K%}n&Bz3m81M2H} zb<6;3oJ)WZe&d=o{Vu;;Lu#$A0e9gl!wHNE#)m6dP34viF-U4Dn5`_?9*gR&M%>DpQ38cD3Y5q5*B*rqx{22-F3M^r=fPrie{!(&GVpEJHt=pH4-`=0-? Z=ljPm-)_GC_<8se|Lptl`qfeSr(c0z*uww- literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/ed0f1c5ee2700c3c2d9a0914de90363e750c3f47-3 b/huff0/fuzz/compress/corpus/ed0f1c5ee2700c3c2d9a0914de90363e750c3f47-3 new file mode 100644 index 0000000000..4d56b2a327 --- /dev/null +++ b/huff0/fuzz/compress/corpus/ed0f1c5ee2700c3c2d9a0914de90363e750c3f47-3 @@ -0,0 +1,2 @@ +#)~ -@<________?;1bE661d_)+u::!s_]__________`= +Edd1991119v9_v___[_&c1Y+iZVoOaayODaTxoo%uOj DcH11Q._'riRZU/ 888447t89116414997312B2BB738B37e864B186264149239703123V0x7C8jel332mQj5_2_JUB5_-052{0x7AC8bxee6603zzCa4fC--K1K.-Afc64-ZmsVOt-'tqnfVZhQppGtgnpGrniXRqJlKFtmGZFOgVMgwf5aBBAAfbB555xeF.-5-l7YAXuH_TXH5_J__MT2P7C/ \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/ee481cbb8636f3957618b3e627cc6a56caa1dce5-1 b/huff0/fuzz/compress/corpus/ee481cbb8636f3957618b3e627cc6a56caa1dce5-1 new file mode 100644 index 0000000000000000000000000000000000000000..c97c0b730c172b25b0d0ceab93deadd1b95792db GIT binary patch literal 1593 zcmcJP+mG8s6vlyyQbZL2Z$;`0Jn+Jp@m%b&R33cYX0su?+0D(ZG$>WzABuWVL*u6}%Zr)s z``=H>oAP1STF33;>)#*tlje1!Gc1eEemHGS+JlS1rq?Qqa$m%=xEHPCs8h5H|5=7& z6qn8Z^+mSnT>m;PH=BCYot|$IGEikUkO@!aCuW|R+$8#?{rXkqt3xBJBI7xx7=F8M zo~bHT&`QJf*h>Y%Rf6t1_d%Y|S~8Myt*e-y z#S%K5Ldt%-*r{A`l~C&Dif}?X)ldzMT57$%*TC-UKz|v17b$o@)Hn@JX^+)EM?=J~UrsSQb%1POkDw5E3Y|GKqsfRMm~QwB~Vw#8wSOz@avFn!f6-@EJJVv~t4@8Q17 ugR#X}mHWiNV67mHk_=aFjyYVo5zB~=os6dm$~*ZoS*^Gv&%Zq!KKm2V{KI(w literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/efa3bc9831786d0e203957fd2ac2c4de9d5c168a-2 b/huff0/fuzz/compress/corpus/efa3bc9831786d0e203957fd2ac2c4de9d5c168a-2 new file mode 100644 index 0000000000..a34c4b7e8d --- /dev/null +++ b/huff0/fuzz/compress/corpus/efa3bc9831786d0e203957fd2ac2c4de9d5c168a-2 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/f0121676050a7bb84ade5c4783407e0527ca88a4-3 b/huff0/fuzz/compress/corpus/f0121676050a7bb84ade5c4783407e0527ca88a4-3 new file mode 100644 index 0000000000..a9c7d6c99c --- /dev/null +++ b/huff0/fuzz/compress/corpus/f0121676050a7bb84ade5c4783407e0527ca88a4-3 @@ -0,0 +1 @@ +160798828121136868377216160798828125 \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/f0bd04a4f5ccd427cf59b79e2f67caafdbfa0233-3 b/huff0/fuzz/compress/corpus/f0bd04a4f5ccd427cf59b79e2f67caafdbfa0233-3 new file mode 100644 index 0000000000000000000000000000000000000000..67deef393ed74b18fe7c0b7ebcbff4442e5cae10 GIT binary patch literal 792 zcmcIh`%}|E5LN*d(2g>SicUoyf-@vu?(!VUFbz#<)25F!l%~KOO-qx$LefVXs=~kS z1^m$;^=9t&c6RsM@7rD4yxo5O`pdgti`&_``gn6~Vg38|{+WZK z_oGuaPW|kpH-Fs?GG=e027YGZnt^kao&+!F56!V-K6=0L`PJ&9uLHI3y-l3CnSS;Z z2VoG_Gx?rs7jYqO=;J}z8+#?Aqx-q>pr}pXXoY(Dve++XHNV#J2Q|OQdMA}ixp4B~ zHfOq~X4A3RP2QajH51Q97@x;tIBc}5v*=PZ6&^K|_Eq#M#8L<%ni3#DNCXrBLhKA6 zAOOTb5FSC2)DlQUK}jLmzT!n5@(=;(KH(|#!m`?Qwd{Gvw(A|2jG^1naSo?39%FI_ z$8}7cqK$D?v!`v#k{d`yZ3{v~8gPgv#8{=-lv#^wP!tFSQe_O0=yqyY=Y6d9b9fNJ zK@wn-0#=e?geqd0-~yX`su~oV_LP+vz(n*|j$x&UBX>`d17XXOi4r-Ll>ewi$LTM%RvYQ Xo|8C^febIvtaDSU4M)LjR#$%m%huX? literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/f2a68d20b1e145bbf69037f17685e0adedfe68a4-6 b/huff0/fuzz/compress/corpus/f2a68d20b1e145bbf69037f17685e0adedfe68a4-6 new file mode 100644 index 0000000000000000000000000000000000000000..4c59fa1901ac5a880db5faf1e57e866b94ea8532 GIT binary patch literal 11 NcmZQjV`N}~AOHc$05$*s literal 0 HcmV?d00001 diff --git a/huff0/fuzz/compress/corpus/f320b3ab9e260a1bbd378762c54a8e23f794901a-2 b/huff0/fuzz/compress/corpus/f320b3ab9e260a1bbd378762c54a8e23f794901a-2 new file mode 100644 index 0000000000..af5585f101 --- /dev/null +++ b/huff0/fuzz/compress/corpus/f320b3ab9e260a1bbd378762c54a8e23f794901a-2 @@ -0,0 +1 @@ +e211112182634814453125629739CFeBEEbaE355271367885009293556213378906257fb-053440.- \ No newline at end of file diff --git a/huff0/fuzz/compress/corpus/f5829f8a97a0a1dc008752245b460db0a0459c03 b/huff0/fuzz/compress/corpus/f5829f8a97a0a1dc008752245b460db0a0459c03 new file mode 100644 index 0000000000000000000000000000000000000000..55240e503a2a94303ff8c1bcc950b2adcfd71da7 GIT binary patch literal 583 zcmb`DOKaOu5QSSxp^MT*m;DbC_ukQrB)O~NZ$^=lP>_JT+`bcK0qg17(Dg}}t^X76JZOoGact6B!HMthNqubNFCPokSW$nmJ`oxZ%wxp3&zMm+tX` z<&3{pvfyQdv^er{tvg&u*5FQ;Jgy49XTvmvKu5V!+K!7jv~3}?cZMs4WKx9ERUlln z1xSU%F!KYI`o7kM4UUk$F2JtJ%puD!a_I~!7E0^s62#r$YI}hb7FplFee+1 zd%EwsWIVeb-NmQPV#pBiHb}J&y($Z>A}7mI_+7NQ2c{4f4&PQJz!30_a8#^Jd&HKqpgB{y>zh6#-#4lf| z<7B(b(tfREJJERN+&O2?_~X-;7cU?E_$5CY-TOTHI{H|zKgicFO4;$GSLpqcA57kl zK9p;NJDJhjH-G;1`pK6}A(bi?dM^r@;-+2sw0KyqH}kRbV3CWNW-ULk?Xw@g{`~eV zf8KuGALrIj7X4~$GtBi1`Au#=u3ua%1C!^-~yL&ZhNTWmwn_E8B8=d;izV{=U>&ZL`&8W;AQx``q6zx2OMSzr7fB%DG(z zp$@}wb6;9bmaSE3HeNrdbUt*ZGdyv(DdL&a_GU9Vv@65x_K&BXS-(6lt*7%+Z8;sZ zDvK<3Jn0l0g!@#eLI_1L%J9Mm-Xg9LN|>OGkkF@|Z#fS0eVcos8t#MP)4`j-J9a`h6TVH+l5KGgU@0Qpi$`U0&K`(%rpZ@g+ZBt z%?TC{4MQ4EAcdpE-jPtpirSK)9#GL1fRex@g?JR>rXh4N!y~LrL6IDhX>Vtcs8_@! zm~rG0dXhTQGNq?8B2SD0zw26>^t#_A8zk{vgoK`ZQ=cHR`wc=uAn&*z;(gT6vt3V=(3dQ8%$3L-A}m^vviefTAW9QTCTQ-P8KcI*v;DDz&z;$R#)RZ z43adCLkTS}<@h8t10qb%PH~?miQx;+QG#NybXF??^wqP=%e$9vet)hK6{t|7sS&2) zJdsF}I+khM9!n6_{)dNaC8Vb&u5wW`OlFP4v0gg?oPtLw5F*kNLG%bkUc;cEiAYiP zsNnJ3Yb-@!1~qgA-Ns0mbZpx~TOEhc)uS<;y2Iv9z(m@&WIl>4u1BgUL=|XWq6q|y z#HO02ag>U19e=1wFruQkl%UsfHe9D1i@1i|Xv7rX3zbtn_Q^n^rwOVzBfQc}{)_Fc zwvN;P&*J;aW4f33mFzi>-mOdaB0}K6Yzv>b-R+g!g9!&l1f6l1vB8; zrnLo_0~kPnrwi38c!Ic8NsxqK9EGPkuBJfwRn53DJ-R;ndY){bjC^n37(XVV#fn|1 zYSrcz#*(yPxM;#+41CMrK=eIL!%RgLTY6uE8l+(l3=&7Z-yYJ2wLd11H1NUdDz~j0Y7&;>w=7x#%Ch>~%CmCqJzC KyDJalQ#Sy#vk~Y3 literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/0297e0b01e8ace9ec3a22311966681bbe06b875f-5 b/huff0/fuzz/decompress/corpus/0297e0b01e8ace9ec3a22311966681bbe06b875f-5 new file mode 100644 index 0000000000000000000000000000000000000000..91d73488c426e7f35ce9baa44ceee84fc0660d14 GIT binary patch literal 2 JcmdnR0004Y0J{JH literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/04bc4648208f40ba61ffb9a929f760c24101522c-1 b/huff0/fuzz/decompress/corpus/04bc4648208f40ba61ffb9a929f760c24101522c-1 new file mode 100644 index 0000000000000000000000000000000000000000..84338601e306714ebf57686f1ae27adbe2e0a4c8 GIT binary patch literal 1278 zcmVAGJ%+CalV3~8zqS!=5Kp&x= z;^T3-P?)eRWI~}1jSNiXW8)z4HE!)x%EPi+Zvv#QxTw_fOR zo1<&)9zUsViw;PD?3zDbZqDr7o@*O9hR(V3=H&*rJ>G5Xo`Y_kd+xo*8$r5v{VjWY z+bDAGg&w#4NmiW_t*i@^P&TdBG`C@$rYR{EscN>~3msatvMx+QNvDa5WZSzP!N{?r zD0FG()(d@`n?HV1v+8^jt*i@^P&Td8Y%4Xa(=;WW6h~%NvvqF0(6_ny<8RwSmv(Nw z(6_lcORY|cRu?9rY+9$bQrBscl;TKLvvqF0zRk_~+cp9u;DQJWM2H|k1^lj|L1kbL zSVUF7;zsy#lBr5xOlEsgl1j7ng>VGRoO>3b%cbd_xssmOtI=$w0_3%1(`($2lm<2Fav(old_v~cg#aWx%_J!{y#J6{QqzKGjJ9#ATSl4jEKqvY8{3?}DHm%#0*SXi16DsZNx|*WsRr$(xo4uDe zf_QUx&*pA!kKDb|OG;X+q&0J=my|S%LYGRVq_s*~v(SY~NwZH#fI#?v4F!!51*MbW zQQ>L$hzMOWNPu`yE)JQ_1_NgS0|Haw$%v?cJR23z!{(ETKmi>K77!Gn4hIK?$Krv- zfy1N0qVVx#G{`_Su)+CMG%y(*jmpOa$08)rkx=kpc*tB#fB**+p9_TvOGn1X<^c;( zd@d9wEDIePn99c{!T}iQpm^wju;`#zKrl#nJ`u7^02L%y9$+{=G%P+II1mq;2Oo)! z1crkG78D#D77r{O4HkuphzSS~Bsd=o91WBWg9S%|WrG311_Nhf0mXv`2N)C}0swF@ zO%)9hQYJ89R6Ha!Oh`O9fZ+fL3JwPa$^;sUgG546fB*y*G++T2U~r+3Kt;rZ1{VzI oR5TbsL(z0N3l#_w4Gl<0Y;X~Qiw7)lanS&Q01SWv2oyxHL7kjj@Bjb+ literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/04bc4648208f40ba61ffb9a929f760c24101522c-1-4x b/huff0/fuzz/decompress/corpus/04bc4648208f40ba61ffb9a929f760c24101522c-1-4x new file mode 100644 index 0000000000000000000000000000000000000000..dcd1f7ebecaa417ee01a5b6057343e53d3f0ee80 GIT binary patch literal 1285 zcmV+g1^W6)Kxe=y&ph+YGtWHp%rnmi=fngs0~#$Y(MGnENs6SL$hzMOWNPu`yE)JQ_1_NgS0|Haw$%v?cJR23z!{(ETKmi>K77!Gn z4hIK?$Krv-fy1N0qVVx#G{`_Su)+CMG%y(*jmpOa$08)rkx=kpc*tB#fB**+p9_Tv zOGn1X<^c;(d@d9wEDIePn99c{!T}iQpm^wju;`#zKrl#nJ`u7^02L%y9$+{=G%P+I zI1mq;2Oo)!1crkG78D#D77r{O4HkuphzSS~Bsd=o91WBWg9S%|WrG311_Nhf0mXv` z2N)C}0swF@O%)9hQYJ89R6Ha!Oh`O9fZ+fL3JwPa$^;sUgG546fB*y*G++T2U~r+3 zKt;rZ1{VzIR5TbsL(z0N3l#_w4Gl<0Y;X~Qiw7)lanS&Q01SWv2oyxHK@q;3WUA5^ zli6OBq|$7CAsoRn=bl9|Dgt`yDLx*T3x$b=OsGR615^3fILLdh!HpoZl3dUwu;V2q zU1b|ZDstc)I_KW#g6%efv~w@?xXsbId;BD;vU?J(tP7J+Hm%lNsbQUxPKsw$vvux; z9=AFA<0ox&?u8z=Ir`&g)%j>;U6_QjX`S1!PDv-lvu5ku3q5Xg^v7?bhlVMaf6Y3) zWd3I+olHLTDF2@~{w1Af;4D1GgLq7Zr!yk{A7-0DLPYt*s5oQHAnn{9o1^o@r0k~L z9rMsoF8>;b|IbW1|Nk5R44efF2uy`1Bcd_^c{Cf92?+GC`Ajkw>;VsrL#DIAuz&$k z;mL>qJzUPc(6`wize;750}n(DIJaKtahs!S?jAp>S#`Q6(aO3o31!o2O|z}kuujvI zbW$9dRn6A9^+J!^99?tw_(^SBbU*@R*ZlEvb7trET-(Sobk3bOFE_aD@or=H9CYj4 zbMHOg2-3alZ`s@1Mv-$b^tkO$vg(v*WnGwrvT3!Zxeek@4x=xd%6i2F>t#j-3ZEnurwhAGJ%+CalV3~8zqS!=5Kp&x=;^T3-P?)eRWI~}1 zjSNiXW8)z4HE!)x%EPi+Z literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/04fe6043558c921672856d1d9332bb41b7d64087-2 b/huff0/fuzz/decompress/corpus/04fe6043558c921672856d1d9332bb41b7d64087-2 new file mode 100644 index 0000000000..cf340aeb66 --- /dev/null +++ b/huff0/fuzz/decompress/corpus/04fe6043558c921672856d1d9332bb41b7d64087-2 @@ -0,0 +1 @@ +@ \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/05575bdaa6ba33f22d304f9f3a62010e42f76acf-2 b/huff0/fuzz/decompress/corpus/05575bdaa6ba33f22d304f9f3a62010e42f76acf-2 new file mode 100644 index 0000000000000000000000000000000000000000..c5d688a1241617dddf2a714b2f6c4ccefb26afdd GIT binary patch literal 90 zcmV-g0Hyy}z{X+yAHDYff9b8(Upwb17z<;e*}z$om8gg?(Lh3n@+_REv~RosOvI{; wJ{D6hN8;d87@0}t1A3`MAdux0QA(SML?kLAl6Pj`olp+qevYum(ocS{drEsOvH$=8 literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/0a7ce59229caf93ee64d5a828aecab7b5e434bbc b/huff0/fuzz/decompress/corpus/0a7ce59229caf93ee64d5a828aecab7b5e434bbc new file mode 100644 index 0000000000000000000000000000000000000000..1514627ca8027133156d775b2a5967e08a41ec76 GIT binary patch literal 501 zcmcC)Sjs8GV{m|hna3c(fx~v!#S`~-Z=C#h@AOH_S#RAgSlM|&&0FmEzo4qP1s*el zyfjs19w+S8N?f;rg=IlQ7uTD&mo>~M{(7%(W?wD*y`SaJkF-U_Isr4cf1kK$`SO47 zKR%w_d2XXa>b+x+O?RB=VwMSb7@~c~*jpl)KT(0_ki`Af?)_%@t9luFn$IfvE^V?GQ(M?)889-CCc_Ptu<9`xEAxrZAX{I?AX6c zs=NN`9M$#twdJ+tGNJSTl6{sg6>^>ONh;^;(fpRx9h+}n^-o$vs(Kb44JiwT11%|x zo$c46oZT#VQj~K4+jZ4!-FaK`t9(Xb%FL198c0uwWbppu3~Ld1-Y3==gm8xISE z(@l5(+6&*mfA_Cwf2(xl)Y+2!%qCkNnHO!Y-XpTz;N|72zK6*=Ygq#0ntOZi)JP;4 ztc*0_PWxV=nU@%pq@&t#Nu!sIm8YGxqpgXt@c}~%M_XsdSA~ZcW*oT@b?twVp5?#) Q)4%5JRNXmMLEDiD0K0bZk^lez literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/0a7ce59229caf93ee64d5a828aecab7b5e434bbc-4x b/huff0/fuzz/decompress/corpus/0a7ce59229caf93ee64d5a828aecab7b5e434bbc-4x new file mode 100644 index 0000000000000000000000000000000000000000..9c3c8124e15a9d9fa5265080acd4943f562977c9 GIT binary patch literal 507 zcmcC)Sjs8GV{m|hna3c(fx~v!#S`~-Z=C#h@AOH_S#RAgSlM|&&0FmEzo4qP1s*el zyfjs19w+S8N?f<0kfDMhl|hK_%%+6$|L2c}lGu!wkG@fArpYBd32< z*XP%kdC5N{ytN&tTu(?=HkW6U@W~Q8+jP@5t}A-R6bWz6MJ8U09T^WNGA>$};Gkf^ zpxBhClw|8+VWMWZZQ9rUbG-Zh|4-c;o#&aSdcteM+MPdo3q%XecK`D9nbN@M%FNC% zV}g#t#|u%}Cpg+0eU`kv?>=$8S-JJ%f5{((*c9KbI+(mszJIA;MC_l?wDRvFzk}`^ zTC(N5;Z`5jsR~}1(_(dfym}c$r8uRexFq)IEhf|)YT9?frA-Ld)RRsUVfZ=462>c4wlvew5p_Qyh^v;ti; z*B`tV^T%yRm&NSZzba~3M5t$BS literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/0ceda9053c751bf974334c7c1676832feea92d69 b/huff0/fuzz/decompress/corpus/0ceda9053c751bf974334c7c1676832feea92d69 new file mode 100644 index 0000000000000000000000000000000000000000..0b765c8073cdfa4479975919d59bd6816111a04f GIT binary patch literal 1569 zcmV++2HyEn;0TCn0>A?gJn+B+4?OU|0}nj#zyl9F?D+L3lU-;f2qM}+sSTM;0t|tH zh-w(9xLaiJUqGocrIb=io+t8(4t$`JPq+vPKo#up>jSPh9Rr!qU)sF#hb*WOg*jbV z9FQs1@<`AKNq$kPkn12L%HqQRlaM@vYMGc)uI&FqKjw7dtX3T%nTMvM)8TYHTpg=f zKaUY<)0z=7Zr>8i6ipRzUcQX^niy6l65T7RP%0!*1gk^ed7DIP(wsfJd$xoHwh96W z8am7|J(>SB8cGOsSS- zl`4srRb|x?VhMd5gejJI0TVYL5>yDQcNA_|hG|R*!@973-Rni=y&yP>a<}18GBB;g z2yn}JTt06_I z8a)30U(NcF=Iv|gDOPb_K2WSRyAAfeO(Hd^@9ideNZ@dC@?ilFjX6eg|9zWrn(>n7 z4FqG%YEohSRR&ENu9h zlro=6$bvduKq(K0WyR4EqWU=aB{FP)kW5HC*uXGRVZ!P6@cje8h7QDJMB_ygl7N8) z9ymt+f4t=Xe~_O}f5|!i5Y@upsJ^noFIeY{EwDlUsG3t>(d&T6Hy zn9$*jY+4a4rpgP$0+B_qEOdxC&;W;ularGN9Qc5NVHFfS3Zn1}O-i5ArV_HC#0rMR zNm*7Y(Xv{pLJq>p(nw?(CNLrKppL3H(rjRusBp0XgV~@O(dfKht}g)t3oh!&A`@X{ z7>-2)4H6MBASkj33*mtVI8>aRgkbQ20;8fB3Q2G|)^?M6e=2D3%Gt%4mQ} z1hEE!A+C3%nAV!X5K{`p6v{|34k?t8qC_$t8`rM)=DwMdDU^FBw=DBxQSi(b*hewe&6WjZX3PPquw~GayNG8?#`JF$JFv>XY~Hf&uQJ``Z^s7UuNS`X*vuS3g|RCE|2HKm4FYA>r;tDZR&Ko TyPE-?3A?gJn+B+4?OU|0}nj#zyl9F?D+L3lU-;f2qM}+sSTM;0t|tH zh-w(9xLaiJUqGocrIb=io+t8(4t$`JPq+vPKo#up>jSPh9RrF1p8-Sxub1mfz`%lw zI8061_^@SH+qu60=Yo*fg%DI(yJqnLZN7y z1V>F1X&^zYfnbR19Vw=@W-!E*LNSFhQj9|iWuz#PjK{{c>%F;ereq4`-U&J9oY`<% z84*s4(gHz25$Vvtz4_)Gf&m4H1{h$^6QPuP)T1AzG^-MPDSX2UVHJeiis zrBP`*5!&==A|h0(vE|WpU)LGEfAe!%_qe`Jhr*ZHcvPAW!-WDmjgHIX`EVuR!{ho? zB2k+*H;kw|TG6w*4do0|Zbk zfFTh;(178AW5kpBFV6sZ{_&FkpzW?7aRoIK#b2Mi3Wpx{vugU+CM9uhd5oP1coLt~DS+<)I@oMyb_c>}>1vznBc z$}Dednv`udiK)aaK#xQkC6-xhxp3P!?z1*D5jn(;5Qz-SHbfBIB$xy+NMbXvECOS| zVhQHPl2WQIV5!7blT@p=<`IeWL?bZ7)FX{3oTQjUp?IHYq*%ivPXvY(NhLk%F9D(d zzd_2~hDV7}+f-t!NvhSh_1@ehuHFo8cq4HwF^S{8Zj`nqwwlyx*L&aH-I>J_-z#ms zEoC=|Yn2vP*;n?hx5~fk#FARU@&7O3|1W_5|NsB*2$|1c+Pw0IET|EMIbB#BkSW#j zNYDsLeo?BB>mVb_;==!vkUWEGnV3?p?EgbQ=5*n#RvjUkho+;`;dDG)9jjSCj}d9p znh`Q?-xA9dO%-uozKr>r7*-|{-7Bh4DkM<^t3%&;n?!2ToISgHwuA+?3IYfkI?ORW zng4Q|0rEVf1hj$R6K1ij0*=;NP84n%$9*<5DP=yTO(kSOi51N0!s38Tsg`AxDv6d= zWz`X434I)dDVBHv6E`0cR0ykg6mD3CX-o;jy0CuT>qX_gAUKM0x8YGTFs;N0aLajI zK5s=ju%rI)^Fry#oGc)3|PxczzB5Hn;_f literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/0fcf0d8fa929e950029b365ad631e876ec5f3c47-1 b/huff0/fuzz/decompress/corpus/0fcf0d8fa929e950029b365ad631e876ec5f3c47-1 new file mode 100644 index 0000000000..5908a1dc2b --- /dev/null +++ b/huff0/fuzz/decompress/corpus/0fcf0d8fa929e950029b365ad631e876ec5f3c47-1 @@ -0,0 +1 @@ + 0_$J*pm7'j.t R me$b;*ArT~q9v_Y2fq,kq0ۀ0#MJҹt S1/0Q7Z-yY`%^a;{lk~Nj($orEssAEkmvHn$YyPbPCgGq2p7Z-yYJ2wLd11H1NUdDz~j0Y7&;>w=7x#%Ch>~%CmCqJzC LyDJYPL_i7v251w} literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/118873131212b4f8e4f2b7aa9e398911bf83fb21-2 b/huff0/fuzz/decompress/corpus/118873131212b4f8e4f2b7aa9e398911bf83fb21-2 new file mode 100644 index 0000000000000000000000000000000000000000..a4ef342785ef226bcc3a9402ca17a85186593b3f GIT binary patch literal 9 QcmZSQX5e7pWO%9$00QL!FaQ7m literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/12a386209a550aec21fbfa0b2ec8c066fe131db7-2 b/huff0/fuzz/decompress/corpus/12a386209a550aec21fbfa0b2ec8c066fe131db7-2 new file mode 100644 index 0000000000000000000000000000000000000000..d2eed5c766074a49739ad574c5530792753ef76d GIT binary patch literal 12 Tcmd<$VsK;UX5e7pWOxby1r-5f literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/17a53cfc55c261af6e258f0effbe34a9d0c3a117-2 b/huff0/fuzz/decompress/corpus/17a53cfc55c261af6e258f0effbe34a9d0c3a117-2 new file mode 100644 index 0000000000000000000000000000000000000000..f73395fe22fdbcd1f473c7ed741b65d1c7cf856b GIT binary patch literal 19 acmWe!z|PkqGehitQ8*VDgBv?H0|x*zLIg1Y literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/182516c486b2eafc720a03046af1949a758ff7b4-3 b/huff0/fuzz/decompress/corpus/182516c486b2eafc720a03046af1949a758ff7b4-3 new file mode 100644 index 0000000000..00b2a2daee --- /dev/null +++ b/huff0/fuzz/decompress/corpus/182516c486b2eafc720a03046af1949a758ff7b4-3 @@ -0,0 +1 @@ +60616263646566676869 \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/1e23aabdf832d3bd167105c98f4931313e0df945-8 b/huff0/fuzz/decompress/corpus/1e23aabdf832d3bd167105c98f4931313e0df945-8 new file mode 100644 index 0000000000..c30f00becb --- /dev/null +++ b/huff0/fuzz/decompress/corpus/1e23aabdf832d3bd167105c98f4931313e0df945-8 @@ -0,0 +1 @@ +@eEEEe \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/1eb38d67be98350dd6ce98f72e5b1b75043ce8c7 b/huff0/fuzz/decompress/corpus/1eb38d67be98350dd6ce98f72e5b1b75043ce8c7 new file mode 100644 index 0000000000000000000000000000000000000000..7776e2ea671857150d1d420c6faa9b70da3d3635 GIT binary patch literal 78 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 l03HS{6{r7Nkzki^Cb2{x?m*l{{bo#OKt!F literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/234ec5ad1fc105fcc08523ff91bd8430284aa1f3-4x b/huff0/fuzz/decompress/corpus/234ec5ad1fc105fcc08523ff91bd8430284aa1f3-4x new file mode 100644 index 0000000000000000000000000000000000000000..dc1291af5a593711a0ccb3a0dc98955f16b32399 GIT binary patch literal 100235 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�H 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 literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/236bd270f4d36e14eaf41daf5bf33e55ff5f463d-6 b/huff0/fuzz/decompress/corpus/236bd270f4d36e14eaf41daf5bf33e55ff5f463d-6 new file mode 100644 index 0000000000..cfb3230665 --- /dev/null +++ b/huff0/fuzz/decompress/corpus/236bd270f4d36e14eaf41daf5bf33e55ff5f463d-6 @@ -0,0 +1 @@ +eEd_ \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/269f2e5e3b3b1acba92aefd0a49444d0869af5ae-7 b/huff0/fuzz/decompress/corpus/269f2e5e3b3b1acba92aefd0a49444d0869af5ae-7 new file mode 100644 index 0000000000..bf3464d01c --- /dev/null +++ b/huff0/fuzz/decompress/corpus/269f2e5e3b3b1acba92aefd0a49444d0869af5ae-7 @@ -0,0 +1 @@ +eEEeE \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/2805bdad6bc68c3c6edd9344d658b6d43a8dbcbc-3 b/huff0/fuzz/decompress/corpus/2805bdad6bc68c3c6edd9344d658b6d43a8dbcbc-3 new file mode 100644 index 0000000000..fdf25f8525 --- /dev/null +++ b/huff0/fuzz/decompress/corpus/2805bdad6bc68c3c6edd9344d658b6d43a8dbcbc-3 @@ -0,0 +1 @@ +Z [ ۊ4I$99 \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/3187c5cc2c8b927997cbd46e9328581620116613-12 b/huff0/fuzz/decompress/corpus/3187c5cc2c8b927997cbd46e9328581620116613-12 new file mode 100644 index 0000000000000000000000000000000000000000..44c6d886aec74a37b8e0959f4d4ff5259b7ca6ff GIT binary patch literal 23 ecmbObqNKpUz#zcDVDz@iR(ETl({ztM0Yv~n%?2O< literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/34e0f846cc18c5c0a6e0334192411dc2c6a1c719-7 b/huff0/fuzz/decompress/corpus/34e0f846cc18c5c0a6e0334192411dc2c6a1c719-7 new file mode 100644 index 0000000000..f988976834 --- /dev/null +++ b/huff0/fuzz/decompress/corpus/34e0f846cc18c5c0a6e0334192411dc2c6a1c719-7 @@ -0,0 +1 @@ +eEd@ \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/36971f66110d363f2a217d16bf1913475c25a862-3 b/huff0/fuzz/decompress/corpus/36971f66110d363f2a217d16bf1913475c25a862-3 new file mode 100644 index 0000000000000000000000000000000000000000..a025cc67c2f828e839de9dbe4a469ee687667cd2 GIT binary patch literal 90 zcmV-g0Hyy}z{X+yAHDYff6=YhUpwb17z<;e*}z$om8gg?(Lh3n@+_REv~RosOvI{; wJ{D6hN8;d87@0}t1A3`MAdux0QA(SML?kLAl6Pj`olp+qevYum(ocS{dqVpxng9R* literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/38729163260fdf7a5526f17de3cb34f02661e8c9-1 b/huff0/fuzz/decompress/corpus/38729163260fdf7a5526f17de3cb34f02661e8c9-1 new file mode 100644 index 0000000000000000000000000000000000000000..3260507a8fc5f711297a6b98c4b490d8025c2730 GIT binary patch literal 28 icmd-)Aj;;csc9`!%*?<7gzqOXI<`u1Dw>)qFaQ8ia0O=o literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/3885c38b78f31c98dd73bc1fa7d6dfe467eb0fa4-3 b/huff0/fuzz/decompress/corpus/3885c38b78f31c98dd73bc1fa7d6dfe467eb0fa4-3 new file mode 100644 index 0000000000000000000000000000000000000000..ae0f633b16f2940736ee4ec2479875a950a53825 GIT binary patch literal 90 zcmV-g0Hyy}z{X)9jvM_Sz4rfq>8;jMJLf4F3uB?#02%=RsE9GqKthM|ES#sbZ@d6Z w#Hx%w7E>-q%^n8`4n}z5;8GZwN#+B3sYD=<;ehew+H3LF&ow2ulNUZY5IK43iVlN|4o>Z#H0LbelD~(+=g6ua qJF#Fr_eT$cBxZU(W3F21qA=m9NTAp3P8Ss|rAg&!_vZ%iJpurfS}*1R literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/3f85a2df398429128e89cb13f51f612645550408-11 b/huff0/fuzz/decompress/corpus/3f85a2df398429128e89cb13f51f612645550408-11 new file mode 100644 index 0000000000000000000000000000000000000000..7faf9be2d1aff0ff4819c12b3872012e333c9baf GIT binary patch literal 15 WcmbObqNKpUz#zcDVDz?1KoI~JE&~Ao literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/40b8de701a171fddefdc4459023121a1e605b16c b/huff0/fuzz/decompress/corpus/40b8de701a171fddefdc4459023121a1e605b16c new file mode 100644 index 0000000000000000000000000000000000000000..1b1a7348b65a2133ec8f1767980e5e76551dadc8 GIT binary patch literal 156 zcmb12U~J&IAeWr|?f;dyL#mTz&YUTvd+q-YX?-@e-Fx1;#7iEyc)IfSqOJ247yfhT zStxXDqJ|TftHN=^?O{sKB^nJ_d5<}W$?u)BT`%glq|hp6h6xpg0d9wOZ{e9zpu>2z zQR0w?NTbEG8A%2RRj>Z?zFV~`a(1?jU2x#XcwQ#6;)HJv3+FtVqnN-EP!jRy?*H&f GiwXdmxklaq literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/40b8de701a171fddefdc4459023121a1e605b16c-4x b/huff0/fuzz/decompress/corpus/40b8de701a171fddefdc4459023121a1e605b16c-4x new file mode 100644 index 0000000000000000000000000000000000000000..3c919cd27e34180c66f804e867b4485ed1783727 GIT binary patch literal 164 zcmV;V09*eWU;%&(&>mxJ_W#sg!X=WKnVAwT*8jL0F9sn1A^;%(S(|G-K2uTgUkw5_ zb71y>p`7BJAz%nlbXfe||5uWta2Y7!SOTg8F@%vQ0&&bS#b7KxdO2@hwDvP3)cYIU zRdoaA)=K0YBM_#b!5GNmqnGp6MQcApLUjND5-$$QNO+ePCcC`tL|+-e(aU-3qP3qP Sq5eROp%TWCC_)NFAjb)VX-Aa+ literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/40fbf19f5ba46c802a2755c71c852b92fc334dd4-2 b/huff0/fuzz/decompress/corpus/40fbf19f5ba46c802a2755c71c852b92fc334dd4-2 new file mode 100644 index 0000000000000000000000000000000000000000..b560eccfa36c346968c3e641c733680a55b333c3 GIT binary patch literal 18 OcmWe|Tylm11pojWw*kTc literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/4106d42682c6b5f9f068148a3d94f5b52d9a2862-1 b/huff0/fuzz/decompress/corpus/4106d42682c6b5f9f068148a3d94f5b52d9a2862-1 new file mode 100644 index 0000000000000000000000000000000000000000..05f72a030aa17ae8034f30cd52942db60b503a2b GIT binary patch literal 943 zcmV;g15o@>;0UNX0>A?gJn+B+4>Q68ILt7^3^U9y!*{1vcEU<*+jbl#5{p$6uq?~6 z%<{ZYDNICuK*&knyG!ZaPZ5AZAe6KLT!apo2snt^Lwl1Lu<@cO5xts{#!c_$wUK1b zq?jR=WW&pX%{SY!wB^0_T5GR;aN!dVG@uab&kc2c&9TNPbPd?(3(+bKYny1sFvcKx zejf;y@Og6Th)y1nG_Fu_qtd)UBNU5dbg@q8=n`EWA|pw(;AFi}2^#7Vm8?iwmrduV zZ5z8eXFO0dt@M1&j%U3BV+f;FAh< ze$6O!ki-6uF8f2SBE!o9B+iplM>r zh43V`k(P)&V1O|Bq(ERQ)kmb2;zZz(kuDVz3ov2WI!SGKq^XQ-r8Yo3NNH;FkzqPw z$0Ni-g+ivWbE(+GjXclO$s>*{aq|M9SR|p*bsAk_Yqapa*SSk}H&IAhtiwYH5sSOX=1B8Xd2uMN2K?aA02n%3b zX0wzC6o<>D;=)pym|(G3P%vQQ0Yf$dQebgFbv!bUEF}WP;o`x9A_4*eA?gJn+B+4>Q68ILt7^3^U9y!*{1vcEU<*+jbl#5{p$6uq?~6 z%<{ZYDNICuK*&knyG!ZaPZ5AZAe6KLT!apo2snt^Lwl1L{Q%bhzyJ|AWTZ>Q!~#qh zwoXzT9%(8gTd55Y4^o<%d}Nr8*zpLlP@#}%>|81~aU;+3bn=MfO5D6aC>BX*be%?* z*cvUoI4ax4W~oe=GA0fV1Pct$YV!i2NFKs4$BSskpFICMH-c78DHFc)*a2fD~99P#urV zBTI=uakzM}pooBgKzYE30*VX^q(p?Jl7s(8zyTEC000DD)m+si%uHFvv<+i?eqRZn zC+G+55UFh1#tG3S8U)OetpS6s=GK+-E>vB&smzcj^VFHrlu^r!j7*7)nKGn#X4JZZ zg>cFpez96>-sLvGudHFL*1G*+2#fvyAN>CV@c;k+{~aIye;9|SMY_yVQRe$HUnUjJ zQX&lCfH}~B0>*^F1YiOFhH1mQXnvu>Lb!haRS%tY?p7g*1NX= z+hg6)2t}{HUAMt)f*SJgQ!NLrUo=cjEOyE$oEcy^^Q zO}U!0X~xJMemYh$TwFB<$KZ$N_jsg3`|3Y`H5{kHDsyCqpN>^c#NlhXsva}) Z`Q~lGE^pF2Kh1%4a~cFMSn;)-#$FVT$14B; literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/43726b29460c5060782f19cb0facac8443ad5d0b b/huff0/fuzz/decompress/corpus/43726b29460c5060782f19cb0facac8443ad5d0b new file mode 100644 index 0000000000000000000000000000000000000000..0a50371134f0808934dcb67e1468e5edfbdf6981 GIT binary patch literal 513 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 literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/44678db801ad65c4ba51cc5e0cd9095852f329cd-9 b/huff0/fuzz/decompress/corpus/44678db801ad65c4ba51cc5e0cd9095852f329cd-9 new file mode 100644 index 0000000000..d5a9607a7f --- /dev/null +++ b/huff0/fuzz/decompress/corpus/44678db801ad65c4ba51cc5e0cd9095852f329cd-9 @@ -0,0 +1 @@ +. \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/46fc2fe81fed8fdc49861d8a8433560c5a02d503-2 b/huff0/fuzz/decompress/corpus/46fc2fe81fed8fdc49861d8a8433560c5a02d503-2 new file mode 100644 index 0000000000..a6b6e0c4a5 --- /dev/null +++ b/huff0/fuzz/decompress/corpus/46fc2fe81fed8fdc49861d8a8433560c5a02d503-2 @@ -0,0 +1,3 @@ + +)U@<,H- + \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/475dfd55b54d9a0a4287ab8b952f606f2773a49c-1 b/huff0/fuzz/decompress/corpus/475dfd55b54d9a0a4287ab8b952f606f2773a49c-1 new file mode 100644 index 0000000000000000000000000000000000000000..35becdfca2bdf7d14b58a7d3f5ab15414163d83a GIT binary patch literal 1122 zcmV-o1fBa*@CJx#0vdRjfrlA*n1P2Gc$k5Q8F&cc|No5}H>CvtNIfmJQ9_qUj=_;k zS_r0@T4eVQ;K_DMDW#M=Pvjde%##!D0G`Yr^U2in=P7)o>JfPXc>xvyKjEk>9B3ve zB3Kb16w3r+Wi&vb&1t0J+KfsdSEj@oeLfFROke^OnF|PX3QM023Uj(}QYy^`RY%?^ z)Lc-&Z~(#Y8@&b$Gz?Hc;KHjTk3ykn8aQeq4nPcoA-*HUG>4c{D5g+G8d4}DMTz9G z``+9)Q!<5;bIzF!rFKE!v9|Y|NsC0-{JB99NBG8(Yb_PFA#?-1S3<)bUZ23 z$K$z-J{F41U|2;3EURRqaN9zY(xo`>l4w~~Rv{`&=;I;9 z5;YQ;1}wuSBp{5u(dKD3u*^bs(ZQs&3863-7RQuoc~;)0pzFHRMrr}ZX(P1&L-hK1 zl`urFk5>sJ^noFIeY{ExDlUsG3t>(d&T6HypwQurY+4d5rpgP$Y9NbXUGNZrz<~}G zCnqNkK)^sn1+RiA{6dq`r?jbrEGV&pVR2HHRmu{f|EpC;;mzi%^6GhXt%fnbbTO-f8A_#60ECLuLu^CtvfrYSGg1NDzlxiO=mDp;MYSq>eiStAwFvQd& zjVPR?m_(s?pJ=35!y``wh7?I9J?bw3`Tq@4x8YIRme^`it8MGOP2%bWH@uNrV$#=1 z+Y(z@yWacmZY%GVwn_=sDs7drR{3`Una^L^yz+-Es1b!ZU058DDb?~!&QL2#Z oAS22G!~c_zJcDYPm{P9n|3g3Kbm6R49U+;ArlZs0bUa)gs}t}KC;$Ke literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/4869e00fbc61867ccab5b83187c3a146ecb36775 b/huff0/fuzz/decompress/corpus/4869e00fbc61867ccab5b83187c3a146ecb36775 new file mode 100644 index 0000000000000000000000000000000000000000..8bcb89b90b81de30ef03a273aa6635dee769ecfb GIT binary patch literal 817 zcmV-11J3+3Fa|M)T>t?fQF^MwT)Iam`X$JrJSeq!GFaMZcB?xxGc#e!UwH-aQ}AUc zxL4o^ezOJU+Qgv&36iA;Rn8bUvXFD8w=QoEDE9Bua$Y z@l|5I%+iaaQ7VZmQe!5PsnU#7ZX;(Tnl@$&<~h#=6&N1lhS(vFssk+3raHiy1U;~F zVKJfP3uqRNN4b<{i?`mI>T37i6;r%5rPvtIZ-yGqiu=!hHo^x+SZCWN8YmbXP@%#> z!**AXZQKkqf&AeMZ@PON*NtmDKQ*>UYH=Uuw?XbEHO}@b4EK_z6#gWSp9C7Ipw<6d zqz@oqamIO#LW`Dsr0-t=W-;)8KuOGDP)CYHY?2wR5DvIktaM`sSrNucS?3FxdV@YJt1%YHir87Eomof5Jdd;L=I-}>_FmgrYA+R$To^JcnwE1um7X`| zT&6~1#uTzLo0Y~CdBQV1Rj$xd;{48*^Z%da+O$oZkRVxlUctj$$e} z;6VfT|NsBbFmMMb7$5)xL@+WSNT8iksZ5H&Ay5|uASg8g*89i5KCPK*{3&2D^klKt v8`n(h&NWxMv(|d=t+n1;7XX3(|Nme9-;zK9nyUbZ2POt?fQF^MwT)Iam`X$JrJSeq!GFaMZcB?xxGc#e!UwH-aQ}AUc zxL4o^ezOJUx&XQW$pGQ0a)p)>=XbW8|Nku4rfu4U1j*6^D*%Z25K9UXZ*qa+a>+!O z@dApoaTHybk;%m97*$rqWQ70|U*P9Xf5JER?%&O?#yYd!T5or|%8{t=qA>S%6jQ+g z4;r}t|Nno6fjdCK009^vf{_710_~JaWl{_dfx0LFL8%e2-ar2JY0XsQPXUXeCyTY- zxMo^+uDQ~kwbpxYt@Ylz00{j5|Nrv;mIMmWTm?8hFkt`^2si))2pKE{6D1M>&@7gV z&Yk|Gu_1h8y3>$#zL2Rm=)8cfe4aeN+-JV?YE5IvMuhO@2r+74rFHTPlee&1*BwVkE*QW438A)}&c zIprqt@PiG3B&~j0F}22CyVRk}>-`_UeQJFW#0Vs4$@AoKL0ajX9SiDb6S* zW=tU~B(qs*UZ9fMf{8rg*-C|Y!ZUMzRIbocws3xhbhdKjjKqv74B411m?u2Xk80C4 zZQ{^?1j*6^D;E(IB&b3kq?gz!CnCQ`nOvY)Z0726=eFq5eHllhX=Aovp7W%rh(JA| z4i?>4KlaT9)+FeGl?#j7#GwHRlBEY$v*ddOp11!^~ zI>4F)J+N|NF`?uOXcmn}xs+y$x89oSYWLn1Q@k~$*ci}nh8oU_`_F$i!UslJXWJ$k zC>R`2p~6AKc2|#W+zc~;{NW34x_cbgjcYtVHMU4i5WWEX literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/542e60846887c634378dd1b29d3ce29b90e13f99-6 b/huff0/fuzz/decompress/corpus/542e60846887c634378dd1b29d3ce29b90e13f99-6 new file mode 100644 index 0000000000..b4821c9d5b --- /dev/null +++ b/huff0/fuzz/decompress/corpus/542e60846887c634378dd1b29d3ce29b90e13f99-6 @@ -0,0 +1 @@ +eE_ \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/54fbf0fc6ed4319b2c0986f26c3a142b194d9ca3-4 b/huff0/fuzz/decompress/corpus/54fbf0fc6ed4319b2c0986f26c3a142b194d9ca3-4 new file mode 100644 index 0000000000000000000000000000000000000000..5e2b66dc6a3ef1c19f76994fa039c6d2338379c4 GIT binary patch literal 3 KcmZn`VgLXEumF|- literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/5889a9b84fb69d2913d474a381ddceb217137d06-1 b/huff0/fuzz/decompress/corpus/5889a9b84fb69d2913d474a381ddceb217137d06-1 new file mode 100644 index 0000000000000000000000000000000000000000..d9fd093db0604dee471ddbb7927c638afa734597 GIT binary patch literal 100238 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 literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/5b85e7d11f14ff2864b2c56e03188f15e52fd9bb-8 b/huff0/fuzz/decompress/corpus/5b85e7d11f14ff2864b2c56e03188f15e52fd9bb-8 new file mode 100644 index 0000000000..480a005fed --- /dev/null +++ b/huff0/fuzz/decompress/corpus/5b85e7d11f14ff2864b2c56e03188f15e52fd9bb-8 @@ -0,0 +1 @@ +eE@ \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/649971daa4b93c4ffe6190415f22569030f2300a-3 b/huff0/fuzz/decompress/corpus/649971daa4b93c4ffe6190415f22569030f2300a-3 new file mode 100644 index 0000000000000000000000000000000000000000..221b63d33bb04a61f16afc1e9310e273851433f3 GIT binary patch literal 34 qcmY$`CBv}q+ML*wxi#l3j;Ba7G)Sv3$T27|c;yLM9lc)Srw9PxGz-lD literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/6903fccf79c27b4cffe21090d03c6879cbb72274-6 b/huff0/fuzz/decompress/corpus/6903fccf79c27b4cffe21090d03c6879cbb72274-6 new file mode 100644 index 0000000000000000000000000000000000000000..2059ec5edc967dc46ad6b71158d1bf957ef3c446 GIT binary patch literal 10 RcmdGG4gFd_g2uu{O0`w-|5Bme*a literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/6a88ce804bf81bb01a233527595b27668cca331d-1 b/huff0/fuzz/decompress/corpus/6a88ce804bf81bb01a233527595b27668cca331d-1 new file mode 100644 index 0000000000000000000000000000000000000000..16904e3aee171ff701c668488d0e225baeabf662 GIT binary patch literal 131073 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�H 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 literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/6c16b84194ac60c492487044ed3ee744c506faf6-2 b/huff0/fuzz/decompress/corpus/6c16b84194ac60c492487044ed3ee744c506faf6-2 new file mode 100644 index 0000000000..c33ede6f5f --- /dev/null +++ b/huff0/fuzz/decompress/corpus/6c16b84194ac60c492487044ed3ee744c506faf6-2 @@ -0,0 +1 @@ +FD/JT,oVsE  \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/6cdd7b3f70c2448bb4f666c8bc5aa6a890a34f7a-3 b/huff0/fuzz/decompress/corpus/6cdd7b3f70c2448bb4f666c8bc5aa6a890a34f7a-3 new file mode 100644 index 0000000000000000000000000000000000000000..bca304b2106ccf27b0f4bccf102511aae4805227 GIT binary patch literal 27 acmWe|TylnC6MtdSb%yu*_X;sGAOHY>wFavI literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/73e369adcad522a27653be74fe4a9ff8d30ea19e-7 b/huff0/fuzz/decompress/corpus/73e369adcad522a27653be74fe4a9ff8d30ea19e-7 new file mode 100644 index 0000000000..cf4faddf2b --- /dev/null +++ b/huff0/fuzz/decompress/corpus/73e369adcad522a27653be74fe4a9ff8d30ea19e-7 @@ -0,0 +1 @@ +deEd \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/7f1623aee483c22124f8ecd37ad62c5acc932304-4 b/huff0/fuzz/decompress/corpus/7f1623aee483c22124f8ecd37ad62c5acc932304-4 new file mode 100644 index 0000000000000000000000000000000000000000..3e04cacac88b40d366fc6cc47c0330ec5d8c1e17 GIT binary patch literal 39 ucmb1&;*RFN-DTpb^61^-WxcX(djBoY_bq1qyQwCh@yQ$k2Fvq6iX8w{E)iP* literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/87e26a4d86b6f1ffba523d73bdf7479715faa6c0-5 b/huff0/fuzz/decompress/corpus/87e26a4d86b6f1ffba523d73bdf7479715faa6c0-5 new file mode 100644 index 0000000000000000000000000000000000000000..188474c0c3344b2403d0dab9f10d528fb62fe1a9 GIT binary patch literal 10 Pcmd7Z-yYJ2wLd11G~%b;gEMj0Y7&;>w=7x#%Ch>~%CmCqJzC JyDJalQvizu5dr`J literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/94b18a8ac5c2cd3b040754e236dadeae895b3dae-13 b/huff0/fuzz/decompress/corpus/94b18a8ac5c2cd3b040754e236dadeae895b3dae-13 new file mode 100644 index 0000000000000000000000000000000000000000..0ffa78f556fa27ea105edcd1f78593d54c60e532 GIT binary patch literal 10 RcmbObqNKpUz#zcD000WU0XF~u literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/9835e8bdcd54890f9ff4dfdb634b5a6dc254f09e-2 b/huff0/fuzz/decompress/corpus/9835e8bdcd54890f9ff4dfdb634b5a6dc254f09e-2 new file mode 100644 index 0000000000..3ce84e26ab --- /dev/null +++ b/huff0/fuzz/decompress/corpus/9835e8bdcd54890f9ff4dfdb634b5a6dc254f09e-2 @@ -0,0 +1 @@ +pǷ4(NZ@Dp?)Uzs֗I5NsZ뜳Y"r[Lòe"t(eK5HEV&}N9-ae#t(eK \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/9f3d543656b54b38ac84f009a626bdfb074393cb-2 b/huff0/fuzz/decompress/corpus/9f3d543656b54b38ac84f009a626bdfb074393cb-2 new file mode 100644 index 0000000000000000000000000000000000000000..26285dc066a1a9dc8c8adfcf7496a8bb62e74aa2 GIT binary patch literal 18 ZcmZ3$&etL{Lo7n=eo;6V7lRu+Hvlsd1eO2* literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/a70fe33ef1a23361593e5d25ed782c2b4ee22813-1 b/huff0/fuzz/decompress/corpus/a70fe33ef1a23361593e5d25ed782c2b4ee22813-1 new file mode 100644 index 0000000000000000000000000000000000000000..671f84ae85958bcc2180f25b322862f83919572d GIT binary patch literal 18 NcmWewSkHh0qyQ7`0ZRY? literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/ab076dfc3f75d3a603806cbf3ab318bab8575591-7 b/huff0/fuzz/decompress/corpus/ab076dfc3f75d3a603806cbf3ab318bab8575591-7 new file mode 100644 index 0000000000..baaa094fa3 --- /dev/null +++ b/huff0/fuzz/decompress/corpus/ab076dfc3f75d3a603806cbf3ab318bab8575591-7 @@ -0,0 +1 @@ +eeEE \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/ac8feec2af44db5a6eafff09781dc9c922fc1380-4 b/huff0/fuzz/decompress/corpus/ac8feec2af44db5a6eafff09781dc9c922fc1380-4 new file mode 100644 index 0000000000..3c731a2bdf --- /dev/null +++ b/huff0/fuzz/decompress/corpus/ac8feec2af44db5a6eafff09781dc9c922fc1380-4 @@ -0,0 +1 @@ + 2021222324252$272829[Cæ% \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/aeb91ce9a4b3547b57a3ab02add1500b6d6447a8-4 b/huff0/fuzz/decompress/corpus/aeb91ce9a4b3547b57a3ab02add1500b6d6447a8-4 new file mode 100644 index 0000000000000000000000000000000000000000..5b2f3511eb7cd5bdf28e63d55b8a9e6d44f0dbd4 GIT binary patch literal 28 gcmb1&;*RFN-DTpb^61@S2A*ZTmggCt%wY#p0Gd<_r~m)} literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/af04c0ac0c9608e913ab0f27a1426630adc72f57-8 b/huff0/fuzz/decompress/corpus/af04c0ac0c9608e913ab0f27a1426630adc72f57-8 new file mode 100644 index 0000000000..ec52ad3387 --- /dev/null +++ b/huff0/fuzz/decompress/corpus/af04c0ac0c9608e913ab0f27a1426630adc72f57-8 @@ -0,0 +1 @@ +eEEEe \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/b8fceb6a5aa974b33d2dc94526c96a3d46633e89-4 b/huff0/fuzz/decompress/corpus/b8fceb6a5aa974b33d2dc94526c96a3d46633e89-4 new file mode 100644 index 0000000000..c527841dc9 --- /dev/null +++ b/huff0/fuzz/decompress/corpus/b8fceb6a5aa974b33d2dc94526c96a3d46633e89-4 @@ -0,0 +1 @@ +B3 \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/ba01d6cf0fb9c71370ef35d6c6cebb1fa75018f6-5 b/huff0/fuzz/decompress/corpus/ba01d6cf0fb9c71370ef35d6c6cebb1fa75018f6-5 new file mode 100644 index 0000000000000000000000000000000000000000..feb667e36aa55ad0968ec5b9d24e6cd4e3b6c30b GIT binary patch literal 10 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 AdH?_b literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/c3793d6b45cba4a91dc18770c1c2a9946d334258-1 b/huff0/fuzz/decompress/corpus/c3793d6b45cba4a91dc18770c1c2a9946d334258-1 new file mode 100644 index 0000000000000000000000000000000000000000..684c008dc5d0cee66fe0b51441696a52b877f9c8 GIT binary patch literal 86784 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

}Dae0VIe3$9Z?JSz(qZ&NI+Jo~yI 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 literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/c9d84a90c00d2393354dd80dbb9d26e8edd387e0-10 b/huff0/fuzz/decompress/corpus/c9d84a90c00d2393354dd80dbb9d26e8edd387e0-10 new file mode 100644 index 0000000000..bb912c08df --- /dev/null +++ b/huff0/fuzz/decompress/corpus/c9d84a90c00d2393354dd80dbb9d26e8edd387e0-10 @@ -0,0 +1 @@ +. \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/d06c109bc27d8914b330b99ac8262cbceda79b4f-1 b/huff0/fuzz/decompress/corpus/d06c109bc27d8914b330b99ac8262cbceda79b4f-1 new file mode 100644 index 0000000000..f3400c003a --- /dev/null +++ b/huff0/fuzz/decompress/corpus/d06c109bc27d8914b330b99ac8262cbceda79b4f-1 @@ -0,0 +1 @@ +Z [j<<<< \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/d1f80ef35b58a2366e5b133473dc273f3740d57b-7 b/huff0/fuzz/decompress/corpus/d1f80ef35b58a2366e5b133473dc273f3740d57b-7 new file mode 100644 index 0000000000..d4f4625d54 --- /dev/null +++ b/huff0/fuzz/decompress/corpus/d1f80ef35b58a2366e5b133473dc273f3740d57b-7 @@ -0,0 +1 @@ + eEeEeE \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/d2e694ef05e527e478769df82b0f65fb3b442a45-1 b/huff0/fuzz/decompress/corpus/d2e694ef05e527e478769df82b0f65fb3b442a45-1 new file mode 100644 index 0000000000000000000000000000000000000000..e5a5b6cbb3cf9f72410e0a96e8b65f8a96d77211 GIT binary patch literal 506 zcmV-k% z3^=!5=y98)YwjLDsabWpC(+8fFbQSTYE84P)UZy|lyp)YnN`i!x%EPi+Zu=fH+eVRdFZ8(W zPqONiXk}fPgtBS1rnwF4G)+mVNL91-Ug*%Gm33hfN;*wcB-`HY2u6+_MWIVOw_fPm z-2CyAnpNkMXk}fPgtBR!W?QLYou(=2q&PCGnyqu|g}%+rAAj2xy0mlag}%+rS!#7k zw7M_}Wz#yfmAX!oq!dT0nyqu|^=)p>-?kAT0T)D2AVLHQD&Thw4Jre3z#^*p6*m%G z(bLLXaD1%2@vrHRXm}6i5uXAr>H9x^@)7?w5cB`-^ArAn8~W~W&%yW!42#F?<a?`TtBsq+lrZ`=s@uJy6+PU>YkJ}twbNBd3 w&8pKqiB{HyNhq6EYnpAPhIN{zq?6*vtZKH-trvRS=IENc$4_e8VgezFj}itAIsgCw literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/da39a3ee5e6b4b0d3255bfef95601890afd80709-2 b/huff0/fuzz/decompress/corpus/da39a3ee5e6b4b0d3255bfef95601890afd80709-2 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/huff0/fuzz/decompress/corpus/db3bda50ea81814214d6e6c511736731a44d7b9a-2 b/huff0/fuzz/decompress/corpus/db3bda50ea81814214d6e6c511736731a44d7b9a-2 new file mode 100644 index 0000000000000000000000000000000000000000..4b11d36b865d059bb25dc9651274d18a57e5cb42 GIT binary patch literal 76 zcmeYgTDV1t0UbP;UUJ)8M>Db8Cv4)Bd-r1Ic%-B%c?PAWg?s(JTT-sLbV`+1?S(x} Ti(Fo5ojQJKU3cd0RotxrUY8v# literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/ddf623fc42f256fbee77d98e0c341d8f8e967d6f-6 b/huff0/fuzz/decompress/corpus/ddf623fc42f256fbee77d98e0c341d8f8e967d6f-6 new file mode 100644 index 0000000000000000000000000000000000000000..9c557aa056cea0de2a8b912d53415964c1e08d32 GIT binary patch literal 13 Ucmd=7km~whfZ_iq1_p^o04O2_pa1{> literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/e7416101c16988f1aa4ad09e2e0ea26698a69fd5-6 b/huff0/fuzz/decompress/corpus/e7416101c16988f1aa4ad09e2e0ea26698a69fd5-6 new file mode 100644 index 0000000000..be7d610d15 --- /dev/null +++ b/huff0/fuzz/decompress/corpus/e7416101c16988f1aa4ad09e2e0ea26698a69fd5-6 @@ -0,0 +1 @@ + 202122222231222324252$272829[ \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/eae606b8c2871f94da1b8190d095e686e9f2eebc-5 b/huff0/fuzz/decompress/corpus/eae606b8c2871f94da1b8190d095e686e9f2eebc-5 new file mode 100644 index 0000000000000000000000000000000000000000..50170825f41456d86b816c6a50ba3f4472783586 GIT binary patch literal 90 zcmazza4hk!{N8W>F#zMswb$aUpKD5RCog<*Aae556&(f_9h}-fY0g=`C4Uct&yiI< hc4EPL?vEY>NzC+o#$2`1MPb5IkwCB6oh~X`N&vm1GqV5y literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/ec2c23b0ecfb55422bb7376b9de762f0cb2daabc-5 b/huff0/fuzz/decompress/corpus/ec2c23b0ecfb55422bb7376b9de762f0cb2daabc-5 new file mode 100644 index 0000000000000000000000000000000000000000..11dcb02064944079a2b81adee1e7d1d9767d6dbb GIT binary patch literal 90 zcmazza4hk!{N8W>p#aYK|DW;V+H3LF&ox(c7+!R6YX77&XZe==Jq$iaR`uA41?#y# kdJrTr!Sfk&)k+tI2~R}=y=Hg1SU;Cn(NdaJo_2pO0Luw9YybcN literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/ee5e3543ec53aa392b7485e16163661dc45c61b8-3 b/huff0/fuzz/decompress/corpus/ee5e3543ec53aa392b7485e16163661dc45c61b8-3 new file mode 100644 index 0000000000000000000000000000000000000000..94008ebe5f13d384581eb65f1e2ddaf0cc89bda4 GIT binary patch literal 18 McmWe|T*80~01v|e_5c6? literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/f317ba679fa2f7020fd501a5ceb78a12da06a817-4 b/huff0/fuzz/decompress/corpus/f317ba679fa2f7020fd501a5ceb78a12da06a817-4 new file mode 100644 index 0000000000000000000000000000000000000000..84536c0eb9e2e663d76142c0eff307ac4c07cc86 GIT binary patch literal 90 zcmazza4hk!{N8W>;ehet+H3LF&ow2ulNa7R5IK43iVlN|4o>Z#bmlDIlD~(+=g6ua qJF#Fr_eT$cBxZU(W3F21qA=m9NTAp3P8Ss|rAg&!_vZ%iJpurWt1rd? literal 0 HcmV?d00001 diff --git a/huff0/fuzz/decompress/corpus/fa0258e24eecdba8b3e9355740c458120b4babce-7 b/huff0/fuzz/decompress/corpus/fa0258e24eecdba8b3e9355740c458120b4babce-7 new file mode 100644 index 0000000000..d7bae711d6 --- /dev/null +++ b/huff0/fuzz/decompress/corpus/fa0258e24eecdba8b3e9355740c458120b4babce-7 @@ -0,0 +1 @@ + 2021222222232222232222314252$2798 \ No newline at end of file diff --git a/huff0/fuzz/decompress/corpus/fab8c92bc4068e05f10d9b1978a34bfd5a0c12da-4 b/huff0/fuzz/decompress/corpus/fab8c92bc4068e05f10d9b1978a34bfd5a0c12da-4 new file mode 100644 index 0000000000..b22e073397 --- /dev/null +++ b/huff0/fuzz/decompress/corpus/fab8c92bc4068e05f10d9b1978a34bfd5a0c12da-4 @@ -0,0 +1 @@ + eEfg \ No newline at end of file diff --git a/huff0/fuzz/run-compress.cmd b/huff0/fuzz/run-compress.cmd new file mode 100644 index 0000000000..5b4b06405a --- /dev/null +++ b/huff0/fuzz/run-compress.cmd @@ -0,0 +1,4 @@ +cd .. +go-fuzz-build -tags=compress github.com/klauspost/compress/huff0 +cd fuzz +go-fuzz -bin=../huff0-fuzz.zip -workdir=compress -procs=4 diff --git a/huff0/fuzz/run-decompress.cmd b/huff0/fuzz/run-decompress.cmd new file mode 100644 index 0000000000..3f96532a81 --- /dev/null +++ b/huff0/fuzz/run-decompress.cmd @@ -0,0 +1,4 @@ +cd .. +go-fuzz-build -tags=decompress github.com/klauspost/compress/huff0 +cd fuzz +go-fuzz -bin=../huff0-fuzz.zip -workdir=decompress -procs=4 diff --git a/huff0/fuzz_compress.go b/huff0/fuzz_compress.go new file mode 100644 index 0000000000..7f63e7b7e2 --- /dev/null +++ b/huff0/fuzz_compress.go @@ -0,0 +1,27 @@ +// +build gofuzz,compress + +package huff0 + +import "bytes" + +func Fuzz(data []byte) int { + comp, _, err := Compress1X(data, nil) + if err == ErrIncompressible || err == ErrUseRLE || err == ErrTooBig { + return 0 + } + if err != nil { + panic(err) + } + s, remain, err := ReadTable(comp, nil) + if err != nil { + panic(err) + } + out, err := s.Decompress1X(remain) + if err != nil { + panic(err) + } + if !bytes.Equal(out, data) { + panic("decompression mismatch") + } + return 1 +} diff --git a/huff0/fuzz_decompress.go b/huff0/fuzz_decompress.go new file mode 100644 index 0000000000..8403a43503 --- /dev/null +++ b/huff0/fuzz_decompress.go @@ -0,0 +1,16 @@ +// +build gofuzz,decompress + +package huff0 + +func Fuzz(data []byte) int { + s, rem, err := ReadTable(data, nil) + if err != nil { + return 0 + } + _, err1 := s.Decompress1X(rem) + _, err4 := s.Decompress4X(rem, BlockSizeMax) + if err1 != nil && err4 != nil { + return 0 + } + return 1 +} diff --git a/huff0/highbit_go19.go b/huff0/highbit_go19.go new file mode 100644 index 0000000000..9d54ba9cbf --- /dev/null +++ b/huff0/highbit_go19.go @@ -0,0 +1,9 @@ +// +build go1.9 + +package huff0 + +import "math/bits" + +func highBit32(val uint32) (n uint32) { + return uint32(bits.Len32(val) - 1) +} diff --git a/huff0/highbit_old.go b/huff0/highbit_old.go new file mode 100644 index 0000000000..5da31b1c5a --- /dev/null +++ b/huff0/highbit_old.go @@ -0,0 +1,18 @@ +// +build !go1.9 + +package huff0 + +var deBruijnClz = [...]uint8{0, 9, 1, 10, 13, 21, 2, 29, + 11, 14, 16, 18, 22, 25, 3, 30, + 8, 12, 20, 28, 15, 17, 24, 7, + 19, 27, 23, 6, 26, 5, 4, 31} + +// highBit32 returns the highest set bit +func highBit32(v uint32) (n uint32) { + v |= v >> 1 + v |= v >> 2 + v |= v >> 4 + v |= v >> 8 + v |= v >> 16 + return uint32(deBruijnClz[(v*0x07C4ACDD)>>27]) +} diff --git a/huff0/huff0.go b/huff0/huff0.go new file mode 100644 index 0000000000..2f2df1688b --- /dev/null +++ b/huff0/huff0.go @@ -0,0 +1,238 @@ +package huff0 + +import ( + "errors" + "fmt" + "math" + + "github.com/klauspost/compress/fse" +) + +const ( + maxSymbolValue = 255 + + // zstandard limits tablelog to 11, see: + // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#huffman-tree-description + tableLogMax = 11 + tableLogDefault = 11 + minTablelog = 5 + huffNodesLen = 512 + + // BlockSizeMax is maximum input size for a single block uncompressed. + BlockSizeMax = 128 << 10 +) + +var ( + // ErrIncompressible is returned when input is judged to be too hard to compress. + ErrIncompressible = errors.New("input is not compressible") + + // ErrUseRLE is returned from the compressor when the input is a single byte value repeated. + ErrUseRLE = errors.New("input is single value repeated") + + // ErrTooBig is return if input is too large for a single block. + ErrTooBig = errors.New("input too big") +) + +type ReusePolicy uint8 + +const ( + // ReusePolicyAllow will allow reuse if it produces smaller output. + ReusePolicyAllow ReusePolicy = iota + + // ReusePolicyPrefer will re-use aggressively if possible. + // This will not check if a new table will produce smaller output, + // except if the current table is impossible to use or + // compressed output is bigger than input. + ReusePolicyPrefer + + // ReusePolicyNone will disable re-use of tables. + // This is slightly faster than ReusePolicyAllow but may produce larger output. + ReusePolicyNone +) + +type Scratch struct { + count [maxSymbolValue + 1]uint32 + + // Per block parameters. + // These can be used to override compression parameters of the block. + // Do not touch, unless you know what you are doing. + + // Out is output buffer. + // If the scratch is re-used before the caller is done processing the output, + // set this field to nil. + // Otherwise the output buffer will be re-used for next Compression/Decompression step + // and allocation will be avoided. + Out []byte + + // OutTable will contain the table data only, if a new table has been generated. + // Slice of the returned data. + OutTable []byte + + // OutData will contain the compressed data. + // Slice of the returned data. + OutData []byte + + // MaxSymbolValue will override the maximum symbol value of the next block. + MaxSymbolValue uint8 + + // TableLog will attempt to override the tablelog for the next block. + // Must be <= 11. + TableLog uint8 + + // Reuse will specify the reuse policy + Reuse ReusePolicy + + br byteReader + symbolLen uint16 // Length of active part of the symbol table. + maxCount int // count of the most probable symbol + clearCount bool // clear count + actualTableLog uint8 // Selected tablelog. + prevTable cTable // Table used for previous compression. + cTable cTable // compression table + dt dTable // decompression table + nodes []nodeElt + tmpOut [4][]byte + fse *fse.Scratch + huffWeight [maxSymbolValue + 1]byte +} + +func (s *Scratch) prepare(in []byte) (*Scratch, error) { + if len(in) > BlockSizeMax { + return nil, ErrTooBig + } + if s == nil { + s = &Scratch{} + } + if s.MaxSymbolValue == 0 { + s.MaxSymbolValue = maxSymbolValue + } + if s.TableLog == 0 { + s.TableLog = tableLogDefault + } + if s.TableLog > tableLogMax { + return nil, fmt.Errorf("tableLog (%d) > maxTableLog (%d)", s.TableLog, tableLogMax) + } + if s.clearCount && s.maxCount == 0 { + for i := range s.count { + s.count[i] = 0 + } + s.clearCount = false + } + if cap(s.Out) == 0 { + s.Out = make([]byte, 0, len(in)) + } + s.Out = s.Out[:0] + if cap(s.cTable) < maxSymbolValue+1 { + s.cTable = make([]cTableEntry, 0, maxSymbolValue+1) + } + s.cTable = s.cTable[:0] + if cap(s.prevTable) < maxSymbolValue+1 { + s.prevTable = make([]cTableEntry, 0, maxSymbolValue+1) + } + s.OutTable = nil + s.OutData = nil + if cap(s.nodes) < huffNodesLen+1 { + s.nodes = make([]nodeElt, 0, huffNodesLen+1) + } + if s.fse == nil { + s.fse = &fse.Scratch{} + } + s.nodes = s.nodes[:0] + s.br.init(in) + + return s, nil +} + +type cTable []cTableEntry + +func (c cTable) write(s *Scratch) error { + var ( + // precomputed conversion table + bitsToWeight [tableLogMax + 1]byte + huffLog = s.actualTableLog + // last weight is not saved. + maxSymbolValue = uint8(s.symbolLen - 1) + huffWeight = s.huffWeight[:256] + ) + const ( + maxFSETableLog = 6 + ) + // convert to weight + bitsToWeight[0] = 0 + for n := uint8(1); n < huffLog+1; n++ { + bitsToWeight[n] = huffLog + 1 - n + } + + // Acquire histogram for FSE. + hist := s.fse.Histogram() + hist = hist[:256] + for i := range hist[:16] { + hist[i] = 0 + } + for n := uint8(0); n < maxSymbolValue; n++ { + v := bitsToWeight[c[n].nBits] & 15 + huffWeight[n] = v + hist[v]++ + } + + // FSE compress if feasible. + if maxSymbolValue >= 2 { + huffMaxCnt := uint32(0) + huffMax := uint8(0) + for i, v := range hist[:16] { + if v == 0 { + continue + } + huffMax = byte(i) + if v > huffMaxCnt { + huffMaxCnt = v + } + } + s.fse.HistogramFinished(huffMax, int(huffMaxCnt)) + s.fse.TableLog = maxFSETableLog + b, err := fse.Compress(huffWeight[:maxSymbolValue], s.fse) + if err == nil && len(b) < int(s.symbolLen>>1) { + s.Out = append(s.Out, uint8(len(b))) + s.Out = append(s.Out, b...) + return nil + } + } + // write raw values as 4-bits (max : 15) + if maxSymbolValue > (256 - 128) { + // should not happen : likely means source cannot be compressed + return ErrIncompressible + } + op := s.Out + // special case, pack weights 4 bits/weight. + op = append(op, 128|(maxSymbolValue-1)) + // be sure it doesn't cause msan issue in final combination + huffWeight[maxSymbolValue] = 0 + for n := uint16(0); n < uint16(maxSymbolValue); n += 2 { + op = append(op, (huffWeight[n]<<4)|huffWeight[n+1]) + } + s.Out = op + return nil +} + +// estimateSize returns the estimated size in bytes of the input represented in the +// histogram supplied. +func (c cTable) estimateSize(hist []uint32) int { + nbBits := uint32(7) + for i, v := range c[:len(hist)] { + nbBits += uint32(v.nBits) * hist[i] + } + return int(nbBits >> 3) +} + +// minSize returns the minimum possible size considering the shannon limit. +func (s *Scratch) minSize(total int) int { + nbBits := float64(7) + fTotal := float64(total) + for _, v := range s.count[:s.symbolLen] { + n := float64(v) + if n > 0 { + nbBits += math.Log2(fTotal/n) * n + } + } + return int(nbBits) >> 3 +}