[{"data":1,"prerenderedAt":82},["ShallowReactive",2],{"rendered-post-aab372f6":3},{"abbrlink":4,"title":5,"date":6,"categories":7,"tags":9,"excerpt":11,"htmlChunkEnds":12,"toc":20,"htmlGzip":81},"aab372f6","CUDA编程: CUDA内存管理（一）","2024-01-09",[8],"CUDA 编程",[10],"CUDA","摘要 各种内存的对齐访问以及实验，避免带宽浪费。还对比了 AoS 与 SoA 结构体在 GPU 上的性能表现。",[13,14,15,16,17,18,19],19704,35478,47649,60009,75886,87910,88120,[21,25,28,32,35,38,41,44,47,50,54,57,60,63,66,69,72,75,78],{"id":22,"text":23,"html":23,"level":24},"post-heading-摘要","摘要",2,{"id":26,"text":27,"html":27,"level":24},"post-heading-内存管理","内存管理",{"id":29,"text":30,"html":30,"level":31},"post-heading-固定内存","固定内存",3,{"id":33,"text":34,"html":34,"level":31},"post-heading-零拷贝内存","零拷贝内存",{"id":36,"text":37,"html":37,"level":31},"post-heading-统一虚拟寻址","统一虚拟寻址",{"id":39,"text":40,"html":40,"level":31},"post-heading-统一内存寻址","统一内存寻址",{"id":42,"text":43,"html":43,"level":24},"post-heading-内存访问模式","内存访问模式",{"id":45,"text":46,"html":46,"level":31},"post-heading-对齐与合并访问","对齐与合并访问",{"id":48,"text":49,"html":49,"level":31},"post-heading-全局内存读取","全局内存读取",{"id":51,"text":52,"html":52,"level":53},"post-heading-缓存加载","缓存加载",4,{"id":55,"text":56,"html":56,"level":53},"post-heading-没有缓存的加载","没有缓存的加载",{"id":58,"text":59,"html":59,"level":53},"post-heading-非对齐读取示例","非对齐读取示例",{"id":61,"text":62,"html":62,"level":53},"post-heading-只读缓存","只读缓存",{"id":64,"text":65,"html":65,"level":31},"post-heading-全局内存写入","全局内存写入",{"id":67,"text":68,"html":68,"level":53},"post-heading-非对齐写入示例","非对齐写入示例",{"id":70,"text":71,"html":71,"level":31},"post-heading-结构体数组与数组结构体-soa-和-aos","结构体数组与数组结构体（SoA 和 AoS）",{"id":73,"text":74,"html":74,"level":31},"post-heading-性能优化","性能优化",{"id":76,"text":77,"html":77,"level":53},"post-heading-展开循环","展开循环",{"id":79,"text":80,"html":80,"level":53},"post-heading-增大并行性","增大并行性","H4sIAAAAAAAAA+19e1MbSZbv3+tPkaEJNmxsHhIvuW24AbhnZmPbvR3r6bkb0beDkJEMWgtJKwlsdqIjZMxDgATYBvOSDdgY035IeGywnvBdpiurpL\u002F8FW6czKqsLL0oYfNoTzmiaamUj5Mns05mnsfvXO23IKe93eT1+AN1\u002FQ6b3enuqxMfLOW27pk66P+vNvRbOs5d9XbguVHpZQSPj+G3S9LKKI4n89m5XOwgvxgT0i\u002Fw7BSOPc2\u002FCn\u002FKhPP3DvBYBCe2cCwr7r7KfUj+FhzJHSzheFKMzwupcdTpuYGExAy64elEUvqR+HRUyD7C0W30px9+REJiSloZFYMvc\u002FezuY1taWbnt+DI1QZvx7mrpciVKYptSHPjpg7+m0x6f1OJSqspHFuhhU0d\u002FLerDf1NdLyh8fxYRFoZFRJpMZqiv+bTS7nYprgUx7NxKLCxK62MfsqEvLY+h+2my\u002FEpM\u002FkpExYfRYRsVHqfltJrQmZFbim9LG1P49SskAgKiVd4P4Q3X0oro7nlFXF6jTb\u002FKRMWsuPAyOUxaWVUmvxVmhunP0E7O7Ok1goUS6SE1Hgu9ittU3z7HCcSuYO53Ea4gAAcT2raSb\u002FIb+wKiRSOLAjZiJQeldITnzJhvDMuLuyIkRh+u4RHtnFoR0hE8FxYWhkl5d9+yoRzB8tCajW\u002FsSsuxYVEJHfwVEq\u002FJQwIUzLw7Cs8GxfSL6ToNA7t8EPD0R38JAiNBLXkzcZz97P5lVlxcU9c\u002FSBGnlEyYIlFtzWUJ95SYiiXYBKi20L2QJqn60Zc3INxbI2IT6NCeoZOm5BZz+0\u002FAlpi+3hzQl5bi3s4uAwrdWM39+w1dDufFFLjUD2eFFIztBYlJBcM57aD4lI8N\u002FEBP8jS4YqTQVj00W1aUkhO48nIp0y4+8drnSj\u002F6zs8tS1kVvLz93BsJb+xm3\u002FyDCqFHueCY9LqB3HmBV0TdOEVrDE6GfSJPCWbERzaw6EdfqEKiSkoOR4R0jOa5xzt\u002FLgpb4TENF7dxx+3cvtJcTIobabom+XtuOoc6EN+X2+7qcE5YOtzNMBYar5tq+nqrrncCh86rTXWrjr6uKXG2lpjbYEPnddqLlvJ79\u002FWdJrhw+VG+PXbP0JVq7Xm2+aaLmuNtVF5crnBXH\u002FHcdNrQjZXoN1k6lBIINyjiximiKwkOsHwITEthieE9GYxAwu4J2RWhOyBPPNECuVfL7E3hzBhCpgw+76ACXbnEOp12fz+dlOvx+6ou+ny9N42IbstYKtTH3QUlQt4PK6bNp+p46rfa3NrfnLZ3H2Dtj6HqaP34sWrDfB7x9Wbg4GAx40Cw15Hu4l+MWlq9Xq8w6xf7zDpHNl8Tludy3bT4Wo30RUhpJ9L6\u002FdMKOAMuBwFDzuu+of60JDTcafLc7fd1IgakaUZWZpN6I7THuhvN5lbTajf4ezrD9DPpPl+p93ucLebAr5Bhwnd8vQO+kGstZtu2Vx+eOJ0udpNbo\u002FbYUL+gM9z29Fu6h30+RzuQLfH5fEpT+uUTuqt7JHL6Xb02rztJp9n0G3XPP5vj9OtPO+46nP0BtDddpPVhIbJX6WxJo7iJhPy3W03WUwNHVe9tkA\u002FsrebrptbkfWvLTYLsiAYcGOdpc7yZ813ZBm6rH5HFmTpb4ImGvxDfR1XG+hkdFxtsDuHiucZuOn1+AKm4p9gFHXuwYGbDp+\u002FFC\u002Fp0ugwK0uAduD1OZRW+l3\u002F7TehgO2m0213wISZNBNOZxXE594YnkjhWBantuhLIm6\u002FwnMPxPQKnto2dVwFcrQLEZquuzXo7g04PW5TR09Pv8cf6OlBvYN227c+n8fXE0DFFciiMnVAoes2l8vT+2ePPyCTX6K41+azDfhNHedLNTXsdZg6hjxOu1y\u002FthZ5A75LZYv6nf\u002Fr6GGdwTd0Qf52jnGQDrTB63Mo7CR\u002Fz10ddHWcu+pyyqzwBnxy2W+QGJ7IPwyBKA5P4LkHua17bJdnBxvYFLOxqw0uJ98K0MCaKa6HN1\u002FinVm5UgMhQDlB4LkZtdjBWH4jLYu0xHT+yTP46UFWSG\u002FmJ6bE+X1DDhlyyJBD5eTQH30Ox5eUQiCEqhEs3g4x9EBIv4Ej9Zs3QmJSer1OT6XS2q\u002F5pV1pNYGn1imLhGxUOIiJ80l6qBTj8\u002FwhDT8M0+uDKnbkY1tImoHjuJBcwzvv4IxL6lJuqrJYJhI\u002FDBf+QvlDf53IwjFwMogzwdy+fA6Xfk3lFz+U6JCII3EpXqYraTIkRt8Y8smQTycqn8hfi+Zbk+Zbs+Zbi+Zbq+Zbm+abVfPtsuabuVH7VUuNWUuOWUuPWUuQWUuRWUuSWUuTWUuUWUuVRUuVpYBHWqosWqosWqosWqosWqosWqosWqosWqqatFQ1aalqKpg6LVVNWqqatFQ1aalq0lLVpKWqSUtVs5aqZi1VzVqqmgtWlJaqZi1VzVqqmrVUNWupatZS1aKlqkVLVYuWqhYtVS0FC11LVYuWqhYtVS1aqlq0VLVqqWrVUtWqpapVS1WrlqrWgvdPS1WrlqpWLVWtWqratFS1aalq01LVpqWqTUtVm5aqtgKxoKWqTUtVm5Yqq5Yqq5Yqq5Yqq5Yqq5Yqq5YqK6PqxI9kA46AzdTxh+IfbjuG73h8dlOH093rGrQ7eII1Bf0Bn9PdZ+r4V1fgCpwc6vv\u002FtS9whQ2I\u002FO\u002FcSXTc4xt0B5wDjlMhwB+wOz06e2Yd+AO+wd4KJ1pyZqFPekwd120Bn\u002FOuUvpv5xAqe9B1ulmrd67oLNhfseAtl8fGitYOXTn3y5VzJYbGn\u002FDtjiFnr6OnR1+bZQ\u002F\u002FfY7AX22uwfLTwM79lEGotrO8coEbr89zR1e5Xo\u002FrAiOS\u002Fr8M79m8+hyBQZ9bqdRZB6ti6Cef5w6qlb\u002FdQReh4Z+vnPvls9nI3WrKc9F\u002F+lwsX06zEIZKcrsSE1E7GtLByD6X56bN9bmMpOzptNur4qTysUv92F1ynOSfPr6jdhTo9zls9n+z360fRhcRuXnRL7X0yzXnQP3wlWra7fW4NO3e5du9y7d7t1K7NwedrkCP01208M53X6JrpsyCUCsWvPfnO9WKF9DFqqp2cVUvHLpSdHCp7OoYsDndhy+M0jOvR5ij9hLF6JXKxC5OCDYk+K9SWaXwFb199x9X3+w1Qe1IfmdqL1Sa3gFZN0Ent9L+6vxfh+eWUpA2DQuA77XrVHrtPtFeqbiECeznH8BqoscD1FVYoquwRHdhie7CEjrWkLtrOODwQxVUi\u002FpRbaVNVDsgPVuHZrRDwGF9p5kqJoAO4ALPoxPoqPukOiozj2xObnl8Sh9lKeGm21lRZCjXqSvISaQGXRRX0MWLzgtI3QyVnd\u002F5c2UBVN+okSrcBB1W1VKiare+qo0FVX85pxVpPfZLqLaL\u002FO3usV85V4bB6uTwulc6QWUZzR9Xamsv\u002FKttwHuFdHhEKXGMZHWdTbK6P4OsiiJP+zZ29th7hkouI5cz4PDZXKaO73\u002F87jtdG7K25a5ja7m7ypZPYGH3DFUxWbJYO5GlfTYJ6z4yYfoocwz0eofZ4Zx2Jsvq6nu9hNQ2wYr1F881cu3VyyYNMfKUdJ0JYuRp6D4GYqoVQT0B1K5MUdVShlTuqr5yN6vcrVQuOKUR2gpPVF3qQ\u002FX0000fHm19XkIlNRqVhf2XXpeXUNcpE0H2vO4vTkSpOe0JlJxV5XHBvCqPy4xJvZ\u002FbnQNN5W\u002FgRD9xg3js+A+5hpc\u002F1jHTVSk+FRVSrvOHbLN6R9Dnc9r1DeD8HUU7A+Xr76I6HTf0C6iBr3MJne\u002FXtDJ8hFaGS7KAqcpUpQD5owzwktoCgqUA\u002F5EP9HUlr0t3j13nMqfL8cawu7ff53Gr\u002FDtftn4Zfa2OG8u5X85VdBUp61DBeWicnFOF16vMjuFUYThVeA2nCsOpwms4VRhOFZqvhlOF4VRhOFUYThWGU4XhVGE4VRhOFYZTxdfhVHGJvB+13dXYG7g4myqtNMds5TsyYUfQup4MYUfQxP5TOnUc98JVzDMad4jjXpSn0Wl3yU4Nxw\u002FDe8Pw3jC8NwzvjTNCmOG9cSaIMbw3DO8NdV0a3huG94bhvfH1e28QjB5q3HH7h\u002F3IPeT1eW6hv\u002F1S71HgNfYXCUreppB4RR05AFqO4K7J2BqLe\u002FnFDyfg3fHffmXyDOcOw7nDe7LOHSduWe31DAw43AFTR0MDUk\u002FYSPGlIlSdO9To9xfngCJf0PmaCyUPQ9oKnoDNpdekqGnd7dfRfLdnUNWdHFq6c6ivuuavO+xVVmD6dr0VbHerq3AjYL\u002FmGNLWKXMq1dT7D6\u002FDZ4NtmHGLnDnq5H+IfdI+QCVKVP5UqrG6uroyexHbXxvVgCDE\u002FytfpdXKfJYOLcqVq2QIaGqtt\u002FBNli97+bKlvkVLb4XCrY06CTW3NLUWcKGCEq65qb6Zlf6puOAQSJCbsAg8bn\u002FA5g7AG\u002FPjtU6lzgA51R66dP4c8FyTq\u002FxcylZVWrTAYdkQL4Z4+d2Kl6bG5i8rXhpbGuvb9IuXRt3ihblFHipempqbdYsXc8spiJeK1wseJZu\u002FalTA8ZNWE+WBAAFkcHUdj+3xIIMEQTwpBl8STGQV7S\u002F\u002FeklIjQMMeWqV3k7I5eN\u002FBj0Bh+y6PgXQpDJa+dsS1CmU7Ywz+PZykNtwKXqcFN8v4AigpkrJe9LcnJCYxx\u002F\u002FLqVncwcT4uKejL0d3c4dLOcnwnj2lZCNirvTufgCPE+ncrEYZROPuyjOzuHQjrQyWkjddZvb1gcSiWMftDM3I6XfCpmVXHxLSo8L6WkpHcnFX9AClBMNGlaUgo7Pr+6J0x9zH54o6PEFD1QAeRnPXso8lranKYK6jFQ9u5SfmMUPw5RD9KuQnM4vfhASwVzoDYCr389SoGtpNSGkHlKgfYp8XqGR\u002FP0sXVq0fAFpvwVH\u002FvTDj1LqAKaWrkDShYziT5rNTxDId21FYF72kRidpDjceGJdehkR74\u002Fh8V2AbV9PUBZS4G1pfruIJV4OlhdnH8kkyzjmkdzee3FxT4XcpQkE5GEqA6T8gdW0tI8zszzYuVqTwuKLs3P510s\u002FdP+bg\u002F4uzUwUQvNmH5WkVFzcA3DfubD49oVM5EN50mjntBibDTnVAX3dXj8VUpO\u002FBUcK21yK828lWQURlj\u002Fgt+AID3FOGUknB4dWcTpVkpdGsIihTzAQgrVaVygEu2YnZ3ArUbpqoHJosxqo8vJlB91+Z5\u002FbUckXstCLAt1y2fr8R0E\u002FJzkdKAI6d5YgGOh47gHeGc89e12IYk5ydMgboSJS1XYOw0B\u002FsgifZST0Mm2Q4bBGQOylZsSZl5Degki+3AakNoH9ZjaeD07SjBXa\u002FUNtTDPj1xy3bIMudZw0VQu0VBEkGTbciQ9kYyXnC5KUBHZAUl2W7O\u002FS+Om0DOeuCPGyQ9RQ9YPHFwC5xMji81aomyvds5+9FieDYnQSkUQYQmIKcl48npAPiLr6u27zetnJR+mtxG6+IydVoQXEpXW8M8of2ehSoGDRUJ4Hruc3KqIDp0tKPv0lpgq6gxw3pFmKvo\u002FkRUm1\u002Fer5VS4zCSefkqcXY+czdr5\u002Flp2vqg3vT44AfZl+8DjdAYfipVeV3bSUFwqS39FLuorLG6XevY9sBEVGR\u002F1ZPTTi4xukucJUlD+FmT20uyOeCwuJqeJfCmtp9zHx7SbeHKVCUsrGGtXLJrlj4pk1vLquuYIcJsf\u002Fr88ZcHR7Bm463bw414ptyOI1viylR\u002FFc6FMmROqADpNUAqWFxzdMM5LJF4rotrg2J6RW6S4Hm3c2JiSmxNUP+OA1ju7kgyu5gwkENydEr06QK4XcppQr2zIee8H4SpO08TsTPzrlssU2hgLlxMmlPDHEuiHWz4JY\u002Fz2mPGF5iqg+MBfbkGKLQmoczz0gWqsl8f0Cy3EipMYrKTL5kzh3VaNYGNqUJIZYMMTCV+03QXs3QDH4rwYoBv\u002FVAMXgvxqgGPzXLwKKQb8WSCstVVYtVZcZVWceUKPEceiEgS0OoaA8ssWJxNt3+ny24RuDA0fXFvBhArW2sjd\u002FTbGb+or5HP4jx3I729W4+lo1qv4iF3tP\u002FYl9Dv9Pzp\u002FbbT85f7548yfn4ZgROjovy259Aew6erD5+nrLMrG338aCNGtrbb6+0qAPethod5SOHit2pdbj231D0VHJtc7bHUOHBcDw8cXfuhwD7eWJUaSj4qZevqTlMLrLxDaX6PxzIppryYiqjADq916q7erp91YTvdPZYye14G93j12uC22dADj+ifRSsZpjwO9gQdKEg4cvoktHbL6rcvOWoua\u002FZAChRnyqIZde\u002FYP5zM66TrKzbk1nRwsn814i64G2cunLRol5L3XpbftLREsdZWNRnfnYle0YwqAOp4wIQup2VX+3iILqI7X7B0jAPvlfd0\u002F\u002FQJXCkta209r2gYpzpF0Ehb4H1b6rQLG8YFAJm67Opfh5VHSdCSq6dVKhH7FCF2BFhfMFB1cBxwu6eSPnxYsasIqe\u002FgE4UFZ410rhVBxaq2RukkNrlUlLomfmyhgUdUWvc3vPwKXyWz9f4wJd+4dzv4rF9yWG0FXFELrO5hC6qxhCt\u002F4hkDEQG8aQwx3oCSB\u002FwOYLXEL+gKfs4VQ7QFKx2+ewBdiNgBBMGtLJpPJteLzVNPGfjl6PT+HDeXkouqdSuUcrVw\u002F4D3Y+OTZWCYtVomK9JCzWS+JiP4tKj\u002FcLrjfSQ4nI24qsLLGDOlw2r99hh\u002FgUPdJUP23fqg1r5prr8BK\u002FCnWM2+tzugMVbm1MVwPe4Fe0Bq1vUM0tNOD\u002Ff276o3KyRzwDKm9Sp70OB8g6HCDrcOD3tA6\u002F7iXGDjo6V5j+4V1zgHlvWLO8qpmVovqMA4e2ccvnUNEme\u002Fr1cI6v0qWvSglzOfSmd3EXVu06etXu6qryd9IjVOs6WrUq9p8CIo8ytq6jVZOF03HAPxwS\u002FgkhTBMpIZFSlPKFG0DFk3dLYxtTNKIB\u002F7mCV7vSDcHSYm2+3MrV1R1IVuz3hsfHWHCOOPkytxGmzhVCZgX8tDdf5pcjQnaGRo+BN9nYHgWwUJ0xluLgNUbqalpb3ANbzsEyBALRlh8ncWZWSETywRE8F5K20uLCc\u002FHpnvh0FNrfGhFDD4T0G5yEWB\u002FwtF4Z5d3NxGBaSh0oHiAyDdL0G3FpH11E3T\u002F8iFhbuWA4\u002F+QpTiRoTxBn9f2Q0+60ofzquBiaowWZ2x\u002F4URPHZXDyTq7hnXcwqLF3Quq1NPmrNDeuurORitTzpFTol5ReA3fx5RVxeg3H0\u002FhJ0NRR\u002FIwFgBX\u002F9CkT+vGvnZ8yk+JSXKEZot6IT03ufhZPrSJLfSMSktPgP8gcF+fjYvieHM4Xm6JtUX4zx2nZL1CJVpLjlJ69Zq7dGmo4d38amEb5ATGBiVdymQIPcOKJj1f3xcmgtJmiTPJ2XHUO9CG\u002Fr7fd1OAcsPU5GsB1vebbtpqu7prLrfCh01pj7aqjj1tqrK011hb40Hmt5rKV\u002FP5tTacZPlxuhF+\u002F\u002FSNUtVprvm2u6bLWWBuVJ5cbLPV3HDe9JmRzBdpNpg6FBJj\u002FH\u002F\u002FaifBESnzyAlg3GYGpJgZHCF9cGaWen3KIXDQIsQvhFA6N847rMscOIF6LZylEeZF1SmZO9qSkT8o7MyHZPZ5z9ud7Aa9KQhIlQFpN4DkIuysIeaNTwDqlwXp4Z5zWFTLr+eBDKb3MXspPmTA0lX0kpGak6D1p4YWQGi+WClqyi6+Z5Gfx7Yv8q03G49B6fnkTT0aoK1hBm4zVulqWWaMMkg4mf38bh8bZOqMt4p13cshBapxMMYg0bvEbPmKGj5jhI6b9aviI0a+n6OWrQ9dc1mZiuAkYbgL63QQMIyGjoDobITURUgvhSZr4Tt+21nUWiOg+nIizZ9s7kmnvSJa9Ixn2qtP\u002F9oP6tx+0v\u002F3V6KlL6NeOrl47unbtmFRCFTQt5dUB8l1aow7gn2nwYEhgdyvc8OmtezaEMwt4DO5pxTV5\u002FB4aKS\u002FFgjj8WL7IxTakufHfgiN8RSHxlqKGyAA\u002FiVfiJJSUkUjerUOnymco\u002FPHvLIqfXvXlq+b8NruUypdnoP6HHxF+GCaoNkJiKnewmtsI08jL34IjOLWA343Q0EIc3aZkMXQA2rqQeJubeIWnQPujVC+BsqLAung5PQrPGWH\u002FSW73sZCaoTdSBgSE6B0d8FXmwqAJ2BzFUWCcFkGguEFxdk7YX2VM+0cwiiML8sBDO1Qf9Y\u002FgE+ASQfMRtzfw02mmGuCHTofFd0FnCo6Wz15LL3eERIqfFHg+8Qp\u002FfFcApyCXjL4qKCwkNqWXEQpJoGIv0PjOuTCAKRXpBdRoU+USLUf9x\u002FEYTKwaoBkLi6E5CsXEaucO5kD5NxkRJyMa\u002FVx6mU5eQbgnTy8DNsg\u002FWRaDMmKEGHqMp7bZV9odaEiSkzyWESALfUzjqXUZMaCnZ4DiOvX0MC3L2Pv8fAy\u002FXRQOYvkXO7QTbf\u002FQUoFagWqwYPIoUc93xCVQtvEVhWxUmt\u002FGa2viUhwgGNJE3Rl\u002FIaMuKeG0lHNi6LGsamQ6J6qqySww4AZDS2FoKb6OAFfuPdR34L5bMa7f26FiuhFlX+5gQiemm6zK52RJ8btvvH3G2\u002Fc1vX2VbtrVh5cXvFvlDsvVYmbZHUM\u002FBHynDZrVriS86AwEbL39fyJhU0eB0qKcp4NSsTgywdz+GjNV5rcel8YX0aBm0UrMsMcfjfMLBzi1VRlnhIJSgVFalY7a4clFC2kvX5KjqeDIJqTTQnaB2VDhWE6eiLv3GP6huAtmSXFrBB\u002FsAjgJnIim4dj\u002Fej03NULRTwqHpKFFC76ipYSiYOqhpBL4SEl01ZK7Cd1HyGkQ8FbTxG5tbCvGtnIWthW\u002FYXoyTE+G6ckwPRmmp9+z6UmbiruKMEntGb1Kw9OR0gt\u002FTo9dJ95jN9fjWbMdHcFydAS70fFbjUjuw+5q7UXMVnQUt+Gj+AyfgnXIUmwd4pHiwVyQmTV1FD+72tBvodahzRVxYYcmDCBAaziWFJce4VkA2JVvHoktHMvCXXN5DodAIS1OBoX0CzEaxJsvSa0totz\u002FFVTXY9v4XZCvyKAc5Z+m1nPZLPUHhp+W4rmd+wDFzHv5EnxHaHMtJUbfiE82hPQemHq2RsSnUXo\u002FE98+lzZi1MbBdwr69ZHnQjIkZJZw+DHkgNgI4dl47n5WSK6J83vQ9fwK3o+dY5Yx2ZOYGFfAOrW\u002FKK294H9ipODIgpAFCwbNZiA+WWPs4JmMH4bpDR24MLINHS8R+5ZSC5yeuQbx7AOcuA+1lO6odYKVByNTkwVByj\u002FyiNrxxPgse5K\u002FnxUyK2CSAvdxsCbh8Biee52LfxTfjchetSuj0J9iIKK00gLQ2noSdAoqiW95f11qvsGJ+8yUJ2OfZlYoorcYmqMGMLiZk0VGrEaA4od3lKwXB8tCapUVK16X0HhyD7\u002FdEpLrOPZUmtkRo0Eh+x4Kc5OsXL\u002FLeUzjeDKfnRMSM+CnndyjxU0dJR+rhlLNKgpd+8\u002FO69RlmrIzH0zn9h\u002FwqpMCt1zVckXXQOw+XRtidJLBGNJVkb+fBQXyyDZMMfEF12ammOJdxhEQgpgWgkyU3JHKQjKH+eAKTiSo6zxfCz8MS5NQlxYm9tApIf0CVhR+u5ibGhFDj5HZYpW\u002FSX9\u002FKL\u002FSlJ7UNJ7aEJ+8oBPC5p8+p0QK6Rn+BcazD3K7H9nKAivpxhshvYcfRXBqPncwj1efUlaA1n17WjG5Um7heJKfC6K2IsDcZIlTZgupsJR6KWUeydbJ5JoYnczFEnhzha1LuWQiyJfMHSzj2cd4\u002FL2QmqElZZh12cDMO+N7O6SXO+g7M4L8HtpmvrOQh1oqCpzV2RuKblxHMOfRSWpyRd+ZaUoVmN7vLAiMfRSB\u002FcZ1hMfe0DAFfqapMRQyexI3ciE9QycYDNvxNJ59TLlJjIXk6+KeLCyJHgrGgEPLXLUpIREU32xQacwSiAI96jqQ4yeIxK2+Hba4FF5CGADA7Kt8LOquABCeORfQN5BfouCRDS+zGNtlZPKiC0jhpCNdinIzzVwjwQzbMMT4rPhmQ36VyFLLzXzEs49RM7oLo2nX9q9y\u002FGBZvLeDX2SFxAwdF9itH2oCJMTYLktSAB4OLx4Q7GSIfxHfbtIQldzWPfH9tjg6y1eUlyishpWCfDZk\u002FFp5qGg8qXwr8ZuinjzJ+ImmMvETBfl4iDQBQQlmObJ\u002FkX0H9lrihCKLoWhELkY4rYqqexBChIMRJUgo1GQRQ4\u002FNFquyuACPmjo3FHOOJhqi3bJVhMfHoB+6fpRpkEXo\u002FSzRORMylSwUNIURvHnBZZLr4B3EO02kpJkdfr+Bc0ypfQjqktRGxVIEz76i733BG8AxTkjPFLwzvFw4jbCZ5tLTLmTHFaGick\u002FeSrRChB43CJ8jcmHCN5YmQozt0g2RsprliaKuKpSZBe8Md6DJHTyV0m+V1FYRdT6VTtTmt0aoVFAnSksg3ywy15ktViZUUGOd2dJG3JfMFmudpaUFwSEosSnGduUdcOsedZ2Bh282cGgH3bjOvcqamKmISnVy7UtS3VjX2sSoNF+GLW+KDaKAYiG5VkB0EfL6VO5gh58GmqKLn2wqW6lQpFE4dF3T0z2LnMsH18XQHLuCiLuvch+SZyMurKX0AqfCXN6nyR2kQMCpdx96LZp7iufmmG2n5HGWP\u002FqS19rUUfyMHWRvkHOBuhmTcz07dKtnQnLuIedAJL2MqAU+xvG+7CbHe8QpLxGcAR6G0XcWbpEmEvmJWSqSuaezr3LxtOapskKoRZH2RA5BSpsw5ZR1ZAXQhvHDMN8WXEVpNF10m7k+yenZiBmNJDeDwxXlML1OyiF2W\u002FcKjn\u002FqxYO\u002Fnz6KQCrApTie25LDRYFE7rQvZR7n4g\u002Fywcn8RlJ88oImE5KzCXJxlUIihSz1\u002F0VG11TfgoiEAlOi7M34tuASQSUYbRwvb4vrE7n4uPRmS9q6R89fhgXQsAB+TY4l7qHeXlT3X97AXZsf1dldvQPtvX2VHbcqvyl4Lm68Kcab8s\u002FxptgOgWnIPgKVAuhUuM1NvgxnVvJbj8ETe+dJLr7Adjl2nYYdD1zHyc5DNAvkNJl9g+ce0J1aKWdBUiaFN98RVc+yNP+OageoW7eqBSJ5dtUjYWKaqZJ4uqC65ppTfEukiqiSOYT\u002F3eF1OXzo382Nl9C\u002FW+if\u002F+L2WqLMiUjz2+KTF\u002FQ0UaxXpDcuWoYqcHF8FD4sb4upZ3CjWxkF1W10h79dFaTwbS4RuEH7I2M1dfDfrjb0N1N9E\u002FcQzi\u002FhCZqsWJ6X6Da98MKpQsMjqqSakubfFXOLP8lB3AbXhZLwdZzdihsA4oJeT7Pj9HpKHpFPqiZHPXmr92lShN1iyVoAiwDgfgC5jY01p3FKby2jfVDGyO5UZ47yttKU8xNUgnICqMJ0GPIrxawHrAJTguGx+9KHdXKP3NTq2MTYLh4fU+0bPE9aTocl1tIs4RV\u002FssKd0\u002FqR3GqqQqnsPDc3wNjbUVO92dJyKsO7XOZGGQ3iJ7M83bxqs1BTpcw4NTKwW52qmaRzGp\u002FP7d\u002Fnm6WKfMq+Ak0B+p5YnpQWZP3C2J6QeIvM\u002F5jc\u002FP4fk5tNFrZFyGuN17PKDe68k\u002FVYpEHOsKDE\u002F2jeu4bvT2MSzI2lZqFgm+FD0mTxC2xbmhGX9kGn8TGGM7Dndau\u002FU10ApAlf3IOAt4dhOfLtXTB\u002Ff5uG2\u002FHNwdw9gndZWyoX24f7JTEP5J89kJKyLyrdAd4qYUQ0xV4ENJDPnuKpddlheGEZ7s9kImUVwdYIy3p1+A4m\u002Fn0DXi7lFq5sZSUfsz2t5K90c4OtmN\u002FfZl8pXy2F2x0zJxD+WHTtdrDOVz9I6XFY\u002F7Sl9PPcxra4+iH\u002FeonZrBkDdO9sqpBkrxsVLjiyLuPGNCOm3ZRtFGdhTzGbf7fbobkMDtOx7Idw+KHrlCxeeR2Edsj2CBPLDqf7SWkhzESfqpsG54iV3BzYCVCLZi2U3VSbG1pQO7KeEnvLmGm+1N4qG9DqT2dnNZexRhzH1irNvwPlIltpmiWjWRdkF9RINn6R5IIQUUwg21CR9bNwOyerSVpNiPF5\u002FoAP8xB5L2QPQN5qx0pN5jCl80n8ePRUZqWkCr3UxsNecqrqBum8P23qKPmYbTw4nqSwbCyuT00+RMHGFPO6EqBL4Aan1sFV4t6s9DJtRFwYWiQj4sKIuCgTcUG\u002FGgkh+a8nkBDSyAH4uRSUzwFYKazhzKYA1BUFUXtTZ7ne8uU493zPrVt+R0mg\u002FOI4maPnFETtSGdWQR2t3UbtyHmREl6ukrqeWNjObQRLBrkvMJ\u002F\u002F3p+cP6N2ZPvpNmQwvP17ymBYlk9GgNjXESBW5kX9jJwNJV4JWEogPCvFyij0sreGElJyZagzbgt4nFwvQz8dPnM\u002Fl18NRrScms3NiJTzGpFyv6tIObYAjZRXR44avMQOamTqdRJLN9wSCYGqSn1z2imLdEm8rzevkY5V8g3iC9XYL9XY+Z8REKlwSM6MJK+nb1CNHRVlSYJu6u\u002FKHcEHzWBpTSOOtYSjkhwBc7CcnwjLoUbf+0Gfh7o9A97BgAMJqU0h9RBcfGmcWWhcfDqHP77AYx9JnGEwF3qDY5O552M4Fqaxm3\u002FxeFy3nQEERlBAeoQfpdUYzi7I4ZM0M4wSXEFRH6WZOH52X8ZbjLzHs3HZ0YkYgnLxjzi6fdWG+n2OW+2m\u002FkDA6\u002F+mocHuGHK4PF6Hr95NsqvU93oGGvpsA447Ht9tv91zx+3y2Ox\u002F+D92d7ubDAty\u002FsCw6iyNFktdc10jqC98fY5Au6nnpsvmvm1CPgfRp3q8DrfDh9wen+OWw+cDruLYkpR9ICSmiZXV1kGsT1vUzEmZB1Gv7xfABLEGSXqK6fX0+nlStUQ1UNbLnO92ORuIXqW+PzDgqp5O8fGEuPEc6CxpSachT9K7tJDJoGue3tsOH+Shkd6lwbpGUsKI0RSMKfTxUyaEt0akl2s5gv8E1neI0CQzIz65n1+eK712ZAs5KR5mruM08pIikILxhIYSP1jiWyplGAcvLeJ0+iArpDdPwD5w0+bvV460hoHAMBB4eQPBabhno7\u002F9Ut87iOo86G+\u002F9PT21XsGA\u002F9SvAmwtGZ\u002FQFz0AqH6XElfVm2ztsOb5Vy9abOV95jd6Vx8QQ0+Vyx8EIm0v6hGmHMABSUlVnEx1I5U8z8PgECdLJUAH9SAxMlgPhqsXKy0zDlJt3ZD4BgCR6dF8rjFD8gDsH74nL1+5B\u002Fwe3t6\u002FDa\u002Fv8c25PDZ+hw9sO56boJaocfr8PX4Hb0Bj69nwDGg2Co83h6Xvd7bG0D1DUysoMZzx9Wy2Xx8TVuslSScEp8nKzwb0Tf\u002F0uey9zhu3XL2Oh3u3uF\u002Foa5bSnieXM5sLi7YXKqcxVqxRSW0T00NOZFiMlbIrMjY5PFMbuIDjcgTI2t48x1zNDrBCDdDwBkC7msVcH3HJuD6jk\u002FA9Z2wgLN+hoBjggrhuRnIfbH+kco5ZDajksdIGoZM0nxE8OYKjd7Pvwrn4vfIwyk+mQjzWM7FI7LTcmYFJ7YgyHj1A35BwuCJ\u002FCzvLsdHS5sK4rAV5zjuIXgGhp4A0sbCspRellJJlp5WxmRQAGnAa1GTNlYT00y9sakjN2ucoG5BIlk5orvo4Cukn4urBzwuDPNK5oO+iz3BoaN4EtKxhMbFhefUBxAcMNPjCuOWADhEi9wDMBEUmYAqSWK\u002FKtlEZ\u002Fj+lJh6PvJdHgFNbiInJXDZ+9iSZYHv0e38opqJgyWzYSmBad4Q6c1WwdLKBe\u002Fnlh\u002FwSUMM90NjLzwzeyH523xCO+Pv0hNJpyOSrmI+h\u002F\u002FojkPtOt2GfA4\u002FmCVtPznBlcf586Gaeh7Ynpd+ckYqToLieJLi2csZt4hA5ZH7DKlmSDVDqhlS7dikGiICipqdQcJdQBf5RyDvLhwu8JJrcpg8wSJSJJ\u002FPAdbm3gDLCsfOdDg1D6fE0A479H3KhInCG++M0zSExcJSDE\u002FgeEZcXMeh13guQqtysZSGvDTkpSEvz6q87PW4\u002FZU8mYvFIOIlCKrgwv65Tev1etfWOotnz8OQ8fD4Mh57oUXGo89UiGcFUFiGdXkYZtHoOAYAcMw6SIGohcQ8LQmYrfEk5MGNLOD9EN5cARhP8hOFisPR7SYLHxis6Cumcs9e08DCAuBkQFEkwNkUXFiM7f4WvAeaiddxSOwZHMOrqzRyXNifJiqBTRZny2AfCyBpSdwow7NkmJColUU3h1N4bY3GjAKQb2ZFSL2U5tfkIF7SI3iREApJXCkJidQ+F+Pz9DkliRLPwxuKT6NUVVXSfvpHh2\u002FASdATZLAeCrnMZoUylIcGQAXYAGUspMW4qTy++FKc8QOkDwWJJsNWg8C5uP7wfbxKEL4JTTJkElXecLxS8Ihk\u002FArqwCRGg+BYcv89i7U9leDaMsg3DNtDXHjOraPLXBQyHby8SiiCPY88KnNhsmDueVSmEx5qGaicquefvSeHTj\u002FFQ+Wn\u002F1QGXhIQp2IANZWIRQHU\u002FGNeRyx7S8WTaqx0NiorKA9iEDpOfOSMA6pxQD2jB1Tyt0yUtHF4NYIpTz+Y8jYNptSrgaV+bFL6US6WEhIzJTEw4Lw6Fy6PKC2lH4lPR4XsI6qhFRJy6lH2vM7vsdXhh+E6m8dv6ji0+KdM6IankxzqOj03PmUm1SM3JNlBufjb3HaQul2rjZHUKtLLCAb0yJcMJow0PCE+TlJcZlZeRqwKzeEHSwy\u002FPD8RZvu6sP9EfLMhzjzEmSBLsEG9vIWDJwTzKiilFVhszg4oA0BTNU9sRUhO0i2OdX0S+5uxuxm729lXv5DPpSK61ZjegG+w9\u002FC47htKib8p3ru6Y5YOkdKassNXzv1y5RCU3PEIfenp0b5YtCkizZABhgz4WtCkT+LN7il\u002FavX45UIlAtzlMt\u002FLJX5W4uv02mm4d7ng4EKPKca7bLzLZ3U\u002F195WvwIZcITd\u002Fafvf65mgyfFYY8\u002FVYl2w9P5pSVap+cGopcTeiNScZSj2xQVWEhMgdfmaiI\u002Fkpb1mgfL5MZFAO+naFas3GScuo3Kfjkc4DC9IkENGXoY0pFthKlGnl7X4Fo5vlwgTvHbRTG2i+4icXEP3FPnIDchtaWgu+QaOIxkgwUpKVO28072\u002F49OopZGVEN6JLmdaCwA0dlHpOg0ImJao6VF5IKZuI\u002FfQfyUKtgh2ZuMuUkjQYXUJp6dlO02YFSQCZCz1kJOn8LseOrlb2wMUK9pKlslfS1e3Zc2U\u002FRGeCpa3jK44HgyAo7D9H5L8qsCY9Z+zS\u002FtSqsJIQkQz3QzlB9ybJNziwJP2f2XJmuFx9zKWxllQkVIzHAV2C+gEI4nxfg8tdLgeyuyhoJkjQCXhtjT\u002FPKYODorJCdLWoRks0l4AnIrQPq\u002FSen1Otz2+bGQvgB8dX45F4eg7DtknfVDklMCdp1CVKqZWVA\u002FAsgi8ozEgNOlB1kCMzSPg2qxmU8KiVRRdcA9VN7PIoOToew2jg9n\u002FPigVXaTvwYkqAEJKn\u002F9miBB6VctVS2MqjMPGFpcsBAv9JhwQg\u002Fv+JiBSisTUB6ntETX1R3q6ZMeU8d1W8DnvMuuK3rtP3d0W4r6q7jMDJGbzLmeHjtBoKpgHORJqYg2qbxf6rGmQlnl7btSJQn9x0FCZfPpoeRpGFv2TtbnCPzV5hosvx6Z\u002FZQuFAIRqIMjPs8dXeV6PS69Fs0y8EudP\u002Fk8d1AtuoMuQms\u002F1w8diseqg3u6jM\u002F+02eePjs0KoPmWsw71I708O\u002FLGO8pV64PuqpioPKxS\u002F3YXZ1VXMOa25XBauurhn0FlrYj1ag+jC6qhvdhVIuY6X1Yd5u9Hpemzbt8m3f5Nssah0qgS6IvCC9JDft3KLgks+7fRhcrA74WyB\u002FALSSr33kB1VZVsesScl4i4uRwzLeC9\u002FZ8t9wpeZ9uXzgDeM5H9vI4ls1Q705\u002FXH1zLz+PTltpiqsHbeUkFodLW+mcpQFvpjReIMK0FvUfC65sCRK7zj6J3cdA4vFC5cqyrLa\u002FJFRuPbxjd65on8Ha79fi4xaW6ypRrrtEue4S5UgflWHVy8H0HlKtHFTvIdWK4Xq\u002FBAb3DRXJtYJwLE8VUzVUQpplhY4BqlvfAM7fUbZvKF9\u002FF9XpkJsXUANf5xI6369pZfgIrQyXZAE7lqmimvxRBnhJbQExrFgedfgLwAyfZXjYk0aHlVE93f5hP6KmBiGRFqMpHNqhkCPMMkbzPp6Edd+jqjAMDb2hofeerIb+mDWaf+AsgOf+4gnYXOj89a4LCHV7Bt0BhDqH+uQH1x125ZPTrXyy3ZU\u002F3QjYrzmG5C\u002F8v\u002F\u002FwOnw22FP4h+dQHfuHEP+\u002FKj4Vfin9r4wIUyRTc6OlvpXpnisWbb3MNNiocqON9Y0tVt1FmZHk8KKNzfqKmusbmUlA4Xmlhs3NKgdK6GkdLgLrVWcLBHymjp8I5PaPbuctp8OOrjsGPL5hNOAY6PUOoz8HPNd+ZprbP3BG5HPon3B1mZua6y1WXavL0tZm0b0OmvWvrsYqiupfXRZrVavLcgyrq7KjL4WmXP2QezkCAJWhnU+ZMEg6OFSszTFvFeryUuzaQvPfMocSKisV+wH5orqlQHTBJO\u002F\u002FYm5qRrWoCbWj5kYL9aaQAxGW9km26WBu4kP5iA0K+UaTiJs6+G8s1IJ+5VNiUxcWlomXhjyAH89qTFyf0IKb8bmuC31jJmbxzgPZUWf3Ve5DUsU6y+29x5tr1HMIzz6QE9iSEF4AW1+OCNkZmZj0Xu5grQDxTMbg\u002F\u002Fh3KT0rpMZzL58LqXFwtckuUKcnnhRw0Ikn5daUoI8CWsHNiLryRLfRtf\u002FsvE68RG5cR9LkBOR1pfSFHuM4CTde3haS0\u002FnFD9JGTDh4AjjyCyHZ\u002FYdGw75M4ynwY6HRrZqIUkjl+xJyupPkAzKmB822ziURJnmTIVpamn4jvZ7mGUSPrfkJ4nyTfoFnp\u002FhASzwXx1MEPI5Uz49BTncFS2kh\u002FypcAf\u002Fv3QLOBPH+K2kmburgv6lZ2anbED1ZWxH9lZYUp4JiFKJlD0mam43SEFAj+NM4bX\u002FVp23au+EPw381\u002FGH4r78vfxj6VUtVi5aqVi1VracXlmIk3zXixU8gCLy2gjZAqVwcKM4y4bLg7UN0o2okuFNRXpPuS+XYvaj+LHfCP4H++O9H77rC0NkVrTJ5epooHoKuWgXD1FXnWFjR9PmsaDoSK5qOwIqmY2VF8+ezovlIrGg+Aiuaj5UVLZ\u002FPipYjsaLlCKxoOVZWtH4+K1qPxIrWI7Ci9VhZ0fb5rGg7EivajsCKNpUVp+72o6OHz0\u002Fjfgqp05Wz9plOnW5kCzeyhRvZwr1GtvCvO1t4\u002Fd2G8o0ogrpiSnEjlbiRSvxLpBIvkz9c\u002F\u002FIsSDFupBYvMvoaVinDKvU15mWuWiJV0BVZ2lqZXNF1aK8g2Cp009JU39LcbLYqhgY04D\u002F3BYdhabWYmZXmGMfR1nS5vrnVamm1cOOo7L6amKEZ9gCAYzIkRt+oeBlFZnfwOYhCWkDwLYiQrHoHc1JsUVzcyy9+qGDyf\u002FYUalD4luBLU0fBAxXUWUnLJL4bwQ8BFYWmqNO9rhQ\u002FAALyQXLwpcXJfTEaFLLveVcFwy3AEMBn1C3g9yOcT0qqWVtb6ltazS3WZlWqoS8pnlsszRarjm2mhXlSHE06t7TVt1pbmxvNxzQOc2OztaWt9fCBWJj5\u002FUgDabW21Tc2NVrMlmMaiKXxcpuZuRdUWlpMe3m0GbG21jebW1uZPwkZiB4\u002FTeKhiaNyskH5wqNk20qkkKWlFVH4L7rtyMl2o8H86yXqCQhgX6vrQiKV27+ff73EdrmCtjIrQvaA+AgyALTgS+q6CO0Ew7mDCSE7U656IgLJcDnkMLkpOVHu7qiYguQgeOyjkH10hJ0WtvGdWTz7GI+\u002Fh2y32Ud4EqC+CGYbg2qDBzeuI7r3guslzdwQe5p\u002FFcb7i3giRTbk\u002Fw+JXSZQfIMBAA==",1794325249664]