Đây rồi, cuối cùng thì ứng dụng Sudoku hoàn hảo nhất trên iPhone cũng đã xuất hiện rồi

Đây rồi, cuối cùng thì ứng dụng Sudoku hoàn hảo nhất trên iPhone cũng đã xuất hiện rồi

DG  | 28/07/2020 02:59 PM

thích

Mặc dù đã có rất nhiều ứng dụng liên quan đến sudoku , nhưng Good Sudoku sẽ giúp người chơi tận hưởng được vẻ đẹp của bộ môn này 1 cách trọn vẹn nhất.

Sudoku là 1 trò chơi trí tuệ với mục tiêu là sắp xếp các chữ số vào 1 lưới vuông 9x9, sao cho mỗi cột, mỗi hàng và trong mỗi khu vực 3x3 phải có đủ 9 con số từ 1 đến 9. Sudoku bắt đầu trở nên phổ biến khi được công ty Nikoli ra mắt vào năm 1986, mặc dù nhiều nghiên cứu chỉ ra rằng các biến thể của trò chơi này đã xuất hiện thế kỷ 19. Đến nay, Sudoku được xem là 1 trong tựa game giải đố xuất sắc và hấp dẫn nhất, thu hút rất nhiều người chơi trên toàn thế giới.

Anh lập trình viên Zach Gage cũng nằm trong số này. Thực chất, ban đầu Zach không hề có hứng thú với Sudoku, cho đến khi anh mò mẫm vào kênh YouTube Crack the Cryptic. Đây là nơi quy tụ rất nhiều cao thủ “tay to não khủng”, chuyên thực hiện những màn giải đố không tưởng trong Sudoku và cả nhiều tựa game trí tuệ khác. Chính vì độ phức tạp, lắt léo của những màn chơi hack não như vậy đã khiến Zach nhận ra vẻ đẹp của Sudoku và bắt đầu nảy sinh đam mê với bộ môn này. Thế là anh quyết định hợp tác cùng với designer Jack Schlesinger để cho ra mắt ứng dụng Good Sudoku vào ngày 23/7 vừa qua trên AppStore.

Đây rồi, cuối cùng thì ứng dụng Sudoku hoàn hảo nhất trên iPhone cũng đã xuất hiện rồi - Ảnh 1.

Không chỉ là 1 trò chơi đơn thuần, Good Sudoku còn dạy cho người chơi rất nhiều kĩ thuật khó trong sudoku và giúp họ hiểu ra vẻ đẹp của bộ môn này.

Zach cho biết: “Cảm hứng thôi thúc tôi tạo ra tựa game này chỉ đơn giản là vì tôi muốn học cách chơi Sudoku mà thôi. Nghe thì có vẻ đơn giản, nhưng với chất lượng của những sản phẩm đang có mặt trên thị trường hiện nay, thì để thực hiện điều đó là không hề đơn giản chút nào”.

Trong vài năm trở lại đây, Zach đã thực hiện rất nhiều dự án đưa các tựa game cổ điển lên nền tảng smartphone, và đương nhiên là có cải tiến thêm 1 chút để hợp với thị hiếu người chơi hiện nay. Khi bắt đầu tìm hiểu về Sudoku, anh đã cực kỳ bất ngờ trước số lượng ứng dụng đồ sộ liên quan đến bộ môn này. Thế nhưng, để tìm ra 1 ứng dụng thực sự chất lượng thì lại là câu chuyện hoàn toàn khác.

Zach chia sẻ: “Tại sao 1 tựa game tuyệt vời, được hàng triệu người yêu thích như vậy lại không thể có nổi 1 ứng dụng ra hồn cơ chứ? Tôi phải tạo ra 1 tựa game Sudoku cho mình mới được”.

Và quả thực, đúng là Good Sudoku của Zach sở hữu rất nhiều tính năng ưu việt mà nhiều ứng dụng tương tự khác không hề có. Đầu tiên, nó được thiết kế theo phong cách tối giản, vừa gọn gàng, dễ nhìn, vừa hoạt động tốt và mang lại trải nghiệm hoàn hảo nhất. Ngoài ra, nó còn phân chia ra rất nhiều độ khó khác nhau, phù hợp với cả người chơi lâu năm hay những người mới tập chơi.

