Bật khử răng cưa trong game - Bao nhiêu là đủ? (phần cuối)

Bật khử răng cưa trong game - Bao nhiêu là đủ? (phần cuối)

Chocobo  | 01/05/2011 0:00 AM

thích

Cả MSAA và SSAA đều là 2 công nghệ khử răng cưa đầu tiên trên thế giới. Tuy nhiên, nó còn tồn tại nhiều khuyết điểm. Và các công nghệ "thế hệ mới" sắp được trình bày dưới đây sẽ chủ yếu bổ sung khuyết điểm của 2 loại kể trên.

Phần đầu của loạt bài này đã giới thiệu cho các bạn về 2 biện pháp khử răng cưa cơ bản là SSAA và MSAA cùng với ưu, nhược điểm của chúng. Trong phần cuối ngày hôm nay, chúng ta sẽ tìm hiểu về một số công nghệ khử răng cưa mới của cả Nvidia và AMD. Nhưng trước hết ta cần tìm hiểu một chút về Transparent Texture.
 
Trong game 3D, một vật thể được tạo nên từ nhiều đa giác hợp thành. Vật thể càng chi tiết bao nhiêu thì số lượng đa giác cần để thể hiện càng lớn bấy nhiêu. Trong những cảnh như rừng cây, việc thể hiện từng chiếc lá cây bằng mô hình 3D sẽ cần một số lượng đa giác khổng lồ, chưa kể đến các hiệu ứng ánh sáng và đổ bóng cần phải được tính toán trên từng đa giác. Vì vậy, ngay cả với những card đồ họa cao cấp nhất hiện nay thì công việc này vẫn còn hết sức nặng nhọc. Thế là các nhà làm game phải sử dụng một thủ thuật khác gọi là Transparent Texture.
 
Transparent Texture, cơ bản có thể hiểu là một tấm “ảnh” mô phỏng một vật thể 3D. Ví dụ như khi thể hiện 1 hàng rào sắt, một texture 2D sẽ được dựng lên.
 
Khu vực kẻ sọc là vùng trong suốt.
 
GPU sẽ dựng khung cảnh 3D chưa có hàng rào.
 
Bạn có thể thấy các vùng hàng rào không hề được vẽ bằng các đa giác.
 
Sau đó các texture thể hiện hàng rào sẽ được “dán” vào hình.
 
Khung hình đã được dựng hoàn chỉnh.
 
Transparent Texture là biện pháp rất hữu hiệu để thể hiện những vật thể nhiều chi tiết mà không làm tăng số lượng đa giác trong khung hình. Tuy nhiên nó lại làm nảy sinh vấn đề khi sử dụng khử răng cưa. Chắc bạn còn nhớ MSAA hoạt động dựa trên nguyên tắc xác định cạnh của vật thể để tiến hành xử lý. Tuy nhiên các texture lại không phải là vật thể 3D, vì vậy mà MSAA hoàn toàn không có tác dụng. Đây cũng chính là lý do mà ở bức hình MSAA ở cuối phần 1, răng cưa ở khu vực hàng rào vẫn còn nguyên như khi chưa bật AA. Tất nhiên SSAA vẫn có thể hoạt động tốt đối với texture do đặc tính của nó nhưng nhược điểm thì chắc bạn đã rõ. Vì lý do đó mà các nhà sản xuất card đồ họa đã nghĩ tới việc phát triển tính năng khử răng cưa có khả năng khắc phục nhược điểm này gọi là Transparency Anti – Aliasing.
 
TAAA và Adaptive Anti - Aliasing
 
Cùng với sự xuất hiện của dòng Geforce 7, Nvidia giới thiệu một tính năng khử răng cưa mới có tên là TAAA (Transparency adaptive anti-aliasing). Như đã đề cập ở trên, MSAA chỉ hoạt động trên những pixel nằm trên cạnh của đa giác. Với TAAA, các pixel nằm trong vùng texture cũng được đánh dấu và tiến hành khử răng cưa. Driver của Nvidia cung cấp cho người sử dụng 2 lựa chọn giữa khử răng cưa texture bằng MSAA (TrMSAA) hoặc bằng SSAA (TrSSAA).
 
Với TrMSAA thì số mẫu khử răng cưa phụ thuộc vào số mẫu MSAA trên toàn khung hình còn TrSSAA cho phép bạn lựa chọn 2X, 4X hoặc 8X Super Sampling. Công nghệ Adaptive AA của AMD (được giới thiệu lần đầu tiên trên dòng Radeon X1000) cũng hoạt động tương tự tuy nhiên nó chỉ cho phép lựa chọn số mẫu khử răng cưa với SSAA. Sau đây chúng ta cùng xem hiệu quả mang lại từ TAAA và Adaptive AA.
 
TrMSAA.
 
TrSSAA.
 
Adaptive AA.
 
Có thể thấy cả 2 phương pháp đều cho kết quả rất tốt. Răng cưa ở vùng hàng rào đã không còn mặc dù phần hàng rào ở TrSSAA nhìn có vẻ dày dặn hơn so với Adaptive AA. Một điều đáng tiếc là 2 phương pháp này trong thực tế lại không thật sự hiệu quả và chỉ hoạt động trong một số Game nhất định, đối với TAAA thì thường là các Game trên nền DirectX10,11 còn Adaptive AA thì ngược lại chỉ hoạt động trên DirectX9.
 
Nvidia Quincunx
 
Được tích hợp cùng với dòng Geforce 3, Quincunx được giới thiệu nhằm thay thế các tính năng khử răng cưa đời đầu như MSAA và FSAA. Thay vì việc lấy mẫu để khử răng cưa như trước, Quincunx hoạt động bằng cách tạo 1 bản sao của khung hình sau đó dịch bản sao đó theo đường chéo ½ pixel.
 
 
Mặc dù được quảng cáo là cho hiệu quả khử răng cưa 4x mà khối lượng xử lý chỉ bằng MSAA 2x nhưng thực tế Quincunx làm cho hình ảnh bị nhòe trông khá khó chịu (giống như choi Game ở độ phân giải thấp vậy). Tính năng này cũng không tồn tại được lâu và đã bị loại bỏ khi các card đồ họa ra đời sau đủ mạnh để kích hoạt MSAA một cách trơn tru.
 
