python3-pycrypto-2.6.1-3.2.1<>,a p9|A4?OtF겭`uDžZFBTї5Uti^K{Do\My{ O"s}44fZτm?lhl8aFC"QT7̧8`W:ˀA*.{'\ӟ̉&8HrWzѪ)$tnOi8K?&"(ôإ*(ƪ0vr/rye;T5%L/:AA1*R\q2>>?d  @8<DHa  |     wI x  R (8 9 :w FGHIXY\]x^+bcde$f'l)u<vw x$yz0@DJCpython3-pycrypto2.6.13.2.1Cryptographic modules for PythonThe package contains: * Hash functions: MD2, MD4, RIPEMD, SHA256. * Block encryption algorithms: AES, ARC2, Blowfish, CAST, DES, Triple-DES, IDEA, RC5. * Stream encryption algorithms: ARC4, simple XOR. * Public-key algorithms: RSA, DSA, ElGamal, qNEW. * Protocols: All-or-nothing transforms, chaffing/winnowing. * Miscellaneous: RFC1751 module for converting 128-key keys into a set of English words, primality testing. * Some demo programs (currently all quite old and outdated).a sheep66(:SUSE Linux Enterprise 15SUSE LLC Python-2.0https://www.suse.com/Development/Languages/Pythonhttp://www.pycrypto.org/linuxx86_64z4k3 $y# L<||, p ``++ [ [== // NN14 /  # $ % "=> M==== 6666666666 ^ ^.((%\\AAuu5y3t T00--[5[5 bb0   ::VV   3**## s a.V.V *o*o,`,`+\+\  66C,8iS :< Ce ((JJ\\((  A A A ~  N "00 PP  2OO#s#s669J9J&!?@:;!II@@DDkk! s".. 4 4(:T:T$PU++'2> T  ^/!'F'Fqq$R\~\~ -F-F77  =1tD *## |amAA큤큤A큤A큤큤A큤A큤A큤A큤A큤큤AA큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤큤큤A큤A큤a a R\dBY i@Y i@Y i@Y i@R\dBR\dBY i@Y i@Y i@a a a a a a a a O/a a a a a a a a a a a a a a a a a a a a a a a a a R\dBa Y i@R\dBR\dBR\dBR\dBR\dBR\dBR\dBR\dBR\dBa a a a a a a R\dBa a a a a a a a a a a a a a a a a a a a a a a a a R\dBa Y i@Y i@Y i@O/a a a a a a a a a a Y i@R\dBY i@Y i@Y i@R\dBa a a a a a a a a a a a a a a a a a Y i@Y i@a a Y i@Y i@O/O/a a a a a a a a a a O/a a a a a a a a a Y i@Y i@Y i@Y i@O/a a a a a a a Y i@a a O/a a a a a a a a a a a a a a a a a a a a a a a a a Y i@Y i@Y i@Y i@Y i@Y i@Y i@Y i@Y i@Y i@Y i@a R\dBa a a a a a a a a a a a a a a a a a a a a a a a a Y i@Y i@Y i@Y i@Y i@Y i@Y i@Y i@Y i@Y i@Y i@a O/a a a a a a a a a a a O/Y i@O/O/a R\dBa a a a a a a a a a a O/Y i@Y i@Y i@a a O/a a a a a a a a a Y i@O/O/a O/a a a a a a a a a a a a a O/O/O/O/O/R\dBa a a a a a a a a Y i@Y i@O/a Y i@a a a a a a a Y i@Y i@a R\dBa a a a a a a a a a a Y i@Y i@Y i@O/Y i@a a a a a O/a Y i@R\dBO/a a a a a a a a Y i@Y i@R\dBa a a a a a a a a a a a a a a a a a a a Y i@Y i@Y i@Y i@O/a O/R\dBa a a a a R\dBa a O/R\dBR\dBR\dBcdd41742f583dfb48c87a3f3ef522bfe79b3bfb719ed142309de93a76804d1f6de544c03cb56d230446f25c2f9fff8c7cf0c933b9d82644f665cc6a59f34df631cb972c78d40a3b9cbc0767967ebea8813ea074b9d2bd11c9b206704005858fec46573aaaa1e0de81de8a17251a96b4d9f358d90d46c9b44dbecdff2789d3b691bd07da473c3e40ff67fff2569e314f47b58116bba88faf33fc914da9343afc106d0ff91a680b477787aa6140f5475d93279b4b4a5830c3a92026992230e70344715b0de671867a6245581868df7d01d95aaa8e413bffe37b3eef74b2624a3fc0840dbcc1ecd1bd2c9e5c50f49691595421a207b478a2b468a9d73d950c85c8341e7d47b040574c7aacb3c8db4f256b1b9b5da489d42ea22c0c26dd892066197fedaa707e7d53d278be144db0f9f103450a292f5c008023fc8d632519d2f783b595d5d9c81343dd64e68b142f02b4ec77b76bbc0a39a527c148ec23e12684e29a1e78a5639b3e09261c40f6b7c451ee0c42cfaff497a17df577da83bb79317d2ab85ff181d670ae7e0f596ece14fed95b7ea0242ba4f60535254ad96e176e402896aec15a0483330f394db304747861f017375b9382777c35eca31875b58d16cf9736a0a2f33d3521dcf751b1a9e6d5cea0a11477c16a4547a6d19d53cf6bab2160b4173d8d0b01d0a440f08fbc69f66325e483f7416aa52fcff68bb28836df1df2389d6d6d7629b97d31aef12ad2af8b5116ad70df7c75c7629890160b83c77d4ad80287cb194517286a44b46d0241cfac3eaaaeb4055b4567a58076dce2ec95e58ea453ec3d24c891299ed74c41b03c9faf205b02d079dc737354fc5728185f487c3c7aad84c6c143bdef3316214ba43b76cdf30cfbb00d516ae61a2119aa02537a0599205761f0916777822591865a40590412be4fa61a85ec1cc636cfa334585836a0a0f5902ee0a750e49d9c0d5dcacca76787640e9d3315fec8ed09fa2dd931e756cf9ab34ec168491b21313714bc86c91854cc305b8356a1fccc55cac9f42b507e24bce7ffc2257e04245f2a79ff0cc0de7624b79092cce100b1fef0ebcb299565436f74c3f5106eb73795833f5a1bc334bd6df6345bdc155e8180adc57aa9c075ab51998dab23003a99028ba0ba683d3fa60571df0b7bdd431e380594118ca8ddad2c969a8c88528c590d90c2ce5eefbf3f14bb20e8af786faa3ce24c277a0e01668ef70b0e53ca0ba3ae75b3b9463f510bfdbac672229cdce5343fd7d2d2adae98b633dc3a18eedfccc402791499d6e618ae3866d4d0c69c39e0a936c2a351b9910843ce2785cb3d3f7a827b3ad0ddf2018d5be8f13b7569244001f13ddcdfd071d6de502f53661a26f19840189bb85268cd9c56e5dc2a039ebe53e81dd0ac2c6ea24a23939b0c44c7d0d20b6d8dcf4848e9d9ad425e94e8a7827e909ebbb14b83249adce3eb1558bfb3f4c618af74f47fa35e2865ee0417533447f8504cd00c4fe39465ee7c778eae1512ae87145a841b1e885a8ca47d0245d503d2f1491beec3c301b8ad8212a83e75c26de4baa5c8a1ad39b24fe86cd57d1ac3c44e03e699ad422de4ba30ff0c4cc16d177a4e0e815ae78fbc63afc4c4bbad0ae5ab32848c6cb5a17d6bb278047685c24000a36b4c3c68dc60e0c9f9ee5b6df900b5148381b9cd266e6b69d52de1e767c802da3ba29c0fd1979faef885bc85fbee641235580e970a932582f7617268c5b7217e0df19e55c4b0ce2e83e734e286cf94fc93fad22d2832c74ed3bb584121a603707c682dd5bfc7f031159458778f32e4b4b18c3b6f804b4361e4e0d809961f5adefcc4443930f8998054c1d397100de4a2b37ab46894d551d10a621a0b8c6f8f25a3640d485345ca3537404416947de4a2b37ab46894d551d10a621a0b8c6f8f25a3640d485345ca3537404416947893316a6784c870303d52ab20ddbb207d07eb9e2c02862e25bea03d95b7ec66bda5a6c870169e4e19eca66f70fece2ae08c33a0e9021d4ef5a72409a727cc64d01591ff830b94cf272b1ceaa5c135f4935a0cfe45520a3fc69d6ce519052f75ee0b34c6c95265de07b0e0db816bb73c99698a41847283dea06c173b043450101b699e8c80abb6037827c954c5dcd94eab9b8474a423232f3005da53049831b6e5469767a3fd71b73cf0727ddb8bf0a372da0fd6e39498ba4984e16c398d48728220bd350d0b58f563e2132b22a16d904b49a6461d215363f9d51144e15d5bdb81cd063fb92b95bda3a87044e1cab5a9fa4f344f33bda318d231104284174afcacd4bb23dbbc4339d7d97273dc86d7217d27f583f5069009ad70cdf0d63f070dc5bb419fa3632080d7fbcbd8878c43286d5dd0a7bae93d28d130126c23cc7a16fff9064d2bfb8f2126e34c7b3418b967a695b1863d6dafe0ea8755361498cbc28a269521a032373748b434092733ab9e708438787b1ecd075cd2943866ba23225dd6184515bd1bcad94546ac135bf365ce95542b71e9317ecf96c03bc471e0676d535b8dd755053b21d94aab48e33609ed7721974b2a6fc3db4bc307bdad487ae7bfd73bb24d0e501f17c3002e8c3f57d5030afd5b519d266bbc333ece10cd3cf4548ea5bcc71b5a70fa61d0cc7433bc71b969851732ce498fce426eb0d24c59c7c98654999f0211e3152f06b668c3ec22791f20a81ad58657d3bb8dbb7ed1012ec6a3dcabc83a988a7ec44aac469d9e8b639101e20947554de0ac914ff788a0542d27fde823510bc99d609bc1aa8658bfd714f80900840962daab4f781e89cde5d1c3455dc0ad42d1ecbfe213329f2e457cc4aff0468de0e6b467319746f9e7b8e59679d0f9786a988c266413d5c90667bc51e22e7b8507671549d6766bf0eb563e563ed29dbaa46ec4bfc79a85d776c7f39c8006d2c6a6f15b2c420513b069e63e563ed29dbaa46ec4bfc79a85d776c7f39c8006d2c6a6f15b2c420513b069e9e4a2b29d0fd974a5851bcabf8a2c547076eb3bea71ccc18d237f16d0f80dbcd9e4a2b29d0fd974a5851bcabf8a2c547076eb3bea71ccc18d237f16d0f80dbcda4841ff453fad7b222b61bdc4feee807e893ced413d6b3badf06a1c5acb4c854a4841ff453fad7b222b61bdc4feee807e893ced413d6b3badf06a1c5acb4c85459c13137ba69d9e8e139397af0f0e46859b6210d457537a0414755efe6571dcc59c13137ba69d9e8e139397af0f0e46859b6210d457537a0414755efe6571dcc8212aea4237fc5e39e1770d4f2f2400563106afa6e47f328e8fb3e239ca1a10b8212aea4237fc5e39e1770d4f2f2400563106afa6e47f328e8fb3e239ca1a10b91ef7d5d97f7ee69a3f70bd8c5855910830470ce0218bacfd5af38bced4d7cd791ef7d5d97f7ee69a3f70bd8c5855910830470ce0218bacfd5af38bced4d7cd75bc56ad610a283d116978291513f76e77285fa75620178f9ff484c9edd9c5b5a5bc56ad610a283d116978291513f76e77285fa75620178f9ff484c9edd9c5b5ae75cfa50e62023edf8d2d656ea8dc2f5d80a08302366d8b8ab9c172d76e53586e75cfa50e62023edf8d2d656ea8dc2f5d80a08302366d8b8ab9c172d76e535860264cd8eecb61f1a2578e2def239130d5731a6121b67c4f1a259bb07811498780264cd8eecb61f1a2578e2def239130d5731a6121b67c4f1a259bb078114987813d6948f234806d5e52864e6fdcef1f775a7b3d036f649a3e5c7e895c573e7cf3e800c81c01a47db3cc0ccfc4ea3e12da97f02f2e91fee4c0fd28f6af3d4e3c5fd05f449b10f67b84e37159d35da23eaa1ec2f0f2e9f5d1c58685ed9970aad58ac961eaba114e791439379b40454abae3e9962637ee051b9b93557d0d16aa628b8d3a242c788030f8d5ca2308c0a26c00dd97632c7067cc44b4183dd787a86efb33053c9d620cb198f6c66c75effaeb61a79acee17034374ae0291185dc59af386451b9f64789ca8d094c132f42809e1ae2abeeab18cc0b3f6abaa1eb601b895f7c6d66e6c7572d0fae4e1f14cd871a97d9d139f132005e5e69d8f0a410f685a9c8b8d93ab52f579b81ec3a19103c8c86fd5302813d8cc06b198dadac8d7aed8452066c9262b13ca456ace185618d625fb6a8e585f95b1f27fb9483e6b45c1a19fe506900be3190b739771d0fb34ad89d0c57124f21334e86ae731b76e37c6f8906fc93c63bae90217187d7d1d11b391bdc14f73bdf9e0a3751d281fe13125e51aee6e008a815eb4b3a6a49dda1483cf7cf1e33a123a86b70a6a33c7a626e7c4c9b52612d834809f71d177b90ac98321eb273b75e39f7777afa6ec0bd51b62cc2b9f706e8d62c8013f82dbc4f429f15f820ff626852122ea5b9c3baabc3c8a45c883f06d84d29ec72889d229bc0022b76f87da127b8ea3e1386c04478e821dd7e91ea712d4d06d9d904320e9098a84e3aecff00ea94a36a99997ae5bdf657d728d7a71924a3c22bbc7fd87c618497789d555a5f4db965023929962cfadf922891d565f609ca5cda92f009f375b4571572c95a143fe78697967afd63399186a88e837b2576cf81f9c0284d23adb61724f43377330e03d7d2d52542b205ce298829be74c9e62aa930e2e39748d4f07fb6eb69affe7a85ae4437268cf58a41c39527453273b593d375ae28e4b71d8e14226fe71cddfe86157a955258d46fd1f92647531596de9c4a7df2f1259ab93dbee4f65fd22a2f78c71cab6ae29213a496535a502d65a9d924c882d4c21dbd0019b2713a6f0e89bd81163994d2bf9f0845c4fe2f4b11110dc5d41be4b1161f05403550717f2a4aa0cba0b36569a69bbed6da08b8d0bc4db0876f8703756e4ba127c2d8572a85c2e690cd3486fe41ce3c89b47566637f29f0f1a64cb78cf1e9fc2e61a042f54b3b73587389a27b87141b1576a35feb1821217a8c04c6d82d033088c6ce4cd1f1c884ce10ca92f27531f0c5b1e3be8c803769cebbc9ca06d23ff0c3c011e9cad18159399ca033351cbef2ff2e6e0c26b837ba13bcdb5356c7d775a0d3cb9ec1b235c7f2c3ded277aa980049378ec368075f01ce94227e630124f1ac0116b0a262455056acd68384e39cbd8a67b772a8f228dea8f7e1b27a7a7ebc60f1bcd8a11eef1eacd602c13a8f5444898f2d6df24b1a3618508b394e1d61d1f083898c117b05a450c76481f8283c466b82fe41928bb9fbf5f85f79c83db9c57ca8206550978a3c98a019b5d8a332b770f05186119bc31b58a83e11e06b810860698a31b76fa404228f72a006a4087c632f67374b8db9e091ab8d623aba4a231ed19661ea302dccfa0c0ac4abed69a65d0e03a1d1e229fc1d8f53d59d1428b7d24923386c0e67773e2e72ba7bacfdc69a56a7f4837e59fe6f847dc3fc4f1a916edaa99b6e46e53bd955f58943f10a6fd7a27c134062a41cdaf9ed51d385ca39febd60bc6fbe2f91c3418bf947f81c872fe98b61e4a6e098279cfe9da13f44f5cd1d2d8aa238b3fca3b4ea7ea87493fa5f5536d94e2d0c11588389e25f86c1272916adb7ceb267b57e313a16def8830d3ddceb300a6413939a078ce0e894da0eefcce73b5be56f4e382e04f611cbca5845d6e2c9f4da66a2af6e3f208b8c4030d1c71e8ada33a8a2cf1ec2077c7b2319ce0b019f68c012a2a1d37823d6f653c9d9cb887b8cf6e391fd5ebca434c4be06f149504d2d40c6d1048daa50699a8ac3f10bf9f372d38a7b80829022d8781386c69a8e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855d12144c51d72f039a15c46b6c0a888b90a4b0b3e564efe34b96335abf2f8db5b8740ffd1e6ee8d47e7de4f5c00695a5439600afc6f9af64aa19e5ae7eba32d8f074e68ffe12a31a64faeeae60bd296da4b60ef68cd58a4b957fa0f252ac04aaef57ac22c25084e8897b9bcbda561ba73f043b7baaa322986d8859b76a1cca43db803976f0e143f1fedbb896fb3c4b56a93cb72da43ac6c7f5a6b66b084ecbab4f6bd0a0cd9ae6d111e3d139bc4758245b324270f80235e64b7d53f63cb88952b79e5e02a6880012ae3fe580459beb122f1558b5f3f7ea808c124d062899fcd3c79e5e02a6880012ae3fe580459beb122f1558b5f3f7ea808c124d062899fcd3ce90ffdbb34f7a64ec6fd693dec3f197bf26516f486da8c0fc49932776e313f91292e9a24131a032f23846bc804ae100823c0daf8cc3708973780cef6e47d4e1251d210350c44ccaae96c746e3617cfbc81c94741eb7f550c3632d33ff2a45b094b88cfc4772cad315181ee54ad5a37776bcc0ac83e5a96b1d3a609316184dfc3c6f368dd2ba5e614d2eddea28e7795c2f1d6733aa0a06cc67c0f4877712f04b607c7f7b1d9ea50e0f1214caf7db8a2ccd5db7fb411858397aaab599614a345f921e5a8a90762bd5183bea88cec6d8d8f99eb619550551c5b641597f3c266ce47e4652430d5997019dd6580cf43aa2eb8b963c1fb7878839b4c49a399da96e4fd07b2e60157ecb27494c3510a4258d77a4315fdf385f578e87cd9afd8d8058db5307f7da583d14e6c3b9bc2a8acadb1792c0eef1ae42c5a2befa44c36163929087933936495fd66b09573d5b3e59c3f43bc9a09ee2221e6aaeced8fee32efe6931958cfe793f8551064ee83bf14a4e3006adcf373b636e62e3965651bd0b41264f8afa36e468f8e7eeb79773a8299449d81aae40f650e67f53620978a97602b6c2fa35b1f2101d9ea47ed646ccf733afcb17dcfbfde3a72630ce147e28a45ce4866a29095c7c12ca096351b37d168ba61dcbf082c95ace7fb92266c5c4365db314a2443bd791aa13268f1bca6a35b03b8ceb5ce6900969dff3f5e2e9127f3c91254ffa9c1b2d89d74d3ce49a3976bffb3711d718023cb9733a42792117fa79642beeb393fa6c7d720722ec2386e96dd40e9f34f9b3742f5d5459cdca34b2c1be64b431f33875c2f952f0b7a498aa0d029a1c471e34af6fb948efd6cedfe7d343b1956ca78befef1d2be78d5fcd63cfcde2d42fba66c359ec01da0554ae49376ad7aeaca13e884baa469defbb7f46a62bb1ebbcdf979089f0e1af9eb4ddf2759be402ae398425cf47bc04adff1d531711afb965c9d184cb2ac56c2d31be5771381355a1a77193d0ee023b4194a68a570dfd3c1f17868af6bc31df86b9d30175454605869209dc9f7739860201fc44239174faf074b9adc78c84a6fddf8980c7a40d58224b6d6427f99ef3bb14f5776365156317a3949277166d81f420250d2f77eaf65cd1d581bd550628c0bfb1d43cecbee074f67e851ce6f2e882ecdeda9c7bd056800e7c50dc58d5daaa1273f5afb404f3cb4936619c1725c4cda31d5d0bb8eedd0c8f3138213fb27e8192e5ab44693a39f53e4fa62481818e330abadfe54e56cdaf5acfeaff202c38ae6b06c338e54ccf9d261b1d0f22c9847e301dcec1096a42aed188665f1694b8e368d8c20afd19537f96167e1a398c633c09a1373a92b57dacc5fb84a8eb14e7689fd482939dbba97e365123686853c011f017093c785210908f7cf54b1a905d3994278efc16f82b02930811a17cba47f256a243673caa605bacda463eec3e22c29204d8d5211592ccd74fc1f3a4c57993bfd8eac1e6852d995d362e23cf9341efbb88b867922c499671668a5d91a9ebee7b387ee1774b1ee45fd49d09d38f56c1c67f7bdb0000556d45d0c17c07eb9655dfbec3609a5138805e6e719c877247861a2fdbacde4fc9b0b0b9b1d4f5c6285a9ddf706e04361090d93588396c8cc5c3aef8ae9bfce0d4b27a4fc6646c32ec8bbfe57c1bd2e274731d8be9db1d1c1889ef5070d65871495f68110ad36be20b4bd42a76507a42e5bd58a7006386e4f682af1594ece5a18dcbf3c3619f1f4df5885ef18e787db32475c920bf58aca88a0455e45aa565281413afd6e8cb43e269bda3cc2e7234efb9aaa8e94dac47af49da812c9dc3fc6081f75193593d959e2d44035b7a5db324b729157a53ca1dade0fe495606cc4fe0ce5eb130e539f092aa23e8efe93693857fa8ac573d23ce112060d3985e22ba3f55c5dc8e784de28bfae035401a3e9108dd196dd75e0ddae35096f9a181b0994f44dd02bbe037c346d19a84cfeca0cd2023b798baaf3f1bb1fa29123796a20a6b0b54c9f6e2e0ea0b2a98ae6e9838e4aad42f96ca9e760494bb241d90a3ee2d6623a6b6fdb3a72fbd1a0a678437f8598552d0c3e54d6ce4801da4010edc4ebace4cbbd90dcf2b4d43cad59f1b47373fe9ef25a6b38e857a90e7171c059f3636f7dba2246f9c198ad31a44fc167ad875550358c9cd1f119fa1a4958956dc3c65ecdcda26b16db3c4a02ddb1705c63230efa2a88790ea2f6747633f61a304dd012e005c61854a5e94d960dda0ac89fb6010cb4f783be4d17f79e6956ae791090da7e3f5f1258775eab068b91b12ec52335618eb1dcb25dac96c981acc4271687a0ec65cdf333742343f265096486680d1b706e28ffd7245ac26f8526625d4f48ea32c1a9dc5a1c14b657bdc9943b7d6e7e76d47f68e67096f520a69a852de9b3d00e9b7f252d898d3d9344abf9b430856d12ae9e0d4a9a7bc8eef289523799bd6ab22de17eaf6ea085982f9ebf786d8c73a0b11801279bb8e2b7aee633f75653858f2dd3b4a1d38ce88ae09f27d2be518db8382b266ce826a2177a2cf3243a8a5b6c342bc4464a9e8db44d9a4880795d243f06340145411772592f48f2cda8c3fe2e51ecae876ad3b97cb36e0aa9d26c792ff6c2ae0337b4f746e6f959218fafd74bd00ae4733981587dba903e07f190f505d2723123ef0555654e37e1437339a5fe5874723ababef360c483b6598f802acfbdd9582a47e2d9a4dff798263bf64480fedb50f8df26c52f806acc0fcbfb2e9ae63e7f22fc363f16f3414bbd91ae16b3a805c34e1c42a291b9b1ca0640ad2d0a5b7cac1326792a79a062499242e9751a5ffde6b0363e8965bfc2067e15a005edbd108032c12d2d1192d2b4e3c8635785c0abf0c00b858ce5dea1ac54b7f8f5b259d2c535b64646d321b116d349ebd6f25147b1efe74f3f2d88e8831e9fbd5545c8ceb0cff7a8706e8e98c3c69356efe0e2c0bcf3e8eef247f5b908fa84f5787e4a38a3f35e3d81800f9c90bf7db4e6a9dba0c17d59e8634f0fdef7493c46e93ea94026d2b05149d0ad7ed88062138b3330d5eb2e39d846993cdb788490d324b7ec460a616537ce9f09e6ace0b67d3829f1b7da1a222d30f948ae7d3aa1bcbe73213ec28c4243a776be2d907da5ddb20c74cc65c2b15c93b06794fbefccd8137cca3e425ebc521a73d109fdcfda8e1e2a5c83e0794f24183064efde49c633d948aac648524a4c6c2b82b6b5c1462d79535ba7a2598c8a956ac5f1c43f2928e2ef11ed61b7cd4f4bd0f289e2d1520f80964977afb07daf877482fcd6d8953a1263a3f249d842e7ca257adaee6e4f0a294bdfa12201a9d1fcc3559a36942c05325d047e80b317c9bc18fb13ed92d9a3d35f8ca82b743639e8d8daa2fba1683784c7a335eb3e0df3ee360884b05f8bc3987a79fde4a8e11eb4c5e200d4d6138d1b2a3139450846228e950d38e79aeb06194805bd005d39ba9fc09ebb1188aa02b90de232af153aa9a381bc931f9682617cb5ba30ce025352c18a200836a58a89a8588424549736b6eb7ba493e88975c864f89ca65f1f9a02ced85ce6a0d1acf5c705898a4f281a0ac58b032dd1feb38a323b63b045403ed3fe43492eb32cf63218b8c22154ece5ad1143e2223d2e7c696f48b97d0dbfa363421bbb34d0421056ef694dc41557055fcb7e0c7e18204970407144444adda42652ccb718c3b9d68b83d33e91413bc9fe1b3eda72fee0dbd6816d532a26fabab423ae50dbd6d8a962d5027edf8f9b55c423e8024156a5392d7a5895393c4427ac1bc5008e2e8084fbdd494d0187e843d415306d9d7098aeb2385231db092a76320e5b993c1c03710d00c6caf4a075febc5945eace2ed332bb56ec94072b5b88591eafb1f0444662084c6ddf3ea0bbe8e196e3939548f8b88ed4d5aeb4b1c6090cfc736a5d566d0fb840d6e4df2af9461528a7e59c246f9f84a4337d1ea8eee51841244d6637363ca86a38f61d772addd236708fb883bc478b1f039c637f662e08380f11303812382d9aa49bfe055bf553a49b557baae2ababb9e69ef46bfa131c2395f86017f9eff29096f0d6b9329822a562d3b5ec5a2733b2e113bf0fcc386266293f4049ab70a4079d137151dd238bf88685979e9454d2d41b42ffbc8a6cee3da155b61a52af33b2b5e673a868fda49d5f6365e632d80989946f72f9e0028bab387e8a6bf9cbd8779f48f2c6fec5fa0e2ea4a6d46bed7b4ef3af0c334d811f4502c64f4f6a5191ff812f51dd525605e71b2045a97f1dfd12622fc6c71aa6aae57135a1156558260a4877366af855e97a959b5a1b10ffe6c8ba630d13925e78f694566124fa5e9e88a296cda42c028bfee46dcdb07da19c69374891c52cdb16f5bed66ca8e1f8bb60b99bfa7da056d4d97f6b90c5967dbcf3df43d7420f549be2d145aed6b5466713a0bb4c3a0567a9130e82278c86677bc61360d37e664cb387e71a3f771e4722799f86f9e24f59835f68cf47cf7444df14cf2ed0fc9482c19a0e04ef084d6167fa447d7c866967e40128e43370175a9a9e858b99421a02a3c1be8f8ce323079105d8028c6053bcc1704bb6e93cff68241b884bae754ffc09f7a4e5b19f5e66f4cd9322357a0cf8562ac9531da665d81ba27f4ec8552660b5f5a5136c65d1383f5d2506bae04a2af15e4a47a691c108e7489bdfee4dc53da7a14e33060ad983014ef594da276544d4ea85fd1c632992e8fc67a8aa0ffedba67f37986b3e4fc3a70748022b2551a2a99e565968bbc66f74b6a301cd3c92593e27035e84469ed5920609dba60b6a87a3f0d296fd0d960317d9187f9ff20a88bd71c412c96254225aef2d1dccf572e4fecc4ec9aa4fab7d8f11ff7749433012b170c3394734a8546b382f000ed7762b04288f046f27d84303e294c7dc906f089539c446d6ae4705c39a927dfb819950a1aecf26b41c772ead0b437b18dfc3b85ce4a30d4db1b2777e077cd410230316cc20397bc284cd3c704f3168cabdcbe43456de78d91c06ffc790eff02b6629ac1341b19b70780f643ad529f270a40d870b4c9e6c551594b940ddecdb398906b61c4e4bd732f16c9eaadb3642850fe81b2058ca664f8b4340fa840d3d6fba91d6e0eef0b2150bfed4c074ee518e177e52b09d46245b32a9fffe61dffeb515f3973d2d38c7a2fee73e1aedd84eb72b21e2dda4d1241e1fd58fd618690815d0c94d13542b129dc542b823fa996893dc1adc25bcba29a5f66c289b9ff862d61a061a04186d7e9e135d7e35c66a996cbd04e2d9d50d522cbc7c9b5ca6cc2b8fe48cf4e7d97d2fad4fc73657ac65252b0eec69ff6773a6bfe5fae967b872fb7613aa13db32b27ed764828cb6f580ecfc0e7afb0a3d56bfb636fd6055d96c3d09f3177ad3f2b4f95e001293064b983136913ee372910c958b844299372826b506a21caaf26b537d8168e9a06b3e9962c9b199d6c3b747d6878ebfe3dea3b872e5fdb35562e5adbe01bcbd98b24a3face6129bec181b71f9b3c901952d1ac86e261e0115954064627b0b92ac3c30a3d1cd72c9ea2fa8232d80e7b935353cd23133702e15c4b4409d2ae8095fb192d79594ef6c5bc73fdbe9e574a7a5c398fc1a8f4a50775143f745ba3789b5dea5117b86c61782668fcb7dc5506ec3d9b2ed3321913e8e761157aa3670ce458e800cdae47bfcd25dc9bd7fcffd06bfbd59c95652aac2b0d7ecd9d9e2a8c0446c68d8fcf35fc539efa67e3de2a3e1237546973876934b0a45651c06c1a73b6df191194060ba1e6c5285ce1227579b34e3a8bad6a328b303f6028f7d3882040449ba050ea65fba1e8a83fab7c741623a944add75737039e00614b9855ab7bc2caed9b952d7e51949aa4970f7d781c54b726394e58a774e6399c10cb54b1728f49b04f949106e6845e2f4badd3973d622e051eac42d748685ba9ea5794672f84d24a745836fb30ed4e8d0278c6476e775320523477e83bfab00ac09a8c0f88cc1e8f8334bbefee3d3f3cf254df3f51722d311695c51c48ef4d3dc4cd088d4b7682617a662649b99a560176442de6195807b33842a35ce63f5544f74b70d576b9ccd0e1cf8d8a63a65fd40eb210c948411e51d187cb7e72e4eb04740bded68b5ab31f9dd4fe949c023d01c58cde9b2534721044236d0f84074dc6a38a6b49d817ad83b641a20c2eeb721654a36e0f02d736e968bcdc9400e234b58136418064e0e8e84b6da57435b5af8aee9de4f4d403da82e58508c0993792445640615a328e8e2620e6497d60ad2b7f45bc9664399d71cfacfde8ff5186525280bfd17b994b85876ac64fa29845204fad772679f7bf4a6c2a02baebcff2031f1ee337d7bea9ff495a4603da1348df5ca25f1cb3aa158fe3a835cf7d06538fc1ad460ee734750c35f0beb45e48aad8b3a21f1a3d5763923aa3e19f3bdb1aa334744840983baeebd89980616c0e0fe580e5c84f014a6a445af7d7088578a6ca1f0b684e4d0abe35d52f78ef9885c42d5804cddf64468934b8ac230340cd8e643863c977cb503095e45901cd956da415f3e661139841ab916c10ef7b35d597852304eb8fd6bad4a8a79553cddb0c2412f71b01b02e959c66a20d6f6696b5c96cb89c8b112f2b6dfda344bb79f2aca5367faab5914242734fcb080d8f495b4b92f3019f9a755861e6ca477b3307bda3b1df88293d0d8485d975ba517b299e13c6ad6d678e8aa98bbb733ae8ad3b67259a5219d37cc4f5608e644f3a42064ce00702fc73295eecaebf03b0da89611388befbc74a0e35d1039fd5faa9c4bf84afbbde2f10051ed81ea95565a6eeda19b285dd676dd316b27e76014e5fe764b1420d5d00f8dc38f6341a5b658391e926442a1ca2c9f73946dc92a56f3887913ebc4e94040e79b41aa4f66deadf48c15d0cd7b30184fd13c49dee55ada5ad8e9d8bb8a379658cf70e065fe5c47a946e498dbc6a8af3573d57e0adbf5df454c10e358598fcc7275b79beaefdb51b17b6ca801244eb634cc3fe113835cd4e50f8e12c2707b232f898649b60d0e31fcf408784e0e6e249a67c5a0356c11138f9027ae5348530dd11b9752b6d4c7ffca4f5a828045848a65ba4693061c791f785d9eefe22fce3ff8e6cc9d35f2fda419dc9509771d5687efe6fe78c1d4d08311658d12dc783d13c6a7a8e87a9bc705840f42c2768f88e8c6e8cc48df2f5654a69d1e05ba09bd7bbe965f70a8d350b2a199c8c96d174f53f194f3c2b7723dfb8f72a56ebc97d03695202a7a53846b07adf50f237e9f5f794d5b90440ec50f2efed93506e9b9460f3470ecfbceaad710fd662bf68c0b120a4a241a3d69017d008b8ffef5a7dec926540f5dc617e060e2ed31e56f74c3c00dc3057d39f62e6a05303c10943643b0c6cb3a287170ceb8f8a4b2448cd712a4a049c066ca79d0e9a72de8fd09a046f5fab5cbc4a7b25ee979c405c54efe93a2f865ef81998df39c14c1f23e53881a3ebb224a0f16e9f4507a6773fd64a0a85fb907f0fa6c619f8e1c4b38d45c8035ec0639b5e3b6799dd905dda4f7f0fc20f741716bb3ed84bc946484e2c48e0daf3f86df23d7b012a7fbce97428b9e670f369cd7ea5ef3f9b557f0184a0b1bf9be8fedefe05ca0e854e6198053160a9b72b53946a17c985a899f0ea6a914cd43285fc9aa42bb3771512919b89f5847a2ddf5166a5d358a3d807b7cff1d7a5d9e8a2083285a50148ec33f87256de14b94a839db12a0081d4472432b5aa5c9b3fe067bae1999286212a8b11415070a46c04528a4acec552bd871dafdbf8c69be0275744800b741f1c586a852ea8082d901449c12d7e25958ae19bfe0215c91b2fc3af08d61083207c44bb9e4fac834fa393a920f9df2390b5ce01e4dd09643f869d184aae839daeabb2b633f9526904a05c106f4bcea29ebfebfd669229c4f17221e7b8554b1a70443880752378d7edc57dfe00903c17c8bd20c85b572730b4a3f978b4b3486e7ded8de2bc7528d75967614a11acb3ea1ad34c6bfe441f987f3141630a212d9b5b4c775589d1d36df98a2ef8cb5343f4b8ae22dad02cedefdd412e6cf56f16b1c6371d594cc98af33d96387697bfdce3fa55c85e9fcae7d88ce3b6a388b1e774c411d8d774886b6b97b2ea87884230b32fef1f693a7d42c747ac9647de50c6fe1da0dfb402b5ce708668bbaaa4080ddfd723ff5ab407da982992fd91226db86331f7c551b673e89f4335bcf6f51b4d268f171dbc45cfa67ec5033bf78e1c752a28a85f042f0c42bac1f9643ae8288ed33149635632cbf80737669a9e1a0aa7da25f40d655d0cf55458f74c87b1a43ba07e5f109143f5d47867dc7d2a500edabdc155625e8982e622a5e7cf1d83afb035479a4676b5969624601fc4552086a0e81a46d1b4988c7e182ffd1acd2ac4891b7eaa0993ea91ca8808b489c84dbcdb01fb4127d328b356526ca8ce51244d7c93ffe1f55290537ade827f23a1fb7cc80404bc5be3b55b87692333fa5efc5d0bd204c6386781ef04f6408db93fd6b422ab9c921c23d9438e8e16b5c5a3c12c09265258ae34233534a33884ed8c99241b23c2936a0b25a2c929d0e1c95655043934da60f8ac423dc69d47d9bdd3b03cdb800b3678f57e4e65ac04fa5e821d000baa4778f8ad3a6678d73674bc7d576609cbd02300e6c2818746c16aa36b76ae9246afb4ec09ea6d8b4a57523f5cf103caba8aedaaea07a8ad4bd2f4dc7b30a39f386ff8a595cdff102fb4637d6ea0ab3925c3123309c2a1ea2d3217f0d002c65ff8d7e8e3334aa2d6e3a59b0d3a537d830fdb56198645f40de803b3c97f15956f1e1df0cc6b1b7a0d4cb96e0529ea0b8d208eab99125183138565ae9577f7e821f891b00f3c5e33175517c78eae378dcaee345a8c964553c229af1606e2e6a5a068444b4772f79d236cc317dc199eddad194325fb9418c2c1ddb296535ec0a8b767b0b2fca5ddf3f076336b4746e440262b64839482994554cce3bc5209acaac7f74035d9bae66af2f8ef953296fb9d0c0bd08bc7a5af2c283045d9547cc922e03c405497d2a43c76f758820558b781d867a733628f2d2789f598e81b71c18c045b3686589c75c8a61de924d078284e84f2e125defcf427b7491c4e4333252a64294ffd6471c52cc489ce887c08140fc86b3889c78d8eace8cdcd827053fda774fe4ea341404590cd9dbdabbfdb38a5860c826f691cee248e039165152bd40bcb2981dc20ff4c2379dea74e9de39845977e660fa540928ec3c3a1ae969a2525bd25e1490bccca66f628a5027a2194d395170a30c5709b916294485b6271bcf1425cdd0460ef947281fbe40ecef625eb764b68cdef3c2d9163925531ec49527a45506fa78ba0b40cac67f02d33e54f4ee88619db301a1a71a7a03e325cd4219879f0f25f89ff9fa8b6f583a5a3e51cb8bf536410c1424a065034c8dbbcb6fc932ed66f0071d69e06fe2ca4ed356ceff66f8d6c1ce0eb095a7a9d5c1375bf098d7216e67a7894baf2f6586eb09a297783caced426836594d797fdd83b2c30ca3848715be5ffd70273c0853850564811e73f24027f39f2bc7cb1310c63b38f1ec670cb6dbd14e7eafe06b20a1c39b553c84b496e5219b04232fd38b9a235a567ca81b9231b6cef0380b3963b62cab7a0fbc02d531b29666b6136e2bd41d75b8c0874aaafce5acba149d42201539a08bb88d5963f615d4093c3c9b1286e6641d480655334f003b24c637726abf78b81839c532da93d0888c5802f8b0cd9556cae25eae4a012895e805614b2cb73b183ba9f6c87e17e09c6868c0790ca0232f26ffe1823805648887586d5dce63389605a118c1ea8d1764d88554160ac9a9214f19de058c688018b319a53d3aa2a53f07437fb80d6b7b39cd69fd22579b94fb0b7f6b7d969d08dddf5f26012ca64fa5e11921f75df135ecd22b57bed57d39f324b2939cc4eba1e6f1fc8015b040f52528189556c1fa7e08ac4797ea2e083366689e1fa8fabc611e74831c05355fe856058dca41f25a58318afa72a0703412c09c79ccbe22c3653a877359449a47990dad20026fab9621976658635e13e2037b83a73ccd4973a76e00f4b4eb97fc0df0765b52fa67a01bb28352b1a0021875d9acf840d465c93912d2c65c7a5d9863592da72777e4b7630acdaa9385478ad7d007517e98f66c5b0266421e3a17759ec398b185573398ac04ca2d5252eb2bfb09edf7d922d6bdaa0e680cc9584f04cb79f04400c5f5dfd8233fdb8376fc9a9a5a020b491cda868d4188d9e83b4f55cc68d0e8df8d2902af41b8ef47a7fd6661fe5c5a091f156f7b6c643ff318cdc53da15c302408c243f000626a8fb1366b59ff86da3e5388791d0adb7be6b84758ce3afb0d79be421ea34f52110a6be41ad0ecf0872bb88b071b0c51f2a4904e0fda3dfe915079423592505d0e4b64296fc9d356685a840da1be144169d93ef6d24e05dcb4e717d985000735646fe74ed71c8c0ebbe647d3eb4e6622221a44f6e20e74d9965e68f34880ab4ca115a0fd173b16ac6938b89b669f0792062fca8d6c5d7c2c85791c7f69b57ec2bde8f3d4ac1fb73d7c4c31d282e08e200f953e869fbc4b413d77f962209ddba37c899a6a089222ef9761ec35b10f0d8d7d04f85a25bb9b605c585349ad57604d36e471d2369133a0091f8d9ab58d0a9a6fd29b43da357dfba7223635f463b7324938aece56d5646114bdb23ea5cd08af6fd29b43da357dfba7223635f463b7324938aece56d5646114bdb23ea5cd08af51cd830064aceab64632cb1dd923642f3a45fa1d02c301f6f3c025bf74b309e39bb8f4795888d73238d9c7fda43b34242acfc6ab953fb9c2d4a6692c4ee82b3e39bfcb294e0e83a6248992a0b3054a90e12331711f6818e8d0a2bad3a8d3928415925a98d05c6d086c30943e4eacdbd361bcf76daa109b6e6dfc9d0c4ad9ed6498f3f5e5ab296798a36e08a5ea2c9703dd8576eaa07f5709386e06b249f0d55611e7990a1d0bbd37761693934fa966f5bc10747b80dcfb9d0dee891ae6c7f94erootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython-pycrypto-2.6.1-3.2.1.src.rpmpython3-pycryptopython3-pycrypto(x86-64)@@@@@@@@     libc.so.6()(64bit)libc.so.6(GLIBC_2.14)(64bit)libc.so.6(GLIBC_2.2.5)(64bit)libc.so.6(GLIBC_2.4)(64bit)libgmp.so.10()(64bit)libpthread.so.0()(64bit)libpython3.6m.so.1.0()(64bit)python(abi)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.63.0.4-14.6.0-14.0.4-14.0-15.2-14.14.1Y i@Y#@XlSW@RQbQw@PDO"O]@toddrme2178@gmail.comtoddrme2178@gmail.comvuntz@suse.comrschweikert@suse.comp.drouand@gmail.comdmueller@suse.comhighwaystar.ru@gmail.comjengelh@inai.dehighwaystar.ru@gmail.comsaschpe@gmx.de- There was never a python3-crypto so don't provide it.- Implement single-spec version. - Use Pypi source URL.- Add CVE-2013-7459.patch: python-pycrypto: Heap buffer overflow in ALGnew (bsc#1017420).- Include in SLE 12 (FATE #315990)- Update to version 2.6.1 * [CVE-2013-1445] Fix PRNG not correctly reseeded in some situations. In previous versions of PyCrypto, the Crypto.Random PRNG exhibits a race condition that may cause forked processes to generate identical sequences of 'random' numbers. This is a fairly obscure bug that will (hopefully) not affect many applications, but the failure scenario is pretty bad. Here is some sample code that illustrates the problem: from binascii import hexlify import multiprocessing, pprint, time import Crypto.Random def task_main(arg): a = Crypto.Random.get_random_bytes(8) time.sleep(0.1) b = Crypto.Random.get_random_bytes(8) rdy, ack = arg rdy.set() ack.wait() return "%s,%s" % (hexlify(a).decode(), hexlify(b).decode()) n_procs = 4 manager = multiprocessing.Manager() rdys = [manager.Event() for i in range(n_procs)] acks = [manager.Event() for i in range(n_procs)] Crypto.Random.get_random_bytes(1) pool = multiprocessing.Pool(processes=n_procs, initializer=Crypto.Random.atfork) res_async = pool.map_async(task_main, zip(rdys, acks)) pool.close() [rdy.wait() for rdy in rdys] [ack.set() for ack in acks] res = res_async.get() pprint.pprint(sorted(res)) pool.join() The output should be random, but it looked like this: ['c607803ae01aa8c0,2e4de6457a304b34', 'c607803ae01aa8c0,af80d08942b4c987', 'c607803ae01aa8c0,b0e4c0853de927c4', 'c607803ae01aa8c0,f0362585b3fceba4'] This release fixes the problem by resetting the rate-limiter when Crypto.Random.atfork() is invoked. It also adds some tests and a few related comments. - Add "-fno-strict-aliasing" to CFLAGS- add ignore-fastmath-warning.diff for SLE11 and older- update to 2.6 * [CVE-2012-2417] Fix LP#985164: insecure ElGamal key generation. (thanks: Legrandin) In the ElGamal schemes (for both encryption and signatures), g is supposed to be the generator of the entire Z^*_p group. However, in PyCrypto 2.5 and earlier, g is more simply the generator of a random sub-group of Z^*_p. The result is that the signature space (when the key is used for signing) or the public key space (when the key is used for encryption) may be greatly reduced from its expected size of log(p) bits, possibly down to 1 bit (the worst case if the order of g is 2). While it has not been confirmed, it has also been suggested that an attacker might be able to use this fact to determine the private key. Anyone using ElGamal keys should generate new keys as soon as practical. Any additional information about this bug will be tracked at https://bugs.launchpad.net/pycrypto/+bug/985164 * Huge documentation cleanup (thanks: Legrandin). * Added more tests, including test vectors from NIST 800-38A (thanks: Legrandin) * Remove broken MODE_PGP, which never actually worked properly. A new mode, MODE_OPENPGP, has been added for people wishing to write OpenPGP implementations. Note that this does not implement the full OpenPGP specification, only the "OpenPGP CFB mode" part of that specification. https://bugs.launchpad.net/pycrypto/+bug/996814 * Fix: getPrime with invalid input causes Python to abort with fatal error https://bugs.launchpad.net/pycrypto/+bug/988431 * Fix: Segfaults within error-handling paths (thanks: Paul Howarth & Dave Malcolm) https://bugs.launchpad.net/pycrypto/+bug/934294 * Fix: Block ciphers allow empty string as IV https://bugs.launchpad.net/pycrypto/+bug/997464 * Fix DevURandomRNG to work with Python3's new I/O stack. (thanks: Sebastian Ramacher) * Remove automagic dependencies on libgmp and libmpir, let the caller disable them using args. * Many other minor bug fixes and improvements (mostly thanks to Legrandin)- Make package build on RH6-like systems- python3 package added - minor spec improvement- Update to version 2.5: * Added PKCS#1 encryption schemes (v1.5 and OAEP). We now have a decent, easy-to-use non-textbook RSA implementation. Yay! * Added PKCS#1 signature schemes (v1.5 and PSS). v1.5 required some extensive changes to Hash modules to contain the algorithm specific ASN.1 OID. To that end, we now always have a (thin) Python module to hide the one in pure C. * Added 2 standard Key Derivation Functions (PBKDF1 and PBKDF2). * Added export/import of RSA keys in OpenSSH and PKCS#8 formats. * Added password-protected export/import of RSA keys (one old method for PKCS#8 PEM only). * Added ability to generate RSA key pairs with configurable public exponent e. * Added ability to construct an RSA key pair even if only the private exponent d is known, and not p and q. * Added SHA-2 C source code (fully from Lorenz Quack). * Unit tests for all the above. * Updates to documentation (both inline and in Doc/pycrypt.rst) * All of the above changes were put together by Legrandin (Thanks!) * Minor bug fixes (setup.py and tests). - Changes from version 2.4.1: * Fix "error: Setup script exited with error: src/config.h: No such file or directory" when installing via easy_install. (Sebastian Ramacher) - Changes from version 2.4: * Python 3 support! (Thorsten E. Behrens, Anders Sundman) PyCrypto now supports every version of Python from 2.1 through 3.2. * Timing-attack countermeasures in _fastmath: When built against libgmp version 5 or later, we use mpz_powm_sec instead of mpz_powm. This should prevent the timing attack described by Geremy Condra at PyCon 2011: http://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2011-through-the-side-channel-timing-and-implementation-attacks-in-python-4897955 * New hash modules (for Python >= 2.5 only): SHA224, SHA384, and SHA512 (Frédéric Bertolus) * Configuration using GNU autoconf. This should help fix a bunch of build issues. * Support using MPIR as an alternative to GMP. * Improve the test command in setup.py, by allowing tests to be performed on a single sub-package or module only. (Legrandin) * Fix double-decref of "counter" when Cipher object initialisation fails (Ryan Kelly) * Apply patches from Debian's python-crypto 2.3-3 package (Jan Dittberner, Sebastian Ramacher): - fix-RSA-generate-exception.patch - epydoc-exclude-introspect.patch - no-usr-local.patch * Fix launchpad bug #702835: "Import key code is not compatible with GMP library" (Legrandin) * More tests, better documentation, various bugfixes.sheep66 1628046364  !"#$%&'()*+,--/0123456789:;<=>?@ABCDEFFHHJJLLNNPPRRTTVVXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~2.6.1-3.2.12.6.1-3.2.1     !!""""""""""!!!!####$$$$%%%%%%&&&&''''''''''''''''''&&&&&&&&(((()****CryptoCipherAES.pyARC2.pyARC4.pyBlowfish.pyCAST.pyDES.pyDES3.pyPKCS1_OAEP.pyPKCS1_v1_5.pyXOR.py_AES.cpython-36m-x86_64-linux-gnu.so_ARC2.cpython-36m-x86_64-linux-gnu.so_ARC4.cpython-36m-x86_64-linux-gnu.so_Blowfish.cpython-36m-x86_64-linux-gnu.so_CAST.cpython-36m-x86_64-linux-gnu.so_DES.cpython-36m-x86_64-linux-gnu.so_DES3.cpython-36m-x86_64-linux-gnu.so_XOR.cpython-36m-x86_64-linux-gnu.so__init__.py__pycache__AES.cpython-36.opt-1.pycAES.cpython-36.pycARC2.cpython-36.opt-1.pycARC2.cpython-36.pycARC4.cpython-36.opt-1.pycARC4.cpython-36.pycBlowfish.cpython-36.opt-1.pycBlowfish.cpython-36.pycCAST.cpython-36.opt-1.pycCAST.cpython-36.pycDES.cpython-36.opt-1.pycDES.cpython-36.pycDES3.cpython-36.opt-1.pycDES3.cpython-36.pycPKCS1_OAEP.cpython-36.opt-1.pycPKCS1_OAEP.cpython-36.pycPKCS1_v1_5.cpython-36.opt-1.pycPKCS1_v1_5.cpython-36.pycXOR.cpython-36.opt-1.pycXOR.cpython-36.pyc__init__.cpython-36.opt-1.pyc__init__.cpython-36.pycblockalgo.cpython-36.opt-1.pycblockalgo.cpython-36.pycblockalgo.pyHashHMAC.pyMD2.pyMD4.pyMD5.pyRIPEMD.pySHA.pySHA224.pySHA256.pySHA384.pySHA512.py_MD2.cpython-36m-x86_64-linux-gnu.so_MD4.cpython-36m-x86_64-linux-gnu.so_RIPEMD160.cpython-36m-x86_64-linux-gnu.so_SHA224.cpython-36m-x86_64-linux-gnu.so_SHA256.cpython-36m-x86_64-linux-gnu.so_SHA384.cpython-36m-x86_64-linux-gnu.so_SHA512.cpython-36m-x86_64-linux-gnu.so__init__.py__pycache__HMAC.cpython-36.opt-1.pycHMAC.cpython-36.pycMD2.cpython-36.opt-1.pycMD2.cpython-36.pycMD4.cpython-36.opt-1.pycMD4.cpython-36.pycMD5.cpython-36.opt-1.pycMD5.cpython-36.pycRIPEMD.cpython-36.opt-1.pycRIPEMD.cpython-36.pycSHA.cpython-36.opt-1.pycSHA.cpython-36.pycSHA224.cpython-36.opt-1.pycSHA224.cpython-36.pycSHA256.cpython-36.opt-1.pycSHA256.cpython-36.pycSHA384.cpython-36.opt-1.pycSHA384.cpython-36.pycSHA512.cpython-36.opt-1.pycSHA512.cpython-36.pyc__init__.cpython-36.opt-1.pyc__init__.cpython-36.pychashalgo.cpython-36.opt-1.pychashalgo.cpython-36.pychashalgo.pyProtocolAllOrNothing.pyChaffing.pyKDF.py__init__.py__pycache__AllOrNothing.cpython-36.opt-1.pycAllOrNothing.cpython-36.pycChaffing.cpython-36.opt-1.pycChaffing.cpython-36.pycKDF.cpython-36.opt-1.pycKDF.cpython-36.pyc__init__.cpython-36.opt-1.pyc__init__.cpython-36.pycPublicKeyDSA.pyElGamal.pyRSA.py_DSA.py_RSA.py__init__.py__pycache__DSA.cpython-36.opt-1.pycDSA.cpython-36.pycElGamal.cpython-36.opt-1.pycElGamal.cpython-36.pycRSA.cpython-36.opt-1.pycRSA.cpython-36.pyc_DSA.cpython-36.opt-1.pyc_DSA.cpython-36.pyc_RSA.cpython-36.opt-1.pyc_RSA.cpython-36.pyc__init__.cpython-36.opt-1.pyc__init__.cpython-36.pyc_slowmath.cpython-36.opt-1.pyc_slowmath.cpython-36.pycpubkey.cpython-36.opt-1.pycpubkey.cpython-36.pyc_fastmath.cpython-36m-x86_64-linux-gnu.so_slowmath.pypubkey.pyRandomFortunaFortunaAccumulator.pyFortunaGenerator.pySHAd256.py__init__.py__pycache__FortunaAccumulator.cpython-36.opt-1.pycFortunaAccumulator.cpython-36.pycFortunaGenerator.cpython-36.opt-1.pycFortunaGenerator.cpython-36.pycSHAd256.cpython-36.opt-1.pycSHAd256.cpython-36.pyc__init__.cpython-36.opt-1.pyc__init__.cpython-36.pycOSRNG__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycfallback.cpython-36.opt-1.pycfallback.cpython-36.pycposix.cpython-36.opt-1.pycposix.cpython-36.pycrng_base.cpython-36.opt-1.pycrng_base.cpython-36.pycfallback.pyposix.pyrng_base.py_UserFriendlyRNG.py__init__.py__pycache___UserFriendlyRNG.cpython-36.opt-1.pyc_UserFriendlyRNG.cpython-36.pyc__init__.cpython-36.opt-1.pyc__init__.cpython-36.pycrandom.cpython-36.opt-1.pycrandom.cpython-36.pycrandom.pySelfTestCipher__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyccommon.cpython-36.opt-1.pyccommon.cpython-36.pyctest_AES.cpython-36.opt-1.pyctest_AES.cpython-36.pyctest_ARC2.cpython-36.opt-1.pyctest_ARC2.cpython-36.pyctest_ARC4.cpython-36.opt-1.pyctest_ARC4.cpython-36.pyctest_Blowfish.cpython-36.opt-1.pyctest_Blowfish.cpython-36.pyctest_CAST.cpython-36.opt-1.pyctest_CAST.cpython-36.pyctest_DES.cpython-36.opt-1.pyctest_DES.cpython-36.pyctest_DES3.cpython-36.opt-1.pyctest_DES3.cpython-36.pyctest_XOR.cpython-36.opt-1.pyctest_XOR.cpython-36.pyctest_pkcs1_15.cpython-36.opt-1.pyctest_pkcs1_15.cpython-36.pyctest_pkcs1_oaep.cpython-36.opt-1.pyctest_pkcs1_oaep.cpython-36.pyccommon.pytest_AES.pytest_ARC2.pytest_ARC4.pytest_Blowfish.pytest_CAST.pytest_DES.pytest_DES3.pytest_XOR.pytest_pkcs1_15.pytest_pkcs1_oaep.pyHash__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyccommon.cpython-36.opt-1.pyccommon.cpython-36.pyctest_HMAC.cpython-36.opt-1.pyctest_HMAC.cpython-36.pyctest_MD2.cpython-36.opt-1.pyctest_MD2.cpython-36.pyctest_MD4.cpython-36.opt-1.pyctest_MD4.cpython-36.pyctest_MD5.cpython-36.opt-1.pyctest_MD5.cpython-36.pyctest_RIPEMD.cpython-36.opt-1.pyctest_RIPEMD.cpython-36.pyctest_SHA.cpython-36.opt-1.pyctest_SHA.cpython-36.pyctest_SHA224.cpython-36.opt-1.pyctest_SHA224.cpython-36.pyctest_SHA256.cpython-36.opt-1.pyctest_SHA256.cpython-36.pyctest_SHA384.cpython-36.opt-1.pyctest_SHA384.cpython-36.pyctest_SHA512.cpython-36.opt-1.pyctest_SHA512.cpython-36.pyccommon.pytest_HMAC.pytest_MD2.pytest_MD4.pytest_MD5.pytest_RIPEMD.pytest_SHA.pytest_SHA224.pytest_SHA256.pytest_SHA384.pytest_SHA512.pyProtocol__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyctest_AllOrNothing.cpython-36.opt-1.pyctest_AllOrNothing.cpython-36.pyctest_KDF.cpython-36.opt-1.pyctest_KDF.cpython-36.pyctest_chaffing.cpython-36.opt-1.pyctest_chaffing.cpython-36.pyctest_rfc1751.cpython-36.opt-1.pyctest_rfc1751.cpython-36.pyctest_AllOrNothing.pytest_KDF.pytest_chaffing.pytest_rfc1751.pyPublicKey__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyctest_DSA.cpython-36.opt-1.pyctest_DSA.cpython-36.pyctest_ElGamal.cpython-36.opt-1.pyctest_ElGamal.cpython-36.pyctest_RSA.cpython-36.opt-1.pyctest_RSA.cpython-36.pyctest_importKey.cpython-36.opt-1.pyctest_importKey.cpython-36.pyctest_DSA.pytest_ElGamal.pytest_RSA.pytest_importKey.pyRandomFortuna__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyctest_FortunaAccumulator.cpython-36.opt-1.pyctest_FortunaAccumulator.cpython-36.pyctest_FortunaGenerator.cpython-36.opt-1.pyctest_FortunaGenerator.cpython-36.pyctest_SHAd256.cpython-36.opt-1.pyctest_SHAd256.cpython-36.pyctest_FortunaAccumulator.pytest_FortunaGenerator.pytest_SHAd256.pyOSRNG__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyctest_fallback.cpython-36.opt-1.pyctest_fallback.cpython-36.pyctest_generic.cpython-36.opt-1.pyctest_generic.cpython-36.pyctest_nt.cpython-36.opt-1.pyctest_nt.cpython-36.pyctest_posix.cpython-36.opt-1.pyctest_posix.cpython-36.pyctest_winrandom.cpython-36.opt-1.pyctest_winrandom.cpython-36.pyctest_fallback.pytest_generic.pytest_nt.pytest_posix.pytest_winrandom.py__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyctest__UserFriendlyRNG.cpython-36.opt-1.pyctest__UserFriendlyRNG.cpython-36.pyctest_random.cpython-36.opt-1.pyctest_random.cpython-36.pyctest_rpoolcompat.cpython-36.opt-1.pyctest_rpoolcompat.cpython-36.pyctest__UserFriendlyRNG.pytest_random.pytest_rpoolcompat.pySignature__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyctest_pkcs1_15.cpython-36.opt-1.pyctest_pkcs1_15.cpython-36.pyctest_pkcs1_pss.cpython-36.opt-1.pyctest_pkcs1_pss.cpython-36.pyctest_pkcs1_15.pytest_pkcs1_pss.pyUtil__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pyctest_Counter.cpython-36.opt-1.pyctest_Counter.cpython-36.pyctest_asn1.cpython-36.opt-1.pyctest_asn1.cpython-36.pyctest_number.cpython-36.opt-1.pyctest_number.cpython-36.pyctest_winrandom.cpython-36.opt-1.pyctest_winrandom.cpython-36.pyctest_Counter.pytest_asn1.pytest_number.pytest_winrandom.py__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycst_common.cpython-36.opt-1.pycst_common.cpython-36.pycst_common.pySignaturePKCS1_PSS.pyPKCS1_v1_5.py__init__.py__pycache__PKCS1_PSS.cpython-36.opt-1.pycPKCS1_PSS.cpython-36.pycPKCS1_v1_5.cpython-36.opt-1.pycPKCS1_v1_5.cpython-36.pyc__init__.cpython-36.opt-1.pyc__init__.cpython-36.pycUtilCounter.pyRFC1751.py__init__.py__pycache__Counter.cpython-36.opt-1.pycCounter.cpython-36.pycRFC1751.cpython-36.opt-1.pycRFC1751.cpython-36.pyc__init__.cpython-36.opt-1.pyc__init__.cpython-36.pyc_number_new.cpython-36.opt-1.pyc_number_new.cpython-36.pycasn1.cpython-36.opt-1.pycasn1.cpython-36.pycnumber.cpython-36.opt-1.pycnumber.cpython-36.pycpy3compat.cpython-36.opt-1.pycpy3compat.cpython-36.pycrandpool.cpython-36.opt-1.pycrandpool.cpython-36.pycwinrandom.cpython-36.opt-1.pycwinrandom.cpython-36.pyc_counter.cpython-36m-x86_64-linux-gnu.so_number_new.pyasn1.pynumber.pypy3compat.pyrandpool.pystrxor.cpython-36m-x86_64-linux-gnu.sowinrandom.py__init__.py__pycache____init__.cpython-36.opt-1.pyc__init__.cpython-36.pycpct_warnings.cpython-36.opt-1.pycpct_warnings.cpython-36.pycpct_warnings.pypycrypto-2.6.1-py3.6.egg-infopython3-pycryptoACKSCOPYRIGHTChangeLogREADME/usr/lib64/python3.6/site-packages//usr/lib64/python3.6/site-packages/Crypto//usr/lib64/python3.6/site-packages/Crypto/Cipher//usr/lib64/python3.6/site-packages/Crypto/Cipher/__pycache__//usr/lib64/python3.6/site-packages/Crypto/Hash//usr/lib64/python3.6/site-packages/Crypto/Hash/__pycache__//usr/lib64/python3.6/site-packages/Crypto/Protocol//usr/lib64/python3.6/site-packages/Crypto/Protocol/__pycache__//usr/lib64/python3.6/site-packages/Crypto/PublicKey//usr/lib64/python3.6/site-packages/Crypto/PublicKey/__pycache__//usr/lib64/python3.6/site-packages/Crypto/Random//usr/lib64/python3.6/site-packages/Crypto/Random/Fortuna//usr/lib64/python3.6/site-packages/Crypto/Random/Fortuna/__pycache__//usr/lib64/python3.6/site-packages/Crypto/Random/OSRNG//usr/lib64/python3.6/site-packages/Crypto/Random/OSRNG/__pycache__//usr/lib64/python3.6/site-packages/Crypto/Random/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Cipher//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Cipher/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Hash//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Hash/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Protocol//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Protocol/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/PublicKey//usr/lib64/python3.6/site-packages/Crypto/SelfTest/PublicKey/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Random//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Random/Fortuna//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Random/Fortuna/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Random/OSRNG//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Random/OSRNG/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Random/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Signature//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Signature/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Util//usr/lib64/python3.6/site-packages/Crypto/SelfTest/Util/__pycache__//usr/lib64/python3.6/site-packages/Crypto/SelfTest/__pycache__//usr/lib64/python3.6/site-packages/Crypto/Signature//usr/lib64/python3.6/site-packages/Crypto/Signature/__pycache__//usr/lib64/python3.6/site-packages/Crypto/Util//usr/lib64/python3.6/site-packages/Crypto/Util/__pycache__//usr/lib64/python3.6/site-packages/Crypto/__pycache__//usr/share/doc/packages//usr/share/doc/packages/python3-pycrypto/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:20116/SUSE_SLE-15_Update/6c2040ce40a79bb2f2ee3ede79a979c5-python-pycrypto.SUSE_SLE-15_Updatedrpmxz5x86_64-suse-linux                       directoryPython script, ASCII text executableELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=c2ee225f4af6fe9e1ced60e6b87e50f425b1b1f0, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=62330fee328d52c44c24dacb9aa2a0a20490c797, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=9229e4b7deb449c8d45139082f9161e678f60d9e, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=a0e4b8ae171e2076a36798119b4bf2f6c2298bf4, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=c73579b16106e87d651845a87b60d4e33033a002, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=053963045e2faf02e06e4fe0d5f0c3be6f83e099, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0444bbc05a83ee751eecb2285a922325e91977da, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=5dd6217356cfe0034337a4b771bd49a6abce8b44, strippedASCII textpython 3.6 byte-compiledELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=c10e2102840f0b10c3516d7d2a5dbce0b3f17dda, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=46bd389cb122234d3c8c98025f17342b6b7b8800, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=f44dda73705eb9faa9416ef8978757d10c33c268, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=074f13940623625fde1b761682a978b0c9dde3f2, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=9cc4ab7954a71d99c0ece9b0cfdfdb7898ddbb05, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=8dfa76df64de2d3276909f41b70bb1f1899dac84, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=165aa677ac709e41fdff078381ca116f7a1165ea, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=b0557bb3bc8cf0a803a21f2f9340d690eceebc6c, strippedemptyPython script, ASCII text executable, with very long linesELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=4a1d31702344577ef579ffd149060014ae871f20, strippedELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=c06066bad509f9fe9b9253f0b199da796e51aed3, strippedUTF-8 Unicode textPython script, UTF-8 Unicode text executable &-4;BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefmt{      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR;AjتLQ"Uutf-82e6a0a05479e05870fcdd1208b993a2c0f450c38247070923bd7692aa2566bf9? 7zXZ !t/~]"k%{^E) `B5föB K\s\d{f[C/ΝjOo#$J%Se(:2IlSʞZDD7݌ >H$kK8UJp<-Hv'"gsՅKL 4=ܧ;jARaJL L׼2y5ļs?nÚYFy~/纇ekW`?O9$m: Λ?GlR51 dfdX|8J/*o ٌ%ْY^ r-V807S_N@pπtLk ?!rHS392q9OdY}h&e&TS Bږup(eBXOMKCzګC)o,o'UqeoV}=m⃳6*X'ݭQqjfx6D9UnEeQBnANqSaE:kW-׮89߫=yeT9Gg+,8|~p76فt;ގG Lo.֤5e : bYI  UOnn@k7D ?g xyY9,0}RKˋ.]S; W@'}D>ϫrU{ cul1.Q-F[rˏc-?T=0d;ӖFrğKDm"gs6{xƤ%&'!hJBtXK[mVG֑RCC jJjOD$Tu0;Ee> !;sݽR^ɾ0*^83Q (; y.^crnnpu_v;~5хozb!UY~/XC ={[,\_&r)47ۋc  K7Vr2UzMUEmv}ڼV*0}nFFjlT0p&Tn&E";`O8ʪ&v>KK:f!rlF훵}]R'ݣ.GwdhD&_ڦOEwO|NZ0׺o6Tz-lwOC?"ɎWh47.u|p~X.VCڰ/@N(L:KYۯ:M=DNEhx+uǛD+JJПћFNAva%$QD<ВX81*gqK|.COs) Oqn\~ 3W >d>%FkIFy@A׫TUr8߄C/UPiV R@Hհav6Y2>&GRR*w9TR5g}7Ú~a,pۼ1 6l[t+^"!-^_tXNVID?m7f:9x\/*e9@X%~|rHjD/ C4< sP  Ҟ ðZ^܃IUfx΄eU6D4<#eBמ%*ŤX[]ο+yjh r.;sgD/ zǞ]C^Bݵ R]Oiy<-Yu(B68{ݴ/Yfp7n/1:;/dN z1+q55knZ`U5mY՞ lb4h9UE^C_)Pe0dոqa:m ?(S,Z"Q"p++E@NQk,Ę̐z-Z:?= ]{Avm\Ք|1N&Ɇ'X8\~U싢mO;:w BkN!_t\5g($qeۀIbs4M ~ؕSBQ ](Od-+SKgZXyDr)Ytl*ǽ^"`_Y y'eFxMp,wn3@M6l_(Z*Bu {YA7> % #QDۆ()O[uP8`Zq vsU&(Ug|`x2 s7 'V_V?PU=cüB΁fBu 6IbO@Jf.Q Fٍ'5 ;:?n?MB ʃ]iiP՗1 5u@ QHDmS>Q;%\^Rް@R݋dmÓ"O=4v|,."r3+lG(OvxCly(9FeF>]*[e%@#/Lsаb8E1|)f4Z) #eQWtV.smR 7/1cF(^y/Wi˶c6X*J f^-Nu[ߏ~UI!Ƣ̅JPtgJ[NY/5[EAKM.C%fr~8(ur̵*)*5tt}@~-H F 2C ߂ju >w?#H*cPذ=ڎk߬s ܃0 %Tc)g; z)7~$eSTM[o:kj5Rb}h`a:ŝЛ}@[ၲS>.yajϫ!((\\gºgRFwz]*|,pIN|!~!ϡ'Ji .Ĉd]ЊcC6g[kI[Z  U" A!rhUbyS4XzZf6Lu{U"x, $ꊾHo?t໢݂"]ÎJ-d K5]8; g&Kǹ_ԙA@J*KUhHKZ%bB(;CFUKO[Gc% +GjkΫ `xjm+1B~!DH77!5C0DDY24rIrmãa~=$OpS'>ع[lNrS(85:gYh(r lEC۹G t $|MqQC&JsD/2Q ˇi{VzRfxLN%h0TN>&ZR, 0=ͧMb pH!),R[a;..I6jhk(EWʭ:6T&`=;:kAD7 ߋ7h}w,I}{ 8(j;6ޥ*ʾB <%&V#1Qf"͗&|$RJ鮵㡲`J5xyw2ISڧ plՇH="p6X鎷bٝjvV@N?'SFqf:-Yz^)4s7ij//5F9~Q)PL6^xo꿒yIYFS3‘8\90V$ȫ A`yX <(kBORT4cyH7}"/{+!S?_gFH5Yϡl4hT3F6L>TE$ޝDa WabfǎrD7`̟V xV}A,4FOyOnsfpZ@v:A=pVwpv) "|gaE|N"80*Zep+3q =CT۲赉506``(e*ńK( @ H`J#oKcDyMV(o4D @2X8QyqdQ@0w?k C}@8=ս U;4 `(hwZԣEbn6SgrIJӤI΅TL|##[QCCڼ=\ )|ݮ& ï ˌ@J&VB5s ?uUX}84pz *wUSV~Kvv@J%oM zO -)Ae-FiD77@z$.iZA+.aޟ'VFd[N7+&f?XP!0$+xD;dҹCi6a <\ǝO<$g%ً“)?5}FQp("t^ tKt2v/mNYS`hy)(}xZi%1y2-F'?inez?))~!-$3Q@n'=csEZS̅oOӐu.o`Ni1kYnR(2W.n2cuMhf@{3 v.ɰ,Gm|t5j$S^/8liʌ;q߼`8J=Sjk,(С?ʮW2`m\Ud+„ ڇ#N8՝AGp28@?*OjJg']~_:4H`7C94uYN]RZ_KY`9]&7fG>q >'$,=M+) } ?R>PMjS +W3BMNM̀+/qyH3K9MYZ@_v !fm.M'GԦ^Ef.@شQUEQkx>N_p :v{qC+%͎>\B|,͈y?Qۈ jKQ6!9C$-Y~Yg̒(fRDH7Uz`mې)a@hL[U]A5_Nݠac!g5Q=ULpކ@03[c S<`ǿ(gyI7XwN+wAʙz\} {iBQ^* Utpސ:.:Qx%1#zu^P9Y~A43:%–g]̭{!ї![3,uV_)QϝkcX7[XIg.)n_̊xd7qK/\q0T0Vp>gr@dߊ$+?@/BIbH &""+ݯ 'gKO ;߰.DC qf3s⒢k]W9d>[*'avQ>dرǮ Kvs/f( (Ѿ«۴Ar k2q 0[++YC3F7]NV~鹙*2?W\$wmtPQG]Gk0縷+jW{,263{ahJCu W1[$=9Cz Uc _K O'{a<'kdcDS XbUY8}_-ɕl>?oAQ J'%m?BJ[KYHg'O<$1``m(8o9 ^G'=|ag;4<{5|N[1.jikp)N Ɉ+I Qq{V2HV`Hyy$#mqpT0Z!JD.Z]f;/Ak] қg!8A6&#^HPl%ROm6 brhom^d[ΖBk P-ƅN QoZ%zb. 2kO'")X/XȀ.ivjRӟ2ɅW&p6(8Ps'of@5J GmhŒr;YVTxgo=` +>Pɍ"Dq,sîVEo(A* }'YxaD@-|:vpSK>QJ*E|Ge"ra!^3)DRޖK=aM2wZ `Vc7@;{8vVmҿvUqOoNk)Q {oi@A;V"It؋)"<'`=2轓E!,NJ7 ȱP>=GK- n.iJtskI4/p&KnnWnruAPΠɯE:"zEQ*w=_>m ֜g1{sʉw&T̡; Aurnxԩ;҇XKEeW}Mݙҍs׹XD;zS6= 7N:"H?zkw j"s;m_C 12 dM_/,hAC`ƻX7L!:0gu[qbÊc! xY5hFw{>H=p_t=!5ȯ:n,BcbsYb43r J0i4Nl|I!W{a)B> m\bYX?g9It4h0oɊ['+T$^d ҁL4ܷt;%|9z eJbB.IGOD(6\Pō1~WëiXzj0DJ58 hZ3ec! /wwYuZO*.gA*7aZ7$Hyq{9BD;H Fl I1a"9dD7HNDiw}$䙕@B_ '=xwЪBe ^,#:><ǛѢ#Vb|0\;$^KHL8#_ͣº&e`40N&i8TńW쇬I sX/kڞOnyW+SC@ !0)v]:bWݭXgm;=jRU5= zs2^8:Gpľ.ތ3г|kW Vɟ x]r;~z7qb謁D?z$%=]Ln+tӎ@]8Pb܃3 .^qwun@ $kb GAndV]*_gL*7yz A LJ/CFNI̪."1Z\ #h6o%f|괛EthXeAb!fX<.z!/U%1j+ lP|ckӴ/0Q,j?F99)l>zm_?7k2~`jYxLe'bIKL@PDy/=Gˢ̈_Ua;)t4"Y (K"{ה}:eBp=n`6V 3H}EG׸$t<|p|X 1Z)Lgjzi *Ū2̕o._)7g0eɄGPjW'"2Z\1|X;2g^Ѽ hjYďT4d׵#I|ڦڦtRnLՁ{s ֠I82.jOQpSATxj7LuuM``t!J",Nޛn$$"2Fs7t#ӀB(MwnAk#[ʒ>}B˚7,fzO]IUu'XTTEӧ~c^:Ft΂+nYM3t*1T1O_V:~\SMX̒d-I\pGyu,DbW$r;S^1>esERv'G%KMR4|B䠸{UyCU8 1@5zW򯔘7njD&/rWXބjR؄N!$‰XI ZV]TwL#2*uɾ\0l2a-,wh }ڬPƦ*[NK$iEaL8 _ڀHKZc^ ?^S4F,d:H/D?Cj N 2 (5$ 5k0-*@dIehQ(5E QYD)3< 2vBzㇺ^|FG KC,IL&o}ѷ҃L񺆸tJVI|M&)SU֒a!(gG̑ /48vIg Ձ%e.}H&.IZ54~+yP)̦dlƲbb,=á9kǐ~x!bG[I\PtgZZa>co5R77oTdve- )%򘇪ɇψ1^1%(%M #wPu9_{>4<UעgebJ"MLP% #}%|~U))߂H\-u7%T2KQ2uQrE1fуicj#[5%3Co`D@A/9 `"SK szB_E("XJ(Uզ^-AW,8<֨Xx9ozP ReY[!aNV TNM􀽬*sdL&s]}yA*f;I;^$[겱 08 AE%XKwF3IV?i.%ǚT0 >5ThY Z@hW W&~,ڑAŢLBoKmRAA 9=itlׅC/|9Y@;6;-b1m u mʟMة*ep6'+ gA_{m7Nmo4YCU24RiOt,ϖaRywz/Z0h4+p\c2x`74Dz`@]m<+h?NͯQ~T'"a[}GlS+d(9ٝ#sm u@(_ rrLO;f9pD0[VOT[j5LUvnJ&; 5 0pUa ]fKRT13aV>`rkPeub ]tJms{xP43_'##!X3]\SS؝*_-+}E6}M^N$V5"ԧΙP`9,tZc-[tQ/RL ]6-^2Ľ}LA ,Ce#^Ar0OsG2&ZGhe1%cE' ]b2\UP*]㵑K_&=d?T>? wB 9z(؁!0}n5}|y(}k~6C%?zu"ܵo㑓?}5lNghznkw]_?KBLFNZ3+Dgy_mY{_t^Df-wTHa E]>̃-ůxw)vJ @|7 S[6X =ݼ4y),8%,&=]Ԉ&yÇQ ':ZjbXsv'OvTSgC!QZݿZwd{֊`3e)]lpӻg)[zb |c3 hסn 8$!`DU=TxMYT<Xa~A̩֗ j"l4Fxn@`+ahE([58U=BBRWnb,Ro}edB^Z<;OBy GQ' 4+v ^0I*t8y&n{d*&gcqQc.֧t#ߠx7cg#AJи\;tn]bR(o=#c8S=~*m}KEIkX"LVT9މb mm+̭x([ò՘_s5LzM8EFuLsFi6y4>~Z!A.D@Xٷ/p!Z9G3]:-D7bL9v-rIB>@/#u:xu.^`oFʴ'8hܫjD-xCQqu z.g2&P(x}ސuD [f 0߱e.OF/=#H ;hv=Z~ :r7U/F8>UajJ#>p(̒.2PMJae?A5xJh;zd IZ}2:KYx[69z;TUzQycʒDA顊'|%m"f19٦=)Hn]ӯ!PId><[cA֭0Q0!%,;0-mS3PVXVfȊ$/cAp֑g*NpRߏS Mҳk:/2Wz^` F0$OP 1P=G}Ty^2hxv?C$ Tɚ^Zʾy|ޕ@f0>C~EIP$'欩|Ar̰q_D^2 9BCM(Ad|9Xr ?a]|\8Q_Q_bcYIxc\Ο=HTDo8g.qWDrq -hY >bzQʡxt\G>2eikyL[i,kb58%X& )I>nZ ԃɍQ{ _K[|8c a *wJbK~b;k/oW% BC5gaďi9jVOO{Sn?{iTTvŝufЫhŸ,z-iLAH];hXa L? PB,['NJJ~1ﱃ =<& {p2zcA Ē 4QKʁ*̮$fp}X(QA_/+i)聝]ur8Ow0FI-VNшMQ2ap/;֍GJ+|ȷ,{ۓAz3OTVkU#ܫ(Kuȧ*܏ph|2Źb| P]l¸+;>XE|`r"7f2&?WEY5oWxo?#ȚfɁXT˱ukGzUktl?JP2d:kCRSxBȨR&D$hTbG6%dתC}WlۭgvȾ;BJ??px xK)[_g&LO7z,tSwE\Fkfzl#Fvo;iR8bT.APlziqQvKr!]˺SPq^ 7$ )ui!E06jՊR#ƆsOV`4~!}_S<Z !1Hˍxj5Ė$w28PMAKRqB#$FN톗s+eޕ}.cԽfiF͉KpYH?01QiS@ȁGAC$';yLcS82T@G-/=Z^-\'W7.̔1 g W}w-s/Y`VNdd^$Z2_{]~uB YiʡcP$uużC!Fk_BGi/!}7ZFrpקwMæ]ɖFû S U6fWw[Ag-3ʠ [k7=Vbϟ˩P$, oџZ+*Fw 8mɚV?BzGx쟦%sg] GS<̚'}r tINآe{ﵔ-*oUL,qp#1/н;` UZA7lmHNh=n;bQjo,2nP~ K@͚W-!S[KC%z^O"[~kn?Jwi*O ߎ4ĺַIJ e>&d9sqnc*3z^"[ǠF]#ixA,iJ=U^jD5]lcb}>!ͨ7eAa,1u#qR8Ƞmb( >@>\T0M@Ϡ&0JqŧWC@yR!p'~*oĩ EH+瓌ّ3YDTɛ%e$t>=CRsmTV'x WiG(Cxq!z|Ԟks^ǼpF$<OPA)"[ \T)p͙&Q)S_qÈ=~pFX5ЪQc_Ir@38+{ck1I rƛ? \ģ.Z~ɭu8tYVfd`)s w^tbeI0yHRPV'={fmu%sGTxIQXt2Կq7}CN!?L^C|*ߡ R_ ^a΄SI<.0c| @<ITUI!b瘥CLws{s E|A&C!#qQ l6 ބjD&wALmQ۲;Wp8Z9R'8E1wi=Dt_)y5h21JAC / yT:O'稐8S~H\!sQsqKf.JUbudn\7D)cq!iS%<dKL ⡞}wHݞNfD)yY袄iF][lqE,I/CL3^F˓|!RKRS7Gz'<onn8G6d ArguH0T ]Ս{p Euی:9M{^wY5Q2x׶ڸwLcspEMpPQ@.jčL⮕:91x_mXEWԭ{o2_>U5䖺uGr҂R)alԒSH' G' x!h\pʪ{E2-We037Bao:ǐJF?2XCJF]%le;Τ\]q1l5Zgt&3C`ةY:mX.SXal:Wh?H>=4¸fa6[Rq)»@t su[ Wݞ l+)9ҬGEN]3ї[>DTڤ% ( /\\y hglX9wrsL֎?5< @H.]1˯v܀kBNѭUZ|b{Rаl @)Q|$ 1c(B).@N)`fFN=GX}lg)"w@^ 9`&m0_Bk}E޺BiHJ|8POgE,"FRaTQI(RoZi%vvm/Ex'Y&lf=cF${"KEl^,$ZKwiFÐrݨf0?$̓gh 7ϸa9՝]LTwl}Vx)G: 7 i* [gn>(lo R]1a_m(>BЂr+W-WCXиȱ >j_?r0CI+hsJQ@&`LT@5/CBNYFy ;,JMA/e:&0!l?s="{Ē)2H1ڧQo+ ˦.tÕ ^;ѤiGkSXI\KȑYwץcg&i HɍW~aG*d9'&9[UˉNkm8 4ۏvᄸ`w-p՘lX?+n }M8n#Wڮ`_q:\(6A1{P %ei'$euR^]"D*|C @bTy[n/rC2NJn@f1FYQjTK :֛AWM _(45tL׭xh@~'pQ)TKXp|֣#6nX1 < d rlh^QqzZH낹m"R޳. S,:Pa"n` :&J,'/#F=3Uf۴4Yl+q-}]l͒w YPzdY9Yڷ&;df+$8Ux tm;l>Bp$l Yݦ a=FPw+b lEւ~]W5* dlCwyӞQb.j voE(dv=p$ۉڰ%⚶D = KL.'G\;Ҹ÷Od=ꉈ XTiְ.{Vx,L^AB:T3DWRE2`:H0y \[HP"}{'R;T{'|YB2Y65˧}wh#{-/aӡh+Q1[Ó5'_5%Z ZY`&.%BQ[Pf*#p3XN1&3`x/S0SX򠢖EQǃb8K7_Awz[zք41[xcHdG=^InqkUq3 Sd-6-E[#C,%ǮO8 m/ %(<=˙?$8ZC;@e'|+{#u=/H7L'Tq)YMws2 B\:e ̾oBnen FWS Q8&똞]ySY@KF:Л",CgqLlСW/ï£Fa"ʦO7F:'OEk5=e]Ft(#KlrWOަY@Vi{.QH?w esJl8wGӓ8vR}URÑ\!R ZqYؒ >(h X /۶%%jVY $T})˺{ Eʯ47%,+4NTD 0 /"hX橾X!?GpGD#3UP_2hbqg*Dh&hS2 &NjU^ٌ t4-0RlpM91$=!o u{UFT?癭6#;J`iP>=˱"}Ug66I"ɇw}^O$ג5=|JS} 2l9U+4[]*.9G#UB1$m o7?\N}T)p4J=Q%CJ@@* mW\@9= 5/9GWh7 6B8ѮdsV<<ؘmfӀ#j$M1EB\jcD97ʵQ&i#5m|K6ͭPrƱ*^jDP>۟.<ɯG@@^p-]\ʘW\!E77 ˂z0?*|q8|K9>"`0ͷ>>z2\g]whol:IX96zW.j8+ĵj D Nbxu`yxB~>'YDk<:ʛo%ĂWp2؀-h]c} i!eqwe CmS)=`! p4㮃Kp5ɖ- @b'5R#G UhVGd#hDtŘѰ RG@ lw|Lb^&$@*~ /p03[Lxts4FCPj:/T$&o d||ӘzύB~n[GȲ%;UM5&h~jtN!m/*.scѿ1]ىU<]᳜-n>ȁ 3$-qކ=n?|I)L&u BTQlѿzF<ޛp=„> Kc? {찟-kfC53n6K(<2XI'^NvL^؜x}/Bsxww,ұE hYCS2n*jJMuR-D\]#[e%QƫU~7'@us㖷v̖ -ܑ2/ԶwKEb.eLsk'&3r,&E{+O ހk{2I˶#oWp0.I~IP PpE #GB +|Mh~З} 'D{'tɡMV q{qP_z.yg~z 1H9vx ՑcO].aN;6|u!Kپ4xmjrw r㣽bv:FJdF*DoC#ZJ]˥O )jF6JPQ[;V/á21^P&y. Ā:sr'I(GtuϯuJu\/~YbEEoY Zeu[E[+ +/\C*=zzy#fq9Jήƍ Մ,O3^ J{:Vqf$b$w/X%Ɩ#5?\ķDxY6V*{h#" hGAXRgL~%faQ G9ɏ]j1D^lxy0Si]IZžGG(Frq\bf眽cюkKda( BBR}YL?JYm:Po{Z3.(5:G+* Raj,%`;uw:c?CJ{ayb`F\D֒0fP\ԍhWUWJ(f?TҮ ky$uyo EGCIՔ~yyn_S(μzӲ%GBBvbmEJ:aN `ƩqwdKɫv] E p.Q(Po6i'Na\uft;NGYz ƒ|_Ҹ8<7Z~\ic&,[KRR^9t-jC1Y?XvpvH7鎄zsUon%rǚ.3w5 tEfgg޿wLgqt?^ o`,/A`yj]+վАƺS"5n3vM᪌|Q22ݛ)DI~?ĥ2;$2=XGԝ^\30X; AfPAECdI)d6kF_ _ Zۂ3u5V QHʮ Rl"I܃I*>Ֆ fVo壽xw&;+{Ə[ߺ6h:d+_ܖZGm:e3jӟQa qDRZ-79aZNMyX:Y[;Ud+ދW Đ&Cf֍m?ioۉjogZrmn50\pOـIrr犦h82AXLC*[<Jmb.T3b͂⚘RuA)9vE$1_R|j UG=CF%T-rY+4,/rNÈ҂O /a?`H:U!w͡}0|w(gã}$iߺ@_"]w#g&5hH L(GA;>@93]Poq+(5'Cc_T$;%[[5$jk.51o(7<./'MmJia5!t.Rin,f-*376#_T:lo$L"C(#dy6drERd'0]ӛ.r" ߬}ٙ%&,N=b9n Zഫ_^Wأ4)c Қ.81a"ai~%8b ~ĸW Rn 5S [ֵ VʡzS'ZR^,!Nbuא"]0D_>{Ac ^RuX4N$te^eH6lA nL&.Шt(\t݆ӷ7u@u\G !  EQnކh"ס~kCxbsd:Yrf`9ocCr-fYSWII1 ̏[2~bŌ9b(HZc fDnN.okWCYU2i 66:ߚ(;kI&<: R<;,q][1Xdh-Kc%Rr.VJXMd\rHIhz GhVے}ƈk)JEuF;re1C vZ.OqC||ghG@6EM ِt|, ^=ד ^P]ܮOfޒxQ%+tB z},cV(R7(OAX=ꀤq{Oس3-~E뭰O@oU+mi:~~GyWy.^ц8ߔ`3ak6< 8dF>mgv{3uz!` ek!b܉G[sPv5Cs]+- XxeG8# $JfP`TpyJa|}J?ѦD_0bpv??"HzFG CIF|wȳZu_`(.h5Ř=P/#?#=k_8imZj°e*Kf6tA ?mR-Q1"҅kKDM3gRYÀˌ('Fst\tЫ⭭T_SD*Li!%$`e~-Bբ_jKM 7tϲ""8u)ӂ gK+H 3IKMCtLYyǽIʈi>TLzg19(W+Y) @HȎ_J)K P|8[+#N0s3uePڍEy'p~1IF=qP/q`-ɋn#"kwkεKwd,KHl⤭r1r_EZd< $go5Y>mm YS6Z2R l`^tռwuҁ1YMLYz4a<#4Gp@;yF#*nki,6CD%+DRkT:c"Eb\4%@~Ί 㝸H SZ-o l݅sqԅB}b=͔7VyW:wqȵ?zb8蛝5{MTѼDp:~l ȇFՀ r `~0n鳑Md/ xk^ckGVʍg:w?7&?{ī?]<@"c19R?'#BbQlÛ !ɦM>_ ?D( Mp!45Lͯ Nþs]FR| ZȎX07I.Z`6Czݖydӈҡ7e:M!K \pe}`rnS#̂r /jI:?`YݡKHp*ǩ){%Mͥ/0qܸv nOnC6"7FhMdsajvH 9a -mmUO_{i+b+vT_SENY'U(ƶ YZ