diff options
author | Michael M Slusarz <slusarz@curecanti.org> | 2014-02-12 02:55:49 -0700 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2014-03-06 23:38:51 +0100 |
commit | b88387d341c510ed434b333d640424f9fe3cc567 (patch) | |
tree | ee3c07b72912b9c52df94225b56d616de2432670 | |
parent | 200c97829d79650f91e6939070a7db9790d0ec4a (diff) | |
download | php-git-b88387d341c510ed434b333d640424f9fe3cc567.tar.gz |
Fix #66698: Add fnv1a32 and fnv1a64 hash options
-rw-r--r-- | NEWS | 10 | ||||
-rw-r--r-- | ext/hash/hash.c | 2 | ||||
-rw-r--r-- | ext/hash/php_hash.h | 2 | ||||
-rw-r--r-- | ext/hash/tests/fnv1a32.phpt | 327 | ||||
-rw-r--r-- | ext/hash/tests/fnv1a64.phpt | 327 | ||||
-rw-r--r-- | ext/hash/tests/hash_algos.phpt | 6 | ||||
-rw-r--r-- | ext/hash/tests/hash_copy_001.phpt | 12 |
7 files changed, 682 insertions, 4 deletions
@@ -10,13 +10,17 @@ PHP NEWS . Fixed bug #66109 (Can't reset CURLOPT_CUSTOMREQUEST to default behaviour) (Tjerk) +- Date: + . Added DateTimeImmutable::createFromMutable to create a DateTimeImmutable + object from an existing DateTime (mutable) object (Derick) + - GD: . Fixed bug #66815 (imagecrop(): insufficient fix for NULL defer CVE-2013-7327). (Tomas Hoger, Remi). -- Date: - . Added DateTimeImmutable::createFromMutable to create a DateTimeImmutable - object from an existing DateTime (mutable) object (Derick) +- Hash: + . Fixed buf #66698 (Missing FNV1a32 and FNV1a64 hash functions). + (Michael M Slusarz). - Mail: . Fixed bug #66535 (Don't add newline after X-PHP-Originating-Script) (Tjerk) diff --git a/ext/hash/hash.c b/ext/hash/hash.c index 928ec778dc..945d2033d4 100644 --- a/ext/hash/hash.c +++ b/ext/hash/hash.c @@ -991,7 +991,9 @@ PHP_MINIT_FUNCTION(hash) php_hash_register_algo("crc32", &php_hash_crc32_ops); php_hash_register_algo("crc32b", &php_hash_crc32b_ops); php_hash_register_algo("fnv132", &php_hash_fnv132_ops); + php_hash_register_algo("fnv1a32", &php_hash_fnv1a32_ops); php_hash_register_algo("fnv164", &php_hash_fnv164_ops); + php_hash_register_algo("fnv1a64", &php_hash_fnv1a64_ops); php_hash_register_algo("joaat", &php_hash_joaat_ops); PHP_HASH_HAVAL_REGISTER(3,128); diff --git a/ext/hash/php_hash.h b/ext/hash/php_hash.h index a104522c88..c5cb6604db 100644 --- a/ext/hash/php_hash.h +++ b/ext/hash/php_hash.h @@ -85,7 +85,9 @@ extern const php_hash_ops php_hash_adler32_ops; extern const php_hash_ops php_hash_crc32_ops; extern const php_hash_ops php_hash_crc32b_ops; extern const php_hash_ops php_hash_fnv132_ops; +extern const php_hash_ops php_hash_fnv1a32_ops; extern const php_hash_ops php_hash_fnv164_ops; +extern const php_hash_ops php_hash_fnv1a64_ops; extern const php_hash_ops php_hash_joaat_ops; #define PHP_HASH_HAVAL_OPS(p,b) extern const php_hash_ops php_hash_##p##haval##b##_ops; diff --git a/ext/hash/tests/fnv1a32.phpt b/ext/hash/tests/fnv1a32.phpt new file mode 100644 index 0000000000..8297c7b920 --- /dev/null +++ b/ext/hash/tests/fnv1a32.phpt @@ -0,0 +1,327 @@ +--TEST-- +FNV +--SKIPIF-- +<?php extension_loaded('hash') or die ('Skip - hash extension not available'); ?> +--FILE-- +<?php + +$tests = array( + array( 'l', 'e90c310b' ), + array( 'b', 'e70c2de5' ), + array( 'a', 'e40c292c' ), + array( 'd', 'e10c2473' ), + array( 'Z', 'df0c214d' ), + array( '0K', '66eddeec' ), + array( 'cp', '47297986' ), + array( 'UY', '6bf399cb' ), + array( 'RS', '6e04e612' ), + array( '+`', '47dc64fe' ), + array( 'Q: ', '1c02a1d6' ), + array( ' Mu', 'c5c8a3f9' ), + array( 'jS0', '1819afae' ), + array( 'cRZ', 'd9f699ae' ), + array( ' "]', 'ee32d84e' ), + array( 'Bo@$', '1544a53a' ), + array( 'U{5"', '08f0b60a' ), + array( '`&W;', '300ba78d' ), + array( 'Y+F;', '12d960fe' ), + array( '\\a<]', '7596c231' ), + array( '/2HcC', '4ee26872' ), + array( '-7}-:', '5e0b1ab7' ), + array( '[O*|T', 'c259a137' ), + array( '_yib[', '6cc9d49b' ), + array( 'p:vKE', 'becd7e8f' ), + array( '>g# $a', 'ae428052' ), + array( '07*tZ8', 'ed8d23f4' ), + array( ',YEF5u', 'faf2b057' ), + array( 'Q3K2.6', '44f076e4' ), + array( 'ti(0aT', '29d6e513' ), + array( 'U <Y!A;', 'ebcefc16' ), + array( '2XF\'4^3', '11bad723' ), + array( 'm%Z${-8', '2ef77eeb' ), + array( 'G@F^60g', 'a0044fc5' ), + array( 'Fq<|rYV', '00fb2e21' ), + array( 't{r\'U9.i', '0d526094' ), + array( 'xBX}}]y,', '58e08903' ), + array( 'uBL<"bMi', '6b4adbd4' ), + array( '*@\'\'3a^)', 'e9588a44' ), + array( ']Q03k?|d', '5a837058' ), + array( 'aVb`4]l* ', '8e9bed4b' ), + array( '9G#|tl\'6s', '7301283c' ), + array( '/JUmS4@cG', 'd708df29' ), + array( '-$Eqf{UG1', '406526e0' ), + array( '44<5Nd8LZ', '56f2092a' ), + array( '&Tpyc;PRnd', 'e1b9c4be' ), + array( 'sS-!WRs>OJ', '9fee418c' ), + array( 'fa^z}tJc-v', '42d4d075' ), + array( '>3K/./J_b9', 'd9e15b05' ), + array( 'EVmRXE&LdV', '1ccbc7ba' ), + array( 'wK9WG7LqzYi', 'fc482f42' ), + array( '9m5I|Es\\(."', '43fc2be7' ), + array( '^{U8B\\d(4\\T', 'af371347' ), + array( 'M4{eana<X{*', '0073ed9f' ), + array( 'mE\'39d<Gg{D', '7755ffb9' ), + array( '=4fzyn/WC\\l@', '3085c332' ), + array( 'BN0$jh uWE}k', 'c95b95dc' ), + array( '_b((J$Lh94c3', 'c7f99999' ), + array( '$rjGPWhr&xwq', '0b9873cd' ), + array( 'bxg;?e(~H0\'s', 'cee0652d' ), + array( '5T\\OhAbl4M5e&', '21278985' ), + array( '~Y-xQ~[JfwiL ', '97dae25b' ), + array( 'iu1qiGFGv/hZ|', '045498c1' ), + array( '})2c/1=<*o;f;', 'ce6b0a18' ), + array( '"_&O_oEqa09(W', '31218352' ), + array( '18@k5>tG"$Y@@d', 'e67f32fc' ), + array( '1\\LL_,R/kCU]%e', '563251e6' ), + array( 'w.=)F]t\\|i% n^', '10a0ae81' ), + array( 'A0DRlp~L|Q\\it2', '2f5d78ca' ), + array( 'Gzw@)6IPt?-q*3', '228eab51' ), + array( 'rxq4*6fw(eE%8"n', '843e8340' ), + array( '.57).W3D"d9Ar,K', '9cc1aba3' ), + array( '&~Ex3O0yH8_m=xo', 'c1a72c91' ), + array( '-\'&D14{EX}*r@}~', 'f0b627fc' ), + array( 'k$}2}1b.,+Flyde', '2255bec4' ), + array( 'iqmp6~%3D]2OPRNO', '95cb7153' ), + array( '?RNRQ`5_lA\'Y;k@&', '98f1390e' ), + array( '^.vu.{)SZ<#+nQ[/', '2f89dc6c' ), + array( '%+aVkw7Y9>3U+T\\j', '15c1ec76' ), + array( 'bS`pPjD+\'H7vzs\'!', 'b732fff0' ), + array( '~hWkaoE{.YQ:..%qb', 'a53c7189' ), + array( 'eb3Q(?XQWPLKWMKA&', '3bf2f0e8' ), + array( '7#u]~%7Q?E_D7C+zW', 'f5038551' ), + array( '\\$w5UOf#{>PH_W`cN', 'c3b89ba6' ), + array( '>bSU4rzt839C.p 2h', '00cf8218' ), + array( '5h9|k6;=^{t?`C]Cv4', '855c27e9' ), + array( 'Xj0N#CgFRYFeC\\N]Z;', 'caae0fcf' ), + array( 'suXRrNrTrPwjeQUu!Y', 'e2ac5b6c' ), + array( ':i lDGSg%#E_>:VwlJ', '0648058a' ), + array( 'F_~91w$vIZmK4(55tY', '11c2fffb' ), + array( '\\HBbLhBj#ybpD*PCCb;', 'b32cc782' ), + array( 'HZe#H27PGLF"*oEl<.0', '86a137c7' ), + array( '\'1*j"NtSr87/aqtd;\'|', 'f40113e8' ), + array( 'kOI3RT#wB?&RF8]2;,\'', '0096ffab' ), + array( 'n @\'/"y$g5,d"\\/5/c9', '8b7ec669' ), + array( '\'&X.Y F72aD:QDZYS]SX', '26b51c68' ), + array( 'Eid*lB9#Q}<Y%tg_u/v(', '9ff0e9b3' ), + array( 'p<BC`}|5[Qm!;S,(uE,H', '50d88cac' ), + array( 'DH"J>i*4y"<j>_/ ],59', '9354bdac' ), + array( '^#:yWG#Mm/u2Xx\\vcg+]', '4debf08a' ), + array( 'iHI)(X)ee> DB;?zbCIPS', '312f5ce8' ), + array( '@c,9A$|)/[sX%|`]&GDEG', '8793f867' ), + array( 'ihc)cFL-w!M[-g|1d\'A@z', '57a03ef9' ), + array( 'yFw[%~#IDK3.0=qVj OkN', 'a435237b' ), + array( '+x6)+{0M=+Hc$$h#(3HTF', 'f7f3fb17' ), + array( 'VdcI<OIk;xv5/!A+1nI<7-', 'c0276bde' ), + array( '@<vDD*lxQC^6mze8g!1_6@', '2a8386fd' ), + array( '`WLqGu/^$Oz{s@&a:W&xms', 'c5454bef' ), + array( 'tS,\\U==l^}E+pl" L\'PG#E', '7163befc' ), + array( 'h)\'#a-|P"q%.OZLmG+kl7\\', '262417f4' ), + array( 'Z9]\'@.ODT8N[<0i9ak,fz\\B', '30233bfa' ), + array( 'GJjR6Xis3$R:Eaii6#9q?I\\', 'b1d4e934' ), + array( 'Y+IerDB5kl ?$X*xk/L\'T.q', '20d3742c' ), + array( '?DtX75#sn/=U"ax7Nf8nkpx', '61619334' ), + array( 'd])1d]?W}dLW{b[oRj.)lo"', '366d01d0' ), + array( '%?h=.T/(:m1LRol*nQWGM;#>', '6ec48f20' ), + array( 'mmLv[=ya\\b k8/tS|\' Pwl[f', '9fb5d98f' ), + array( '?4/lO2,>!X5]u/?Sr@@,O5_M', 'b476c549' ), + array( '=_~5M[|lo,Z?>f]@?s}6$>iw', '621bbc86' ), + array( '^+$/@c]^C\\sp9p^)|9I<!(\\A', '3ea36c5d' ), + array( '{[W!yBxXM|hm`FL$$Au=2UF0o', '0f54780f' ), + array( 'pMpx*2tfjv`-o:Zl#IMIuRN8I', 'c19ab462' ), + array( 'kK 3[o$)a|4trz_i\\lZvGGzpu', '1cd34af1' ), + array( 'DgHr r_Krr(cw2EuF:iByS~f.', '0d60d437' ), + array( 'v/Vq L7gu+hhj5\\^=@WPfMw"7', '9d0ca535' ), + array( ':{k:cz2sQ$s~<\\tGF^3[<ry]JJ', '92579a4a' ), + array( 'DwCF0^C|y(w,{J1pJMM?ut~)Q<', 'ed50fb22' ), + array( '|KyGv>@;eQy)Ns1F -q1}<_L\\U', 'c5960f99' ), + array( 'B\\_sx\\@r%71FRvwM!FA3lA@_S?', '51be9eb7' ), + array( '{4lXj05K$.)D".\\3T0+L]-r @`', 'e8525ded' ), + array( 'Aa@u"=+nvu -A$;JI>X&R.7^[uk', '0510b06f' ), + array( 'Nu,08nQ.pn9`e0`rQd/{.MU5 cL', '43c2c9c8' ), + array( '^?BKn8X~QGP_8@yx&*Zy[@)XOV.', '39874c53' ), + array( 'dWr273Ub"n;"@bS!{szuz&Ptbp~', 'c81fe453' ), + array( '<@VJ&.>8ERn)U]DW~(, $!{y|"K', 'dc0d68d2' ), + array( 'qe<p"]GMcVk||>k&sJKLITYIYZET', '90be4d50' ), + array( 'WH J.=;0zc]_;J\\8hI?]sk+=@dfy', '5e1e1340' ), + array( '?-OwUOBcm^tiCRI^}\'wfP7ED#PaC', 'f03345c0' ), + array( '5I>UWmM->pq,Pgus:?S9FK!wbF<e', '94060b65' ), + array( 'w~*-IHc!72/U$!bThYH$x|=@H>9+', '547a6b68' ), + array( 'eUq]U{k~EP!]b04f2v;{Qd!Ka?l+^', 'e777322d' ), + array( '&6D[)#2&n1L?2*#C?iU7&RhkS4Nr!', '4a78ebdf' ), + array( 'YR\'ovcyyu i\'L*:W-^vw5.}gvj<+9', 'f83d06fa' ), + array( '0-rb4cZw]Um^?u+J1bWpZO&hNn`:,', '7f314445' ), + array( 'lS<yG /+Z(i0vHPmTz~8Rpr#w\\Rf>', '831a8450' ), + array( 'lr+A0&h05sk=^{4\'M#\\H"t{sh kESS', '0c39d6ad' ), + array( 'cAFobWuKh,@TJ Q_(~bdHeYEYCEEhx', '12b2879c' ), + array( 'xM;@=}x4JaAk7kkhLsh/Y2t4WOW}uA', '81c3b55c' ), + array( 'von21-1*B[lcH$P4m|)V-bi#wARO?I', '0d5d6b27' ), + array( 'p79`JKn[V18Cu`GGu5D lQbVTZx(+8', '0fd3c926' ), + array( 'Q{Pk]z7LWn^o2UQZ|HpAH]s,5If/QrG', '0f36a996' ), + array( '$oxoMs(zLvY=*/nd,8UN`4ClJlTY>G"', '80b38386' ), + array( 'C7z4do<_<4:Y?JI$WaZ\'BoJ0;7dtV,w', '9874d3b3' ), + array( 'yDr.*cKj `%Z P$%(f`/*PY:kq~aH,Y', 'ab5089b4' ), + array( 'BQMQ[1|F1]Lk]|pc&WD5buo|ab|D+*}', '5d600f5e' ), + array( 'N[K 7\\|^n[+[9(L}.%BDg85ezwc?$m>R', '1966e89b' ), + array( 'JjRaGPA7,LrFU?EcEg).!?t{7X<;F[mp', '908106a1' ), + array( 'FASnrt& BxGw9l\\_TemV%bR=<oXbKGTr', '824f8688' ), + array( 'i)a\\~g]Aa%9{qu[G\\J}b.Q JBY.m"c`k', '195cad65' ), + array( 'lCIk,\'.m-Gj >GH{qF^!x_L;9Z*;?k(,', '36f68af8' ), + array( '/Qx;Y\'*gOtgn<0j/WI1Q)]lC9w_Xcges:', '885fad78' ), + array( '^0tf:\\60E%MVp].:n_DMMgfEH?*0%}Kd.', '7f86cff2' ), + array( '@LI}cZCi)yZg)tVi:%8#k^K,h\\2g(vvIC', '3dd2e16e' ), + array( '@G\'{jp&eLmoBEY\\Jq_6Q,B:hT#pLy:p;a', '03b92168' ), + array( 'x8Mj>47,$YQ^6{Qv2##U>l+A]W<xIW[Bo', '7b4dcec0' ), + array( '*-.>D:C~l"6hS-{W1Qu}]8\\6TU_,2#|<0+', 'b86f1510' ), + array( '[UF~U3"k|Vyx.+K$*)<f@p= }O#zl4\'HjM', '93a09a8c' ), + array( 'H@aJ,^!&W02$4<-Q#MCANApR=]fD\'RqPrT', '2d094101' ), + array( '{~3|&k.8oCU}tXL9y{[kNxJ6=Rh0#[e~[x', '72d5e000' ), + array( '|ae+zUNPTD*!]%|:pL3<bQnKbr(HqcBnF(', 'f4f08743' ), + array( 'zA]Jr3n|4M"2gs^{0AM m0ruYeZ{U!$PCbz', 'ef1f608e' ), + array( '6uj4+87=!,{|=>J=,[1#6v]2L^7}#yx:pdN', '800e955f' ), + array( '{}f:~r7{0UGNa$_e:WCM$#d"&_{AQ`pN^Wh', 'fa87c111' ), + array( '^K [\\U$+8)k~CCBqGEWJL7Fnh(_7g7!Fc!"', 'f0d49ddf' ), + array( '@W\'Kp08oT[3F$Y}N\'6uu ~U8fm9-Q;0qs8>', 'bbc8b16a' ), + array( 'eHVU|2iD7CCfJY]@Y\\vqCd,Q6Gb);zG!D}WB', 'b4c1dc4c' ), + array( '1BfIe+01dmR?JI2n.>@Ef#N#~u%Dt\\f\' NPe', '7c98ca04' ), + array( 'Y`w?NJ_ysqh#1)Hw-w{-m!Qc^9j^g;EB{=bK', '79ccb205' ), + array( 'gBF\\5/_F9)?G!;Un=\'S{A>[)Y!LV>/#\'QIcg', 'ba719e14' ), + array( 'YC.rLN;Mjp=(xp%:0`DjbpB! E(Rol:I0I=]', 'ce2a6b64' ), + array( 'xY,cJIlC;r]KT"77sY9t~BGo/b:@-X}&2*j\\T', '87e2ae2a' ), + array( 'X!pK_=!bT8V.RL.ts}$W8DdqCk$NVa$0ct\\C2', '380f7299' ), + array( ']\'gv^uI+%> #CW<h=.,)3[`t_pXTM|g,$O#cF', 'eeb01e49' ), + array( 'LnKkoO/Hkwez%o.`Q$@C\\upZ]}_.!CTM3!:#P', '9f74a4c3' ), + array( 'IK=B29G"G(SKIv)?hc}gC,hga7zbQ~4zKR>]k', '4b7036db' ), + array( 'e`4n5`9-iXvNV^rcGZE_V)1U>-!pL_]2@q"UR;', '2ef7953e' ), + array( 'b=sYlK9_/`;TAr^SH|aJm.+K@K>C"p^d/S?{~X', '58f87a0f' ), + array( '\\/:wc\\jC04@q_. jZA7xd9jD}zw>vwwS\'3Lko8', '924bf023' ), + array( '/ MOr.^rx9503yI~>Hy7gp/_E6rr#c,2cYbWhA', 'd2c773bf' ), + array( 'Ja[`ro[=nzeh2MZB.!Y"t\\e!oJ[R"DtM\'P.yAi', '59761485' ), + array( '70d}ywLU:ZVs]LQCMAn*sqOh@V:NQ[9il~hgw5=', '1616e5d5' ), + array( '2pt\'NAXroybznTJXt"rDTO^>=^(%V=Bi/8q^ZJR', '2b93c8c6' ), + array( 'JE5E5jpm_r`%G1cfNBnSy-vd=0V{j!N5Gc[\\NMJ', '22863e0e' ), + array( '/@,4h=xPl<@@7N8{kHRg3T7I{z&YJS%Zt2o^Oi/', 'ce54d2ce' ), + array( '<&O]=~v9j?lRSAi}>e%w1X}lN0\\-`G=}Mm[klS&', '925e90a6' ), + array( 'Wsr+G4tFS[KLm%JZTZ8a<_ :.mvyZJ!3>s>f)3-]', 'b47ebcb9' ), + array( 'oY*]^T830PuL1uf?d^9?);RG0q.9&<vuu"STVlhg', '76d4ed18' ), + array( '>_5OV|n;[)ZdE.-U <n\'Xf|NhQ$@?m)]M>.$;}?w', '2fb33679' ), + array( '(z]M*j#+\'r2_Z0/Da3e!"n_O.mTJltBto CzkF&r', '569492ba' ), + array( ':9SuIb:+v!-xplI~[}JHrm>cna^Z)eND~":IeUT]', 'b9cb09fa' ), + array( 'WbVHP!H- rVratWPW7+a}Y&|\\AFBw{!O_Ww0YA>Y5', '26b7c332' ), + array( 'tMvi&HB=S$;.+9jL`.D]/t=gmNB/l{EbI<MOdom9t', '7de5c876' ), + array( '*G C3L$BqbRf ;UO]d=Z+ %GMU-=CF2Mn3q#`vFRY', '627567d3' ), + array( 'y:Z6o*sUHO`HT)u*74N]G|MZnQ;exn@r*z*z&}QNN', 'b1579567' ), + array( '3v#<m.S#]2KZ`\'J3C1,2Q =M*8S)i"W|y[:hinlH"', '948a6c9e' ), + array( '9#b@Nvc`$v3$4`/L4977q42MO{8>i`@#d$C4z\'t~~(', 'fa5a6693' ), + array( '$3h4_}Mw6?-Im\\E&z/g<2M@Va<^W<]_@pITQH#J^BW', '5db013f4' ), + array( '(14N80^ LqNmH0+\'hGeIhWr>*<AT{d,$u@S.Q2/~$]', '57cd1795' ), + array( 'mMnxUWA;!*stH}2iR.O_3E!fTRycQ}B?K18"iZ=kd1', '08722fa3' ), + array( '`.0sxb"HC6nD}Cvw\'HvJgC[!EE[c1AtrO&fIiiq- `', 'c89edaa7' ), + array( 'Q~%Hv-qmWZ23\\WY9;kZ1^+8FT"1G/2)`1.*)<{vsW*(', '702aaaa4' ), + array( '4aaM}M(0-4HTiJe1Zw;<*JF3fC+Zz5c/wE]vsf("zQV', '197ef095' ), + array( 'd|=vW63s@];SD^_ Ztcjm*He~/m!+?Xp<vgs-{hMY$"', '1ed13f33' ), + array( '}cb~>Xb)FmR,laznl:H^V?FKLC4z|9}{|`z<:^F`Lxm', 'c04f1349' ), + array( ':[h*I#R(ZrO\'?r<;oU:lS{ho6G6vt0e/kN:6Rl>._m5', '48c23cac' ), + array( ' aQ<R(V?[R(LhPb`EsGU`vovJ]5X>$n?eA[9I3X&faRP', 'a53ac530' ), + array( '262W+Y.kP}b{[wTz|D:bev{0*U7p7iBJ!T#,.1w_/Z[k', '05d91499' ), + array( 'S1gPU"4<x1M$gdu N8JPlM]{^U[n18[eIC7 FL<@^iDF', '12db23fd' ), + array( 'N:G}SqO@@-< cxnt1K[[or[6@wV~b{F17m0j__,!mI!Q', '2b2e3dde' ), + array( 'BpGT<#0-vkC7dz6Gv\\Y.Kjx+K&-9O.jq 2G<6WJ-DmE*', 'f4c74b67' ), + array( 'h\\R_:-newhqCn~]>-I1.[XKr1u!UcF`M#3-=@|#9et]Tt', 'bd458351' ), + array( ';r#d$1A]\\4nR6E6\\&d_:q}Zn"tUwR*lm}oS#!u`^+P1Au', 'f8e9f1d5' ), + array( 'H}|-^7 ]ro_gEW;PD*N5]Q7S3u^c\' YP~W^^n^<bO{KuS', '8e947b43' ), + array( 'fFxpu.OGE$[;c?CdytcQSCA2_$b[PX08~)*t8Y=]^yyB9', 'a34f6609' ), + array( '>(33lef0\'yo,\\L]6\\u6e ,}ZI\\9CW\\]udq)QWpb_jRlH~', 'e9d8fa86' ), + array( 'J^[@tB@!A{K~5oVqNLW@V*xGlY3@F[@q;|21?S3aO_`eP8', '104537ea' ), + array( 'X~e0@<;:d)swI;Ti-pg@"(s6iDuK*GcbFIsgf/"K9vCb2x', '7c5f8020' ), + array( 'M?i5_l=T#(xyT$A9fhb[QJkSu%K:h]46}}L^kj3os-iH1,', 'ab2ee1ee' ), + array( 'axuETGoA{fFG"0&6G$4sb!_upS#[{5h^.^$c\'t%#[LK]\\Q', '8520630b' ), + array( 't$U)x8*X/{,3W)H@hW m;\'bA+?mV}K(rP^|Iw("\'$/;\\9d', '5ec32f02' ), + array( '|"<|oX%Sz0rifq5oeeNb0Fk2NpBiM[OK^lINFN#A^u+FhA7', 'b5b5f4e5' ), + array( 'N(e18-}K[nmF<Jvg)c1X*`[L@RWg;y~i"e{:rzeOiTv&~mn', '14562c12' ), + array( ')R!b\\a?)"qai.[ix]OuxCp^rZ4ja3XP=+R h4?r72T"@1k9', '01b11a54' ), + array( 'n</g_!GS[[>=own-#B.lVM_n`5p!F];5zJ}ZLF.("MFrE6!', '8f9e0173' ), + array( 'IX/60]v~>,p@RO[hJ\'f%S.4[1a#$\'9%Qr5g#r_#1ktQ>D.(', 'f4e44d2d' ), + array( 'n5oth}*E/kH4sb:FVO.ZBn]TZR\'yv5"fJq\\4ofZ S#4HfNn>', '51b1ae3d' ), + array( '}}xAlVvH*}B"4Eh_7Fs(.N(aR=+:lyXkxQ.f)%/3#R57w~v/', '0d3e9950' ), + array( 'Ek7S;@6m^A)L<a864G|=L,QP^fgVf_f,L~`g?vV~9_KVBdlW', '8c43dabf' ), + array( '-itYuG*U/r-uSs# rch3[?2t ^KBD8yQ#o,y86OG*\\=]QA^D', '4d86d9cd' ), + array( '%GXafjWgJ$*o=%B@uN:.ejUoGsMy5,>;Tv|<bT$.X.~u4A7*', '38b099cc' ), + array( 'pQ9V<oFdct^y"}5Vu3rYhvgB&g8;)PFy"_Q?Ow%3md.pbDHYW', '859042fe' ), + array( ';3A3{c:c|UmM{gP\\:o,3t@!ZNq=s:vKV+lj\'P&kM[Y{XBL6\\<', '88b478a3' ), + array( 'Bo2cql2d+& #RW/@B6qH#@%\\<^ ht]&8N9{@\'/%36%6h\\F* \\', '4b1d0513' ), + array( '{I`<N>Y.>C$|J<Kc8kkHq~^w6GT\\RU:N~{kN:E\\YiaV4}"x7n', 'f1ce1247' ), + array( 'e_`d>Y{f/Y9dsgdpT3+zpddR<yP?rh.XHo>fI;NXtg>iP#Z%6', '3e4eb24d' ), + array( 'e \'KeZg_,\'St6-=\'K%QfS+\\;IFkL!qcgrk3XF{9R$lG;yeBFjs', '69476a97' ), + array( '.? j[I2Hv4:Z{-F0fm, A0mhLhOn0:c>Zc*6.=^%Qy`M(\']nuj', '9097fe8e' ), + array( 'n7{]!HFP7Vk{uF`!]n>=to7U>?]{.Sg}kc\\l,#>DZ*@QQ"R/qq', 'cbee4ea9' ), + array( 'Mfbd<!$z}3Oe2;In(UrFyMQ; $=R40Eav(F4)K/(^^mpz8`#mS', 'f19251c8' ), + array( 'Jh!|%"!CT6SzwK#?_-jo5JO#<J<|N*PysRwyTy=*0q%(=)G}63', '8f27bdfb' ), + array( 'nK]?Oyikv9vH4k{,eQ&$[6va>5jf3"y#NWB~R-kJGcr[Oog6Am;', '9cb72621' ), + array( '}%3`DHK+\\N&_|^#|10h[WLO4|?{4ajP_pc@5-lAi<GJ:\'M78^!t', 'e0686fbc' ), + array( '7NEKLdHaG32($vI:$7[nS$9n+f&DF(9]V^*#DRdlfwtko>&tUbc', 'e4bd2dd7' ), + array( '*f|xrd 8,(Qi^1sbVGHC.@9y1W &.cj9Kh2>M2VZ:)Dy;9\\r`%6', '5efb3af6' ), + array( 'oFOiW(j^7NIPy2b9`uo;1y`+6zh)\\n@L5p6mx!L0OvaJ)Dci;T&', '05e74ead' ), + array( 'LNfXdaAn>0/jF "5y#b+SYl}b2bMM7Sze:SK|u:<&J(MJ*bD.EOb', '17cbb538' ), + array( ' <abND0|\\dwC Kn|A*:HTCv NZD] t@!1#c`Ht]%YVHY"8WDBrlw', '4eca862a' ), + array( '6dwd?=B@2cADf%&0zd5U;]/=ugb9[P2q5*WTHzt[_6!G<\'W8klm\'', '296c9ed7' ), + array( 'J}EAe)ZBYl4nwlDAh9|HP}om&H&q5sy`q@#XI]z$K0rD}7efQc0#', 'bc868018' ), + array( 'a!pgIwZ^lU@^uC8@"3DND8rCPY*#=:\' <xhepDE]ye=p*U1,iVZ/', '09251477' ), + array( 'oNRA(\\DFwKF4D/z6S@sN\'1?1gQ=R)xaxG4:Pq_vj+= PMzf";[QCm', 'e8f565aa' ), + array( 'pTUCr(LkiF4~`eq@\\\\Lz\\|IXdLt@}8.nld2_l_LW&aWfHI(&&U!cS', '40202a4d' ), + array( 'K<8w2YvJhe8Mxx;YFs_)KGQtPW{&Y`Z%}r}0Mt[6[scUm~/4rn=?7', '9d3dfab7' ), + array( 'o5gG1n!rI\'p=&!jz]!VRe-@d<TX,rwCb-,+?z-2D4$a;&M6cNm65z', '092e633d' ), + array( 'Vy8,SD LhcZtnyo|-421vM8Dc{sR3)Ni$fvX,w%t[_iKZYHhnZzf(', 'db49c4e2' ), + array( '3,l/ @B*n-/U%gb|lWYMA&){Orj+mQ4!]!1^BTi1bxgh`JfN"@|DG&', '0c69cbb2' ), + array( '@vx+"g]7i<9z{[Pel4^U|? cn#%kGLqgDksGSR^=ow9kSjQA~0v{Pv', '8aafa096' ), + array( '_?zd,B2~+Vj ~?S]]CVv/+aaL`qD]C<=c7#oZ5oelZflz:KX^"Pn.3', '2da2dfea' ), + array( 'PZtC Rf<oKSs</),uvf\\cbw/<W2lF@ v{u:{H"88Ml-i{6ur.]OqAH', '6aa6fe03' ), + array( '"] 4JFTK>PAXMi[e#*S0sPGjCUIsHk=JI=^td4A#eb\\3M8yQBMb7~+', '50438792' ), + array( '#CaM8*9UUbs5XXIy[/]8B+P=]sjA+jL./.\\G9u|oYp%2JO,&_i?"up?', '5a10e446' ), + array( 'Td+upvB~&Q\\NkRL[->`?h1Lop7/s- 4ad@XU7zU>M2l9e9trWV3Ag_1', 'b41de8a2' ), + array( 'Xw@L&@ah&"A\\9<3WjEE$,_y 8P3Y9sjrk,@rM"[S$|1>:Du%j<*v{$v', '3d1d96c3' ), + array( '4T+nn~Yake"^4$;g)8xGR>>X)Zb Wfwk<#Z+#5mo{oO0tjx}#rEV1c/', '021cf019' ), + array( ':?r;vZ3cv7?#:Tq+QaZaWE[UHN{ ``0{ #7v]KZUbyX}OJ)!-ccd*?;', 'a52533a0' ), + array( 'Sn8SOxcLxfcpE0KzsFTqu~{w-`[rj{/>jGr;@Vg:>L+c]W_Q}4Dt4@lA', 'eacea244' ), + array( '"I5lED,1k~M-V6GtcRYA*9s)N8}bYk%[6;I\\_UnLU<Z,R""7U\\X_vMiE', '8dc7eb87' ), + array( 'eg)?T/{kKEH+{7XRT3^(6a?k>xK6F6\\-~eLSuI@AnhMk!\'>V:}_P_~<~', '7481744d' ), + array( 'xh5@~qM}XzRODrq4\\? ^F>6a<u3|uO{n9209%]8^Yk.}_ 3=@3{gR2In', '4da520dc' ), + array( ')\\l~-hmG{}`"\\y`7eo6FpIc1\\_x/rC~{ k{.UjURi7TF16]w&s>w>"*z', 'c6ec7195' ), + array( 'b#+VG+SGvOUM:, $CTKUj*Nq~mi=os9SwD+?O_gG0>tJKtOnJ{E6&s(&a', '6976d3a8' ), + array( 'rCRg\\\'`"2!Qriy#(nNTd~C/ziE"]N(@AKr))zj+.k]!UW$^FR3,QW;MA`', '57543a3a' ), + array( 'O /X@Q%4[.0F:>2w?hPDGvwZ$J3?wT!HT0!ub&+>4;dOZwGy`w?)o7dsa', '5e4ad807' ), + array( 'w4ZM5##F%x)+%G@A-o{%8vf06p!NUu1N*k{?o~etxn }7A?D1;JI32ZI#', 'c01f194b' ), + array( '\\wXR)(]u$|e#cZ|SZzj{;/.WZXjl45op-ID7Q"-U rYcMV7)R#&n35Fmm', '4e92f8a5' ), + array( '2Z"GJsUt8lF;z|;mV <.8F`;MPNbw<Q*vTRBH)7au]|q[9_29|ARC#mpS<', 'cf4d6b34' ), + array( 'TKY&VQZ)t$2,e)jczF|[Y7Xzi|~WnRtC~OIU"%_v)r#n{nRw6PTph.lR+k', '7a8a94c5' ), + array( '+y?!>>PgsSmSJvFNfC=:<TjqES 3\',~2\'>4E\\e.Q9{&crL2YpPs.%_ K4 ', '11032641' ), + array( '_;-^N4}bZ[Hh-ae3EX`X3R)(`/h`[|a;9nzg$xK^UsHcV.w{gXUz,^$lnm', '9298d67e' ), + array( 'MKj/f%~bl#\\9b2-+vc:n`"H6}Tu#Aepo1\\ xa~[O#8hfKvrBZ-2</ZS.0I', '0654c0b0' ), + array( '1Q/"BA^B:ABvpE0Y-[Q ~--1I=l|L|G]OW`qy?44`V,R|<-*w^*wk8)5Vu3', '2f477f17' ), + array( '#r[aB4B5.bIBD Nv}j$(cb3[OLee$\\x\'PUhsi,)wnR;3Si*QU/Z:rmvB;\\(', 'cf7e00ca' ), + array( '?9"GiW1^B=g:,:U@n@J@vZ{1Mi(o&exE zljS~Iu<11ILgi;(5\\~oX1=C:.', '2b97bb55' ), + array( 'I \'n #\\jW[4NxF_BrH-.PBjP2CaPf|_1|f!}j^iC:}q4DRW7zdFL\'1|:U_k', '8923a6db' ), + array( '=\\KNZ2OY}/CAIA3^ff6~azF.#W,>.l*LIU{%gL^f["(&D<d,${,evRtz+"9', 'aa215ef1' ), + array( '9nCe9xb>a/}Ij QpEnUQrQ]YI0OE<Q^U@#<Y|~x^.v(xvZj=J@n=rMw<^Gaz', '87741385' ), + array( 'xAQ:DnsBnl"}c*w[ebx1#hNu7G3unuqh7D#\\3w~"d" I,w&rZ $^iSU!{hwj', 'cccba4fc' ), + array( '_jTw/XTBPTE5VF_c?eWzf\\YP1/Q-xJxY5MQD&\'gV\\-l4TMxs4Pnz.HL?X}LR', '5d4564df' ), + array( 'HF,^s]#zdjRBx@VMnOA# 0~/YKN3J{esBrR7QV36BeY;\'0iu_+y`<yovF>*q', '3bec6d86' ), + array( ':pe]c9t5o(L2n&Nv68lvDgW`bGX)fbz"Sa_8zTNk]z}L"LC8e10*ygk\\0Dfv', 'fef9aa77' ), +); + +$i = 0; +$pass = true; +foreach($tests as $test) { + $result = hash('fnv1a32', $test[0]); + if ($result != $test[1]) { + echo "Iteration " . $i . " failed - expected '" . $test[1] . "', got '" . $result . "' for '" . $test[1] . "'\n"; + $pass = false; + } + $i++; +} + +if($pass) { + echo "PASS"; +} +?> +--EXPECT-- +PASS diff --git a/ext/hash/tests/fnv1a64.phpt b/ext/hash/tests/fnv1a64.phpt new file mode 100644 index 0000000000..8fd206ada4 --- /dev/null +++ b/ext/hash/tests/fnv1a64.phpt @@ -0,0 +1,327 @@ +--TEST-- +FNV +--SKIPIF-- +<?php extension_loaded('hash') or die ('Skip - hash extension not available'); ?> +--FILE-- +<?php + +$tests = array( + array( '9', 'af63b44c8601a894' ), + array( 'w', 'af63ea4c86020456' ), + array( 'v', 'af63eb4c86020609' ), + array( 'Q', 'af640c4c86023e1c' ), + array( 'd', 'af63d94c8601e773' ), + array( '"e', '07cc2f07b4942580' ), + array( 'pl', '08d53c07b5755019' ), + array( '@L', '090c3c07b5a49289' ), + array( '"N', '07cc5a07b4946e91' ), + array( '&O', '07bf3907b489ac22' ), + array( 'KE:', '50d8ad19d18c8505' ), + array( '",u', 'd511f317d88f429a' ), + array( 'RX7', 'a0549119ff001600' ), + array( '/<i', 'eea15a17e6ea5bbd' ), + array( 'Otx', '2ffdc919bf72be52' ), + array( 'w/qn', '9c6e50f771dcafd0' ), + array( 'aVqG', '4f1788838c1bcf9e' ), + array( 'G^hs', '33551d7dbbea0209' ), + array( 'a7z1', '4389ab82f4d6a7d0' ), + array( 'c@Lf', 'c14b5591800f1338' ), + array( 'MB:&Y', 'beb09d1ee59646d5' ), + array( 'ICDy9', '4f05ddd19c2c2285' ), + array( '>qH0a', '370b9a8e5a2329eb' ), + array( '*fSR/', 'f78a85007841cb19' ), + array( '3;$tS', '94b935103cc08938' ), + array( ' \'7AS}', 'd81e3aef0fde6ad8' ), + array( 'ou9vPc', '549f05284ed347f7' ), + array( ':u]S4O', '31b0206c95a52e7d' ), + array( '{D2\',e', '3a68240ea9539e62' ), + array( 'Y;yt@n', 'afdae733c98065a2' ), + array( 'IAu`bI_', 'c311eb3e8f9f51c4' ), + array( 'R@xIq]d', '3fa1984555c55e46' ), + array( 'g;8{k5@', '9e9c5e80cdc3d58e' ), + array( '}<Ldvh^', 'e5be53f31a393f34' ), + array( 'k*N6KDw', '558fdadc82fbb9d4' ), + array( '/nWb0Q-"', '84fcc8959c773b75' ), + array( '/qiK+e7@', 'd177962e1def962a' ), + array( '\'5]SzT=Z', 'befb197ea3aac960' ), + array( 'AH)WsNO$', '63dcf1c6c88d5426' ), + array( '=(fNZsPj', '806bfb067d62da41' ), + array( 'f:6q!M3(c', '5125f3e296d40b42' ), + array( 'p\\^Fz:gCC', 'b9ffcd384d90ba98' ), + array( '@7qp<0x#^', '1da17e378a5f0686' ), + array( 'Tw/?^JUQL', '85f6d1938d45b818' ), + array( '#dTfU2F|-', 'b66e4e092e385394' ), + array( '`dP%&hvv%(', '84523fb38ca2975d' ), + array( 'p)fE!vd`B;', '9c94c2a34d9f95c3' ), + array( '2n>vD&MVMJ', '1f4fd77c72b6004b' ), + array( 'd//546~,-$', '159ef268adc718d9' ), + array( '4~.{E/s*p6', '31a60e2db942bc67' ), + array( 'F#&dyJkG!:q', '33b8c68aed55c285' ), + array( 'eI"{^9zjG ', 'b42c013a2028584a' ), + array( 'F/|k>pv/(=3', '671c9537b41d76fe' ), + array( '.#-XoUZ*HAT', '84e0630a952577f4' ), + array( 'K>4d:~-: SI', '57deb72cc24c6bad' ), + array( '|@hn8xvV,%Y:', '157fda2502fe1297' ), + array( '^Jp:T9\\*ez>K', 'f784c17d1a2d1bd2' ), + array( '5>XP>-z<Mc,f', '6084bce050682a8b' ), + array( ']#=j)w&hBv#w', '7a2da4d0b1c01e1e' ), + array( '1_"vZ@Bp_{A}', 'e1e8fb095e4709fd' ), + array( ')<;W!G>^K\\JTT', 'dd737d6771e9cd69' ), + array( 'P>vGAoX"qP]3s', '0375e65060074988' ), + array( 'Nrooqy-.Q.Upm', '135d77993c647f43' ), + array( '"M8W"huy18ij:', 'aedeb2565e1c29f7' ), + array( '\\;wo0Gb!8UzEc', '59ae633a0b17a945' ), + array( 'LS:=B<kZtmDjhU', '2b2e674d9a46a36c' ), + array( '$S@>0\\7 l^cmw:', 'f21c8cb206540a2e' ), + array( 'h=}6q8T4U@nJ/3', 'b258eae8a4671c77' ), + array( '6wi:L*Y\\gp]UPB', 'bff5f2c9ed84bce5' ), + array( 'CH\\-fZDXsxlJ9\\', '298d4e05d5a47c45' ), + array( 'uIp,BZFne!KMr*#', '8641dfc04c9fb552' ), + array( 'CLGl)USdy-Yry$-', '3ab1497c481f22ab' ), + array( 'WyVH\'y#NhhO57B?', '8dea1d032c597f60' ), + array( ';fkbSt8(Z264&09', '4b875649e7cfa1a9' ), + array( '4g3k1:e4iN}9c6[', 'd33acc8fe01b77fd' ), + array( '$QBo4veM @`6UgGn', 'c4b17749dca1aa6a' ), + array( '{0#gA>MV(|TAaj}e', '067ae9cfff2cd6ea' ), + array( '=AVR8< 9]aO3Iw#E', '02bad50d48a8e564' ), + array( '(&-JD[!LYVm<Bl#_', 'ec868a84ae92c032' ), + array( '.Y2Gv3`Tt1h>)kd2', '9f7776edcdaf2937' ), + array( 'qq]6N_c)7REY?H:M"', '1899eee357e747b4' ), + array( 'Mtx`VNVg7uq#Z%uMc', '8eb7e5a4bb9fb739' ), + array( '-{Cp%ZCK5ctO2v}\'p', '58ebf399369565ce' ), + array( '^^@6GW,9[f?Q4#^1G', '76ab1ea61d68a738' ), + array( 'P7#tb9XWhjOgrAGQa', '29294a2d4b758119' ), + array( ']x9i3uPSGeW\'v~W.#L', '508d3356f8ec886b' ), + array( 'p<&I&pxmd:57{r06\\D', '4660b5543de2afdc' ), + array( ',.wTsO[jO4xSajog4u', '6d85fca5fba07683' ), + array( 'Y.c?HyVElg\\J,hY%>N', '01e82905c1f66c8f' ), + array( 'Uy:&/4Yq~IZ4@5B%Tk', 'a05cc808b297050e' ), + array( '~+1lrm8 Wr&uA[p[a!o', '22783c7a8fbe4826' ), + array( '<roeM$\'bG,73+CDx731', 'e00ac9dc3812b301' ), + array( '7j$>aFyS#\\TsxGc_uhf', 'a8cfc6804bc24e1d' ), + array( 'X0rpD~5iwL|*dh/#KU|', '17b538fc3a531c98' ), + array( '~YZSMS{14qzzK,n=PmR', '47a7dd2be021ae55' ), + array( ':f 8pd!!hMWeL1A!^u|p', '4c9d34c81b647804' ), + array( '*ol&<xtZIb-dJ.|<r~=[', '7d8483384e8a46c8' ), + array( 'LuBx\'dzfZwXehEk%>`_h', '25484f299d38dc95' ), + array( 'DmMn{K+oKILw?oqGTl/0', '8ecc9d0f58ead225' ), + array( 'eguN-bTLC55h$cX!0cq[', 'b3e4439d186da97b' ), + array( '.?TN/Fvd4&uznlJ{O~Is5', '983efebee9945885' ), + array( '_\\9C5;Sy-0)LdW[,NAAU7', 'c01a00203768a32c' ), + array( '<D%fATfjH{K&6n;QC6^T?', 'ef488311549372ed' ), + array( '+9wgEG*g}B$BGjd{QPEN{', '2c57de61c289de00' ), + array( 'Kdkg6/~uc>"}7jD^t,\\80', 'f83a6970b348b383' ), + array( ' _{e\\N6#|2Nb~7y/6orUrq', '26006911a7c5d137' ), + array( 'l]6LRC)jS*KPo)~&,{9Z^9', 'd848d0547a41bac1' ), + array( 'rXH)I;^<.KyExMh"9=-em|', 'ad7ca21d760bab1f' ), + array( 'nl$zh>UHWH" RL<1hJ]coV', '87be1c6aab3568a9' ), + array( '2XYKuf1cd Qhz;\'Qc^zf^M', 'fcb5e375b267b232' ), + array( '3z_|F>`6usoP?e8QJ|R{fM7', 'd6cd721ef468a686' ), + array( 'm {Mzc-Iv(*tOIVe@JVpj=*', '5ea4e77a701e1fd9' ), + array( '<g\'ndm=|\\=y*9]7cU@nJp9"', '256fbcae5dc6e749' ), + array( 'VYL.K7KUT4]DyLav*~p49OL', '55e66fa9c0b7f691' ), + array( '}%mlP^&R6` D,8pbl%A1~ms', '1d260b7fec06fa81' ), + array( 'vwsg--8Z,=Ixn) A?`BdlZVP', '1ac9ffbeaf2ceff1' ), + array( 'H[qZ[_NRXC;fQSA]qjV`sW#4', 'fcd1a44f1f9644d7' ), + array( '8Ey&!PVJ-H%i)T=bwXII-j( ', '20541ecba873cbbb' ), + array( 'V^`K6d`O+ZU,,,W:U\\$_2BB+', '817f942d64cdf041' ), + array( 'zlU)W])/=j[SP<$[wYh%f@@=', '8a852332f2c99373' ), + array( '}E|0g@<b-qleOuumaQA2nFnf ', 'f817c2a8dc3cac28' ), + array( 'Wlgw-%uR#\':DC}R5j8ea/SDau', 'be35effdcebfb5bc' ), + array( 'VP<E8=}%%u2+le/s S8}&Ni?4', '31a4b812c4ec4d45' ), + array( 'LOhp1_Ga|my;k~Ab2LOw\\Cx1[', '21bc5ceca29e51b8' ), + array( 'w7*aW?/() 9hHzf6u"#uCe(p5', 'de09593ecddfbfad' ), + array( '!MYz^5rv@UO`dWidpS-l:Db=GY', 'ba497ffae361581a' ), + array( 'a-bRCc!|_`3RWS)(5n`~TRSa?n', '7d6da8683f44e043' ), + array( '\'#,O]m\\@A!%B}d$18\\eAdz0Ezd', '964a554b2ea62312' ), + array( 'xOG9>O<K~y:\\;\\]@ [%$l=`S_E', 'a6d30ae05805da81' ), + array( 'OokJUez}~9M;eL6!)Q]fq]Bwa0', '52a0a33924a1e495' ), + array( '5Bdth4eU_;;Z9:tgVZ4m[=@:%3w', '4e3d8a502aad23d1' ), + array( 'H+YYA|>7fR|<39XmSsb;K>P9ymY', 'a30084c8ebfe7959' ), + array( '5sl-<xgv:d5RLhOh{iBi=6MYak*', 'e4a386d2c4782f99' ), + array( '{fxU{lC**=q!XW7+$ Zm|E0gcG5', '19e6ce2e2493a78b' ), + array( '=*"H&iA\\f/!p:>b<v;S"?T].Q#?', '226c52cdff2324cb' ), + array( ':ffP%pSMw=oT$ Uu:sYVkt+m5_KC', '08df2d276c9a057a' ), + array( '2OcL7J}<<Qj4nZisZ?iu4DL 9WmO', 'f02866cab6af3d35' ), + array( '8:sJjWw"#u>@H)T7d>,@^v6r;crU', 'ef8377919e2a1bad' ), + array( '<a&T|y gRxiUo)v83LPwk\\9JTO>o', '99a9a1a21c2ee2ec' ), + array( '31FOsL%pG%Yz}CQnMH\'`tWY`5r+i', '887cd200603d7a11' ), + array( 'BJZV["&PN+Bv1{q0@C~mk\'Oa_*Bt|', 'faad097477f65bd7' ), + array( 'N_@x:wU=}&l*Ic<EVLfyLUfS&H30k', '26a5acae427f26a8' ), + array( '(.:hN4$FiAEp.P:ql`I:GCf|+:$TM', 'bfe197dd01c4279a' ), + array( '4@VB[@qoD8Ze^Ks/ff|G07oT}m`9q', '60dffddf1fd785eb' ), + array( '5g&V>I2_;#$T]j3*^CqF@:WX*-Vxm', '05994a3217bb26d8' ), + array( 'oj#WqZv;lWVp[,OF?Y&cLM%f%]q24j', '151f45373d53bd27' ), + array( '!%U$]H_UcL-;>iGm0gH7KtdP\\i.N|C', '0b91af28a642cac4' ), + array( '9}Io#(8b]|0k8NU`=fIe}t[bF8MUfJ', 'fd58c24dc342b56c' ), + array( 'y ICoML(0+%Av>pM .4Is2?OufhC<O', '199280a86e05b101' ), + array( 'n6O8Z?f\'Hw2N9*m*Wn9k9.~Y^t@G9]', '732c4bf03e824fe5' ), + array( 'v(tFAPf(W0 j^:uMDM<^:Vl90K/PrH/', 'ad49c5c4b29581d8' ), + array( 'jQ$1rTx{-*{xi7n7\\=T;X+(r;T"lHK{', '74f8023eb53a4c87' ), + array( '3|!EpV?lcIi]3!LK]j xC,"6HW85 d2', '45f93db9ecbd61e2' ), + array( '4a4YSjy@NC+,V,Y#jE#dh/f~W?8m?}!', '628239fa1e9fbf4c' ), + array( 'T_5/3 )TOL_\\$l7\'W\\+<E;$ErC^ac\\b', 'c4d6aab371c199b4' ), + array( '8=xGQyP&I}f&"S>*+z6GAQLfDoF\'S#jk', '97ef2b6a27cfe08b' ), + array( '@c3q]dx(b_/e3Mp?H\'gjX4Q}$w%X{pE<', '8a65a0d9c497dca7' ), + array( 'TY/3>(;"hJg{wY<A`$,:8^8=W>vS/<pd', '7d99f135b9dd392a' ), + array( 'u w4)46r^~nWX,x:0%TIdmg<,^o<z`"p', 'a3296f83b9d4178e' ), + array( 'az%k/<^m<NEtZ?0kDd5*R|F_[6|Ww~HZ', '6971ed23982e966c' ), + array( 'yNG)j&w\'U>|1]-|#r3-E0S&lj$Db#m>}<', 'b3fb4982abc0e4c0' ), + array( 'e(\'l!/C?-T|:Q -d.SuaZcM^)1bvOa36i', '031098cfb4e50d1f' ), + array( ';$jKG+X{(sN)"48U+z1oHoxYSo*5$@ ?D', 'd2ee11dc187ad41e' ), + array( 'kjlvDi 89*:MBpY="IfrB@G3J\\7k\\W1HB', 'fee80db84822febc' ), + array( '}@gh@ "K:Pm,*,.Tr"w4I+_\'CKcz]->\\N', '849ddd5ac8830991' ), + array( '&En&G;Aw*M#6\\W*_O?)[~0~Kty)#9eQ?+A', '58f765bdd716e1c2' ), + array( 'FS\\hLf6O}s\')SWH]3Hn3sc.|gGc:go[/C9', '1ef7be10e1e94525' ), + array( 'wo!/@ #H)W R54z$GnhVlP}QkfAGueamVc', 'fb192bd95f5f88b2' ), + array( '|vc!?mX?@mT<r|+\\Sx.RJy9lB/R$})h{ L', '3f2604691e2ced49' ), + array( '|?;U_[D4x81%te}#8I}Q6@ahE_q.[r[Y3v', 'cb8807aabe087372' ), + array( '/rST(Ll:Qb Pf8yej0&LyL-lZi_6Cs.Sga(', '4c6bc9be092660cd' ), + array( 'o/u+aY,2@D-&0>-\\8Yj&5TeLxZZLB=T3MK>', '9207d0b883378aaa' ), + array( '/%JBFoOM n[]\'5H-K}swvORCqpx%>EDNKnp', '34c18ad3e2030b27' ), + array( 'q_A@_0{>82gF]e:V]j*!\\zza:@&hkuZ^U{ ', 'ff47e63839babc22' ), + array( '6,|UD/=jm$&DapOcNJ^0e 7Nl.*Ld&Lz3IP', '8fc04f6e48534104' ), + array( 'WYnCGrJlT<<8jgw{Mx4|eB\'2\'._#A)SybC>+', '444cf38629f9f5e6' ), + array( '6hxk&5$p}|lKu!I\\DQoK_ON!X#{<G:H]#AI*', '93be8d30fbf2a711' ), + array( 'WNzUKh"BjL~/}o[]?+_x.[6Vu^4y ^$X- .Y', '0457576f79c1af9f' ), + array( 'h1{T]{c[k?:+Ky%ZV;1MzEHz$MT1Mbk7sgkR', '60d5a7492fab7ad1' ), + array( 'dP.PpH\\<Cbvz}(HxNqtS?Iem-Q%":qT~CcP4', '0005d93c99685bc1' ), + array( '-.QPpIKoRth!f^U\');t7ly9\'ln\'0RWE_ew1VA', 'e13bf2cdf312dd7b' ), + array( ']FsR0u:oKAxg61U1J\\~9d0l<UL#N]Zo;"dn3[', '53d2c531034cdde3' ), + array( '*#\'K|ob.EsY#rsg$`%Y.((lcx(e]wx9"|ANy1', 'e16aa67d2eb4115b' ), + array( '1)V%bYxVB}8GWFP`34Z<z95tS7qtek\'wt^}X9', '5511e58643ea102a' ), + array( 'w/[uH$NnU0#jj?e$TZWlLMS9UK/4IgNAw+7@0', 'c03ee6776b09be84' ), + array( 'e0eu3PaS7f)r?v?lJYCvhXAP\'bI3ziCaz)X.Z:', '6e63e154ba982b2f' ), + array( 'bq!kd@c%.._R&H+Gy3+CG&.jh)tA8P[zC]g)~K', 'd191830ad78ef4b4' ), + array( '..Zn``7l(2 3VG:e3#o)D(Y!$|_k&^85lr$MT<', '7aa3d56eb663566f' ), + array( ':]O;p&c,lv0\\ UdZVhW6U^umtbax066KsefelK', 'ea574dd4514d7c68' ), + array( 'qYB#6CX{~0dVF;6=)+ j%1"<\\u"D[ooNI3Q`W+', '58f171ded41e0193' ), + array( '\\V;B.b^D gP SV1VrnLu4)f$W18*qo5OGPrU3Qz', '11baf93d39928abd' ), + array( '4:L4n#FEv5rmJ{TOTeg^XXt( EzVYLRmg #V$I{', '0ac0c936f7521a28' ), + array( 'z_nh*k>Y@$B~\\zte{:`St.\'cu\'fL+1I\'q9p{%/V', '1a0c38f41c1826e8' ), + array( 'E4yEpu:WqU8FJGM/=Uvja(4hyMYvSiNx}H>o?YH', '75024234e0476c05' ), + array( '2/`XZ(\'jF\\a1?iF(dtb\\HM+BLTa<t;d\'KF_\'Ogq', 'bdcaffa418ba3eda' ), + array( 'vES(d>Om#EP`n}l1JBsg70M>[t~bDfU;-)DqGt_K', 'bda836f33c0092dc' ), + array( ':1-)0y;Z</CS?pq{eq^+Y4Gf>lYfa:2|K?&\\:B7V', '16e6a228513a03c4' ), + array( 'QZ+qL}m3oM?Ibf1!Tjh6&z4R;;/V]F-0"8#O6pc\'', 'd272ca04df7d0554' ), + array( '?#P"jb$?MlVThj\'%&6[d]it`#w19itA)wr,bU1##', 'c1b2b80d012bdf50' ), + array( '}ZXgE_lLvI1T3\'67 GQi<rs5e!x;2|?1Wwx}WfJN', 'bdd12a4f05766cfe' ), + array( '1\\$Ed;\\dc.O !D6fE/#X,Bic:carJ-B\\jG"Ob^4Fl', '9667031dfb5a16c7' ), + array( 'dGm)^UOmX(zzq_6VB)"PK^;s`jV? },dFzn%Q>s*G', '166ff835024396df' ), + array( 'n&:O=pqGrBsQ^g2J>RJ=_0c[ i->]8eL?!|\\qo$e3', 'bd73d9e41ae5c6d8' ), + array( 'w7q_J<~|g=]w!9wjF7I^}v}~s[pc_VvXnh9:&87mV', '81bed0679537a583' ), + array( 'ueW/^CUul5tc4sXoe<P=4*,}CF$\\^q3TXjd8/;.|P', '823ceb765e67c7a8' ), + array( '#aew:U]W\'{k1(iTOm1/`Dd:0JR@ea>6e {]:R<qZ8^', '3d7194b6e03cc23b' ), + array( 'kAHAq7S"wxf3*1eJvGh.-h+j$^(v9@U&b~GT7zV0s>', '01e47424ff38f337' ), + array( 'C}P)IHP3V]|bI!BQx[rOaUO*+f&bvz!:yQDCzuVRTT', '55e116dfbdeaffb3' ), + array( '5}VWPO4D vzO!&7(h.#jI|=nA8dxj9M 8$XhTm.Td)', '5ccd76496410ea5e' ), + array( '%f0<nxKrcup!d2:J,%cZ&{^^e4Lsi2}nx.,h\'X[kOM', '99b5ca1d7ad80276' ), + array( 'm5`(_l.DG4@\'s\';A{%SytM("60[r|+@jA!s"n"F77g>', '42c09c31678d6f41' ), + array( '+nZLj`!dUNmXe}4Yz@zfb|[dk^+#urB!a|NM^P25 !m', '7c2bc1c66d9f0223' ), + array( 'e~#?zD:a\'8=l${w(qkKsNIC{(s/=t0,Z0/z+T6l\\N+I', '8b024f00082671f5' ), + array( 'S\'B\\y/(n]Q3ZY(jv|{$W,3S8hi&E91ol92I3BR# $6[', 'f90f149aea3b4fff' ), + array( ']?FU<BZtOmHgW3m}M m:9!dMC7QD<h y(GPDj+:;yc#', '216ea9a72de9aadc' ), + array( 'RwqPEr>`,@EZc],)yt*t|QFB<R\\WMA[ 9NQ^Ao?N1e)u', '9a53a5fdb4a3fea9' ), + array( 'C5~>*)4([ZJw-(P[I-[b\\-A}}aM/GV&kl%+w/? jyJc(', '7a9e26e4aeb98fc9' ), + array( 'R5c|B@_~N"}McK\\,#cxpi%hxDhd?3HHf^,c!MD!{F I+', '4f0136432df156d5' ), + array( 'L\'8Oj1@U6)N[r4z\'\\Cm;PR=}v?z>?EIkLa;8s\\m+f=fZ', 'c2587023e1d5b660' ), + array( 'Qaa/&PKV#iTz)P9Huc4CFP\\:-KEth,O;n1JtavKe`!ai', '50683e95eabc367d' ), + array( 'R{2H_Fl\'vIA%tgy^tJyd\\EY><&%}(fgZby#CApJ8:l>0U', 'f16422882c0082cc' ), + array( '9nJci0@/i_LoeJxL2S0-WTNH gbl&rC?bn$L~E[h%)YkS', 'b8c4873ffdaf0fac' ), + array( 'R8f\'Is^}C\'}+jk2^/QA}Vm|{If"SAm\'t\'m{PbZO&bN2M:', '948738b38e532172' ), + array( 'D,JvNIM<GJf.L:P:AEB0Ars|Cy_q-.-Q;XHi"v&IAmXn(', 'afd0b1e73ddced08' ), + array( ')*JNL[p@OmcJNVW]d*y=Sc?JjhlYB\\aKf-z4hkT9Z9d*p', '1dfd3ac789532668' ), + array( '=gUGarzF3F2|4k?qNjX[fmERC_.\\D8Nb!$*cw&*+M=(b*G', 'c7ce7d6de622765c' ), + array( 'TX3.5y{[M?<[|`sKDtPNXHUcT#"\\e,%;e9I{4FWaes>cU2', 'f0fa521206e1c67b' ), + array( '0y(aIa*~F_#H<iUB%;\\N7punS[cq@:%Q4-3]o=]7|`_:J5', 'a38fb64baf6368b4' ), + array( ']PQ: h,uX_R=QrWWDkdWJUu(lsiM/5cme5)e~5\\Wu/uH#M', '885465855ee39187' ), + array( ' G:e d;vm)kWWzm;hSPr:P)v)~\'~G*LHQf.RLJI:S5r,1`', 'de1bd4eebc876571' ), + array( 'Gz5xmPIvGRvNQ>Y~f+fu^4@)Ot>B!P$HK:B:jk13?(bqG<p', '5fce9e2beab28428' ), + array( '/HX%\'lF0<;O_< ceL~(fitx}4"`&I|wYFP_M=&^YA.:^/}E', 'babb5873a7b954a2' ), + array( '[}MCgC<eW>G^hEVCk\'#:E)y K):+89Pt7~8 BTfzs.Y\\T0 ', 'a4dcad2a3d27a8c5' ), + array( '@8#[^-U_Y^ydw45lL5%LXZ3SNB.,v?,8X0t7>Jvw*q\\"\'rn', '5fce337a1b15535d' ), + array( 'S)t aO46}VD*Nd7g=H\\Uf\'M^2?;4F/$y8xzzH/1GfVR5;j}', 'd650a004f4a4a934' ), + array( 'X3Z.yb[Xt{t*C$.>=\'98PHJx0!KF<6DuI~%Dba|X^rb"wp@5', '26f61f52e18a413f' ), + array( 'xYNI#xB4ynZ7& .P 3tbtr;Te}V^nwshRC2V<Uj7DFOKF]{F', '955141b7150fa2c1' ), + array( 'pp)fcE;JCr)3j}{=A/s^d^v*%FUL$QrtC|\\(BwRfk\\yVZvs|', '26761cf7ed795ba8' ), + array( '\'h\\kGSvMzLy~~ltBiQJ-J}s6Znl6ea4lJqYrFPAA};@})5@s', '7e915de5eb615078' ), + array( 'fk"2juHFd6\\Jxq8Ddr7+CYLBul@ #atjMv|8lF^Q]<|V/6zs', '7313e5cd61f71972' ), + array( ')3~MmKoc91c<rX\'AO%Z<K9n)Vl`f#\\Z,oZY^\'JB@[&]O_ep/j', 'b8b744c7e5836f88' ), + array( 'KL7e;A=)"$,^^9O9s.A>QazW@J7&<Gqgs*N0Kk:NoF.O_^iSl', '71567bade5dcc22e' ), + array( '+r?lnv.:/4VW\'?L1m]]Yw,I>;x~ycSgnG\'\\6~jP/ \'f\'G395q', 'b52ab992b89a25eb' ), + array( 'wni%9(@3(:v["e#*B:)-j8-r 5:4OO&G?oLXxll!(c]*Ja4l{', '05178f3f6d1bd723' ), + array( '>zgV)ZW?tknEq6dbb>[P+]Xo<c:}x(z7$bn-=FL33;Y&R>h6]', '2d02887219c5f7ba' ), + array( 'Efi$@Y@$s?||:4!}$/<J[O]w)cKHMa&rIpwiJ8n?Xk<s!>q%M.', '7402cada54c164fc' ), + array( 'P*^."grN1A085Z)-DSF3s~ 0r!Nd\'{sW&Rf);ZWL{hd2Cn?hBf', '7d506df1306b7bd3' ), + array( '|6e|GY~v?\'s3^zeE%"!\\N|F40j#OSE7Q\\|N%VN{vUo*5jpZor\\', '2f6a27e5596405bc' ), + array( 'MBYtVj_Y:4 Qe]O5b\'d_};O)P;y,,mhZ0COf.0AIEB{, KBcS\'', '584088c026129ecb' ), + array( 'CRCr[s/V ;EivU-F=;W_e|"a*".LeaT*5w|pk-HlImW@Ddga!?', '52d26109c3976242' ), + array( 'Bf=DIGGWt.:I8OA6@.ChzmWR.{8v^:7!!TEJ|m#q{=;5l]K.kow', '0664b26c38a5d953' ), + array( 'g]O;lKSc*mz+oPQ;N@>A<[]RI;}W\'mOnL *9K^}VLxb=J4XyTw;', '614bf3c3f15ec6d4' ), + array( 'qTxD}4CV;2\'+^\'5xStv*Apl_<"96W1QIeKnd`3;|EC(%J>~~3u)', '75c7984cbfee5c09' ), + array( 'Ugv5$xN;P`mzF9j,y}HvDk I7>H6Q??((6=-0lH`M7\\tPG!KFIC', '08249b54b4e80e4a' ), + array( 'j6C5Mb^d5~%=\'<[5LH].vtkkF3mrZ86FNZ[|=;bR:gpB$LWQu6`', 'd86b2b1dc38a51fe' ), + array( 'l,LYR_GF;_\\a/8=-VYo*sXz7\\Hn/>%o+1<ed|-+8mhy}!8+Wq{ae', 'de82683d6c863f8e' ), + array( 'T]}2&lADr2P$N6iKDud3^^1`w=9i:{PoYN"`;D%/VV4&m}R3s7FS', '1585883d76b8ad21' ), + array( 'vX4nvNX1J)"%X$etIk$!C8\'27YE+pl_hFtW=C0On:QtrV[g Hk!k', '0fcab3a55bc257eb' ), + array( '%)}<bDHT1(=W|uuA&F1@x&4Oa{P*hRvm[u*?;RtM[3&Y){z0C-Q<', 'f8b622573f260ed6' ), + array( '3ekub=!Kox9LnDl+waXSu^.~[*/~7`<JG(A*EBU6;ob+4O6-2oa(', '9cfe1752ba2120c5' ), + array( 'Oo(+y8+1yG\\AP}KvA"-\\qph\'A 5Tov]@geKa}Wsw Q:PPfHqhVO[H', 'bbfbf47f5e41f626' ), + array( '9ci9x?*o|JXbv:aN/ZO`u!2\\I$E T"Hme3(^R2OO\\(3TCu$SQS4GT', '0fd77de0e48a299e' ), + array( 'G$}LJ~!LHo2[wq/*A^gJr<niAB;tWbJ~fIK1HL]p<pM5b\\?%<(P0E', 'ff59a87c858ded0c' ), + array( '?yfa5[9w&8_Pdqx2OjOA8d$u%*2-ZBSy<:[RvuK}/+Ns|G&M3VnL;', 'c15664e583440709' ), + array( 'sB@}TNXw"R5=/g4%424?`)=)/j<fZh"N,CLar&YtXo3gXGmlY#,:,', 'ed2cece5fae7e40a' ), + array( 'JD;6`"pJ%@VIm9<sr2McE6<l$)G\'6b3`\'OvgRh3X)j"v$>kwP9[vOw', 'af6317fd2ec74937' ), + array( 'cS!+[7nnxu?o^qXqJb\\LZakFY=_54/.xc/%?Gs/@iN1H@j;kNw9)Z%', '176ecfc36ff0fb5e' ), + array( 'O4B0JW@XP$hUC1IRR4"d\\BOw/~pH(KMX`ph,H)ex-OOQ`x%4.\'xkJI', '2e7bda1a61ef9b56' ), + array( 'cYHU#Q"P*bBroj|Uc+%4]f-c{<jt(6?lphBs:DEE(g9wR6N7ASK ;Y', '3d2b93b2479f85fc' ), + array( 'c7vO-~eMkW7.LRSqw\\Z1U.H$EjXqjtLN,C}:Bcg/<~>hQq[JO6[%D$', '62a5e1665612c6c0' ), + array( '*jnc]YX*)eN\' qjh!(g?p:2LdacAf)Fqt6URp.]yt-!t~l] tF@faR4', '547b12c39bb0fdf3' ), + array( 'G4wh{"0mvFCI7R(1G53=4 {5tBV\\%)pL>h6:jF)blM,% 57HJJe_Jau', 'c22639e2811d6816' ), + array( '@%L|*VnWtWm0C49\'"f4\'fI>0tiuU4XKU]xShOB@Ez.U?CnFFUZM=%lM', '37b9a926337766d3' ), + array( 'yVDOk|{BZtuDE9dj4s@S80z^fV-%[zRUQw&>t"`PwWt=pZ)%NJYgZUF', 'cc6ba46fb041513c' ), + array( 'B,TGgOz>"rD@gG"9?Y/]JigP92+!m`H0m|XUMStOF9o/`qH!KX^vBFG', 'a4c997dd620f2ff9' ), + array( '\\YS^H4(Y"&2XSeM#,gs<HeeJ2>**aQR>+&|S;%-=,?v_&Db2-VNV=4!P', 'a07bd8ec425f5a4f' ), + array( 'S+[5\\.Sh4Q=PWKnckeCq+\'%8^Tn|hpM={)RY8\'CMX`}1,luxR:j^Aov!', '84b7e4acb0c0a79a' ), + array( 'Df}.WLKTV~/o&R=^3;p@)f9[!%;Cu2E:yCIRpu\'Ht68ziVZ|qL>z3WW5', 'e0f646c8b28fd049' ), + array( ']rYS&~n!C8S5/[]%rv!\\M[Z@)x<<QtR/h,bo+QpNjEcz!B s:!Qg],)f', '05032e744464292c' ), + array( '&E$W:Vf$cJsn{d>g+#b,Fb!`dSIB_R*ex/=4e%8JO,9LqX4|\\v*#Z+d?', 'd416e24b2f0208f8' ), + array( '^.b?`m&Z|DncI(.y4HG\'"[%^S/b/;GOzU3:7!Ar~eac0iq*~;Q\'=.,|b;', '3927892869e71809' ), + array( '_qW(AR^UmvV/iVtL:&7-06Hb>fqJdTfEG>Miq,?_#vomMe:hkQu|h?_\'\'', '6642fa162be3f787' ), + array( 'RQk\'91OW^9IkX*oOz]}`xfLJ]I3}*;%]mpd\'"5^aN)M(4>X/{Vpu>=@|g', 'bc2d4f3aa4d38015' ), + array( 'Tzro P]q6esKDVzN%#cC[r@3c6R"WOj,K]|K/[=EA2qfil5npy3LlT_Qj', 'f8e6d9128469532b' ), + array( '2SCb?P.|MZ-*xSK,E3u3He$BxQ0N1b9D6]\'U.6S[p`fi52uZElnnRs2LE', '7277ce5e05c03037' ), + array( 'CzW&5{=r$s!;H],*Dv?Wmz}Zim-] Z$DU[KjXh]\\\\_w&>%0b{O;iJ9E5\'S', 'f52c0085314b0fd8' ), + array( 'r(.wMcSxN,a-i?maF,gVnd&+NQDtfLHZUVR#:&|i3_v| e_FqG|`,$k[U1', '69e03fdc5e6ef8b3' ), + array( 'P=^xx4PK8jR6TeuLcu2C<%j9ew>RStd%2D}+YNWr:+)oq~=UtPx1UdK<\\i', 'ad82f3fd37f369cc' ), + array( 'o0^U5qy4|ScUF~`OnRN-)D]"V3g"PDl@ULuk>o <DdrjcS;S\'j`1/>3eR{', 'a0a8ea76841101cb' ), + array( 'h#@VDv#;bB,c_PHR<-\'W`/BA@R`T83P"7pX\\h\\wK~$/_TX2qe:IGIlhi?I', 'cc3c875a245445bb' ), + array( '>X]n[t`4QIqJuqN%Q$^cuD}@kH.U2M Q\']@bS"w&KiPA[~G.$&rzKq<8:Jn', '36b37774404085a2' ), + array( 'Mxn~ M?c!B[\'mFX0#XX1\\_%W,vtD2?4_8#^9P}|RAYZ0!3@$ky6HY<!f3u,', '6953f8802999c26d' ), + array( 'E6@%NDdhtceH%@#5A6VF"P]K+yMq.D}TZ?Z*c?rX#Y"(z%==;sc>EBjP=9C', 'a93c088a44fbfc35' ), + array( 'L]B!9a\\DE{8~ r!)m\'G+C;oaa3M3QfV}Ex _[\\%"Y>!Z1#c *+,MG|0)0^<', '4c23bc673f998d50' ), + array( 'bEs`kmaLI?RKxpMT"P8#[D/)k,:u=x2!?&a,tDX>c+j]|82~iK"Eo2O\\?iR', '68fc83d0d7fbfe26' ), + array( '\\ce]$k@0aei Iuk\'r$:qnet4V(d3GOf%3Lb79$Gzi2{4(g<zkWm[>cotkU)3', '1154a4047a591047' ), + array( '%o88={PV!xQk+M 35=/"t}]3aN(M$2a)"zB?vrvxkHdwvd,-#<0w:n+{=4JB', '4241c775b22008a8' ), + array( 'F-LI(oi b`xO*]H"CT0Fp@>,/J)M^Sp&a>Oi.:iq{bB\'@j)d@9+2ZJ>itG8T', 'd8a203d84a6e0ad0' ), + array( '{)[]G+GVF2HBtjI6USzvm\')HRG2HnK|kTXI|dqS,${Nygx0>M,5;4>cffv/V', '71228d8490cbb004' ), + array( 'B-BwfkuK]IXbF\'\\/!mMNybi/"NuhE&@g3b`yOVF.! pH(MW);&X6iCEkq<U7', 'f772a9177eddfcf8' ), +); + +$i = 0; +$pass = true; +foreach($tests as $test) { + $result = hash('fnv1a64', $test[0]); + if ($result != $test[1]) { + echo "Iteration " . $i . " failed - expected '" . $test[1] . "', got '" . $result . "' for '" . $test[1] . "'\n"; + $pass = false; + } + $i++; +} + +if($pass) { + echo "PASS"; +} +?> +--EXPECT-- +PASS diff --git a/ext/hash/tests/hash_algos.phpt b/ext/hash/tests/hash_algos.phpt index 7773fe979a..f2d6fc3ffb 100644 --- a/ext/hash/tests/hash_algos.phpt +++ b/ext/hash/tests/hash_algos.phpt @@ -18,7 +18,7 @@ var_dump(hash_algos()); ===Done=== --EXPECTF-- *** Testing hash_algos() : basic functionality *** -array(44) { +array(46) { [%d]=> string(3) "md2" [%d]=> @@ -74,8 +74,12 @@ array(44) { [%d]=> string(6) "fnv132" [%d]=> + string(7) "fnv1a32" + [%d]=> string(6) "fnv164" [%d]=> + string(7) "fnv1a64" + [%d]=> string(5) "joaat" [%d]=> string(10) "haval128,3" diff --git a/ext/hash/tests/hash_copy_001.phpt b/ext/hash/tests/hash_copy_001.phpt index bb4a49da89..f9fe7cc552 100644 --- a/ext/hash/tests/hash_copy_001.phpt +++ b/ext/hash/tests/hash_copy_001.phpt @@ -112,9 +112,15 @@ string(8) "69147a4e" string(6) "fnv132" string(8) "98139504" string(8) "98139504" +string(7) "fnv1a32" +string(8) "aae4e042" +string(8) "aae4e042" string(6) "fnv164" string(16) "14522659f8138684" string(16) "14522659f8138684" +string(7) "fnv1a64" +string(16) "bebc746a33b6ab62" +string(16) "bebc746a33b6ab62" string(5) "joaat" string(8) "aaebf370" string(8) "aaebf370" @@ -244,9 +250,15 @@ string(8) "3ee63999" string(6) "fnv132" string(8) "98139504" string(8) "59ad036f" +string(7) "fnv1a32" +string(8) "aae4e042" +string(8) "fadc2cef" string(6) "fnv164" string(16) "14522659f8138684" string(16) "5e8c64fba6a5ffcf" +string(7) "fnv1a64" +string(16) "bebc746a33b6ab62" +string(16) "893899e4415a920f" string(5) "joaat" string(8) "aaebf370" string(8) "513479b4" |