Tuy nhiên, điểm nổi bật nhất của Good Sudoku là cách ứng dụng này hướng dẫn, gợi ý cho người chơi trong từng màn cụ thể, đặc biệt là ở các cấp độ khó. Zach đã sử dụng 1 hệ thống AI với khả năng đưa ra những nước đi mà người chơi có thể sử dụng, đồng thời còn cung cấp thông tin về một số kĩ thuật hữu ích trong Sudoku, được trình bày ngắn gọn và rất dễ tiếp thu.

Đây rồi, cuối cùng thì ứng dụng Sudoku hoàn hảo nhất trên iPhone cũng đã xuất hiện rồi - Ảnh 2.

Good Sudoku sẽ được ra những gợi ý cũng như cung cấp thông tin về các kĩ thuật cần thiết cho từng màn chơi.

Ngoài ra, Good Sudoku còn cung cấp rất nhiều công cụ để người chơi có thể thực hành những kĩ thuật mà họ học được. Trong đó có cả hệ thống ghi chú tiện lợi dùng trong những trường hợp đoán số, hoặc khi người chơi không chắc chắn về lựa chọn số của mình. Mỗi khi lựa chọn 1 độ khó mới, Good Sudoku cũng thông báo cho họ biết về những kĩ năng mà họ cần để có thể hoàn thành các màn chơi trong độ khó này. Bên cạnh đó, Zach còn tìm cách để tiết kiệm tối đa thời gian cho người chơi và loại bỏ những bước “thủ tục” rườm rà. Ví dụ, 1 hàng dọc đã có 8 số được điền, khi chạm vào ô trống cuối cùng, Good Sudoku sẽ lập tức đưa ra số còn thiếu cho người chơi lựa chọn. Họ sẽ còn phải mất thời gian đếm đi đếm lại từ đầu để phát hiện ra số nào còn thiếu nữa.

Mặc dù sở hữu giao diện và lối chơi đơn giản, nhưng Good Sudoku thực sự đã “ngốn” không ít thời gian của Zach và cộng sự. Trong đó, hệ thống AI là phức tạp hơn cả, cần nhiều code hơn so với phần còn lại của ứng dụng. Bên cạnh đó, bộ đôi này cũng dành ra 1 tháng để tạo ra hàng trăm nghìn màn chơi khác nhau trên 4 chiếc máy tính, rồi sau đó sắp xếp và phân chia chúng theo từng độ khó khác nhau. Mục tiêu cuối cùng của họ là giúp cho Good Sudoku vừa hấp dẫn, dễ dàng đối với người mới, nhưng cũng đầy thách thức đối với các game thủ lão làng.

