From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21320 invoked by alias); 10 Mar 2006 12:50:00 -0000 Received: (qmail 21302 invoked by uid 22791); 10 Mar 2006 12:49:58 -0000 X-Spam-Check-By: sourceware.org Received: from CPE-144-136-172-108.sa.bigpond.net.au (HELO grove.modra.org) (144.136.172.108) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 10 Mar 2006 12:49:27 +0000 Received: by bubble.grove.modra.org (Postfix, from userid 500) id 0985E5A1DE; Fri, 10 Mar 2006 23:19:22 +1030 (CST) Date: Fri, 10 Mar 2006 19:44:00 -0000 From: Alan Modra To: binutils@sourceware.org, gdb-patches@sourceware.org Subject: linker debug info editing Message-ID: <20060310124921.GN6777@bubble.grove.modra.org> Mail-Followup-To: binutils@sourceware.org, gdb-patches@sourceware.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="qDbXVdCdHGoSgWSk" Content-Disposition: inline User-Agent: Mutt/1.4i Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-03/txt/msg00160.txt.bz2 --qDbXVdCdHGoSgWSk Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-length: 2272 This is a first pass at debug info editing to remove bogus entries for link-once functions. I'm not going to commit it just yet as the only testing I've done is linking a current libstdc++ and examining the results with readelf, and there are some as yet unresolved issues. I'm posting now because I'd like some feedback/review, particularly on the overall design assumptions as detailed in the following comment. Another thing I'm unsure of at this point is whether I should remove the CU header when all following info is removed in .debug_info, .debug_line, and .debug_aranges sections. I know one consumer (readelf) became confused when .debug_aranges had an empty unit. Perhaps other consumers expect some relationship between the number of CUs in different debug sections? One known issue is that .debug_pubnames and .debug_pubtypes have a debug_info_length field, and I guess I need to edit this when shrinking .debug_info. /* This file implements removal of DIEs for discarded link-once sections. Such DIEs are detected by parsing debug sections to find DIE boundaries, then examining relocations for each DIE. Any DIE containing a field with a relocation against a symbol in a discarded section is marked for removal. A removed DIE in .debug_info results in all of its children and associated data in .debug_loc and .debug_ranges being removed too. A removed CIE in .debug_frame results in all FDEs using that CIE being removed, but no attempt is made to remove usused CIEs (as can happen when all of a CIE's FDEs are removed). Likewise, other unused shared info, ie. .debug_abbrev and .debug_str entries, are not removed. We assume that a) debug section relocations are sorted by r_offset, b) .debug_info location lists (references to .debug_loc) occur in increasing order of offset into .debug_loc, c) .debug_info ranges (references to .debug_ranges) occur in increasing order of offset into .debug_ranges, d) entries in .debug_loc and .debug_ranges are not shared, e) FDEs always occur at higher offsets than their associated CIEs in .debug_frame. ld -r using perverse linker scripts can break the first three assumptions. */ -- Alan Modra IBM OzLabs - Linux Technology Centre --qDbXVdCdHGoSgWSk Content-Type: application/x-gunzip Content-Disposition: attachment; filename="debug.diff.gz" Content-Transfer-Encoding: base64 Content-length: 21452 H4sICJJ0EUQCA2RlYnVnLmRpZmYA7Fx5cxs3sv9b/BSINsmKIimR1GFZilzR mWifLbt0bMqVzWOBQ5Cc1VxvDlFMVt99uxuYGWAOirLlJPtqXYnJGQCNPn59 4KBX1plwxp2RGCaTju2N/Q1rn12KGRvbjthorMjm4Xi0MWVrA/gcwPMgFA4f OL7FnUE0d5v77DYY8ViwIPRjP54HONLobXR+a9+JmR2ZnUZ2ZPFwNIiEFdu+ NyCOBsgRjDgVlsPDZQY4tieeNYCH3JuI6FljxiF3a2ehHml/fzyORFzTdRba sVhe4IruRs919o7fCbIbd/fZVeKxVRfesJEIOtxdRWLH56db/cHx0cn/nF2e XreZ+Tw4Ob94e3YNVI9GI5ZJI3GBE1i+N7YnCUxne2wNOuRddQg5foqcDWsR anAoDmABD90NBs//TKKYSaU1VpLI9iYsG27q9PkIK9nkR+6NHMHO3p4PLi7P 3w9uPn44G5yeHd/+QM+NFWivamWKUpRKCaC7Q0n1WeyJ54ciBZAYIY++FRWY wxE4GuweJDGyWugQxWFixSxD1WCceE3yUGzV4ClfMh6GfI5NRQQrYCmZI+EA n2IkCZsCqQcUqE41hLsxuBrOVNFpQfvfbq9vBtcf3yHKjhM3SHW41e8gCKws llQblwH/jZUaSDH4dDKrdKZBwDemhj5lg9vr9rtdnKuqaau6CRm8D2tahiBs TZMV9nat2jY7qm16qGkZ9br3NU3jcKtb21Q3aLpXLzGpsLrJ3nrVrW3a261r 2tutG+Vu9evU6+7u3dU1WeBmdW1RsF2rEDeuafAD4YFd6mwWBHUt0dbrusmi aU3D/d5O3Zh7XoeAB6u3W9sWxX7oznt1BniIhRdV2nR3u8OdYFrX5rr2Q01T jUqgpU4l2DTd3a5petjb7VQ3Pjx0bF7b5NpBVNMUQYopM5klTNuDhCkmwhMh xB4z15VaIPhAnutjaCm0BP7m9dVJ58P7G0qkJbKNC28kHvaRwqaWrBuHn/+n cXVyTUXbPtu07qPNKLTo/8JU7ftGKOLQFveYW0P4iCDWs95G71W3MbLHY9ZJ WCdgnZBe6SVFo9PpFDlf6b1i52LIIJzust72/tbufr/HOl34syJptlqt8iCk G6pBvf3e1n63Lwc1vv+edfp73fYea+HHawYvzCKFHbJ/NNiK7gmOn7/SHigt 02MHHzuQS2M+lG9aK6WaJR3WEdMOVXh6T32s7HX/MPPDuyh7FfhWJxCUxMxX dv4Opdve6aN02ztbVdKpEqxCSEuT0TJEtIoSWlUCWmX5rKJ4Vkk6qyScVZbN UqL1wILtV6wFnygjvLKCBIP31Or1QAP7xrPFvl67uDw5vbhqbjYY056mPJoi O9OGNqBfINA3CCC0PJApgnXKP+qoddToO53UXS2dKhKtzyaBOtfZ8wPLH4lN IpMKvKfT33smi3KULHEyIqri+QQyWyaZrWeSIVxs9fqEi63ejsSFlvGRtl4A GLQbegGg9VxO5xB3yEHqIaGtbvNWeLdp+a4LNXBpJLbZXixCjzulQeKhpkEa F920SItWBR2XW6EfSXZAvJiHE1jhTE2gVHSvQZGEWIFWrrrMG803S7pTrtTf U586qw9EhoC1vfW6Ddmk1dve3sIvGbRUmZNLmdY92RRlPmqVK8d2bBhfEkC1 yWqhbEFm5ql9s4Kr1XiHPa3JWiVWwKwSmVWWxM6SuWXgmjc69tAeijCea+zX IvlZcGl9nvvpMaBEKpV0oZAV40YzHo77tQqoxEBufbA7fKK/GhSqY5ip2D+H J9KSS4X27Z1uu7eFHriz3YZqUHqgKr32td2RsqB/XEyO+Fh0LNqoLFHTFN7o GKUfSZOXSs/J+H+YP+vStEol735p87c2Iv05HTh1RPIxvXDfZ4VK93ml4u+A wdrixJCr9VIIbH0eAlsvgkBmLpz2mbnU+FPbSFu669vgX3rtrs9Vu3iH2r64 eIdXxnZ9tnrXXy5eviPVdPlujiqt33s72vp9Z6eH1b78gBeRcHhoTaPD1a/H qw32F3ZDmZENuXUnvBHb8En4aKPB4uFhg1HYPVzF4wNYNWsLeXMhXlyqk89g YbtKXlNHwFzzF4mYU2gkWYON/ZDdC4vZHvsaZIKvUYONfB0ZGSS/NCyyiRZg YruMie3caTJAZG9W+js5Grqv9/tb+1tdDQ3bGRryIRVQeKVBgaqC12l1IOtz cjQkMxj6viO4l2/1W9wb4JEV7us30p7CS1ymNvt9a4BZe2A5PIqMIwKjBf1+ DSAbxewMmi+U0w+uAIlsvXnQ0Lm4dzmrOVDAxIsnKWy9bRK6nrv4jquzErZe 7JDN1MopqLMcnEqd+Yz9ZSgjjU+Q4xPFUKRehnWNWi2r5rkcme6JWfMZjAkk 4nb7O+1dQNxuf7cNgH4CcfqhamNhT5fPh9ATXC0YiKk8Ax5MRyExXM0pMdVa RLT+1FvXflHelMzaepP6oALa7N63oXdTwkUxlDuH5ft3tpCQfD5HeKz+5+JI ndv/uZgiUPxOLBk+VHXrYBn/rfak1rIeszRg5/ESOq2gvBzRJxxXQLWBYXDo O8tEF5k3rCmkteoIh0Qqoxz2T7zInngCLzbE2LdQHOhrrReuESqnkBXAZXUj VgCbI3G/6SWOs9JjfwO19V6/6rJud5/+U5lcT/s6garsv6dl/24bt+baEIpx 07fR2lxnGzlg0osGzA9i27V/5XTrgHzgxA/moT2ZxpL0eSgEu/bHMZRjgp37 iTeizm124VlyxE+AnVgAAubsyAEx3vmjkLPvuIuf3w/tSeB7ow1PxBs8eQND aNDN1I5IeQw+Ax7i1RM8j2mzeCrYse3xcM7Osf1URBYE/hgqQFjPhPDeoBGE /gRcH8mMkddI8XrA5n7CoKqBwgwiBuSOYQKgtWO8xrAJxIA9ezwnQvAS5BIh zQ14cyPkBh9+uLxlP9AZosM+JEPHtthb2xJeJACFLMA30RQQN5SEcEidxg6Y sKEd69iQ6sR+Oomi2GZ+SFTWeIzMh2Qd32sCx3Pm8DgfW6eBXFB0AiI+9QOQ aQokQcqZ7ThsKFgSiXHigPMksTThxc2P729v2NHlR/bT0dXV0eXNxwPoHU/9 BOLhvZC0bDdwbCA9w6suXjwHAWj4u7Orkx9hzNHxxduLm48gBzu/uLk8u75m 5++v2BH7cHR1c3Fy+/boin24vfrw/vpsg7FrgYxRzF6k5zHZKsS7VDG38Y6J lP0jmDcC/pwRm/J7AWa2hH0P3HEII8F8GQs6vkdhjiSF3rkyD5g9Zp4ftxlF Rhb7C20rvUEmkZ0edOPeHQQ2dh3DgJh1AMljmOHc8f2wzY79KMYx745Yt9/r dTu9rW6vzW6vj0Ar65soH7ir5iGgduEKL45ASNe/B0lAuNOLs4iUk91zYhhL O75nCe1WEbJ0nVhT2Z9LPcoLSOCw4Hl008u8i4Tijm1YHsIYNiQpYZUTtVOM w8Lggbu2J5c9WOvKYciN4HIuvFMGsEUKENXBctSbA13hjHKlc40A4xPoBgmA M5kyEMNcky+NWqAYl4d38GasXEbpBSeV34VkHgjoYS8UUeKAGpGuQ1q04cma 2s4oFB5RwotnsIzxLZvTJS0ec40KsEo91KMshMCjpCbkvLHvS7XnrJwYrFCp UuTl/BTMI6/dkbfCECJi0CaPBVwyDhHXDWKpiRHhU3YBEuDcNGMEgSTCCEh0 pjwIwHAztJ6SnWOvv0ZyakSGmqUJakzvakBQoqCVeEhWVkmQnoW8PdhmtthI xeLDIayBdfVAMIIlZEzYoQnAo9JJUjf+CSNplLgySEkTNE08GhhDMpEfKvyG quCS0Bw2DWtnuIIgDYpeC8VYgJktQQDPLdpkvmUlEkiYDQBgnhUKTsbwQ0wM oC05EdYW+lg5sWVOrGBRPaG69Pqpc8rhctpRM1XvkxBNtS+NJ4eLpjK9M+Pz SDIEyGJTSP80P04eoV0o/Nuh7hgIMI17HdqpaSEyd0KF6UCEmLsExSggLnM6 wZMBbPgdxdexHYL7x1OImhIJiIxARrI0NP4FFOUkgPlV2gZZ1d9E82gkgsJL qBrKPbNtlOLbbP93VcVhWX9A0sRQNaGiaWxYG6Mep2gzEzLDSohnHJsXSe9w EesB0n9DEdPyFZR9oD87woPnxwPFxHtPqIQGKpT0Ilk5RejtPMQgjSUJ3lMl rii6SjdKlwhGfMed2sSzLbzvORTxTKgcP3H8ISSYceKpvlRHqFRUL5ISB1i9 TNyhRK+GTagofji7VsOZWal7iXsgEVM5GoIV+rEM9gsJUU9FCkQDS/0mEQp0 z2HsIgdpIxuFmXE+cAnw4Jiy50aKdwxalB9BYS5ob4zlCRj/zvNnpEQCg6q1 UDsBhu4Iaghu3clBvpcRA4+TUv18eftuY+Pd0cfjs07vl0zGgpS0GaKkzEST QdrM4hByPXkpOQ8lZPqTW/Smk9ufvV/YBEqmzI+JdwBGYDsycIIWIRwIjuEo 0z4M03jL1l9WQgB+ZEluzaMR5NUoSgMizI3ayEZXOgZbp946+m8jSquEdnlr PUXsErs5dG1ZVvngHskQXCW2PRGVsFygQFt4UY7rC6I1xIKY1KSAcXKbiYPW oegxUGX6QfqWgx4Gkf2ryN5Ic6Tv1BRVKzQsnrD0y2bJ19+y9zAZlyioVLwE DdlTESES18BSWjyDuFkck6OQYdrtZWpkpQToYktMjlssnzAzDqucVsFsiZmp 56fMLQeas19LD5cVtllx1kOdrWM7fS1Twp8rmCk9WkSJFFJJSGkkJyVfLCKm JJTkMhfE34tw5olZmgRzX76ZivQlpAluWZCL0nANE0c+1HYnt7IiEN4E0hKt ASggwqINih3S+sltWu5gAc3YlYiT0EuHyAWPzGJpQAX6v4rQh1jKRBj6oebR EL6sNDQ1WuB+AyuR8q1ViIx/Q0m0wvSARvEIOGqbb4Cf/A0QhR5NFSSMMI2x 4ZCGdN7kGQ5WlWvY8tUh66ZR99tvs7nYYTqErPAzdu0wyAXY1qpucoSnUZIc 5XSSDSvJ+jZlx9/S/mDXd7hDJ4sFh0PtZcRnprRdNSdrHWYKOUg7h9JmhfeP puwZb5SvizxlSvSd0YB6MKN/NlchGrlxlhOZ3h9G55TWWR/UuLudEYFhJnno gkQBbmvrmujNgwp9wEhkAqpXGrmmNbWRcj4IRTcGHrLL27dvQfYVpbLuc1hC oxY5wnfVDGFLLT9yWC07ynQFEEg8HmawPajsgyApYMTE5C/QLPGqNYKvtFr0 XAbTYxaM6Mdq4gHWdbi4IC+WmoWwlFbzKqio8oUWvjOh1sL32WKXFsNZHS/H 1AYS4gUUVhtECpHBeAYZmoWqX4qVFktOlK3iFe9gpxnW+5zWu6h0uWkCAQ+W RVDXeXmeym2Kh7aHWoD51790xed90JUxEmVRTHNhM2SSaKlIUpT0uakEyK2d gsCciCDTKdu7vu8hM2FT2VNForSnqYQ3rKeFxrU6Mv2q+FroQFEWEsThUzI2 iwFtMdE0jNaLV/BzajpkPdNBwyxZam7ykx/eqcIdzZlWCXKLC17kmZ5+ADqC 5M0CH0smG1aAWiaozqiL06m+sm3rgF8mW2a2SDb05c5/M8gSGeSxXGkoDR2f nw6Orq/Prm5MX1iyymDfHTLl8LUZ4YlkUMwDZFwz3JsQxp8uUTA0canqzQi3 lVzuQQueHbpDtck8+ie3aIuF4tnE2D4qIhn3QeyYkBvVorkYt2M/Bk4OSedm 2FEy6WovAxMRHxaqw4ouMw2POENIUR1N/hvFIiSBcQC+pgzpeu+m4WPlMacz g05hNt1siucLQPi7et/L5ytg8OdZHWpmWmUqi+pi3AxlrFTNv2XdqqkUg2SY SaYAv4I3LCNRIoccz9AWIU614grXCuamI7XYrM3MFyGuBVZWKr24eZARnxFw NRakERbwGsoRj+WIfkjGNus5CaTDomMrP6HJNE85Df2gxkuK2Mc7D41WKBzB I7Ek8quYSqemUzHxYOFOD+0QgTHkeVX1zHFou3K7Jw17T3tdVZw2Y7TpTM8L y88OyYUC+qssGhsO/+VL+cfcCh9CX15AhBFzzO9qva5tyZSW7sU1tjwW8OJw /omr7KzGkDc9OPxdqAQW7rax9YCH3I10y6sNmyAOD6pLZ7SFHNZ5o3aUtPRo GiS7OQJflIonuA2nuBjOB3j1ma1Jxldz3a0WUjEOz1OwjDhr63I7ErU0mNK/ 9hA22dpgbdXi3l9juWVc3iFbTYMK4Ry4IQLyjpKkNeQgM3cSoTpqGV+P7boS EGaIPWF13mQbjyn3XyFpl5A1ADZ1FaSiw2ObfVtQa3NxuZH2znY70S+2sfSu bNkrWqdef/rOPZAgJ6LjLNlrJFWoVXVPatHYryjIgvtneC6lzToOfVcej9h4 GUL9Oyi494WxD+NSlJ4czHGHng2FmkN4cj8MT93AI40zSbrvpNawMJrWeVSd C1mh4955tjs/9sFeM3nsqdERDwF2o0sInA0B4YoLk3anV0EGBaIRai5ydk43 YGyP440bk0g88xUVjAj5LiI6J4Ct6IStrBxUdUavtiLCmxhSfrl9JUl2iiQP qgfK+GUgIIECand7EEuibfQ9O5oWCyqcpAUV/XoFQt9UyFP0MPSHiQ/xFJhG lBleViYJEWM7DxfS3HkQ2uqnzod8KVdPO63JL//Lug97XfmnCfrJn1RkIIlg GvkopX5qDmNQVpyogqqa193tBXT2aiZ/etCjaR81K1QbGERSeqoGplPjg6oB LdbLeuEZgO0los7yn2VllTdzCXu7RQlVnFFC9qvZUHSW5QVNoljZfyLxfHOM kSLdWF/7xkmauL3OHPwZyGpTFrpYwqqon3rgZ2YkU2rDPR/zzaJqH4c3Mmxo xW6+3WDog/YZqKrAfYWDpWshdSryCeXQwuIn30/5o8qf7FjrhQsgqbCXroHM 47oXL4Pyo7qXK4QyBf/RpVB6refLV0OF5J5D7On0/tKJWJ+7bOVlQAjxUK7y noqIZHz1fc2oNpqK3Q6rAEW6IbA0hk0Uq/D4ohXEf35J8MyCYHGWyTG0VJ7J Y3p1pjmBSSFAZzdtXB4EtAcpb2CoS0X59T31XsEvvb7KGT7hlUxqjqRyiU7M 3p+fX5/daGf4slMxFZm/fmi0gJNBSk5LR/oxd/EKSOkMXLvjYbRlTq3+QcdS vlID06xl8IY9ItzZGJXb1Diptnb2CCkpewCduW26o6jEO6jbIyrQTpkCxWip U1nizaEu7FLhGBSiQoppVBlTJgSMUN6exHvR/5dwB4GwKhW5Wriqg95NI2UM UgVZMfSo264Gr58T6zF5lxa/53QLky5b0UXBRF7SU7fjFKayxZ9miWyzMjc/ y/SapQxgcWHWMDCADgxIGaR6GDhi2OvvpVEjnwiSdA6sXE6NE4goBvT0wFKY c8ESQxf3O5NXHGJqw2jWCIGSYz7Rbll8KRmz6aY8GqT33LV5zaE9jcWRn0V6 zQs/3RwrC/nMW9G9v9gsj4WDD10yOrExfUHu3xomh7VlU9/FzWNKU0c+PKss 96urdnCNvWO9m1Gpm36ZXor1Z5QgkiC9xpl53/9TT/sPcJDchD8bMv2SG0JW HsYVy/+6V+kky0jL2Qqe448FCjlSK4qOjo+vzv4++HBzhZNZeNVdXtOPsgvY 6tckp0c3R/naHp/kTy3wgAryasDpFwd2pH60dJwABuSFILrsKw+R1WrLGxV/ VKJt7yqp1U+qqnYKZG3UaAWhj4dlqVzFzQJ1u5fHvF1ZUtG65FkbCUvVX7SV mlCdkJVUeqFXX60VyzOF86fCzmcBfknP1kMOzVcTcF7EPZYOhJr3RzM7Bviu aQwUj8VHYswTJ97PTp7r17d0/Rx/HQb13zcJ+wYKUWNjIN/wY7XW0464n7GM Lacuem3h8cLpT4Pz91fvQAvjAa5l940D+nSpZVydR0P16dCefoHXOixvDOQz q3Vpqat5yT6VKbN8mUGTuSVmXkQMPDSoJ/Zs3kB5vf2qhrHDJ5UNOGWvzEFv 6fn6tWT7/27vypvbOK7838NP0fLWOoQA0LgJgKYrikTZytpySqQqybq8KIiE RKxIgAuAErWR9rNvv/f6eH3NDHjAskVXYtAzfU33r1+/u8NmW6Wb7SSb7YTN dko320822w+b7ZdcQyg/TGH5MvnWeZPPvRCdDw9aPlr/MC8BPXkEhV8tn4NS ZHubUixU8EUFmNpy7b6Sx8tb2ywdFgX0cr3vk2MxR1DZATUjI9IKJmcYkZ6b 1+mwldOhNQElemxdp8dOTo9WgZfosbNmj9PZyXQh+QnbZ/nT8bpoZnY641Hl s5ONCnfQdM9NOMW0YtQ5L50PxbB6CKGEExLzJFAEKjqEu6b5iznmq9OSVqZn 6NHRSBccuo9p043IeuS9o7PRnC/sDUzK6HwCkkOqYcp3BIZ6v8fJG+Big3EA w4mJVbw3l8tJqo93q/Grs8kIHLd4ET1rT5/946eDIa785Eye2a/kWq2mZ0uK lt05rgALPXu7VBGqPTbBeokL5plC2yF6aHGCQfCUcQHbb+s2lheTY3j8QXJQ sz+BA4Ye0Ric50/mkyUYmU7VTSsQeUQxXboBDO1ig4usrok39WbIxj7HVjAH Eyf+sl1eXMjFxrwKQx9Z79kbC1mIq9JjBkkVYpHRjMGnMPItJLcMjfems4/3 3aNXc53kfxEnLlKa7agNDTxXUZv9eJtW6a/a7LM2tQGFb9sIE8+/rxL1+/Qt stQj6vCVcGSEgcxlXct4lbrObtdqW3+ipnOuVAxTw+ThF3A2Hj77zwOiniAC gyhbQ5lU5UeYqHgRtLGqxBoqqmVKXkQapeDvj0kXlqqUyrdBR4tEG3r8bUNy h7EJp4T7nUyKDMxRscLIP6gPABVLTFQiHj158kLCRvYLf8nFxmS/EXFYC5db VUCF/ogTpJKeySJzTRZ4yujHjkiqTRW2gspJNV1igsFIY0BYzeNkCjD6rYRh +xLYCsbQENe3UZX6d7Ih8a1g/zWZnfgyMWCKlZD/GlnLhHKV5gYuwdtTHvTK 7OU1FXTNowWjPe7rHp0RxvqjztTUMos4K/sLhLIvYE1l16GhXFs1+67+M04q KjxQIM3+mDCx2fjsAxz2scDqGoVawVETyaRj0h9QzL9SHh29eHkgIKsXniw6 TQAeaq8gGl2nNtHprVQjQu0+uCJLxcVilhy8eIxS/KgcAnyc06XZ19bthCF6 q1om+N3bRlr0524g/IWbKI92ANEG2ejZBHbnRTx9nmmi5A6yQ9C2rAlF5uQr toi8Gv2Ut7v3vAB5oqG5dkAvqEOZeulv62RE/+2ERuu0AK9Je6g/R/MgmDRL ZT6COD3x+GVN0M10Yrpyo/a0b4rcqs2muxGePvrx8CDd21QnH2LQ1a6qwACm uoRvnoICcmn9XXAY88sV3IanHlaKBvN+QvCfzXmSnho8n796N51fLs8+CPL8 UUGXEMuuiIdO9yQBhiHqQaKnpTNmTtMkxYjS08hAHYuMsXdKjhtttcqzpyYa NWPUUUe4ljboP3dMuL5v2DG2IL9gxdp7wjZiVh8+bFXD8BgFnepyYZ+2BadL dGgkZ0bWHWOYCjq0JcMueSt5napdK7viyWjxNAU0VnBxIdHrzvKUDPuyucMf jkYvDn585C7vWu5sVOerwBznerSVdMgK/drc7BvX9cZic8XOTDXDzP5vzU2u j1tJ/zZb17i57ViLVSWxcOv7zu2YbCWJNi35NW4ELhX2HjtQpReIHK1i3eHp UQxPhkW+DYpAAJuevVwvNgp+lgI+xj+riWKmVpe1hAhqcnuDPyWZqlFkk3kq eQj62zJU8oQ6k4fHWU1Hvsu/XcvoIwgNx1pLnUSPgtwluTy4Wi3GxzZpD2Ta WDoJHfSYFN+6x54H/swhbxUqZ7nT5Q7Tagt67TC4tgu5ZFev1T/WoS02hpAF zAI1brR3132M5l8z61Xb1Z43Qij1XRFAyjga/vtSQKqAXA9DapRMMGZh6kHv 63rGsq0VesbueIaWHNVlqOFnvrPb8eZAw/nxo0i9bFeMO73d+wrYkElmNrla EWyBublcXqILt88JmzV1dqD8lpgkyTWTIVLUehDzqqXEYAWcUoqTDSYobHwv mHzmy5lWUocGm4g9EzgaG3iYYfbbbdcfJfRVkL06joHUb0D3a5GDRk2BP+mV vcTYmG94ZLmRrrHoVsHInXxcb7rPoyTLUE//hUvsaVPbXZu2hme+Odx34PJr G8qfJb0fMythoKZQO52ygGr91fs0K6E+y/X6z0z0CZz9PFGHz2ZqWsOmsJ6C ttZisPNJvSgmTHr1cUha8cWJkL9eJmWHesMO//grwwRU94Ubsu8zwH5Nxiek 6jJeds8JRXfhyHR33sp9S5/sLpoXYJ0eZ7xgelAe5DPDHmbruXSlbDVRO41W Rj8SkLEcHWwgBy+528CZiQllUR8t/9KeVFonnef75c5ava45HvWAZ62g2f5O uRKlTUf4lzkTkp5agUfTfkgJuSdd5rgM8/E7BC6znKjn6MPn3fEjUSKn7YMa sBQ01cnI0UBGON+slDoS1Z9JheC3pqu4qj3cCUhp1afk6JGi3dX0+VoxSlm+ FQ08sk8MAq5u0uJAZFbh4Ry1joteM+IBiGIKNlSt6j6FH6HITqD94JyBFDyT P7FUU7RVVlNIYUz+/jZBq1HUQ/4p/WEvnGxQiqen9HhqW7GTQSfbAqYzdRDk kHJWBLZz3ZStsBQjPon+FCh0WbFYDhTkdxfj98mwLKsMq++zPv3IM1VG70F8 Ao4wS/FxXxwePB4d/OPxjy+fHDCOI8Yg8Texsy3yngnHkXDfHR3FGHBm7vto XRubkqptQ43YhwX5NAJFlOWYEnoWkzZ4P1B3eSujCip1jDj48eno2fOnP4+O /vm3g9GTg7+8/B7/22NZvUP8gZPH5lq5GLJcLGVRILE8mVl62rwTuvyUuc2X na50hFVEiaeTlDxwT4YAYV6GkyxRpBIJug64phssFosbvc56Ofr2nBULWKXy a+Z3caurZhsvs25B6djKeZ/K1m5hbVSOypCixONq6HBYwaj8smmddjQXTqot m/cmXiKtxk7k2im3WYo2SoTe873i2FhDZXfx0HIRUYyGyPBcQDgDjOoJ0ich G6ZVe+WspndQsuqMe86p7x+kuYdodFliVWNnaGLS2DHqGWCSFmS4jC1iQVaP /+eSLntwbMnYvbUnX8OYvL7pF8fz2Zp+Yxms5YAtt8EyhMNz1EdZY25or70z a2yrc2+NvV1rrFnopH3RlGB2RVaryG66lmlKw6u8SUoJ9rpixLSkXxWZlEpa iC4W87P5m8tJ1FiUMk3pSoGJI3pDgX7j6q29REvoMT6/OJ6fkCtqosRDOUC4 LupkRGWXzlgDJehnbdP6jYxZ17ViRe1YCTTesf3K7KvbsVvdlsEqbqkqb6Ky yj83G4e33UqATUkM6Yoxxzf+aQkbk2rP3wdyg51PZ1KmWc50V3bzcDOTKa58 6OFYWq7OV0XFacHB8bhMQeJ880oyQnM9OxneiwOZ7uhCtSneloQO5dOFQF93 dGNF5zv8T0lPntHhDPfzuFcgeCTNzq4zgn07/dUIBeZlXa2tc5gw81WBwjbf idPV2foK0ru3ranzYgQzVoNLYuXs7eWZ3yRzxMwMmIAR2VhlLVAXM9bEGXyK XFRgsp/8ffTj8wMYwUhz30Z3+ndK+G8uarJGCl2U2gJX6jFe2kXMkDbxSoJA 2JnIT56fWf4ekBL6WSv2yQQa5F9hWOOJ/lnDSqur5k1OPbK9WqeN9Ee9Ardg u0lCvTzM4cXkGHIBzy/oSJ3NtdbDdMT93J3mycX+x+eHI7jfdyaHLtcvkq8Z U67oTDt3EBdEwNETEdZxTIWokVcV9mPg4KYJLu/gNpgC1DUrmWUFOzUrb1gp bVkxk8u+Z23riXJUcDwVsHH68Eywr1XKInxqwhHIsJKyrBjQcCvodBUbfunp WYOQZRFSlqUN4kZwMP4bjinciJf6bcoGniW5m5T12zF/59i/8wzgfK6jll9j Aivcxa+nV+gP824st8Ho4jhKMH4YL8Xl6fjsNdEJTiYicb45ETJAm7enoOP1 js5f9MggtfuemKJyWeyJen3K9+b6lCRltnan6Jatd3g+3b7xzoI2hrovxE7H N1nCzGU1BevYt1xV000MW2U07kb+imkj3W90FB15mnm/ULR6UhfvleFKeGdC 11GLjt1Unkwzql785hpRPcJAKZrFFKLZzZSh2fUVoWPHIFUmyGVslNn3StI/ SshKiTCMcTQAY5wMvYipSm8h/GItdevYSZ+7lsJ17N7Y6QqhY54Y9ppK1/LK VRtdZ64yy9etRjxGyaHW3gsLM/RG/XWhZWER2GUUs32vOt2E6jSJqjtWno4d 6+QfSH3qbpwSzvpxL33jo89PvpRLflxPek0nfM0uvrmBA7/c3ZBTUgmabK3F v4ttSIBtxua7iJ0YTxybSoYVR5e+E5c0eOyZZqnUrR4gwlyMpwu8ukRdAUI5 7nBfAKSIYNQoXhnC+UeYg+D99AS0VUfv53QTiLkyZKKO8eUquETW1a8UKBmn TmRAvsrRNyxZdY1zaNyNI2xEG6G2i/pmIxO7jSYVurlh+bp3XjiHPdXFHY9a dz2U8OIQUy/P2VT8l4aw+rapScHNtD/Xi1hgDIsXhzDmmbodpOuC0Yd5hJQr ah542+c2QxYi6sQ70kCY67wdZYMeyBo6B74O8Tn8UvyDHdAkNA/j0OuqlO7B l+7uWvswzveG8r/VkyDydBDjhH9a0ERSDxGU4poIb4LX0UVgtqxYlo+nB5+B HoJGF3fNSvtm3YZz1g28sygB2Ro6CZWx7F4l8YdRSVgIJDUStghTSPB6n50+ wsB0bXWEqRnRRph35ZQRJ9OJ0UbA3zZNkqeCgJd5N90dy/fTkxJah2meT1ZJ pUOxYsF8l8/b2++4A9UCbzznFgevWEQFER3lTXUQan2tEsJZU3+ApIZIwamk FkI2tIYawi5a3XZ8S2oIwue1xH4u9bOzxQr9niOOv4+4aKgmtu7t4Twx9fb9 cWyoyI2iI8PLs127vpvrlVltA7O+f/Oilev+tSnRmY+BHdKYWvDpkwP54aeT 47dyJBN5Li/kWSwul5AJUag5E4+fHaDxVdaUL4GFqKl3eJLLNpgoZP3w6Fgk cD5Ag7lsaPTsCYZkaEN2A4zV37JjkK6aFtNqlb5HLwNrzC1O14FPnYvPvbUp VVeSgegruJjKNIt29Iifh9OdBkPR2uOZaq/Gsr3T7owTjRrbaaZAJRLKHIiO bog+4yp+nwKlQ0YT8qT7kaXFSY8vX0eaXFOQtIdQTJTzPtHl+/KkyKBUvIGk DOkX4iKkO6d5EuTJf18uV3iFm9KBSi4aCEYka6QkHt/jDdDqUjawt0xnOCSJ gRpRLOqH3E3h1lFFAVWrY+xuchJNSoktSZpTb8IkUHEa02LyerLAC7nGmHyB bj2BXMCOTIoNPIJkyJI4Uq5JGzhbc2/erPGoppqnLDaZXrlY7Yi8eO+pFXdJ XlSA1VehoZyrpCH4+9HR0Ytnf3l5dDB6+fzl4cGTmnUAM5IntAhSF83MQ/x3 br2I2Cxc/ja8pg6eHl+eu8y9wzJP9xLSMJNc3QvkOKlxpRxVpu5So6pDjbA3 Gk3R1ieUe0dTcCgFMYjmJI4fSG562YIKMPjo+aO+mOXvMdNc3Y/UiV4JZOZL 12Xb9e/zxVuQOOTnG/C9X0xXEzNlD40+dCkO/+PZ34wTCsj0j39+fnTw/OiQ ttoKnYSh9jJ6YY/W6ixPL1+/PpugOInFI/mJQxi6Ruf5bDWZrZb6TQJZ4V2K q3kKnBrIFxBHqfld65JrdQyHNHyhx2B4oBUcI/qpt6YNXGgXa80yWNPDEd56 o9NfDDz0woJBMO20B7u6+7Hwz/nkHHXfkhOo8W/RBc2dnVpvb/XTJlz2hkNW w+Wb2xvoGoN0B8jT38Bquctl5EH3iNOimt4Rpso2k/hcJZWVtAxQnWJa+nC6 NHsSt4QsyQ8153gR9iDynMXoyDpSrL7KkYx+DCa9OMiJPnZTaleXFBRkQk4o XMNNm6McXYdmB3tY7U/Fgjx+qUyvpKjWZh/IT2127Hpkn/u8xHY6ME1ya4VK I8x+Ri4SUS0N8VqhU0dKneI508gft2WrWZEDrZpbBkzJeuLsUE0DQnkTVMtp LJ6tQY26RPP823XjlWT6/siBwTSPbIsp/jS5k0K2jW0lx9Zx9xsp2EMF/Ncd 7aMbTfOz2cnkaghD+0Z2tXO8tX/zf7ZePD7EULKh+Ob43fKb5eIY/286qb3b kgNeTCfkEyt/0FmmudNu9bdOwNRUvxT1C1Ff4CNBI6vX63acWbMnnk5eiVaj 0RPN/rCxO+x2RL0h/8monWq1yos3xE/jhSreHDbbw9YuFd/6859Fvd9utWqy ySr+0WoK+dAsPWmkQHgcHZ/BNcDb4DGyEgfy3bPZaktsadZjy6lE16CcgS4r hEqau69tCSigWp8sZrKJQ9nEQ9mOemch9vACQRbWeAGmA1CmVbYk/fNhCRFE F5hivm75Jmts2fMudai57+AtqQ/lkCQWV6TvlLRFKbnY9QZUzkyLLxERPOl8 RJAC970HUypYn+AiFDmk69/hnGdZNXI2b9XxOR8ghUZgBjvJkDhjRfKtY4yY NuNrVGb8dPDi+4PKljBeJqBCODxCBYIcmeoDvgJvOjk8OhrJakfPfn7O6sR0 Eb4yQnVEkGwParuAyE5H/nqATGFLmByK9tvEvpwjrHw+WbyZnCQWwSIpK6Nw qcEEq4R0eSigSc/0xTewuI4mCTQZiEU5v/IUEplvBjw+BTp/omIDlR0bRPH5 5UIS/+mbqcQ7M16q2et2aq02TF93UGsNbjR/9X0H/9Ey1X2RQqiIwVM184lg p+i308unJGHJoStFZCWHqkSJiiYCai3zaYlLNHIJxe1QCKuMdLbVg8S2qjMd RM6AuNxtSBE+WHsTrbOLEkPi+0d/uwMNgnu/V8Pja7Bba7rHV1QJpdBu3SGE SV8szA147iQe/DB6+uLRTwdDuwHspEBHk1N1N1uZJVSpkmm+I71ZJ59hfpmh p7gtUMHljUU418u6X+ntWpdvgq22Ed6JOkryT61Gx+ef5CNhR8h4KHqStbqW j2oMhq32sN0wfBS0x/goVcXnpTpDyaNZXqrX6/cBi/jbByhyFJLryMi4ZRB3 BaK4FEOUsSaFwMOjR385HJYA6C2ASkSsAVF8KD0hfPlup9mBL5e/vVpzV3+6 IsRa6bvNPI9ew9kFBbaEe22w0soLtEcJHo9c9Fme8e1BCVWA1UjL7WDlhErF v8yY+W96l7bl7M51BnTdsQh7y6XA/oTtT7bpcnPKNEVs1qDbQLQOuq1mrYlw dfl+3xJt3Mr4waCXCwhz1ZXmJKF/fTlTgh4JDpQaCFwMAgey7YeycEUR6Ro7 aGtesZR7W4FzG0p9/DapX36Vhy+O7V8mTyWg4quaKHOh1qeaWxWUW8VVUQXm V1WKsOLaWmPmN4CHT3F10hJA5U9I9CW3+YQKisvZbDIBXzE0L1H2utU85kO2 Jcw9aEvtISmZ0g+6xJ+WqHkW78dLzcCSgsHcYGmuQxurqwfdOwTJ6U2Mwc1O civzBegq5nIQi5rCbatNuO0oKut/NVPz8U213CJVBPEASNQcPdzx/HJG5xwH 3GLi+oFYYOKk/qLd3tiUV8Q3IvL4l8avlV9D9d/s8pzWBx2yDHcHH1H/brUY n0yhO0ks4WbN8UpT348fxYPpEr/7dAx+cJjLRlWDJxW9zdv9WrMF89Xr1lq7 606YyT8Bk2bJyZN/Pn/007PHFWVrF5nNvi6I3ZQs4GmZDLGaeYLssHV2mSB+ iEIEfJvkF/Grt2WzygZsNHmn/Eov+MdMqhM/glQxaNgqJ9cfsHaLYGMSLCRj csrcBYDhxS+IuYtCSd9bVK5gPePftm59dXLwJiiTrK87XgvDzNmFex3Rdpj+ WjyFvL3przt4ZbMbmGHaMgsNnw4zqt/weTXEPzE3tk5shjI2cH45a3wkWKNa NfhyYzrEljFhj1+VwRKU+8rTDEBV/d20g7sdIniDXm3N/Rs0vM9QKudzcmqe VOkJ2zkwt6rcq4nc+9Dlq/HxW8ik43RtPHpdMoCD77WbOPjebqcmGey1Rs9y I9MxviO3LdyOIHCuq16SkZuhObXaFuNsDB5W8OgAp0KDNM184JHCvLqw4AN2 Y4TfrDnDkXnGBChGUKDdo/pwE/wIHE+N/u29IYr3djK5gAvG54sPlb3gi8Q+ H0f4nmyikSLWl5y+wMts7beBfl0wBw8JU8v6d/IQhE9cjuA2bEjbtFAXnWU2 95FHMohVjM4H8/hIs7Ju2a89T0qhDn0eE5f8UGgJNlKg7tDjqigwYA0OY5sl J4Jw7Y/H9m/+Hnzgbuzth7nFzeypbyfFQAV2MP92V9ivn15cjHdONyDtq56S 4n6/6Uv7/aZgI2TSvnoE4v4jSdSk7N4Vjdaw3Ro2Bkbcl+0xaV9XCU0nzQET 95vt3RboqfHXiPtQ13g12zPIIW9a13tk/FpRr6lSxSl2OUO9GCSq0TpPMNcu 4I/ZydWeLqBuvFSFFJf+iy4m+c165hkUktpgh/p+OJfgUO2jFUSBcv2mSNun SFK0XcGU3xSQQznz8Ib7GUZefdBuc3971OuIkw/yGJ0eQ4FTzXAhL1cjT543 4GanYnQ8DJ83G3JBN6KzMn2lzX6NwOrXEM4oOZL1w6wjcfmBoNzsDrvtYaNv LYANB8qmTsQO2GBgbu+2Acvwg1A+n2FFS0MdNNvlNaaLYqzeJU7vAqMMn8Bu MKcB+OYQVu0NwqqdC6vdlg+r3ZZwRunBCh9mUji0GtH+sNM36s0M2/Rw1U7h qsWJJGgEgUjCr0FW+x5ZaWTBtLVaA7SBtuRMRadtfBUNZTubcvlTkdmyxleh JDrdwnL8juJyiPmbejbuui724fzd+CxvPpTpwaP9Uzut6zRjrHtmVhMNC7fh avgFusTUsxo7X66L+aaPdqs+XpxvZMfrrpIbvtf1N3yvK/gY2X7Xz/K3u2yR bXdTJ9ztbX6KdNrtLnqT0B/aENBujWT1FFek8A82OZOVBZbhI1xRuny7p198 oj/OabuTDwc8MLb+OpVLGYzDzX2OcNEWXlW97rp88B7Edpm2HWwqAAadaeco 3ltFfao1rJ/nWNbPo6Z1qE9mVDla+uNr8X/idP5+JWXAk+VqBHNaER/ldqJu vg5eqma4w5sx4tSodcd31QnwotqfzKYROjcokYtbosM3psRCXOOUh23wbrGx LQ9dpS2eocGzI/gYvS0Pz7I2272ScewMW21r8uz4Ox6rRHZ8k/uPDRroqzNo GBEIdvu7RYEMdLPTXfxejnf8AlT57RuVxHIFCcVHEIXA3RTUjuFbTbYnpRqI dJdH+OmIUhBoZwmlNg0Q+ur1dLYpiFJfSYwGENUIVWN0IUoP848lH6OqTgSk bc6E7rabyITCrzIZTWfJ84it7714o2f6eNHsHW8KV6qztIATyDfCHaWLLPU0 lJubLSvfeMjSdQqgtdtEPh1+GP3DyrkU8B5YdqKny83hCvpaW262o/RxBQ/X kZttpQiuugxXgz7qFuEHcQW1CkVmuR5f0rkKI6Wjdbv4bCXZYr3TNXa8Hi+u NofWq+vRwKsIUq/Wpn9XxSjtd3eR+5M/DvW7ulPu749E/U6ajXebwhP1tbYy 2o7SxRQ9zPriiVwjAlVz2OgO272EMtrWicCqx9UIfWDTqvAzsLCCuvm4UnSB 6RD24eIYSFCEArt6yInA+9PJQkqzKAIznZGrZPCavKaCIWjJ866v+v2sr21I aRoCLYPT0/UUDdq2vJwsSs0um4ekQu31ot3Y1G6gvq6zG9Qo3d1AD7NWQ/z1 cqa2Q18S2GEjZzuoSgXbodtFXgB+kMpCrXte4LeUsV8v3m0Opnk0uxMofjtd wcfog/Rdked7pxtgNEGxuS28tTtAjOIvYwVk5QKUlgfp3NDke6yugdXT/qYM k7azNF6DMNdOX7jjdBGrnkZYV6u57PQ9yOpKIWg7Lcda0QXMwg+D7Gm/hPvG PfdKEw2OMpuCFvaVRFaz0/ahJR8JZ5wetPBhvvQOrXrYoloRaHG1UBuCKsCf An45uAq9g/J9gyQvpeNw0EEfXL4+U3+h8V05DI3LonPa3t0Y4aO+kujsBg5r 3aZwRulikx5mrY74+XhlhCsI97dkr9v0oKkqFUCz2WyhyhJ/EZpQL8FPhm5r RfDRMFOH3Fffcvh+9xWGB9wAYeIuyJ5w6B6TwAJ/ARd1EcT1e5tDHPSVpofd QEEkHwlnnD7m4GHWsuiR5LDbG3atnyQ06mMOK0UwxyWYFrlIVvFXi/QjqFsC c+RXfy+YlxTMrd/L++nq+FRsK/M+ZaMLIdvvbY5IYl9pkTtAbNsAlkbpARYf RljDrpW4A7xSnQK8NhsDVGziLzu+oXbh8X0vc9+JHHPebm3M9YL6SqveB4Hu fSCcUbpApYcFdqKBh1RVKYJUHnPe6pKhCH/JUVDWK3ea67NMsCCDB5fLyYiS 5/j//MuQyVt15Llucw5CY/KLbTx5nocfmQg+jBDO817/7cbwiH2lwyF6QThE Tzij9PCID/PxKNv08EiVInh0giK6fRSq8dcERUDdu9VW/pGk6vPj+WKyMWhR Z2mNTejEo7149Dg9cNHTrC/+enmm4m0aw1Zv2LHHcsf349GVQnR1Xf/SAWls lOSC1fKInfiiTuWbiC7ny4vO5owvure0+BJqc7Qyx4zUw516nDXF4eTCyMyt Xc4PNn11jq1VgLweMoTww/hBqp0Hvi+Dqq3PDt4GQ7jaGFpX13FyxPF5GF3R sWst5rvDzq7RSkccHLFGATbb5IPW1j5o56soSfxyiOBvIJ3MLyazxXS5MQ9J 21/aQzwgoS1NQtloXYDaF5KMmvMbMNcbtqweqOWTUV6vAKwdCjTsqEBDXbNI ZLknpHeE3IuLjYEWu0of+YPA/VI+EnyULljxmaOvHAw7TkwDNOkClepEMNpx HC76HfK4kL+IUlmtjEz9+joqcrPO+lF8SRUEIZvFTZXon4OQs2wPNsZtUl9r ZxOwo3RxRw8LxGffOKMqRZDnKsrbPYr7bPdYCkFZ9158Lo2s043h6jRXgumG Iox2zsExeqg6LTRGt33fHKwTgdTAkVyaSnRpKtlFHg1laNlJEMOn0goqg8LF eLGayjWU1OpsfDyx8cP17NZVhDeO9ovG+xVoB2Nfn0yRTVMtd+0Aprq9S2au 8lMdDodftsBOhNzAy2IjGYS53iBCtv77d1lNxLVSy6Xm13xuI8JPvet3N3aw UV/psPDgYOvpg02N0iVB9DBXc9fzzzVVJ0yN2+Bcf7PXILUw/CIRgnolnQ7u zzWa6fHGIk+wq7SdNjjYzLlGY/RQBc/yT7bgYKM6EVA1ndwieEFAFX8NsySr lmHT70GFE3113OxtDFaqszTLFDBMwh2lCyz1NGsyaEmMtHvDVtMyTR6yTKUQ Wy3Hga9H/ns9ru/FyvdxneWQtVzNF+cfmhtziGIdpklXoK1ta3UtH6+HM/sm VyvW9pW3TsV8vO0OkJTBD+LNVM21bgnxpSh1ywBOsm3Ljbkj697SzFegzepp ZZYZqYcz9bggM4+v0jLVIhDjVz21mj3kwfDXHJdU+y6dmv4wGOt16uOzi9PN QMx2luPyPghd3tERiY2UQcw+LXJ6d3yRWLUQYU3OkHUa3T6qGuBXI6zXGWH1 omPzFtAlslD21cmQ1gDauYe0tZrgIPNyPyWSXaKT/+qiDq2upu94GnwxfjOe wsUJ0E2jZlJdqmqnkNl18YEutHWSwu0I8XS+OKYL72n8q3kI5/Pz6dWm0Ex9 pc2ogfNnZ1c4o3SRTA+B9zNpXSH34GDYZW4mux6OdaUQxm7Owl6f5IqegjHU u4+4vI6ViqtY6NYllXsrMFSF6NyUZUp3lWNJDZNtEd9oRumCU1mZuFzSGnbl //rMhNrxwBk3TUls8kN80Otjwi381aYpSWKLNSkbM02pJijVJGSalMOLXxn4 2TsSzC8gCyTeybsPSYVH8IDy1duPxRvSbcEHNhk+qcMDXG/M9GX6Wtv0ZUfp Ant905etFEG2E0LcbvRVytP+venreuzp8rTX2RiysK+0+BP4JPd6whmlhyx8 WCD69HxkUaXIvWyOnhBuDEKf5FabW8AkXSoT8fbHt4Cxtj/ug41LEem55B4X YOY6+nl0+EN39OzwUbulrvy5jn2s2e1A+JdciE6b28fKLITvqn8TM5n7jyMx xDu5XaNZ4kO+dNuZ3M9X/V59cxRM95YWsJuhRrqpz0czVpeO6ccFInbTPyRN vQgx4+G7rQYxgPjLZGxZf5S/j25Jxv59H5JXV/XpeEMQM32lAbYb5MOQj4Qz TgYv87AAXLtOQgxbK4SWk8u306Q0qfirofX8+Qhq5/Ngt5d9gKtwqPjnqsbJ 9J3pOsl+7N707DoXp187gX8A9fPpxXJTUKe+cuLRQ2VldyCccbpQp4cFUO8O PKirWhGo95zrThq7dN8J/oKKR9ZDVEg4HF+eAdIZdbJ3Rzt3Iuat+zprTjfA 17MSsexjn5qyy7JLV1e3QEcaYTFE9X2VtcF5eo3r3rNPITKXknc+3hQ0VWc5 nseh47Fwx+lCUz0twKYPTV0rgk1HEO50UVzB37650Rxr5+t57gXhk2+0AvzO oWU6SsJqEKQQHDSEHZ+GlHkCidmsdbk7bMv/7Ro4DWzyQFsjhFLHCbbodWuS Ya3ibxug9PjnJwdwWfj3Px08P9oSO/J/UmB9KI7gXJm/FvqgwUWA+2bJmPDw ExZ0Lq51zqRhW4Jm599OJq/hhmP3dHr+8/MDWrBGsgzecI5lmskySFyxTCtZ Rl+FLkQ7WeavLyVRPvznT4eis1UtHDNcMFo4aDnqauGo5bCrhcOW404Vsred 5wwcC1F33WQhOwOix0DwfD7738liDmcbXcOm6MvlcrIULw5+fMRvaJb7cYz6 gdXpeAZvEzBRCQXGo4thc2/r/wF6XOID7VYBAA== --qDbXVdCdHGoSgWSk--