diff --git a/deflate-fuzz-target/.gitignore b/deflate-fuzz-target/.gitignore new file mode 100644 index 0000000..77d3844 --- /dev/null +++ b/deflate-fuzz-target/.gitignore @@ -0,0 +1,2 @@ +out +target diff --git a/deflate-fuzz-target/Cargo.lock b/deflate-fuzz-target/Cargo.lock new file mode 100644 index 0000000..f23c2eb --- /dev/null +++ b/deflate-fuzz-target/Cargo.lock @@ -0,0 +1,184 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "adler32" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "afl" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "xdg 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ansi_term" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "atty" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bitflags" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "byteorder" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "cc" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "clap" +version = "2.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "deflate" +version = "0.8.2" +dependencies = [ + "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "deflate-fuzz-target" +version = "0.1.0" +dependencies = [ + "afl 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "deflate 0.8.2", + "miniz_oxide 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libc" +version = "0.2.65" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "miniz_oxide" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-width" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "vec_map" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "xdg" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[metadata] +"checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" +"checksum afl 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e27ab52ba6f9254a0e6e48481e07fca75dd32a3bd2c8bfd407beb4f308521938" +"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +"checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" +"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" +"checksum cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)" = "aa87058dce70a3ff5621797f1506cb837edd02ac4c0ae642b4542dce802908b8" +"checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" +"checksum libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)" = "1a31a0627fdf1f6a39ec0dd577e101440b7db22672c0901fe00a9a6fbb5c24e8" +"checksum miniz_oxide 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6f3f74f726ae935c3f514300cc6773a0c9492abc5e972d42ba0c0ebb88757625" +"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" +"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +"checksum unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7007dbd421b92cc6e28410fe7362e2e0a2503394908f417b68ec8d1c364c4e20" +"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" +"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" +"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +"checksum xdg 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" diff --git a/deflate-fuzz-target/Cargo.toml b/deflate-fuzz-target/Cargo.toml new file mode 100644 index 0000000..facaae5 --- /dev/null +++ b/deflate-fuzz-target/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "deflate-fuzz-target" +version = "0.1.0" +authors = ["Andrew Champion "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +afl = "0.5" +deflate = { path = "../" } +miniz_oxide = "0.3" diff --git a/deflate-fuzz-target/in/dump.bin b/deflate-fuzz-target/in/dump.bin new file mode 100644 index 0000000..968ad0c --- /dev/null +++ b/deflate-fuzz-target/in/dump.bin @@ -0,0 +1,68 @@ +�ԯ�nP6F_Xr��no������u{l�������i^d��Y`��x�g\U�����~��������lkz�vX1$#%q����������ͽ����oX1,4*"%4�������������������������оį����������ǹ����θ������Q`oT)%A@>3&,Eb|��s�~[SEK3W�jcdD3\~������Ա��������ۥ|��J36Tw������ɺ��ษ��ʰ��������Νx����������������������Ƴ������ٶ��������ָ�����й���ʩ�������������������������������㽺�����������������~K)Dpy����|��pgf|y��ʿ��gWr}C2K`���ݵ����������[Mlu{�off>%L��������æ������������¯�����������֯������ȸêk]Q6Pw��zKs�������fT\[K[f��ϸ�ɹ����Ҫ��֘rq���������ͬrP=geN3'!CHMB]KFb�Q8GUeT1CT5K\PRUT���|y|di����´�T[JUN8=^��������ý������������Ŷ�������������Ъ�������ʹ���������ɿ��������ȯ����ٶ���������������������������󨓯�ѷ�����Ǵ��������������۱�cOCWwsm����q��|������λ��}`:hrg]������������ʹЕvZE*1O;@KI; O��Ũ����Ե�ǎ[BR����ں��������gUl�������Ѿ�����eY]P;.g��������������jMa|������������ϲh�����������Ŀ���KW������Ӣ����������ڶ���Ĵ���Ǿ����������������������������������ҷ������软���ǰ�thF=$**#6IF\UARfO@F->PQ~����ֹ����к�Ŵ�����񿤗����������������ֳ��������������������դ���������������������ҿ��·��մzT?OLTlz|�ǭ�����Ծ��������ݲ�ȶ�@F:Al}mYg�������shox���ң�iI^������~eiq}�������~����Ÿ��ve44)8@`�������Ļ���������O& <��������ɽ޸����������������ɣ����y���մ�����������edUify�Z~��w�[.3LE57YkTOX_GJD@8>\hd4#+?CL_u���hbx�ljo������m`D 7L|����������ȿ��������ڼ��������������ݻ����»��ĸƿ��ݯ���Ϯ���������������V|{����ĕ������������������������������˭�����Ĵ�����ƿ���ċG46[s�{��a>LjzvVO��γ�������m`NCm�����θ�����ŝ\`U>+,G[E;.>�������Ͱ����sFBD~��߼���zxs{��|YT����ħ���������zpj`[fpn����߼����������������������ʡ����ἵÿ����ĺ�Z3%R{������£�������������ж��{������λ������ۿ����������Ȭ������������仸���������ży]SQ!"C5Jnok�qVY^xD%24;;5# i���������ޙ������ɱ������޿���ԶȽ��Ͻ���qq���ǿ·�������������������������������������翧��Ƥz?!4a���ҽƳ��ļ�������������Ѻ���mTMDSQ[p���������^^���x���ftx_jTNPZq�\Kw�����ܶz����Ƶ���vPh������������������ȅ���c,6+"-N��������ү��������Ͽ�����������Ƹÿ�ɧ�������cw��jLPbGVk_eow~noXK)'C:;49>MduiMKYeh|gOfS=0-0jn\YOB`~��v�����~�a?3>O^c|�������������������ͷ�����¿�����Ӥ���������������Ż������������������ɖ���������y�����������������������¶���������Գ������������Ư��_-O~��{WFSt�fE_���������}z���ag����������ˢ��rIV]RG28Z?%1S�Ϋ���u�������iP@P����к������sf{�����������xs����uonaQs�����z~�����Ĵ���Ӹ�������ʖq���������ͣ������c9Qk����Ȟ���z�����������ׯ�p{����ǽ�wxd}��������������������������������������ý�U]?!)3YVObUQ]_L�rD*+TB>80U|~�������������������Ʊ��º������ͩ���Ҧ��n�����������������������������������ú������������ճ�|?2h��������������������ھ����fVRw�nCamw��ִ�u����������pR7Y��eGhj`EN@Fc�����ƴ����ͦx��zv��{����δ������ձ��������2%,Mmlo{���������Ы����������ǽ�������xr���ư�ٴ���\9]Y[Ui~�y|�nRku{bN/$1`@/ER]i�lrz����rNK=&%"UmEBhyT]���q_4 8@#;KA2HNn������������������������ڪ�����������Ͼ������Ά�������í��������������\WPVy���������Ƹ��ݙ�������������߻��ĺ�����ʹ������{���ͷ��ONXZe�}z^Tu������������rw���������������º����̝|B,%+L}���eJ;Aei��ا|��qe���������zzX]t�����±������~���skcs����ж������������ſ���Ƿ����������Ѻ���Ⱥ�����g^IO\z����æ|ujZj�������˲���ŧ���������ur�~kiq�Ӽ���������������Ͽ������Ѵ��������ڲ�=&/.(D94?Fnf^ICL_UJ[TC?O������������������������ض�ѱ���п�߱���}hU5Eg�����������������������������۾��������鼲ï�����ι~E30Ggt�������Ҳ���Ȣ�����ѳȠ���]:/ D^P\�������������yrxse_Vm�e3ODFE=-Ou���������̢�aV��^]b���gq��޿���ѳ�Ĥ����bTBA7!3FSTHY�|v��ӿ�����ٷù���������Ю�Ʒ������Ƥ����͌]NKAd�����������Ȗ���������pD/Kk������������~��������@+I��si��qi_Y��������¬��������C%BI7' (3kr���������µ������Ǥ��������ͫ�{���˳����K:dWTUj�ɹ�������Л���mEO0:[�bTf|����������om�jpl4/O[PFkfA$$7,)*#!)e����������ɳ���ɳ����ɽ�\L8Z���������ؾ�������ˍcA"=���ɦ����Ɲ��������ƿ����������������л�}�����̭����Լ���������z��~\4$I���3.-+Evop��������ZR^^������no���h���ʦ������ulb�{������������ԩ�pWlZQ{���������ũ������h--TW[,#-6KSerrUDI5;e�k|���������������������ᴆW@-9R^mcir��w������|bRVKHAQDY�t{���������������ΰ�����뺖�WB74%+@9KF6!(H^�������������ؿ����������������������������ʯ����̭��������������̥�����˻���⚢�����ź��������������خ`�������������Ѫ�����������|EH`v^x����rF3Vj�xlgj[SEK[�������¨����������������٩���[2,W�ſ�L $i��������������Ƃo��ʱ���ײ����������������}�����ӿ�ť��^7\��������������ۿ�����ª�����������PPWn�������������Ի�õ�������������͵��|zl����xx��������ٻ��ͭ������w��������Ġ���iA$B^_MB;I[{~��sx[+,A=J5i��õ�����������Խ�������w_l���������������Ÿ�����dcv������������Ӿ����ؼ�����������������չ�t[{��ȫ�������а��t�vjR\nr[--@8@��:Hb`6%+3U��~|��dlfXgbax�����������z������{v��������{����Ŭ����Ƌ��uXZWp������඾�������mYJ1""4*$=6:KM-,T@%$'Ia����ɿ������������\]c4%*:N����rj}�����ƛ��S'8O]Z5/..T������������н����������ǹӰsA6lt��������������ŚyV;G7Cbl`dfahXn�����������������������⯂j<3CXT,*62:Rw���������������������������ص���������ǵ����ư������������������l�������������������������������������ʚ�����pYt�}����ɱ�����ž�������wsbm{��䱡��d[f����K'/)'[����Ű��������������������?;\Um����/ MUXQr�������������������ǥv��������Ȱ���������������ʵm;ES{������������٭o52Qz���������Ӹ�bNRU�������������ǵ��ȸ����������������t`p{��ɻ�u~�������������В������������Ӭ���[4B56*)>If[GJ]N=-#,1<8MQGK��������干Ʒ�������������ͣ���Ȳ������������������ѹ������������������������������������׺����gMQit�hCR�����ٲ�y17_���ầ��UK3$8SPc��Õ��������bu���w����Ȕrl�������_r��{�������������������ӽ��������ޯ�����mx���eE, "#"Ohp��U^cN:KPheFFS������Ǡ�������������ܶ���߼��ȯ�xy�������������cB1-*=]ch���������س������������ͺ����淶��������������פ�t~����{\{����si�����ذ��Sor_gt{z�mO34e}���T4/?@]������Ч���°�Ų������Ũ�������_c�mo���ѫ��|L0k�������������Þ�����½���������ϭ�����׼�����������������ď�������ͧ��������e\z�˽�}jPBLd������������������ƽ����۷���ۥ���ĝ�����������������������֘���������ˢ�˅=#7:\[gsYB14?K@1.:&1d�������]km^enBAk������ӽ����Ӿ�����ϓ������������ı������������ɿ�汕�������ĵ���׷�����ѩ}O* FC4?*$!?TYl�nfbA/5a�����gNkm�rGJSsr�lq��hUWTN\MUnx���Ǫ���W;5GQWM88h�������������������տ��������ʫ��_bJ!%]{�_IUWHHQKCQNs�{�������ϵ���������䮥����������Ǚ�����������������ɢ��З���x����Ľ����ue�����dp^Mlst����ldW+@V���׵�������ұ������ո������˷uaA??p����ܪ�U(5=d���Ȯ���ù�����������������ı�ֳ��������âvr�����Ϳ��������į�������ź����`Yo����ŝXe~dW�����������������wb�������������������þ���Ã������������������ع���������ʸ�mZ_-)EiOQq>3%";M!':>,$O7JRg��zxxxnf�rd~����it�����ζ��Ԫ������֦�����������������������ս�ż���ϸ�������ş�����������խogX,  +6-V|�����ΊI\i|����¬������ %/'0b{�yhmfr���t������������ѹ����{f`o[3Xv��м������g72BQw��������ɘ��ӻ���Ĵ�����aD" ,66#2G($+4\esnH]w����������������������������׿��������������������Ϯ�����ȓbJRnt������ž�������������ܛE  4u�խ��¬�ΰ��R9W`Og������ܵ��� %%<6>Pv~u_gnjc��nk|�����������tdVHOS[o���������Í���u|r]_`����������ٹ��ɭ��yAB079('>DBH( 492%1B<|�’�xpjc`h����cSO@;N����Ú��xxk�����ؽ������p���������sXlmRx�����������������ҹ��°��ƻ���������kC7J7-7#0h����������������������������������������������ʶ�u��lG?C\XTT^]sx���������æ�����ɫ��ʽ�˴��������Ƶ����غ|B!,h������ơ����t���Ƕ������ЭdFG;Z����������nW_q�������������������������������ļ�����p+%]���_  +jkJ$S����{����o~�~EJKLR1)Z���¸ѿ��������յ����³������ʹ���˱��͊0  !O�oKNYa������~�����˵������ŧ�ͥ�������������������ĸ����������������ƪ����������ɹ�@!ASOGHC-2EE$:0 $DG?'Jx�wnwsccbs��~w��������Į��������������ǯ������Ŧ����������������������ņ�������ξ��������������ʾ��fPF]oqfruv����������bUS\v�������̹��D?($,=[f_;<)7]���������ո���ʨpL[c`X���k��ȵ����Ĵ��w���{i�����ȶ�ʭ������ݷt[P?@<*D���~lr_G2$& 8d�rn�jw�~����tQSRNhV@KUo{pQdo���������������������Ҵ�������̪�������������Ŭ������ū�Üno�������ԥxJFOgdpk[BF=UOMB!#+[qG=K]R9@MPbUQ[yroKl�������������������վ�����Ƨ}��������Ӻ���ڸ�����������ܫ���������ͽ������������ȰůoSMTiBB^W[Na���ʶ��[4Z}�������֭���=XT'NI=7$,6[��~f��������rz�qbG$!5i���Й�����ǿ����{}�qbr������Ȕ�������h2+"5ZH;L�����A$(#)/#7Qh~����>H[I`xv�ϥC #.[���ı�����������ű����zhhy�����~�j@?Zhau���������������������ҹ������ױ���rk`VKWD?Z2=/Co�������ش�������������������ɍw������ʪ��Ҭ�����{rwvwde{�gGEP`��������������������Ư�η������Ȩ������×yn]~�������Ī����u��ѿ���М���º���X>Gw������x}vo�}��Щ����������̽����������������Ȩ��tZD0(G��w0! Ajj>A`Tk~��z��n9 -% 1kdL6F]��Ǽ�ϫ����������������{������¸��ėF UW=AgoMh���~�����������̺���������������������������̢��������î�����ͮpn��������b7'!ONJ8B_qqfIL�t[t�ov���|���Ϋ��o}Z_}~����������������lo{d���İ�ɸ�������^OX>2$Va=Eu��ת�@ !)1rdk��{i]1&F[QVwi:0To��������p�ʡ�w�����Բoakz��us��̢�f>ZULX�������������������ﲥ���������������v|l?D`L<->7^�����������������������������������������Ÿ�����pObcPWV|wdlt������������޾�ׯ�����ǹ�����������Ȯ�������΋lk���ʹ��������׮������������Ϻ��Y9Ct������I;B[LE�����Ư���������������������涯�����~�z@DM|��yhB=BUQ9 +@Y`JD\��ʫ�ư��o1 >s{^B59e�����������������x����Ȧ����������ƹ�4'oX*0Pk^X`~��������Ů����������Ƶ�����Ǫ��������������������ʟ�������Ϫ{z��æ�ʹ�[TZE7GKVC6j��ʽ���X,984T��ZU\{�������ɗ0 + 6BJF0J����K\[w�����ʺ����������Ƿ������ѻ���������lc]+ +R{�{O1NZH^~�}mytY[������ĩ����ؿ���������������������������ɘzs{����ʪ�������ȴ�wb=M[E'=B=PJ,:K;#Ii154    1LEKm������Ƚ�����͹�����������ޱ�ͤ�m����ȿ������������¥���������������������������������ʿ�Ɏ�O" D�����ϵ�wytu������������p��ySHN;17'3'",QWX>DNg~�����w������_bxv�uw��������ejz~if���������������iU<$,1M����������c6E@"$"*-Av�����ӧ�hLD_�����E(>����Ю��������ù����qjd_@Bii}����m@?BQfz������������Ѽ���Ѥ������������������VN.>I=D,#,=\q�����ͻ������ҹ���������ѻ�ޱ����������Τ{|�����rQ7C\}���������z��������������������ؐ�������m[ML`h�����¬������Ѭ�����o��������������{NS`^o��������wo�Ʈ�����Ҽ��������ś�����š~����Ѥ�ī��A(`������Ѯ�yPWaUXaY@m����������ȥ������������ܹ���������Ӽ�����������ӳ����������Ƕ�������������������������ԡ����|A()A�����ӹ������������ӿ��Ҽ���xbdhdXTX9*2DH>X\s��������uESy��Ò�{}�����}q�~�������r{�v��w�����������uVpWRK,9����ȳ�ï���X7+*2)"9^[j��ç�lPh���Ƹ�T_���������������w}~��W-M1O���o\\vZCg��y����������������~q��ո��ǫ�˨������hG-6Fh���^XE":LOp������ľ�����������������������߰��������ktw���������������\MX��}�������ȷ����������½�����Əv~VA}����ì�������κ����������Թ����Ƴ��ҤmSBMRV�����§�����������t���������������ȸ������¦��z��J8Qf����ʯ�xkVieBKVdv���x�������ť]����˲���Ζ~��������ǭ��׶�������������ƫ�����Ƶ�i/_meh[P6+'Ni���R_feTe���ŭ��������������������������������Ӧ�vZHFa����ij�������ֳ�h8!(1((F5-DKJLOB/(@$ ;P[FA\pl�������˹���ش���������������Բ���}��������������ŵ�����칮���������������¿���������������δ���|b.A����������xI#+ $0_t���˦��������p.=~�ٿ�¬�����c]igODsw_XuuUeu|W[y���Ģ��zx�����sk[L`n|�������������������ݿ������ʷ�H4W������׷��˭����������Ӻ�������������α���{fv�����{ne�}������u�����������ȳ�krk�����”��[^lkg[+>p���|W<'Jrt�{zvphgu������ȹ�P5, F�����Ġ������WH>OaZ[\���j����������Ĩ�������ۻ�������ï����̽��ƣp@!2=Y������÷�º���x`F%3oiNS>p�����zhv����������������zu]WG%;@90=1$S4;4E\EH9#/&0I���¯�����fgl\?#(Iy�����½�����nX]|�������ظ���|��yhdWI_W82OG9=+"-3QWIDI_pkr����������ٱ�������������ƨ����Хy9,8HPn��ժ��tZX,(N{������������̻������������å���������Íy���ƴ��}s{�vk��vhN[h�������ê�������������������̶����������������༎���������ֺ��j|�����˸���ePVs�������ð�������tn��iNw��������㾂^8,o�����{WF?B?2I]�����od>88i��T`B.4-Qd����Ϻ~UNF3j����o��ѱ�~��������������v�������ɬ���������Ϳ����ɳ�������P#++#.96d�l�ͬ�������Ӻ������������������������������oMicrx��������ͽ�v=(CdtZ;I�iI7 "!"*3@\eVjvs��η�����ȸ�����������������ĭ�о������������ֲ������������̭�������ν�����������������θ���������s���������������ھ����Ш��ɲ�lj��forjZ/(1'136>@3Dd����������yw����������S75-*,.U^]5JA! 3?%HN=:!1CI1%Fi_j��������shTVZ,  Je���������e``zL2L���������̯�~���dv�qvGNILQbW634=*LC>n|loo|��������������ɧ���{o���ؼ�ƹ�����h.?ig��������i1'2SZ������iq�����}����������魋���˛���������������������tritl�����������������������������¬����ֽ¹��μ����Ƕð����������ux������w]b��Z>tvw���������̼��w{bUVa^w����²�����{_KP_����ʹ�cJ,+5GOVX����c/'\�t67# #4r{w������K"$MYu�����ȿ�d��˱���Ǽ�����������������������𬞯����Țutoux~O=B6K^qifKaq~�̪����������͸��������������Ǻ������������Ʈ������������Ȭ�aSCE7]����c=A +2M|aPA-$9NG) "'@hq��ªe���������̸���������������Ҽ������ڲ�������������Ӧ�Þ��ȿ��������ؽ���̳�������ѷ��������Է����������Ŭ����ƨ��������ζ�s��y~�_J6 *"-826[sTJ`k_`QZu~u���������������D5994(;L9TT3 !=;*,('/w��zQ]O@ex��ɻ���ɵ����w< '%LFHv��������sq��W:9Zv�����ɮ���ð��QfpSGmaQ`��cPZF47+Aa9;2O^`mxh|����ʯ�������ʨs3/$!*7@RK28CQH28GIXoW)3j���mWD>r��������ƹ����W03)&-VSBE\nu����®�}i:,59[k�������Į}mxjGi�nE'E7CHVnw;*+<2?E?CML:6d������������������澻��������Ê}b3';k�����������~a1"/Q[��������{xc96W��ƨ����������ƿ����������������佮������������ƹ�ֺ����������׼������������ϸ���Ыyxk�������ϰ���aNs����@S�sv������ٴtS=av{�������ɻǷ�^^aQ`���������̷�����x:2Kbg����_D// 'B0+f����vC%(9v�XOD"   "GOMV����}G '3%,����ϻ�������������ƶ�ߦ������ʳ�������������j+"Z~iE8+7,9`QBu�����������������Ɵ��ľ������������������������г�������ⵡ��mUetlQg�����X7.CC9& D^V^Y[���������������׹������Ӽ��̻���������ʷ���̯������������������������������������������ͼ������������ٷ���̼����������������|Tg�����¾�ntb@$&-. .V\*(Pc�kc\s���̑s�������zP+ 7>,Gt���xUkRNQVAB`yv�lR09~�����������ۺ�tC + +!-A\Scz������e+,Ilmh�����������Ĕ��cDQI<<8*5Jpt?fRhXLCDAVWB(%0F2#1%'LMlt��Ѳ������������������������~��������婥�����������ʲ������Ͽ��μ���������������ҿ����̫���Ƚ���Һ�����ϻ�Ⱥ������������ר~����j������WQ;:+&&(*2.EVSSx�fbqoc��Ĵ���������|D(1*97@>,6_�������qA3DPp�|okVA+i���ڷ�����˱��mE3!  9C\MLYptpv����t_K]|�����������ݰ��pC-)'1(#06,Wnwl[L>E9*APtoy��м����������ǿ��Ƴ�̰�gY^gV3:jmb��������ư����b>C(.\[`{��|����l]bn����������ί����������������������������ɿ�η����Ǿ��������ڴ����������Ǵ�s�^Gh����¶��������v}�������������Ͱ���`HJp����������~ykA?n�����������������hL-Pr�lgL;F-1FPDGE^���x`iI +  CCu�x����ȾL   r����������������������ڥ����nv����ܷ����������tj��]DinC3/;Vmxnr��������÷��������������������������׸���������ȯ��⤅��@Q��ī���/ + Gky��qxf{��^# +3 3I����������������ӯ�����¿��gUer������������ˮ���Zpm;1DM8* 2&>c�w��ĥ�������������������ι��������������ٕ����º��teQUe\Ra\MRx��{�����cF(!$('&3HB%CurWcZN_��������Ʒ��������������׻�����Ͷ������������ľ�ָ����f������������������������忣������ȹ������������±�����Ƚ����}|���������ʮUp����owcH1ARbM+ //5LUZbF*39LP[\_c]PW\N.+=_YTJ^q��x]07) $.3&);VvX(#3%)h���n�����������ij�dUWH*!*HC+:QS1&%Den���WL:#(.LWd����������İ�õ��~^w��tdO�����徯�����������ǖSKV[\��������ǰ���|�a{����������������������������ѩ����������������ƴ�������������ĵ�����Ժ�¦�uV����������������||�����j����´�wYsR-0$%Ki���ۡ|���Q$170Ox�nF3Z��������ݸ�JER��̨�kH\acVHI4+Hel��̷��k9M_OG��s�zk@)$   E]��eHX������q��������������÷������������§��������̾���pU[8>A7=G7" 'CDD���������η���������������w������������������������Z- Exs~y�yo�����t��lM!#26+%"6xZ_bjjx�����������������������������������ʣ���������ɧ����V/9ah������������������޸����˯�����Ǜ������Ѻ�������в����ʙ�������������k$Ck�����„lhQ00O?GW�S2%@/4R\WNQ����{p�lG .PNNx���ku�[?A84%'LgZ07"_t|�����Y.?`dG9-((4*$")7S����±��׮�����������ά�^;i������ȡ�r����|_��ӫ���qG2;\�������dw������~VZX\?/E=#9M5CI*#7Vb_YSy�l�r�������������������������������Ⱥ��dz��ї����������yRFh����������������������Һ������������ų��������Ľ���������aLk��������ߝ��*Sp�������jRM<?bIG\ZZ*2P9QaV@M^{������YLA.HL9[nYOG^o���iV,"#(?, ))3ML-2aIDe>"Cow\ELNP0  !&<50 "4Q�v���������������ױwp[,#PT/>J22LY]{�������`OCmh<"%@\RT���б�������x��lXP9F���淨��ξ���ù˽����¯�dTK.@h���ν���鬂��α�y����������������������о�������������ٹ����ϼ�������������������������շ��������������ʶ�š������������}eYQ;512.+$1r��������zA(06U���~c���̭��ܻ���zmGMn{�cP-PsX>E11P>R�����zz�~�A C4(ZZb\/Gq��ſ�����o* 258'"/7B3DQCJ|���kjeaAK�������������������������μ�����ι��������������������������|���������������ʭ������������Ŀͭ�nYu�����_l�������������7;H;A��������S-"II$=bvI+ 9=9ERX`edci�n]SYZy�je��vNX}l8% *@4!""??0FOC/9i�\R9&% % 77$)0/-.((/:Wuisv����������ɖ��xUC?10E66$=`@*Z�ns��lo��OC9+4'EaOkx��;�����~y{P0Hk_dkp�����θ���������ƪ����ϑF*&A_���͵�|qv�`�����������Б�����Ǹ�����뺮��vdPCKn����a%! *D_V>9MUdF :�����iw����������ն��Ƨ����������ҧn>5&n��L;i���æ�^@P6SVPfvw���bK=RL0"CKGeF&12%!+Kga^axq��P??@81QOYJX@) 2, +  (:,3C#(## 4CH@>-" /">-#0;/EXlfnsbv����ɯ��������~`aX@)<$ 02,3r��������|{�toP8WE2EZMU��ز�{QHh�|f~��XHu�������ۿ��ѽ��ض�������R[aF2@x������ʟ����ƿ��Ƹ������������Ӵ�����ؽ�����������ѽƍz������ŭ������as�ƴ�Ŕ|��������������®������������ĵ������w��ɽ��q_wS9-2*-R����������w����cisz��Ŵ�����۾�]\r���`12A]YBDS:HGfc9/5H) 01((($08g��h|��ؿ�h���ᵸ�����UNIOHS@U~wuhS8Uz������������������ֲ���ǿ�������������������ǿ�һ����������������������������Ľ����ղ��ƶ��༥�����zi{��t����ڶ����z���2"):D^{��hqVB.#;@4$J_XYBT[6'=VozT?<-@f�xn��j8#'%;%%" + ):34+ $ !2UX':B)*A@M6"5#"/>8 "0-<^if{���Ź����ŭ���dbjbI+3$ \B-(&;PE5>^T@=N84-20+/"% ,, $++:4+8;SLS���������������my�����v[P35%"+`i}��������������pJ0J`rs{hcmiTBddC@E:(\�����㿹�ʻ���ɹ�������Ǿ��uT96'9�������������ٚXlg_Zt��������ϲ�«����������Ʊ��������ȝ��������tn������ɞ~onbXs���������������������³���~`��������Ѽ��uX-/3,5P>(@DWr�����ĸ�Ÿfmo}�`]XNq��ͳ����ѥ�����rB%)6Dkx�xbXDO`_��ЩZ ?IeJ5D`UVL[T"  *G/ (4LY}�������Ӹ�������Ʈ������ǿ���é������������XT_dda_O8"%CU_A &-))(J>%09S�����ľ��i��Yv�����ߟtROl�����ǟwbH@_�j8398=,;?Mw�tey�w��������}nc��xSS,Bbhgbcmj6*ZL:* +!<%@98PBG.'6@+0LMRW`:F[�����¡����������txVAKI\SK*/P��������鸇z�����timm_h^Zegv:0I{������㲙����;�ɵ������������]RB8N67c������������軤��~svp������Ժ������������������������Ĩ���������ζ���������q^[M[{���������ɻ�������ϳ������pq���ų����z\P=< %%";ECBANJ��������i`atkuV94;`������ǥ���l��z`H11/(Th��elfWu����˝sdUaD=Mg��zzl6$   +1n�����ӯ����������۲���DZ����ŷ��g[x���xpyWBHE$6Xan�|��i��������X:LEENg��W?Zevkg{p����������ٮ��|o���������������ٵ����ӿ����������Ž�������������������������������Ⱥ����������Ь������½����{�����������μ����������p>TRVwj<a������z�������д���������������������մ�����������ʵ�������õ��ǵ�������Խ���������߷����{���������ѭ����Խ�����Ҹ��zb���������˨�zVn����ˏyjnLLC12 .:53DHBGL3- )9FA7(CpjK72@I;FFD5C)+!!(>) !,6@4*PlKKGLor]0!?TBH1+ .D9010!03* 8H>?8F:! LdBK�������������ʹ����px�]c~st���������������ǭ���mZYmcq}hS+FIRm�|�sg{��ϭ��������¼�����������÷��\:7&C}�����������߻����������������������к���������������ݰ����������ɾ����Ź�Ĥ����������ͻ����������������~Tb����p�q�����X&('"&;X[ZA13+$5]�����Xnv[KNIcsvx�w������ƻ�������xW,+A_ktzeRR`i�Ǻ��Q !Ewc. + + +Lce_{bU��æ�����Ǭ��m|����Ǹ�ɱ����og�bVE:6FG@i��o8 9B$ +%+DJ:LXJM?$A?:(S����ܲwutn{������б����}|��}]Xy�b?OtaYG*"'E\p��������w���to;4N? 5Jf:$De��~�\ELe����������Զ��������������������������ǻ�±���گ���ο����������������㳻���{eI*1=�����������������������͗�}����̨����������ϳ���}_>'&$@JV\hwZHIcxd//IH(/<5=/ ^b9/2?20KDRej`LDJ\F&,2N; -YN0+A3AWK:6+&%,R^DGW?( %+"3$ 7E9@A"8Zot���ά�{a.+=h������������ú���ʳ��}VE9!>p}{\;OUi�����l,     *I`u�@B����ʵ����ygSAVfp����������£���~���W*#AYdY4"#3*!)')#:G>>$I]TARQdSRWEHNE&QZ>!C@=]mznk~���pi}�rt��ps}���TJH+">2#%%JO0%%A\`@HThkph@-%DN&)  "J=(,n���wyq_}�����ת��uvmXg{����xkh�sbt����������ҭ���y~xSTU]E52R[~�đ������Ͽ��⽪���������ܵ���į�í����sW>:I}���������������ڴ���������������ª��������������������������ȴ�����ѵ�����ز�������Ʈ�������������Ʈ�������nk������ں�{;$0)@AA75B +c���¬�ж�l^5'U�����v���������֨�r��Տon/&/CC;4:bop���ý�u,   + 4.8:5H9=a���|����ڲ�pM9DVMd��η�tr����wr{mpS(Q^;?N6$9:8/%LG12I|wuw[YatbN,+2$e�������f]o^a_zõ�į�ucWzpxi>)2H>Ny�jVL) $ :N�����mnnee2$@.!!*% ;`|��paTTFOut����ý�����������������������ʹ�������ƽ�����Ƹ�������������������������o< 5P���������̯�ױ��������ɯ�vm���������x������̓�������C.%83,3]K235210&#5< + BUPPXt�������z�����������������}_B:<58aV;OB*?5>l`NFI54G+!+@?)06;"&)"%1-"'-Vaa�mJTe_x����������Ժ���������kv��o���Ƹ����º����i[����nhR@FX4(~���������۳�������������������ð����Ѷ�{GN^�����˶���������׹���������ʺ������������ֺ�������Խ��������������ȹ�ʵ��������ž����м���������Ŏ��������Ī���������ճ�Q"BR<".BKG34dqs������wi�zx}���ęv���������β��뿕~;$?L=/,6 ,cn|�ɾ���|NC$<' +   + +,#6NXJ@%7�ƨ���׺�����dHTx����ҢaKm��}q}eu��aRB1+)&7P7$(%Qr?+3VlO&"-?+4p������tWYDATsu����][gjDTsrg=e`PR7+&#+!'22&2"%)OY`�����vuw3KSS: %KCDi��fLvqgp{�����ǣ���������������ȸ������Կ�������ȸ���������ͻ�������������������ֽ�{qtyD*OSz���Ʋ��������귭�����̽�{�����������������Ťx�t�ˑo=0*>%#58V5&"(3&0'T\J24IME-5A.#1T][fbby����۽������ɶ�rn�����wWo������Ь��������ygWo}vlI\jP2R��ƻ��������������Ӻ����������ʾ�ƿ�����ܱnZF5G�����������������Ш��������ֽ������ǻ�������ػ��Ժ��Ϸ�����ϵǭ������˛������ձ�������ɑ����������Dz�������|������ٿ����h5&,3CF*'2=@>+a���ý�����������������ƻ���~�����ljV+##*/;6Yd^X-!%.(04%9dd\U\VJfj~xQAM9&6%Iv��țeF`iglpw~z�}vnD6*-ORNH]P)/3>-5-Ion:/'!,H\rcPd`qpBWW2%+&(RVB'9("#)6CYwxl\Ea�������ڼ���������Ǿ�������������������˭�������������������й���������Ĭ���rfQJ]���������κ����¶����͸�����[_����������̲���\��Ρ�rtnd6'! #27 076F\Yk���Ǽ���������������������߮�ɷ�����Я���f+%/$1Od^4"$AHG@>=<4GA)E9! $, '>gm��wQ=i�����ѻ��Ķì��ɽ���{U{�����̫��z������t`m�wdH]C76\~���������}�����������͵�����������������ܾ�^@J]ak������������ͽ�������������������ȷ��������������Ů��߾�������Ƶ���������ݣ{����������Ί������������������Ҝ���Ң���hG#29<476<@P1&.5IV���������������̲���Ӹ���������dP" /G)!=1?w���������ܾ�a..ClkA "9n�~2 3 +#U��ɾŽ����λ���bD-Xg��Ķ�zXfcTf\azi:)8WsJ 23?0 '(898Q\[9FW]MTrx[, /h��|���aCZLJHp�¤jiODu��[5+$BX? Ba1)/@Q]8+&&&#?B1C5:29OKJ|��_^P<'.") %P=G_NFT]bvuKN���ǫ���������������ҵ��������������Ӽ���Ͽ����������������������������̱�_msWr���������ڧ~���Ƭ|}kw���Μyr{��q��������������������˻�dJI8D) %:, 25#*Ou�����־��õ�����е������ͻͷ�����ܼ�����y���ybpn</7TeVBMlpG/7,0*-, + B12XPYx���qu���������Ҵý�̿���ż������鶁{y�vcsvv}cZw}cqbYD,)<{|����λ�����������å��ñ���~����~y�����º�Ɓ@SSe��ʳ�~���������������ͻ����������ϲ��ླྀ��������̺�¼����ƾ���������������̳����������Ŵ���������徟������������Ң�uwbT0&!3H19SG$ 0]gj���w����˿����ԭ����ڻ����z������A*21(,60=7%W�������٬��ſ������ϟU')-Kc���M  +('! :|����Ч�������h@bmfc����������N*'##I]a\HBCN;8-?=! /MRMQP3ALDSUCAaB"IDq������hznLQT�����v_hmv��g))8AI52>91UPJI09#5"7I=LSb\79`:#$%,N<)%.RTVlnN6_epp`HXw����԰������ӽ�������Ʀ�������������������������������������������ӽ������������������^2/Uz[G;B)K�����ǵ����������������ȼ����ij���G<+!.C0!$/% !!(7aw�������ö�����������Ǹ�����������ƺ���������ƺ�g\T_M+KA;N\A JANQCWQUL)$>7!BWZ����kj�����������ؿ��������tX�����ɳ�o������l]rpgu}dA#H`y������������Ƹ��ٸ������ĭ�ky�y^o�������ȹ��bIe����ζ������ó������˺�ǥ����ο����ֺ����������������������½�����̼����٧�}�����������༜kn`g��ȴ�UMq����������������i;#!!&@F))D/2 +a������}��������������������ʛtcw������Q4E, *$Fr����������ɦ�ȣ���ʹ�R;#:x���oI'%>7>Aj������ʛ��������v����}SSq��YId��G2E5*   7*3<7,:&*7GgURe\>0:PJaoxj@#8]n�Ͱv��hdbMQq��}���fl����s8'$$4Ibym4 ZeQE"'(1NT28I:[��xd_b��������������ݸ��������Ȼ����������������������������Ͼ�������������ķ���ζ��������ҷ�I(LeG<-#4��Ţ�����vo~��v������������ߵ������P(GG$*0"!04%!4N# &Jf��������ˢ�������̩���������������������������Ӹ�ďvS:DTA<9(>31:Ru�pa=A@18,<=;Er�������������ﻙ������Ƿ�pEl�����ټ��̨�nL*JI#,P`L401$7c��̮�����ݿ����������ӱ������Ȫ���w������ͩ���NGs���������ഽ����������ʭ��Ķ����������������������������ޮ������������Һ���Čt��ɳ�����ē������Щx:)?q���������v�����\E4#4G1$3C�����{aM|���Ֆ����������ϧ�����������l,'<-Edr����ޤ�����֑���������������ƃZ�����˻����ƾ��ߵ�߿��ţ�����zJ*Kcu2 Ljcu`5R*" &!%E_/#'" $AdJ371JDN>@\P' + T���x��ht{���juq������xlI$" !):<2OE=_^V[\<," =VG2!(5pq�����������촧����������ҫ�����|����XP==UywonjE6ii<@4Me������������ě�������������բumt������������ɾ�YG^�������Ƽ����������꾿�г����Ζ�������������������������˸��������������θ����ü������Ī��������ɟg42M��Լ������~k������q? +!B/*9?\�������BGl�����\]dx������կ����w����p@1PFK8BD6:]����井���������������������˕������������ݻ�ɺ��ٺ������������c2Hw|r^8736P_MA$NF8 "R\F4"4glLSPOJ4RlkMNWD8,9h����Ü����vx�����p}�uw�D=4)*+BYG2,SmS6;7?EW�H311('")#'" + -35 /JCLY���gZeVWy��ŵ��տ��������������­������݇}������������������������¿�˸�������ܽ�������������̖|TBkp���il���������«�������ʽ�����Ҕ������kcA +!(+  :Te|���vL]g����ԥ����������Īz\A7Z^d`B3CYnw}��������������������ܼ��͕���ԭ����ܭ���������������ٺ������WTs�aymA3<|}3&:#&"4;)'()#\~��~Y<^WQw�����>L[VRBJg������´������kdx��ysL?=68"(!#15++Pif* 0A,4*&*-.$*3 ")@/%7+6PFaOFn�^PYL:Af���Ҿ������ҹ׿�����ٱ��Ħ�������UJW����������Ϯ��������ҹ��׻��������ɿ�����������ɍlD#@f��Ir�����������ǿ�˹��������������¨`6 ""$+*>?0>/(((9Jl�����ҭ����������������Ŷ�����������ueD &!;_rSL^WFEfj^=T}������ǡ�������������������iny��ȵ������������xAIg~�ʽ�����԰�����������������tQZ{����������������������˶���Ƿ�������͸���Ǡ\>Y}������nOUy������æ����ȷƺ������\?BYy�trC >[;.)@vp\T]U\kA;'@.#@6 +.JMdcK&2t��������ɤ���ξ��м���������ҝv^.7  M�������������ˮ��������ɱʺ��������⨊���������賱g2>&0_uo~�����������ʺ����ֲ������Ϙ�������A  +2"&*"0Oq���������������������������ɽ�������Ű�����г��������������IJ�k=11CQtwjby�p@316.M^qr_��ȿ̻���ɽ�ÿ��������}{�������eXXO\P]F3;7F3>2Qp]>%*9!%MX~���ʶ������п�����л°���ҟ��ξ��ʸ���ʹ��粖tT7D������y���{i�������������μ���r��ҥ��������������������Ծ��������׶���ӭ�������}���iiD4lfp��ܹ���ƺӿ�q~��������S$"/?bP65 )F]:>-&//HG?48Jed~��qI>?]��������y���w�����rTTmmQe�x4H���������c[p��v�������ū�������į����������Ȼ��������������dZ56x|_W0DYXA6 2(1d�D:3IF@���rSVU[XW4&:RW]TL>+,I��gSV./@EaH32*KdR=MR{�T+NCHXG1X|y5%Ee5(&BM2$:cz���bUOD.%"4)-9/eeE?z��lio����������Ȳ����۰�������������]!=G:+  /f��ʞ�����������ٹ�������������������ݲ�������幒�WB)$Mu����������������ȿ�������������ݶ������[++$#)-)5IGx�����ۺ�������������������®����������������������������˰�����ÆUXHUA<\v�|sj8+.$9.O���~��������������侬�sXdn}����s[Z9:NcTJ9707/,,0/?eWx�`@7."N`}��qx�����������ο������������ο�θ�����uX28H?fu�����͡�uzkm�����ɲ����d�����������ͺ�������������Ϥ���������̧��߽�������������q`agQCg������ӵ�������������umPc{b9)*:<*)$"#5GfBGRf���M3Ko��Ы�ҧ���ѫ�����ͩ_6+,BPi{�b6!Bc����֌v��eo[q����Ǧ����������lm���Ƿ�������î�����������vw{qn�`=3Ihdkq��p?&$*! + ?T^`mW2 #5B\tq^ZiowEB3*h�ggwvnWMNOKmnRJ=C1" 7N=MdsgPPE$'9kvL=0Do[9,OK84;Gbzzr��qkT)'! /1,@3,9DYT_����Ӥ��n{p���������������������˙m16Thf<$!7\j]m��������ï���Ґ���������ʻ������������������ȏXMQq������񴤫�}������������������Ҳ�lÎ�����ln\J2,%!)2(.C):5-[w�������dz�������������������ֱ�����������������������������߸����iEh[)0Y<8Z]W?.-CFYXx�������ĽûҸ��Ǿ����w}lukiO:F:Dip��L.3U�����������ȥ~�����O&59Dd8/XOMXw�����Ύ�s���iy����մ������ö�������λ����������ü��������������wEFYgC+TYI+ )5" IVPGV_>-5Mlyx}������xW5 Lau}i_@6^z^A(7)14(JPJG@,!0?Xz~ulEKB')CI&2h�kO4#=c\ep������fQ?$5BDCK=2$+=@FNMQHE=[r�����������з�������������Ӳ��˻��b04o|2%+4>>Id��ʾ���������ĝ|hz~���������������������������ΎPFPu������ќrjt������������������ɛp<�����ȑ`/1" >4+'#&N;63V������Թ�������������������ϣ�������������������������������ڱ���֩x]hmcJc����[;47&(E]ry����������ù�����Ŵ����������gD.(&+$60*6C=TjrqK/#*-17<.Ix�be�����ˤ���̓���������������Լ��߾���ѽ±{C42>@U\p@,U~{B:1>{�����ۻ����tH`a�������ɿ��������̧��cx�ȕ�����Ͳ�Ʒ�n���̻�^px��������gdMj�~p]k�������Ѧ���ǿ����ZK**.WSRWHA-"""6K62_xaYA1GY?B_j}������������ժ����oH+/1:EJ_D+#"+a����Í���obfKE[Xzt|�������ܾ�����������Ɲ������Է�����_W}mO^m}��w����_SaS+ 16%  ,EoqmL4"#)?81QNp�yVL.%2-3:3DH@4**42*((.aj83#">hZhndoaX\xhB +<9Q(Z���lm?!4RJg�����Ʒ�����ȯ����������mk|sQVOO8/65/I]BF3$)Hxbh~�E# 9,#39FU;'6<#*'#.H]{�}s`798=?M|�iE#(Rp���}�]:K_qH4'!::LO_`pa3,V����s\:=;0L<7LN<<.. ;Xxei�gY~����|���������������������뼎�����ȟ��к��ȭ�r`Mu�����ì��������ԗrOX���������������������������Լ������������܉���������������ݽ����̘���ɊBA/ 7TeB&" + %3IjbgL\dnT.,EUy�������Ȫ�������Ȳ����kLN-/+)#J^E8SuaNLFJ;Y�`T6!3>&  5`\^`of)Cw��������ɷ�ɮ�spobB$  ,<51!"?p����šS%3NH@Q`u��ru��������տ������Т[NTt���������Ž����k�v����}v[W_fs_EVV; +0 + .Fizo���oc; 6Df�]P% LfRLZv��n]kR82A�ef�WTfw�xnmod5!$B0...bL6) /4M?84Pqm|��ʧ�|h`T@3>g������UA+U��vqC# *;QYtrC IOQp�������ޱ���������³��ɸ�������ʶ��ʫ|T14MhrdB7Q���SShrr��Ȯ�������{�������������������Ų���������ս���|���������������������ƺ����ḌsR3BQ^a}�����^ZfmmlZVv|YnoXL\gsW#CT@$ + #Tr�����HFs�������־ɡ����ଊ�gB133*.6?HB"+,H������Wkcmh�����������Ϫ�����Ҷ���������������w���������lFXsqq_G5j�wUY�tWE3'77 +.3Wnqm���tje9 ANI-,LS^~q;2@f��������kphmRX��D/4OMZjv[I/')-.8',RC6/:@=Z�~������{<C=;-M\F7Gk�������unVLby�����������������������ٽ����������̱���˹�������Ϊ��9Et{����ž������������ֽ���������������ř�¦�ɺ���k34y�������������п�������~��~xE+3UmN1&%#.%"9<^�y�����������ѽ���������������؛�����������ƶ����������Ե�͹�����������Џ?!'T\g���S"/E]qfq����������ȥ��º��agWJ8#.Dd����������lf|�~��T! 77&:b���oW>! =kv�����¦�¯������������ů�̜�������ط�`;CW��tTAYGFlsulYkj}���������������Ω����������ϥ�������������������z������ɮ�����������ʲ��˝�ies?&/CXly�û���zzrx��}hW]N:0CG&FSK:D, *=Qt��aCX|������γo~��˪����]94+(',)1G"'Rw���ŵ��s\Ce��i?Ui��������������Ӷ��{���rlut����������tNgq��lP]G2CB]��g`K50 -RW6 )=0@h����\gX.! -;`vs�j;8]cTn�������w@@14/!"\wpTOsfTB6' ._VJx���Z%J^dxxtoOR��~b}���Y1==,(:5&BGj�����ɐYaE@lKW�����������俹������ս���������|������x��������يF27( +8c��Ę�������׻�����Ͻ��Ծ�Ǣy���ͻ�������������}�vg�������Ѭ����{lp�����~��ic744K[U^U6+>%!'=d���������Ŗ���������������������������ѵ�����������������ȷ�����������ʺɶ�^9?Q�����n7"3Ujzx�si��Ǭ������������q^4*GE6Fbk���̸��yur}|���wtQ]@'Dgo��p7FX529&Hl�����������ǡ����д��㿯����t������ȹ�mL\u���������q_G[ez�����Ži�������ź�������͚�������������zx����r�������������ƻ�������;���®�~YUw�GGT����̞��������YQ1NJJ61HA;0!686  +GUAU��[tz|����ɦ���������Ŧ�|7:'19% %2Hgr{�����or������������������i������د���bd��������v�����Q(0/:N�lknvaHbE%  + +$"# .H�����[;.7% 8i���gZneitr{��ǣ�~ti34"(/BTg��i?Rk=?r��g;JKg���gu��oOD=,OJ %7[h\Nq}wWj��hF;KVbpq�����������Ш�����Ӷ��İ��n��������Ѹ�������ȶ��q3 + Av������������������Ͻ���ÿ�����������������¡����������ɷ�����ѡ�������� \ No newline at end of file diff --git a/deflate-fuzz-target/in/issue_18_201911.bin b/deflate-fuzz-target/in/issue_18_201911.bin new file mode 100644 index 0000000..affc2a4 Binary files /dev/null and b/deflate-fuzz-target/in/issue_18_201911.bin differ diff --git a/deflate-fuzz-target/in/short.bin b/deflate-fuzz-target/in/short.bin new file mode 100644 index 0000000..d1181e4 Binary files /dev/null and b/deflate-fuzz-target/in/short.bin differ diff --git a/deflate-fuzz-target/src/main.rs b/deflate-fuzz-target/src/main.rs new file mode 100644 index 0000000..a6bb61d --- /dev/null +++ b/deflate-fuzz-target/src/main.rs @@ -0,0 +1,21 @@ +use afl::fuzz; +use deflate::CompressionOptions; + +fn roundtrip(data: &[u8]) { + roundtrip_conf(data, CompressionOptions::default()); + roundtrip_conf(data, CompressionOptions::fast()); +} + +fn roundtrip_conf(data: &[u8], level: CompressionOptions) { + let compressed = deflate::deflate_bytes_zlib_conf(data, level); + let decompressed = + miniz_oxide::inflate::decompress_to_vec_zlib(&compressed).expect("Decompression failed!"); + assert!(decompressed.as_slice() == data); +} + +fn main() { + fuzz!(|data: &[u8]| { + roundtrip(data) + }); +} +