From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/3658 Path: news.gmane.org!not-for-mail From: Szabolcs Nagy Newsgroups: gmane.linux.lib.musl.general Subject: Re: Request for volunteers Date: Tue, 16 Jul 2013 18:20:31 +0200 Message-ID: <20130716162030.GQ15323@port70.net> References: <20130630055202.GA16580@brightrain.aerifal.cx> <20130630104834.GP15323@port70.net> <20130701035117.GX29800@brightrain.aerifal.cx> <20130701205856.GS15323@port70.net> <20130701235954.GD29800@brightrain.aerifal.cx> <20130702021937.GT15323@port70.net> <20130702074920.GF29800@brightrain.aerifal.cx> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="zYM0uCDKw75PZbzx" X-Trace: ger.gmane.org 1373991643 6508 80.91.229.3 (16 Jul 2013 16:20:43 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 16 Jul 2013 16:20:43 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-3662-gllmg-musl=m.gmane.org@lists.openwall.com Tue Jul 16 18:20:44 2013 Return-path: Envelope-to: gllmg-musl@plane.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1Uz7zY-0002zF-D7 for gllmg-musl@plane.gmane.org; Tue, 16 Jul 2013 18:20:44 +0200 Original-Received: (qmail 17997 invoked by uid 550); 16 Jul 2013 16:20:43 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 17987 invoked from network); 16 Jul 2013 16:20:43 -0000 Content-Disposition: inline In-Reply-To: <20130702074920.GF29800@brightrain.aerifal.cx> User-Agent: Mutt/1.5.21 (2010-09-15) Xref: news.gmane.org gmane.linux.lib.musl.general:3658 Archived-At: --zYM0uCDKw75PZbzx Content-Type: text/plain; charset=us-ascii Content-Disposition: inline * Rich Felker [2013-07-02 03:49:20 -0400]: > What about a mix? Have the makefile include another makefile fragment > with a rule to generate that fragment, where the fragment is generated > from comments in the source files. Then you have full dependency > tracking via make, and self-contained tests. i wrote some tests but the build system became a bit nasty i attached the current layout with most of the test cases removed so someone can take a look and/or propose a better buildsystem before i do too much work in the wrong direction each directory has separate makefile because they work differently functional/ and regression/ tests have the same makefile, they set up a lot of make variables for each .c file in the directory, the variables and rules can be overridden by a similarly named .mk file (this seems to be more reliable than target specific vars) (now it builds both static and dynamic linked binaries this can be changed) i use the srcdir variable so it is possible to build the binaries into a different directory (so a single source tree can be used for glibc and musl test binaries) i'm not sure how useful is that (one could use several git repos as well) another approach would be one central makefile that collects all the sources and then you have to build tests from the central place (but i thought that sometimes you just want to run a subset of the tests and that's easier with the makefile per dir approach, another issue is dlopen and ldso tests need the .so binary at the right path at runtime so you cannot run the tests from arbitrary directory) yet another approach would be to use a simple makefile with explicit rules without fancy gnu make tricks but then the makefile needs to be edited whenever a new test is added i'm not sure what's the best way to handle common/ code in case of decentralized makefiles, now i collected them into a separate directory that is built into a 'libtest.a' that is linked to all tests so you have to build common/ first i haven't yet done proper collection of the reports and i'll need some tool to run the test cases: i don't know how to report the signal name or number (portably) from sh when a test is killed by a signal (the shell prints segfault etc to its stderr which may be used) and i don't know how to kill the test reliably after a timeout i hope this makes sense --zYM0uCDKw75PZbzx Content-Type: application/octet-stream Content-Disposition: attachment; filename="test.tar.gz" Content-Transfer-Encoding: base64 H4sIAA9h5VEAA+w9fV/bONL9F38KXQq7dpoEvyWB0PSaAt3ljgIPsM/uXtsnP+MoiX917Jzt tLAt3/2ZkeTXGAItZG+vUWkijUaj0UgajV4T0TDafPK4TgXXbjbxW2s31ex37J5outbWdKNt GADXVN3Un5DmI/PF3CyMrICQJ174x614i+L/oi7C+rd9b+iMGhPrw6PkgRXcMs0b67+lNXn9 a+gHPAw0nxD1UbgpuO+8/ndfH/Z+OiPPuqQ+daaU1MNo0LW3t0l9r39yfHbwW3+3f3b8y+nu fldX1S11+5DUf7VcFz49vz7zZiEd1Iczz44c3+PAiROGjjeqXwSWTUMpkwNP8sHzP3n1aWCN JlZI6kMAXswcN3Ig/TDwZ94AU0+saJxNO5IO9/Khw4NXPOBOo3FArQH4JvA/iCTpKRm5zoVN wim1naEDHhpBBqMcO3v91weH+/3j16/P9s/7rw7Oz7otE8GHvdOf9lkcL3ouMzu4mkbwPXAx Lxr67kfwzCLHlaTeKWGuS9bl3dPjs7P+7vGbEyCkWIF02jsCKmWRgeUBt5L0J9Q/6/9vrA90 6Lj0kfJY1P+NVrug/8Gvrvr/MtzTV13sfAPpVTcMbOmoa/uTCfTkuEtbLnG8iAZD6MsE+yQJ 6AhafQhxkoSKIJh5xHap5XWktaEfEAcSQAs/UnbIwCfvpLW1yYeBE4B+AegrZXN93dlh4HX5 Te+f+wqp7yYRoABIo7EJf8AMApKmSQAAVLq5WLL+kpEa+B6VAjr1g6iD/EhrthVxotXN0/2T 49NzSWqc/Hx89HuHsfZn9LT/TMf6P4rzEfO4s/2ntsEUYP1fNVb231JcUv9JL3/4lnAf+7/d wvo3ELSq/yW4kvqfWI7XsB8wj0Xjv6prrP5xImAYGtS/qTb11fi/DAfVTrDC5Y++M1A+X69G xu/LlfT/B58NLOj/oPZbBf1vmuaq/y/FxWa1dHa6e9Zdl0OwocFE/gRTAtsKBuDlGGBJN2xF kfZPTwELkTtp1EbD7m40aBAoklR3PNudDWgmJbfZ00UmSUzCn3XrUzqwvMix65DYD0JS/5V5 sqsLOCH/7fhk/yheh2irakpg77f+yRnBr3PxfXYmPc1Gn56cQNwJx/n9Dft+/eb8zdlPzHu0 9+oNm8h0iJgpwASiQwCQzCjQz+Nw9gASUKS1w91+7/Cwi1OX3V0FPsXqBExnfKZQSbXhE/0F G0yhTOTLFxIFMxpPTZAK+YLTIJhNTUn9I/nxIJ11kcaw8WMhet+yx2TmDajtWgGIxRlQkNzQ oTDlCgnnFcC+517Bh02L6XFuRpFGkokTEWs6pRbI3fF+JC/WXyZcSqw6OyRXxyWl3o0LbZP1 51DcLIl4UhhMcFqXyKTKxFGclcUzSV4OPqH8UxZEvjNXov/DKHC80QNagAv0v9HUcP1HNcH+ M9SWzvW/udL/y3BPY3X9XFT7+IX0dADjv0fJuRwpRI6qirojgZRATRO0EslQVqTP0rkcOn/Q fgR+hFbl6lSRQcmHEcOq1qBF1QQK6ZIJndjjYOda+gzwOdysP59mMsU0aQ7MF1Dk1o6y6RJY Pv30qiT9zflN/I+0LMFcYUIaIZ49tgJRdPQVGMvBMCH4QP8XEqaomE2MViYsjpTxx8hcSndE 9l33K1nnwuRyuEtO4dTL55SWj43zN1MTWC717slqppYA4AlpL5BMMREX5zfkygVVXsfzpZxe BB/u0ibiRlEmz9AZeZZ7r+qZq50F6FHwdc0m8j8U+bqfPC+HwQQoPHWGoJlIYV8KFJHr25bL VdG9uZvO19W9mJvGlb2oiSVMpr2wX+yHczIfzKZzFV6kxHoSJxXzgFglDZtjFmvxxm4gMr+h PeVxv6KjslBJW+nPqYU7VkhRMNhsmFyeUm/gDJP2k51N3G9omR/SeOWLDP6Cqycl9p/l+A+6 /Ldw/t9WWxn7D9f/jLZqrOy/ZbjU/sNqv8H4i2Gv5ajmKeRzRKpX0P5/uGxgp49jd2WICz85 kT0G32fbCinxOoBQZjv6wyHq63NZ7N33rSgKOCQ2K8GX8cKc0o5I5Ewo7ukrElARMGDcviCX O9JrpvdI1kFcf+i4AxoqEM0yrRWiAQi2HEZ/9F1g1KWc02qNRV/MhhgnNEw+qXdxFXHKpRkH 9N/TwPFZcs4qDNL0I0VcjI9DNxJwkb2p7Q+oArpF2pV7B8c4Ad87PtpXRHC3d7S7f7i/F4eP js+zoEMGOkm9v/YOzuPQ6X4vQcrCfz09ON9HEWfHk6y02fCEHNqWZ1N3fvgrRU5MvoVkh+GV Z2cxS7Gw3bChIjNW3IAYzQJvAZcM9PY90/G56LjNJeTCGQS9wUL+PgVORG8tbzywEJ55HORM FNpMbqR0WesII8cH+t8y7CT6P93wf/ANwHvt/5lM/+uqttr/W4Yrq//IDfuWC/OJ/sD1oaV/ qzWwaPxX2/H+v6HBP6j/Vstcjf9Lcen4P3CHtscsgBhUwcbRGFckKdklxMF7DUPOjrTGh8kx +ISqgrg1NMxJ1bMmFOBrMw/npXRAUEXnAKyB5SCu742INRgEAL0m1WhHktbGoOt4I5QrjWzD DP1G6Fdq5PT8EM/r/et3BVI5QyL/bawA0YgPNnKFJyZDC8b1wTuvgmgRIxpeTeRxDQpZSZJG haSAkkvJDzjJDqRXd4hDnhMTvp49U1jJOYm3zvsGlh5JpbQQgsv0nh/hUUSCdKK3G4P3QLhG HOSApWfJUQbkhziA5a1rSp7ehSUkOIGRoUM2whqTMPhmNR4hvECqQ9TLDfcSc0IaawmLNcK8 mFB4WcrYD0mRr2tpjY+fJOqjJTcLd/6KE52VK3UL9D90s8k3HwpfeP7DaMb6H2NQ/xvGav1/ KQ5PQzZeHRyddSXmxXPOXeYL/VUn/+93d7L/vlEFLOz/mjj/reptQ8f9vzaqhFX/X4JL+//q XPT36Mr6/0MfAFu0/6+bWmH+b7bga9X/l+Due/7rqPdm/+yGE2CKdPzqH0yRIFJno7vR8PGQ UBp0fUXCA0TrMqocdmwK7I17nxo7yGHxGyvijtazbgLZdJ0LNoO1+PkuaQMGso4kieXqiE6m rhVRsHs0rgLZzSxNYR91vmjNI9nlry73YxEFYsMX0TFsXU5QOg2/y4rLIOLSGUMRR6ZE0r1M THyELI7i2fIYLqcMZ/mkWWJFtJRMhq7IBOz7BXQ4yg00jjpdDGeqL60Zhjj5IBVF2snJKckk BR9yOPWgoiSIhrkyO7d2VBNNSQEP/Wi5QNXGc2NxTWK8Ak6SxIBWmjIZ8QBRWLs347FiKuJ8 4LoMbVfh5wPjs4LiiKAI8sN9z5PTgnhycO3lUVfdIT38yNyPYhwkV6R6XSi93HsG8/wd0mB3 m758IZ8Jtcc+qbzuHRwShL1dX//7+8oOOWLoRxz9Or4CRV4IPtilqLeksr5+VMG1CvKe/PAD p3XSOztD0iyAdM9Q8EeQY69wYG9dZvUgSp0c2BPgDinpg5t8wUgqdO8OKe2ToB3mDhjG5wrX q43M0cK6T9Zf4gHDmPFXvxwc7u2fnh6fQgQQCu9E6GwxIfduLA1PDnZJfe/s597p/t7dOPQ7 Mal6OGYHOIHky0b22ChSwGwOY8GzeCbCm+jGfSqlzffabqR9Z9LQKxw3okHdn0Ukzqcmalbp ZORSltHLu2e0OgL6Z7oy++9hVv1Tt8D+05vp+o8GM0Bm/+mr9f+luK9Z/xfr/jVSHe3w3YCq AwFHhxBf/g/j3QG5OuTnapT51XzuK1nK/8J9x7u9w9tX9Qs0xFo9LoezZfWBy9EVRiW36O+k i/5OyaK/czspSFZ1yN+6RMuldTwncizX+cNix+tjEp8s3C/pamTk4/fGgFGsskX/IXAlC0kJ QSkpl8OUy2HZ1sStXA7lPK96jsKQMNOpwKNewqO0NkqrTV1QTaOyalJvl6ae1MwoqZmQwQSW IA6IMIJADFg0pXUWjv2ZOyBj6yPNb/hg6jQHbMgVBUXCT3wpCCghyG4s3MK5tLZZhVHKD+kz VsyAJg2AhiQaUwLNknxyorF4jOICRlLcAGKgySx0SXXznp3iJ7ANhLjLxMYbtP5VLRoIgkjy vSGgyA3YKliSrHixdCHuaQHtC98Na7wFbUxrrAVtTPm+FvzpaSvU55vhfTNw9G5X53mgN2mn elrNrEbkkVIQAgMvFEKcfHz/5H/NTbKy8f/CCinuDz6UBbBo/19T+f0/tdk2NbMJ439T09qr 8X8ZLnv/YwBaKmcAZO+EJDBAGtGbDIX09ODUisa80yowG/2MM1JmG0ST6VtNVd/vJJAq9uYu iVudzC8ayIBYI0gF57jvePfkVx1kpMqUANPiqsKm0Jm9cUHoXQX6KWh6pM/9XIlwP+vBnEtA EKxiTtdz5x3SnBPaqgJKt1ERDJRmD3xxnQDqjWe5Q+jllNoRAzQECxl8VCPncqXCSfPA5iwM cNaMQPzKghEG3zGsBMTCm0losxjGJEidR2ToN3JMNHiQh/+aim7lSt3N878H2vx/cr/9/3ar hfq/1Vzt/y/Frfb/v29X1v/ZNZxBP3QmU/chjMCF7z+04/dfTFUz2flPXV/Zf0txOftP3AC5 1STEN+BuMP5gOhyAITd18a24COZzkR9QsIHCmRtJpEpwsSN5fIDv3PgEUxPZD4jlXaF5JN6W UzDBJSRILKaUzoTdvQpDa8SymQZorokFlxnkKLMJ9tAPgNeQ7bngccpLJLmZMVH3z87loEaG NXJZIxOFyGhGynKA5+vloaLgQoN8yZatMSIx8DZCMQ8kcgV4qSjMjHsKdAJGKqhfgnEI1p+S MSTZ0k728OzAn124lAxgFpmsm13Mhmgbg3GcHDXFXSPnOQAzB00HeL0NaPJjo6HHBDCUITU/ BeoPCfNXNhqGqg5xosowWYkHMH3mHZwnQEMWmKiwhzcJ2PtTVjqyYaFpC5/yhqVU+EFQSZBI KFTUS21qVjgVrdVQgdCYXpKh61tRQoJbkfMpG5m07dvSllicq7HpYVyZ/v83HgJY3vsPbdNU k/k/PvwJg0BTX53/WIpLFTvokOhqSsPFQ0DpSDG3UJCOC2JPEjVfiJPo9GYtqVo1kg1eMB0p +ruYc1dlvkxQVQA5DVwoTA9kiDv3IV7F21hAktRj70WRnn0/evzeNifI/fMUJ9OWuZgkh8wg RcvsR6Q6s/BGGRR+doELJalGxJjnDPx3UtdIhwFAbwKEZQ0jst4iTkQnIanXCd4jwzFQcJTe pCbV8O17IA15V175bK2h5zo2Rc8//DGOb5VdCiMwXiGo/EzdkYWgvYBOpzRA7/6EBpY7YOB/ +YHFLhtU3vgTXMSuvAbAB/Sc0AlD+c366GBCwPmdfmSgn+hgxjI6gKbEIEe+5zOUXx3q8Wz+ F1oX9SL0nocU2xx6/2kFnmNbDPdw5s4Q9j8gPvsKfcehxTM9hUH7iiH9EoAtwWBn1qQiXe+U iqQfsieVEskkIhEiEhLJyAGQsoJIip2UTYgO8JJSxvJNCkFEGTLy45LIFIXLETDSYorS8SJl 5ZMrb0aAqVRLaoPXIUqGNSIjbUT+AEZxMDkmNNOUsHF7saC22tuq2awRY9uske1tU22C9oeg YRrwpRv4r0ZMA0NNs2lCvhAFkGYTkyGEGDqigq2CiVgqhmAwuoAMuZhbQJkj8E+GaDQNAG4b 29uMgKGaqskzy1QzY7dQvZgZy4VlzRjiH0iI84Q5Aa8sB85+phBx+QQfgldeJmktZkgUPmY+ FlXCaFKOWG6sCrI3qEO8Jw2qVc621VSPxGFRuhorq0u9nPHJRngZ0kBEYjMiDdTPbPMwY3zi 0w75W05CMVtvnfc1EucEgXg59nPurhIfGwg7WSgMZzDwHG8Axp7YwOGWLCQRpmzlXeS8i0Z+ 9C7CZVmxjbdWzha/1JRJCkSjjZD9F7tQ85wychcBtT6g7xqt2+u8nIEalzPb4La4IL9Wrs6d 5IpsoghzIs0LE59pGNFg2dLk/79BmmIwG1FPTse1aS0zyE1zks3LNcEK2NU7CRgE9TQIKR3I XirX9F5eVrIBvtvPE3iyrjJmpyjpLgn4/Tb+TpSccgCMwUCZVCCrOph9jGfDoUtljM0ZH9kS siaTlsrKFvErGw+zGh6k9XBWlt14KuTk9GAG+VbygXs2p3RvyUrRFTxBme4uTZk2t9iGEZfn NBHlFCwzrYZ/NuuN8aYSf2UMEdP6iZMkGi2/xYR5WXaU74dMNAIvlQBIrkNyW04lSCjZThYp KR7DxROe1+TTGHKRVSXf7JAV3uiSJQaxhRRv3mgY0JIQD6ZhnYX1OKxr+bAWJ9BSDAFJcfQ5 iCCboRsTzuSkFyDoLUIMDjESiKEXILpWxNENrQAx9DmIVqSjmUlmZgxraoYZ45nNhH5LM41m Am7FcLOptfWWkUa0k9zaOgS1rUzUVhy3pemm0Wput7OR23Hs9la71TRT/vOxAOd/oo50MCSM pETmdttobrV0baupGy2tbYo6ARwTDJNWq93e4rSub1mqYte7eRPDa8bFPhJuck81VPhpMI4K KswronoxKtPZacvNaXBN1Q1UKl3wtDIqLlGjuH+st0BlxPqah3dSHBxlpml8rNSyGno++vu8 53zr/b+H2f5buP+n62py/09n7z80zdZq/X8pjm/6Jfc74psmZP6xBbY/OH+rJEmRx/clht8h t5EpxvqrZd1lu1vOfz9M539yh/1/M77/21SbbVz/barq6v7vUlzh/q9QB/FFu2Bw5VkTx151 y/9Wd/v4/zB7QIv6f8vMvP+k4vsfTfxa9f8luJLtGnoJE1uPpG865Z50Kr7oNPegU9l7Ttck emvirnbpQ1LzyzdivhBtxqsg0eqdpcdxC87/PYgCWDz+G9j/YZrb1jT2/uvK/l+WY10QZ93Q DcUDren8/9mz72EK/F27xe9/Pf75P7VtpOO/jvY/+xnIVf9fguv3xW8ns0GeOVvj+qAk6pJ5 u0QvjbXxSpqRiQrHuDrOEnJvl5jlKQ2IamaiUC2JLNHbJa3ydCZEtTNRzOZgH5cu++qSLbZ/ +gi2TLwfAZZBcCU7tUt2DyUZ9SHrp5c7CQizYOf2mEGTiWB5QUyf9zl/2O/Ll0omHq2ULpFz vCg/XAIHffZqtnMxiygk4hvCWFA/UBSS38t0MvsDnGG1xqtTiQFaTVRTAtFrTPxJ2KgJsSqr E3j/JS7R/+J9jsfIgx3yu+v7z+z3f3UDz3+v3n9+fFes/8f4KfiF83+9Xah/fAdsNf4vw933 /S/xwlfpD0CKx70yT/zc6VmvubeVir+9eNu7RKUPEolniBJGOnGihMZLfL+md6qQwGYv1vwf hk97R4cHrxT2KM1tjxOVvEx06xtEJQ8Q/ce8elPs/3hK5mF//WVh/2+apvj9Vw1/+Rvf/zTM 1frfclx6hJvdu5g/6O3Nw8SBcGlzk5wf7x13yCykxLWCESVTGjj+gEwDbxSfUkn27fG0Fhiy dW0nG2XoeKwLWp2hpxaqQG0ZLVMzWrpubJmt9rYBbeWXw8Mqi32GU5TkpDhCXrwgho4LFsWM kXrLTKknETM8AsazzlwzmT1/bujkSyYmISku7QwxSs6e/hZZ/D971/7cNo6k79fJX4HL1sza seTwqcd6PXWKLSe6tWWfJWUmmdtykSIZK5YoWQ8n3qq7v/26AZIiRUAPgEnubsWah0USHxoN oAF8bDQOySuCW2LKFSuViu1ooYmCXCrMIU5lGkEqGV1zpHMcbsjyEk+4Ipfnby7vrhrt7t15 6y35lVSsF0e5l3WjdhmfWkW9P+gyIeVVt6y1dIXMYq/yRTjA/VUUdzzCiHZ/aKXwEN3mfiUa BjeZk/vx0EMX4QQq9sFLboTZ6piWyCgKqzJCEhdjgNBmBWCjxXA+mIAm0I2Exk0ZRW0J/iif ktHPuF6jLlLk4GAaVSwW+ZD8Co9T9TvFV7PFGIP8TslFNzTy11Piri0AnuaS3Er797nZ4uCi ziVlgGRtFXlnGmcmkgPvxyoJ0/JFgsdCRm6HVB3+0EcmekaoPxu8SB6hEPPBMPsU6gOeTn3y xYfhJQLwUv7azJOY3TdEHpmPjOzGokyWfz6yBsF+TdPOmfTEhqgKwknsfLn0vQwfj8JJuUxJ eFzTT/4IJ3+PGfkpem0+Rg6L9Am88fjHlL7wE/6BSNQfEMoJBifz4uSPaTl8ZO9GfyevR+6D azUJmol6QOzkmdFJXHZW9FhtkxK0+ZJ2uNqB4N9PawHYj4HYb3XpoToQeJ5Cae6d2T2ZO2ge BuHMn85L2PNg+jAj/mgyfy6Rp2xnpJ6l2LEm4y8Y2C8oGysu/AwnJTrAJ8JTt9Tk0VOmKCDp E35KgXfKOg3gxB58jqjluFkAXuKWSr/D0N+40/KJfniJugDt1z8N0HH3M5LQ+Pcvp4Sis08l cULytOw4WqyZ/v0Yo/U8YP9+XPgkXIxcfzoDKwq2KjJUD9jRqSXBgs/vWJqUbUrK/ZDxUs72 cVTQsrSDEvlMlYwlpt0dqvQh1eXLevqJXmGKAInDMU4Ex31q2WJl0ZRMTXEPgt4TQ2ITKZcf UAf0HJWlEuhOTUwGZSS1XB7MSOs2/Md49cByXG2HDydJT6Raztip6PXP7PXJH5+p2zG+eYLV xV7B/D9jxQ6YsANWj/+VlzSZRkASlDh8/UBnFA+vhuNPoAQyGw8XdM8w7uvFcJS0GClF2lCM X6D1heWHw1fJJ0PHhUfxaXLQKmM90NQsRBt+KSxjnlasCEwFwwV954ACpvzA4WHyBfFf8Ueu yeb1mPhFpzo0e221x7M2zWp0EGdDFVJmFZ4yPIR2TGiZ+AzfRZOYeYe+MKEvwIv0nWDq+wdx GVYrYVUv2DT+SrtcSj1UbrwFvbpyEj2EN9mfrzC618mLSId9psOMM3uUeVp/afWJtRf1iMg+ 0bJR4GW7pLFw8xBp1/SlwaHqfDU5OsKmTe+w/FMKytiUHz1L/3bX6vrvaRQMhsPvev6ngWd+ xus/i/p/mNX995/vc21Y7D3PXo9GTjba11+DfjgfZm/BQAvp+ft/YVGCobzJTeNt867T+th8 8VP86SS5RSAn5IQO7jpnd8ndw3iJgoP6yPlKQJYJYX4Ur7De5qvLhNTMhn5wwU8iA8+fZia/ 0WgNYF/p5q7AS8Z6hpqZ2pTo8Mq2505SgRnCU/YymJdfTxOR4dfrU2M5wTmYnKLQ+LUFzNXN 7XX3rn3dbpbIVePm7ua29b7RhR8ogcYiTuB9jMvdPI9G4BCXN4PXxurUd7QIETiaEkYjbpga cSMNRdMDwDla4qTdTUKYuJWXBWBzqBdoBphunwbT+cIZ4nHH4+kzi17phOPweTRezJZFopUz K71gqCwp3JkMwk90QfKKrVdehfjD8/tT35nRfYFYT+MpVFLpBaaJpHpyhgs/rl42gcOpeoII lVDWU1E/jl8kUzlmw1hY1Vep2ferML/xKsBlLQu++drzn17/w5/iTtvru9vz325TE9lYl6gi WF3//tqIVnVxY0rayONJzrHpVDs5SdyXaPQSbHpY6b+w9pZMKkaHma1Pj+xd2nxGm5pPDPK4 0ozy82qM9snGxuws75E1FPZjlGsog703yP+7a3X8Z0a72Dw2+X9UdCuK/2HbVpXxv5X995/v cm0kezkxoWCsFY3+OFCzxRx6YDKnjPLMCcCEgyUEa/jAfqWZqOjQbWa7Y8/H5W5PjDBtHAwP yd3dBdizuzvy8i8vyZ+G2Td0fCN5N3kWO3IeHx8fkuWOS3b4wMs46d3dZasNyIcADXfv7t43 7hq3bztwJxO+IwHIhIkoEUSngdEdeigzcSYnqYhOtm78PRoTKDEQF5JRI5iIDgIHDo5UaMVx efUkDusEGTp0RzKkhOnRAfsRr4VpMNIw2iZNZwvsya+nKRBm9kOSvofmHsUNcZssDgB//s/w z+mbBr15nLlncu5Zy3vLsYOehY0uJrQI4XLL4epwvRyt6WB9eLKWmz5Zyy7nnq6hbk+2IwBP tiX6TnbllU5+yNCa2P+p/ykKvfZjz/822fnfemXv//E9Ll79/9Dz30x2/ptd2Y//3+Pan/+2 P/9tf/7b/vy3/flv+/Pf9ue//fNdvPnfhK3b7/yvg3m574R9X+2D0Cb+x7SsJP63oeP8r2rY +/3/3+V6/ZoYmq6XNaOsm0R36o4RBFVX85ygXtc1zXNtqB7N0Vy95ho1PJqh0nfQ9S/dSuKj m+hwzFoM+5B8j25r/jTFFUXJdggfmwvYfUgpDYzUfYpxug8TludPAXm5ekYTQLOH08PVyFlo YBaTiHhwpp8oh/OKxfs7hN+MoFkJ88a+qqwkinURQd5NFrP7g+hHieBbJ8uXUGEHWvpOkmw8 YQ9iD7HpJ0FopjjlnMy95MtDzJ1RqonJr0W/pidx8G5QYJIt/HfuH/wyx88HJfaJo0R+QXGT iN2p1z+PQYJ59NECMkoOzYp+pgOkJVHbtYgEJKyZ0DfZ+V3JZmlyQLcURSgRJoqfO2Av0lPc quIQdvMxjhtRZLp/whhOKtc6+8/aR3k8Hqn5A2yy/3plef6DoWH8p6quG3v7/z2utP23iV2v VCo1zQhcx64b8G9gBJbvWF7f1WzTqFUDz7ZrRiVt/1kriUeAqPs1G28brXbq8+zmESD3pQE6 fSgRZlxspTMuPRttKjWbJWaDX0R+rBFVrVF7qcW2aoqOUlHY2+UBm87cgTUjS4G+mtkjKWNh IndGem7GZrOcZJg7A3O1Nhb9vu97SXbJh4ApWlVWO2vTs9qkJ0HQD/5RheIRlpHVpbd/9sjB zzN2AsY0O9hSre2N8f/yK7H/eK7LN9n9uQv/X9Esuv8HHu/5/+9yZet/0Xe/QRvYsv4r1Ypl WzrWv2HDdGFf/9/hytf/7HFasAfI+vlfVTfZ/l8a/4fN/0yYAO7nf9/jgonc2XjyPB18up+T g7NDotdrtbJer1ukswjJ1aA/Hc+eZ3j4Q4m0wv4xMWxbI2+daX/gkMaTHy58nA1ejRfhHA/M fj/wv5TImTPEnVUhvEPqlmaZpIHsHuYyw5O8/OmT7x1DQkzbCJ9x4+CMOZ7f+1PffSbOYn4/ ng7+wdZ33vhLOBw7Hp5yMHku4f4A+JPNVdzFJxIMvvqzEoKhj6E3mEVhMWBKsnA/w1KUHjV2 75NgPByOv6DfYX8cegMkKWZ/ieT4ST8m7ODpcTD/gtunRs4zdWRx0S1xiepRIt8hge/Durbv T2C5PaMIGJQEHRvHId2XA5n2x0+wUh1Bagf+ns1hEoQvGpAVnniGxUG/xmy2uGMnnuDO71k8 s0EfSgPTSLqlK5Udoowh+ZT4I9f3YM5HQVmNsnSzE1QLTWFG+SaFQZaG5g+5JAJA6Tx/OniC CfWTT76Mpw/UD3Pqj4MkXypkfzyaDGOfUJRrMhkO+rTsvePOMZ7eRrnccTifjodk6HyZxbXe fdckneuL7m+N2yZpdchV47xJGu8brcvGm8smednowN2XpNE+J7+1uu+ue13S/P3mttnpkOtb 0rq6uWw1zxEIAG4b7e4Hcn0Bb38gf2u1z6Gtts8ue+et9lvyBlK2r7vksnXV6jbPSfea5p1H aDU7iHHe7LTetkvkqnl79g5vv2ldtrofSuSi1W1j9heQf4PcNG67rbPeZeMWIW56tzfXnWYJ cmqXW+2LW8i5edVsd0vkpnkLKa4a7bMmSn523U5+dq8xbeemeda6aJ01uq3rdifWz5sP5Pz6 t/bldYOWAvTwGlL3Ovij+w4UFiuvRIvT6zRvoSCt91CIxuUlObtstK46tHvhzL3TJZ1em1y1 zm6vOx863eZVh+romCq41YVEFxdQzgZq6Oz66qbRRnXAlB9Uiij/3rttdc5bZyjjBu2yrKma zhtXjbeoVqqk5n/0Wl1au7dN0P0FedPoQJLrNrm87jDdN7qNEhUpUcrl5Ye4XM33zTbi9Np/ a4NqUJu9NtbQWeuGCc5yhvsI2Oygy2yzA7VAIS963d5tM9YvFK19TSG70MBAYwL9YGW3aePK agkxlop60wQN0KJdRAlAgi6UE/B7tN5vbq8vEAH+vIYKu2UlbFyWmDDnrdvmGZMTWkgHVAWC weNYhSUqKmmhGORdA3OEn43z9y2qwgtsBLQhQsGjFot3O72zdzFE0vOwrwfU525GJtPx08CL 13PhGAzmhPZZNKTJhiu0Me5w8ImxuvAPWANKAqBXNJgPwVhx8BIevDwk0fGO8OIA7L8TQOYD MN3UJKEJccKBP0Nr6cxmA2r76IvMyo+nU5+GJiuR0dgbBINok9J4isn98B75ZtzLCaat7YO1 BdmG/gzd5FJFoIMF2v18WSCruCwlWhIwsSAVSPQ8XkxRQLZTFKxY34cxDUAy5hqzmfqPC5hK UaD5vYO+j/4zjhszP6SDT4Db5kflGOzfZosQVH8M/zuGe1g1BGde3sFRWTvEioH/v+ge3EJn y13aV21ypG3zIL6hHQqwyiKs/IMs1scC5eJgScvVK1AuDpa0XOcFysXBkpNr2ehGzlfa6gIM FeZHjQXP6AzS1+QIT2coEd4TW9dL6VwxygCa0ObvjbNuXM0FI/bWIa6qVEdEo5S9VTayiOfF ypgo2LLsKsyD7Vq9ZlcNrY6HzFZgxWtW69Wka1J8xw1qfaNiu2bVQPxSWt7jwLN9zalNjgx7 fXcqCKtXINZ5UViJVs26rhuWUdXrpmFrlk61athmvW7UM1p1+07NsHXP8io+J0fPMyyrv6VW C8DqFYh1XhTWsq0enhrioQe6kSF6oK/XXkFYfBMvh8U3yxJYifbAjuLq8OupXtKPFsNJSS/D f5f6xLpIMV+aLhoCsg+49k9YQ9sgcicHeRNX1tc/EEv3sfDyCluRRHk/Fl7e3vryblCEGLGY 8va2KNY6LO5YublYIkSuBoW9UaK858XWb2qqNAgPWYz5sIzbRbkdkaXXjLwZoU8y04ZNplIB K9eAFLBylaOAJdJX1RJgmdWd9SWDJdKXDJZIXztjQdOL4mw5008LthZ1/fkX3w+JRmpZ412t VFzPNVxb0ypePFrR6YHtVQK/b9YNv+pFHQfv13THcY1c514iuhXbqgQuzC1gthUPjPjA8gPX NDU/0FzLjLKiM416zdWdNYi+XrFNre75VVuzk6EWn9iB5pmG5Zk1Nxa+THuqadSgh1oiRNvS vX7gOvVKrVZPrAI+gcmhWdX8vq3VolJTQN9zqnZ/DWLVtvqmb1S1muWt6NHwXcv2AlMDtS0R PQsP+ZuUTWGpXV/3dVerm31LTyMGtlc1DN+2/Hq1kqqZCs7orDV6rFuaV/P0mmXbgZ2pGb3u BQAWVOpGJDyVsQZLD2ddzXiOX9Utx9Zdw6ynEe2+4+mObdcst+6kEE27bru1NaV26oHhQaOH 2rYyevSMINBNF70NK9X0GOnX+/XaGhntqueZpq6Zbq2q05zjrMx61au6um/qAWvQTEbDgAXX ioyJOR+EAbXm8H/RjAoueLrNg81zXlks3kxAFos3ykphJUoMnWhIdMI1SoSn2zzgZVB+8tdl UBab1jUZtNrvG5et8zXUmGDmIYuIoEItb0YUDiiiAdis7D6YiwanFeZkK6y87iKsXagtBmbV 8lqjTzJVviVWRYRl7oxliOSq7C6XIZKrIiEXpycwrN3q8RgMqW7zMjkGi1rbQa4of46+2IMd 9YWCCeXaRV+c7DMPdtBXJNcRl30EuWR4CJG+jnbQVySWnl/pRXJtYJcyr8N4bgFWTl903gHT l20nxHQuBVMhIZa/G5ZnOkIs29kNK7DEWJUdyxgEvhhrB7lIUo9Grh7j5rWrXT0S2omjXexE jCWwX0e72C8GJRo7jnYaO2Is/vh4tGGxu8oQ+HRM430H8FfGx2TmwPmykKZKjK2XzyJEkhem KmI43M0MFh+xtgPidjLWRYh9WRmdHRC3k9EVIXqyMvZ3QNxORk+E6MvK6O+AKJYx28i35wO3 QzS3Y1Q3lDqd0NoBcTsZbRGiIStjZQfE7WSsihDNrWTMtxC0tTrXPmbt9vb2cVvrvabUuWv3 Zeg3xlJfvQoR8zNRKURKo1iCtaY8Yr9wRDqiVnlfNLZELK+0XX856heEGBiFI9YKR3QKR+wX jlh8zXiC+djWiNkUcS/Mz9d3lDE7IikirqZhUtqFlTpBLEzGcrSqLw6RKLN7FDFXOUZ2iS+J WMvOTApATDdyVwmR06+PCm7holFfXsagEMS8jAWNrvGlwg0LP6hKcMPCj9kS3LAQS4IbzjPq mjQ3LMSS4IZFWDLcsBBLghsWYklww7x6lOWGRV5LMtwwt4yS3LBQLgluWCSXDDcs9PKS4IYF 9SjFDWexNCVuOI8lzw3nseS54TyWPDfMwZLmhkX1KMMN8+2EHDcsxJLghrljhyQ3LMSS4IY5 nvFibjiIx8dkCoEz2bzbSX6GEa9FOCsAJl2SFR+R5IVR4Yb5iEJuOMu7srFd2wZRhRvmIwq5 4TTvGg8bWyGqcMN8RCE3HPGuSSMw2FptM6IKN8xHFHLDwYqMa9sjl7oU8K7btXAudbkFkysu dTqhkBs2VmT019VMOqEKN8xHFHLDaSY3buHCXphOqMINc+2jiBsOYru9s308EtrHo23tY+6S 4nOF3kjS68MsYhHsKwdRkX3lICqyr+3C2dc8oir7ykFUZF85iIrsKwdRkX3lIBZfM4rsq6gX ynNT7cLZ17zVUWVfhYiFyajOvlLEQrnSJWJRXOkSMd0kVbhSbi9U4ko57VGRK+XIqMiVCmWU thTCLRkSzKZwO4wEsynEkmA2897d8symEEuC2RRhyTCbQiwJZlOIJcFs8upRltkU7deTYTa5 ZZRkNoVySTCbIrlkmE3h/kYJZlNQj1LMZhZLjdnMY8kzm3kseWYzjyXPbHKwpJlNUT3KMJt8 OyHHbAqxJJhN7tghyWwKsSSYTU48jS2YzRR6bp3dK5zZ5O9jFjKbWdaQ8PgKPqIKs8lHFDKb nqyMKswmH1HIbPqyMm5iNjN6NLZBFDKbgayMm5jNDS2c5JuyCrPJRxQymysOtutLnU6owmzy EYXMpikrowqzyUcUMpvWVjJKMJsbWk/BzKZgp6gUs/ktsdS9XoWIBa01i+BdOYiKvCsHUZF3 7RXOu+YRVXlXDqIi78pBVORdOYiKvCsHsfiaUeRdRb1QnufqFc675u2YKu8qRCxMRnXelR++ UMXrlSIWyuQuEYticpeI6UauwuRy+7USk8tp4YpMLkdGRSZXKGNxTC69VLxehaF/JLhhYdgl CW5YiCXBDeejiGjS3LAQS4IbFmHJcMNCLAluWIglwQ3z6lGWGxbFrpPhhrlllOSGhXJJcMMi uWS4YWGsPwluWFCPUtxwFktT4obzWPLccB5LnhvOY8lzwxwsaW5YVI8y3DDfTshxw0IsCW6Y O3ZIcsNCLAlumBO9WTEiwsfCIyLwY3qqeL3yEVUiIvARVbxe+YgqERH4iCper3xElYgIfEQV r1c+okpEBH4EXJWICHxEFa9XPqJKRAQ+oorXKx9RJSICH1HF65VrH5UiInDto1JEBEFEQik+ 91tiqXPDQkTp1WsWsQhumIOoyA1zEBW54Y+Fc8N5RFVumIOoyA1zEBW5YQ6iIjfMQSy+ZhS5 YVEvlGfOPhbODeftmCo3LEQsTEZ1bph/5I4KN0wRC+WGl4hFccNLxHQjV+GGuf1aiRvmtHBF bpgjoyI3LJSxoNE1vqS54R99rOb/mSt//mt/PCv2+NcN57+aZkXXV89/taqVf9mf//odrv35 r/vzX/fnv+7Pf92f/7o//3V//uuPPf8Vhgc8/hWP4kx+gsjP9OSL/4bpNk6UORvX6eLS3IZS Zq/WN22FLxeNGC/7hYfq8T5hrUMsF44Yy8ilHJVklERcNgh2HrC4/pO02+ciDCxVlsXa8Tzg XbGk5drxPOBdsaTl2vE84F2x5OSK2xysrtFmx2cjrT/Wp8iohUz2whGLieuhgrXhMLg8P7Nl tHUOolk0olG4jIaKjOt49GIQfWVEfqkNRRnzrHeRiIYyIr/U2+ys2g1RKwwxwoz8dASIlOu0 4bImZbuyWUZk5qNDllcRq0sZKaqb37W0ITp8AaVe+RaqjJj7zligjMXZngRRodRrv+EVg1iw 7VmZKMvLWKjt4Xw9KAIxncgt1pqtfLksptRmsfYxkbFA+1gu2D7GXy6Ls4/RVeSpHkWe0Vi4 dIWeIBmPf9WNLSauOH3LFiONKFyY874tyizMV0crdcTVmXKRiCqlXjdaFYMo9jjZBVE0thSD KPIpli+1q4yYTyXyYZEttamMyJdxJ0phQ8TNtKXYiKgLDpnmIG43WlXyoxWv1GqjlZAULMia bfDxk6qZlbl3kYgKpd7Bf04W8X/Yu/bmKG5sn3+ZT9GVOFt2ANN6SxBSS8Dkcou1UwaylWzt dekJUzEe7ngIYZN893vUjxlp3N0znpmF1F66KDOtln59dM7R0dHRo7e2ZoOe8m4Qt7Zmg57y Roh5ocE1fpvWesfWbMlT3gHikt+zEnEda3Yt33sNa7a97917FuPGlqIXceNWuIS4A/t4jVMj t0XcptY7to+DZ4HtttYb256O03N2j7ilxe3g45YWt5eP22j4ji3uNU5H3RRxa/+xF7Fj12YP YucZVnmpAYsr36QRmfkrhhC3nFQeQtxZu97ef+xF3ILGXfuP1zqbZ7tab2Epdu2Rdp4KslNr tr3/2Iu4Q9uzrbfXi7gz27PC29vA9jTXn+4kuebaIi76AU+m2Xg+qxdx47miFSfe7BJxGxqH 7PZuELecc+ut9cazTx07f3ePuOWcW2+tN57PWnFq0i4Qrxch7JjP6jyBZKsx9Yq9zzuo9fbz /b37OHdO4zatcNez8yt22O6y1lu0wl3Pznfu7duppdh+Lr0XcYeWYtuZ7749u7uzFM31pzu9 obl26T1V1079sTx6MKQxPfPUvRqzGeJH2v93df/n6dGDR3872uU7ognp3/9ZlgSJZP8nrvZ/ IvbZp/2fH+CK8i9+8XY2mV4WYTp5XYAOVEoB/5+PzejVbPbm7p077969O7zwM0g5nExf3glv 7jT5Dmcv/zUahckUFCiuFbev9MVL724V5u2smEzHL8cX+nyxhybul/nZv5mNRpeT177d+VhR MXk7e/O2ydKgxI0zxo+aLUDn74vp5O1F3KwUt9zUWzkLqxTcXvhfi8eHn/Z9X/daav+z8fmO N39/trL9i5Kk7Z/G9o8w/tT+P8T1RbvN+OvgL345fPXNKEk5n+hZnhS1JKaMvojtMBSnx/Nf P81/PZr/egFFQ/z1+Ojs+cnx0YPTo2fPR19AyvjCQ+GldH9+6dOnJSRduHHIUP7+4PTRT0en J4uMPy0/yHF+Km6jq0Bxb20sscj3KE/OQR51grz4Pod4kSbmAC8SgJY/Tee/uK38lfb20ZMf vv2xrlCd8OL40dHp46cnf28TTn5o7+cUzSGb9zb32aOMsDZDB6/n9MyzVvfZoyWsOkMHVlKZ JvM8ZelxhrjI1IGZ8KPJPk9ZepxhLjJ1YC5Y2uRuE/KHGeA8S7ksYHBY259xD1VbAJKBV4+f HD95/uM8Me65On5wPJonPN8/PDw8KH47O3v85OnR2dmt4uzsKYir/vXDg7MHp989Ozv749ai yPcnz2LXOS2+itt778GLZsU5PLg3upxN39pZ4c5c8VvMFZ9M7xVu8jbu1f91/uv9vaJq9oV7 XxcHlD/mxcNZyIrXWX9tfwwXPj87zwqfTy5eJgSktyuoWEHGr3g9gtxKbkSktUg6v0blIuj6 lQUax9cQWQVc/Rl3y2+8tgCHoaDC443EOQzrxr0yyQqupyjjPkXJsNZS3vEaAm4BryPdPuGu EmSPHFcJbbXM+kVz5q5jPNo0vEjE3Sq5vk1pklZAgmpuZmmyB6voXtWWeqzQCh6vbu59NmmF 5K/TXgct1ArFXN84/0rWNdPXsdMRdU2TvYXNjm9Zo5U3fT+8YzSq+2UYbk33IcPBvSZhukgY 1RBvz9/46XS/QX45md1q3/JOX8BN86J4A4XSMmG/vqvK1D9XFTnfT6tRFUwTuooDA/VsbKtq 2lfe/lwfgRQrUQPEH3XBirEHo99GN8ah2J8W9++DW38wunFj6mdvpxcxe0yLmYvff29v9+P9 721k7N6ozb0Pz9vk3+de3MGVIsmze6M/rtILNW8Y5VIS48koJ49O7hbvfDG5OH9f2OpwDxNP D/nmPjpkkWUF8KwKlUymxcXk3a3i8tXk7bmLJ33EAxp66hm0uQz77qD4GnKxRY1QJ312mgnl fS6S912sHV+C+7hfPTpI3tskJzx8H2mr8hV/+UtxOX55YcYzyBGT53eNoIG0jz08/XT9m688 /nP5xtuxPr+z23dUQR7GeuO/cFXxH8EpIwLV8V/xWcF2S0b39f88/tMt/8v/nc52Fwccjv8h whFZiv9TxtCn+N+HuLq3UV2dU1s52TZ4ZErvxF3+YB2sXR8OM3BOztKDzc9OuvpgdU2vrPnr fbAOXdsc7NxLXe+Sz/6PyAxu7o2zolyXynMuAjHWxQ+2VbOp1YS4c4Ti6utTKzb3ygzRGC60 l0xSq3WLWM3AWm8V86sQl5fuXXnS0LhWfQeXbxfrS6N3dnmNpQ/dG66vFry5WEyRSsU2D+pV CiVlpmcr09V1KWvp8woalxBRJ42uRqxIRJyW0vZI+d9D4+4kc2UBUtjumO2OzcwLxI4nVz8p 0lHr5XKmF9FtiCh6Ec2GiKQXUW2G6Pv5KDZE7Ocj2xCxn49kQ8R+PqLNEF0vH/2G+uh6+eg3 1EfXy0d/HX1MDQ+ZL7HrWM63EaLoRSQbIppeRLYhYuhFFJshon4+qg0R+/loNkTs56PbELGf j2EzRNzLR7ShPuJePqIN9RH38hFtqI+4l49oQ30k/XzcUB9JPx/X1ceiLioQF8YS7rUmYLYW C10JAV9ZOMNZGT0p0nrgIdiA9YAnJZgolaJYEB1NZILICJLcS2Vk9CpI65sBopF0CNFpr7ii FAfPM0SpwK8LBkkjWIYYpJNDiEFSSqEmXHiWISrGmfKKcq5CVmsX9JD/KAmnwCrPiWY0Q9Re Kx880iSyI+WjRX0jmQqRxYP8saDwV2aIxgVcWslFyZYQiRqkkZfKBqq4NiKXjIHezCNqmNcm QwRG8iFEAVqirCg1ETkfrRAehmoIKpDLOrBysNYKKas4tkZrnyE6ogVCxHuJc8lYw4e0RzpP qSIeY2dz7QlYOEolBmaSnEYShhAVhkJKI6GxzCRDS68Yw95bLJdqzc0woiixdUrhADqRIQZF NQftc26p1iUZaoUKGwG6KAlC0eFOEBFiOnBEuWJLrZCpQRoptEOw01ZgRXJEqxUCc6SA2oxG j9mQrBUjoJHIUkVdXmsMciYE7I/Que3xUg6M1WMejmA4CoIG+4hUYx+1kkbKAGaCctd+aL2p tWe2z1K0ZBIhVahG7EjeauvMsfaUOCZx7AtLlSB629cKG0SNFFhBmiNyMEZghw2lxiwjUj1A Y80aBSNelSFyoQHP0pIYHVrEufq4Plk3WTCQw3zVcyHRIEqNsTbcWajjlVoLORCXqWvNJCtl hmg9RVIrbgOTagkxKN8v66qwIyiUIkf0zAdkOXPW+mU+BkL6JVN3eoYS09DIG8RIYOAlGEhR +eGlXCA6y/rsYyMEz7mWLEckmNISa3AeKQstYtvPcNwv69qKc2RNWEK0OK6a5WDIwzKid3yY RmMMxqjRxxYRGgmXyCiiFEHLiIQO0xibNA7E5oiUI88UxkIbtsRHC9o7iOiARiZtXmtmgzBl EBL6hit8dGS41kygknhd15q1loIgbaD3h66r8uwzRNrrATSGwoAJDFJmiFY7pITH0kt2BdHg pVb4ceZau+d/dvsNsOicDsz/UMLwfP4HCRHnf6B3+OzT/M8HuK4/K/LBvihx3bmk/8TPDSQs qvojCn4njHoYGOj22+mVGRfIuwHPYxmxKljZXw39OmeCEYFjFAe3dplDh7l6tqV5vUwRg/Yl NWDyPHM4oVESX+3IXZdGPEekMELlJY8m06IGsXoAHT34o6sPUqtA2vmqysPBQsJYFTxz7VRS axqUCkOjR5Vc4IMn25+dQDgoLZGY01ilG+jyBn3rHDHZWsysoYoJwaHXTLabSi1E7Aw7D3ur PZnkqivX+EcKI+egdy6VyRCxVXrQW89pXCA6oRj1whmN5weKVFEJyVHvePSqrNuJkKrTRAxU nDMjHEu1B2jvHTNngt7td4EWiLs6frit8p/nS0MtYqUMCnkjWf0nZO06Br7Bc1KBOZFKRltf 9o1Hl+lo+VjbngiGucUEm3RDtQAN7x5RtHTMryXEGIHn2NugY1RoQaMviXR6paW4vQsam1fu lo/1uB5G27aEcT3mVxArjxKVcRg/p5EoHtSgNcMo6GClKUswMVcQqxiQSPsZAmy1fmC+NyIa Rqx0NKDOzyonixFqG2641wPWrEakFDxD2v3p5zliXelS6SoGsBKRYhiUrIEIPUXwsv4e2ipE h1bUulEq4aPy0DVodEiuU2voEyKNjK2pj2UrUo0kwqAo2pnqXMK5rHEI5WBsdkl75ojMe2qw UEgzE7Vv0bs6yfVQTLGpNXFaaJnRyCxCmmNO4oCU0BYRcRjirqKx5iPYhNST8pQrqaS1LIb2 6Xw8aiSp+kK6pmTmNLbkUWarySs69wBgDMjtACLYAqxKVzro9ky6WkAh8KME9tjy6ObM2zXW uBykESFleIw8Sh8yRCOVCyUGw4NI6gGAZ8b9kGQsDGIV1V4TFSdJFh6AjcstuKYqRqxTiytc iM2wV8ODAR+WBAWixT6lEUnrjdelN5irBFFRq8OQ7XGlocZ5SaiwOKPRgqxIqaXDyqR8xFyI IdsDEnFg5VlJXONdt4iAZQ1SkhGc1hr86FD2Rtcac6dLbUjQOJMMdC8lRRo5IYhLaZSeiyHJ OMyxAWmCA2Zshqict4R47LxDCWJQvOyN4dRDAm415jpg5VGKyKSgDCvmY2g/7Qu5k7rXA6i0 QdLSM80oCjhFxJIGL8DZcw6nGs4caC8ekLXxFoRJDYOGozL/kSpkS6YYDiyVNVIxbDs0L4Sj zRKlNSYiJn64AFEpSWyQOvXsgd08zpB0fvuyqpxTwopApATktHdtVipJD4A2bYWeBTck6xZR saX+ukFUJZivtF0HTKVaBxHMWdmFKDE3ZTbm4spH+7YSUTBpaBciMIOl2qMddnbIk5rz0YMk uhCDDDr1zTwCO7UWH8FNDF18RAYeZZ6UhEHSOojUsm7JaCtTGokMZnCeskXUlNguPirCJctG cc6K3oh0isgEVy2NOSOZI5k+grNX9nnNGY1cM9ZJo2M8rTUNDPVGpGOGMg7/iCQlNTSrdTvJ rZziaa21QaF3FidBxN6RXHtaRGopDpmGO2x7Zx9SIhH0iF2InnqmUkTrwKsYWiXZAIKd4agD EWFKsxgAcLfkQ33hvNZYCdNFIwafBKeSYcxGyaxGFMTiTHsWKxNk2s8gVHqxhmRIGSySXTRa 4kJqKZxlgfdJJhOMETR0SsZykeqj8wwPzsS3tXaeMNuFiCRxmcVVlkPONfiotSCd+kiYZGm7 ZqgcpBGV3II58Qq8B9pMmTZWS2llLJXG8TQSFzxYzCHJGMKxsBIJjbBM42bQ5XEK/yxGLIty gRcybHsYOLdKe+i5vE9pBAdVglNBkFc+9QCCJ7YcQkTQ96uAKMcU3pwg6lAK7kmgBEWSEhpF iQZtOHcMURhrGIdcihiocsYj6Y3N/HAYHVs7RGPA4JgxBkKVcSY+iT9SA6N/h40Gl6MJI9a1 lhYNIXrQDyqRASkQMV+BX1ktbCgywDQX+2u8oFHZwTEXJp5BpUuLLWaZZKQ2SiAdWGj7woZG 4gYjHwYT8NStAmLicsjEay49uMsMQytUmU8RvBVDvhkC9xKaFbhHChpbTWMTreJAHWgraIJe WmgNdi9D/NgzLX/Oa2n+T1+MZ+93vP3vevv/KIn7/0jJPu3/+xBXp/x3u/1v1flfYMNpMv/L 4vwvdAmffZr//QBXFvsvMSYqEMu1jNHbbXaZtJabIwkDXRQHyyLtC0rtkHZWwvgAq9QNwhzF FU9dsa2aRkuoIb5EnnuxLY21w4BLHkqNlLOWdu9qu2atMQz5jSkd18i3vkkdM2BaOEJ57OYb 56+ZM9Uuhm9Fb4wQ++BKGEeUVIm0o4OBFhG6NApbm45YeRlXow3wUZfMwoAxehMOtbGt7WQd lA+KUEGZzWJbIphADdPgl5l0fKlQ0L5H1jW7LHOmVCIISrO4kQX31CsaYMBtU19ZwAPaE3+r A0tGcq8lAo+inEcdr1vrj91md3l12v/dLv+5pv2v9n9j+sn+f5Brpf2vZ0VKDUkYfHod6iBB E9hAZbXIo38mosP+N+tLFMbaOylFEzBv51+MDPqa9r9+gAz1cfwM2pPFkgNy3nZH+fvtf2WV Sxhdas4l1yqLi2mwcUNxiC7730QHNEPGM4mVSed+geeiN+Y0aP8VcTB481I56tIROQwTeWRs Vxyi3/5XMRFOkQI6rUEojb6URig/GIfos/8GsdJoL4RiJo0QEeYUHtxj0Gf/uUecehqXzuO0 14Ps1Pbo44D9r97lJXGEwWCS59Moli2v1PzYbXaXV27//6Z/9vHkyN2+Y5X9B/WI9l8gTIRA 1fgPOoBP9v9DXCB6N57ePxw9O3347P7e/uVkOiv29t+Nz53VUwc/6xwHd746tAcHo5Nv/ztm i7nvLp59eWjvf3k4ORh9++Q4PgYdmvnp7XhyVjxS+tbefix393ByHyBGt9vjhA8P78A/O7kI 45eHr/XPo9HDx08ffPfs5v3bj86+O35x9uzkxenDo+L2STka6fPzu0BOfMPBaPr24m5xevT9 yenz0dS/AaLntzeshhp8Papv7xZQbnTjr8f3y3vVoV3jYnzRwtxzk+Lwzt7eOB4+dnx/b29/ //gmOjiIJ8hd+OKbBvJe8Y/i872948+L+0VZ/DMenOXtq0nx/YNnz2LJ6ubxgydPnwGBe8cj e+71xd3Rjenr4nYo6roftO9syRw193crDh1ORk2+uwnL6+O4R8DZNBWYPbqxt//wYcSsGXZQ 3LbF7Umx99dY8y8PL1fnf5bkv1vEPNV/k0XWp4/avHXG/6nSnj75Fvg/Ovz+9Ojhk5MXsco1 4ZD0XyfHP1YML0A+RS2XouLGf5TN/E+6lvz/GPixu37HKvsfny19/wHhT99/+CDX4mj3y5kb Xywd9x7TJlnS57VN+nx+amFysPTsH/8EC/lbmtmaJpj4eZKaRRmzB9nxY/COP+6NRvGgw9d6 fLH/y2TsqgMPv3gz1S9f6+LZ80cPi8dHxz+cPXj48Ahs8cnx6Mb8QM7RjeaMR/hVnch5qxjf isc3RisOaQnhX72B99yIvcP+uHoKvcTXxeX4Xz5+n+JO8+OrGaTfvHkANbxx4w3kmxU3i3Es WR3B+Ob2N//X3vU/JW5E8Z/xr1jj0IETERKBDszdzZ14zs2gtfTstLY3TiAbyDSGTBIUKvRv 73tvNyFAVDyBu16zowib3fdlN/v2vSV+nge9Sgi/mIE9LbCcIQc+GZP7PKDEFdQmL+rQLHoS OfPDyfW7Vuv65LfjkwsCvMyMgTyOAvYYUQ2HGpPjcpWdpDs6kccSkwgqfQZ/OQmRyfORlLtx xE4YEqAvXr28UCzjejBaZk7J+vWsUWcd3WCmy0QPawDbbtYXomX1/OusXhDonVlfKWDvDJBC D5JoIvR4gRHCKXGgyhG9jmEqZD3Pk4IRY4IBzfp/OopsEzaAudvfx3dT+DVgPCRS6jikCK8G gV3GVO3OX39IzZhSUiFdyKFLLrA3aibwhIp9eEHpnqkv/Bjwc0BSxoWdU2waQXXu7kI9onBu cv0n5P/Ytv0/qpUqS/k/yqn/v5XymK1P2hJm9p9sKqyNEHR4RLZ56ICNYPcSMthssCG009Tr ANGip2yIGwQbITayMMq4iovWmzeqxn6AeNs00VLR6uVoSDmtC7kgODuAJjUT/qgawdOGMoRg yfMyyEopRPXoSSEqKglRW0EKzUQxKuqcGPNgyiTMHlBpNd+3rs/enX+6bn48RaDdijajhtKj hd/jdlLT6tFMnzhxUEpuYPeRcjdC0XL1mvCno/eubjSmj6pe5KHiK2mOqle1hkyDEQInR+1K jTAPxnTn+fjU85DG0DSPAZf4tIhvjPs4to3hSAvzjpUhnDGRiMEbR0RCKsS3EUNNdmAU0BAL MeAj0RCUiRXrDtwx0jNzpVHZLWPON2yCRGj3eAVeBAE9z8y539XtDikEoyfUPhDrRwgE24oU ZPolSODfxrAxuBcCj4NUJeoYwmWDF2GPVxxTMaT0TzhfOqZPDemzUc9XWMlysoiYIBACpj+y tL/+jK04KbaYlar2o9ZadV7s5Ymxl2bmARtCos2sSJjgxuZOL+jnwEnLCa8c3kr//BW8zUcN TVvvgV1l9+B+7Y2mC9HKvbB+2AjkFkD8PtwljGOVL+OYDBEJj30L0WfxNWD4OfK7o5oZ/HxY E/nhFNHMZwJgJq1dKSBd6wzNP9RK9XMkG0YbUCmNNoQxeMZCYcxy2CKHSGiSFyGLvFFMsPJS Q+tzEd+EzjDbh9tGusRugYFXjA49sXnLlInC6kxBdzzq7AvPFRtMXi8QlZ4scsTruxC4hEHT MhsjgQ3K+Q9UEg+hqrxREyjM+lP3khJDu6cxm+4spFqQuPn+nRV0+yznkXBd3cecY3Umuyrt c6WRnHhMtr2Ktb1SGg9mB5PNL2PNL5OaR6nHZIdmrENz1iG2zJT2W+WFAcK8/49f/K7d/X/6 /Kdann3/W8Xzf7WWnv9sp2z2/Kfr2VbnRjxPoCycCy1Vxh8+SDoVkhf+34dCMAjf6JkQSvbf OBKigPGp0yCpzvd+GLRg/8V6XTOPFZ//rZXVaknT6Pxf1Urp87/bKInzv93nvyqlqjqbf7WK z3+Va1q6/2+jQNyFs423gaEH+g59dsee1esHLHecZypMEDvuF9nPRdbShwH3CuxDkcHG3AQD 1+1bDiXj/rXY4ia/9ThS+NS3fIaGEBOCu7oXYJ5vcW9RY6g1LDCMVgfoGQyTpHmUB/z0/JJd wFYNfkXL6nKnS+R+4VxQO/7p4veP56f0Pb7BA92yfcGOy2TgFqamA7FEEnFuAU1vlns81+E9 y3GwEbj+faazvTz2B2o965ZYMVY+hHramLHdzQAUrUNcMGlfTtrNSfuK5aQi/tgJdIgwoTc7 n1xMziZwDa90vfCaoKgKCfswpKQ9Ji3v85FugFtzo9usr9u3IDEMkY5xrzsMRD9t5X44dHwE bhKOJiVL992BUEAkVadRFG4Uw+DCfxiN5/lYXXjm8zf3BuvE/0KaByHRyw0ImkDz5YI2NyBo As2XC3q1AUETaL5c0PViJyFpH5aODdYODIgz8G6YO/CtAFf/2nGVkrg5vKeH3JZuwY3qtsht s7ot3bXz3OS/6MVwnJZyoTxHt0VuB2vnFtdt6UbfqG6L3Dar23oxF5HbPuZAXzv2IhkJSTlp e1iPzMmU1yFz0k6xHpmTKb9YZvjLg26xmKYE/b5KYvzXPnnXPDtZG48n4j98ADB2/ntE8Z+a xn9bKTj/7BYiB0pq7A1uZJy20w8Ct354aFsuRFs9XuSOf2CPB07R9A7v7u7CW2VnBy7DvYMx XbevOz1uFBiEdRAWWRBsYbwRhl8Ykv3F3SC1IGlJS1rSkpa0pCUtaUnLVyr/AtRjt7cACAIA --zYM0uCDKw75PZbzx--