python311-eventlet-0.33.3-150400.5.6.1<>,. hap9|H&(y% 8ZW%Rڞ}n) ٛR_ıܖ+8WcA9) -|O㸐L]ݸq1)7m˹'nkt=6>"w>?d ) R1RV l4|4  4  L4 4 Y4 ZD4_4e4kkH4pp, pT q (qW8q`19r$1:u1FG(4H4I4XY\4]4^bcddeflu 4vw|4xL4yz`ptzCpython311-eventlet0.33.3150400.5.6.1Concurrent networking library for PythonEventlet is a concurrent networking library for Python that allows changing how code is run. It uses epoll or libevent for scalable non-blocking I/O. Coroutines ensure that the developer uses a blocking style of programming that is similar to threading, but provide the benefits of non-blocking I/O. The event dispatch is implicit, which means Eventlet can be used from the Python interpreter, or as part of a larger application.hah01-ch3c a,SUSE Linux Enterprise 15SUSE LLC MIThttps://www.suse.com/Development/Languages/Pythonhttps://eventlet.netlinuxnoarch^V ..&d&d hUhURS!$3$P%r&W5L6'<=C__""_b*AA>?Hее"f=^Z(77  1AmT++WWss  zz++,,2 E E\]8ZZ//LLUU3"Yj*R{Saa?ҲҲj5^| G%R ~OA )"yQQXXSVFjj^^11)z)F&a-L"%# de)i*dE  {NGj/%SSx*K* "",, //"^^4DKQlB AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤h%h&h%h%XeXeh%h%c Ph&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&a cQa a a cQc cQh%a a cQh%cQa h&h&h&h&h&h&h&h&h&h&h&a a a cQa a a h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&a a a a a h%a h&h&h&h&h&h&h&h&h&h&h&c a a a a cQa a a a a a a cQa h%a h&h&h&h&h&h&h&h&h&h&h&a a a a a cQh%a h&h&h&h&h&h&h&h&h&a a cQa cQh%a h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&a a a a a a a ah%a a a h%a h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h%a a a a a a bRa h%h%a h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h&h%a h&h&h&h%a h&h&h&h&h&h&h&a a a a a a a a a h_a c a h_a 258d96f5ca1803322b2f70d2e2de843af682eb6b932c8b23bdd729f562e45772f7abea8f2ecb881455742133618d6b6582352f8fd7253a5cd066060540f6483f01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546bdfdb162586f9ad0d33edb8d6bd477190688efe2728ebc7545019da80cb87d05093438d6b6274409907c6493e6e3d8d817f6e4728c0d5e6d267353f84e1525c27ef5c8a765e8e747c54c532036c5c1b1ed8be27cc1d221c8c7604572b69db1e598189b5df9785dcac41f4dc8e9664b5eba68393fe86c8f974ca322786c5d528158189b5df9785dcac41f4dc8e9664b5eba68393fe86c8f974ca322786c5d528159b330355b8d07da37b3e44c9f0ea337655a5649627e7405b16c35d081bba631d9b330355b8d07da37b3e44c9f0ea337655a5649627e7405b16c35d081bba631d0629977a366ad77e11ab3599babde394cacf98085de07e5201d9d7c9ca4c894c0629977a366ad77e11ab3599babde394cacf98085de07e5201d9d7c9ca4c894ccd3b8f6e8be944db394163dcce24d72ac07fd067ef5465f17b72d45f69bd5f7bcd3b8f6e8be944db394163dcce24d72ac07fd067ef5465f17b72d45f69bd5f7ba7905c51ded6dd5dfefa04bdb3e523fd118240d24d52c8987ee6e9fd9a69319dd02b07bb3ba07f9cb685423a3188d75f5fb46f89876b92be5b82e26bbc1cfe028832e93ea772fe9266b7246f4a00e2d3203fc691f91f9a1a04f59e7c690a20ba8832e93ea772fe9266b7246f4a00e2d3203fc691f91f9a1a04f59e7c690a20bab57eb6e32b41a3b0fa50879bac008b67d98572ae2013417059ed1975b6ddda3051402b522dc238ffb2d5347ebceff83f1ed7dbeb1ae3e7012b13585d329b02028d8a1ae077a110f949d9fb2b40c818903d8f79feb93601ae9f87b06d0d972c84d10c8d3768eff3ef90dd22d77d4f0d76be9ba43a4e66dbc5b34cf96e6aeed1b55033df42e945c3246a0465aa46daeca3b72d5bf87107fe50ba34d7cc73b70558e8def7beffdd0ee74d953a3fd05d3f33fe3cd0fca956578a4867430f31422f74d6393e739008db33051199102536817137e598d8f6903a88d52ce3e8bf691459ed92a398e3a9c708fc1dca89832ea6a8a00c0efe18484b0dfe85b42dcea2205fccaa89012c4838e609d7e4bd957ea8788596f8f67a13cd998b4cd24d64a1d44c3f329b6ca9eaab56507956ea023aac8860c92e3233f1a956148b758090eefd111145b44255c145e1faa673db4c066ad0ca4e32f57151a8c9e1f71352e28a9ab01145b44255c145e1faa673db4c066ad0ca4e32f57151a8c9e1f71352e28a9ab06732155630b7e3a3ed1b736df8875f9dc5d2742505c45c9e546f0ae57ad6040856d2b4074ff00c76aaa5094f1db092a958cd10e338eaacfbcacdad266326d84f9b2f020d068dcc6a644d7e490f9e10c2db5a4dd1fc28d421cf0baa0f0a1a41009b2f020d068dcc6a644d7e490f9e10c2db5a4dd1fc28d421cf0baa0f0a1a4100df1486abd36106b48f504915581d50807b886b63b314e7d622f81280d6c0fc982e3abc7179e75b81cfb9295c18d214d97dbbee722c7110b0466b1cedbbefdb189d2bd050be23a215ef670695233a25a9604e62d6aa205842259ffbc33bda54e29d2bd050be23a215ef670695233a25a9604e62d6aa205842259ffbc33bda54e2d20a676effda813b0468deff217eb1052ad5b2349a81c00d921f210efa95afc7e44f9a2e66a6595ceadf8ffb3a857961e3ec45a53b511c000f1da15a6939c40d78350e251b1a9b7217df6dfe2c316494d4a6d1faebc6e02d6fbd0acbea831f088c314416a13812303fc246a403c4739d6072f6e40ef39ba536576df06d01229277ca259a17092d6ec2c26eb79f39ff735180cbbf6eb1756ea85cb71dfbb0e5aac50275bebb37169fc54938592ea220bc5d2bbd1f95966bc999133d8d253e07f499aa5cbb1f659b9a9e999d41c88c8db8531cdeaa4f529ab03611b665aa956cfe99aa5cbb1f659b9a9e999d41c88c8db8531cdeaa4f529ab03611b665aa956cfef94bf4724c9d8220ad18c219f248bf48621a24f12f24a28acf47eef91ac10a5ec636825d61f186cfe215ef37ca0393a90fae8b5b6c61bb7d94cb49c4cd3803095cba4eab78dd5b2471c2f0fd7ac83779da060480d267635266a5f55977a8b005868ad71ec1d300dbaa373591638c02fb9e0e5154b2f04442f14da340a13e914512f2d40f2bca13f8d69648b0880f7b13ff8e476cef8d15b17a4315c06b88337eeb495e67a398129cdee5064422a028ff4ccfc04672c167750b594e8351253edc07a6ace626a7464930286cc4de8e22584321f778139e107ddf5eb0d049f77269887f4743058637aa72f08ceac9cd57eab3bfdce1164a1450662ba3dd78fdf37ed85b746a88ebc626ddaa9a1e325bfb91c262fd0cc559bb1b55b43bf7cc10390804a73b4f586cf591bd05620062287d0f90eae8e62abff9ed128e0b703202da605ff15446ca0e7d99efda1b47ea71bcfeea01ca002a635ebf83882ba224adf51f0a13a702897a20f1d0da706fc61abbccc8ff8395780bd16b2ecd3c03308f92e9877917db76f2257312975ac48417f5a0fa390fd2cbaa65e35a781799a1e938dd09b7b47b4bfda1fe84c59b9622dbfa6354c5e8276748f742eb751027aba7950c09b7b47b4bfda1fe84c59b9622dbfa6354c5e8276748f742eb751027aba7950cd3cc001f5daeeacc7e00f0a800b49caf129fa6218794791cd81b216380022402d3cc001f5daeeacc7e00f0a800b49caf129fa6218794791cd81b216380022402b697a9ceb8fb632b59c9455f6a9fa994ddeddb09c3461327f081ef677d1217cfb697a9ceb8fb632b59c9455f6a9fa994ddeddb09c3461327f081ef677d1217cf64a5a986c6df65e431853a257e4cf26edcd448ed553b216d60618dbd1c6bfe0064a5a986c6df65e431853a257e4cf26edcd448ed553b216d60618dbd1c6bfe0026a64e706a62b8d0db449ab39c719bb34147ecd7ad07d8e81f6874dffc34b6f026a64e706a62b8d0db449ab39c719bb34147ecd7ad07d8e81f6874dffc34b6f075c9e34863fa2b6ef8780c5a95910eb6d519d5d8c04ad0676d11fec0605226ee0ee635ac7753d91d2d889903d771028fe214effbfecd02a3853b0ae821bc5043dd38b6934d733f794ceabd18b8b6cb4bf4117890441da4c9b7993474d757b48ef4cdd1526101551e4ff7a4e52a009cc0e210bd595ceeed7a4f29651daf563eb45a4ac4070bc475436e282269d67e0d63fe31ff184947e95fc2cf8159b7dc94e0c249ac220955a015d1f97b917af566128a49e32950b425c25e9d5ffa9568a22cba99eb282e7b0d04010cdbe9c577ff2210daa50e8db44b76860c48b35a590daa72a306e8ef4fdf1678a2b47b84f6f6680379b88f2500b1262c63af0bbc6109d572a306e8ef4fdf1678a2b47b84f6f6680379b88f2500b1262c63af0bbc6109d5d5e6d5b6b7801dd115be5aab09da918f11a3a2978d6c30d24a6a31811fd2ff88d5e6d5b6b7801dd115be5aab09da918f11a3a2978d6c30d24a6a31811fd2ff881030f6a0ea3f89978c464ce4386c78399a76efabfdc1061d3a289c3a08ade1261030f6a0ea3f89978c464ce4386c78399a76efabfdc1061d3a289c3a08ade126f9bb2146d01de3e0cfb8a7354a46c5b175545bfd118ce9100c8000561735b65bf9bb2146d01de3e0cfb8a7354a46c5b175545bfd118ce9100c8000561735b65b826baa095155f60a515ca4e592313c3c6ba9a096d0f66bae4a8b229fefa0f377826baa095155f60a515ca4e592313c3c6ba9a096d0f66bae4a8b229fefa0f3771b6ff988c4b64814c5f039b3e42448aaffce904cdb0f15b15ca2e9c8ae2e41701b6ff988c4b64814c5f039b3e42448aaffce904cdb0f15b15ca2e9c8ae2e417021d008390e5292811027fbf8c7c50d12095a2304b676e801b01fc341da700db121d008390e5292811027fbf8c7c50d12095a2304b676e801b01fc341da700db1b1e4d81ff3301f8c11433368c47e2fa75b57b414d5adf0ae249ffd9580c57560b1e4d81ff3301f8c11433368c47e2fa75b57b414d5adf0ae249ffd9580c5756035c9ee21508561058772b69eb8dc0bee23db31079a4b87aa74c50f8449f8efe935c9ee21508561058772b69eb8dc0bee23db31079a4b87aa74c50f8449f8efe973574c64c8db8f82c393178662727b8e02e7e6d118870fa217b6f398f31d937b73574c64c8db8f82c393178662727b8e02e7e6d118870fa217b6f398f31d937be76fb1123930a18a017c8177991769efd9a4fa429ba966588b902b87e3bd9712e76fb1123930a18a017c8177991769efd9a4fa429ba966588b902b87e3bd97121d54a1c6c7e01d1b1051f5ce145a08f786707de3acc8daeac03aceef2a52fdbf1d54a1c6c7e01d1b1051f5ce145a08f786707de3acc8daeac03aceef2a52fdbfe1ed9d06a36c521b35430b422de1c90fe3d27c1b7b1cd0b7f6da6f4b65b356a5e1ed9d06a36c521b35430b422de1c90fe3d27c1b7b1cd0b7f6da6f4b65b356a535b2503042fd804bcec4fe2605410428dafc6d0ba62877e81a2204185a95dcca35b2503042fd804bcec4fe2605410428dafc6d0ba62877e81a2204185a95dccaae6c158ab594fb586385a33e14afb02ad82137abbe3455a386eb657ee15fe53dae6c158ab594fb586385a33e14afb02ad82137abbe3455a386eb657ee15fe53dffa66437563a9cbcc89cbb42f58d489a8c3e91996dd6d6c810a87f3a25cdacf4693af0c11525452d1e32609d2eee1bff6e24077965b1e2794c7f13bea71ffa64867b3ba489b76980fd00605cffcf02cddd5fe0bf545beade2b5fd31b90e8e762867b3ba489b76980fd00605cffcf02cddd5fe0bf545beade2b5fd31b90e8e762631bd3da034f671e8988b185d820deebaa163dc361cb7ccd354568f9984dec7b631bd3da034f671e8988b185d820deebaa163dc361cb7ccd354568f9984dec7b86ff84d3db98968a4ec8916c29b3cbef62c6ccdb49b9c75f2bd7c0b8cdb58a4afa9faf5903b19880bab2d55d2b6a9b94f538396e3cd9eb55bdb897a349a074c2ea61ea592f10eb92838bf28ec8905a26e67469567a3a55ee3ed8ad50a8f9b930ea61ea592f10eb92838bf28ec8905a26e67469567a3a55ee3ed8ad50a8f9b93012203b62bf70018da9ab150116e6f06cedb70d61c0be12b53f5f7ad84b6c102312203b62bf70018da9ab150116e6f06cedb70d61c0be12b53f5f7ad84b6c10236eb6bff437ac6ab3c1e42fb1280fb72de603265c97c752f234fd328091382eca6eb6bff437ac6ab3c1e42fb1280fb72de603265c97c752f234fd328091382eca23bdce6ebba7fa87523c9ae8f82eb93d3b7dc7e2d72d5a059a4bff9750f2847023bdce6ebba7fa87523c9ae8f82eb93d3b7dc7e2d72d5a059a4bff9750f2847066f2af267c5989950ec4c21ea119b129486ce236ceb8041c9b299f59c4667ad866f2af267c5989950ec4c21ea119b129486ce236ceb8041c9b299f59c4667ad80997fc687e133572d635b94df578afacc878fc5d2bc1f77652211c2e5a32e4b7869b3e3a12ec19e95f8ae50491b1f643cb0577d8d6aa07bfed40c9c3881c0b3939cfb9118b370124fed071f81e98b6e2ddad2e9fc2af3457de30c51cdfeb3c7ec44a478691252ecb20ca4803014286472527b8a4b70ddbb431144a4adf587221640f1947631808ff60b8ae750f62d35f172389b84d111af43877d94e3c76ca66ce0e62a44ecd9455ace94586650b8a850ea5640998756ed8e62665839019b4ad776dd531c00fab0ed920b85e0c99ae78cf2a3a55879ead161638d2816a2e45d0bdedbdbc454e46af1957efe6a7a50b3a16541a374a9129c02128850f02e165dee0f90a4775773704d7c5a8b4e1b32559ef832e3fc86a083d1eef213e664acf22fd42eba8c5df484092b71e0e550d040c44f3cf6bfd6deb93f2b5b59bcce02d209189b8472b4a403aab21c7cbc9a8004e1d699eebd8d7299aa0312f8dbe3c26d54a80fd719b277ac135805ceac0f731eec44c41e8d884d30036b7455952c60a90f1ce3ac496a078591ee8b32fcbc6c72504d12363a3fd5356563f20b7c0fcfb8af079e7ff433ce648d018f9a8b896579c6676c68b198e9d4d6b359817bcfb9d143a54c0f262f5c83c6e52aec0bfd4889fe883d19d59eb64086d6eec4674dd0b282fa6da1805d4a50c5034c8ad25cc49a8af96af170e62a6e17cc3f6c8890b75831ea93b5e23ac45091560c3a4b2262d4ea01b65205b044b228f43ae2c5850938f1ea93b5e23ac45091560c3a4b2262d4ea01b65205b044b228f43ae2c5850938f2ebeadec9277073ba6c50dea078d2508c900f2f212f5855af2fbbe52702a1d53d074a68ffb1a7354e59c60f1276edd49ecf0963c0ebe501d507fc1b77f96cbece9924bd1c8ab953686f519a8872e4cf4d7f032461145b271972f0dadde38e3ab8c77dd32d885f3f5901da84b084b29047a66d9c0a6ef098129b0510729fbbd0b6b7449f365cbed9ff64db60172f51e43b4bc77cda38661084eb52ae8c353330bca06a390381c91bbfa6b74d18ed60dde3c46c91d450db570ebbea6cece013fa244e9962b1d994e10e561d72139b2b4b1407496ea7b27e520171e42a2a156c1d461acb73d069165191f4d9cb29598bbbad4171ecbedbfc1c1fd058d55fa6f114b0bf69e967fadd05b0c1b65a8b269080611acb7429f2a095c6891bc539d29c5039e9e7f1ea4a3038ff2fe460a7521721d0374be3ccb5bfaa2fe82c51fc6c1d13d9f8dcab172e2d92ada0abb130ab65211e74655d853459184974e905142410e791914e2c1bc3376e0713a912cbee9559eef2c0643bf88247ae84d422b51afab116d565f09e7ea5e214b9ca36932ffd052da4e0d84318f61db109a4e840fb1207cf4bfa928e021cd7427f8b4f5cdbfeaf349908546b31c3888f6d29741677f5976d56ec129b1ab7d3235bf6fa90e706fcc19f4d6d6d0f33c32ab3e39f0116b8eddf6d3889810813a9d703d0d02f1491f27ff4a24bc0dd080d865c2e248a77537c148d6923b827d364cbcd447ea9bfb5c5bf5ea1c5d45869a71caad3e2b34f7b67d48d6923b827d364cbcd447ea9bfb5c5bf5ea1c5d45869a71caad3e2b34f7b67d67cc8536c05f3c5ddc5d766fa9bc7eb0c3a910a3377bd0d73010c7bc858a3b1b67cc8536c05f3c5ddc5d766fa9bc7eb0c3a910a3377bd0d73010c7bc858a3b1b8f673a94b34ba7415d71cff864429f2ba43a864440d9020a66a41ee77088b9418f673a94b34ba7415d71cff864429f2ba43a864440d9020a66a41ee77088b9412befbc6868f0d3b97c7f0e638a30eb75a43e479ef58024d3653a1b9e3bc4b9942befbc6868f0d3b97c7f0e638a30eb75a43e479ef58024d3653a1b9e3bc4b9947e4c78571f7fe91051fd9f8dd175a6b8dcb56ad8723577ac714942e7c172bf5c7e4c78571f7fe91051fd9f8dd175a6b8dcb56ad8723577ac714942e7c172bf5cc65a472486bc5384131689406b7344cb9804563fe7337a05d9b07e16f7610908b89d51e2b6e0aa542020d8ca9bffa84f1bde2ef091f5a9eeed4d22eda452f3b95296b86d3d3ef694b124e98fb88937b75acd9866cb12400e525a43e1a51f0863cadb069f4a5713de2d95987be6197d5f570519a82318d0569ba93f3d15ce06634aeddd1210dcf15b0a2bd3ea8485f080554e387548dfb4d35d4fdb7aacef838e7e6f6da533dabc1b348a8ae5782574f1d7d70dbea9bf8397692ac82f6277914053efe421a7888d19993927ebcd43968e386a2444ee3b803bf4a5a0b9ae1fa1878e28c453d5225d6cf10d7d9d3da272a017856b3ecc607cad169c67cceacf90078e28c453d5225d6cf10d7d9d3da272a017856b3ecc607cad169c67cceacf900706d1bb426b68bc885609c0e74dec6557fb2e088ccb486e9beb6dd32dd01f84e206d1bb426b68bc885609c0e74dec6557fb2e088ccb486e9beb6dd32dd01f84e2c2df942385795c731808c0a74f10d01a227b87e1d9f5069299c10ded5c80a1a2c2df942385795c731808c0a74f10d01a227b87e1d9f5069299c10ded5c80a1a2141763968b02aad4890db535e94184d8102547c3108c9e89391aeb40f7d92091450e33446cfdec19c097230053a2123db8f52c9b85bdb9838aa9b3b331498caa8513b29d376c7e7baac26b5a8dad6ebe22e44c60d918b06ea9a98fdb73afaa4170e43588bd3ed7960abc9ea3810edd20dea024c86d7165303a318f6336728f750557a1b8336e57b8f7f3b3800eed54fc99249eabfe357a2645b297a3983504bad35cd3d9b406618f678ceb7f984b123b8f87c6f60aabb74097ec9a9c9b1e40788a3e02fb9ea9df27d6fcb36dd672c6122c5e7a6fad4d67e7c72dacf2c4708665f3610fb8505c77bfb106035e6295fdb5adb415b530a5b1f463834ad910ee68c135c284cbc2aa2af4e0209f00da5f07e4a8e581578dc3a24a8777edb22c5f54008aacd820b70faf6564cb96c627128c5a30ca86c2fd963e0974e845d382cc817268eb8008742d1321ed1473c51c7f269947b1ce250c4bfb7bacb2e89f6bc011dd68eb8008742d1321ed1473c51c7f269947b1ce250c4bfb7bacb2e89f6bc011ddefbbb3a18c8f43b41ac831132e976cc50cf8a4e9bf8307da83f0810c7d84e8499b7898fa709489ea801bb2cb7f945488cd3f5e4ab8bdfa2e88af319fd2217123e3c9f538ae1847be98b4d508ef4685bf05849bc138ac6b0ad68eebea83d18907e3c9f538ae1847be98b4d508ef4685bf05849bc138ac6b0ad68eebea83d189071c8c0ca526bc6c543b4f3e325f07e0496bd556792442a8e3ee147f28cc45abf71c8c0ca526bc6c543b4f3e325f07e0496bd556792442a8e3ee147f28cc45abf7f3c6119f03e857dcc3e225fdd0500cf0ee81e6c534b98333f8bf2c589a61cccefef0fd72c28206d88b2b51e811d498a5815ea91d4f5f1d22077bd463d834fa7c807f95dfb85b565bc1dd4b42548eec272fc98af88da15b0d330b7259480b2d12807f95dfb85b565bc1dd4b42548eec272fc98af88da15b0d330b7259480b2d127bed6f20205dfe9d05c00e4f8e09d7ed220a9e893a9c96a7c93e27a37451a5697bed6f20205dfe9d05c00e4f8e09d7ed220a9e893a9c96a7c93e27a37451a569879e6b0b0f38653094e221cad052a820749af99aa164d5cae8a69338a06437dcdc5690edd911f66bfd92032c10fc9f759a121a7dd2527096088311896fd71a960a67d4247aae1e8532ceb65b9b11151e8306fb4ad6aa35da8958604833bfdfcbb69116f9108921b3b5edcaea611c0191d5e03985132f44fddaa962c3fb1338cc27770e98821321f3e33cc7e76997818c72aeeb90330012d3eae75ce0a3e7e46fb5e8b42fb5f4d0cee50d7b49c1fcf1bfd8287b9fecef953b904f4f7af23d5ae6cb44c915119180765c8495d94a8756858e05a67ac2f70b8c7ebed531b278d9f7186acac88b5ce5ad00342ac1d9e4bbdb8de0fc18875404bfb9f8f2d5e584ec4b69d5abe046c65360a7cbd755def678052c688722001e45052e78cd0b0f6e6e762eea9447ff79fdf36ea6967a38af425488f6271b14b6d73b1cbfada879d1b26a84630b4b9ced0701c67a9c16f21c409f0224bf6a9b8154d376deb57943ef945fd1957551ff43d7ed1abf6ad33aab2d8888e41d7eb1cfa17cf9ca30aad4148172455c55250753f6caecd42b670340e0cf82ef6e62b834f619a6912243bf9f58814e62ba51ecc298145620c697c6fd2a9f0d8c376751e7e9ed40e80b9ccbf7de994e62ba51ecc298145620c697c6fd2a9f0d8c376751e7e9ed40e80b9ccbf7de99ed8205af3969fda3a79c1be43beb79c8863becb719b0f4f9f828774fa85631b6ed8205af3969fda3a79c1be43beb79c8863becb719b0f4f9f828774fa85631b6f21716bcc72c21b5e7bbf1cba39a593496a65b7f99ae6e9185ad1b4302916362f21716bcc72c21b5e7bbf1cba39a593496a65b7f99ae6e9185ad1b4302916362e2f024089a0b482a8c856f4129ea41a8cdc0656d4662d98ea00447349176a907e2f024089a0b482a8c856f4129ea41a8cdc0656d4662d98ea00447349176a9073f1a0b77f0ef5716adea4ab9525816b2b0bcd20306ab2a1420b46a0d61334abf3f1a0b77f0ef5716adea4ab9525816b2b0bcd20306ab2a1420b46a0d61334abfbe47a7fcbff8408392991fb2663a7c74b18d15198aa01ff62a8f6863ed37543dbe47a7fcbff8408392991fb2663a7c74b18d15198aa01ff62a8f6863ed37543db70873e174da313be50c87d2bbf766aee750748beb244315b2ac83ec54955cc9b70873e174da313be50c87d2bbf766aee750748beb244315b2ac83ec54955cc9211db1e7357c6f47b6081102155e95300276a577dd630d4067ffdb24837e72331fc0f4ca6f110d4f767f3a2a825d4ebac00948139e0393e72d4179ee851438834739bd1984bb3e6acda4a030d3896a255eca3dcc4ba2f9da09423c097137dbc012f675259117df0a96b737e06b91de54bfac2cb6fcd39fdfff2c17da4e410c7ae81c19727b02b5bd66e3074ae86ca0a223ef615d37bfb3fb6250713c813a667b6997c15de81fa3ffa31a5dfe940699193797b34ba503b0a5785f6a3d1347abcb9855bca048f7c3148541085739e8ddb4ec9661aa858112bcd9c71fcf97e88d0efd38e5f27c85f5e0101a32baf1823581f1558c24808fdd0478c89c6de951e43dda4c95f69b2d82adbd9f03013752e6652833848c993a57c775e017b6eb16ff9e7a6ff7da0ffdf448e58bcb784e7ffeb5314fefd4f5ada90edad5614312cc2998e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e6a10f9a4be7ccc17da92ec55b759fba8c125609d931cdf17cbc061cd71112f5e6a10f9a4be7ccc17da92ec55b759fba8c125609d931cdf17cbc061cd71112f52a410381e6cafd2d485cafb467e4a3d54b10d70aab0511995fee66cdef0dfb542a410381e6cafd2d485cafb467e4a3d54b10d70aab0511995fee66cdef0dfb5416e758052fb0ccb3733bb4dab52af937aeb8544b846dca81c7acc2f9f2816e1d16e758052fb0ccb3733bb4dab52af937aeb8544b846dca81c7acc2f9f2816e1d43ce4da862a38b7a19287323174c22a8da465e41f2418872f2d48615601da09543ce4da862a38b7a19287323174c22a8da465e41f2418872f2d48615601da09512fc7bce5496231dc17cccbfff43b6f92962ce3b3c2e75fb595f429ceb94b76012fc7bce5496231dc17cccbfff43b6f92962ce3b3c2e75fb595f429ceb94b760b48f70905301b4f937edfab0409c1d39fa7403d111166846a495203e9125c072b48f70905301b4f937edfab0409c1d39fa7403d111166846a495203e9125c072f7ff04b74943a1bc683ddecae6d3a7a0fad459c9fb53ef69fea77387a3dbf270f7ff04b74943a1bc683ddecae6d3a7a0fad459c9fb53ef69fea77387a3dbf27081a2314bb503d8325ae955379b0d1d29342fb7d3653d0434858a0513134ea2ca81a2314bb503d8325ae955379b0d1d29342fb7d3653d0434858a0513134ea2cae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855ca948385e1f34d9ee34a6e2fd2ac25c0d6af71aae0eb1a79f62735c58ff57c58ca948385e1f34d9ee34a6e2fd2ac25c0d6af71aae0eb1a79f62735c58ff57c586057194d3f029bee98e284e209aaaad034f5970d96d3d5aaa04739fe94c0c16d22523f74c9f212a98166b50ba9e993d2ebbaf6d5ca3ebf9df22e96ef31cce4c222523f74c9f212a98166b50ba9e993d2ebbaf6d5ca3ebf9df22e96ef31cce4c20a747632a1bcd3fbab23012aca1d83f52f7c7ff8f52686f8356b7c20b4e617390a747632a1bcd3fbab23012aca1d83f52f7c7ff8f52686f8356b7c20b4e61739b7e04a81b37915bc0983485b8572ca501ca851e6a1dc8247a27261709be5cf90b7e04a81b37915bc0983485b8572ca501ca851e6a1dc8247a27261709be5cf9071b8164ff98dd3805165bcb38ebd4bcd3e34c6fa2dcc5cb3faf6d8a7c43f925af78446dd8b649a978c989f84bca8b09d852da2f6257e3ad156787ab08dbb709df21dd8b8c2ee2a9c14bb346619e085451fc90b742876e38a0055e74058b20daf2576bac522e0275d716cd4b4a8f7fd1e9a36312749314f053e1659edb348bcd089fcb5567b099ab167780c1f3e5e9013c9201c83c91397c013d2acf704337952a8d77cf45ab98afe315eb8bfcd32725bd20a8e31dae1d17c096897f11e8a47188c49411d3f07dffbecf53debf10f891b7d31c9a8d0eeeeb03465a698c3d0e000b75839b5771bb84bcd8b1dc80ad672b8859a24a42d507279654aac8b5e23f437ef7d89d61fd52acde2014ca743bea3a176190c8037bad534745ffefc7e6a6013ab20a8b440d7c74c2e353a438850e899a4a23d4493ad99b8f6bde6f0bb0c998dcb0d66e01cb6e2d967313e3c0531c37770ae5cab3484b35d31304dac483866c9f55b3a366634b9afa53469533e4bc87b9d6e27131696b3bef99c588dc21c91d3bceca0497f7a81475116bff4138733fb20060b6b22b671e657b6158a860656e2rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython-eventlet-0.33.3-150400.5.6.1.src.rpmpython311-eventlet@      netcfgpython(abi)python311-dnspythonpython311-greenletpython311-sixrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.111.15.00.31.10.03.0.4-14.6.0-14.0.4-14.0-15.2-14.14.3hdBzd7ccwc@cƍc#@c:@ck@b@bI@aY@a*@a`W5@_ _@_=@_:q@_:q@_6|_5+@_5+@^l@]w@] \Q\@\@\ @\ @\l@ZX@Z-!ZYYp@YYYXv@XBV>@UU7@TgTfTq@adrian.glaubitz@suse.comdmueller@suse.commcepl@suse.comdmueller@suse.commcepl@suse.comdmueller@suse.comdaniel.garcia@suse.comkukuk@suse.comyarunachalam@suse.compmonreal@suse.comjslaby@suse.czdmueller@suse.combwiedemann@suse.comcode@bnavigator.dedmueller@suse.comcode@bnavigator.decode@bnavigator.decode@bnavigator.decode@bnavigator.dejayvdb@gmail.commcepl@suse.commcepl@suse.commcepl@suse.comdmueller@suse.comdmueller@suse.comrhafer@suse.dehpj@urpla.nettchvatal@suse.comtbechtold@suse.comtbechtold@suse.comtbechtold@suse.comtchvatal@suse.commcepl@suse.comtbechtold@suse.comdmueller@suse.comdmueller@suse.comsnica@suse.comtbechtold@suse.comjengelh@inai.dejmatejek@suse.comjmatejek@suse.comdmueller@suse.comdmueller@suse.comdmueller@suse.comtbechtold@suse.comtbechtold@suse.comtbechtold@suse.comtbechtold@suse.comtbechtold@suse.com- Cherry-pick upstream commit as CVE-2025-58068.patch to fix HTTP request smuggling vulnerability (CVE-2025-58068, bsc#1248994)- add sle15_python_module_pythons (jsc#PED-68) - Remove upstreamed newdnspython.patch (bsc#1208126). - skip test_raise_dns_tcp test (gh#eventlet/eventlet#803)- Make calling of %{sle15modernpython} optional.- update newdnspython.patch to not patch non-testsuite as it breaks the functionality (bsc#1208126)- Remove unnecessary obsolete dependency on pyzmq. - Clean up the SPEC file.- update to 0.33.3: * dnspython 2.3.0 raised AttributeError: module 'dns.rdtypes' has no attribute 'ANY' https://github.com/eventlet/eventlet/issues/781- Add fix-py3-rlock.patch to make the code compatible with python 3.11, gh#eventlet/eventlet#754- Reove unecessary sysconfig-netconfig BuildRequires- Update to v0.33.2 * Stop using deprecated threading APIs Way back in py26, snake_case alternatives were added for the old camelCase APIs. py310 started emitting DeprecationWarnings about them; presumably they'll look to remove the old APIs eventually. See- Fix build with OpenSSL 3.0 [bsc#1205042] * Temporarily disable test_017_ssl_zeroreturnerror- disable test_018b_http_10_keepalive_framing (bsc#1202188)- update to 0.33.1: * Prevent deadlock on logging._lock- Add python-eventlet-FTBFS2028.patch to fix build in 2028 (boo#1102840)- update to 0.33.0 * green.thread: unlocked Lock().release() should raise exception, returned True * wsgi: Don’t break HTTP framing during 100-continue handling * Python 3.10 partial support * greendns: Create a DNS resolver lazily rather than on import * ssl: GreenSSLContext minimum_version and maximum_version setters - Refresh denosing patches: merge remove_nose.patch and remove_nose_part_2.patch into denose-eventlet.patch - Refresh newdnspython.patch- update to 0.32.0: * greendns: compatibility with dnspython v2 * green.ssl: wrap_socket now accepts argument `ciphers` * websocket: control frames are now always uncompressed per RFC 7692 * ssl: py3.6 using client certificates raised ValueError: check_hostname needs server_hostname argument * IMPORTANT: websocket: Limit maximum uncompressed frame length to 8MiB * wsgi: websocket ALREADY_HANDLED flag on corolocal * green.ssl: Set suppress_ragged_eofs default based on SSLSocket defaults * greenio: socket.connect_ex returned None instead of 0 on success * Use _imp instead of deprecated imp - drop pr_639.patch, merged upstream- Update to 0.30.2 * greendns: patch ssl to fix RecursionError on SSLContext.options.__set__ #677 - Release 0.30.1 * patcher: built-in open() did not accept kwargs #683 - Release 0.30.0 * pyopenssl tsafe module was deprecated and removed in v20.0.0 * deprecate pyevent hub * Deprecate CPython 2.7 and 3.4 support * py39: Add _at_fork_reinit method to Semaphores - Drop pr_672-remove-OpenSSL-tsafe.patch merged upstream- Add pr_672-remove-OpenSSL-tsafe.patch to support pyopenssl 20 - skip some tests which are flaky inside OBS environment - fix python2 build requirement for Leap- Update to 0.29.1 * patcher: [py27] recursion error in pytest/python2.7 installing register_at_fork * patcher: monkey_patch(builtins=True) failed on py3 because `file` class is gone * don't crash on PyPy 7.0.0 * Only install monotonic on python2 - Changes for 0.29.0 * ssl: context wrapped listener fails accept() - Changes for 0.28.1 * Clean up TypeError in __del__ - Changes for 0.28.0 * Always remove the right listener from the hub gh#enventlet/eventlet#645 - Changes for 0.27.0 * patcher: Clean up threading book-keeping at fork when monkey-patched * backdoor: handle disconnects better - Fix test skips for non-default python 3.6 flavor gh#openSUSE/python-rpm-macros#66 - refresh newdnspython.patch- do not run test on python 2 (sadly no real macro expansion possible to allow run but failok with ||:) - disable test discovery dir recursion gh#eventlet/eventlet#638 - simplify the pytest call, no test file deletions- Add pr_639.patch which fixes eventlet using dnspython 2.0.0 - Add remove_nose_part_2.patch to complete the removal of nose - Activate test suite with 958 test cases passing on Tumbleweed- Don't limit the upper version of dnspython.- Add newdnspython.patch which makes eventlet work with new dnspython 2.0.0.- Add remove_nose.patch to remove dependency on nose (gh#eventlet/eventlet#638).- update to 0.26.1: * pin dnspython <2.0.0 https://github.com/eventlet/eventlet/issues/619 * Fix compatibility with SSLContext usage >= Python 3.7 * wsgi: Fix header capitalization on py3 * Fix #508: Py37 Deadlock ThreadPoolExecutor (#598) * drop Python 3.4 support * Fix misc SyntaxWarning's under Python 3.8 * Remove unnecessary assignment in _recv_loop (#601)- update to 0.25.2: * green.ssl: redundant set_nonblocking() caused SSLWantReadError- Update to 0.25.1: * wsgi (tests): Stop using deprecated cgi.parse_qs() to support Python 3.8; Thanks to Miro Hrončok * os: Add workaround to `open` for pathlib on py 3.7; Thanks to David Szotten- we don't want to obsolete python-doc: rather python-eventlet-doc, which depends on python-eventlet, should get removed on update, anyway.- Do not generate sphinx docu, it is online and now we have only python3 Sphinx anyway - Update to 0.25.0: * Support for new python and ssl - Remove patches that are in upstream release: * 0001-IMPORTANT-late-import-in-use_hub-thread-race-caused-.patch * 0001-ssl-connect-used-non-monotonic-time.time-for-timeout.patch * 0002-Fix-for-Python-3.7-506.patch * 0003-Fix-compatibility-with-Python-3.7-ssl.SSLSocket-531.patch- add 0001-ssl-connect-used-non-monotonic-time.time-for-timeout.patch - add 0002-Fix-for-Python-3.7-506.patch and add 0003-Fix-compatibility-with-Python-3.7-ssl.SSLSocket-531.patch Both needed for python 3.7 compatibility- add 0001-IMPORTANT-late-import-in-use_hub-thread-race-caused-.patch Fixes a problem during tests runs with python 2.7: RuntimeError: no suitable implementation for this system: \ AttributeError("'module' object has no attribute 'epolls'",)- update to 0.24.1: * greendns: don't contact nameservers if one entry is returned from hosts file; Thanks to Daniel Alvarez * greendns: Fix infinite loop when UDP source address mismatch; Thanks to Lon Hohberger * greendns: Fix bad ipv6 comparison; Thanks to Lon Hohberger * wsgi: Use byte strings on py2 and unicode strings on py3; Thanks to Tim Burke * pools: put to empty pool would block sometimes; Thanks to Sam Merritt * greendns: resolving over TCP produced ValueError; Thanks to Jaume Marhuenda * support.greendns: ImportError when dns.rdtypes was imported before eventlet; Thanks to Jaume Marhuenda * greendns: full comment lines were not skipped; Thanks to nat-goodspeed * Drop support for Python3.3; Python2.6 and python-epoll package * external dependencies for six, monotonic, dnspython; Thanks to nat-goodspeed * wsgi: Don't strip all Unicode whitespace from headers on py3; Thanks to Tim Burke * green.threading: current_thread() did not see new monkey-patched threads; Thanks to Jake Tesler * tpool: exception in tpool-ed call leaked memory via backtrace * wsgi: latin-1 encoding dance for environ[PATH_INFO] * Fixed issue installing excess enum34 on Python3.4+ (rebuild with updated setuptools) * event: Event.wait() timeout=None argument to be compatible with upstream CPython * greendns: Treat /etc/hosts entries case-insensitive; Thanks to Ralf Haferkamp * convenience: (SO_REUSEPORT) socket.error is not OSError on Python 2; Thanks to JacoFourie@github * convenience: SO_REUSEPORT is not available on WSL platform (Linux on Windows) * convenience: skip SO_REUSEPORT for bind on random port (0) * dns: reading /etc/hosts raised DeprecationWarning for universal lines on Python 3.4+; Thanks to Chris Kerr * green.openssl: Drop OpenSSL.rand support; Thanks to Haikel Guemar * green.subprocess: keep CalledProcessError identity; Thanks to Linbing@github * greendns: be explicit about expecting bytes from sock.recv; Thanks to Matt Bennett * greendns: early socket.timeout was breaking IO retry loops * GreenSocket.accept does not notify_open; Thanks to orishoshan * patcher: set locked RLocks' owner only when patching existing locks; Thanks to Quan Tian * patcher: workaround for monotonic "no suitable implementation"; Thanks to Geoffrey Thomas * queue: empty except was catching too much * socket: context manager support; Thanks to Miguel Grinberg * support: update monotonic 1.3 (5c0322dc559bf) * support: upgrade bundled dnspython to 1.16.0 (22e9de1d7957e) https://github.com/eventlet/eventlet/issues/427 * websocket: fd leak when client did not close connection properly; Thanks to Konstantin Enchant * websocket: support permessage-deflate extension; Thanks to Costas Christofi and Peter Kovary * wsgi: close idle connections (also applies to websockets) * wsgi: deprecated options are one step closer to removal * wsgi: handle remote connection resets; Thanks to Stefan Nica * New timeout error API: .is_timeout=True on exception object It's now easy to test if network error is transient and retry is appropriate. Please spread the word and invite other libraries to support this interface. * hubs: use monotonic clock by default (bundled package); Thanks to Roman Podoliaka and Victor Stinner * dns: EVENTLET_NO_GREENDNS option is back, green is still default * dns: hosts file was consulted after nameservers * ssl: RecursionError on Python3.6+; Thanks to justdoit0823@github and Gevent developers * wsgi: log_output=False was not disabling startup and accepted messages * greenio: Fixed OSError: [WinError 10038] Socket operation on nonsocket * dns: EAI_NODATA was removed from RFC3493 and FreeBSD * green.select: fix mark_as_closed() wrong number of args * green.zmq: socket.{recv,send}_* signatures did not match recent upstream pyzmq * New feature: Add zipkin tracing to eventlet * db_pool: proxy Connection.set_isolation_level() * green.zmq: support RCVTIMEO (receive timeout) * green.profile: Python3 compatibility; Thanks to Artur Stawiarski * support: upgrade bundled six to 1.10 (dbfbfc818e3d) * python3.6: http.client.request support chunked_encoding * dns: try unqualified queries as top level * test_import_patched_defaults bended to play with pyopenssl>=16.1.0 * Explicit environ flag for importing eventlet.__version__ without ignoring import errors * Type check Semaphore, GreenPool arguments; Thanks to Matthew D. Pagel - Drop 0001-Fix-SSL-connection-reset-errors.patch . Merged upstream - Drop PR-459.patch . Merged upstream- Fix fdupes call- Remove superfluous devel dependency for noarch package- Add PR-459.patch. Hostname in /etc/hosts are not case-sensitive, this fixes HostsResolver() accordingly.- fix enum-compat removal- go back to a working version: downgrade to 0.20.0 - add 0001-Fix-SSL-connection-reset-errors.patch to fix hangs on SSL connections- add netcfg package to list of requirements- update to 0.21.0: * New timeout error API: .is_timeout=True on exception object It's now easy to test if network error is transient and retry is appropriate. Please spread the word and invite other libraries to support this interface. * hubs: use monotonic clock by default (bundled package); * dns: EVENTLET_NO_GREENDNS option is back, green is still default * dns: hosts file was consulted after nameservers * ssl: RecursionError on Python3.6+; * wsgi: log_output=False was not disabling startup and accepted messages * greenio: Fixed OSError: [WinError 10038] Socket operation on nonsocket * dns: EAI_NODATA was removed from RFC3493 and FreeBSD * green.select: fix mark_as_closed() wrong number of args * green.zmq: socket.{recv,send}_* signatures did not match recent upstream pyzmq * New feature: Add zipkin tracing to eventlet * db_pool: proxy Connection.set_isolation_level() * green.zmq: support RCVTIMEO (receive timeout) * green.profile: Python3 compatibility; Thanks to Artur Stawiarski * support: upgrade bundled six to 1.10 (dbfbfc818e3d) * python3.6: http.client.request support chunked_encoding - Use fdupes- Ensure neutrality of description.- remove dependency on metapackage "enum-compat" in favor of specifying this requirement the usual way via RPM requirement conditional on version- singlespec auto-conversion- update to 0.20.1: * dns: try unqualified queries as top level * test_import_patched_defaults bended to play with pyopenssl>=16.1.0 * Explicit environ flag for importing eventlet.__version__ without ignoring import errors * Type check Semaphore, GreenPool arguments; Thanks to Matthew D. Pagel * IMPORTANT: removed select.poll() function * DNS resolving is always green with dnspython bundled in * greenio: only trampoline when we block * convenience: listen() sets SO_REUSEPORT when available; Thanks to Zhengwei Gao * ssl: Fix "TypeError: read() argument 2 must be read-write bytes-like object, not None" * greenio: _recv_loop behaviour with recv_into on closed sock * ipv6: getaddrinfo would fail with scope index * green.zmq: Support {send,recv}_{string,json,pyobj} wrappers * greendns: Return answers from /etc/hosts despite nameserver errors * patcher: fixed green existing locks fail (Python3) * Add DAGPool, a dependency-driven greenthread pool * wsgi: Unix socket address representation; Thanks to Samuel Merritt * tpool: isolate internal socket from default timeout; Thanks to Alex Villacís Lasso * wsgi: only skip Content-Type and Content-Length headers (GH-327) * wsgi: 400 on blank Content-Length headers (GH-334) * greenio: makefile related pypy socket ref counting * ssl: Fix recv_into blocking when reading chunks of data * websocket: support Gunicorn environ['gunicorn.socket']- update to 0.19.0: * ssl: IMPORTANT DoS FIX do_handshake_connect=False in server accept(); * green.urllib2: missing patched ssl module; * wsgi: environ[headers_raw] tuple of unmodified name: value pairs * test against modern pyopenssl 16.0.0 for Python 2.7+; * wsgi: document compatibility with python `logging` * Minor grammatical improvements and typo fixes to the docs- update to 0.18.4: * wsgi: change TCP_NODELAY to TCP_QUICKACK, ignore socket error when not available * wsgi: Use buffered writes - fixes partial socket.send without custom writelines(); Github issue #295 * wsgi: TCP_NODELAY enabled by default * wsgi: Fix data loss on partial writes (socket.send); Thanks to Jakub Stasiak * IMPORTANT: do not use Eventlet 0.18.0 and 0.18.1 * patcher: Fix AttributeError in subprocess communicate() * greenio: Fix "TypeError: an integer is required" in sendto() * IMPORTANT: do not use Eventlet 0.18.0 and 0.18.1 * greenio: Fixed a bug that could cause send() to start an endless loop on ENOTCONN; Thanks to Seyeong Kim * wsgi: Fixed UNIX socket address being trimmed in "wsgi starting" log; Thanks to Ihar Hrachyshka * ssl: Ported eventlet.green.OpenSSL to Python 3; Thanks to Victor Stinner * greenio: Made read() support buflen=-1 and added readall() (Python 3); Thanks to David Szotten * wsgi: Made the error raised in case of chunk read failures more precise (this should be backwards compatible as the new exception class, wsgi.ChunkReadError, is a subclass of ValueError which was being used there before); Thanks to Samuel Merritt * greenio: Fixed socket.recv() sometimes returning str instead of bytes on Python 3; Thanks to Janusz Harkot * wsgi: Improved request body discarding * websocket: Fixed TypeError on empty websocket message (Python 3); Thanks to Fukuchi Daisuke * subprocess: Fixed universal_newlines support * wsgi: Output of 0-byte chunks is now suppressed; Thanks to Samuel Merritt * Improved the documentation; Thanks to Ramakrishnan G, ashutosh-mishra and Azhar Hussain * greenio: Changed GreenFileIO.write() (Python 3) to always write all data to match the behavior on Python 2; Thanks to Victor Stinner * subprocess: Fixed missing subprocess.mswindows attribute on Python 3.5; Thanks to Josh VanderLinden * ssl/monkey patching: Fixed a bug that would cause merely importing eventlet to monkey patch the ssl module; Thanks to David Szotten * documentation: Added support for building plain text documentation; thanks to Levente Polyak- update to 0.17.4: * ssl: incorrect initalization of default context; Thanks to stuart-mclaren- update to 0.17.3: * green.thread: Python3.3+ fixes; Thanks to Victor Stinner * Semaphore.acquire() accepts timeout=-1; Thanks to Victor Stinner * wsgi: Provide python logging compatibility; Thanks to Sean Dague * greendns: fix premature connection closing in DNS proxy; Thanks to Tim Simmons * greenio: correct fd close; Thanks to Antonio Cuni and Victor Sergeyev * green.ssl: HTTPS client Python 2.7.9+ compatibility * setup: tests.{isolated,manual} polluted top-level packages * greendns: fix dns.name import and Python3 compatibility- update to version 0.17.0 * Full Python3 compatibility * greendns: IPv6 support, improved handling of /etc/hosts * tpool: make sure we return results during killall * semaphore: Don't hog a semaphore if someone else is waiting for it * green.socket: create_connection() was wrapping all exceptions in socket.error * Make sure SSL retries are done using the exact same data buffer * greenio: shutdown already closed sockets without error- update to version 0.16.1: * Wheel build 0.16.0 incorrectly shipped removed module eventlet.util.- update to 0.16.0: * Fix SSL socket wrapping and Python 2.7.9 compatibility; Thanks to Jakub Stasiak * Fix monkey_patch() on Python 3; Thanks to Victor Stinner * Fix "maximum recursion depth exceeded in GreenSocket.__del__"; Thanks to Jakub Stasiak * db_pool: BaseConnectionPool.clear updates .current_size #139; Thanks to Andrey Gubarev * Fix __str__ method on the TimeoutExpired exception class.; Thanks to Tomaz Muraus * hubs: drop Twisted support * Removed deprecated modules: api, most of coros, pool, proc, processes and util * Improved Python 3 compatibility (including patch by raylu); Thanks to Jakub Stasiak * Allow more graceful shutdown of wsgi server; Thanks to Stuart McLaren * wsgi.input: Make send_hundred_continue_headers() a public API; Thanks to Tushar Gohad * tpool: Windows compatibility, fix ResourceWarning. Thanks to Victor Stinner * tests: Fix timers not cleaned up on MySQL test skips; Thanks to Corey Wright - Remove README.twisted from docs (removed upstream)h01-ch3c 1756728161  !!#$%%'())+,-./0113456789:;<=>?@ABCCEEGGIIKKMNOPQRSTUUWWYY[[]]__aacceeggiikkmmooqqstuuwwyz{{}}      ""$$&'()*+,-./012340.33.3-150400.5.6.1   eventleteventlet-0.33.3-py3.11.egg-infoPKG-INFOSOURCES.txtdependency_links.txtnot-zip-saferequires.txttop_level.txt__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycbackdoor.cpython-311.opt-1.pycbackdoor.cpython-311.pycconvenience.cpython-311.opt-1.pycconvenience.cpython-311.pyccorolocal.cpython-311.opt-1.pyccorolocal.cpython-311.pyccoros.cpython-311.opt-1.pyccoros.cpython-311.pycdagpool.cpython-311.opt-1.pycdagpool.cpython-311.pycdb_pool.cpython-311.opt-1.pycdb_pool.cpython-311.pycdebug.cpython-311.opt-1.pycdebug.cpython-311.pycevent.cpython-311.opt-1.pycevent.cpython-311.pycgreenpool.cpython-311.opt-1.pycgreenpool.cpython-311.pycgreenthread.cpython-311.opt-1.pycgreenthread.cpython-311.pyclock.cpython-311.opt-1.pyclock.cpython-311.pycpatcher.cpython-311.opt-1.pycpatcher.cpython-311.pycpools.cpython-311.opt-1.pycpools.cpython-311.pycqueue.cpython-311.opt-1.pycqueue.cpython-311.pycsemaphore.cpython-311.opt-1.pycsemaphore.cpython-311.pyctimeout.cpython-311.opt-1.pyctimeout.cpython-311.pyctpool.cpython-311.opt-1.pyctpool.cpython-311.pycwebsocket.cpython-311.opt-1.pycwebsocket.cpython-311.pycwsgi.cpython-311.opt-1.pycwsgi.cpython-311.pycbackdoor.pyconvenience.pycorolocal.pycoros.pydagpool.pydb_pool.pydebug.pyevent.pygreenBaseHTTPServer.pyCGIHTTPServer.pyMySQLdb.pyOpenSSLSSL.py__init__.py__pycache__SSL.cpython-311.opt-1.pycSSL.cpython-311.pyc__init__.cpython-311.opt-1.pyc__init__.cpython-311.pyccrypto.cpython-311.opt-1.pyccrypto.cpython-311.pyctsafe.cpython-311.opt-1.pyctsafe.cpython-311.pycversion.cpython-311.opt-1.pycversion.cpython-311.pyccrypto.pytsafe.pyversion.pyQueue.pySimpleHTTPServer.pySocketServer.py__init__.py__pycache__BaseHTTPServer.cpython-311.opt-1.pycBaseHTTPServer.cpython-311.pycCGIHTTPServer.cpython-311.opt-1.pycCGIHTTPServer.cpython-311.pycMySQLdb.cpython-311.opt-1.pycMySQLdb.cpython-311.pycQueue.cpython-311.opt-1.pycQueue.cpython-311.pycSimpleHTTPServer.cpython-311.opt-1.pycSimpleHTTPServer.cpython-311.pycSocketServer.cpython-311.opt-1.pycSocketServer.cpython-311.pyc__init__.cpython-311.opt-1.pyc__init__.cpython-311.pyc_socket_nodns.cpython-311.opt-1.pyc_socket_nodns.cpython-311.pycasynchat.cpython-311.opt-1.pycasynchat.cpython-311.pycasyncore.cpython-311.opt-1.pycasyncore.cpython-311.pycbuiltin.cpython-311.opt-1.pycbuiltin.cpython-311.pycftplib.cpython-311.opt-1.pycftplib.cpython-311.pychttplib.cpython-311.opt-1.pychttplib.cpython-311.pycos.cpython-311.opt-1.pycos.cpython-311.pycprofile.cpython-311.opt-1.pycprofile.cpython-311.pycselect.cpython-311.opt-1.pycselect.cpython-311.pycselectors.cpython-311.opt-1.pycselectors.cpython-311.pycsocket.cpython-311.opt-1.pycsocket.cpython-311.pycssl.cpython-311.opt-1.pycssl.cpython-311.pycsubprocess.cpython-311.opt-1.pycsubprocess.cpython-311.pycthread.cpython-311.opt-1.pycthread.cpython-311.pycthreading.cpython-311.opt-1.pycthreading.cpython-311.pyctime.cpython-311.opt-1.pyctime.cpython-311.pycurllib2.cpython-311.opt-1.pycurllib2.cpython-311.pyczmq.cpython-311.opt-1.pyczmq.cpython-311.pyc_socket_nodns.pyasynchat.pyasyncore.pybuiltin.pyftplib.pyhttp__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycclient.cpython-311.opt-1.pycclient.cpython-311.pyccookiejar.cpython-311.opt-1.pyccookiejar.cpython-311.pyccookies.cpython-311.opt-1.pyccookies.cpython-311.pycserver.cpython-311.opt-1.pycserver.cpython-311.pycclient.pycookiejar.pycookies.pyserver.pyhttplib.pyos.pyprofile.pyselect.pyselectors.pysocket.pyssl.pysubprocess.pythread.pythreading.pytime.pyurllib__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycerror.cpython-311.opt-1.pycerror.cpython-311.pycparse.cpython-311.opt-1.pycparse.cpython-311.pycrequest.cpython-311.opt-1.pycrequest.cpython-311.pycresponse.cpython-311.opt-1.pycresponse.cpython-311.pycerror.pyparse.pyrequest.pyresponse.pyurllib2.pyzmq.pygreenio__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycbase.cpython-311.opt-1.pycbase.cpython-311.pycpy2.cpython-311.opt-1.pycpy2.cpython-311.pycpy3.cpython-311.opt-1.pycpy3.cpython-311.pycbase.pypy2.pypy3.pygreenpool.pygreenthread.pyhubs__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycepolls.cpython-311.opt-1.pycepolls.cpython-311.pychub.cpython-311.opt-1.pychub.cpython-311.pyckqueue.cpython-311.opt-1.pyckqueue.cpython-311.pycpoll.cpython-311.opt-1.pycpoll.cpython-311.pycpyevent.cpython-311.opt-1.pycpyevent.cpython-311.pycselects.cpython-311.opt-1.pycselects.cpython-311.pyctimer.cpython-311.opt-1.pyctimer.cpython-311.pycepolls.pyhub.pykqueue.pypoll.pypyevent.pyselects.pytimer.pylock.pypatcher.pypools.pyqueue.pysemaphore.pysupport__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycgreendns.cpython-311.opt-1.pycgreendns.cpython-311.pycgreenlets.cpython-311.opt-1.pycgreenlets.cpython-311.pycpsycopg2_patcher.cpython-311.opt-1.pycpsycopg2_patcher.cpython-311.pycpylib.cpython-311.opt-1.pycpylib.cpython-311.pycstacklesspypys.cpython-311.opt-1.pycstacklesspypys.cpython-311.pycstacklesss.cpython-311.opt-1.pycstacklesss.cpython-311.pycgreendns.pygreenlets.pypsycopg2_patcher.pypylib.pystacklesspypys.pystacklesss.pytimeout.pytpool.pywebsocket.pywsgi.pyzipkin__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycapi.cpython-311.opt-1.pycapi.cpython-311.pycclient.cpython-311.opt-1.pycclient.cpython-311.pycgreenthread.cpython-311.opt-1.pycgreenthread.cpython-311.pychttp.cpython-311.opt-1.pychttp.cpython-311.pyclog.cpython-311.opt-1.pyclog.cpython-311.pycpatcher.cpython-311.opt-1.pycpatcher.cpython-311.pycwsgi.cpython-311.opt-1.pycwsgi.cpython-311.pyc_thrift__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyczipkinCore__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycconstants.cpython-311.opt-1.pycconstants.cpython-311.pycttypes.cpython-311.opt-1.pycttypes.cpython-311.pycconstants.pyttypes.pyapi.pyclient.pygreenthread.pyhttp.pylog.pypatcher.pywsgi.pypython311-eventletAUTHORSNEWSREADME.rstpython311-eventletLICENSE/usr/lib/python3.11/site-packages//usr/lib/python3.11/site-packages/eventlet-0.33.3-py3.11.egg-info//usr/lib/python3.11/site-packages/eventlet//usr/lib/python3.11/site-packages/eventlet/__pycache__//usr/lib/python3.11/site-packages/eventlet/green//usr/lib/python3.11/site-packages/eventlet/green/OpenSSL//usr/lib/python3.11/site-packages/eventlet/green/OpenSSL/__pycache__//usr/lib/python3.11/site-packages/eventlet/green/__pycache__//usr/lib/python3.11/site-packages/eventlet/green/http//usr/lib/python3.11/site-packages/eventlet/green/http/__pycache__//usr/lib/python3.11/site-packages/eventlet/green/urllib//usr/lib/python3.11/site-packages/eventlet/green/urllib/__pycache__//usr/lib/python3.11/site-packages/eventlet/greenio//usr/lib/python3.11/site-packages/eventlet/greenio/__pycache__//usr/lib/python3.11/site-packages/eventlet/hubs//usr/lib/python3.11/site-packages/eventlet/hubs/__pycache__//usr/lib/python3.11/site-packages/eventlet/support//usr/lib/python3.11/site-packages/eventlet/support/__pycache__//usr/lib/python3.11/site-packages/eventlet/zipkin//usr/lib/python3.11/site-packages/eventlet/zipkin/__pycache__//usr/lib/python3.11/site-packages/eventlet/zipkin/_thrift//usr/lib/python3.11/site-packages/eventlet/zipkin/_thrift/__pycache__//usr/lib/python3.11/site-packages/eventlet/zipkin/_thrift/zipkinCore//usr/lib/python3.11/site-packages/eventlet/zipkin/_thrift/zipkinCore/__pycache__//usr/share/doc/packages//usr/share/doc/packages/python311-eventlet//usr/share/licenses//usr/share/licenses/python311-eventlet/-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:40396/SUSE_SLE-15-SP4_Update/1d9a45c6d26d332a2c511d957da683c0-python-eventlet.SUSE_SLE-15-SP4_Updatedrpmxz5noarch-suse-linuxdirectoryASCII text, with very long linesASCII textPython script, ASCII text executableemptyUTF-8 Unicode textUTF-8 Unicode text, with very long lines  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR *IWEutf-8087013ae731034d00d92261d19c9a6f9d20b9907e6e39b9c16f805277d12e050? 7zXZ !t/Jw']"k%0a J XS8 b?x l*hq=_%(Lm3yq4TrfMWbdg5S C1"ЍGld8Ό~LB2M({SDz#ZIOMێ̰J[\ ,u w |Gv&DasȦfOD˼ d5m0D&$L=Lo)aN$m@q}oX]?8)og P괤Pbc(OymRMN/LsK. AY27zi$6n3ƍ9JsDgǜX"Nj{b'5Dj8J/۫u6 DQ`0ęﻴAF !&W}%`΃BX[ʊ-s*Ŋ(g^*3V~Ib_xT*vk(򧟘Ɂv5id0 {%}1k!Y|y=  #4[-mz6R-Mb(,D}ؚY.wU{F!R-Hzo4.+f|.m`fexquQ.7;\0|F~WaG`4BIhۺWzZX ,"}X=SJN  V-J>}гǫ|ކlФFas [K!@EfR;k6 xr iEG}AxO37.sčRSݾ @8$xXT)Z)I)]C;Ȓɝw12hJY[6|KPkIrLN(!4QPU.Z[W !ggE.J'{D4/V)h,c 'mGn Id:|ڊKߒnb| :_f-8ѣW0S>-(,$y6Rֵn姤tgaT6$ EuY0)=h54}h+vOq+WW&%6nYqK, *} _FIU욀KB@|`_ [=bNYF\(f]L4P輏ٶYZ bMaFa7fGtIQX<e)AuNa#$vFDIT4uDh(r8cօVS΄5!PJ;cuJϒl_2 9z˽W^: |IJubl= 7-dܐsQCPAB b%(23''z2vA`27nUEm]'(H*KtK6uD2[1(˞+uB"OO_IjKVvԮT]I:K 1Vr>PPCZT%FzYSGmT Cfpu֘Yy@T*wG /N$ۍ3=1 ZZ%B,M @OeݙWmvFr/5sfޡnr[|Xz_wʄX)5E:yf>6Z҆Cqrn`큓K$A,Z8{CVoɆ.ba1c=>  j^ÜG$}87$xL[晤d*-?4=e^Ix%a,o~qIn`x=^5b=l_V (3nc>k'q=)Mkc2*coU+{@o'}T^B1 ;Ma[|),Ǒ龳|q٤\mh\"m ߔe?wœN7pVi>_%/E;oXP)|~F:3o0gG&%X?#cJd\Xm,)g?<1Չ/W뉯Lg >yO@cM+KҰ8Ybnߌ.>}VJė&@&k @@Je1 C<[&s0;Zngz|fbkAbQC"M4uݮB;[Q+V-הs=7bJv*|L.P0PL`:e]P%]xmzh sǎU""a> hA u-F~*8z?÷qMhBp\Jp)7و=f+P#29;LNG4Y$o"!J\EsPN!P_Tz@; |WObvתb <wT]*) 2L&{q*e~t'tѾD kZ~?E ǔHl%3yW-BYFsB ,GAcO-Yk琲~&81u%$nH,;l XOW&=lj];ejLB:w6[oat$״"܌Z'+4fHP[z/fw aGMeXLpe"<`8`e@*л39I1֍6L^ٱA'ET·aHp MĖpIo`]wcw !v~Fx&,¡]˕Y1^,z4Sܷ.M,,ݖttٌ'vO yDD-?'Ù\m$! ztGI@oת eC0l[jո_z< fԱj^mw{3AlKP/C/JJDp^däg>p+vkz_L*+sZ*F6h}$rXoV70kCwo{k25dӤ^ú,ՍQ͘c _kM"nU&Mddo(@dɲW# >2ӫJ0fk$ʒNv Ўtнl3:~]AxY9U}B/qbQ:F ֟ GךiOK$Sc %0!oۏ`; @~*Z UbM-|Jg9裰F~,d~Qn)$(nyv;A&kNJ8g2-X0 yNtӖ 7Fo-a*yH?Ջ7WT, 2/-FHtP_O+4 d:?blK^ɍ|^0ѠM^4赠(-P T-Θu (ifWjM8i}Cr95@zΐx·;g:N}Faʯ g9\SxY?[5r_蒴uq b=ЂE; xU..|=wz&%[BuRT-~G" "K¸+2=䜟ZxWz ` D~imS&VBp8 F4/YQ-#m3Bޚ"}}V(sگ&@rZY;zEX'_s$QDjkrC}Z#ƴߜ BS2IGyrܘ1\7%>@Wݡ={Hf5='D&=ͱ\Os ?͹/!ilqz}8xcB y]rI86)RbPgTJDѥ5b'0?{ua29狶&fS*!Kq~a7 *[(70# 6/pEA;,I~hJ5V5lnsުO9k~׻] e#E3AQ(AkNN_2 ?H1KL}MqI'AwvXXm~K j R;_ DA98TLɪ]9Phz@] !8P5N2%1&a_<2IK mχWiRCKe%G XLTe"?\TE` Cr>>A42fo' OY[ ۶<&^oFXH7U"^`M>˂GcrҲK<7]b-`B(NM˜W-  [CCԀGm9{|-7BDM1wRoDH?pw;.ڊA< @ÞJdcGn|7RMk7=Zm}_YAʫ%Soؗ'lHëDxa0I{+]@|^QO]1]epmc$M9B^i[!RIEK{ag=?ŶcEIk_ؔuЂ^UB '-}ޠ^ӬM_ =~›+Ɨ ^>:x|x4jg1;KA8SU&VY p:d,p;u, @GE|IDATZ__QVzP?U,xRPrQd$麃b5,23tz$Y=eRZIC @aB^UGCDj.P4'uK*'%(,w Q?O:5UUkk;G֧Is|}_Iq9N(q^aV8~GuCj_oфp܊mঠjPABg2)vuc%Rvy'Uc`YaCk~NJ1^C)*2+GM"~5mD-qmkPEi߹ϧX.+^)M8ퟣg"5{=A/}w9犡}wpogܾrw-ڇkO*̍uvٸIHE9XU<418u l!ۑൎhPX}C2/?źmzb71]ulX[1FnIm>^ܐ$;=f(Nh8TBZ@m6aVq4pjFPmrw㏞ H/#w6Jv``|% {`ƘD i/<\_avkF.KN%=#\Uk$vF!<@1rFvPQdS:t1?k_g@z|^ Oɮp"w2\T[+\Ky͖w9L!MܼYG#Yo15GU 4&=\~px88ږ6Y:8"p .V=Oׯ9To} :"G:}&/xx:gk*;`o?N)m\VmPZAVHC\:*2th#}VOMcwdr[W9%$֧>jUNg IOnW4Q4qב,XO @-7PD\B}T;I?Mݥ|\ӽ"Zna"$YaQ,=3S̻{;YQ㒢i驈%uY3-8ԽP 栬.ŀi߶f@kI\>dK,y\h_u2Pu'ZLkN!Lzb|=x*+wty{/({OJ'~, IV dDQ$G(wZ$\@*&màH+7H=˒榊k͙ ލ"VWF`e=ī+!(<%q5= V (". ޵6*kckN {L<fN Lؼp?( HaQ% nFta_L䂛Bk XDWz "0JLQ.zR du\1x(oȇ& I eIz$*Oz+"L20kj ðq̏0;+,&uq"Cy96iW6`WD1#,=0roU2Ȱe=FI'+qGP棴4(e}ǾAZ\^Rc΀vH!%5C0B+v?}[SMW.׽Դ,؃"~9gZ"j8?t o#!6>족@c9 ʂp 7I S6\ghXg1컿w4ِ,6_%mw?І?+GF4wYda3VdUV*@~[?Cmvy#o :jv,{?MOQѩIQZ\륥~_`N2##0Cns rj5T͆ L5˜gguvTRΆEXRZw{zHS}dʳ\埖1w7aD>c[eKނg;A=J7. P,nxiRδٰcoB(Z T`b_n "g$~Ms`1èV@Bv`b. = F< yg!htANJUAUu]w^۳0UL{V4[ՕPLOغkg6Y"WrJ4$IAT>bx4Ibedc`5L|NG2P`Š0v/l]lQWz4O'?\7ҟ)M6]}=>FEk{'fh: -%: pS u`@yk^U>3yL\VD>hm϶ӨMJYYCy@[.QAG(;X̍]}e G1R0 e,}Ѓ!0';70_gQgDQTQ^0mmL:XV۝s;jeOTԺW:>ᨢK%d0ałDmԃQ\)[m8w!8oa|tmqc\0x,+څ){X x?j70ΎEl"/ObK"ٲ=5n';Y;Ca4n:\ʍy${@YGeڀor- ]9p UUԻx|Ơj rb/H丗)}GP16z9B(EDg'({I+gx7-ng #jѯLɮf-dzRz2tt^o.^0,ON$Q6~ioNPP>n@M@|oZ\9m|t€CV=t^*6,AgD$ї*,2y3EqOD>;^$@4W w]֜ mAb1}!"1!$7вOEt%.'C