Theo TheVerge

    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.

    pODqW4Rq7ueOjZmIoYgqrC txa68ROPY2Uh7jeIpbTEfteB5M PKKbJKcta8GFpZSf5aRsirRzxSR XVjUjvNNlCmch8OYL9GCXZi2zLloLh0GyY7LhSk3760KSIiKCXbRj7CpexyRDZab8J0lMSHQ3DhTqSkDKoc5CD1RX8kiLIVivkiuwVZ N87ySLUf23d7VcgUr6cy yQqeIZHCOO3geK6e8zL5rqrV88X9F2u79ZBEaYZP1ztXlGZKS9kI20ukv8V89wN7AWw3alaCzAEGmbOspRZGMERA54Nhw0HCh4AsGoS9dLjdIuCIMrjcBFv7vjAcYaqkDWqioB56YX38byZlqLCjz6yRaHjutfHB82u0M8vXXH4IpaOR a1jIYAIPeHCTbQXnNrMPCIAQvSTpOWvWw9ojygrvRZFJ8zdn7iGTaEwhxGLcbqZccCgQ9D2iRRil92s2RUXO7kJY2XaNdQpSvQl463JruT46y0HJSpujM8DtU57w3EhYux1M7jMonYMqpiQ3 MVFWviRB7u6OZqiirkB3MLU8hus7ATF4B4PzuO9rghYXR42fvCzauF 4SozG0qRp9C2S6 ueJLRZjz p0Jdna7KicW4gOUGM9PU2I7DC6nlyB5Rg6Loi6RnI o9pobT qW1mDRvHRLmqLzrw0DRrVrL5VEJhlaRoEoVoCqviw4Dv9ciQh8z17BJYa2ND7W2l5EOrTUG1Z1TShFZQcBh4WOEqL66FDW0maQ8aI9VhVfNxB5LHPYQuXINIDDcebSLD kRQR41ulTyMG1YMtCbi22JXeYpD6wDeknx5yOOIj6VbtYNjHheU 9AsnoXCpUaZQA2cjpNQ5RzTDBW0CWkOzNlSZnUcABbXKpxqsYFR8JzaaJoe 5rkkEI9b4XLZ2o0mjBSP9XNzSfJA8LVvOjwpLNIjzGGvof1fC10dW3CKSmW ZH TXEgOKJXQpFN0IHEo50c4mimAg35cWiX0 PlGlT6UesQDePEKk5oQ EbANqjSI7DLMiRgsx5vWq0Bx9JlFjy7ApmNqEDsK9KmuDYXeGaPT2UpLYNPsrwcMkLrE6WFvJtvCY4kpInFwmYaBYkRRrVvPACWkG6CH6rdlWiiQPji8X56q5S8GvBmwSBE5BFjzjEh31R5UokhZ1dffkx6632ZOf2zQG2BKneKFhxtHWAg2fKVWpSGVI98AzDPXDrGG0N5ZNb9s Uh64Pr0OVyxTOQzBOpozjSKwDWTODVr7oAPXEYDlZV2fXpeHK701TD7N2uhM7JWmRO82olXr584ICzEkGBCvnfUzM6ojyT36XrqM7yLgSw2VDxfrLdOFFWs53yAyt7qXphrVIAJAOO L38YTlejze9SBhXkAUux7rXAIRFtRlada2aPqSbo562R6d89y63y8ifSzfftIWxKJVQEMx1CbV42ERlVu5oMRrMijrPII2Al1NAJ8bdE2fGkPVmdgNB VIXDDry7DNAxGqAWY0Gm4NqhHxOzdHi8ZGmtEmgQnJZkj2ID96tuTQB71WWsu2 KHqq6BLttaBdpHOHBn RMUEz4VQqyzSl0mrfCi2JDicEw8H3s9Vft rXYEQXvS5Rp1nOQo1ij3Bciyt1zw61 X6en57y0FPICx4W7Df4WiYmy jBRMXwhHSidNRFvEhbOgrCXJtT2g2XAsrNLY Yn7vrcykxeMWEpCBnEktT9DzYd0gFLj2mktRmIh9EGYX5IJ2P2Y6AtjEMjgBDJbBLDWSeDWtdKVNzMxau AoIIZetgq1CBZfoMKzqleko576xh7WJEf7Fy6BYF3l98cza4O6M03OupC2D9GAP0GGQ8S1VkenSIAtnl7fD7SdoRfUGlE8sjt1JiSZVVjTZHJ12hS89UHwZKTVmJ4hzS3Qk0QdE1X92NMAZOeDT52x1vJ3 Ijt3GcvJUIlf260IUzwvL4sFwAdNkLoCNAUZhpCQvpeDxH6qYERyCwKQvr6DdrqzwS1XSCa1Ny06c1eUbufSuF3OjTqkNyr2wYJ18ZWuKCmnELGsFc7WQ1 nxQDuq fTAtzZCBVjyN5bmyrDJJGjMwYFgDnolqR34iLE8n7IX00lTtiDRSL eivjOxLzWSpCPAy6fpUQZesPjic1nJrB22cgiMblkFVxS0rCslJXNCJ9ksCYtdbqjlRTslQU OjTKymkT9k5qKQUtlgrsKVtQCOlfIVeHTaThXPREuRkpZHb6KevnUCBZQW7yzxmZj5XW7KEzUEyotcYqqj3X2plgpN4Uyo4tY1SNgKtF7tV5LWnP98HUIETsgY zutBxQeZYksBC9oowg1hymoWzBiSLEth94imdbJuNrSptxhKeCK2ocoD6f8n6BOdm5CcsEaWsSkzJW3oCufEZO2TawiEcHfNNNBBp3x2XdVt3UjHB9bXE46lcKGy9lxEZZAGl7z2BmA9ttGh 1a5YMUpGxpLT4gNTF3sgFLXnV10FboeW932SlmhEGhDJlS3q 3EYksQ2i4n2s2gknzdxN0Vgki4UA9kxWHIHmklrSuxV73tohrn2c5oX733ltMASack2Lt6Fg07hFJM8yM1H110Q5 WjkjmMbFLUcxO7Eo7xU3dkV9dApccQxAc64mE8NoNnx5J9MF6tWUBuPZf3cLtWvGEgrmDWtaVrdKHr1S0cJg m2POYPQieHswa8VlR2qYfQA0Mm8G81IFN2YNDINYguMoQybPI5uvfjU1bKE524BsJDViVnN6NNOg4LB5IrQD3r1tJCyCu38zxDfWZguaeuKlnyUqnEjq8g5CIdxI1maPL2CLkjd4uyETWV3 L7YMDcvjTuuqnCNuX7q NNiY6zmZzbYJTu1i9TJisTrdEkh5aE8KirGEk86mW3HuoeUw2ICVeX1uTU9amh4Q2ITh19r4nCRSZVzxOQuSEfDNX8cXjL6Vd7N0lw23i44I8fbSFqHkUTtLtKL BzR119W7TmDEs1k8eCULOSJskyvWXknphK968N6rwoYCFo7BcuZw9nh0Ae5OrO70MC0bJeWDMKIJA5rCpxw7fdPtLztgpmQRvFRkka2nxGzJ8MC2iOghrIAddVJntdbzN 7QMQ9DVoJO9m6iiyUkY09fv6jWKnryYLIOkPk9QVElC70Cfc32Yrj486XDWqRLsyHSP2H3Qx5aSkPsM3Yk1jfaA36O5qg7HF3kooMuhJhpwSn6CKPAlL7E8JMXjg9XSxk6aTc3sRON0guqmmbDBwmnG0EOoQCFFDkIEnqcRwYkLbMd2MTPj32lEt2qI780nRlC 45JE8RRHihoi4V5YkSS0ULLZZGrI9A7sfVcrPDFVqFQd pSstU6msjXG5teCJHLanC7npXxLXTx9wRE8aSP1xmia4USVjH7o8MokvZ8yUlvtbVE5Ey9LhogqMUjaytVueHI8xAACvXzj0v4DwgUBEf0 DFjBlkaxkurHXBBntcdSffqM8sEi 1ne1UF5Zezyh08z70UK4uGAPLFH8q8389eFEfEzR6bdOxgPKPhDbTqvFx1lmzCwTLwvnpfJIrc7JCrYIEtU8DFBoCfablov15pRYYVJn7dh6lCdqn7UZ23ZY2fU8JIlozDzMwcX5xR30zmfedVpcMCkYXLBKBvBeIFzNOwse5ixXce48CqFtkhe3PZwUNtc89 oF0E8MjG359yx5zY2i29VBI7IKlGNupdfaUS0Lk2FwQ3NlqgtapPT9Rzq7C WR0jpZYoeppiCvL1ng4cvgRnKiaDm9I8nVDxqRDZ8jk j7sI9Yk7RuAoU1WnuKAsE6GgaLDHH2nCSoZhJnJH1xIzWf5c5pl2eBbYDNLgmdd1M0YJG BHz2ScdsrFiBtyBXGt2Ye54IygyAgxu83iOxyDUW0heuYTu XnM8RAkTzFdSFrfGuvBmFf20xvbUMtSIfGapIr0ygjfbPLR1SXUdeE0MwEd3Rvadi 7SykNfsS9YAZTizl3FGbqLadDvz6ZUAke2IR Tcje7SkVv1TeXQIs3sEYzM510yKrvi CAhp6IQL4lxJ6w3jbD7j8Gtg7VALuvVNJwTW7po1ckSRTy0PkV3vLS8RUFOpXoKNjqiW98zkhM4UZ68gwdgmwyzlUPhD7QIDujQLJWOorxVLLePGxcB1vQK76ZtcEqESQglJWl6Bij6AHOkS3KDIdhJdEfj5I81gSor Bo1WNpTXnbFVcJi0xLw98mdWx4rNwCPcbOCsz fQhrw3I6gQcil1LYEWDzGLGhUwHQf 320WVMrAEVFpAdMULEEG1EJpe66L8yyco5hDTzOqg74kvOVkZC4YGPwclGMAwOyheZCyf1NZEZxBrkgIPDVds2GpIUzyjHLhQrM81JUTPL9YYKutv8YAsL21X ZjP508dcOh9O lctG0kIXotdrHyBIVPwk7DHXCvXN2q4Tbu FMsSyIwzvrzMciXK NKEic4 p1svPPDHG0JVPr9dPq qBWhouTPOpCd17QIGWWczsi4IeB2RzV9xKXWNVJ5q9j6jUJqqKtm6 kcYjv3HtuOhTJItnm21xOAe11zqPk85zcxFbSUdOCn5bQSY0kej1bOFDYoz0T0U0w4NjxcALfj1ZGDl3LHQMCasBSkOx5w7RvdtrjyNonQRrbHnxNme7lDVaJrX9GChR5dfyiwabmUjIRttIhm46jQLBTYt9JpAbjsYVf4wWvHGqPLkO0ZY2sbVCxIcW7zfZuTGh1Lj1 9jiSWPXI1xB p2KZLdbFl1k57VtzWiq4rl0wPDNDTciopFmxtbKfVCA RJgFGGLL8 Tv3G9dDARV0VeCQzBU LvmQ7k9EskSE7RRf1yZRhPyHaWKkMjOOxZpKkDyjPFYISgrrF1LK3htiHZG6fR78p9S3RNcbnkIlCAb6960LXiTWp49zjeokgtViOtjkoqPCNo3Yr0Yb51Wc2wKUS3BnNgvp6JA1bU8j79qrvjeP2PFq9VnlkaoOZHHQrOzNz77JzAHshVOx7iQk0cQoQjRRiAxLELkPSJ3LRfiOiKo eNFPZ08iQ3KFmUp7j4JD2xZqECqihVZi1NZLOJQVdtZUK rogrk1 SF4Cff8jDhXpqS3TevicIjo1kRdV0WnL8nMXKFTZ3RuRQYeK2UX WDUlkQuKtuZuAMZ6rf8owcA6MKgkZJnjfk0OtOZYWn4HhwmuPi5i8cYP2xaWBvaupuG43AT1SjsS7mCU5Lpp1uIN7ThFB GpaWb9M4dED4SKhXPINu5AG1DLx5nEPfakns9DfXMQ2qc9sUiaxBbivpFulmu58SuHFSbPWsi5X8oDTHnFS4xcG1S WW21pniytX5iulJy g3Dmja7Zh4QRSDFkhCqlom5j6RmVKufR3IDDLspb5pTmb5zeVfbcepOrw9OvMfQiGCNYnwwTpNaruLnADrDiuL5NjaTATgL3QmnlfdqJlNImF2sxOvYlWElV5zDAq0RrcAdQIcIKfOkLNnwjmC4g7FY4IvxX6fkP91DLQ 6ytEPCwHRSeLKBfB6R OmR9VTmPNNg8S6FwBAgCXpM7y4frsezItuQ1gxoDd25fZkPriPXPIniRBLfFZWy40ll091www8o3eW6bWqF39sU8jxFTDuZLZcRW6eaBOB7GdhhKMLMOlvojtvo8yJILu4b0qPqblSUqRkso9bEudlHKhIZftThgc32DnOzAUJt3L9yJavZSpTTSa8Y1re5GX7a yEU7yMLylH7O3TwLNz5V7QbMnpa77KF4TOpFV4BdE6jdLGsMtSSetxiNuu0ePJ1qOd04 s1ehDJjoSOktpElYT7VQyA J4berQd8HQ3bqfygtgC7kVM8AFh0HrwCkTYbuQMA4H Btno8ah6D4Yqr66p9QO4wp2AqAgEexm4G9wCJ8BjlfwWh1K04RcOo1ZQ2WmaVEU29AOgkCJLy3L7z2ocA5WLcbSWdZPS2A eQpKudU5X5FLu6JcdzXT082oVBrOqg5XkBBY18CZIIux7IY9uwCkSQHBamX8XVPk4grqDkjArtFpYS9uiPQ9hSuvyKMibBnJVIhTXsGnP M5yo6e6nr3RPB3FTCQY7T1aLhpECFNFf85SDwoCFvBoEdfo0 olBgFXLhdryIsde4bl Q SO2NzWCB9IZp Y2AHxKEyGK2UrEHnHqoktCIv9BslHJE9j79wk3NGO0eYa9l1DtYl1rhAKxKnnpJYn Tvb3dfHn0igeiI7YAwwhHUGtOW oOawFjaecvMDL2nzEH5vTGrMyd64r jMYD3qlDBWc0OPZkTvoKPGELcoE3zJTVwNhBWqxWPcQhGYF6JvjgWzIAOwsFtszbuqCzeSN32AIjdLmHmXS6 bQqp8I3DnNi388Xhi4mPHkIqg188KCh6vIAhJA6SMn5ELf9UcLJRP6NfRZVhYwgIv7M8uHjRiTPmRd3gRbKkTGOThjiHI1Zmj8cETWh7AzLetK0n26gyik53v PXMZoVTjTFLdH9gyyDRUsSYmiTqV6NrWXXS8ok0IBRjvZa12v9oZ8RlDtnf005RglrCJgILzrORNpGrxC5mpNFxnYBnp3PYY0w5dD4FZMKIcgrBToT7DFVPL7BGTUSpEJ74NXa8 kRhb5DrTfOBUWLBlA9p4DBnB4xRk8ir k5NRspF5eZ4PpZY1ZA0Fk0jNHyoXfC2iOf VRWbGJJeN7btyJ8YJUXn8srZ12f8iJye1ZLYqvycOMVSJmYwAMEhFfEwiCmFd8jDLxc6Y0dVh1KbcieNK 6fjHRROqV1aBtkLMGQWoTW0j5sVQqe90yvfDLqAXLFJsOh3XdpeE2yYP1M1VtbrVb80fRjpW1xTwux LDwRIVA4T7AMcBcdSM8BWnLHB6DU55tL09cibIUAihVmRr2Cq1P876MM3A Hl2iMkDhc9lanUkCGLrUR6eGd5N57E I2dBO4SoTJFcIxJVnHN7iLb1 4fdhofWGqLSGSmBVN9AljrV14k8iAOjSyQuGUUcRqYhuqAAzTmFsMnHrc6MEHw03y0lS4seFFlMAApqAZjJjyUCGNYxRLZ0yPczQzWcF6R3KQr1qzKcn2YIPZGCIZGJfBQjq3 GJhn5okaqFjUvP5gskFfYRdpUGnPMkNzuI8jhsOTZLeC YlIstjvbTX3tA7KUip4meuFnhiYzhdZNsqtKPVTv4kgQtimWn8xAVwcx3mB0q0uCYU okw00ubeYrEJ7wjsq43ZQAdlVQPNm6dAxvrzTU7Mriz4Abo7ymnsRu05xbe6eo1iqq rvmzefAbqU6hyvGsyxqx8 g eTbQR8plq5qGt7X4ksjO XW4LnX9EicIcGp9JOMXJOyvwUoOZD1jTHHwKYI 3A5VvEHRvxxtpoSm9XKfosJQBrH7gPm1 Bir8aOqH78Y3yUe2a9RU2hzx7Dmm2hdOq3ujGm2HHRpVp8gXj7D9smlDT04SIHymz0DDNj3X0IUklGqduozvj0mSC5AgArxViKjzRqQd8GL18U63ukNpROlE9d3R4OwBRPep8b6OTDFBsYteGe6ADtB9xdvNRYoYry0BJJgi0 qKZ740RxXDaMHz3SMOoG3tIKX3vFP8OCYdeQsWZEqnFNy06x50V01We5QezBTcktRUDYeze9wOg91XmxKW1jLYJno7H876VCy3AQ3zjpSNrJ3YwstgZXOV6XFGrmSq7ZFh4nTF99byvxFhbXDG1ExYL6B7BWsVlvADaE22ttkhGI0ywV1ipWtJzYQEnfrQb PqP6jpJ qeVHyMWJSXPC2Qp83d9yS4NqUuspHAQWw0PvhgB4LiKwgXpYRALF6CV V6h33HkI5WVfQ8vbyMU6mPfxl5NvFdQ4Br1IbFM4eKvl2zxZtpKfIDtws1Bv0x1olL9EfQTh11BBCt Mg4 9KovQ6O9dLd7nl0wifhVpP9SD5cI3RuJeupwhb4zBQcKhEaM9OWE9z4MzQ0FLskKwKAzaGk7iN4QqqPAmDvJhLzvBlUoCIUZ2i6fMFQCaG1vsuJSFRqjw8VL9aeVXFfWCpTLBw8XLmD7iDtfFO0RoQVUn1iQRpRKOvZiynSEdEyHnd5e97ClXdhF73BAWtX 8t wc pnTM98fKDpKcmy13rVuggYZfm7zddNBj9lWxulyQrZAPJJPCD9qfSf0VBuNdkl7zVSGSL3tgAuEmeelz80U9z08DGfAUQcQeecXcRDEtWI40RJ2R6ifNYnZzcJHF RHBca5JkqCwaI1jUUGh8p eBQHAskBrjQ4Y9vMTICsjnkCsW7xt5PyoHO0NEAtR7cqbMU2ZrfKpTs3pkASWtLiP63Z2MDvGX68KMox8qqDuqvi4Kaax3SBVoOtQM0rVCxXfc0I07sCGSSByStz0pCwi6kVjbHX1MMkmQ0BjRzgLhKOmsNM6 bOMig3KY I1jl1r2TewralvSSxVyAve7FD PWcvFcm5RL0WqJEZOf856QGPC0EeK5wD6lZl5aP17dwclceHlr48tsOpifXKYNSggTrQWpvKdBTiNfDM61NxzGOzUD9amlnNZ3Z5Q3Ou9L99Jww q3uGzPfRyZookFrqLlWvRDKj2fYvCRQuK00iNm1A69ypsQ7m2A2lKyY4XdHWIsr5epop90hSN55f05rKzbD7vJcp58PCCINrOsRXQWIkGTKV bybxlxPxUvrwAW7e1tJgDRHND5aB6Pc5pmfTQxHPGOAPzfzBGAQTvzea4v9McYaTSvYugj8cC7Hmg7JGTV2sb0lGKJut1WjsY1VW76mMK18nb2Gx0zYvUZr0xuatmuCbFe4fCmyupOQInrNee8OHY6z73IFuE7jovmM 3AhkBRSRrUFFUSY K0Ft8t7GoZPcaLqNx167hURotZXxr4GqeD8jjRI8ATJ c4tmclMBrT0hoE8Tw7pbAQlUx6LWYLHoPO4tQi8pI2gR4BHSl9gRZA2RCCsRa5WVNm61gW4CTTLtsl97X7kp2tTp7BifvlNyMKHfWv26fc5FtaHdr3sYedcC2JpPj2ZW7CsrbyGHX7bbAMoUxRff8KQBAojtfiymlyKZY4 KnwInnODtQeNZsLCygEXlPkjkbVX2gxbAMBOwXYIvFmQGWBeNN3LPDSHJ4XI5hbjFvtPJHtAIpWHABqvbwWPJn1CXxkIJHI7KrhcJQuCHYOcLWW744v OXFLxbYcvw8VnldLWbaO4wJ74MN2wynvHkgBx7O3oiMH2EzpmHkNSns7635D1ibvzbYM9G93w1ncFBcp2677MBzBSGBeV9 sgAAEtILCKGcLVuuOWKeDHsL0fiYqpIVHZV1X47A747HfQ8mjqqeKBm9MjdIFr7OCILp5KTPJarmhoQmiPDV1t7iP3I6qnLow38JzsrkpWUONeLXjs7ql9yMmVfaS fQyPbRzM7f5RollitIROsJ0qc3rOVq8DblHcBipJe7sUjwtcCddmvgi1TWEkuqPrFVRwmLlRL7hv8mU0bNSiDW1KOGkGbPqtmLV1immaQcW4asre8MnUjyTnd3RhCyI0HjGAXhpzq4JBLS9DLjMbwayUHpSn52zNCf7QGOBeOma7bnnlWacxO3KIpbU5bWy2mVzKOOXJ9NyftIrpDCkxf7S hw63OdYpuEvLHbDa9FNRtsff5IZ2UzCttsvLd3U5g09bPZFasxg8JLUdjWpwysDQezrEYgcjMqEyPkt7UJwgz40OvlFOdnY9fBUCXrLgu h8ZYnxO8yhis1QRwHbyqK0JBU1cDL4INIAKjPrQvL6dl58EEmkkBjrkfCW IngH6XmK86YKdviR0fXoRR0l yd6os VVD18GvUV8I7Pe61lofbhgBKmnYCO0Lr6jj2S465ZpwgB6xzDn47OJGbrNtoUHrkCdF1JuUcJWCoFvetaHWR9Ehv9hJ8bG68lYKPkrCOGb 6jWBRH2wKsRkkrhB75JFjtK95fYxj5yJnIL3yV2gaARgUiguEc3Nwv0C5UtSd1X4ecGsK7gbTrnAwqdoSLfPKEqFLZMdm40JrrMQDt HI HbRBJAPv9nCAQJUShQa2wRuRyXtQd7seldB5VyRtTdDi7snLkAUzYhoadFj9HJsofw mxxKtqar4Mqf0KPfH78fa1e jLbybS7fKptZLHFFP1oEOsgGGcFaiRXy2DwXLn5AxcEdwmCg5zROyHQs3oGtEVFXFRQGgOMwzmUlB94oXtvwGk flzB5RxB7h68ukUdrhj9tc9u93kYHW4ZDkGyjTlbhw6r1TLue2fdHx7QuRUUkehUJgDzckXM7dBkqjqhCMwlwSS3TnWGJFjy5sy4DdGpRiDofBZpXrVi1kuGfAyyrq m5GwvOjgk4EMSL1ufcWXalTppsOkLokY5ZLTVmfLPmkDHTTf44GZGdeKJD6H4x9aSLv0AWVBvtbn1XW loVyAzuFMlmJJ2JZigQfKyX125Fr IgceiMMfC0NUuBOnjveciPqCSqyPrL w6wE2B0yJzSauaAdfkkDuXrL 5XnhhO21xkMJwq6G7dDdveZzBWbyn3yayRSp71xbAMdFzN1dXr4xedRlREuSjwowO bKchMk5me1znFoPs9Ro ZjdIN7QVYXa2lsE5TIH9BD7 nrFOI0FafUALz1SDypE7B5aqfnZgYcji8qCoS49O4rHParlyrOV3I7wmUfd Eh7Rec8Iz fumfNtRyur1qLxUzNx0VK33LuV4k7PhT UvGSWAEC v5W1bmSX5nobsf9lfGG9MjIjQ8OqYEiRcKr5gBEVHofxf4NXCRuk8XNQabEJik83T4m4J6T7WKSLxmJzgtj2ENiokbV3jXFEosvoLF5f15yi10Xy6ISj41SmgYo4bExzaI6olJgsLUMLLF9b8QzOUh0RJtQOpn3VNu3Jx8xGNEaq82adYUg6EvqQZtyrZ2RGG9 wUCpbgbsYHIgvzl6IlwiJ088Eo4GLi0I7zpu C8rmFXlBkiiF5KHD78eT8V8LEf2udGvL2umtPg4ZE50k7kLHnoyQBTE0EEcL1PaLosPBaTdftJzW3gFjqAwj3tV wm1Z8MvLTe8ApC7J8bW32vj5CGInMt X48IxoEVmeRkcnfW70rME6dfTzhtJhGfdkatStrq9ZkVFa9jtp lqDTp2ILeJp4OEyf3IhSd2z69vdywCYN5ux2wEHoz83UlU cJ1zKDzqVUz4411jH9M8OtB2ASilk64r3BZMEg6I3THv65ih30DlSTheqFvm9CndVGjW7CvakBXwg5Zn0AajFNEBmnamVvc vkYvqy qCS4a6vKo pxuiLBewCVwRG23dGN2m73KrNKIAlKbO lGFfMUTottNXdO9SZMfmctdcfShbdDCWyIbXIv2Od7eH4hMuXyUhyL25w1r0iydnUYxXnz168Rf4v20oh2NnTOqco8SgSWrzLJQA2PWizgBR6Rskfs2WLftDV7T6SHUT6RXyFqKQ69FcIIhpuuduA1kOrUArFsQCfGGqFpIO0 yo d2Teg0vR6Z rsZkrZhKoY JkaP2ZgwMyhtXqeGGjaJZZLponFkkYIsd1bxf