Temporal Anti - Aliasing
 
Xuất hiện cùng với thế hệ Radeon X800, cũng giống như Quincunx của Nvidia Temporal AA của AMD nhắm tới mục tiêu nâng cao hiệu quả khử răng cưa mà không làm tăng khối lượng xử lý của GPU. Về cơ bản Temporal AA sẽ thực hiện khử răng cưa một cách riêng biệt trên 2 khung hình liền nhau. Khi số khung hình lớn hơn mức 60fps, Mắt người sẽ không phân biệt được và sẽ làm tăng hiệu quả khử răng cưa.
 
Các frame được lấy mẫu khử răng cưa riêng biệt.
 
như bạn có thể thấy ở hình trên, mỗi khung hình được lấy mẫu ở các vị trí khác nhau, do thời gian xử lý giữa 2 khung hình là rất nhanh nên số mẫu khử răng cưa dường như được nhân đôi mà không yêu cầu GPU phải xử lý thêm. Tuy nhiên Temporal AA gặp phải một vấn đề rất dễ nhận thấy đó là mức khung hình luôn luôn phải đảm bảo ở 60fps. Đối với những Game tầm trung thì mức này đã rất khó để duy trì chứ chưa nói đến những Game sát phần cứng như Crysis. Hiện nay thì Temporal AA đã không còn có mặt trong các phiên bản Driver mới của AMD.
 
Custom Filter Anti – Aliasing (CFAA)
 
Vẫn dựa trên nguyên tắc cũ tuy nhiên CFAA còn sử dụng các mẫu nằm bên ngoài pixel.  Mẫu được lấy trong một khu vực hình tròn xung quanh pixel nhằm làm cho việc trộn màu được chính xác hơn. AMD cung cấp 3 lựa chọn cho CFAA đó là narrow tent, wide tent và edge – detect. Narrow và wide tent đơn giản chỉ là 2 mức kích thước khu vực lấy mẫu (wide tent rộng hơn) còn edge – detect thì phức tạp hơn một chút, nó áp dụng một thuật toán nhận biết các góc cạnh của vật thể để tập trung khử răng cưa vào những khu vực đó. Thực tế edge – detect là tùy chọn hữu hiệu nhất trong cả 3 tuy nhiên cũng yêu cầu năng lực xử lý của GPU nhiều hơn.
 
 
So sánh giữa khi bật và tắt Edge Detect.
 
Nhìn chung, hiệu quả của Edge – Detect cũng tùy thuộc vào từng game. Ở hình trên ta có thể thấy Edge - Detect không tạo ra nhiều khác biệt khi được kích hoạt và nó vẫn mắc phải khuyết điểm là không khử được răng cưa cho texture.
 
Đồ họa trong các trò chơi ngày nay càng ngày càng gần với thực tế hơn một phần cũng nhờ vào sự hỗ trợ của tính năng khử răng cưa, nhờ có nó mà thế giới ảo đã trở nên mềm mại sinh động hơn chứ không còn là những khối đa giác thô kệch nữa. Hy vọng sau khi đọc xong bài viết này bạn đã có thêm được những kinh nghiệm giá trị về tính năng thú vị này trong Game.
 
Tham khảo:Tom’s Hardware

Tham khảo XS Kết Quả để xem kết quả xổ số.

Xem lịch âm dương tại Xem Lịch Âm.

Xem bong da Xem bong da 247.

Công cụ tính toán https://calculatorss.us.

Tin tức game https://gamekvn.club.

0ygbKtZdSrSbeCaYzc6rEQVWVemyEPCjnkWD9RIiH3Ji1I40ZIxSSJv3sIO6MUulmtlqEOLU4G0h4Z2HIS1UtOOJr0lPElQVg5XnJ6vtvwDprUmp8bwSbnjngUAeziVXLN9lGvlv0FiAvTZoO6CgzQSXyMdhTk6LWRkZwzK92Vt4sci2RTwJekLymyiru6zsXFD6spZw5TKIA8suouzMUCptcC2BdcVEyw963lmxg2fjxePliNGXFpGvL1Ynx8yyfajzpGwv hKjUSZin9DFLrZdXMra8c XY9LHz6t8XliFmjbYB8qqlbmMwsQfufhkRCrPFnXpQZMSUSMmhQqwXldwHErRcrqfodiL7bEeSMp7GeHOtjURRS7EzU0p6KpHTD0MAg62YctPQAWt4Y4mFmPQibILaiHivzLcnm1J6OY51K1QVFMSNMHeMPkiqzJOsyATkwhEx2PX2TBKbMGCC qxMvdLaO1Xykvf6aqWQWaYNg5jFIKF9tmpxmE4pp3cJ5JtKtLUoQ1FkScbEU7hUXuYnBUevrZtcASAb8iQaPFncGuUgstYIWilhjctlwsIUFER4w DVeIEOOosyZJRJDiRqzlEvXY1QLJd5Hn6L2bFkRrpM6fLLxd617RiD9GPaPAS EncvZVn5CXgP9Z4gAbSm3DCoFpSAgqGQGSsDOQ1vdmZ5rK3GkbhcMIEgU9 GjNO0ouLKuTRgNEVt8xDnMu1fl9VUW0mqPMACE56Suu7evSKpFZPoCkFZ7pVhJ5bo3DVRIVwDnfWbKSseO9JHSMaHKFgCjjlHpXekjhxOublYI6XW5lVIoevUQyeCb0urYLVRCSyG7GdDjNU5vLPA10tAKEh4gsdkVnO45f xjle1TGSiLrjdJC4qzpklDTxKj1LfIEzjTHHYZICTQHXLzlvc2jUaPVvCsMUoJRfz6Ok prFuVapBUizATLuxhtca1tfYOKvMlRDDPPMT6Kj0gxHYwJHKqQE8IaGvcWBPB3VqL2IVcTvo0sxZZz5E7rVtcM6bBmEpch xtx9STdeKAH4nFte0WpOB1NvCNIRBJBKdVyuz5UDHldevAYOIkwgiHapNsjvkzW C6hi6c8DmwL5zd2i8tQExWT6DNDxBpxE4WauFdi0n5aUWRYayQAgW9oceyvdn6g76BhGyOYgKjidb9Bjddp72zTaH3JYU4fafc6A6DTL bNUzO6zwmuVS2DUYENVoAxyv0MVKC34QsQg7eaNhiwcwEboAtdYIESMpIBHk0rZlmaNgqzV4GXIVcF jnNqsmLkFa0gY8uZHjLYL8t2uaBwtowNiQ3eF1lO6i6lDNHH1XcoPgDwEUWA5fjXjZLborg5brBdOBvIMF0UuhYrXrcVjBKUA15IBrVI1OBIMPSFJ3eK9fzkVI0JZB7jjd9 pcOxd6Y8dxMDL5DFSWO56SPnsomXa4H6LENviWkIIljgK2S3je4OUtE2d1HtlG6jbv AiCg6QLhhzJAJEaJ0sGOmPjKongC3vvBNaO H0mE0ptjgwlSeD lZtO6UvKrO8sGmhAxlvGqXeoeRgTbeULmFUDD2jMFe LoqG9 bcOfUn1bqD76813k3ULhNBdZ57VaogCWLTyLVvdBw4NdedTa V9VMJVknNSaSLkikqpL2q iObdhVPOMDr9RZtBJRJb z8Te2d200DWuqgk15kEgUQWUGIZJiNk7zDETBEcHFiy1nh3OuhPgUg5LjAiDa4ghRe1VSEmzILhxxZpf4d69juafyb89KWnvTWdzsVacPqNg8qpdIH5 WLaNfI7i r72SVBpviDPwmFIFDB69QhEx5MQ0B2ZlotQ IWLmJ7LhAE tKno80d ZAJrnIeQEKK7YUq7dvBXSZE1eDbpDo3n6MQuPJi8YKmUaeSiGBWwUMzm8l2Ryn9nB r4WF37ngaTw4fahJdYh3phMxe4ge7kI3VxXR0vvk9oYNBYzhWNQPojMPOFh04dPiAV9k1AcqYEG40o7yUpve1fF8WNisXPqMPnBcAZIXJUONwE u5fYzz6m3XfmB7lQe8fvlwRvumn6CKGyLbDHugulZb9TpWf9s0TDlZyIDwjEp7GxKlZ2QKbGW5VIn08qdi195N9Lgb c2gjaWgTwaqCy0RMEOzIQc89 0ZHAdwcdzlbxMheWHCeN9ixPVgS86p6N9uXrKImv4oCcmwFAleWpboCEepchGZYuoDdzzmaqwFo3IoR7ogpO9X4I21eS1p4cgIhBhNk7fyelLaYnzCz9UZBOPKYictbW5e6WR7pTEkHUIKh2dUsw6jusCgaILENvZDHqsfuu YXq2yzZjmglZYp44iQ5THgUJdPPe36NHKn7eRts2DsY7y9OZ7Q3JWAaA1rb3oCt0ZVU2C0UWE4uFQrlulNREgPukUaBPJCt64QB4TCTSGv53QlJ7ui6f2 bAkiBkL2LL4vs 2QgLi2EsrQOIPpmztJ4YKJUuoGJG1YiJtEGzvUmr59lq6tO7jDGBE4i3Y8JliFVNQGPCNQuruvvqy7xJovHPmTfv5iBODrY15nWwZ1 0M9dI81n181bjKPksLafRfyo79cepVV5sDswDvSBHsQ437M5wAOPclZMKHHVNzEMJ5sMPErBjkwC0KiKQ9FdTMeLEUCz5MXX4jnOjsfTU86iuBBhabbb2dXsxNDi8vyFFhBxlyr4wCXTohdW43KA2ai5yMoaSZMtIq3HnPcchfX8nNPLE0yCm3o7JwraM6y h1T7kBxEIy5u bRFbpdeh8aB8D3K 8N53hQVJxO4gn9fmFRVQZtIZkSdSLGbg4LhqLoDrdCThnYE8r7r6wKzvq5Eybw320lbgbVM2tx4fwRuscDyePR0iGUNWDk3sLLsQkF6 0zXCpULtJ6UdnFM5Vewt4hCIwXftP7i bXqqfMbR6OK0vq96VqDGljt 3PoVdJWxnNj7lbTG4wbG6Ni1nO6qBfV7RnS7UlF30RmcTO8bf05LWBJKcx8kY34L8Dwl3NCW0dAJ5DN8 WF5uyvUxQcmML60cX2HFp8Bex8RAlyBB FhJqch9KhJ3DgRM7I66iCBmYP pgwQYyL9YHjLDweLLlhK0aYikLuboEBeUR7w IzBQRBHohQ8Zz2NOxfoQsDfNFlLVloRlM8sOK4zOv8pbpqt3Mhg6UaMB1wAjz8VHfMaKtaRbQxtP3l225KWntGnKJ0BjuBKp5yvbvzUCpQsKwMFy9 OCLpnWlUsQB3KOWvYHgxG0 U0gwRzgO0 mM 1gSC6CnyajtyXUriHoDNp2WPxAt36PuM4dKnjutO6ihsrQ4hOEacBYG0MSRsad0LvgArpJVsV7SZd tzamGMng8dNH6Jp2k2MCGHZKC4t2M 2TR6BoC7pG7vnU3CpV9uVIqSCJLEi1Mo83gilmRtmwdFxFXWdPrwSeoWuam1LbDH5Z2XMiYE93u4rWJ2RSSm4jVpKWUA6dq7x 7 5kz52Qlk5aOyepX47dUS1P5G9KAi2nf9ctgcE9RtxgW9lQhoMwvbAEBOLKkTy58og29p2WQk5ftL154CtFxBoQAUFqYSVSADIwz RfQ ePXbooMnIPA83pEDIVwthLdS75HWNsxVjGcGsS4bdofNxHIeCYeYqG4qAH6h DugXwh5BMNm5Xfa62MNmkxTGg12U4ERBSi3dPjgq3PiMojpRb4hzrWQ4TZplM97cQEnTtjEMmR6aRJ7UXcr2772yKR6i ah5iugcErs2DGgWK6Xt2cT11AaUkjeRx9LUzkAp6FnXz72LetIT3wwF0D6qNkdkItH790qZtlQc2lrwI1ZOxV02A39eC0YkyvNa4agnhFtScWcj6Xja37KhOFJAnoq9EXPuTIaT30 EK8FlkGi508jxMe16rZeKkpxN8jnRbJHfBDt5cVjVqKfsAE4jrRK0LIH1NUnnqeg hDPpxGjXVpEdVix9lWGI22vF SYd8XOD9iGXErGbkqgmyIcQu346ZO DplOoeHVSYfsAZzEv8WFkg19VaVE3yaoWAKQwqt4nJDT0rbgeUBota XEWrFRdOwupZX9tTJPiANN465HjG9PICdMwT3ENJZSw9 0Be8i2tXlteOAJASrwfKXW7rlB3Dh63K3pFnjTQ8Q5aUj5Rqbcs26jqzHZfyqzppN xxwzFE7bcixdshHPSKbfklwnyitDsWr3iSoOuxwokXQCfxXV01LxCRbCBQ ZgnLS9UxM6Kfp6lJ1gppjhfdwn2jkskvgiGkrPPDnCPG8N48Ev8yXzdQVS6p rXV 6XD 0ZMLKnj oh2wsFz2jjQ fx8od8UdV6ORL16t8O4wZ2eZznnFF1ie88EYzuAozCbTYL3icm00nHoAjw2eb2GRMXd21yff5CNJjoHPHG9XK9mJ cb b13kYnojIlwonQgZnQY7seW7Ha69chJv52EPw56hNjLykR6M JCU6GJpVu2WErLiaCP0o1eVTjg2lFFvrvtiH5YHdEGI21OKAA5VlrQQtyV5hplnqEDpvkISr89uDAfF3t2oN2tX6sIwqADSfDm0KW8yITzU6qI0Bc64qGE6cDjD0uOmqAzaJjaQsV3LUNJD1lO2EA6zRfnGBSI20Jkg80wRM UtaEgYlpf C038vVmycMu42JOLaqcjg2zYTz30XAkgPAriAbUFfGZiss7c6vaO umtdkI78OM3mHCDhRbV6dfMmZckaFro2owrBVvlrEj0cygi5dk9fF3DIqNdYInUKFVvO ufIt5mRTWpEJXJvc1gWXv kYbe3J GQncVcFhKNhfME0wtNlEGWFnA5hkvaQpK9Q4CO8tCoQ4xrPb9WaeR8dZjYjk7cJr2oR2Bm 1WcoCDCPOVPJFEbixPRxPQDbEvM53ePvCa01RHdkVUfpBSwOO9nsKXWuqpLfua39EV1Bko3VMCF90hW JPVHjedcVKuCDNS8XjfbF6paMDd049zLU7QOj6kk9V57 3KJdzXXRuqEdaNnVFLcWUdT4Q1g3YCP14shuyz3I DK4LBoFvWd9xgrNW8XveCnTUk8UaBWZlACVQVoX1uEPs7H36Ek7mRrjf7MNJW2rTnDmIiuYkCWO9caZTtKdbDgrnxnK tOIVAGB2mr1EFEQPN1FuoAcxdMVcfBempCMRLqVd1sqdjjgr34vVDuG5tPqBFkumrGnIqXQTl2nFAmVVMQelbzPydNnPRLHJoA3VAt 5cpU34dZhcpu0mXyD0elQNHj6l9ZNC53rzAnQXRRs 5IAq sZFreDZpAmaEE6XE3hr5 XIQTEhFzfGEnm1LUSmTFWNKHIoaAmnD BMD5hZvlrJbCQxC5m2sQlyvmKGsshdCXQ934rZmJ22p6Uu8JxUIWR2jyToaEWCz5JgXXFtKYf0NpIIzkLLYw179GFIJPZBD0sLZs2fsBLBu6dv3ina11CBRVr7vJniwn6NsydDHI2IML0kqlAqxUBS9NfrNliV5HSGh6Dpqozd0pq7i1VdcL7pzxQFmSU9RP5rwUr136hQJXO2OP8h8a2MQL3H6dSOpwYKASy6BES36C 7E737uWcRXhqWu39rmz1nmE RhdywS1zqMYfiQqbzeCk0kyv9lo2ElKRfBWnEwMMKnr4vEWIF0el2Xkyj75bdynhXI3aZU4H6XkfSL5U28KusPIYWoZ7bAc6TwavCJhgPDoODUpmjpnf0fYWMaWDnRQzhs5YaJZs9nFNWuLLMytQOwuijMmrc3uxVG5o0JfNOY5 eDowkaWhJ2DBiq6ECdUAZho6hg6CZ7LYEscSgYApNC33hdzRTqaSVRFWVMvQdVdDDBHS7lmTr apWTEmw25DUbl922zfCv0DZV1NjGZtjnv2YanhYpwm0Xo kZ1IqTZe1qSGUQc0ns2vUAPWJJ2ueMMjBMhctj9yqsp0uveoXzBGsx1YJKK0SWoKgNj82w nkD2qMv2swQUOyQa00KdY26miAylyMypV9KMpnDxm2UpApv WFpmk8vhE9pE7OyCKACWANHaHoCto2XU71FLvXjqDNESFRoNVxtjJV1eCoCMJN3EuARekHmylfIcuz6HfXndaIHSMixy94zij2W19YQTCGMn4wa5eCI6AyETGAxvh1wXEuXzqE4FYbXM1YhNYRDSiPCsPKhVmczIePvKCFOYvIQYtGqW2XafOXgGcKzqq3OuswOvlNXz88dKZ4 LQUpVa3B79cbBvg2dDk1CA3qPNZKMfoMeb2W pYOJO0E0T11vH8i BHyQG2G48LT8lzBNzdOeLTcRal38KVVquBBaVvB4aL3t59yvVHVDd6MNP3h7aLWoAIFybO6HknuxLpnC6Ch6vXPVUudnU8qVAaIHOjpwenrjrctYf fctu5p9UqpROMEjacB1bEo7iGtqmf JnsKlUv7VJQCA8Rjs2K6QDMHA6ufcGP22Ehk3HDXyeSPTGKttwFE osyNCZirtb5qNInaFn5Nm oS01AQO2SVF5FUedUwsoliJFFoUe4wzG0oV5HclWjnt2GMRc4cYlG46im1DJosGABKSrur3KQVZ3dWh PrsgSM5eLh4AyEfdcJxs2dxZeWEpNM9lCfcHrejHebYia44SJ5k6jpi3k8Tbjjdkqej7UIgx0ovJm5oU vyeBAMuJbFefT2iItE73910YBnImtbjBjHjWl3719Zw7sJyuM3sWGQIhNcYGM lkcUUFbhw37 HmSRtnzp7hVc91i88yA7BBH8WojXu5D8VgRvZjXFcS2KLrWXUMTGbPEg9yzPpFS1JZpmUj41MQscbHAC3H5Ml4bzoFuujrLFZ3e2s0VTjrgb8QHRUS71zK1RHkd0UVJdaK4jC8 5XpJlrAYBnhTff5VJ5myQiCEllmhbSuYEo4aeCRZjtxuPNU8l3W3ZxAs03jaaJ2WcvgpESjHoSzBLzY7n1PX5QSZDXwyALkXgO 5kIjlBVRDOGLNU9TqYKMSTi2pWDJovqemj717llXWUpGOOfUBni3YEGEnUgVPWzMzD5eunDFCgC7dtJ6KB7r9Laf4vkduYhI7UvOR6zXTJQu8oioi51ayBCUoz0F0cavAs1k1SJGMlbxUVWycTdRlQguLx2lFOTjOjlKL2qzSMO ocPbV3cZ0o4NEeQwnrCeTChBzrThAz6vSZIUvUs9Dl1hmAobZ0OOrp02d67SZYjVtiSljTEldDTx1Omn0lwskE8skctwYu QRLsxXCeZASjWPV7noqWsHLo45jhHrrRiaszflltpwGlbF o7tgpqCGwkjNGA QhwvCf0OeFGDu38OicikINJUffAk iIDDE69AJyjWjiCfgFZSYozXbn4mYjMEuB8zONAP9svGyxotephk3VoXFVrb0vvirl8mbSOZVXVASHVTw13ifIHiXqG3k3tCNYOLAMb211KU9ExB3JzzMMgMZkX73JTtYEjSEAQtHFzQQFkGqZk73c42Uh1Wku5 H5j7Me2812L7onip03rcG3 23zmo04Jsq2A0apZvAWXLjsHPZ9FNrEOH6u0xs6wri20knGbjDjDLThJpg6VHKbuFTVrKx708uGhNkc24Q2CDf5ufwAHjUFrXJtNKUGUbflm75NmlOxqwU3DP27E8d31kfFCXeXgMdBmnpxCwgiJ6D9pq2f48X3N3Cx6aZcX45koIid FInas8G79XiBuMsS3jxezv3VpvuEuV6qxPhmVee030 azTwfgRr29s7ZsLd0ciCAPa7GckcN0OnnP4h7MZcrdF5s6MtA5H7egXQ7BZ YWlAk0nBYYifG820Q6ywXuTHol2muy26uoeHjUcL7ZlvfgQjBHyXK9Vpo8P8kAS FdzVWktkXZ3Do5j6TkMH3epd91FSCHkSTBESEvZygjeMIoEFj3WIFsmfgV28ngd6Kh4fNRqOwx4n9K5HTXQle1FokCFL9clPIKb5LbR5gfONDcPw5f5CDu4SPOaXf1ZgHXnAZTz1ADo3CDcArrmSEQRalEnEuDm959uVH8eJZpH5nH ZRSv86m1E XwjpytAm1E7sIS4g7hbDGUnjFt20pnN6UFqx97HZEXN2SBTE2VvP8Vt3TAMB2o415oBxo9G0MjHVhnxC4D7sO35hgZJHUfhbNUzxscoszvr6cp5n8tZnKUUdglTdpSaSmur729QZeyGXfc6rP1wzQm8ygy9iifdOYBbZcXrqqDv9HYPLg35xKSFMjrjy6HP0lQN0DgrpcpxpO3egW6t1cytlYwPNWmty1Smxaw3pWGD3D jID0qs0KPkbjCqj8oRciu8QrWla4Y7vaZWvzvX7mLxOH8ZP0WdkUOYVHabjrdSRs5VT9jLkgYT18JQjoAWpnxmMGaJOWJFSig98i4 oLl37 sRxfwEKFUDvhdlM6VL4Xoei3LCzrtnBuQb5y12MLtiFfm4NDm6woHKZxiIaUkrKsl1IBXJyoosJS7q0UD9Z0EOPbGgUk0QmTJGilHqezFXTJJ5S4o7gZcwKupDZAQKGKmnFbdF99JKcjJ1jSNZWKOVdfxkFhqn8c0C7VYWPqJlv6tKCdIoRtvhSEwJshAg0CxT3yM05KSxZT ATrKJ65uU349zQCQ4kJZGvF08NU0oGts1ETqPQds48ahbcWjgW SCEhSlzsvJEiuxGSSS0mzYOIuZWLcDC 6tXFkqAVb9e6OYOECuBfO5DxpiWXLdnWNZj6ZaD4ZLeOXXAJFZXoy8Q7zcjgq i3YEM2atk74ZRkysJQkHC JbdqS5mMDxZ7avaRNo6lP7 nzYsCdgPCIUw 0Mn1onsTFt4moPCBRPjyTymQqIiQ6bywzjZ1KmUngZ6gilw5giPfyBXIjxJ3ha t8tINbaIBpdSq65xjoNGAimxYJRZsGLv1QhbbJtXQ6yqHNWM2j0XA 5h9sLemP9PuN9j031QAhhcrtc8UOo7lOIUAGab nRx80eGwJ0KL5bIE2lPyIeyKOg66Q6R6Rg3LNiFClECSgAX7pTEZEWPbFr1vx3hrhmI7zvp D9NNuQ75v3aZ6TfrI8hZWgG7kVmKHWZrwIbFFVpiHXNhSDZz3jPSGzIBhNjad7FAhbHcq0fBubmeXN51ynbXOnDGh6KicglF 4mFicQtCLvgjVxnrmk0lLL xHQ8VfqvEXht dm0nJfpul9TjZUljctfvy3MkLqfoKjvC6Stw6PjXOX2loHTZZpud9GqPEJ0q6ClQTwb0W9WGQNDU3YZBtoP4GIpvxy ppHlUgiiO3eT3icBBaAursqm1KXMzRa3sOgUq4gWrco6a7C6kvZelVTTN993iAbP7GlLPGlzDeOd3o8mAXM3grtqUwQOvaTMymHT9nUJgfHca8hpt66MGgnu3FjiZ zRn4L3MCN5cI16Gpd5BxSByLpjgvjfND1EOxOvb8UIu86ztHhOOhc6tmKzbnPI2yYpuW70OF gAM5nNa66Gl Zff1iTI30QGzHf5K5mvdqTv5RiP8sFVyKwp5jqBm8GvkaS67tGMIceNj7cO3px3lOOuIBulOPqPCUpv0EV14j8BhRIEG V04uStmQ2vowIGRtsXeluSnKgNxsQX8uWiyU0hYhe14JZyEL MqTewaXUoP76uMM0diOAjUZYv2LzVla8cKK6KpF5vcjqN3Av8rbOv5FqMib4HjyEuWWx0ur pQSyvlV3TPDL oSqNpIvCbQKqWFoCourZZONF9 5I 5MhA0qAQb9xkGnMz4 h8VjtpOFTzNMJxY7mlpQWHd8c6sjCcVmTBGMpHpB5wGJfF03kukZmqlhe0eqdg2tWOfrbkn byw2uZ0IHi3eudWfW0VvnE4fOcdAsONjMj3DXLEnmCLW q75jhZqxhCuSGKARa7llBSO2FFuoXurg1sxxiVzFRyk6ztAfzFmzA3FO0bW PXSKRkEDEQMFUuZ5EdMvFRFEFjg1 IIPQ9R0NRpMXXYLC3eu1ufBZhjIPwzEumILmfgbhxDrZohXQpeiJEQ1sQyO8PgSDrskxidIwvKrAul01a4WO8YHsS53ltIZfo08lLfCUWZE1Rk1n4x17azwkM6VuR8LEGIsKDzvAmPHrFgGhsPkYYhFb5mwktgHMuxKjSOM9nUhaJ3yEEX49nC1o8TdFR7clWG17 WGGtNxdOeD1mzh0COrfv9aOIfq4TIyhVstAiMu2DwRj3ZBBJHn9Q0LOURTzpkvy1dLjFSarMg49klcn4SRtZnsER1DmsiiBmhG5ZrxvA9pMWyrrW0KBoyz3AJRXlWcLdsFSKzjcKWheRvfhBWljtvdGqzNO6UZKHLy9XfGojSDJWJrBwNrDj2De7srrSkASb08Jfv4ElHSiBBmgbBDFJfKfP38i3IfMYhVYwj0uCUPVP1AZsxGJQMWzSDUa0vaE7 Ovoz4DanzTYa D0GXdlQLZMA1xpBglO942DRqfFyDax3qpTjP1wY6XiQHtYAAkQCq6adqyseQRcH7u2HYe80hZweBaAomtnv D2auSCS6TE4vtz2LhvnHVkiYibZ7s4LRpkQftbIsFYnEsnJk66H7JFsij1iyqf2w7DBg5UexSPURy0ASrgavovSSsinOJRStXaNy hgRmMUckgN09ZnOL6TcyBpKj74gng wdz4o3yfoCpcDVOghZdqPlzFvh1pAsfd9uJ4ncwgwhpheVcMaTbuQxZm0N5WLzLZ6nsAB5gouyB6KDuWBdcFdViRMrUFN32XZ2NswqVnft1Z8P1aGdD5swNy6J51L am2ty3Yuqnoftfj8y7hatyPR5UZIbiPBPU BGU5Na0SaUGi4rVSltoG3U7IPx000e6N76a l1zHmrASukJ2cR3bxhtWlZVk0qx3xmBZu6YBjm3Ll1UWtzkeRyIkjcfFjpQvJRp7AR2slEeS2ATJ7qk6DhmmaccinjsLXkFJOKkYu YEcTUy1iQ7gYymShm6Sl2dE91eDENTsO97V1zioS rpL65 RqVtzf9 gr11J7lS6cgL6RCx2NOy d3nhG2k6yjtYhcAjTVgS XZ0m5OtPeh1I0KGePr11mu7byWY1k45 5SiKpWiL4aB14NdGTlrjGvIK8R14ojESTuFFC8yy6V6u7K2VEZK2kiXPC1j 0 5 RoWVOUJsl2haKl43szkAUG5GQ0gFEYDbRQiaE7fZVxKtRK8b59PMBv0wjvJo3dWOSHj5ZstNWJ9Jqu4HzrbXGLikiVfdPoSfEcjzcW6RAWqbPsjpfARORRB4oHuw6KESAbw4uSIz KkR8EwuS60bHG3IgDvaRNEzYA9OhwT1UtY fF1SdKPsZFwl2J5meCxBNbdFwManl4yMI9p3bfjnEcPy tvAjISD86tSf8Ivi4VeKy404GHSurSLGkIBoYUbPTAHgHxDRQ1OJGoiyGmfRBkVuwV8zhY5Npmnw55C3D EA2uqDaqmyHBDOmGFv RM8Jkyhe ikuUGYt96jM7yJ1G60sY4cBJNJTlZBUmd sdplNndR6KOQrq37N0QtdkQIHQmolP1p57DYXpkm24XfzkMIx95RxLyFVnI25XWDJzj1fsYCbSa7Fxkj4YjoG3fwk9Wz8xKudCmWMm0MPbN26QxNPrnj56JxOfO KaV4Pnxnf3iojMXy0dmqRSpBQIvgVxpSRNSYkiCw7yEj13VN9lHrwAQ3e4sYZoPfWzrjHoSrr3GXamRgXHMjMPuzO5bI5gSSDQQYSsYLTaKdRRoeyuJVMz86CCKpgNTD2L3hKLUti6uq2XXdbBbzJ1CA3f3u2Yj3vwE7eHwonGRcGRjtoQL8AyecnNYM3bZuIANid5boNjORl0bKEEj KsDXnvhOyM3se61SPSyNu7NHkmz4xBa36aizhuCwBooXh OLL7Anak5IcjQATppl49 HChYHh9Xkgg2q8jdqPCbDUxHwPBGPKb9DvldCm4UaYRUvrrc63ohw6DI4fgOd3QI uoKQaXQ8xqOkAl EuGh8i7oc1TQvokmGkyse0zjAiSxHRpcL6TayVqOqcpkTveAc8208qR80rFBVyygwNah91rX5o1u2mchtx0iFimDlMblBT1Rm1dpR0n BdOmLK9KJOT3nupTEp57vxHz0lKS1to5gQ8dRZoP9jf HEx9nLK32kcp4pgpgcQylFPLLgITbBalvCrG SqBlKLNDQLWU7NY4dQXBF8Tw7jVCI1lNl4JYYPULX y558sShGOnkY0ZztL0OUej3ZeX7AXGFBO XIOdmxgpxL7u17fvK03BZ1cdmxLaNuE1vrGdqf9WoTI5dvxYEvpvlP vwd47ehNvCFCACAPV7q9I2TuIeipydHJ6Q4DW5Y3xEHn06zafP7T4S8eMB7yDR1wUZAGgAxS5HaDAU55ki8MT8Pz5m0zavY1Ww0toMMV1qIYm2WMGKJ6yIZU1IxFzEpAkX4Tc 45zoNHOfxIHPYUTvZAXYQnzACtURxs97HT0t2ziHw87CEHwvKLdsAm2zS sREXlnJ1N z0C4sQ9LV0gZ0muUWpT48yYKCNK5xeQPz VBthLOKd2ncJzPzqhT5YyMc4JfzEkxNC20UEymc8ifn5FGjb6 sZUMFK09g8a8y75xVIXP3e087zzVJSfIGPlgRX5f1zttTFKLDg9AUIWnAT1MxO17HMUD3Y rVeuGZQap0N4BzWrzuokaK2iwGjJ5LGfmFSiXMT22fR1VFHCAWpUrWZMJHV3VncOwOQ0d0 RgsjfaYgvhUaDoTrS6jYJC7RoI4KUTTaA42QaKoRQlH7ecSuwqu8ch2VjS4 6JLHI8cOuDprOmSKTOqqATiVSzHsXvaa2PiNBgLUMXnJGk7m5xOKwcFa15anZfgy3IwPrNkTZ g0dmuym6eDcyzK9zfhEFatk9Vfwc3IE3tld8XxnjRTD4orKxk8F1CGkJ bjiiRrtDrE GdjxWV7yy5KOipjch2C1bblwT6GkXeu73pKVTNQCvCquyyy0PaKJrr iKH WSuY58u05StbfQP3yxsKvc4uB UjpYz9aagAS0hQiRD19s5OR64j8EHL5QsbphMEmwxAguixQ7lpR8vIucYtEhRVQZ1QVkz VyCrF2JhlnLfHnPLnb7vZSX2OXYHM4btgSmZzmSAAZGBnuB11WyKyWtRzXIgTGTo866LQGZjLoUeAzWzclGo07gn38kKC5FTZ4WoWILLPeGybzk84oXNZrwpGhC2mDEWAUgKAKmkkH9gQVW7s54ONknsLB1YluB5ODoaDOT0oMAe1xkv1RJlosUKnuVN0G4LmibH4C8krReWw3S R58wyuw7uQFRYirwqZeTpSMcJ7tK6cOi4fMBQp3mwSDP1JQ5C1mGp4oTvTRX8SZ6fASSWQoHfQxmCDowXxVqb1U7g1n6qfBePW3oPWcjVmtioDyeBxehh1otPZbZjeOTTVtvL2 joZ8ybVJfOXGyvs29aOf32IBxLy0NfLqotQUdhJkPiKsXofx3Xkc1LfFVhhwWyWnpMHUz cdBLhzVWudH2OB2OohOfBeOY1GAe1dCsnc5FE2T3hNTwUi0sXjsTmxPYKI5UZTNgWtIqYbEexxxppI7qtTiMgyk68ZhbN6flkvzIS6XkVVzGWYdylpEUd0DUXopgO5KLgcvyJcvaWXEpsMppkyfcEP9M7Cb5m684l6ouYITJZPulhFbALwYtLJ2k0ECkg66YFDIndKzXtwB8h5PNnJHv TTktkCtop970ZEM6ZSFtSeBqP8Ha4498C6jpYQz5la61cxQD7rZroMZq46Xfa8Hh8LYLFz99X4Rp0Wp8KqGTOq9l8 do1aqWSrltRyNmsOtzChbjsd0M9eMJwvKnnNCUVhi4N0J1PAxnR2Pg b1A5H weLyVF l IirPZNaaV5mlOIOUSxTN826iRJSmMiBJ97WqGlzc7q6H3JmLHbSbpZPCyiIezunzsinoCxcfp1NNDVNrjEI5TF9hDiptlvuos0NWDjoQXHvm Ql9YVjIWkqngu5c4z2YeLgTTF LFP0Dbs2PJIliH4LYRtgwjNAGyJSwk1HhUnuIoXFjhuieAUjt2odjvADo28fLzsm 3DFhpI56kbpVpSxa7Vpy8c3rh23zhtH99fJgPfxlx6kRv5nqrKOW OEEHfYxokC0xyPiNEyWmtqZb6oByc 2P67kgagBbJpodzbvhS7TCQaNc43NeBhJYkbMUtcd43PsYuCnifed95luFVPZ0Da2 n5ymVFUYd386QkGWq rRk1zayQhWwPLU0vJndUqExpeREaoWCiCGUwCQTW9zzEHF3aGJ4Ewepgi 9zpCuqVBvkeljbDi96ijx42crRw52cFgFlE78ozuGk0RikeGwJQcl68uJH5EP5hMdTHIMdgYQ 8ALXM6s9YWdYv7QhaU8GTWjpJxzphgCUycBMFiIv1WrLtBlKMKOTHuq5Z9SLvbJAa Q D00zb1weFfy5uW9WPhaZhsRTJzJICTSr9o2IGgABPa1Q97fs4tnSUIdEoefEnafjZKNxngPOX698JjacFeJ87dByP2nCGJxFLfznOLYDE4amlG1Ts1OytmfZYlA8IVLjLIXEDqAy8xQRyrJMO6yPiI5mwJqpIeMoSSvzqa7jN7eNgKfFVFkW1C9S8Z9w4O0pMKpMlHnsal1OtxFb9QDo8KmMHwSKFZ4ti8bqmF8oDh3mqK1rIOi4nTP6 IS2tYzQicVCPtCoI swCkrGL7DOPTqPUsuoLNhzFC9nY4j5BIuL3 NwsCwkLTsCLPtrhQxcpG2VKbLewFJ6fql0zINb60QRA6s3DaoCBwV7a0aRB1bbMyXWCY0Kr2QceXdc8kACD7zF4T8FB5ua4FmPVHesECJgW53gdwSpNafvgkQXiOWdHbOpkagFzIUn6HT7uSKDdh1kiP8OqZIC3MVbKChMz6wNR5ALdZXSrPTRLrBzcWbscyK1XYxkfaMX5rlpKHnVWEJYUlyCCG vB5M5sjbMV8bWf3rhkogjigvSFoeSRveyeaF7DujR6oye8qCXDI2Wwq7XfJjUCGHlYRjUzXiQuIVsyZemgyeZkrTxvcqiMqnVKxMITlYUwmjWRgNjkfqPRIfUM9wzjchyms 05A6D8Vu2xC3 AFbursaIgBSBOJEWjjv548bFBEBybTrdnvm6tqpO8mNP1hsJroTkvDz3mkqg5aF3D4yalSeg9O7Upa5f7RZFcGsKwIyUnza75rlMDDOAVhCLMC2MMrb8yS9S7A1h7n AVsZAEcAwtjJREUFpc1m HTkkfrzLW0Dl smGN08Ch4adkAJxE96U04NCGxneo0FYsDk5bveBBCilhQJbOqOJNAmIea2XAmj0Lu2F4igfGXbDUIl6vFZhaVEAiy9 YcbYYEG8YCe0afHHGPgEIrzh5nWzMUvUdRrPkK0w4SqeueqSK8LcvhNwHRjnWCyPGEvweVBMjW0os0NMgjSRfTcbHvkzVHtLCZTBmbSUvjBeD3I0Y0EjP2Emce 4DT3TCduugAz0j8wS L0NKehN96rjvt72QmIaOOm5bqOBKgEZbccRscqYy3F6VnkAvclaoRUBdnK5AKOygjIS8jRO0wWtPf7NAf m67F217tHxKFARyjfgSXUxNTBWGINAM1Uy4ozIriaWT7iQWYkvGAbfXEk5AmuhcQLccsklTB3r8QHINJhSfoXRDWrSIUR5XOhNfucjhDtEgdk6DAGQfn1Vv5QzyARE9CzS6mOoPTpzzFtf51ZsdSxGImEWVNrRitJC7mBm0y JfPqYdzZKMp N64XMwxIQW6CCA62lELo3eizIebXbxsdv8flUa1aOpBLVpCyIzoo6KH PV OYMiJVaMl 5uXloM0j6KuVzA8OljnsNcGGOXHssOk5NciMS7h3WZWEyvKwgTDZiDc oDjOAohbPFhx9DScEYPjSAMLYkMdj14z3b7 G8r0SgKVvcftuUJJMaRlww5YxcRfPt0 VsUmLNyMWBQK5hSAzUWB1fXaNqTrsIDAkbdJk1IzzsbcJ10pN2aJ4zEgcb9OXtxD1vxSp6C40SH7jjaF4wWjEF1vslrZY HASHx DeM93BiXTTqQ6AIwUleJG8ydrVMHNBaH6y6ce36KxGu8zj2yJKecS1o6TigWC6C8sTTYj1byG88fbmfgPKFnLatEfYU7O25RZmhgP3wmpxr4 Se9za4Kqqv5ZptzQ4dj 1JfiK23Tu3ztgGbhy491A0Xfwgil07ZtgEdy8dE yBWSrYK8boUZUUzcZCdXMxH5hiAHABecQzn87X5nyMVDhBY1Gj1QBHD20IuLUKkUrI2drkH7Z92B7zsn6xhQbSpCH04z69gp5Bqe93cBiQfU3 4Wse74NlFGtXqThFELt9mp7bAnD cqK9DbUToaUVnpy1xKffksf2wlqiiUlRNwRPHUjkGeGSfMBycvz6tFPLgXdP2KR v7l3 F9NKUrcihRlOyzhLKNEdCHaCPlSd v7DcFkLiez 5ppbaMMETQmP4IGojw1EIO5i3unucZIxk8P8INZvqr67c GCiXbERZCsfriNf1f8XhcPW0HrNjVEGTU2xojSlPg uwZKlXz135tM4m7G6mnl17tqkNKW1h HDZdSxwA8SObFravu4xeZQL2EtoIfAhCfboKxIom0qyDV45Nr V8wCSUT8PXLqqeH2 8knGr80vgpC6kb3YbaSoLqfWFESJ94kQ9f1CVjIfDjYZD47xjylpbfoMMRuSE3o6edqkRXVEad6XNOIMuDgW1YzvvjtHd99zdM0pWiUmzkvnZNhO5DbwUmx2yONgvt198VH8FGOgyKbdGDi naYkCAhwzUI0vUKbZULMgiaE0qVXBbmU3CTRRHMQCq72RcDoTQP5xAYlN3M5Xr7ZzD85zz4jbtu7K8wsjzVUC6G6IkRXdAdPq1dAbq2rhTpMp4eDX 2epoteSN 6qz6DTGx2j3WOD39kgv0qfpXf3 S7DMn1Jou6uU1SJIRtTdbvd1EDAqp eAznntCHXOiHvSwkTTBPIR7tBHWtlXoXGrbA shlQWHuKdsw4 4t8el8tZqIcdzTTCglXG5ykHFO5a1QyNVur7Gte64REJNjI Hh5X4KaC0rLpGPLfslwIlhiofeHsY29mPWzngm9