diff options
| author | Amlal <amlalelmahrouss@icloud.com> | 2024-04-22 08:37:14 +0000 |
|---|---|---|
| committer | Amlal <amlalelmahrouss@icloud.com> | 2024-04-22 08:37:14 +0000 |
| commit | 09e1c9738bc5dce28a6e181ebc585f0dea01f109 (patch) | |
| tree | 2df231f8601402147514572120f762c69bf5c84a | |
| parent | 41cc598c501ee190385c041b2149eae228b24741 (diff) | |
| parent | 76c0c6b21532aee82df5bd62cd886bc63d933899 (diff) | |
Merged in MHR-5 (pull request #1)
MHR-5
117 files changed, 1613 insertions, 795 deletions
diff --git a/Meta/Kernel.svg b/Meta/Kernel.svg new file mode 100644 index 00000000..fdfd1e73 --- /dev/null +++ b/Meta/Kernel.svg @@ -0,0 +1,36 @@ +<svg width="62" height="40" viewBox="0 0 62 40" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g filter="url(#filter0_d_0_1)"> +<path d="M47.683 0.541415L18 12.5373V19.4721C18 19.9113 18.1446 20.3383 18.4114 20.6871L25.5341 30L55.7629 17.5254C56.5116 17.2165 57 16.4865 57 15.6767V9.40299L49.9575 1.10186C49.3995 0.444135 48.4827 0.218233 47.683 0.541415Z" fill="url(#paint0_linear_0_1)"/> +<path d="M57 9.40299L25.5341 22.3881M57 9.40299L49.9575 1.10186C49.3995 0.444135 48.4827 0.218233 47.683 0.541415L18 12.5373M57 9.40299V15.6767C57 16.4865 56.5116 17.2165 55.7629 17.5254L25.5341 30M25.5341 22.3881L18 12.5373M25.5341 22.3881V30M18 12.5373V19.4721C18 19.9113 18.1446 20.3383 18.4114 20.6871L25.5341 30" stroke="#005999" stroke-width="0.5"/> +</g> +<g filter="url(#filter1_d_0_1)"> +<path d="M52.5856 21.3927C54.1308 20.2328 54.4606 18.0193 53.3235 16.4432C52.1863 14.8672 50.0161 14.5307 48.471 15.6906L38.0802 23.5H27.6114C26.8475 23.5 26.2225 22.8625 26.2225 22.0833C26.2225 21.3042 26.8475 20.6667 27.6114 20.6667H34.5559C36.0924 20.6667 37.3337 19.4005 37.3337 17.8333C37.3337 16.2661 36.0924 15 34.5559 15H20.8144C18.2883 15 15.8404 15.8766 13.8699 17.4792L9.97229 20.6667H6.77781C5.24133 20.6667 4 21.9328 4 23.5V29.1667C4 30.7339 5.24133 32 6.77781 32H34.5993C37.1167 32 39.5733 31.1766 41.6046 29.6536L52.5943 21.3927H52.5856ZM20.8057 20.6578C20.8099 20.6638 20.8125 20.6707 20.8134 20.6779C20.8143 20.6852 20.8134 20.6925 20.8108 20.6993C20.8082 20.7061 20.8041 20.7122 20.7986 20.717C20.7932 20.7217 20.7867 20.725 20.7797 20.7266C20.7728 20.7282 20.7655 20.728 20.7586 20.726C20.7517 20.7241 20.7454 20.7204 20.7402 20.7153C20.7351 20.7103 20.7312 20.704 20.729 20.697C20.7268 20.6901 20.7263 20.6827 20.7276 20.6755C20.7235 20.6696 20.7208 20.6627 20.72 20.6554C20.7191 20.6482 20.72 20.6408 20.7225 20.634C20.7251 20.6272 20.7293 20.6211 20.7347 20.6164C20.7401 20.6116 20.7466 20.6083 20.7536 20.6067C20.7606 20.6051 20.7679 20.6053 20.7748 20.6073C20.7816 20.6093 20.7879 20.613 20.7931 20.618C20.7983 20.6231 20.8021 20.6293 20.8043 20.6363C20.8065 20.6432 20.807 20.6506 20.8057 20.6578Z" fill="#FFE5D2"/> +<path d="M51.0867 21.8927L52.2854 20.9928C53.6105 19.9982 53.8973 18.0931 52.918 16.7358C51.943 15.3845 50.0905 15.1003 48.7714 16.0903L51.0867 21.8927ZM51.0867 21.8927H51.097L41.3046 29.2536C39.359 30.7123 37.0074 31.5 34.5993 31.5H6.77781C5.52676 31.5 4.5 30.4671 4.5 29.1667V23.5C4.5 22.1996 5.52676 21.1667 6.77781 21.1667H9.97229H10.1507L10.2888 21.0537L14.1854 17.8671C14.1856 17.8669 14.1858 17.8667 14.186 17.8666C16.0682 16.336 18.4048 15.5 20.8144 15.5H34.5559C35.8069 15.5 36.8337 16.5329 36.8337 17.8333C36.8337 19.1338 35.8069 20.1667 34.5559 20.1667H27.6114C26.562 20.1667 25.7225 21.0374 25.7225 22.0833C25.7225 23.1293 26.562 24 27.6114 24H38.0802H38.2472L38.3806 23.8997L48.7711 16.0905L51.0867 21.8927ZM20.8057 20.6578L20.8358 20.6631L20.8759 20.6703L21.2125 20.73C21.2107 20.7402 21.2085 20.7503 21.206 20.7604C21.2017 20.7774 21.1965 20.7942 21.1903 20.8107C21.1867 20.8201 21.1829 20.8293 21.1788 20.8384C21.1523 20.8965 21.1136 20.9491 21.0646 20.9921C21.06 20.9961 21.0554 21.0001 21.0506 21.0039C20.9967 21.0476 20.933 21.0787 20.8641 21.0943C20.8638 21.0944 20.8635 21.0945 20.8631 21.0946C20.7941 21.1101 20.7224 21.1093 20.6538 21.0924C20.6482 21.0911 20.6427 21.0896 20.6372 21.088C20.5733 21.0697 20.5149 21.038 20.4655 20.9956C20.4578 20.989 20.4503 20.9822 20.4431 20.9751C20.4301 20.9623 20.418 20.9489 20.4067 20.9349C20.4005 20.9271 20.3944 20.9191 20.3887 20.9109L20.6694 20.716L20.7051 20.6912L20.7276 20.6755M20.8057 20.6578L20.8283 20.6422L20.864 20.6174L21.1446 20.4224C21.1389 20.4142 21.1329 20.4062 21.1266 20.3984C21.1154 20.3844 21.1032 20.371 21.0903 20.3583C21.083 20.3512 21.0756 20.3443 21.0679 20.3377C21.0185 20.2954 20.96 20.2636 20.8961 20.2453C20.8906 20.2437 20.8851 20.2423 20.8796 20.2409C20.8109 20.224 20.7393 20.2233 20.6702 20.2388C20.6699 20.2388 20.6695 20.2389 20.6692 20.239C20.6003 20.2546 20.5366 20.2858 20.4827 20.3294C20.478 20.3333 20.4733 20.3372 20.4687 20.3412C20.4197 20.3843 20.381 20.4368 20.3546 20.495C20.3505 20.504 20.3466 20.5133 20.3431 20.5226C20.3369 20.5391 20.3316 20.5559 20.3273 20.5729C20.3248 20.583 20.3226 20.5932 20.3208 20.6033L20.6574 20.6631L20.6975 20.6702L20.7276 20.6755M20.8057 20.6578C20.8063 20.6545 20.8065 20.6512 20.8064 20.6479C20.8063 20.6469 20.8063 20.6459 20.8061 20.6449C20.8058 20.642 20.8052 20.6391 20.8043 20.6363C20.8031 20.6325 20.8015 20.629 20.7994 20.6257C20.7976 20.6229 20.7955 20.6203 20.7931 20.618C20.7922 20.6171 20.7912 20.6163 20.7902 20.6154C20.7857 20.6117 20.7804 20.6089 20.7748 20.6073C20.7679 20.6053 20.7606 20.6051 20.7536 20.6067C20.7533 20.6068 20.7529 20.6069 20.7526 20.607C20.746 20.6086 20.7399 20.6118 20.7347 20.6164C20.73 20.6205 20.7262 20.6257 20.7236 20.6315C20.7232 20.6323 20.7229 20.6331 20.7225 20.634C20.7215 20.6368 20.7207 20.6397 20.7202 20.6426C20.7195 20.6468 20.7194 20.6512 20.72 20.6554C20.7203 20.6579 20.7208 20.6603 20.7214 20.6626C20.7218 20.6637 20.7222 20.6649 20.7226 20.666C20.7239 20.6693 20.7256 20.6726 20.7276 20.6755M20.8057 20.6578C20.8078 20.6608 20.8095 20.664 20.8108 20.6674C20.8112 20.6685 20.8116 20.6696 20.8119 20.6707C20.8126 20.6731 20.8131 20.6755 20.8134 20.6779C20.8139 20.6822 20.8138 20.6865 20.8131 20.6907C20.8127 20.6936 20.8119 20.6965 20.8108 20.6993C20.8105 20.7002 20.8101 20.701 20.8098 20.7019C20.8072 20.7076 20.8034 20.7128 20.7986 20.717C20.7935 20.7215 20.7873 20.7247 20.7807 20.7264C20.7804 20.7265 20.7801 20.7265 20.7797 20.7266C20.7728 20.7282 20.7655 20.728 20.7586 20.726C20.7529 20.7244 20.7477 20.7216 20.7431 20.7179C20.7421 20.7171 20.7412 20.7162 20.7402 20.7153C20.7379 20.713 20.7358 20.7104 20.734 20.7076C20.7319 20.7044 20.7302 20.7008 20.729 20.697C20.7281 20.6942 20.7275 20.6914 20.7272 20.6885C20.7271 20.6875 20.727 20.6865 20.727 20.6855C20.7268 20.6822 20.727 20.6788 20.7276 20.6755M20.2237 20.7162C20.2264 20.7386 20.2305 20.7608 20.236 20.7826C20.2401 20.8048 20.2456 20.8267 20.2525 20.8483C20.2792 20.9325 20.3262 21.0096 20.3902 21.0724C20.4543 21.1352 20.5334 21.1817 20.6211 21.2067C20.7088 21.2318 20.8014 21.2344 20.8903 21.2143C20.9792 21.1941 21.061 21.152 21.1286 21.0927C21.1961 21.0334 21.2473 20.9588 21.2785 20.8761C21.3098 20.7934 21.3204 20.7045 21.3097 20.6172C21.3069 20.5947 21.3028 20.5725 21.2973 20.5507C21.2932 20.5286 21.2877 20.5066 21.2809 20.485C21.2542 20.4008 21.2072 20.3237 21.1431 20.261C21.0791 20.1982 20.9999 20.1517 20.9123 20.1266C20.8246 20.1015 20.732 20.0989 20.6431 20.1191C20.5542 20.1392 20.4724 20.1813 20.4048 20.2407C20.3373 20.2999 20.2861 20.3745 20.2548 20.4573C20.2235 20.54 20.213 20.6289 20.2237 20.7162Z" stroke="#181818"/> +</g> +<defs> +<filter id="filter0_d_0_1" x="13.75" y="0.145597" width="47.5" height="38.1587" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> +<feFlood flood-opacity="0" result="BackgroundImageFix"/> +<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/> +<feOffset dy="4"/> +<feGaussianBlur stdDeviation="2"/> +<feComposite in2="hardAlpha" operator="out"/> +<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/> +<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_0_1"/> +<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_0_1" result="shape"/> +</filter> +<filter id="filter1_d_0_1" x="0" y="15" width="58" height="25" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> +<feFlood flood-opacity="0" result="BackgroundImageFix"/> +<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/> +<feOffset dy="4"/> +<feGaussianBlur stdDeviation="2"/> +<feComposite in2="hardAlpha" operator="out"/> +<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/> +<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_0_1"/> +<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_0_1" result="shape"/> +</filter> +<linearGradient id="paint0_linear_0_1" x1="37.5" y1="0" x2="37.5" y2="30" gradientUnits="userSpaceOnUse"> +<stop stop-color="#0094FF"/> +<stop offset="1" stop-color="#005999"/> +</linearGradient> +</defs> +</svg> diff --git a/Meta/NewKernel.svg b/Meta/NewKernel.svg deleted file mode 100644 index a58c60ac..00000000 --- a/Meta/NewKernel.svg +++ /dev/null @@ -1,12 +0,0 @@ -<svg width="52" height="63" viewBox="0 0 52 63" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> -<path d="M50.8111 26.8058L43.5 58L43.3573 58.4282C43.1674 58.9978 42.5219 59.2729 41.9795 59.0153L23.5887 50.2796C23.2309 50.1097 23.0071 49.7445 23.0181 49.3486L24 14L50.2437 25.6638C50.6825 25.8589 50.9207 26.3383 50.8111 26.8058Z" fill="#D33333" stroke="#BF1B1B"/> -<path d="M22.6235 10.4445L25 19L42.4061 26.7361C42.7673 26.8966 43 27.2547 43 27.6499V54.5V58.4162C43 59.1512 42.2337 59.6351 41.5701 59.3191L1.57007 40.2715C1.22183 40.1056 1 39.7543 1 39.3686V7.5V1.56799C1 0.836924 1.75886 0.352957 2.42173 0.661271L22.0817 9.80544C22.3471 9.92889 22.5451 10.1625 22.6235 10.4445Z" fill="#D33333"/> -<path d="M1 7.5L25 19M1 7.5V39.3686C1 39.7543 1.22183 40.1056 1.57007 40.2715L41.5701 59.3191C42.2337 59.6351 43 59.1512 43 58.4162V54.5V27.6499C43 27.2547 42.7673 26.8966 42.4061 26.7361L25 19M1 7.5V1.56799C1 0.836924 1.75886 0.352957 2.42173 0.661271L22.0817 9.80544C22.3471 9.92889 22.5451 10.1625 22.6235 10.4445L25 19" stroke="#BF1B1B"/> -<rect x="34" y="45" width="18" height="18" fill="url(#pattern0_0_1)"/> -<defs> -<pattern id="pattern0_0_1" patternContentUnits="objectBoundingBox" width="1" height="1"> -<use xlink:href="#image0_0_1" transform="scale(0.00819672)"/> -</pattern> -<image id="image0_0_1" width="122" height="122" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHoAAAB6CAYAAABwWUfkAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAACGnSURBVHgB7V1djCXHVT7V996ZuTPeH3tJvOt4nd0NshEO8XqdkNgQeRMFiyAIJhJSpAAKIN4AJ0/8PBDnLeKFOOIFKUJ5QoIHEkAIRyHyBvLjQLIeYockxrF3vXF2vd6f2dmZuX99uzinqk71qerq2c1u3zt3nDlST/etrq6uqq/OOd+p6u5RcINy9OjR41mWHcXDh7XWR5VSe/F4L+xIk7KCfXsK+/YUHv9PURQnlpeXT8ANiPpxMiO4exHcx/Dwo7AD6lbJKdxOIOifQNBPXe9F1wW0A/jjYAHekdmRz14v4K1rZXjggQceQ9PxeTw8Djsya0Iu89EDBw5cOXv27PJmGTfV6GPHjv0V1GtxrvP8HBbwmi6Kq1AUG5g2gh1pUjqQZYu47UZA90GrdQDT2jV5P3Xy5MmP1RWUBJpMNRb8OdyOV05q3dPj8YuQ52dgB9jpS7t9ULVa94BS3fgUErdl3N6DpnylclmqrFar9RQx6Sg5R3C/h1r8EuzI1gkqmCYla7ePqHb7XnkKFZMw+xxu74kvq/hoZ64fDRJJi4fDr6B5fg12ZDakKC7DePxDReZcqQ4nI9iH0GfvRZ/9BZk9ABpB/gjuPhkUqPUqgvwN3G/AjsyajBDwcwj2TyHC8yL9XY6gPc0J3kejXz6EIdRTeHjIZ7ea/LUdkGdclFpUc3MPRX57BUOvw+yvM051cfIhef0OyNtEECODFfGoUnjuw4jRaKfNIcnK8+d2iNc2kwRBQ62+lbTaaLRE3giZ7B2Qt5/k+YuEnUxCbM08CJvu4/Ikxsnfhx3ZlmLmOEKhtQlQbhXqKXFipPv9J2FHtqt01MLC+0DMkaD5fg9inB0Pso3H52BHtrOMEMOzMoGWk8l03ycTcUbsIuzI9hatL4Q/9fGMZlKCTEVxBXZkWwsS6VX5GzG+L0O0DwW5iqIHO7LdJcZwL5nu+EmRnRWp7S8xhnsz2JGfCNkB+idE2vA6kz24ZPfOubl9t7dai29utfbsa7W6t2VZF7kI3IppSEGJnRAVhb7Wo8tFsbGhdX4JZ5RO5/mVF3D739Fo9Qqeg9eRvC6AfhCBfWhubv/bOp39e+nRGwSSgA0en8kyA64Rt1/AQXEABwMdvwWvecfc3J2c/SwC/sp4vPrvg8GZrw+H2z7k3LZAM7gIzsFulnU8iEq5nYCZz9GhOKdFuuJ8bpAcaLf30CB4AMtH7d54YTS6uJ1B33ZAPzI/v//9CwtHjrTb+xhUBtKAyBkj4BlERXvcgrwyP4iB4I734novAr749vn5g+dQ078wGLz0j73eGdhGsm2AJoA/vLR0L5lmLYBirSRAzG+gRZwcRqOR2Y/HY7MnGRdFOShw32q3DRtVaNY7nQ60cD83N4erfW0/CGT5dIy+f8/vLC4e/cDCwt3/3O8/v10An3mgyUT/Zrd7z2HUYOr8gjsezGS90VLaDwYDGOI2QlApT8Usgx0E9sBqNw8AOj8cDq1fpwGDGwG+MD9v9lmrFZRHsgcH3G93u0d/DQH/i9XVr50Zj2d6omlmgd6NROn3l5bueff8/GHWwoL+CDNNWru+sQEjBImZNO8luAwgiOshImsmlbTW5e/3+2YjmUfAu92u2Qf3AcPyFz+9d+/7nkTt/pv19Zld3p1JoO/CkOjx3bsfok7UwtSykPZuIMAFmmUGCHgvNY99sgNQ5ol9NJv9lND9+ri1UbOXlpZgAUEPCB4eo2u5G8O6Ox9H7X55BrW7deDAgceDlDx/HrZQfr3bPfjYLbe8Y0mphfhcjhq8uroKA9Q0LUw4sMYKTYslJmkqyid9Meg05JRngNajh4OM/Hq70wnKn0cr9DASNowCiufy/DJsoah2+x75eyY0monOH6CpfmRu7m6jcQI48sHrV69anyoZtrtOajRrZqyxFeicVgPnE0xbWgYuRw4UInVXccCRy+iihhOp47LQuHceXVi4F3W+85mNjZkx5TMBNIH1x0tLb/3FubnDAWFCGZKvJDPtiJePkwXhkmaXgVKRCQ/CLWkNoART832FtqtEXXnf6/WMSV+65RZYWFwM/P8jSNLQKrWfWF//DsyAbCnQyvnOP8Fw5RhOTEitM2YSO3LgCFHKtyqRHgAFQttFGl+jBZAxm45Jnc8H6RfVNA7ANdRusjZLu3bJBgBO6BwhDf/L9fVN33SchmzpogZ18h8uLr71fgcybxT7rjtf7DKWEx4xsRLXQSK9TBJpXJ5k5xELj/10LVlz5ZLVuXLpkqk7x/m00QD+I4z/Zd6tkKkDLUnQ7y0u3vMLnc5h7cwwg7yB/pj2ivMLk+3BSZGmGg3U8rroGmmudWzu47on2iDLM2Tx8mXjw32bSLM7nSPU1joiOA2ZOtCu8epD3e6R9yHxCjQZzV9/ba3s8Ljz2aRG4ZSSv+P7QWLCJCJvxKADd5CqN0Bt+MXtIqGQ7yppNoHtrqEJHGrrr87P3wVbJFtiug+2291HIpDN7Nb6uiVdDjw50SGZcSBiMNTmAajE0SaNwbiGX9fS1MeDzxervAZTG9ZIs50ZZ3fzwfn5n70Tl0q13mzITEamArQKyY/6s8XFB+eQpEjz1ncg64j1BrNaUsS14kZ2J+8d7c2lLq+cLdMiXZYFUdr1gER5yDqtr6wYbeYp2TmMs/98aenB3fQlgynLVIBmc03b7y4u3r2bFiag1OYRkq6C5525M3HLmHzpKOa1Gf1CRrzsGBOzGBr21QGTFlrrf0OCpMl2JdLkoDSuiAawGEi7cLbvw+ivqS9gijJVjb4TTfZ7O5272W8Zv4yTDjnGohIsJmDBylSCSfvfDozMAW+usReG8XNZoTB2js9HdU+ZcxDXS8sSW6AhzcVjmKhZszHtwXb78Ns7nX3TBHsqQKNJNg36UzTZ0icScck5hALbqZkwp5JpJ02m8H8QaT4PAA3RtKb0526v5NMnAIHfThrqaEIlNaki05h7+EGB+w/g3LjLOxWwp0bGfmV+/k4yWwHLFkuDLEkNizWVj7PMnU6EWu66LAIlFglqnE/LUC64qNReLiNVLucxHATnBfzqGG5vbrX2Pdzp7Hd51KRDrokDzSMWWfY9MtwoMOYsaHkRSnO3GdHxmgmlFgUmVZhjFp9Hkq0ov//tL3L3kH4/jr1rBkZKuJwxPQiBLqoQJvyD3e69dWU2LZMBWjJalPfjig6uL3flxEiBjZYShFKpyQrJhgWoKsojSZs36VHd5LRpLNLfpniBToCuw4TK4OAyhzgRJAc7Tph23y20epJmfDJA21hSceWxMUekyQa3CqWiAaEjk0hS1/JgEkSadqUq05VyQDDjTlkAf17ExADVwbSpcF0SLkM7TiLdxXtxIQeCYEJd+x43II0D7Uywr+kDnc5tb8yyXcw6jdkSJjv20dzQ2tku4RclUNK0xxbFDzAGT06aJEzmtbpZpa6L3IgM1SRBHG9s+DpSX9yFvvp+etDRF6MnYsYn6qOpyQ+12wflJL/R5sI8FBQAqmTMLAZAnRlVQnMkeXIHQT28RktG7/YpIlghiGJQVEy1v0k4MOXg4jqYn9h2IqHsp6knHmi3b9fe2EyGmDUOtGCiirZDOFoDIhRNjOjIl8UaLQdARaKQyhXi92qTWa4kYxaDKuWLa82qtA5CkyVnkIMoR632rgx/H22374x9etMyCaCt8uB2rNW6bZf79hU3SqGfYolBrBvJvpMTeSoEjskWVDVcJfxnfN948iMFeEUSbsKYd9ReP3A5K6UjA5fz7Dgf2rnfKoTXamhYJma6iYzh8tyd0hSDANn7SqiCVwlfVPnIkKrx2alyUuXq+FzCqmx2ffJ3akBAGd/7+4r7j8Vzb9QuBHq/thNLkrBAUzIRoHlk0sPu7Idon+Xie2cc4mwWSoWJtmypnU57U6Y2WP0S+ZhIpYCR96m0KbIOkkP4wRNfE9dblSQQSKuJnIINtX6m1bod3ASQ3zdowhsF2pscihGzrPMGpXbJsEqJEcz7VFMqixQi5o1JW3yNJG3SXHI5XtNUGY9L0gTCAmlHGkX7PC+I6yUyVa+BaPBqO2Ek/Ta5uF20okcJ4r5NEbNJaLSJnd+SZbul2c7EOjPIDtLV8ComPhk9GJAwy6rG9Ettl2bTx9By4ADUh1OqXEmr5Q+iHVKDqxmF7+ff6MrY2tF2H3IaZw395ElTxKwZoBONO+jMttcYIiYiP2tDHbvWonNTpjZ1TUyqAgKX0HjQ145Z5YDhcsVNwnxxXRNWR1oaja5Mhmy30Su/QpubDLWaAdpW1tSocGHVm9hsu4YoboD0zRFbZakAEze2xl8niZRSwQCLRSVMMWsxRMfc1qDO0QCQDNuDKqyKvw4c0O43+ek7lNpNl/BqH5alZ0ujnRiz40z0XprbhlKjMzHKJeN11wV7eU4ex9dBdF0cg3Oa1KLauou6VLRYZpTmPKpDACrUkDNZlBz8KNxnok7NqDM0BLQkYUawp/yjQmBHqwrzB6EF+0mOcU2nZWXVvMYCVEAESINY8eEqEWrVbHxe7gP/Hlsi175CgCzDxzrglXvzk69DAtuFKodshJDd9AP8scnUznRTpb25cuaaR33MQAM/awutaC2fY8Ijj30ZMo/WUBdHV3xonI/fChGmPABL66qVkPm5HsxDuAw5SAEqjD8ZiyfSb0RuWqNFJUqmiB2Fsz1t2bFkurMadhw0pAZkfxqgwphTkygpJi7Zu+ZnryEEPu70WBs1hK7GA1ZjCXz+lFaKOpARpxCLJ02cn25s6fKmNFol/Jg0kjHBkr6URetrPEILUDH7UuR5vxePBsWA02Ab63LNuMILhDsIzK8oT05+aMkbIpOuZJqwOrItsanXEPp7aMBsk9wU0AHLhXJkU/WKGl8Wi298osP8IIqZs9YV/6yjeqQGljFf7Tasr60Z7Qb246KTlbxnYgDqsvFBPwT1AwjWtTNVvmAfuLFYUUrLQjevN2s3IDftozcL7FMDwadH/spfU15cgsVAaJ0mVlyO7GTqYARTgqCc6TZTj27BAXhzfpnrprQOOEB8PyXa4id5uK6bSMBFAMrXg8F90YFOOZBFbE7x9E0B3wzrBuDO9+x7pSj6zLipAWMZ+kRMOzbxgcamGHdkAuOQqlIOnXcgx3FzECdHWhpsUFqsmCAFaaKO3CExmeO6FqqcuaN+6vM/P3FWUQzgm9buxuJoDeUSm7aRvv2wTEr7IvIVeyGptXWMU0X5+DoePLLspJerAVWeUwlt5vwgtFgy7YDMRRatcr1SPryi36uoHCA03hEzaIKQNQJ0pRZY2Sv0KWGnedSQkcgbh1dhYSpp1jOZLjtT5uPfMi9rdDQgytvrysoV/5ZxMdREBkHsDSILXybSUlxEurPeBD9L2ZTpNjNislEr43FfakqR8K2QSjMF6qpflGnCt1Y6VJXz26l4ncvy5AggmPYs3J4tj6qpQyqkAwF4PACktWBXNCYO4c4Xts96hshymXbS6Ka12RQFDUilJtiQV4riqv/eF/42QzUa+bGZlddLjVTxb3ErLcpRkX8EgIAX8O+U2a60RZhnBkP6cq3DR5UklwjaIY+5LDf1Wbjvl/FA+JHWa5RLkfszGULluRlp6tMWlitB2SGXyN84HwTCdJMEWsgsF8owKmUCIeHvVcL/15noshhdGQjBOZnGebmOSoXXS+AhIWJgZ84nS8kRaN9HKGfG4zW+o0mw7203gnWjc91abN8Zjy8XYuZn4Ni3kbgjAYKQJaXlAdFSIv7Vm6wVi/PBAACoMu/4Or5/Csy6/PxbHAeaLi0JphHQhRgMLyHQ7hotwrcZMt1M/wULXSuK8RWt+x58Nt/lRRUzLNMBSlCD9FgbBRgqKk90VnALXa0/JCW6Lhg0EYmLBxLIe+vwZQDlQOY0UoDzRbG2TmQsHPhNWe7Gwit2gGbHlfy/PDf/b5q1pheTI3GNNNGB/5OdHWmf7IVMmH3uTMly68I0WT+9ie9OpUtA+W1JUDWPR0XXD+ljdM5s028E+iq3kfMbe2cH0U0D3uh6tOxoasS38/yCfFRmTeZNmTN5feRLtfCT8T35WjnQ+B4Q3VNOxMRApsiclvcXIpm1HLDaPUkTh20xUiMy2+I7J/81HJ5z7dGcX9mb6i2Po8Vo0zjzpB3p0DwC0U+voG/OuZEE+kD4LBUWFhzLOWjPaiH041xODIaqqWsQ8mzi25W4RppouZc8Ipj+FANJWil5pyHOt48dOaNraaKE+kryAVdHN4a2WKNdxzERU7JhLM+ORud8LI3bZSZIEDkgHT5DJjVUam3Kv6qE31ZRnoBgyXpG5jq19+WIfUzMtGDokpQG5bh79+fm5AIQnCmKFbCarCV3YYC3XKNBVIbNjEsEd6yfHY8v0IEx4drM/gSzZJQ3k+AmOtf73ShtM0kNCIjK16nzEJldcY2O+EJKlKqZ0nXX0yTJ0H07lMEmsy3b58rWws3oWsJ4ndKcjxb+jcY1V+u7eb7yQzRLpvOcqV2pCU9UwgfHZlMJUw4ircKwU0QKIFm+9LVs0mvBAkiWy/eUmswDku9Bv9fn58tHfDHtAlKX75LZtjex2Te5141KY0ALbdPO7OrMmaOvDYevSFOFYVfwP+qlaB0+rG8qqarTmfE1MYjymbO66yC6jzS1ydiaTbOOVtdkHrHFbclx65E263JF7OvYN8C8puQhtgvj+9+ENLl6ZRetACoTHt9C9r0qY2rMdS5ipdyJko3LDvUdLcpNSUy65O+YaW9mDANT7g90hdnriIAF7VHlE6OU32iz0Hrqk684tm3arrXvw/jWNytN+Gi7h3J0q5J5+4o+2e+/KJ94XMfQoqd1knmz72YmWyS0vM60+uPrYNfxdayJweKHrn4MNtBilxb771gDexg3b7TbIouG/xgOT0PJa7Sks6p8+KARsBudGWPvaNLEoKeQ6xkkZa+4f1nMJ84i2LmuPh8tWGfpj0XnB4y6vlJct2CfvE6y4sgCpGJxrqc31XXl82BDN3KVmTbY5c+rqM1fHY1eBe4rMe2pEuXdrDQFtD0oO8yPRuOnHSN/CkewFlpN7PuCTswhC20MQh1dfbqD71/nw+pCJelGQFgA5yNry/GfsYzYezB3Hl17BU12LmJ+av9ner1vgxkDmRZz27opDY6lqUUNe8AAgzDftGFjSKu/OxqtnMzzHwFP/WG+S+MxXOb3suJRLEIvPm84AD/YBxCw8Trt88eqZk7aga0j1pyaXElpWqyBMscamux1EU5Ru7+e56dxgPez0r1p4e4gdntNSJPPddsGI6gELJ827JsbgOlPDganr4zHA2407c8j2H2tK9oUsF8JuGCttXVR1Tc7Yiasxb7ii4Vcy8f7ARJZjyEOyJWFheD8GgL8r/3+y75vQn8MLp3Lnh0yxqLEClYmfE4myAZpJy5sjD7b73974B6EK1yodRrBHtp8XGBIypzwUOdBUWHSkWalTLpO179qUa7d6Grc7sogU32x2/Xz2eYz1Zj8t73es0p4DtdP2jkPbxGblmYXNRQ/F6jtpAlpNo9S3rDBr+Hc7pf6/ZcKYTKHmP7SaARD9pkAPhbW4T1Kk50gXHUsOzbddb44Fp3gC+JkcH8WAvlVBHkkCCQJkq+Xqe3UruADtcq8RaJ9nzVstkma1GgQk/Cc7CvPWm78NW5P5/m5b2DDpV8k8/0DB7bUxticR/eAzeaog7haEigdPoIrz6cmSzbjAIWoEy1WnF9cNGD7mBmPn8a2fnk0eiWzfVHwJAn7Y9Zm0I1jbKS5CRPbGd7tKTZJbqSyicpK7YZ/Gw5fXkZyJocwgfzCcAgb/C0yly41MO6Ka4UilUFBdY1mzmJil2hgGAUA+JcAODetzJ1FnzwECBYtlkejH1FbC9sm7SyL7Q/aszZXCVljMokvB0piQRI2wjHwzJmozw8GL+J8+HnZMfTY0fdRs1+jrxiJsIRNrxIzTvEMmry3jkhbygoACL+v6teo4zJifrCK7PocmutcPNlJ9aW2URvBhVJg+6Lgwe9vn/h8R5MyyS8Haud3bDxtgS5wX3ADXcPh7/v9558ZDs/yF3qYkf8QwT6F2j2OYmkAQZ5U/aeaeVDIL/lDRLqC/FzxyMQHjYp8NZnqizgZQlsO5WCl+qO1OvsPg4H5F5AMclZauEJqs7R0WRm1NCaN/4OzhFaU5tz+sA3LMrRkRUYaropC/cto9CK9kvLznc5BUw7Ypc0L9F9n0OTdgbHoPvfUpC2tJG2af0PJyIMKyPokJk7k8WaTL9w+lj7W5zwCPHL/ZUdehfzjzBdHo9PyNplruwirrGaH5U/ESTcONHUSjUj3fq9cR+XQwVlpCw81mJ8OxY55GQlZ/k4Ee16pNnc4ffD5RdTsVezYO7Bj5zcJha7HXwcTILJym5TBoR4JsWkCuIf14Xid247+OT8xGp36bySblJaVLLrAH4USWuzSpUnXXE7TMnmNpsrbtwEJT/PmMnreItPaaDOeow7IHFGB/0Ry9lyeX/qthYW33qLUvNRA8tkXej2j2W9CnzgfEyq1+ecmA5A5tJMZRLgXX0/5yDRfxPuu0by1iJ8ZMZwMGfzdYPDcBQqhRFiZWZC9+1Lm/TrLWbIJhVOxTESjScQEilKs4RZ0M3FSWPNF8NK7rUUmwL6MVvHTvd43f6nTuevtqN0yDKIcBPhreQ63ojl/A263Os1y9zWbfy02rpsAmc0ta6sBOAYZf5PmXsL56g020bEPx/zPoj/+Up4bi6RCDsIEtGBSmpXE1JczKZPNMpF/Qpry0/Susul8xHNcMK7ERxSf83lcGeqLeX4GV73Of2huzmq3Ct+UuIyAX0LAF/C63QgGAU77NoTMOwaO02Mfz4BTDfpY5gZq7xUsb+zSZXncvrNar351MHj5Ba2vMHsAAXLmzDUIn+wHAkBgsq/FD25GJgK0NJ+i4pp/Zzx7ZjW80MaVWeADsPGaizg3/Ne93rdQs9/4LtTuJfoXzU5beaKi5+bKXx3Zp9EWsYw9CBANgEXM18FjpHHWtwP4T1/kTqMGuCe/S/sB5h2o6vvXsRaTmcYJkJfIzYCLLkBqsQMZLAGrmOrUwsWkQCaZ6L8VlpMo2n0Fj34X1q5myu0JYrLoNAD4IQPXZOXiDf3N0eg8bQT40Xb7jn2IJ9/D3czflyZb1umfmEpNZpNNWXHmKkXZUoyd78GajGvoqycdjzCxr/CxMchuUqRw5rpQAuRJm+pYpvL/o4VGyL40vhrTjR4b2w3m+TDlPv5kfHaZ2WofA/7Trdbut7XbbzyQZXuMWY8Kj1k5f1LKz7AJ4IMJGKUqEytoJ/LvFcVrz+f5xRfG41W3TOrJNjjX5I4LXmP2JMyBDc58i2thWoBPBehIs4HNM38QxnxrSdnuLawZB2/HDUaF73p+I5E6HP3iKplxAv3nEPR9St2yj76nCbDpI7dKgBykQWkhyDSfGo8vfX88NuD6zO5FBTndyxMcAbBgpn8LOStofHTpPjToqWBsZKv+I3xAvFp8TLNFdlmPlnNIzcgPK5FX+Q5W5btVBnQHRhfj7zdl2dJ+BPynEPjdWTY/h+3clWVztJefprqKYJJVwQmZAR2/WhRrV3D/Ayyrh+zZ1zZ8rlpqcjnj5R6yyGwYaUB2ey1A99fFEyyTlqkDrSwRs5Mp7v1fx74tANRBBC767ILMoI2VLPBuirmQCx4WeQ9+ryhyBP0KbbWVyDiwy4JvY0cV9WUK4XCpXGd3phoc2J5ZCzLm6jp1cy1lSzSawVbsVu00qP3Gkn3bn5gMaTdpNVFVA7xx6KVplwWyqVb8dIu2g8OmMqh8zNfGILuBJ0Iv+S6M9MP2d1WLrV82RTmQxcvsNCBSS6nTkK0y3aHPBku2dPntLwtyZog59645iQljbVyc7XVJ2DIRcoEz0aY8t6LEy5MyFuYZLJ5KcXWTVQ1NNBgkdWSy7QJFyKj9Ui0X5KjI1LWZhICm10H2ijT6J9YT+zpOjVjNYbCtJmTaTbAYU+7MNmm3A61w/tuTbbva6ywupRdFScLNn3L2TO7dec+eafAY7bP3lxpsTHpLglg+EyfJVuVJkSkDHP8j8pUq0PQp4aKYONBCo8o423YcH1NvK/fhFkPPC5tuflOvZuXno5UDWAVf8nEgkSYJAM2pwp5w2cwA0/wwgnsKxF7vwGUi5QFmkpXS4nKe27bVTahM0Vx35Q+87ykCehm3QyJ9D26rMGFJPe7jjrWPca1BZfuqMjtfbuJsN2VptdwCT7Nf/DUf/oST8oABMMimz126r0OLDIg75nCJBx4D6ipYPj2jwjdSYpDFfP9UGTa023uilNME9Jdxe5RTVKu1D0f3GZiipDTbaKybKvXxpgOdALe6ray2l3G2sihmykFoPQLfiElZzUdVW5IhSzJWgmvThPYasmWn/cw5Lmsa89d1gvfcF/1ebqM5W87kcl+rtR9Go63w01wpycghil85LLNa7Py5tqGXGSRGA7V/QV9OcVkOYOdhtbMIwftOsg5yD0y6yjR7zJofDRo5GTJtkI20WgfkT8T4hGnlsWPHcGVQ+Ok8f07n+UuwxaKrb/orXYIo05TMz8FREQPtr1BlmnMTUmP5j2PUwXtk5nJp2n2RW8OmK9JuH1Tt9lH+Sf75mWeeOcyq/ESQudU6AjMgYurQd7SyT2j41SBDilqtwq0M0b7gfUupMW0U22Y2j3lmLbOTHCaN9uifx27RwW9chnIfa3Dl+me+VOiXZwNkMK737uC3Uidoz7Hop8LcahE6nZkAmyUTZlJB2cFZyXwZEF4x8oPBTT8SoB5ENx9diGes7ZMfrjyXV/MGSjyxCbMHsJF2+4jBTghi+wnaG6CXl5cpxAq02o2MLsyI8LNodCw7WcknN/jNRHecsWayBjJoDjAeIAGodmCU58sN4nvPmHTRZN8dpX0WsT1FB4KQFo+DjalZOmp+/iGYMbBZlEp+aC0OeXgSpHCxsfZm26V5Bi1jYghfX024kFmTrsPKT5SQb2ZtJmnxwblz5/q33377ABvzy/5ypToUbsF4fB6g9rMjWy5KqdoN4PreWeMYWFwXHM+wEMjvwIrukokI9MdQm0/w75Y8iWA/feDAgVvx8F0+UakFRSHXeEyPr84s2HUSA5+Vs1/JqdBtJlaTI5BRnkCm/UmZkGzh/fff/xQ2/nicrsfj72CM/SK8DmQrJjIaFSRezicH89rYpmUE+f5K9lQZmPk3cEdgH5XpqNn3oiocRsCfx1h7qrNnTcs2Bblj4uRW63DMrkmwTSccdhXZ1GbhRAqFXY/VnB6ROceCLwJ9hKYoerBFs2mvY+nQIpOi/8Wt1BsU/df46soUyxMnT578aF1B13ROR48e/Qhq9sdxOwQ7MnOCiraC2HwCQf7UZvlacA1Bgra8f//+f8LDW2NTviNbLk+QqUaffOJaGX8suonafQjBfhwPH97R8K0Rp8FP0Gymm+i6LrnhuAJBP44hynE8vA9vfgj3NAj2wo40JgQq7gjYZQT2y2AmMcvY+MeR/weHeZWH+76o6gAAAABJRU5ErkJggg=="/> -</defs> -</svg> diff --git a/Private/HALKit/PowerPC/.gitkeep b/Private/Applications/.gitkeep index e69de29b..e69de29b 100644 --- a/Private/HALKit/PowerPC/.gitkeep +++ b/Private/Applications/.gitkeep diff --git a/Private/ArchKit/ArchKit.hpp b/Private/ArchKit/ArchKit.hpp index ddccbb47..49c9dc94 100644 --- a/Private/ArchKit/ArchKit.hpp +++ b/Private/ArchKit/ArchKit.hpp @@ -15,7 +15,7 @@ #include <HALKit/AMD64/Hypervisor.hpp> #include <HALKit/AMD64/Processor.hpp> #elif defined(__NEWOS_PPC__) -#include <HALKit/PowerPC/Processor.hpp> +#include <HALKit/POWER/Processor.hpp> #else #error Unknown architecture #endif diff --git a/Private/Builtins/Toolbox/Rsrc/Cursor.rsrc b/Private/Builtins/Toolbox/Rsrc/Cursor.rsrc new file mode 100644 index 00000000..cd011ab9 --- /dev/null +++ b/Private/Builtins/Toolbox/Rsrc/Cursor.rsrc @@ -0,0 +1,46 @@ +#define CURSOR_ICON_HEIGHT 40 +#define CURSOR_ICON_WIDTH 40 + +// array size is 4800 +static const unsigned int cursor_icon[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x8b8b8b, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x7b7b7b, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x9b9b9b, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8b8b8b, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5a5a5a, 0xf1f1f1, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xd5d5d5, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8b8b8b, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8b8b8b, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x373737, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0e0e0e, 0xb8b8b8, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8b8b8b, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7b7b7b, 0xf1f1f1, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xd5d5d5, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x494949, 0x9a9a9a, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8a8a8a, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8a8a8a, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5a5a5a, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xf1f1f1, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x0e0e0e, 0xe3e3e3, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0xb8b8b8, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x9a9a9a, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x8a8a8a, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; diff --git a/Private/Builtins/Toolbox/Rsrc/Splash.rsrc b/Private/Builtins/Toolbox/Rsrc/Splash.rsrc deleted file mode 100644 index 9b9a3e45..00000000 --- a/Private/Builtins/Toolbox/Rsrc/Splash.rsrc +++ /dev/null @@ -1,74 +0,0 @@ -#pragma once - -#define MAHROUSSLOGIC_HEIGHT 66 -#define MAHROUSSLOGIC_WIDTH 66 - -// array size is 13068 -inline const unsigned int MahroussLogic[] = { - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, - 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff -};
\ No newline at end of file diff --git a/Private/Builtins/Toolbox/Toolbox.hxx b/Private/Builtins/Toolbox/Toolbox.hxx index 2ac23267..5a510a5a 100644 --- a/Private/Builtins/Toolbox/Toolbox.hxx +++ b/Private/Builtins/Toolbox/Toolbox.hxx @@ -21,27 +21,36 @@ EXTERN_C NewOS::Boolean _hal_right_button_pressed(); #define ToolboxClearRsrc() uA = 0 +/// @brief Performs OR drawing on the framebuffer. +#define ToolboxDrawOrRsrc(ImgPtr, _Height, _Width, BaseX, BaseY) \ + uA = 0; \ + \ + for (NewOS::SizeT i = BaseX; i < _Height + BaseX; ++i) { \ + for (NewOS::SizeT u = BaseY; u < _Width + BaseY; ++u) { \ + *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ + 4 * \ + kHandoverHeader->f_GOP \ + .f_PixelPerLine * \ + i + \ + 4 * u))) |= ImgPtr[uA]; \ + \ + ++uA; \ + } \ + } + + /// @brief Draws a resource. #define ToolboxDrawRsrc(ImgPtr, _Height, _Width, BaseX, BaseY) \ uA = 0; \ \ for (NewOS::SizeT i = BaseX; i < _Height + BaseX; ++i) { \ for (NewOS::SizeT u = BaseY; u < _Width + BaseY; ++u) { \ - if (ImgPtr[uA] == 0) { \ *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ - 4 * \ - kHandoverHeader->f_GOP \ - .f_PixelPerLine * \ - i + \ - 4 * u))) |= ImgPtr[uA]; \ - } else { \ - *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ - 4 * \ - kHandoverHeader->f_GOP \ - .f_PixelPerLine * \ - i + \ - 4 * u))) = ImgPtr[uA]; \ - } \ + 4 * \ + kHandoverHeader->f_GOP \ + .f_PixelPerLine * \ + i + \ + 4 * u))) = ImgPtr[uA]; \ \ ++uA; \ } \ @@ -76,4 +85,3 @@ EXTERN_C NewOS::Boolean _hal_right_button_pressed(); 4 * u))) = _Clr; \ } \ } - diff --git a/Private/CFKit/Property.hpp b/Private/CFKit/Property.hpp index ea427481..10c8ebf0 100644 --- a/Private/CFKit/Property.hpp +++ b/Private/CFKit/Property.hpp @@ -15,6 +15,7 @@ namespace NewOS { using PropertyId = Int; +/// @brief Kernel property class. class Property { public: explicit Property(const StringView &sw) : fName(sw) {} diff --git a/Private/Documentation/Spec.md b/Private/Documentation/Spec.md index 458d17a9..e218947e 100644 --- a/Private/Documentation/Spec.md +++ b/Private/Documentation/Spec.md @@ -1,13 +1,17 @@ =================================== + # 0: General Information + =================================== - ABI and Format: PEF/PE32+. -- Kernel architecture: Microkernel. -- Language: C++/(Assembly (AMD64, X64000, X86S, ARM64, PowerPC, RISCV)) +- Kernel architecture: Portable hybrid kernel. +- Language: C++/(Assembly (AMD64, X64000, X86S, ARM64, POWER, RISCV)) =================================== + # 1: The NewKernel + =================================== - Drive/Device Abstraction. @@ -25,7 +29,9 @@ - Permission Selectors. =================================== + # 2: The Filesystem + =================================== - Catalog object with associated forks. @@ -34,7 +40,9 @@ - UNIX path style. ================================== + # 3: Common naming conventions: + ================================== - Kernel -> ke_init_x @@ -42,11 +50,13 @@ - Hal -> hal_foo_bar =================================== + # 4: The NewBoot + =================================== - Capable of booting from a network drive. - Loads a PE file which is the kernel. -- Sanity checks, based on the number of sections. +- Sanity checks, based on the number of sections. - Handover compliant. - Does check for a valid partition (useful in the case of recovering) diff --git a/Private/DriverKit/KernelDev.c b/Private/DriverKit/KernelDev.c new file mode 100644 index 00000000..e8c041af --- /dev/null +++ b/Private/DriverKit/KernelDev.c @@ -0,0 +1,31 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Text I/O. + +------------------------------------------- */ + +#include <DriverKit/KernelDev.h> + +/// @brief Open a new binary device from path. +DK_EXTERN kernelDeviceRef kernelOpenBinaryDevice(const char* devicePath) { + if (!devicePath) return NIL; + + return kernelCall("OpenBinaryDevice", 1, devicePath); +} + +/// @brief Open a new character device from path. +DK_EXTERN kernelDeviceRef kernelOpenCharDevice(const char* devicePath) { + if (!devicePath) return NIL; + + return kernelCall("OpenCharDevice", 1, devicePath); +} + +/// @brief Close any device. +/// @param device valid device. +DK_EXTERN void kernelCloseDevice(kernelDeviceRef device) { + if (!device) return; + + kernelCall("CloseDevice", 1, device); +} diff --git a/Private/DriverKit/KernelDev.h b/Private/DriverKit/KernelDev.h new file mode 100644 index 00000000..daa60a7c --- /dev/null +++ b/Private/DriverKit/KernelDev.h @@ -0,0 +1,28 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Devices. + +------------------------------------------- */ + +#pragma once + +#include <DriverKit/KernelStd.h> + +typedef struct _kernelDevice { + int32_t(*read)(); // read from device. + int32_t(*write)(); // write to device. + struct _kernelDevice* (*open)(const char* path); // open device. + void (*close)(struct _kernelDevice* dev); // close device. +} kernelDevice,* kernelDeviceRef; + +/// @brief Open a new binary device from path. +DK_EXTERN kernelDeviceRef kernelOpenBinaryDevice(const char* devicePath); + +/// @brief Open a new character device from path. +DK_EXTERN kernelDeviceRef kernelOpenCharDevice(const char* devicePath); + +/// @brief Close any device. +/// @param device valid device. +DK_EXTERN void kernelCloseDevice(kernelDeviceRef device); diff --git a/Private/DriverKit/KernelDispatchCall.S b/Private/DriverKit/KernelDispatchCall.S new file mode 100644 index 00000000..4eec8ae0 --- /dev/null +++ b/Private/DriverKit/KernelDispatchCall.S @@ -0,0 +1,21 @@ +.globl __kernelDispatchCall + +.section .text + +/* Really simple function, takes our va-list, + and brings it to the trap handler in the kernel. */ + +#ifdef __x86_64__ + +__kernelDispatchCall: + int $0x33 + ret + +#elif defined(__powerpc64__) + +__kernelDispatchCall: + mflr 3 + sc + blr + +#endif diff --git a/Private/DriverKit/KernelPrint.c b/Private/DriverKit/KernelPrint.c new file mode 100644 index 00000000..5ca09ccf --- /dev/null +++ b/Private/DriverKit/KernelPrint.c @@ -0,0 +1,28 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Text I/O. + +------------------------------------------- */ + +#include <DriverKit/KernelPrint.h> + +DK_EXTERN void kernelPrintChar(const char ch) { + kernelCall("WriteCharacter", 1, ch); +} + +/// @brief print string to UART. +/// @param message UART to transmit. +DK_EXTERN void kernelPrintStr(const char* message) { + if (!message) return; + if (*message == 0) return; + + size_t index = 0; + size_t len = kernelStringLength(message); + + while (index < len) { + kernelPrintChar(message[index]); + ++index; + } +} diff --git a/Private/DriverKit/KernelPrint.h b/Private/DriverKit/KernelPrint.h new file mode 100644 index 00000000..36e55442 --- /dev/null +++ b/Private/DriverKit/KernelPrint.h @@ -0,0 +1,18 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Text I/O. + +------------------------------------------- */ + +#pragma once + +#include <DriverKit/KernelString.h> + +/// @brief print character into UART. +DK_EXTERN void kernelPrintChar(const char ch); + +/// @brief print string to UART. +/// @param message UART to transmit. +DK_EXTERN void kernelPrintStr(const char* message); diff --git a/Private/DriverKit/KernelStd.c b/Private/DriverKit/KernelStd.c new file mode 100644 index 00000000..494ac0bc --- /dev/null +++ b/Private/DriverKit/KernelStd.c @@ -0,0 +1,24 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Definitions. + +------------------------------------------- */ + +#include <DriverKit/KernelStd.h> +#include <stdarg.h> + +DK_EXTERN __attribute__((naked)) void __kernelDispatchCall(int32_t cnt, ...); + +DK_EXTERN void* kernelCall(const char* kernelRpcName, int32_t cnt, ...) { + if (!kernelRpcName || cnt == 0) return NIL; + + va_list arg; + va_start(arg, cnt); + + __kernelDispatchCall(cnt, arg); + + va_end(arg); + +} diff --git a/Private/DriverKit/KernelStd.h b/Private/DriverKit/KernelStd.h new file mode 100644 index 00000000..3344630e --- /dev/null +++ b/Private/DriverKit/KernelStd.h @@ -0,0 +1,22 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Definitions. + +------------------------------------------- */ + +#pragma once + +#if defined(__cplusplus) +#define DK_EXTERN extern "C" +#define NIL nullptr +#else +#define DK_EXTERN extern +#define NIL NULL +#endif // defined(__cplusplus) + +#include <stdint.h> +#include <stddef.h> + +DK_EXTERN void* kernelCall(const char* kernelRpcName, int32_t cnt, ...); diff --git a/Private/DriverKit/KernelStdCxx.cc b/Private/DriverKit/KernelStdCxx.cc new file mode 100644 index 00000000..79d41a72 --- /dev/null +++ b/Private/DriverKit/KernelStdCxx.cc @@ -0,0 +1,24 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Driver C++ Definitions. + +------------------------------------------- */ + +#include <DriverKit/KernelStd.h> + +void* operator new(size_t sz) { + if (!sz) ++sz; + + auto ptr = kernelCall("NewKernelHeap", 1, sz); + kernelCall("KernelHeapProtect", 1, ptr); + + return ptr; +} + +void operator delete(void* ptr) noexcept { + if (!ptr) return; + + kernelCall("DeleteKernelHeap", 1,ptr); +} diff --git a/Private/DriverKit/KernelString.c b/Private/DriverKit/KernelString.c new file mode 100644 index 00000000..0bb45b16 --- /dev/null +++ b/Private/DriverKit/KernelString.c @@ -0,0 +1,30 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Strings. + +------------------------------------------- */ + +#include <DriverKit/KernelString.h> + +DK_EXTERN size_t kernelStringLength(const char* str) { + size_t index = 0; + + while (str[index] != 0) { + ++index; + } + + return index; +} + +DK_EXTERN int kernelStringCopy(char* dst, const char* src, size_t len) { + size_t index = 0; + + while (index != len) { + dst[index] = src[index]; + ++index; + } + + return index; +} diff --git a/Private/DriverKit/KernelString.h b/Private/DriverKit/KernelString.h new file mode 100644 index 00000000..8e189d26 --- /dev/null +++ b/Private/DriverKit/KernelString.h @@ -0,0 +1,16 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Strings. + +------------------------------------------- */ + +#pragma once + +#include <DriverKit/KernelStd.h> + +/// @brief DriverKit equivalent of POSIX's string.h. + +DK_EXTERN size_t kernelStringLength(const char* str); +DK_EXTERN int kernelStringCopy(char* dst, const char* src, size_t len); diff --git a/Private/HALKit/PowerPC/APM/.gitkeep b/Private/Drivers/.gitkeep index e69de29b..e69de29b 100644 --- a/Private/HALKit/PowerPC/APM/.gitkeep +++ b/Private/Drivers/.gitkeep diff --git a/Private/Drivers/Bonjour/Bonjour.c b/Private/Drivers/Bonjour/Bonjour.c new file mode 100644 index 00000000..dba649c9 --- /dev/null +++ b/Private/Drivers/Bonjour/Bonjour.c @@ -0,0 +1,18 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include <DriverKit/KernelString.h> +#include <DriverKit/KernelPrint.h> + +int __ImageStart(void) { + kernelPrintStr("Bonjour: Starting up zeroconf...\r\n"); + return 0; +} + +int __ImageEnd(void) { + kernelPrintStr("Bonjour: Shutting down zeroconf...\r\n"); + return 0; +} diff --git a/Private/Drivers/Bonjour/DriverRsrc.rsrc b/Private/Drivers/Bonjour/DriverRsrc.rsrc new file mode 100644 index 00000000..ed24e10e --- /dev/null +++ b/Private/Drivers/Bonjour/DriverRsrc.rsrc @@ -0,0 +1,25 @@ +1 ICON "../../Root/Boot/Icons/bonjour-logo.ico" + +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "080904E4" + BEGIN + VALUE "CompanyName", "Mahrouss-Logic" + VALUE "FileDescription", "New OS Bonjour driver." + VALUE "FileVersion", "1.00" + VALUE "InternalName", "Bonjour." + VALUE "LegalCopyright", "Copyright Mahrouss-Logic, all rights reserved." + VALUE "OriginalFilename", "Bonjour.exe" + VALUE "ProductName", "Bonjour." + VALUE "ProductVersion", "1.00" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x809, 1252 + END +END diff --git a/Private/Drivers/Bonjour/x86_64.mk b/Private/Drivers/Bonjour/x86_64.mk new file mode 100644 index 00000000..3461b2a3 --- /dev/null +++ b/Private/Drivers/Bonjour/x86_64.mk @@ -0,0 +1,52 @@ +################################################## +# (C) Mahrouss Logic, all rights reserved. +# This is the sample driver makefile. +################################################## + +CC_GNU=x86_64-w64-mingw32-gcc +LD_GNU=x86_64-w64-mingw32-ld + +WINDRES=x86_64-w64-mingw32-windres + +ADD_FILE=touch +COPY=cp +HTTP_GET=wget + +LD_FLAGS=-e __ImageStart --subsystem=17 + +OBJ=*.o + + +REM=rm +REM_FLAG=-f + +FLAG_ASM=-f win64 +FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ -DEFI_FUNCTION_WRAPPER -I../ -I../../ -I./ -c -ffreestanding -std=c17 -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -D__BOOTLOADER__ -I./ + +.PHONY: invalid-recipe +invalid-recipe: + @echo "invalid-recipe: Use make all instead." + +.PHONY: all +all: compile-amd64 + $(LD_GNU) $(OBJ) $(LD_FLAGS) -o Bonjour.exe + cp Bonjour.exe ../../Root/Boot/Bonjour.exe + +ifneq ($(DEBUG_SUPPORT), ) +DEBUG = -D__DEBUG__ +endif + +.PHONY: compile-amd64 +compile-amd64: + $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o + $(CC_GNU) $(FLAG_GNU) $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) $(wildcard ../../DriverKit/*.S) + +.PHONY: clean +clean: + $(REM) $(REM_FLAG) $(OBJ) Bonjour.exe + +.PHONY: help +help: + @echo "=== HELP ===" + @echo "clean: Clean driver." + @echo "compile-amd64: Build driver." diff --git a/Private/Drivers/MahroussUpdate/DriverRsrc.rsrc b/Private/Drivers/MahroussUpdate/DriverRsrc.rsrc new file mode 100644 index 00000000..359a0875 --- /dev/null +++ b/Private/Drivers/MahroussUpdate/DriverRsrc.rsrc @@ -0,0 +1,25 @@ +1 ICON "../../Root/Boot/Icons/update-logo.ico" + +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "080904E4" + BEGIN + VALUE "CompanyName", "Mahrouss-Logic" + VALUE "FileDescription", "New OS Mahrouss Update driver." + VALUE "FileVersion", "1.00" + VALUE "InternalName", "Mahrouss Update." + VALUE "LegalCopyright", "Copyright Mahrouss-Logic, all rights reserved." + VALUE "OriginalFilename", "MahroussUpdate.exe" + VALUE "ProductName", "MahroussUpdate." + VALUE "ProductVersion", "1.00" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x809, 1252 + END +END diff --git a/Private/Drivers/MahroussUpdate/MahroussUpdate.cc b/Private/Drivers/MahroussUpdate/MahroussUpdate.cc new file mode 100644 index 00000000..c8741ed0 --- /dev/null +++ b/Private/Drivers/MahroussUpdate/MahroussUpdate.cc @@ -0,0 +1,24 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include <DriverKit/KernelString.h> +#include <DriverKit/KernelPrint.h> + +#include <Drivers/MahroussUpdate/MahroussUpdate.hxx> + +DK_EXTERN int __ImageStart(void) { + kernelPrintStr("Mahrouss Update: Looking for updates...\r\n"); + UpdateRequest req("mup://release-mahrouss.logic/newos/"); + + return 0; +} + +DK_EXTERN int __ImageEnd(void) { + return 0; +} + +///! @brief Use this to check your stack, if using MinGW/MSVC. +DK_EXTERN void ___chkstk_ms(void) {} diff --git a/Private/Drivers/MahroussUpdate/MahroussUpdate.hxx b/Private/Drivers/MahroussUpdate/MahroussUpdate.hxx new file mode 100644 index 00000000..a4f219be --- /dev/null +++ b/Private/Drivers/MahroussUpdate/MahroussUpdate.hxx @@ -0,0 +1,33 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#pragma once + +#include <DriverKit/KernelString.h> + +#include "DriverKit/KernelPrint.h" + +/// @file Software update job driver. + +class UpdateRequest; +class UpdateRequestObserver; + +class UpdateRequest { + public: + explicit UpdateRequest(const char* patchUrl = "mup://invalid-url-scheme/") { + kernelStringCopy(this->fPatchUrl, patchUrl, kernelStringLength(patchUrl)); + + kernelPrintStr("Mahrouss Update, Looking at: "); + kernelPrintStr(patchUrl); + kernelPrintChar('\r'); + kernelPrintChar('\n'); + } + + ~UpdateRequest() {} + + private: + char fPatchUrl[4096] = {0}; +}; diff --git a/Private/Drivers/MahroussUpdate/x86_64.mk b/Private/Drivers/MahroussUpdate/x86_64.mk new file mode 100644 index 00000000..cffa0ab7 --- /dev/null +++ b/Private/Drivers/MahroussUpdate/x86_64.mk @@ -0,0 +1,53 @@ +################################################## +# (C) Mahrouss Logic, all rights reserved. +# This is the sample driver makefile. +################################################## + +CC_GNU=x86_64-w64-mingw32-gcc +LD_GNU=x86_64-w64-mingw32-ld + +WINDRES=x86_64-w64-mingw32-windres + +ADD_FILE=touch +COPY=cp +HTTP_GET=wget + +LD_FLAGS=-e __ImageStart --subsystem=17 + +OBJ=*.o + + +REM=rm +REM_FLAG=-f + +FLAG_ASM=-f win64 +FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ -DEFI_FUNCTION_WRAPPER -I../ -I../../ -I./ -c -ffreestanding -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -D__BOOTLOADER__ -I./ + +.PHONY: invalid-recipe +invalid-recipe: + @echo "invalid-recipe: Use make all instead." + +.PHONY: all +all: compile-amd64 + $(LD_GNU) $(OBJ) $(LD_FLAGS) -o MahroussUpdate.exe + cp MahroussUpdate.exe ../../Root/Boot/MahroussUpdate.exe + +ifneq ($(DEBUG_SUPPORT), ) +DEBUG = -D__DEBUG__ +endif + +.PHONY: compile-amd64 +compile-amd64: + $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o + $(CC_GNU) $(FLAG_GNU) -std=c17 $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) $(wildcard ../../DriverKit/*.S) + $(CC_GNU) $(FLAG_GNU) -std=c++17 -fno-rtti -fno-exceptions $(DEBUG) $(wildcard *.cc) $(wildcard ../../DriverKit/*.cc) + +.PHONY: clean +clean: + $(REM) $(REM_FLAG) $(OBJ) MahroussUpdate.exe + +.PHONY: help +help: + @echo "=== HELP ===" + @echo "clean: Clean driver." + @echo "compile-amd64: Build driver." diff --git a/Private/Drivers/SampleDriver/DriverRsrc.rsrc b/Private/Drivers/SampleDriver/DriverRsrc.rsrc new file mode 100644 index 00000000..5129b077 --- /dev/null +++ b/Private/Drivers/SampleDriver/DriverRsrc.rsrc @@ -0,0 +1,25 @@ +1 ICON "../../Root/Boot/Icons/driver-logo.ico" + +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "080904E4" + BEGIN + VALUE "CompanyName", "Mahrouss-Logic" + VALUE "FileDescription", "New OS driver." + VALUE "FileVersion", "1.00" + VALUE "InternalName", "SampleDriver" + VALUE "LegalCopyright", "Copyright Mahrouss-Logic, all rights reserved." + VALUE "OriginalFilename", "SampleDriver.exe" + VALUE "ProductName", "SampleDriver" + VALUE "ProductVersion", "1.00" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x809, 1252 + END +END diff --git a/Private/Drivers/SampleDriver/SampleDriver.c b/Private/Drivers/SampleDriver/SampleDriver.c new file mode 100644 index 00000000..4481d480 --- /dev/null +++ b/Private/Drivers/SampleDriver/SampleDriver.c @@ -0,0 +1,21 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include <DriverKit/KernelString.h> +#include <DriverKit/KernelPrint.h> + +int __ImageStart(void) { + kernelPrintStr("SampleDriver: Starting up...\r\n"); + return 0; +} + +int __ImageEnd(void) { + kernelPrintStr("SampleDriver: Shutting down...\r\n"); + return 0; +} + +///! @brief Use this to check your stack, if using MinGW/MSVC. +void ___chkstk_ms(void) {} diff --git a/Private/Drivers/SampleDriver/x86_64.mk b/Private/Drivers/SampleDriver/x86_64.mk new file mode 100644 index 00000000..f8d56b08 --- /dev/null +++ b/Private/Drivers/SampleDriver/x86_64.mk @@ -0,0 +1,52 @@ +################################################## +# (C) Mahrouss Logic, all rights reserved. +# This is the sample driver makefile. +################################################## + +CC_GNU=x86_64-w64-mingw32-gcc +LD_GNU=x86_64-w64-mingw32-ld + +WINDRES=x86_64-w64-mingw32-windres + +ADD_FILE=touch +COPY=cp +HTTP_GET=wget + +LD_FLAGS=-e __ImageStart --subsystem=17 + +OBJ=*.o + + +REM=rm +REM_FLAG=-f + +FLAG_ASM=-f win64 +FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ -DEFI_FUNCTION_WRAPPER -I../ -I../../ -I./ -c -ffreestanding -std=c17 -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -D__BOOTLOADER__ -I./ + +.PHONY: invalid-recipe +invalid-recipe: + @echo "invalid-recipe: Use make all instead." + +.PHONY: all +all: compile-amd64 + $(LD_GNU) $(OBJ) $(LD_FLAGS) -o SampleDriver.exe + cp SampleDriver.exe ../../Root/Boot/SampleDriver.exe + +ifneq ($(DEBUG_SUPPORT), ) +DEBUG = -D__DEBUG__ +endif + +.PHONY: compile-amd64 +compile-amd64: + $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o + $(CC_GNU) $(FLAG_GNU) $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) $(wildcard ../../DriverKit/*.S) + +.PHONY: clean +clean: + $(REM) $(REM_FLAG) $(OBJ) SampleDriver.exe + +.PHONY: help +help: + @echo "=== HELP ===" + @echo "clean: Clean driver." + @echo "compile-amd64: Build driver." diff --git a/Private/FSKit/NewFS.hxx b/Private/FSKit/NewFS.hxx index 3f93700f..339b9832 100644 --- a/Private/FSKit/NewFS.hxx +++ b/Private/FSKit/NewFS.hxx @@ -30,7 +30,11 @@ default. #define kNewFSInvalidCatalog -1 #define kNewFSNodeNameLen 256 -#define kNewFSMinimumSectorSz 4096 +#ifdef __x86_64__ +#define kNewFSMinimumSectorSz (512) +#else +#define kNewFSMinimumSectorSz (1024) +#endif // ifdef __x86_64__ #define kNewFSIdentLen 8 #define kNewFSIdent " NewFS" @@ -105,6 +109,7 @@ enum { /// @brief Ccatalog type. struct PACKED NewCatalog final { NewCharType Name[kNewFSNodeNameLen]; + NewCharType Mime[kNewFSNodeNameLen]; NewOS::Int32 Flags; NewOS::Int32 Kind; @@ -173,7 +178,7 @@ enum { /// forks...) Designed like the DOM, detects the filesystem automatically. /// -class NewFSParser final { +class NewFSParser { public: explicit NewFSParser() = default; ~NewFSParser() = default; diff --git a/Private/HALKit/PowerPC/PCI/.gitkeep b/Private/FirmwareKit/CoreBoot/.gitkeep index e69de29b..e69de29b 100644 --- a/Private/HALKit/PowerPC/PCI/.gitkeep +++ b/Private/FirmwareKit/CoreBoot/.gitkeep diff --git a/Private/FirmwareKit/EFI/API.hxx b/Private/FirmwareKit/EFI/API.hxx index cfb3f425..138d6b42 100644 --- a/Private/FirmwareKit/EFI/API.hxx +++ b/Private/FirmwareKit/EFI/API.hxx @@ -19,7 +19,7 @@ EXTERN_C void rt_hlt(); namespace EFI { /// @brief Halt and clear interrupts. -/// @return +/// @return inline Void Stop() noexcept { while (1) { rt_hlt(); @@ -51,7 +51,7 @@ inline UInt32 Platform() noexcept { return kPEMachineAMD64; } */ inline void RaiseHardError(const EfiCharType *ErrorCode, const EfiCharType *Reason) noexcept { - ST->ConOut->OutputString(ST->ConOut, L"*** STOP ***\r\n"); + ST->ConOut->OutputString(ST->ConOut, L"\r\n*** STOP ***\r\n"); ST->ConOut->OutputString(ST->ConOut, L"*** Error: "); ST->ConOut->OutputString(ST->ConOut, ErrorCode); diff --git a/Private/FirmwareKit/EFI/EFI.hxx b/Private/FirmwareKit/EFI/EFI.hxx index 1d56f757..7f8223cf 100644 --- a/Private/FirmwareKit/EFI/EFI.hxx +++ b/Private/FirmwareKit/EFI/EFI.hxx @@ -571,8 +571,6 @@ typedef struct EfiSystemTable { } *ConfigurationTable; } EfiSystemTable; -#define EfiMain efi_main - #define kEfiOk 0 #define kEfiFail -1 diff --git a/Private/FirmwareKit/EPM.hxx b/Private/FirmwareKit/EPM.hxx index 5cc743be..b7f77742 100644 --- a/Private/FirmwareKit/EPM.hxx +++ b/Private/FirmwareKit/EPM.hxx @@ -71,7 +71,7 @@ struct PACKED PartitionBlock { #define kEPMMagic32k "EPM32" -/* @brief PowerPC magic for EPM */ +/* @brief POWER magic for EPM */ #define kEPMMagicPPC "EPMPC" diff --git a/Private/HALKit/64x0/HalVirtualMemory.cxx b/Private/HALKit/64x0/HalVirtualMemory.cxx index 8fc08df0..2ae0f7ac 100644 --- a/Private/HALKit/64x0/HalVirtualMemory.cxx +++ b/Private/HALKit/64x0/HalVirtualMemory.cxx @@ -4,11 +4,11 @@ ------------------------------------------- */ -#include <HALKit/PowerPC/Processor.hpp> +#include <HALKit/POWER/Processor.hpp> #include <KernelKit/DebugOutput.hpp> using namespace NewOS; -/// @brief Flush system TLB, looks like the PowerPC version, as it acts the same, no specific instruction for that. +/// @brief Flush system TLB, looks like the POWER version, as it acts the same, no specific instruction for that. /// @note The 88K MMU should be present in the die. -EXTERN_C void hal_flush_tlb() { asm volatile("isync;invltlb;msync;isync"); } +EXTERN_C void hal_flush_tlb() { asm volatile("invltlb"); } diff --git a/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp b/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp index aa9c0e47..99a66532 100644 --- a/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp +++ b/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp @@ -9,86 +9,86 @@ #include <NewKit/String.hpp> /// @brief Handle GPF fault. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_gpf(NewOS::UIntPtr rsp) { MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); - NewOS::kcout << "NewOS: Stack Pointer: " + NewOS::kcout << "New OS: Stack Pointer: " << NewOS::StringBuilder::FromInt("rsp{%}", rsp); NewOS::kcout - << "NewOS: General Protection Fault, caused by " + << "New OS: General Protection Fault, caused by " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } /// @brief Handle the scheduler interrupt, raised from the HPET timer. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_scheduler(NewOS::UIntPtr rsp) { NewOS::kcout << NewOS::StringBuilder::FromInt("rsp{%}", rsp); NewOS::kcout - << "NewOS: Will be scheduled back later " + << "New OS: Will be scheduled back later " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName() << NewOS::end_line(); /// schedule another process. if (!NewOS::ProcessHelper::StartScheduling()) { - NewOS::kcout << "NewOS: Continue schedule this process...\r\n"; + NewOS::kcout << "New OS: Continue schedule this process...\r\n"; } } /// @brief Handle page fault. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_pf(NewOS::UIntPtr rsp) { MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); NewOS::kcout << NewOS::StringBuilder::FromInt("rsp{%}", rsp); NewOS::kcout - << "NewOS: Segmentation Fault, caused by " + << "New OS: Segmentation Fault, caused by " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } /// @brief Handle math fault. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_math(NewOS::UIntPtr rsp) { MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); NewOS::kcout << NewOS::StringBuilder::FromInt("rsp{%}", rsp); NewOS::kcout - << "NewOS: Math error, caused by " + << "New OS: Math error, caused by " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } /// @brief Handle any generic fault. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_generic(NewOS::UIntPtr rsp) { MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); NewOS::kcout << NewOS::StringBuilder::FromInt("sp{%}", rsp); NewOS::kcout - << "NewOS: Execution error, caused by " + << "New OS: Execution error, caused by " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } /// @brief Handle #UD fault. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_ud(NewOS::UIntPtr rsp) { MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); - NewOS::kcout << "NewOS: Stack Pointer: " + NewOS::kcout << "New OS: Stack Pointer: " << NewOS::StringBuilder::FromInt("rsp{%}", rsp); NewOS::kcout - << "NewOS: Invalid interrupt, caused by " + << "New OS: Invalid interrupt, caused by " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); -}
\ No newline at end of file +} diff --git a/Private/HALKit/AMD64/HalCoreMultiProcessingAMD64.cpp b/Private/HALKit/AMD64/HalCoreMultiProcessingAMD64.cpp index 98d64215..0761114d 100644 --- a/Private/HALKit/AMD64/HalCoreMultiProcessingAMD64.cpp +++ b/Private/HALKit/AMD64/HalCoreMultiProcessingAMD64.cpp @@ -92,14 +92,14 @@ STATIC MadtType* kApicInfoBlock = nullptr; /////////////////////////////////////////////////////////////////////////////////////// void hal_system_get_cores(voidPtr rsdPtr) { - kcout << "NewOS: Constructing ACPIFactoryInterface...\r\n"; + kcout << "New OS: Constructing ACPIFactoryInterface...\r\n"; auto acpi = ACPIFactoryInterface(rsdPtr); kApicMadt = acpi.Find(kApicSignature).Leak().Leak(); MUST_PASS(kApicMadt); // MADT must exist. - kcout << "NewOS: Successfuly fetched the MADT!\r\n"; + kcout << "New OS: Successfuly fetched the MADT!\r\n"; kApicInfoBlock = (MadtType*)kApicMadt; } diff --git a/Private/HALKit/AMD64/HalHardwareMP.cpp b/Private/HALKit/AMD64/HalHardwareMP.cpp index 0e9f3022..135222b9 100644 --- a/Private/HALKit/AMD64/HalHardwareMP.cpp +++ b/Private/HALKit/AMD64/HalHardwareMP.cpp @@ -19,20 +19,12 @@ void rt_wakeup_thread(HAL::StackFrame* stack) { HAL::rt_sti(); } -/// @brief Hangs until RCX register is cleared. -/// @param stack -static void __rt_hang_proc(HAL::StackFrame* stack) { - while (stack->Rcx == 1) { - ; - } -} - /// @brief makes thread sleep. /// hooks and hangs thread to prevent code from executing. void rt_hang_thread(HAL::StackFrame* stack) { HAL::rt_cli(); - __rt_hang_proc(stack); + stack->Rcx = 1; HAL::rt_sti(); } diff --git a/Private/HALKit/AMD64/HalKernelMain.cxx b/Private/HALKit/AMD64/HalKernelMain.cxx index f6b8e957..57c37778 100644 --- a/Private/HALKit/AMD64/HalKernelMain.cxx +++ b/Private/HALKit/AMD64/HalKernelMain.cxx @@ -5,7 +5,6 @@ ------------------------------------------- */ #include <ArchKit/ArchKit.hpp> -#include <Builtins/Toolbox/Rsrc/Splash.rsrc> #include <Builtins/Toolbox/Toolbox.hxx> #include <FirmwareKit/Handover.hxx> #include <KernelKit/FileManager.hpp> @@ -17,7 +16,7 @@ #include <NewKit/Json.hpp> EXTERN_C NewOS::VoidPtr kInterruptVectorTable[]; -EXTERN_C void RuntimeMain(); +EXTERN_C void AppMain(); namespace NewOS::HAL { /// @brief Gets the system cores using the MADT. @@ -74,16 +73,7 @@ EXTERN_C void hal_init_platform( /// END POST - ToolboxInitRsrc(); - - ToolboxDrawRsrc( - MahroussLogic, MAHROUSSLOGIC_HEIGHT, MAHROUSSLOGIC_WIDTH, - ((kHandoverHeader->f_GOP.f_Width - MAHROUSSLOGIC_WIDTH) / 2), - ((kHandoverHeader->f_GOP.f_Height - MAHROUSSLOGIC_HEIGHT) / 2)); - - ToolboxClearRsrc(); - - RuntimeMain(); + AppMain(); NewOS::ke_stop(RUNTIME_CHECK_BOOTSTRAP); } diff --git a/Private/HALKit/AMD64/Processor.hpp b/Private/HALKit/AMD64/Processor.hpp index 7e2624d7..70452d1d 100644 --- a/Private/HALKit/AMD64/Processor.hpp +++ b/Private/HALKit/AMD64/Processor.hpp @@ -26,11 +26,11 @@ #define IsActiveLow(FLG) (FLG & 2) #define IsLevelTriggered(FLG) (FLG & 8) -#define kInterruptGate 0x8E -#define kTrapGate 0xEF -#define kTaskGate 0b10001100 -#define kGdtCodeSelector 0x08 -#define kVirtualAddressStartOffset 0x100 +#define kInterruptGate (0x8E) +#define kTrapGate (0xEF) +#define kTaskGate (0b10001100) +#define kGdtCodeSelector (0x08) +#define kVirtualAddressStartOffset (0x100) namespace NewOS { namespace Detail::AMD64 { diff --git a/Private/HALKit/AMD64/Storage/ATA-PIO.cxx b/Private/HALKit/AMD64/Storage/ATA-PIO.cxx index ebced11c..3cbba6f7 100644 --- a/Private/HALKit/AMD64/Storage/ATA-PIO.cxx +++ b/Private/HALKit/AMD64/Storage/ATA-PIO.cxx @@ -72,7 +72,7 @@ ATAInit_Retry: auto statRdy = In8(IO + ATA_REG_STATUS); if (statRdy & ATA_SR_ERR) { - kcout << "NewOS: ATA: Select error, not an IDE based hard-drive.\r\n"; + kcout << "New OS: ATA: Select error, not an IDE based hard-drive.\r\n"; return false; } @@ -107,21 +107,21 @@ ATAInit_Retry: /* differentiate ATA, ATAPI, SATA and SATAPI */ if (cl == 0x14 && ch == 0xEB) { - kcout << "NewOS: PATAPI drive detected.\r\n"; + kcout << "New OS: PATAPI drive detected.\r\n"; kATADeviceType = kATADevicePATA_PI; } if (cl == 0x69 && ch == 0x96) { - kcout << "NewOS: SATAPI drive detected.\r\n"; + kcout << "New OS: SATAPI drive detected.\r\n"; kATADeviceType = kATADeviceSATA_PI; } if (cl == 0x0 && ch == 0x0) { - kcout << "NewOS: PATA drive detected.\r\n"; + kcout << "New OS: PATA drive detected.\r\n"; kATADeviceType = kATADevicePATA; } if (cl == 0x3c && ch == 0xc3) { - kcout << "NewOS: SATA drive detected.\r\n"; + kcout << "New OS: SATA drive detected.\r\n"; kATADeviceType = kATADeviceSATA; } @@ -148,7 +148,7 @@ Void drv_std_read(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, for (SizeT IndexOff = 0; IndexOff < Size; ++IndexOff) { WideChar chr = In16(IO + ATA_REG_DATA); - + Buf[IndexOff] = chr; } } @@ -171,11 +171,11 @@ Void drv_std_write(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, for (SizeT IndexOff = 0; IndexOff < Size; ++IndexOff) { Out16(IO + ATA_REG_DATA, Buf[IndexOff]); - + } } /// @check is ATA detected? Boolean drv_std_detected(Void) { return kATADetected; } -#endif /* ifdef __ATA_PIO__ */
\ No newline at end of file +#endif /* ifdef __ATA_PIO__ */ diff --git a/Private/NewBoot/Source/CDROM/.gitkeep b/Private/HALKit/POWER/.gitkeep index e69de29b..e69de29b 100644 --- a/Private/NewBoot/Source/CDROM/.gitkeep +++ b/Private/HALKit/POWER/.gitkeep diff --git a/Private/NewBoot/Source/CDROM/EFI/BOOT/.gitkeep b/Private/HALKit/POWER/APM/.gitkeep index e69de29b..e69de29b 100644 --- a/Private/NewBoot/Source/CDROM/EFI/BOOT/.gitkeep +++ b/Private/HALKit/POWER/APM/.gitkeep diff --git a/Private/HALKit/POWER/HalContextSwitchPowerPC.s b/Private/HALKit/POWER/HalContextSwitchPowerPC.s new file mode 100644 index 00000000..75c9f37a --- /dev/null +++ b/Private/HALKit/POWER/HalContextSwitchPowerPC.s @@ -0,0 +1,28 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +.align 4 +.type name, @function +.text +.globl rt_do_context_switch + +/* r3 (3) = assigner stack, r4 (4) = assignee stack */ +rt_do_context_switch: + lwz 0(%4), 0(%3) + lwz 4(%4), 4(%3) + lwz 8(%4), 8(%3) + lwz 12(%4), 12(%3) + lwz 14(%4), 14(%3) + lwz 18(%4), 18(%3) + lwz 22(%4), 22(%3) + lwz 24(%4), 24(%3) + lwz 28(%4), 28(%3) + lwz 32(%4), 32(%3) + lwz 34(%4), 34(%3) + lwz 38(%4), 38(%3) + + /* we are done here, the assignee should start executing code now. */ + blr diff --git a/Private/HALKit/PowerPC/HalHardware.cxx b/Private/HALKit/POWER/HalHardware.cxx index 5d09805d..693bf70e 100644 --- a/Private/HALKit/PowerPC/HalHardware.cxx +++ b/Private/HALKit/POWER/HalHardware.cxx @@ -4,7 +4,7 @@ ------------------------------------------- */ -#include <HALKit/PowerPC/Processor.hpp> +#include <HALKit/POWER/Processor.hpp> #include <KernelKit/DebugOutput.hpp> namespace NewOS { diff --git a/Private/HALKit/PowerPC/HalSMPManager.cxx b/Private/HALKit/POWER/HalHart.cxx index 26ebc399..75eeb3f7 100644 --- a/Private/HALKit/PowerPC/HalSMPManager.cxx +++ b/Private/HALKit/POWER/HalHart.cxx @@ -4,8 +4,9 @@ ------------------------------------------- */ -#include <HALKit/PowerPC/Processor.hpp> +#include <HALKit/POWER/Processor.hpp> #include <KernelKit/DebugOutput.hpp> +#include <HALKit/POWER/Hart.hxx> using namespace NewOS; @@ -15,4 +16,4 @@ void rt_wakeup_thread(HAL::StackFramePtr stack) {} /// @brief makes thread sleep. /// hooks and hangs thread to prevent code from executing. -void rt_hang_thread(HAL::StackFramePtr stack) {}
\ No newline at end of file +void rt_hang_thread(HAL::StackFramePtr stack) {} diff --git a/Private/HALKit/PowerPC/HalSerialPort.cxx b/Private/HALKit/POWER/HalSerialPort.cxx index 36878b61..cf943371 100644 --- a/Private/HALKit/PowerPC/HalSerialPort.cxx +++ b/Private/HALKit/POWER/HalSerialPort.cxx @@ -4,13 +4,13 @@ ------------------------------------------- */ -#include <HALKit/PowerPC/Processor.hpp> +#include <HALKit/POWER/Processor.hpp> #include <KernelKit/DebugOutput.hpp> using namespace NewOS; /// @brief Writes to COM1. -/// @param bytes +/// @param bytes void ke_io_write(const Char* bytes) { if (!bytes) return; @@ -21,4 +21,4 @@ void ke_io_write(const Char* bytes) { // TODO ++index; } -}
\ No newline at end of file +} diff --git a/Private/Servers/CoreDisplay/Headers/CDBitBlt.h b/Private/HALKit/POWER/HalStartSequence.s index 21823755..f50a4d4f 100644 --- a/Private/Servers/CoreDisplay/Headers/CDBitBlt.h +++ b/Private/HALKit/POWER/HalStartSequence.s @@ -2,9 +2,13 @@ Copyright Mahrouss Logic - File: CDBitBlt.h - Purpose: Userbuffer to Framebuffer magic. - ------------------------------------------- */ -#pragma once
\ No newline at end of file +.globl Main +.extern HalKernelMain +.align 4 +.text + +Main: + bl HalKernelMain + blr diff --git a/Private/HALKit/PowerPC/HalThread.cxx b/Private/HALKit/POWER/HalThread.cxx index a91e7f28..c79b4fb7 100644 --- a/Private/HALKit/PowerPC/HalThread.cxx +++ b/Private/HALKit/POWER/HalThread.cxx @@ -4,7 +4,7 @@ ------------------------------------------- */ -#include <HALKit/PowerPC/Processor.hpp> +#include <HALKit/POWER/Processor.hpp> #include <KernelKit/DebugOutput.hpp> extern "C" NewOS::HAL::StackFramePtr rt_get_current_context() { return nullptr; } diff --git a/Private/HALKit/PowerPC/HalVirtualMemory.cxx b/Private/HALKit/POWER/HalVirtualMemory.cxx index 301bda0c..c138d76f 100644 --- a/Private/HALKit/PowerPC/HalVirtualMemory.cxx +++ b/Private/HALKit/POWER/HalVirtualMemory.cxx @@ -4,14 +4,13 @@ ------------------------------------------- */ -#include <HALKit/PowerPC/ppc-cpu.h> -#include <HALKit/PowerPC/ppc-mmu.h> +#include <HALKit/POWER/ppc-cpu.h> +#include <HALKit/POWER/ppc-mmu.h> -#include <HALKit/PowerPC/Processor.hpp> +#include <HALKit/POWER/Processor.hpp> #include <KernelKit/DebugOutput.hpp> -/// NOTE: refer to: https://www.nxp.com/docs/en/white-paper/POWRPCARCPRMRM.pdf, -/// or in /Developer/PDF/POWRPCARCPRMRM.pdf +/// @note refer to our SoC documentation. using namespace NewOS; diff --git a/Private/HALKit/POWER/Hart.hxx b/Private/HALKit/POWER/Hart.hxx new file mode 100644 index 00000000..2a908fcf --- /dev/null +++ b/Private/HALKit/POWER/Hart.hxx @@ -0,0 +1,27 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + File: Hart.hxx + Purpose: POWER hardware threads. + + Revision History: + + 14/04/24: Added file (amlel) + +------------------------------------------- */ + +#pragma once + +#include <NewKit/Defines.hpp> + +/// @brief hardware thread indentification type. +typedef NewOS::Int32 PPCHartType; + +/// @brief Hardware thread information structure. +typedef struct HalHardwareThread { + NewOS::UIntPtr fStartAddress; + NewOS::UInt8 fPrivleged : 1; + NewOS::UInt32 fPageFlags; + PPCHartType fIdentNumber; +} HalHardwareThread; diff --git a/Private/NewBoot/Source/HEL/PowerPC/.gitkeep b/Private/HALKit/POWER/MBCI/.gitkeep index e69de29b..e69de29b 100644 --- a/Private/NewBoot/Source/HEL/PowerPC/.gitkeep +++ b/Private/HALKit/POWER/MBCI/.gitkeep diff --git a/Private/Servers/CoreDisplay/Headers/CDServerStartup.h b/Private/HALKit/POWER/MBCI/HalMBCIHost.cxx index 47f369ae..8ad039fe 100644 --- a/Private/Servers/CoreDisplay/Headers/CDServerStartup.h +++ b/Private/HALKit/POWER/MBCI/HalMBCIHost.cxx @@ -2,9 +2,7 @@ Copyright Mahrouss Logic - File: CDServerStartup.h - Purpose: Server entrypoint. - ------------------------------------------- */ -#pragma once
\ No newline at end of file +#include <HALKit/POWER/Processor.hpp> +#include <KernelKit/DebugOutput.hpp> diff --git a/Private/HALKit/PowerPC/Processor.hpp b/Private/HALKit/POWER/Processor.hpp index 19f8e799..d6fbfb89 100644 --- a/Private/HALKit/PowerPC/Processor.hpp +++ b/Private/HALKit/POWER/Processor.hpp @@ -2,7 +2,7 @@ Copyright Mahrouss Logic - Purpose: PowerPC processor header. + Purpose: POWER processor header. ------------------------------------------- */ @@ -11,12 +11,12 @@ #include <NewKit/Defines.hpp> #include <NewKit/Utils.hpp> -#define __PPC_ALIGN __attribute__((aligned(4))) +#define kHalPPCAlignment __attribute__((aligned(4))) namespace NewOS::HAL { typedef UIntPtr Reg; -struct __PPC_ALIGN StackFrame { +struct kHalPPCAlignment StackFrame { Reg R0; Reg R1; Reg R2; @@ -34,13 +34,17 @@ typedef StackFrame* StackFramePtr; inline void rt_halt() { while (1) { - + asm volatile("mr 0, 0"); // no oop. } } -inline void rt_cli() {} +inline void rt_cli() { + asm volatile ("mr 0, 0"); // no oop +} } // namespace NewOS::HAL -extern "C" void int_handle_math(NewOS::UIntPtr sp); -extern "C" void int_handle_pf(NewOS::UIntPtr sp); -extern "C" void* __ppc_alloca(size_t sz); +EXTERN_C void int_handle_math(NewOS::UIntPtr sp); +EXTERN_C void int_handle_pf(NewOS::UIntPtr sp); + +/// @brief Flush system TLB. +EXTERN_C void hal_flush_tlb(); diff --git a/Private/HALKit/PowerPC/ppc-cpu.h b/Private/HALKit/POWER/ppc-cpu.h index 4bc6e9f0..74003329 100644 --- a/Private/HALKit/PowerPC/ppc-cpu.h +++ b/Private/HALKit/POWER/ppc-cpu.h @@ -17,7 +17,7 @@ struct pt_regs { unsigned long nip; }; -#else +#else #include <asm/ptrace.h> #include <asm/types.h> #endif @@ -880,8 +880,8 @@ struct pt_regs { #define PVR_REV(pvr) (((pvr) >> 0) & 0xFFFF) /* Revison field */ /* - * AMCC has further subdivided the standard PowerPC 16-bit version and - * revision subfields of the PVR for the PowerPC 403s into the following: + * AMCC has further subdivided the standard ppc 16-bit version and + * revision subfields of the PVR for the ppc 403s into the following: */ #define PVR_FAM(pvr) (((pvr) >> 20) & 0xFFF) /* Family field */ @@ -990,7 +990,7 @@ struct pt_regs { /* * For the 8xx processors, all of them report the same PVR family for - * the PowerPC core. The various versions of these processors must be + * the ppc core. The various versions of these processors must be * differentiated by the version number in the Communication Processor * Module (CPM). */ diff --git a/Private/HALKit/PowerPC/ppc-mmu.h b/Private/HALKit/POWER/ppc-mmu.h index 372935aa..5a149243 100644 --- a/Private/HALKit/PowerPC/ppc-mmu.h +++ b/Private/HALKit/POWER/ppc-mmu.h @@ -1,6 +1,3 @@ -/* - * PowerPC memory management structures - */ #ifndef _PPC_MMU_H_ #define _PPC_MMU_H_ @@ -252,7 +249,7 @@ extern void print_bats(void); #define MI_IDXMASK 0x00001f00 /* TLB index to be loaded */ #define MI_RESETVAL 0x00000000 /* Value of register at reset */ -/* These are the Ks and Kp from the PowerPC books. For proper operation, +/* These are the Ks and Kp from the ppc books. For proper operation, * Ks = 0, Kp = 1. */ #define MI_AP 786 @@ -311,7 +308,7 @@ extern void print_bats(void); #define MC_ASIDMASK 0x0000000f /* Bits used for ASID value */ -/* These are the Ks and Kp from the PowerPC books. For proper operation, +/* These are the Ks and Kp from the ppc books. For proper operation, * Ks = 0, Kp = 1. */ #define MD_AP 794 @@ -368,7 +365,7 @@ extern void print_bats(void); #define M_TW 799 /* - * At present, all PowerPC 400-class processors share a similar TLB + * At present, all ppc 400-class processors share a similar TLB * architecture. The instruction and data sides share a unified, * 64-entry, fully-associative TLB which is maintained totally under * software control. In addition, the instruction side has a @@ -797,4 +794,4 @@ void change_tlb(uint32_t vaddr, uint32_t size, uint32_t tlb_word2_i_value); #endif /* __ASSEMBLY__ */ #endif /* CONFIG_440 */ -#endif /* _PPC_MMU_H_ */
\ No newline at end of file +#endif /* _PPC_MMU_H_ */ diff --git a/Private/HALKit/PowerPC/HalCoreContextSwitchPowerPC.s b/Private/HALKit/PowerPC/HalCoreContextSwitchPowerPC.s deleted file mode 100644 index 0bf6418d..00000000 --- a/Private/HALKit/PowerPC/HalCoreContextSwitchPowerPC.s +++ /dev/null @@ -1,30 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -.align 4 -.type name, @function -.text -.globl rt_do_context_switch - -/* r3 = assigner stack, r4 = assignee stack */ -rt_do_context_switch: - - lwz 0(%r4), 0(%r3) - lwz 4(%r4), 4(%r3) - lwz 8(%r4), 8(%r3) - lwz 12(%r4), 12(%r3) - lwz 14(%r4), 14(%r3) - lwz 18(%r4), 18(%r3) - lwz 22(%r4), 22(%r3) - lwz 24(%r4), 24(%r3) - lwz 28(%r4), 28(%r3) - lwz 32(%r4), 32(%r3) - lwz 34(%r4), 34(%r3) - lwz 38(%r4), 38(%r3) - - mr %r31, %r4 - - bl diff --git a/Private/HALKit/PowerPC/HalStartSequence.s b/Private/HALKit/PowerPC/HalStartSequence.s deleted file mode 100644 index 112ac73f..00000000 --- a/Private/HALKit/PowerPC/HalStartSequence.s +++ /dev/null @@ -1,6 +0,0 @@ -.globl Main -.align 4 -.text - -Main: - b Main diff --git a/Private/HALKit/PowerPC/Hart.hxx b/Private/HALKit/PowerPC/Hart.hxx deleted file mode 100644 index 618cbd97..00000000 --- a/Private/HALKit/PowerPC/Hart.hxx +++ /dev/null @@ -1,20 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - - File: Hart.hxx - Purpose: PowerPC hardware threads. - - Revision History: - - 14/04/24: Added file (amlel) - -------------------------------------------- */ - -#pragma once - -#include <NewKit/Defines.hpp> - -typedef NewOS::Int32 PPCHartType; - - diff --git a/Private/HALKit/PowerPC/PCI/HalDevice.cxx b/Private/HALKit/PowerPC/PCI/HalDevice.cxx deleted file mode 100644 index 8b137891..00000000 --- a/Private/HALKit/PowerPC/PCI/HalDevice.cxx +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Private/KernelKit/DriveManager.hxx b/Private/KernelKit/DriveManager.hxx index e66dedc8..c3d7c484 100644 --- a/Private/KernelKit/DriveManager.hxx +++ b/Private/KernelKit/DriveManager.hxx @@ -92,7 +92,7 @@ class MountpointInterface final { return &mD; default: { DbgLastError() = kErrorNoSuchDisk; - kcout << "NewOS: No such disk.\n"; + kcout << "New OS: No such disk.\n"; break; } @@ -106,13 +106,13 @@ class MountpointInterface final { }; /// @brief Unimplemented drive. -/// @param pckt -/// @return +/// @param pckt +/// @return Void ke_drv_unimplemented(DriveTrait::DrivePacket* pckt); /// @brief Gets the drive kind (ATA, SCSI, AHCI...) -/// @param -/// @return +/// @param +/// @return const Char* ke_drive_kind(Void); /// @brief Makes a new drive. diff --git a/Private/KernelKit/HError.hpp b/Private/KernelKit/HError.hpp index a3ea5d61..b82f7c6b 100644 --- a/Private/KernelKit/HError.hpp +++ b/Private/KernelKit/HError.hpp @@ -35,6 +35,7 @@ inline constexpr HError kErrorOutOfTeamSlot = 51; inline constexpr HError kErrorHeapNotPresent = 52; inline constexpr HError kErrorNoEntrypoint = 53; inline constexpr HError kErrorDiskIsCorrupted = 54; +inline constexpr HError kErrorDisk = 55; inline constexpr HError kErrorUnimplemented = 0; Boolean ke_bug_check(void) noexcept; diff --git a/Private/KernelKit/KernelHeap.hpp b/Private/KernelKit/KernelHeap.hpp index 5358236e..471dcb54 100644 --- a/Private/KernelKit/KernelHeap.hpp +++ b/Private/KernelKit/KernelHeap.hpp @@ -13,7 +13,7 @@ #include <NewKit/Defines.hpp> namespace NewOS { - + /// @brief Declare pointer as free. /// @param heapPtr the pointer. /// @return @@ -31,7 +31,7 @@ Boolean ke_is_valid_heap(VoidPtr ptr); /// @return the pointer voidPtr ke_new_ke_heap(SizeT sz, const bool rw, const bool user); -/// @brief Protect the heap pointer with a CRC32. +/// @brief Protect the heap with a CRC value. /// @param heapPtr HIB pointer. /// @return if it valid: point has crc now., otherwise fail. Boolean ke_protect_ke_heap(VoidPtr heapPtr); diff --git a/Private/KernelKit/PEFCodeManager.hxx b/Private/KernelKit/PEFCodeManager.hxx index d9e857de..1f5269ae 100644 --- a/Private/KernelKit/PEFCodeManager.hxx +++ b/Private/KernelKit/PEFCodeManager.hxx @@ -24,7 +24,7 @@ class PEFLoader : public LoaderInterface { public: explicit PEFLoader(const VoidPtr blob); - explicit PEFLoader(const char *path); + explicit PEFLoader(const Char* path); ~PEFLoader() override; public: diff --git a/Private/KernelKit/SMPManager.hpp b/Private/KernelKit/SMPManager.hpp index 631b29ea..17ea9d38 100644 --- a/Private/KernelKit/SMPManager.hpp +++ b/Private/KernelKit/SMPManager.hpp @@ -31,7 +31,7 @@ enum ThreadKind { /// /// \name HardwareThread -/// @brief CPU Hardware Thread (PowerPC, Intel, or NewCPU) +/// @brief CPU Hardware Thread (POWER, x64, or 64x0) /// class HardwareThread final { diff --git a/Private/KernelKit/XCOFF.hxx b/Private/KernelKit/XCOFF.hxx index 35ca9896..631efdf3 100644 --- a/Private/KernelKit/XCOFF.hxx +++ b/Private/KernelKit/XCOFF.hxx @@ -16,14 +16,14 @@ #include <NewKit/Defines.hpp> -#define kXCOFF64Magic 0x01F7 +#define kXCOFF64Magic 0x01F7 #define kXCOFFRelFlg 0x0001 #define kXCOFFExecutable 0x0002 #define kXCOFFLnno 0x0004 #define kXCOFFLSyms 0x0008 -/// @brief XCoff file header, meant for PowerPC programs. +/// @brief XCoff file header, meant for POWER apps. typedef struct XCoffFileHeader { NewOS::UInt16 fMagic; @@ -35,4 +35,4 @@ typedef struct XCoffFileHeader NewOS::UInt16 fOptHdr; // ?: Number of bytes in optional header } XCoffFileHeader; -#endif // ifndef __XCOFF__
\ No newline at end of file +#endif // ifndef __XCOFF__ diff --git a/Private/KernelRsrc.rsrc b/Private/KernelRsrc.rsrc index 7cdcf0e0..1fab6304 100644 --- a/Private/KernelRsrc.rsrc +++ b/Private/KernelRsrc.rsrc @@ -1,4 +1,4 @@ -1 ICON "Root/Boot/kernel-logo.ico" +1 ICON "Root/Boot/Icons/kernel-logo.ico" #include "CompilerKit/Version.hxx" @@ -11,7 +11,7 @@ BEGIN BLOCK "080904E4" BEGIN VALUE "CompanyName", "Mahrouss-Logic" - VALUE "FileDescription", "NewOS multiplatform kernel." + VALUE "FileDescription", "New OS multiplatform kernel." VALUE "FileVersion", KERNEL_VERSION VALUE "InternalName", "NewKernel" VALUE "LegalCopyright", "Mahrouss-Logic" diff --git a/Private/NewBoot/BootKit/BootKit.hxx b/Private/NewBoot/BootKit/BootKit.hxx index 1fbd0aef..117e32df 100644 --- a/Private/NewBoot/BootKit/BootKit.hxx +++ b/Private/NewBoot/BootKit/BootKit.hxx @@ -11,6 +11,12 @@ #pragma once +/***********************************************************************************/ +/// Framebuffer helpers. +/***********************************************************************************/ + +#define RGB(R, G, B) (UInt32)(0x##R##G##B) + class BTextWriter; class BFileReader; class BFileRunner; @@ -18,9 +24,20 @@ class BVersionString; #include <BootKit/HW/ATA.hxx> #include <CompilerKit/Version.hxx> + +/***********************************************************************************/ +/// Include other APIs. +/***********************************************************************************/ + +#include <BootKit/Platform.hxx> +#include <BootKit/Protocol.hxx> + #ifdef __EFI_x86_64__ +///! The Boot page provided to NewKernel. +#define kBootVirtualAddress (0xfffffff80000000) #include <FirmwareKit/EFI.hxx> #endif // ifdef __EFI_x86_64__ + #include <FirmwareKit/EPM.hxx> #include <NewKit/Defines.hpp> @@ -68,8 +85,10 @@ NewOS::SizeT BSetMem(CharacterTypeUTF8 *src, const CharacterTypeUTF8 byte, /// String length functions. +/// @brief get string length. NewOS::SizeT BStrLen(const CharacterTypeUTF16 *ptr); +/// @brief set memory with custom value. NewOS::SizeT BSetMem(CharacterTypeUTF16 *src, const CharacterTypeUTF16 byte, const NewOS::SizeT len); @@ -83,7 +102,8 @@ class BFileReader final { EfiHandlePtr ImageHandle); ~BFileReader(); - Void ReadAll(); + public: + Void ReadAll(SizeT until, SizeT chunk = 4096); enum { kOperationOkay, @@ -94,15 +114,17 @@ class BFileReader final { kCount, }; - Int32 &Error() { return mErrorCode; } - VoidPtr Blob() { return mBlob; } - EfiFileProtocolPtr File() { return mFile; } - UInt64 &Size() { return mSizeFile; } + /// @brief error code getter. + /// @return the error code. + Int32 &Error(); - UInt64 &Size(const UInt64 &Sz) { - mSizeFile = Sz; - return mSizeFile; - } + /// @brief blob getter. + /// @return the blob. + VoidPtr Blob(); + + /// @breif Size getter. + /// @return the size of the file. + UInt64 &Size(); public: BFileReader &operator=(const BFileReader &) = default; @@ -119,14 +141,13 @@ class BFileReader final { typedef UInt8 *BlobType; -#define kMaxReadSize (320) - -/***********************************************************************************/ -/// Include other APIs. -/***********************************************************************************/ +class BVersionString final { + public: + static const CharacterTypeUTF16 *Shared() { return BOOTLOADER_VERSION; } +}; -#include <BootKit/Platform.hxx> -#include <BootKit/Protocol.hxx> +/// @brief Bootloader main type. +typedef void (*BootMainKind)(HEL::HandoverInformationHeader *handoverInfo); /***********************************************************************************/ /// Provide some useful processor features. @@ -134,42 +155,16 @@ typedef UInt8 *BlobType; #ifdef __EFI_x86_64__ -inline void Out8(UInt16 port, UInt8 value) { - asm volatile("outb %%al, %1" : : "a"(value), "Nd"(port) : "memory"); -} - -inline void Out16(UInt16 port, UInt16 value) { - asm volatile("outw %%ax, %1" : : "a"(value), "Nd"(port) : "memory"); -} - -inline void Out32(UInt16 port, UInt32 value) { - asm volatile("outl %%eax, %1" : : "a"(value), "Nd"(port) : "memory"); -} - -inline UInt8 In8(UInt16 port) { - UInt8 value; - asm volatile("inb %1, %%al" : "=a"(value) : "Nd"(port) : "memory"); - - return value; -} - -inline UInt16 In16(UInt16 port) { - UInt16 value; - asm volatile("inw %%dx, %%ax" : "=a"(value) : "d"(port)); - - return value; -} - -inline UInt32 In32(UInt16 port) { - UInt32 value; - asm volatile("inl %1, %%eax" : "=a"(value) : "Nd"(port) : "memory"); - - return value; -} - /*** * Common processor instructions. -*/ + */ + +EXTERN_C void Out8(UInt16 port, UInt8 value); +EXTERN_C void Out16(UInt16 port, UInt16 value); +EXTERN_C void Out32(UInt16 port, UInt32 value); +EXTERN_C UInt8 In8(UInt16 port); +EXTERN_C UInt16 In16(UInt16 port); +EXTERN_C UInt32 In32(UInt16 port); EXTERN_C void rt_hlt(); EXTERN_C void rt_cli(); @@ -179,50 +174,8 @@ EXTERN_C void rt_std(); #endif // __EFI_x86_64__ -/***********************************************************************************/ -/// Framebuffer. -/***********************************************************************************/ - -#define RGB(R, G, B) (UInt32)(0x##R##G##B) - -const UInt32 kRgbRed = 0x000000FF; -const UInt32 kRgbGreen = 0x0000FF00; -const UInt32 kRgbBlue = 0x00FF0000; -const UInt32 kRgbBlack = 0x00000000; -const UInt32 kRgbWhite = 0x00FFFFFF; - -#ifdef __EFI_x86_64__ -/** GOP and related. */ -inline EfiGraphicsOutputProtocol *kGop; -inline UInt16 kStride; -inline EfiGUID kGopGuid; - -/** -@brief Inits the QuickTemplate GUI framework. -*/ -inline Void InitGOP() noexcept { - kGopGuid = EfiGUID(EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID); - kGop = nullptr; - - extern EfiBootServices *BS; - - BS->LocateProtocol(&kGopGuid, nullptr, (VoidPtr *)&kGop); - - kStride = 4; -} -#endif // __EFI_x86_64__ - -class BVersionString final { - public: - static const CharacterTypeUTF16 *Shared() { return BOOTLOADER_VERSION; } -}; - -/// @brief Writes an EPM partition on the main disk. -/// @param namePart the partition's name -/// @param namePartLength the partition name's length -/// @param bootDev the disk interface. -/// @return -EXTERN_C Boolean boot_write_epm_partition(const Char *namePart, - SizeT namePartLength, - BootDevice *bootDev); - +static inline const UInt32 kRgbRed = 0x000000FF; +static inline const UInt32 kRgbGreen = 0x0000FF00; +static inline const UInt32 kRgbBlue = 0x00FF0000; +static inline const UInt32 kRgbBlack = 0x00000000; +static inline const UInt32 kRgbWhite = 0x00FFFFFF; diff --git a/Private/NewBoot/BootKit/Rsrc/Driver.rsrc b/Private/NewBoot/BootKit/Rsrc/Driver.rsrc new file mode 100644 index 00000000..bdbd6ea1 --- /dev/null +++ b/Private/NewBoot/BootKit/Rsrc/Driver.rsrc @@ -0,0 +1,144 @@ +#define DRIVER_HEIGHT 138 +#define DRIVER_WIDTH 154 + +// array size is 85008 +static const unsigned int Driver[] = { + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x40e3e3e3, 0x70e4e4e4, 0xafe3e3e3, 0xdfe4e4e4, 0xefe4e4e4, 0xfee5e5e5, 0xffe3e3e3, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe5e5e5, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee5e5e5, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xfee5e5e5, 0xffe4e4e4, 0xffe3e3e3, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe5e5e5, 0xfee4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe3e3e3, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xfee5e5e5, 0xffe3e3e3, 0xfee5e5e5, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe3e3e3, 0xffe4e4e4, 0xffe4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xfee5e5e5, 0xfee5e5e5, 0xffe4e4e4, 0xffe4e4e4, 0xeee4e4e4, 0xcfe4e4e4, 0xafe3e3e3, 0x80e3e3e3, 0x40e3e3e3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10dfdfdf, 0x7fe5e5e5, 0xefe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xfee3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xfee4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xdfe4e4e4, 0x9fe4e4e4, 0x20e7e7e7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10dfdfdf, 0x8fe2e2e2, 0xfee3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xfee3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xfee3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe2e2e2, 0xfee3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe2e2e2, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe3e3e3, 0xfee3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0x9fe4e4e4, 0x20e7e7e7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x6fe3e3e3, 0xeee2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xfee2e2e2, 0xfee2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xfee2e2e2, 0xfee2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xfee2e2e2, 0xfee2e2e2, 0xffe1e1e1, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe1e1e1, 0xffe1e1e1, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xdee3e3e3, 0x60e2e2e2, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x8fe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xfee2e2e2, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe2e2e2, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xfee2e2e2, 0xfee2e2e2, 0xfee2e2e2, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xfee1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe0e0e0, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xfee2e2e2, 0xfee1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0x8fe1e1e1, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10dfdfdf, 0xbfe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe1e1e1, 0xffe0e0e0, 0xfee1e1e1, 0xffe1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe1e1e1, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe1e1e1, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xcfe1e1e1, 0x10dfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xcfe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xbfe0e0e0, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x8fe1e1e1, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xfee0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0x8fe1e1e1, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x60dfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xfedfdfdf, 0xfee0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffe0e0e0, 0xffdedede, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdedede, 0xfedfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdedede, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdedede, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0x6fdfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x20dfdfdf, 0xdfdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xfedfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdedede, 0xffdfdfdf, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xfedfdfdf, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdfdfdf, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xfededede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xefdedede, 0x10dfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x9fdddddd, 0xfededede, 0xffdddddd, 0xffdddddd, 0xfededede, 0xffdedede, 0xffdddddd, 0xfededede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xffdddddd, 0xfededede, 0xffdedede, 0xffdddddd, 0xffdedede, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xffdedede, 0xffdddddd, 0xffdedede, 0xffdedede, 0xfededede, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xfededede, 0xffdddddd, 0xffdedede, 0xffdddddd, 0xfededede, 0xffdedede, 0xffdddddd, 0xfededede, 0xfededede, 0xffdddddd, 0xffdddddd, 0xfededede, 0xfededede, 0xffdddddd, 0xfededede, 0xffdddddd, 0xffdddddd, 0xfededede, 0xffdedede, 0xfededede, 0xffdddddd, 0xffdddddd, 0xfededede, 0xfedfdfdf, 0xffdedede, 0xfededede, 0xffdddddd, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xfededede, 0xfededede, 0xffdddddd, 0xfededede, 0xffdddddd, 0xffdedede, 0xfededede, 0xffdedede, 0xffdddddd, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdddddd, 0xffdedede, 0xffdedede, 0xfededede, 0xffdddddd, 0xfededede, 0xfededede, 0xfededede, 0xffdedede, 0xfededede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xfededede, 0xffdedede, 0xffdedede, 0xfededede, 0xffdedede, 0xfededede, 0xffdedede, 0xffdedede, 0xffdddddd, 0xfededede, 0xffdddddd, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xffdedede, 0xffdddddd, 0xfededede, 0xffdddddd, 0xffdddddd, 0xfededede, 0xffdedede, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xfededede, 0xfededede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0x8fdfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x20dfdfdf, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdddddd, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xfedddddd, 0xfedddddd, 0xfedddddd, 0xffdcdcdc, 0xffdddddd, 0xfedddddd, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xfededede, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xfededede, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xfedddddd, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0x10dfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x9fdcdcdc, 0xfedddddd, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xfedcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xfedcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xfedcdcdc, 0xfedddddd, 0x80dbdddb, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xdfdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xfedbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xffdcdcdc, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xfedcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xffdcdcdc, 0xfedcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xffdcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xfedcdcdc, 0xfedcdcdc, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xeedddddd, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x40dbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdbdbdb, 0xfedbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdbdbdb, 0x40d7d7d7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x80dbdbdb, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xfedadada, 0xfedadada, 0xffdadada, 0xfedadada, 0xfedbdbdb, 0xffdadada, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xfedadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xfedbdbdb, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xfedadada, 0xffdadada, 0xfedbdbdb, 0xfedadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xfedadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xfedadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xfedadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0x70d8d8d8, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xafd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xfedadada, 0xfed9d9d9, 0xffdadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd8d8d8, 0xfedadada, 0xffd9d9d9, 0xfedadada, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd8d8d8, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xfedadada, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xfedadada, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xfedadada, 0xfedadada, 0xffd9d9d9, 0xfedadada, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xafdbdbdb, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xced9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd9d9d9, 0xfed9d9d9, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xdfd9d9d9, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xeed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xeed8d8d8, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed7d7d7, 0xfed7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xfed7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xfed8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xfed8d8d8, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd7d7d7, 0xfed6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xfed6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xffd7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xfed6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xfed7d7d7, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xfed6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xfed6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xfed7d7d7, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd4d4d4, 0xfed6d6d6, 0xfed5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xfed6d6d6, 0xfed5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xfed6d6d6, 0xfed5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd4d4d4, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xfed6d6d6, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd4d4d4, 0xfed5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xfed4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd4d4d4, 0xfed5d5d5, 0xffd5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xfed5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xfed5d5d5, 0xffd5d5d5, 0xffd3d3d3, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xfed5d5d5, 0xfed4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd4d4d4, 0xffd5d5d5, 0xfed5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xfed5d5d5, 0xfed5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xfed4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xfed3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed3d3d3, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xffd1d1d1, 0xfed3d3d3, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xfed2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xfed1d1d1, 0xfed0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xfecfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffd0d0d0, 0xfecfcfcf, 0xfed0d0d0, 0xfed0d0d0, 0xfecfcfcf, 0xfed0d0d0, 0xfecfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfed0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcfcfcf, 0xfecfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xefcdcdcd, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xfececece, 0xfececece, 0xffcdcdcd, 0xffcecece, 0xfececece, 0xffcecece, 0xfececece, 0xffcdcdcd, 0xfecfcfcf, 0xfececece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xfececece, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xfececece, 0xfececece, 0xffcecece, 0xfececece, 0xffcecece, 0xffcecece, 0xffcecece, 0xfececece, 0xfecfcfcf, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xfececece, 0xffcecece, 0xfececece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xfececece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xfececece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xfecfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xfececece, 0xfececece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xfececece, 0xfececece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xfececece, 0xffcecece, 0xfececece, 0xffcdcdcd, 0xffcecece, 0xfececece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xfececece, 0xffcecece, 0xfecfcfcf, 0xffcdcdcd, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xfececece, 0xffcecece, 0xfececece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xfececece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x80cbcbcb, 0xffcecece, 0xfecdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xfececece, 0xffcdcdcd, 0xffcccccc, 0xfecdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xffcccccc, 0xffcdcdcd, 0xfecdcdcd, 0xfecdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcccccc, 0xffcdcdcd, 0xffcdcdcd, 0xfececece, 0xfecdcdcd, 0xfecdcdcd, 0xffb5b5b5, 0xff4c4c4c, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff434343, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff565656, 0xffb5b5b5, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfececece, 0xffcdcdcd, 0xfececece, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfececece, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcecece, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcecece, 0xfececece, 0xffcdcdcd, 0xffcccccc, 0x70e4e4e4, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xbfcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xfecccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcdcdcd, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xff686868, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff414141, 0xff424242, 0xff424242, 0xff424242, 0xff414141, 0xff686868, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcdcdcd, 0xfecdcdcd, 0xfecccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xfecdcdcd, 0xffcccccc, 0xffe2e2e2, 0x40e3e3e3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x10bfbfbf, 0xdecccccc, 0xffcccccc, 0xffcbcbcb, 0xfecccccc, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xfecccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xfecccccc, 0xfecccccc, 0xfecccccc, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xfecccccc, 0xfecdcdcd, 0xffcbcbcb, 0xffcbcbcb, 0xff545454, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff424242, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff424242, 0xff424242, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff545454, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xfecccccc, 0xfecccccc, 0xffcbcbcb, 0xfecccccc, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xfecccccc, 0xfecccccc, 0xfecccccc, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xfecccccc, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffe0e0e0, 0xeee1e1e1, 0x20e7e7e7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x20cfcfcf, 0xdfcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xfecccccc, 0xffcbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xffc2c2c2, 0xfecbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcacaca, 0xfecccccc, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcbcbcb, 0xfecbcbcb, 0xffcacaca, 0xfecbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffe0e0e0, 0xffe0e0e0, 0xdfe0e0e0, 0x20e7e7e7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x30cacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xfecacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffc9c9c9, 0xffc8c8c8, 0xffb0b0b0, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff404040, 0xff404040, 0xff414141, 0xff414141, 0xff414141, 0xff404040, 0xff414141, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xffb8b8b8, 0xfec9c9c9, 0xfecacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffdfdfdf, 0xffdedede, 0xffdfdfdf, 0xcfdfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x70c8c8c8, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xfec9c9c9, 0xffc9c9c9, 0xfecacaca, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xff9e9e9e, 0xff404040, 0xff404040, 0xff404040, 0xff414141, 0xff414141, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff414141, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff9e9e9e, 0xffc6c6c6, 0xffc7c7c7, 0xfec9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffcacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfec9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffcacaca, 0xfecacaca, 0xfecacaca, 0xffc9c9c9, 0xffcacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xffcacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfededede, 0xffdddddd, 0xfededede, 0xffdddddd, 0x8fdfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x80c9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xfec9c9c9, 0xffc9c9c9, 0xfec9c9c9, 0xfec9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfec9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc6c6c6, 0xfec5c6c6, 0xff8d8d8d, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff3f3f3f, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff3f3f3f, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff8d8d8d, 0xffc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xfec9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xfec9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xffc9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xffc9c9c9, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdbdbdb, 0x7fdbdddb, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x9fc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xffc6c6c6, 0xfec5c6c6, 0xfec4c4c4, 0xff7b7b7b, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff404040, 0xff404040, 0xff737373, 0xffc3c3c3, 0xfec5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec9c9c9, 0xffc8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec9c9c9, 0xffc7c7c7, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0x5fdcdcdc, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10bfbfbf, 0xcfc8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec7c7c7, 0xfec7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xfec7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc6c6c6, 0xfec8c8c8, 0xfec7c7c7, 0xfec6c6c6, 0xffc5c5c5, 0xfec3c3c3, 0xfec1c1c1, 0xff626262, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff3f3f3f, 0xff6a6a6a, 0xffc0c0c0, 0xffc2c2c2, 0xffc4c4c4, 0xffc6c6c6, 0xffc6c6c6, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xfec7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc6c6c6, 0xffc7c7c7, 0xfec8c8c8, 0xfec7c7c7, 0xfec7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc6c6c6, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xfec7c7c7, 0xfec8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xfec7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffd8d8d8, 0xffd9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd9d9d9, 0xefd9d9d9, 0x30dadada, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20c7c7c7, 0xdfc6c7c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc7c7c7, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc2c2c2, 0xfec2c2c2, 0xffbdbdbd, 0xff585858, 0xff3f3f3f, 0xff3f3f3f, 0xff3e3e3e, 0xff3f3f3f, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3e3e3e, 0xff3f3f3f, 0xff3f3f3f, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xff3f3f3f, 0xff515151, 0xfebebebe, 0xffc0c0c0, 0xffc2c2c2, 0xffc4c4c4, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xffc7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc7c7c7, 0xfec7c7c7, 0xfec7c7c7, 0xffc7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xdfd8d8d8, 0x20d7d7d7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x30c5c5c5, 0xefc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec7c7c7, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfebfbfbf, 0xff8d8d8d, 0xffa6a6a6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec5c6c6, 0xffc3c3c3, 0xffc1c1c1, 0xffbebebe, 0xfeb5b5b5, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xff3f3f3f, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xff3f3f3f, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xffadadad, 0xffbebebe, 0xffc1c1c1, 0xffc3c3c3, 0xffc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffa7a7a7, 0xff8d8d8d, 0xffb7b7b7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd7d7d7, 0xffd7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xcfd6d6d6, 0x10cfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x60c7c7c7, 0xffc6c6c6, 0xffc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc6c6c6, 0xff515151, 0xff3e3e3e, 0xff3e3e3e, 0xff515151, 0xff969696, 0xffb6b6b6, 0xffc5c5c5, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc4c4c4, 0xffc1c1c1, 0xffb0b0b0, 0xff717171, 0xff474747, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff717171, 0xfeb1b1b1, 0xfec3c3c3, 0xffc4c4c4, 0xffc5c5c5, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffbebebe, 0xff858585, 0xff595959, 0xff3e3e3e, 0xff3e3e3e, 0xff5a5a5a, 0xffc5c5c5, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0x9fd5d5d5, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7fc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc6c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xff949494, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff737373, 0xffa6a6a6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc4c4c4, 0xffbbbbbb, 0xff828282, 0xff474747, 0xff3e3e3e, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff828282, 0xffc3c3c3, 0xffc4c4c4, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffa5a5a5, 0xff6b6b6b, 0xff474747, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xfe8e8e8e, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0x7fd5d5d5, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x8fc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc5c5c5, 0xffc5c5c5, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xfec5c6c6, 0xffc4c4c4, 0xffb4b4b4, 0xff505050, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff515151, 0xfe969696, 0xfeb5b5b5, 0xffacacac, 0xff505050, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff505050, 0xffb3b3b3, 0xffbcbcbc, 0xff848484, 0xff595959, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff464646, 0xffbcbcbc, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc5c5c5, 0xfec5c5c5, 0xffc4c4c4, 0xfec5c5c5, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xfec5c5c5, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xffc5c5c5, 0xffc4c4c4, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0x6fd3d3d3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xcfc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xfec4c4c4, 0xfec4c4c4, 0xffc3c3c3, 0xfec4c4c4, 0xfec4c4c4, 0xffc3c3c3, 0xfec4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xfec4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xffc3c3c3, 0xffc4c4c4, 0xffc3c3c3, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xffc4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xff727272, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff464646, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff464646, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff7a7a7a, 0xffc3c3c3, 0xffc3c3c3, 0xfec4c4c4, 0xffc3c3c3, 0xfec4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xffc4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xffc4c4c4, 0xfec4c4c4, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xfed1d1d1, 0xfed1d1d1, 0xfed1d1d1, 0x30cfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20bfbfbf, 0xdfc2c2c2, 0xffc2c2c2, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc2c2c2, 0xffc3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc2c2c2, 0xfec4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xfec4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xfec4c4c4, 0xffc2c2c2, 0xffc2c2c2, 0xffb2b2b2, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xffaaaaaa, 0xfec3c3c3, 0xffc2c2c2, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xfec3c3c3, 0xfec4c4c4, 0xfec3c3c3, 0xfec3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xdfd1d1d1, 0x20cfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20bfbfbf, 0xefc2c2c2, 0xfec2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xfec3c3c3, 0xffc3c3c3, 0xfec2c2c2, 0xfec3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xfec3c3c3, 0xfec3c3c3, 0xffc2c2c2, 0xffc3c3c3, 0xffc2c2c2, 0xfec3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xfec2c2c2, 0xfec3c3c3, 0xfec2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc0c0c0, 0xff686868, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff606060, 0xffc0c0c0, 0xffc0c0c0, 0xffc2c2c2, 0xffc1c1c1, 0xfec3c3c3, 0xfec3c3c3, 0xfec3c3c3, 0xffc2c2c2, 0xfec2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xfec3c3c3, 0xfec2c2c2, 0xfec2c2c2, 0xfec3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xfec2c2c2, 0xfec3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xdfcfcfcf, 0x10cfcfcf, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x40bfbfbf, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xffc2c2c2, 0xffc1c1c1, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xfec2c2c2, 0xfec2c2c2, 0xfec2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xffc1c1c1, 0xffc0c0c0, 0xffbfbfbf, 0xff919191, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xfea0a0a0, 0xffc0c0c0, 0xfec1c1c1, 0xffc1c1c1, 0xfec2c2c2, 0xfec2c2c2, 0xffc2c2c2, 0xffc1c1c1, 0xffc2c2c2, 0xfec2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xfec2c2c2, 0xffc1c1c1, 0xffc2c2c2, 0xffc2c2c2, 0xfec2c2c2, 0xffc1c1c1, 0xfec2c2c2, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xffc1c1c1, 0xffc2c2c2, 0xfec1c1c1, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xffcdcdcd, 0xfececece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xbfcecece, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7fc3c3c3, 0xffc0c0c0, 0xffc1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc0c0c0, 0xffc1c1c1, 0xffc1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xffbfbfbf, 0xfebebebe, 0xff4d4d4d, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff4c4c4c, 0xfeb8b8b8, 0xffbfbfbf, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xfec1c1c1, 0xfec2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xfec1c1c1, 0xfec1c1c1, 0xfec1c1c1, 0xfec1c1c1, 0xfec1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc0c0c0, 0xfec1c1c1, 0xffc1c1c1, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xfecccccc, 0xffcccccc, 0x8fcdcdcd, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10bfbfbf, 0xffc0c0c0, 0xfec1c1c1, 0xfec1c1c1, 0xfec0c0c0, 0xffc0c0c0, 0xffbfbfbf, 0xfec0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffbfbfbf, 0xffbfbfbf, 0xffbdbdbd, 0xff7e7e7e, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff7e7e7e, 0xfebebebe, 0xffbebebe, 0xffbfbfbf, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcbcbcb, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xfec0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xffbfbfbf, 0xffc0c0c0, 0xfec0c0c0, 0xffbfbfbf, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xffaeaeae, 0xff4c4c4c, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff434343, 0xfeb5b5b5, 0xffbdbdbd, 0xffbebebe, 0xffbfbfbf, 0xffbfbfbf, 0xffc0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xffbfbfbf, 0xfec0c0c0, 0xfec0c0c0, 0xfec0c0c0, 0xfec0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xfec9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffc8c8c8, 0xffc9c9c9, 0xfec9c9c9, 0xffcacaca, 0xfecacaca, 0xffc9c9c9, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbfbfbf, 0xfebfbfbf, 0xffbfbfbf, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbfbfbf, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xfebfbfbf, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xffbbbbbb, 0xff6d6d6d, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff6d6d6d, 0xffbbbbbb, 0xffbdbdbd, 0xffbdbdbd, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebfbfbf, 0xfebfbfbf, 0xfebfbfbf, 0xfebfbfbf, 0xfebfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfebfbfbf, 0xfebfbfbf, 0xffbebebe, 0xffbfbfbf, 0xffbebebe, 0xffbfbfbf, 0xffbebebe, 0xffbebebe, 0xffbfbfbf, 0xffbebebe, 0xffbebebe, 0xffbfbfbf, 0xfebfbfbf, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xffbfbfbf, 0xffc7c7c7, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc7c7c7, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebebebe, 0xffbebebe, 0xffbebebe, 0xfebebebe, 0xffbebebe, 0xffbdbdbd, 0xffbdbdbd, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xffbcbcbc, 0xfebcbcbc, 0xfeadadad, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff444444, 0xff525252, 0xff525252, 0xff4b4b4b, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff9d9d9d, 0xffbbbbbb, 0xffbdbdbd, 0xffbdbdbd, 0xffbebebe, 0xffbdbdbd, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xffbdbdbd, 0xfebebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebebebe, 0xffbdbdbd, 0xffbebebe, 0xfebebebe, 0xffbebebe, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbebebe, 0xfebebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebebebe, 0xffbebebe, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfebdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebebebe, 0xffbebebe, 0xfebdbdbd, 0xfebebebe, 0xfebdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebebebe, 0xfebebebe, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebdbdbd, 0xfebebebe, 0xffbdbdbd, 0xffbcbcbc, 0xfebdbdbd, 0xffbbbbbb, 0xffbbbbbb, 0xff535353, 0xff383838, 0xff383838, 0xff393939, 0xff393939, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff3f3f3f, 0xff636363, 0xff7e7e7e, 0xff8e8e8e, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe7e7e7e, 0xff5c5c5c, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff393939, 0xff383838, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff5b5b5b, 0xffbababa, 0xfebcbcbc, 0xffbcbcbc, 0xfebebebe, 0xffbdbdbd, 0xfebebebe, 0xfebdbdbd, 0xfebebebe, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebebebe, 0xfebebebe, 0xfebebebe, 0xffbdbdbd, 0xfebdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebdbdbd, 0xffbdbdbd, 0xffbcbcbc, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xfebcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbdbdbd, 0xffbcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xffb9b9b9, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff636363, 0xff8e8e8e, 0xff939393, 0xfe949494, 0xfe959595, 0xfe949494, 0xff939393, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xfe898989, 0xff5c5c5c, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xffb9b9b9, 0xffbababa, 0xfebcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xfebcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xfebdbdbd, 0xfebcbcbc, 0xfebdbdbd, 0xffbdbdbd, 0xffbcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xfebdbdbd, 0xffbdbdbd, 0xffbcbcbc, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xffc4c4c4, 0xfec5c5c5, 0xffc4c4c4, 0xfec4c4c4, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfebcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xffbbbbbb, 0xffbcbcbc, 0xffbcbcbc, 0xfebcbcbc, 0xffbbbbbb, 0xfebcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xffbcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xffbcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffb9b9b9, 0xffb7b7b7, 0xff6a6a6a, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff373737, 0xff383838, 0xff383838, 0xff373737, 0xff383838, 0xff373737, 0xff383838, 0xff373737, 0xff373737, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff373737, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff3d3d3d, 0xff727272, 0xff939393, 0xff939393, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff939393, 0xff949494, 0xff949494, 0xff939393, 0xff939393, 0xff939393, 0xff727272, 0xff3e3e3e, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff373737, 0xff373737, 0xff373737, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff373737, 0xff727272, 0xffb7b7b7, 0xfebababa, 0xffbababa, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xffbbbbbb, 0xfebcbcbc, 0xffbcbcbc, 0xfebcbcbc, 0xfebcbcbc, 0xffbbbbbb, 0xfebcbcbc, 0xfebcbcbc, 0xfebcbcbc, 0xffbbbbbb, 0xffbcbcbc, 0xffbbbbbb, 0xfebcbcbc, 0xfebcbcbc, 0xffbcbcbc, 0xffbbbbbb, 0xffbcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbcbcbc, 0xfebcbcbc, 0xffbcbcbc, 0xfec3c3c3, 0xffc2c2c2, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xfec3c3c3, 0xffc2c2c2, 0xffc3c3c3, 0xfec3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfebbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebcbcbc, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebababa, 0xffb8b8b8, 0xfeb5b5b5, 0xffb1b1b1, 0xff757575, 0xff383838, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff383838, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff383838, 0xff373737, 0xff373737, 0xff383838, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff3e3e3e, 0xfe838383, 0xff939393, 0xfe949494, 0xfe959595, 0xff949494, 0xff959595, 0xfe969696, 0xff959595, 0xff969696, 0xff959595, 0xff959595, 0xff969696, 0xff949494, 0xff959595, 0xff949494, 0xfe949494, 0xfe949494, 0xfe838383, 0xff3d3d3d, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff383838, 0xff373737, 0xff383838, 0xff373737, 0xff373737, 0xff383838, 0xff383838, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff383838, 0xff373737, 0xff757575, 0xffb1b1b1, 0xffb4b4b4, 0xffb7b7b7, 0xffb9b9b9, 0xffbababa, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xfebbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xfec2c2c2, 0xffc1c1c1, 0xfec2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbababa, 0xfeb9b9b9, 0xffb5b5b5, 0xffb2b2b2, 0xffafafaf, 0xffababab, 0xff8d8d8d, 0xff464646, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff727272, 0xfe949494, 0xfe959595, 0xff949494, 0xff959595, 0xff969696, 0xff969696, 0xff979797, 0xfe989898, 0xff989898, 0xff989898, 0xff979797, 0xfe989898, 0xfe989898, 0xff969696, 0xff959595, 0xff949494, 0xff939393, 0xff939393, 0xff727272, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff363636, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff3f3f3f, 0xff8c8c8c, 0xffababab, 0xfeafafaf, 0xffb3b3b3, 0xffb5b5b5, 0xffb7b7b7, 0xfebababa, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffc0c0c0, 0xffc0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffc0c0c0, 0xffc0c0c0, 0xfec0c0c0, 0xfec0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xfec0c0c0, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xfebababa, 0xffbababa, 0xffbababa, 0xffbababa, 0xffbababa, 0xffbbbbbb, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbababa, 0xfeb9b9b9, 0xffb7b7b7, 0xffb4b4b4, 0xfeb1b1b1, 0xfeaeaeae, 0xfeaaaaaa, 0xffa4a4a4, 0xfe959595, 0xff4b4b4b, 0xff363636, 0xff373737, 0xff373737, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff373737, 0xff363636, 0xff373737, 0xff363636, 0xff373737, 0xff373737, 0xff373737, 0xff363636, 0xff373737, 0xff373737, 0xff5b5b5b, 0xff929292, 0xff949494, 0xff959595, 0xfe979797, 0xff979797, 0xfe999999, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xfe999999, 0xfe999999, 0xfe989898, 0xff969696, 0xff959595, 0xfe949494, 0xff939393, 0xff616161, 0xff363636, 0xff373737, 0xff373737, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff4b4b4b, 0xfe959595, 0xffa4a4a4, 0xfeaaaaaa, 0xffadadad, 0xfeb1b1b1, 0xffb3b3b3, 0xffb6b6b6, 0xffb8b8b8, 0xffb9b9b9, 0xffbababa, 0xffbababa, 0xfebbbbbb, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xffbababa, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xfebbbbbb, 0xfebbbbbb, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xffbebebe, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xfebebebe, 0xffbfbfbf, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebfbfbf, 0xfebebebe, 0xffbebebe, 0xffbebebe, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb9b9b9, 0xfebababa, 0xffb9b9b9, 0xffbababa, 0xfebababa, 0xffbababa, 0xfebababa, 0xfebababa, 0xfebababa, 0xffbababa, 0xffb9b9b9, 0xffbababa, 0xffb9b9b9, 0xfebababa, 0xfebababa, 0xffbababa, 0xffb9b9b9, 0xffbababa, 0xffb9b9b9, 0xffb8b8b8, 0xffb7b7b7, 0xffb4b4b4, 0xffb2b2b2, 0xfeafafaf, 0xffababab, 0xffa7a7a7, 0xffa3a3a3, 0xfe9f9f9f, 0xff9a9a9a, 0xff696969, 0xff373737, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff888888, 0xff949494, 0xff959595, 0xfe989898, 0xff989898, 0xff999999, 0xff9a9a9a, 0xff9b9b9b, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff989898, 0xfe989898, 0xff969696, 0xff949494, 0xff949494, 0xfe8e8e8e, 0xff3b3b3b, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff373737, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff373737, 0xff636363, 0xff9a9a9a, 0xff9e9e9e, 0xffa2a2a2, 0xfea7a7a7, 0xfeadadad, 0xfeafafaf, 0xfeb3b3b3, 0xffb4b4b4, 0xfeb8b8b8, 0xffb8b8b8, 0xffb9b9b9, 0xfebababa, 0xffb9b9b9, 0xffbababa, 0xffb9b9b9, 0xffb9b9b9, 0xfebababa, 0xffbababa, 0xffb9b9b9, 0xffb9b9b9, 0xffbababa, 0xfebababa, 0xffbababa, 0xffbababa, 0xfebababa, 0xffbababa, 0xfebababa, 0xffbababa, 0xffbababa, 0xffb9b9b9, 0xfebababa, 0xffbababa, 0xffb9b9b9, 0xfebababa, 0xffbababa, 0xffbdbdbd, 0xffbdbdbd, 0xffbcbcbc, 0xffbdbdbd, 0xffbcbcbc, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbcbcbc, 0xfebdbdbd, 0xfebdbdbd, 0xffbdbdbd, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xfeb9b9b9, 0xffb9b9b9, 0xffb8b8b8, 0xfebababa, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb9b9b9, 0xfeb9b9b9, 0xfeb8b8b8, 0xffb6b6b6, 0xffb4b4b4, 0xffb0b0b0, 0xffaeafae, 0xffaaaaaa, 0xffa5a5a5, 0xffa0a0a0, 0xff9d9d9d, 0xff999999, 0xff969696, 0xff727272, 0xff3b3b3b, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff343434, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff5b5b5b, 0xff949494, 0xff959595, 0xff979797, 0xff989898, 0xfe9b9b9b, 0xff9c9c9c, 0xff9d9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xfea1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa0a0a0, 0xff9f9f9f, 0xff9e9e9e, 0xfe9d9e9d, 0xff9c9c9c, 0xff9a9a9a, 0xff989898, 0xfe989898, 0xff959595, 0xff939393, 0xff616161, 0xff363636, 0xff343434, 0xff363636, 0xff363636, 0xff343434, 0xff363636, 0xff343434, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff3b3b3b, 0xff727272, 0xfe979797, 0xff999999, 0xfe9d9e9d, 0xfea2a2a2, 0xfea6a6a6, 0xfeababab, 0xffaeaeae, 0xffb0b0b0, 0xffb4b4b4, 0xffb6b6b6, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xfeb9b9b9, 0xffb9b9b9, 0xfeb9b9b9, 0xffb8b8b8, 0xffb9b9b9, 0xfeb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb8b8b8, 0xffb9b9b9, 0xfeb9b9b9, 0xffb9b9b9, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xfebcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb8b8b8, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb9b9b9, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xffb5b5b5, 0xffb2b2b2, 0xffb0b0b0, 0xffadadad, 0xffa9a9a9, 0xffa4a4a4, 0xffa0a0a0, 0xff9d9d9d, 0xfe999999, 0xff969696, 0xff939393, 0xfe878787, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff343434, 0xff343434, 0xff363636, 0xff363636, 0xff363636, 0xff343434, 0xff343434, 0xff363636, 0xff7d7d7d, 0xff959595, 0xff979797, 0xff999999, 0xfe9c9c9c, 0xff9d9e9e, 0xff9f9f9f, 0xffa1a1a1, 0xffa3a3a3, 0xfea4a4a4, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xfea4a4a4, 0xfea3a3a3, 0xffa1a1a1, 0xff9e9e9e, 0xff9d9e9e, 0xff9b9b9b, 0xff999999, 0xfe989898, 0xff959595, 0xff7d7d7d, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff343434, 0xff363636, 0xff363636, 0xff343434, 0xff343434, 0xff343434, 0xff363636, 0xff343434, 0xff343434, 0xff868686, 0xff949494, 0xff969696, 0xfe9a9a9a, 0xff9d9d9d, 0xfea1a1a1, 0xffa4a4a4, 0xfeaaaaaa, 0xffadadad, 0xffb0b0b0, 0xffb2b2b2, 0xffb5b5b5, 0xffb7b7b7, 0xffb7b7b7, 0xffb8b8b8, 0xfeb9b9b9, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xffb8b8b8, 0xfeb9b9b9, 0xfeb9b9b9, 0xffb8b8b8, 0xfeb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xfeb8b8b8, 0xfeb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffbbbbbb, 0xffbababa, 0xffbababa, 0xffbababa, 0xffbbbbbb, 0xffbbbbbb, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xffbababa, 0xfebbbbbb, 0xfebbbbbb, 0xffbababa, 0xffbbbbbb, 0xffbbbbbb, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeb7b7b7, 0xfeb8b8b8, 0xffb8b8b8, 0xfeb8b8b8, 0xffb8b8b8, 0xfeb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xfeb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xfeb8b8b8, 0xfeb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb6b6b6, 0xfeb5b5b5, 0xffb2b2b2, 0xffafafaf, 0xfeadadad, 0xfea9a9a9, 0xffa4a4a4, 0xffa0a0a0, 0xff9c9c9c, 0xff989898, 0xfe979797, 0xff949494, 0xff868686, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff363636, 0xff343434, 0xff343434, 0xff343434, 0xff949494, 0xff969696, 0xfe9a9a9a, 0xff9b9b9b, 0xff9d9e9e, 0xfea1a1a1, 0xffa2a2a2, 0xffa4a4a4, 0xfea8a8a8, 0xffa8a8a8, 0xffa9a9a9, 0xfeaaaaaa, 0xfeaaaaaa, 0xfeaaaaaa, 0xffa8a8a8, 0xffa7a7a7, 0xffa5a5a5, 0xffa2a2a2, 0xffa0a0a0, 0xff9d9e9e, 0xff9c9c9c, 0xff999999, 0xfe979797, 0xff8e8e8e, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff363636, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff363636, 0xff343434, 0xff868686, 0xff939393, 0xff969696, 0xfe9a9a9a, 0xfe9d9e9d, 0xffa0a0a0, 0xffa4a4a4, 0xffa8a8a8, 0xffadadad, 0xffafafaf, 0xffb2b2b2, 0xffb4b4b4, 0xffb6b6b6, 0xfeb7b7b7, 0xffb8b8b8, 0xffb7b7b7, 0xfeb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xfeb8b8b8, 0xfeb8b8b8, 0xfeb8b8b8, 0xffb7b7b7, 0xfeb8b8b8, 0xffb7b7b7, 0xffb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb8b8b8, 0xfeb8b8b8, 0xffb9b9b9, 0xfebababa, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xfebababa, 0xffb9b9b9, 0xfebababa, 0xfebababa, 0xffbababa, 0xffb9b9b9, 0xffbababa, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb6b6b6, 0xffb7b7b7, 0xffb6b6b6, 0xffb7b7b7, 0xffb6b6b6, 0xffb7b7b7, 0xffb7b7b7, 0xffb6b6b6, 0xffb7b7b7, 0xfeb7b7b7, 0xffb6b6b6, 0xffb7b7b7, 0xffb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb7b7b7, 0xffb6b6b6, 0xfeb7b7b7, 0xfeb6b6b6, 0xfeb5b5b5, 0xffb2b2b2, 0xfeb0b0b0, 0xffadadad, 0xffa9a9a9, 0xffa5a5a5, 0xffa0a0a0, 0xff9d9d9d, 0xff9a9a9a, 0xff979797, 0xfe959595, 0xff7c7c7c, 0xff333333, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff484848, 0xff959595, 0xfe999999, 0xfe9c9c9c, 0xff9d9e9e, 0xfea1a1a1, 0xffa3a3a3, 0xfea7a7a7, 0xffa8a8a8, 0xffababab, 0xffababab, 0xfeadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffababab, 0xffaaaaaa, 0xfea9a9a9, 0xfea7a7a7, 0xffa4a4a4, 0xfea2a2a2, 0xfe9e9e9e, 0xff9b9b9b, 0xfe999999, 0xfe969696, 0xff414141, 0xff343434, 0xff333333, 0xff343434, 0xff343434, 0xff333333, 0xff343434, 0xff343434, 0xff333333, 0xff343434, 0xff333333, 0xff343434, 0xff343434, 0xff343434, 0xff828282, 0xff949494, 0xff979797, 0xff9a9a9a, 0xff9d9e9e, 0xffa0a0a0, 0xffa5a5a5, 0xffa9a9a9, 0xffadadad, 0xffafafaf, 0xffb2b2b2, 0xffb4b4b4, 0xffb5b5b5, 0xffb6b6b6, 0xffb7b7b7, 0xffb7b7b7, 0xffb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xfeb7b7b7, 0xfeb7b7b7, 0xffb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb7b7b7, 0xffb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb7b7b7, 0xffb7b7b7, 0xfeb7b7b7, 0xfeb7b7b7, 0xffb7b7b7, 0xfeb7b7b7, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb8b8b8, 0xffb8b8b8, 0xfeb8b8b8, 0xffb7b7b7, 0xfeb8b8b8, 0xffb8b8b8, 0xfeb8b8b8, 0xffb7b7b7, 0xffb8b8b8, 0xffb8b8b8, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeb7b7b7, 0xfeb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb5b5b5, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xfeb7b7b7, 0xffb4b4b4, 0xffb3b3b3, 0xfeb3b3b3, 0xfeb0b0b0, 0xffadadad, 0xfeababab, 0xffa6a6a6, 0xffa2a2a2, 0xff9e9e9e, 0xfe9c9c9c, 0xfe999999, 0xff959595, 0xff7c7c7c, 0xff343434, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff343434, 0xff333333, 0xff333333, 0xff4e4e4e, 0xff979797, 0xfe9b9b9b, 0xfe9d9e9d, 0xffa0a0a0, 0xfea4a4a4, 0xffa6a6a6, 0xffa9a9a9, 0xffababab, 0xfeaeaeae, 0xffaeafae, 0xffaeafae, 0xffb0b0b0, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeaeaeae, 0xffababab, 0xffa9a9a9, 0xffa6a6a6, 0xffa3a3a3, 0xffa0a0a0, 0xff9d9e9e, 0xff9a9a9a, 0xff979797, 0xff4d4d4d, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff343434, 0xff343434, 0xff333333, 0xff343434, 0xff343434, 0xff7d7d7d, 0xfe979797, 0xff989898, 0xff9b9b9b, 0xff9e9e9e, 0xffa3a3a3, 0xffa6a6a6, 0xffaaaaaa, 0xffadadad, 0xffafafaf, 0xffb1b1b1, 0xffb4b4b4, 0xfeb6b6b6, 0xffb5b5b5, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xffb5b5b5, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xfeb7b7b7, 0xfeb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xffb6b6b6, 0xffb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xfeb7b7b7, 0xfeb7b7b7, 0xfeb6b6b6, 0xffb7b7b7, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb5b5b5, 0xffb4b4b4, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb4b4b4, 0xffb2b2b2, 0xffb0b0b0, 0xffaeaeae, 0xfeacacac, 0xfea8a8a8, 0xffa4a4a4, 0xffa1a1a1, 0xfe9d9e9d, 0xff9a9a9a, 0xff979797, 0xff7e7e7e, 0xff333333, 0xff343434, 0xff333333, 0xff323232, 0xff333333, 0xff333333, 0xff343434, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff4e4e4e, 0xff989898, 0xff9c9c9c, 0xff9f9f9f, 0xffa2a2a2, 0xffa6a6a6, 0xffa9a9a9, 0xfeacacac, 0xffadadad, 0xfeb0b0b0, 0xffafafaf, 0xfeb1b1b1, 0xfeb2b2b2, 0xffb1b1b1, 0xffb0b0b0, 0xfeb1b1b1, 0xffafafaf, 0xfeafafaf, 0xffacacac, 0xffaaaaaa, 0xffa6a6a6, 0xfea4a4a4, 0xff9f9f9f, 0xfe9d9d9d, 0xfe999999, 0xff4e4e4e, 0xff333333, 0xff323232, 0xff333333, 0xff323232, 0xff333333, 0xff333333, 0xff343434, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff7e7e7e, 0xff969696, 0xfe9b9b9b, 0xff9d9e9e, 0xffa0a0a0, 0xfea5a5a5, 0xffa8a8a8, 0xffababab, 0xfeafafaf, 0xfeb1b1b1, 0xffb2b2b2, 0xffb3b3b3, 0xfeb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb6b6b6, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb6b6b6, 0xffb4b4b4, 0xffb4b4b4, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb4b4b4, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb4b4b4, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb4b4b4, 0xfeb5b5b5, 0xfeb5b5b5, 0xffb4b4b4, 0xffb5b5b5, 0xffb4b4b4, 0xffb5b5b5, 0xfeb5b5b5, 0xfeb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb3b3b3, 0xffb2b2b2, 0xffb0b0b0, 0xffaeafae, 0xfeadadad, 0xffaaaaaa, 0xffa6a6a6, 0xffa2a2a2, 0xff9f9f9f, 0xff9d9d9d, 0xfe9a9a9a, 0xff858585, 0xff333333, 0xff323232, 0xff333333, 0xff323232, 0xff323232, 0xff333333, 0xff323232, 0xff333333, 0xff323232, 0xff333333, 0xff333333, 0xff323232, 0xff333333, 0xff414141, 0xff9a9a9a, 0xff9d9e9e, 0xffa1a1a1, 0xfea6a6a6, 0xffa8a8a8, 0xffacacac, 0xffaeaeae, 0xfeb0b0b0, 0xffb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xfeafafaf, 0xffababab, 0xfeaaaaaa, 0xfea6a6a6, 0xfea3a3a3, 0xff9d9e9e, 0xff9b9b9b, 0xff484848, 0xff333333, 0xff323232, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff323232, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff323232, 0xff323232, 0xff7e7e7e, 0xff999999, 0xfe9d9d9d, 0xff9f9f9f, 0xffa2a2a2, 0xffa6a6a6, 0xfeaaaaaa, 0xffacacac, 0xfeb0b0b0, 0xfeb2b2b2, 0xffb2b2b2, 0xffb3b3b3, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xffb5b5b5, 0xffb5b5b5, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xffb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xfeb4b4b4, 0xfeb4b4b4, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb4b4b4, 0xffb3b3b3, 0xffb4b4b4, 0xffb3b3b3, 0xffb3b3b3, 0xfeb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xffb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb4b4b4, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffafafaf, 0xffaeaeae, 0xffababab, 0xffa9a9a9, 0xffa5a5a5, 0xffa1a1a1, 0xff9d9e9e, 0xff9b9b9b, 0xff8b8b8b, 0xff323232, 0xff323232, 0xff323232, 0xff333333, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff333333, 0xff969696, 0xff9f9f9f, 0xffa3a3a3, 0xffa7a7a7, 0xffaaaaaa, 0xffadadad, 0xffafafaf, 0xffb1b1b1, 0xffb2b2b2, 0xffb3b3b3, 0xffb3b3b3, 0xfeb4b4b4, 0xfeb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xfeb3b3b3, 0xffb0b0b0, 0xffafafaf, 0xffadadad, 0xfeababab, 0xffa7a7a7, 0xffa3a3a3, 0xfea0a0a0, 0xff9c9c9c, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff333333, 0xff323232, 0xff333333, 0xff323232, 0xff323232, 0xff323232, 0xff333333, 0xff333333, 0xff8b8b8b, 0xff9b9b9b, 0xff9d9e9e, 0xffa1a1a1, 0xffa5a5a5, 0xfeaaaaaa, 0xfeadadad, 0xfeaeaeae, 0xfeb0b0b0, 0xffb1b1b1, 0xffb2b2b2, 0xffb3b3b3, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb4b4b4, 0xfeb4b4b4, 0xfeb4b4b4, 0xfeb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb3b3b3, 0xffb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xffb4b4b4, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb2b2b2, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb3b3b3, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xfeb4b4b4, 0xffb3b3b3, 0xffb2b2b2, 0xfeb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xfeb1b1b1, 0xffaeafae, 0xffadadad, 0xffababab, 0xffa7a7a7, 0xffa4a4a4, 0xffa0a0a0, 0xff9d9e9e, 0xff818181, 0xff313131, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff313131, 0xff313131, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff848484, 0xffa0a0a0, 0xffa5a5a5, 0xffa8a8a8, 0xffacacac, 0xffaeaeae, 0xffb0b0b0, 0xffb1b1b1, 0xffb2b2b2, 0xffb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb3b3b3, 0xfeb4b4b4, 0xffb2b2b2, 0xfeb2b2b2, 0xffb0b0b0, 0xffaeaeae, 0xffacacac, 0xfeaaaaaa, 0xfea6a6a6, 0xffa1a1a1, 0xff848484, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff313131, 0xff323232, 0xff323232, 0xff878787, 0xff9d9d9d, 0xffa0a0a0, 0xffa4a4a4, 0xfea8a8a8, 0xffaaaaaa, 0xffadadad, 0xffaeafae, 0xfeb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb2b2b2, 0xffb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xfeb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xffb3b3b3, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb3b3b3, 0xffb3b3b3, 0xfeb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xfeb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xfeb1b1b1, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb2b2b2, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb2b2b2, 0xfeb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb3b3b3, 0xfeb2b2b2, 0xffb2b2b2, 0xfeb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb3b3b3, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xfeaeaeae, 0xffacacac, 0xffa9a9a9, 0xffa5a5a5, 0xfea2a2a2, 0xff727272, 0xff323232, 0xff313131, 0xff313131, 0xff323232, 0xff313131, 0xff323232, 0xff313131, 0xff313131, 0xff323232, 0xff323232, 0xff313131, 0xff313131, 0xff323232, 0xff323232, 0xff323232, 0xff646464, 0xffa2a2a2, 0xfea6a6a6, 0xffaaaaaa, 0xffadadad, 0xffaeafae, 0xffb0b0b0, 0xffb1b1b1, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb0b0b0, 0xffaeafae, 0xffadadad, 0xffa9a9a9, 0xffa6a6a6, 0xffa2a2a2, 0xff5d5e5e, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff323232, 0xff313131, 0xff313131, 0xff313131, 0xff323232, 0xff313131, 0xff313131, 0xff323232, 0xff6b6b6b, 0xffa1a1a1, 0xfea6a6a6, 0xffa9a9a9, 0xfeadadad, 0xffaeaeae, 0xffafafaf, 0xffb0b0b0, 0xffb1b1b1, 0xffb2b2b2, 0xffb2b2b2, 0xffb3b3b3, 0xffb2b2b2, 0xfeb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb3b3b3, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb2b2b2, 0xfeb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffafafaf, 0xffafafaf, 0xfeafafaf, 0xffafafaf, 0xfeafafaf, 0xffaeafae, 0xffafafaf, 0xffafafaf, 0xffafafaf, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeb2b2b2, 0xffb1b1b1, 0xffb2b2b2, 0xfeb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xfeb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xfeb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb2b2b2, 0xfeb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xffaeafae, 0xffadadad, 0xffababab, 0xffa0a0a0, 0xff606060, 0xff313131, 0xff313131, 0xff323232, 0xff323232, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff323232, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff393939, 0xff9d9d9d, 0xfea8a8a8, 0xffaaaaaa, 0xffadadad, 0xfeb0b0b0, 0xfeb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xfeb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb2b2b2, 0xffb0b0b0, 0xffaeafae, 0xffadadad, 0xffaaaaaa, 0xffa6a6a6, 0xff969696, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff323232, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff323232, 0xff323232, 0xff313131, 0xff323232, 0xff676767, 0xffa0a0a0, 0xffaaaaaa, 0xffadadad, 0xffaeafae, 0xfeb0b0b0, 0xffb0b0b0, 0xffb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xfeb2b2b2, 0xffb1b1b1, 0xfeb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb2b2b2, 0xfeb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xfeb2b2b2, 0xfeb2b2b2, 0xfeaeaeae, 0xfeaeaeae, 0xffaeafae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeafae, 0xfeaeaeae, 0xfeaeaeae, 0xfeaeaeae, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb0b0b0, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xffb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xfeb2b2b2, 0xffb1b1b1, 0xffb0b0b0, 0xfeb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffafafaf, 0xffaeafae, 0xfeaeaeae, 0xfe9d9e9d, 0xff494949, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff303030, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff676767, 0xffa7a7a7, 0xffaaaaaa, 0xffadadad, 0xfeafafaf, 0xfeb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb0b0b0, 0xffaeafae, 0xffadadad, 0xfeababab, 0xffa6a6a6, 0xff5f5f5f, 0xff313131, 0xff303030, 0xff313131, 0xff303030, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff303030, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff424242, 0xfe9d9e9d, 0xffadadad, 0xfeb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xfeb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xfeaeaeae, 0xffadadad, 0xffadadad, 0xfeaeaeae, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xfeadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffacacac, 0xffadadad, 0xfeaeaeae, 0xfeaeaeae, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffb1b1b1, 0xfeb1b1b1, 0xffb0b0b0, 0xfeb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xffafafaf, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeafafaf, 0xff909090, 0xff393939, 0xff303030, 0xff303030, 0xff313131, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff313131, 0xff313131, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff313131, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xfe7e7e7e, 0xfeababab, 0xffacacac, 0xffaeafae, 0xffafafaf, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffaeaeae, 0xffacacac, 0xffaaaaaa, 0xff7d7d7d, 0xff313131, 0xff303030, 0xff313131, 0xff303030, 0xff303030, 0xff313131, 0xff313131, 0xff303030, 0xff313131, 0xff303030, 0xff303030, 0xff313131, 0xff303030, 0xff313131, 0xff313131, 0xff303030, 0xff303030, 0xff313131, 0xff313131, 0xff313131, 0xff424242, 0xff898989, 0xfeafafaf, 0xffafafaf, 0xfeb0b0b0, 0xfeb1b1b1, 0xfeb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xfeb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffb0b0b0, 0xffafafaf, 0xfeacacac, 0xffacacac, 0xfeacacac, 0xffacacac, 0xfeacacac, 0xffababab, 0xffacacac, 0xffababab, 0xffababab, 0xffacacac, 0xfeacacac, 0xffababab, 0xffababab, 0xffababab, 0xffababab, 0xfeacacac, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeafafaf, 0xffafafaf, 0xfeafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffafafaf, 0xfeb0b0b0, 0xffafafaf, 0xfeafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffb0b0b0, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffaeafae, 0xff727272, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff313131, 0xff383838, 0xff949494, 0xffacacac, 0xfeaeaeae, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffb0b0b0, 0xffafafaf, 0xffafafaf, 0xffaeafae, 0xfeaeaeae, 0xffacacac, 0xff949494, 0xff393939, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff737373, 0xfeafafaf, 0xfeb0b0b0, 0xfeb0b0b0, 0xffb0b0b0, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffb0b0b0, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xfeababab, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffa9a9a9, 0xfeababab, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xfeaaaaaa, 0xfeaaaaaa, 0xffaaaaaa, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffafafaf, 0xffafafaf, 0xfeafafaf, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xffafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xff6a6a6a, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff383838, 0xff7f7f7f, 0xffadadad, 0xffaeaeae, 0xffafafaf, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xfeafafaf, 0xffafafaf, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xfeaeaeae, 0xfeaeaeae, 0xff808080, 0xff383838, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff636363, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffafafaf, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xfeafafaf, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffafafaf, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xffa9a9a9, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa9a9a9, 0xfea9a9a9, 0xfea9a9a9, 0xffa8a8a8, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeafae, 0xffaeaeae, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xffaeaeae, 0xfeaeaeae, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffaeaeae, 0xfeaeaeae, 0xfeaeaeae, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xfeafafaf, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff626262, 0xff9e9e9e, 0xffaeaeae, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffa6a6a6, 0xff696969, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xffadadad, 0xffaeaeae, 0xffaeafae, 0xffaeaeae, 0xffaeafae, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xffaeafae, 0xfeaeaeae, 0xfeafafaf, 0xfeaeaeae, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeafae, 0xffaeaeae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeaeae, 0xffaeafae, 0xffaeafae, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xfea8a8a8, 0xfea7a7a7, 0xffa7a7a7, 0xfea7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffadadad, 0xffadadad, 0xffacacac, 0xff515151, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff626262, 0xff909090, 0xfeaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffa7a7a7, 0xff919191, 0xff6a6a6a, 0xff383838, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff494949, 0xffacacac, 0xffadadad, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffadadad, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xfeaeaeae, 0xffa5a5a5, 0xfea6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xfea6a6a6, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeaeaeae, 0xfeadadad, 0xfeaeaeae, 0xfeaeaeae, 0xfeaeaeae, 0xfeaeaeae, 0xffadadad, 0xffaeaeae, 0xffadadad, 0xfeaeaeae, 0xfeaeaeae, 0xffadadad, 0xffaeaeae, 0xffadadad, 0xfeaeaeae, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffacacac, 0xffacacac, 0xffababab, 0xfe8d8d8d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff494949, 0xff515151, 0xff525252, 0xff404040, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff9b9b9b, 0xffaaaaaa, 0xffababab, 0xffacacac, 0xffadadad, 0xffadadad, 0xffaeaeae, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xfeaeaeae, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xfeaeaeae, 0xffadadad, 0xffaeaeae, 0xffadadad, 0xffadadad, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffadadad, 0xfeaeaeae, 0xffa4a4a4, 0xfea4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xfea4a4a4, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeadadad, 0xffadadad, 0xffadadad, 0xffacacac, 0xffadadad, 0xffadadad, 0xffacacac, 0xffacacac, 0xfeadadad, 0xffadadad, 0xffacacac, 0xfeadadad, 0xffacacac, 0xffacacac, 0xffacacac, 0xffadadad, 0xffacacac, 0xfeadadad, 0xffacacac, 0xffacacac, 0xffababab, 0xfeacacac, 0xffaaaaaa, 0xfeaaaaaa, 0xffa6a6a6, 0xff5d5e5e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff5d5e5e, 0xfea7a7a7, 0xffa8a8a8, 0xffa9a9a9, 0xfeacacac, 0xfeadadad, 0xffacacac, 0xffadadad, 0xffacacac, 0xfeadadad, 0xffadadad, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xfeadadad, 0xffadadad, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffadadad, 0xffacacac, 0xfeadadad, 0xffadadad, 0xffacacac, 0xffacacac, 0xffadadad, 0xfeadadad, 0xfeadadad, 0xffacacac, 0xffa2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa3a3a3, 0xffa3a3a3, 0xffa2a2a2, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xffa2a2a2, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10afafaf, 0xffacacac, 0xffacacac, 0xffababab, 0xfeacacac, 0xfeacacac, 0xffacacac, 0xffababab, 0xffacacac, 0xffacacac, 0xfeacacac, 0xffacacac, 0xffababab, 0xffacacac, 0xffacacac, 0xffacacac, 0xffababab, 0xfeacacac, 0xffababab, 0xffacacac, 0xffababab, 0xffaaaaaa, 0xffa9a9a9, 0xffa7a7a7, 0xffa6a6a6, 0xffa4a4a4, 0xff9a9a9a, 0xff343434, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff3e3e3e, 0xff939393, 0xffa3a3a3, 0xfea7a7a7, 0xffa7a7a7, 0xfeaaaaaa, 0xffaaaaaa, 0xffacacac, 0xffacacac, 0xfeacacac, 0xffababab, 0xffacacac, 0xffababab, 0xffababab, 0xfeacacac, 0xffababab, 0xffacacac, 0xfeacacac, 0xffacacac, 0xffababab, 0xffacacac, 0xffacacac, 0xffababab, 0xfeacacac, 0xffacacac, 0xffababab, 0xfeacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7fadadad, 0xfeababab, 0xffababab, 0xffababab, 0xfeababab, 0xffababab, 0xffaaaaaa, 0xffababab, 0xffababab, 0xffababab, 0xfeacacac, 0xffababab, 0xffababab, 0xffababab, 0xfeababab, 0xffababab, 0xfeababab, 0xffababab, 0xffababab, 0xffababab, 0xffaaaaaa, 0xffa9a9a9, 0xfea9a9a9, 0xffa7a7a7, 0xffa4a4a4, 0xfea2a2a2, 0xff9d9e9e, 0xff676767, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff666666, 0xff9d9e9e, 0xfea2a2a2, 0xfea4a4a4, 0xfea7a7a7, 0xfea9a9a9, 0xffa9a9a9, 0xffaaaaaa, 0xffababab, 0xffacacac, 0xffababab, 0xffababab, 0xffababab, 0xffababab, 0xffacacac, 0xffababab, 0xffababab, 0xffababab, 0xffababab, 0xfeababab, 0xfeacacac, 0xfeacacac, 0xffababab, 0xffababab, 0xffababab, 0xffababab, 0xffababab, 0xffacacac, 0xfeababab, 0xffababab, 0xffababab, 0xffababab, 0xfeacacac, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xffa0a0a0, 0xff9f9f9f, 0xffa0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xfea0a0a0, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x50a9a9a9, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xfeaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xfeababab, 0xffababab, 0xffaaaaaa, 0xfeababab, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffababab, 0xffaaaaaa, 0xffa9a9a9, 0xffa8a8a8, 0xffa7a7a7, 0xffa4a4a4, 0xffa2a2a2, 0xff9f9f9f, 0xff9c9c9c, 0xff919191, 0xff3b3b3b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff3b3b3b, 0xff999999, 0xfe9d9d9d, 0xff9e9e9e, 0xffa1a1a1, 0xffa4a4a4, 0xfea7a7a7, 0xffa8a8a8, 0xffa9a9a9, 0xffababab, 0xffaaaaaa, 0xfeababab, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xfeaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xfeababab, 0xfeaaaaaa, 0xfeababab, 0xffaaaaaa, 0xffababab, 0xffababab, 0xffaaaaaa, 0xffababab, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xff9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0x809d9d9d, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20a7a7a7, 0xefaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffaaaaaa, 0xffa9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffaaaaaa, 0xffa9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xfeaaaaaa, 0xffa9a9a9, 0xffaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xffa7a7a7, 0xffa5a5a5, 0xffa3a3a3, 0xffa0a0a0, 0xff9d9d9d, 0xff999999, 0xff969696, 0xff7a7a7a, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff6e6e6e, 0xfe969696, 0xff999999, 0xfe9d9e9d, 0xffa0a0a0, 0xffa3a3a3, 0xffa5a5a5, 0xfea8a8a8, 0xffa8a8a8, 0xffaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xffaaaaaa, 0xfeaaaaaa, 0xfeaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xfeaaaaaa, 0xfeaaaaaa, 0xffaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xfeaaaaaa, 0xffaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0x9f9f9f9f, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20a7a7a7, 0xdfa9a9a9, 0xfea9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xfea9a9a9, 0xfea9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfea9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xffa8a8a8, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xffa7a7a7, 0xffa6a6a6, 0xfea4a4a4, 0xffa2a2a2, 0xff9f9f9f, 0xff9c9c9c, 0xfe999999, 0xff949494, 0xff909090, 0xff464646, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff4c4c4c, 0xff909090, 0xff939393, 0xff979797, 0xff9b9b9b, 0xff9e9e9e, 0xfea3a3a3, 0xffa4a4a4, 0xffa7a7a7, 0xffa7a7a7, 0xffa9a9a9, 0xffa9a9a9, 0xfea9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xffa8a8a8, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfea9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfea9a9a9, 0xffa8a8a8, 0xffa9a9a9, 0xffa9a9a9, 0xfe9d9d9d, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xfe9d9d9d, 0xfe9d9d9d, 0xcf9e9e9e, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xcfa8a8a8, 0xfea9a9a9, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xfea8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa9a9a9, 0xfea9a9a9, 0xffa7a7a7, 0xffa6a6a6, 0xffa5a5a5, 0xffa3a3a3, 0xffa0a0a0, 0xff9d9e9e, 0xff9b9b9b, 0xfe979797, 0xfe939393, 0xfe8f8f8f, 0xff7b7b7b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff808080, 0xfe8f8f8f, 0xff929292, 0xfe979797, 0xff9b9b9b, 0xfe9e9e9e, 0xffa0a0a0, 0xffa3a3a3, 0xfea6a6a6, 0xffa7a7a7, 0xffa8a8a8, 0xffa8a8a8, 0xfea9a9a9, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xfea8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xfea9a9a9, 0xfea8a8a8, 0xffa8a8a8, 0xffa7a7a7, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xfea9a9a9, 0xfea9a9a9, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9b9b9b, 0xff9a9a9a, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9a9a9a, 0xfe9b9b9b, 0xff9b9b9b, 0xdf9a9a9a, 0x109f9f9f, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x8fa9a9a9, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa6a6a6, 0xffa4a4a4, 0xffa3a3a3, 0xffa0a0a0, 0xff9d9e9e, 0xff9a9a9a, 0xff969696, 0xff929292, 0xff8e8e8e, 0xff8a8a8a, 0xff565656, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff313131, 0xff313131, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff303030, 0xff313131, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff505050, 0xff8b8b8b, 0xff8e8e8e, 0xfe939393, 0xff969696, 0xff9a9a9a, 0xff9d9e9e, 0xffa0a0a0, 0xffa3a3a3, 0xfea6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa8a8a8, 0xfea8a8a8, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xfe9a9a9a, 0xff999999, 0xfe999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff999999, 0xdf999999, 0x20979797, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7fa9a9a9, 0xffa6a6a6, 0xffa7a7a7, 0xfea7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa6a6a6, 0xffa7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xfea7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xffa6a6a6, 0xffa7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xffa7a7a7, 0xfea7a7a7, 0xffa7a7a7, 0xfea7a7a7, 0xffa7a7a7, 0xffa6a6a6, 0xffa5a5a5, 0xffa4a4a4, 0xffa2a2a2, 0xffa0a0a0, 0xff9d9d9d, 0xff9a9a9a, 0xff969696, 0xff929292, 0xfe8f8f8f, 0xff8b8b8b, 0xff828282, 0xff303030, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff414141, 0xff5c5c5c, 0xff7c7c7c, 0xfe777777, 0xff363636, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff3d3d3d, 0xff777777, 0xff7c7c7c, 0xfe626262, 0xff373737, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff373737, 0xff7d7d7d, 0xff8b8b8b, 0xff8e8e8e, 0xff929292, 0xff969696, 0xff9a9a9a, 0xff9d9e9e, 0xffa0a0a0, 0xffa2a2a2, 0xfea5a5a5, 0xffa6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa6a6a6, 0xffa7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xfea7a7a7, 0xffa7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xffa7a7a7, 0xfea7a7a7, 0xffa6a6a6, 0xfea7a7a7, 0xffa6a6a6, 0xffa7a7a7, 0xfea7a7a7, 0xffa6a6a6, 0xfea7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff979797, 0xff989898, 0xff979797, 0xee989898, 0x20979797, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x50a6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xfea6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa5a5a5, 0xffa3a3a3, 0xffa2a2a2, 0xfea1a1a1, 0xff9d9e9e, 0xff9b9b9b, 0xff969696, 0xff929292, 0xff8f8f8f, 0xff8b8b8b, 0xfe888888, 0xff606060, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff303030, 0xff525252, 0xff6c6c6c, 0xfe818181, 0xff808080, 0xff818181, 0xff818181, 0xfe828282, 0xff585858, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff303030, 0xff575757, 0xff818181, 0xff818181, 0xff808080, 0xff808080, 0xff808080, 0xff6d6d6d, 0xff4c4c4c, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff666666, 0xfe898989, 0xff8b8b8b, 0xfe8f8f8f, 0xff929292, 0xff979797, 0xff9a9a9a, 0xff9d9e9e, 0xffa0a0a0, 0xffa2a2a2, 0xfea5a5a5, 0xffa5a5a5, 0xffa6a6a6, 0xffa6a6a6, 0xffa5a5a5, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xfea6a6a6, 0xffa5a5a5, 0xffa6a6a6, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xfea6a6a6, 0xfea6a6a6, 0xfea6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xfea7a7a7, 0xffa5a5a5, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xff969696, 0xff969696, 0xfe979797, 0xfe979797, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0x309a9a9a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x209f9f9f, 0xefa4a4a4, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xfea5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea4a4a4, 0xffa2a2a2, 0xfea1a1a1, 0xff9d9e9e, 0xfe9c9c9c, 0xff989898, 0xfe959595, 0xff909090, 0xff8c8c8c, 0xff898989, 0xff868686, 0xff3d3d3d, 0xff282828, 0xff282828, 0xff3b3b3b, 0xff575757, 0xff7b7b7b, 0xff818181, 0xff808080, 0xff808080, 0xff818181, 0xff818181, 0xfe828282, 0xff808080, 0xff818181, 0xff767676, 0xff4c4c4c, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff282828, 0xff282828, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff282828, 0xff282828, 0xff303030, 0xff535353, 0xff7b7b7b, 0xff818181, 0xfe818181, 0xfe828282, 0xfe828282, 0xff818181, 0xff808080, 0xff808080, 0xfe828282, 0xff767676, 0xff626262, 0xff343434, 0xff2a2a2a, 0xff282828, 0xff363636, 0xff868686, 0xff898989, 0xff8c8c8c, 0xff909090, 0xfe949494, 0xff989898, 0xff9b9b9b, 0xff9d9e9e, 0xffa0a0a0, 0xffa3a3a3, 0xffa3a3a3, 0xfea5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa6a6a6, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xfea5a5a5, 0xffa6a6a6, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa4a4a4, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xff949494, 0xff959595, 0xff959595, 0xff949494, 0xff959595, 0xfe969696, 0xff949494, 0xfe959595, 0xff949494, 0x5f969696, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x209f9f9f, 0xdfa5a5a5, 0xffa5a5a5, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xffa4a4a4, 0xffa5a5a5, 0xfea5a5a5, 0xffa5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xfea5a5a5, 0xffa4a4a4, 0xffa5a5a5, 0xffa5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xffa2a2a2, 0xffa1a1a1, 0xff9e9e9e, 0xff9c9c9c, 0xff999999, 0xfe969696, 0xff919191, 0xff8d8d8d, 0xff8a8a8a, 0xff878787, 0xff7a7a7a, 0xff696969, 0xff6d6d6d, 0xff818181, 0xff818181, 0xff818181, 0xff818181, 0xff818181, 0xff828282, 0xff818181, 0xff828282, 0xff818181, 0xff828282, 0xff808080, 0xff818181, 0xff808080, 0xff767676, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff2a2a2a, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff7c7c7c, 0xff808080, 0xff818181, 0xff818181, 0xfe828282, 0xff828282, 0xfe838383, 0xff818181, 0xff818181, 0xff818181, 0xff818181, 0xfe818181, 0xfe818181, 0xff818181, 0xff6d6d6d, 0xff636363, 0xfe818181, 0xff878787, 0xff8a8a8a, 0xff8d8d8d, 0xff919191, 0xff959595, 0xfe999999, 0xff9c9c9c, 0xff9e9e9e, 0xffa0a0a0, 0xfea3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xffa5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea4a4a4, 0xfea5a5a5, 0xfea5a5a5, 0xffa4a4a4, 0xfea4a4a4, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xffa5a5a5, 0xff939393, 0xff939393, 0xfe949494, 0xfe949494, 0xff939393, 0xff939393, 0xff949494, 0xff939393, 0x80919393, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10afafaf, 0xdfa4a4a4, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xfea4a4a4, 0xfea4a4a4, 0xffa3a3a3, 0xfea4a4a4, 0xfea4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xfea4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xffa4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa2a2a2, 0xffa0a0a0, 0xff9f9f9f, 0xff9d9d9d, 0xff9a9a9a, 0xfe979797, 0xff939393, 0xff909090, 0xfe8c8c8c, 0xfe898989, 0xff868686, 0xff848484, 0xfe838383, 0xff828282, 0xff818181, 0xff818181, 0xff828282, 0xff828282, 0xfe838383, 0xff838383, 0xff828282, 0xff828282, 0xff828282, 0xfe838383, 0xff818181, 0xff818181, 0xff808080, 0xff343434, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff272727, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff3a3a3a, 0xff808080, 0xff818181, 0xff818181, 0xfe838383, 0xff828282, 0xff828282, 0xff828282, 0xff838383, 0xff828282, 0xff828282, 0xfe838383, 0xfe838383, 0xfe838383, 0xff828282, 0xfe848484, 0xff848484, 0xff868686, 0xff888888, 0xff8b8b8b, 0xff8e8e8e, 0xff929292, 0xfe989898, 0xff9a9a9a, 0xff9d9d9d, 0xff9f9f9f, 0xffa1a1a1, 0xffa2a2a2, 0xffa3a3a3, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xfea4a4a4, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xfea4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xff929292, 0xff919191, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xfe929292, 0x80919393, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xafa3a3a3, 0xffa3a3a3, 0xffa2a2a2, 0xffa3a3a3, 0xffa2a2a2, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa2a2a2, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xfea4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xffa2a2a2, 0xffa1a1a1, 0xffa0a0a0, 0xfea0a0a0, 0xff9d9e9e, 0xfe9c9c9c, 0xff989898, 0xff949494, 0xff909090, 0xff8d8d8d, 0xfe8b8b8b, 0xff878787, 0xfe868686, 0xff848484, 0xfe848484, 0xff838383, 0xff838383, 0xff838383, 0xfe858585, 0xff848484, 0xfe858585, 0xff848484, 0xff848484, 0xff838383, 0xff838383, 0xff828282, 0xfe838383, 0xff818181, 0xff464646, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff282828, 0xff282828, 0xff272727, 0xff282828, 0xff282828, 0xff272727, 0xff282828, 0xff272727, 0xff272727, 0xff272727, 0xff282828, 0xff272727, 0xff272727, 0xff272727, 0xff404040, 0xff818181, 0xff818181, 0xfe838383, 0xfe848484, 0xfe858585, 0xfe858585, 0xfe858585, 0xff848484, 0xff848484, 0xff838383, 0xfe848484, 0xff838383, 0xff838383, 0xff838383, 0xff838383, 0xfe868686, 0xfe888888, 0xff8a8a8a, 0xfe8e8e8e, 0xff909090, 0xfe959595, 0xff989898, 0xff9c9c9c, 0xff9d9e9e, 0xff9f9f9f, 0xfea2a2a2, 0xfea2a2a2, 0xffa3a3a3, 0xfea4a4a4, 0xfea4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xfea4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xfe909090, 0xff909090, 0xff909090, 0xff919191, 0xff909090, 0xff919191, 0x9f929292, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7fa3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xffa1a1a1, 0xffa1a1a1, 0xff9f9f9f, 0xff9d9e9e, 0xff9c9c9c, 0xff9a9a9a, 0xff969696, 0xff939393, 0xff8f8f8f, 0xff8c8c8c, 0xff898989, 0xff878787, 0xff858585, 0xff858585, 0xff848484, 0xff848484, 0xff858585, 0xff868686, 0xff868686, 0xfe878787, 0xff868686, 0xff868686, 0xfe868686, 0xff858585, 0xfe848484, 0xfe848484, 0xff818181, 0xff4b4b4b, 0xff272727, 0xff272727, 0xff262626, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff282828, 0xff272727, 0xff272727, 0xff272727, 0xff515151, 0xff828282, 0xfe848484, 0xfe848484, 0xff858585, 0xff858585, 0xff868686, 0xff878787, 0xff878787, 0xff868686, 0xff868686, 0xfe868686, 0xff858585, 0xff858585, 0xfe868686, 0xff868686, 0xff878787, 0xff898989, 0xff8c8c8c, 0xfe909090, 0xff929292, 0xff969696, 0xff999999, 0xff9c9c9c, 0xff9e9e9e, 0xfea0a0a0, 0xffa1a1a1, 0xfea2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa3a3a3, 0xffa3a3a3, 0xffa2a2a2, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xcf8f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x6fa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa2a2a2, 0xffa1a1a1, 0xffa2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xffa2a2a2, 0xfea2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xfea1a1a1, 0xfe9e9e9e, 0xff9d9d9d, 0xfe9b9b9b, 0xfe989898, 0xfe959595, 0xff909090, 0xfe8f8f8f, 0xff8b8b8b, 0xff898989, 0xfe888888, 0xff878787, 0xff868686, 0xff878787, 0xfe898989, 0xff888888, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xfe8a8a8a, 0xff888888, 0xfe888888, 0xff868686, 0xff858585, 0xff828282, 0xff5c5c5c, 0xff272727, 0xff272727, 0xff262626, 0xff262626, 0xff262626, 0xff272727, 0xff262626, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff262626, 0xff262626, 0xff272727, 0xff262626, 0xff272727, 0xff5c5c5c, 0xff828282, 0xff848484, 0xff868686, 0xff868686, 0xfe898989, 0xff888888, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff888888, 0xfe898989, 0xfe888888, 0xfe888888, 0xff878787, 0xff888888, 0xff898989, 0xfe8c8c8c, 0xfe8f8f8f, 0xff909090, 0xfe959595, 0xff979797, 0xff9b9b9b, 0xff9d9d9d, 0xff9e9e9e, 0xff9f9f9f, 0xfea1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa2a2a2, 0xffa2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea2a2a2, 0xfea2a2a2, 0xfea2a2a2, 0xfea2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xdf8e8e8e, 0x108f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x309f9f9f, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xfea1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xffa0a0a0, 0xffa1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa0a0a0, 0xffa0a0a0, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xfea0a0a0, 0xff9e9e9e, 0xff9d9d9d, 0xff9b9b9b, 0xfe9a9a9a, 0xff969696, 0xff939393, 0xff909090, 0xff8e8e8e, 0xff8d8d8d, 0xff8a8a8a, 0xfe8b8b8b, 0xff898989, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xfe8b8b8b, 0xff888888, 0xff878787, 0xff848484, 0xff686868, 0xff262626, 0xff262626, 0xff272727, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff272727, 0xff262626, 0xff272727, 0xff262626, 0xff262626, 0xff262626, 0xff686868, 0xfe858585, 0xff868686, 0xff888888, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xfe8b8b8b, 0xfe8b8b8b, 0xff8c8c8c, 0xff8d8d8d, 0xff909090, 0xfe949494, 0xff969696, 0xff999999, 0xff9c9c9c, 0xfe9e9e9e, 0xff9f9f9f, 0xffa0a0a0, 0xffa0a0a0, 0xffa1a1a1, 0xffa0a0a0, 0xfea1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xfea1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xfea1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea1a1a1, 0xffa0a0a0, 0xfea1a1a1, 0xfea1a1a1, 0xfea1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa1a1a1, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xdf8d8d8d, 0x20878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x209f9f9f, 0xdf9f9f9f, 0xffa0a0a0, 0xfea1a1a1, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xfea0a0a0, 0xfea1a1a1, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xff9e9e9e, 0xff9d9d9d, 0xff9c9c9c, 0xff9a9a9a, 0xff989898, 0xff959595, 0xff929292, 0xff909090, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff8f8f8f, 0xff8f8f8f, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff8e8e8e, 0xfe8d8d8d, 0xfe8b8b8b, 0xff898989, 0xff868686, 0xff797979, 0xff262626, 0xff262626, 0xff262626, 0xff252525, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff252525, 0xff252525, 0xff262626, 0xff252525, 0xff262626, 0xff262626, 0xff252525, 0xff262626, 0xff262626, 0xff747474, 0xff868686, 0xfe898989, 0xff8a8a8a, 0xff8c8c8c, 0xfe8f8f8f, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff909090, 0xff929292, 0xff949494, 0xff989898, 0xff9a9a9a, 0xfe9d9d9d, 0xff9d9e9e, 0xfe9f9f9f, 0xff9f9f9f, 0xfea1a1a1, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xff9f9f9f, 0xfea1a1a1, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xfea1a1a1, 0xfea0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xff8a8a8a, 0xfe8b8b8b, 0xee8b8b8b, 0x20878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x10afafaf, 0xdfa0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xffa0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xfe9f9f9f, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xffa0a0a0, 0xff9f9f9f, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xff9d9e9e, 0xff9d9d9d, 0xfe9c9c9c, 0xff9a9a9a, 0xff979797, 0xff959595, 0xff939393, 0xff929292, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff929292, 0xff929292, 0xff929292, 0xff939393, 0xff929292, 0xff929292, 0xff919191, 0xff8f8f8f, 0xff8d8d8d, 0xff8b8b8b, 0xff888888, 0xfe808080, 0xff252525, 0xff262626, 0xff252525, 0xff262626, 0xff252525, 0xff262626, 0xff252525, 0xff262626, 0xff262626, 0xff262626, 0xff252525, 0xff252525, 0xff262626, 0xff252525, 0xff262626, 0xff262626, 0xff262626, 0xff252525, 0xff858585, 0xff888888, 0xff8a8a8a, 0xff8c8c8c, 0xff8e8e8e, 0xff919191, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xfe929292, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xff929292, 0xff939393, 0xfe969696, 0xff979797, 0xff9a9a9a, 0xff9b9b9b, 0xff9d9d9d, 0xff9d9e9e, 0xfe9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xffa0a0a0, 0xff9f9f9f, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xff9f9f9f, 0xff898989, 0xff898989, 0x308a8a8a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xaf9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9f9f9f, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9f9f9f, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xfe9f9f9f, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9d9d9d, 0xfe9c9c9c, 0xff9a9a9a, 0xfe999999, 0xfe989898, 0xfe979797, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xfe969696, 0xff959595, 0xff969696, 0xff969696, 0xfe969696, 0xfe949494, 0xff929292, 0xff909090, 0xfe8d8d8d, 0xff8a8a8a, 0xff868686, 0xff323232, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff262626, 0xff262626, 0xff252525, 0xff252525, 0xff252525, 0xff262626, 0xff262626, 0xff252525, 0xff252525, 0xff323232, 0xfe878787, 0xff8a8a8a, 0xff8c8c8c, 0xfe909090, 0xfe939393, 0xff949494, 0xff969696, 0xff969696, 0xfe979797, 0xfe979797, 0xff969696, 0xff959595, 0xfe959595, 0xff949494, 0xfe949494, 0xff949494, 0xfe959595, 0xff959595, 0xff969696, 0xff989898, 0xff9a9a9a, 0xfe9c9c9c, 0xff9d9d9d, 0xff9d9e9e, 0xff9e9e9e, 0xfea0a0a0, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9f9f9f, 0xfe9f9f9f, 0xff9f9f9f, 0xff9e9e9e, 0xff9f9f9f, 0xfe9f9f9f, 0xff9e9e9e, 0xfe9f9f9f, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9f9f9f, 0xfe9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9f9f9f, 0xfe888888, 0x5f898989, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x7f9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xfe9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xff9a9a9a, 0xff989898, 0xff989898, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xfe989898, 0xff989898, 0xff989898, 0xfe9a9a9a, 0xff989898, 0xff969696, 0xff949494, 0xff919191, 0xff8e8e8e, 0xff8b8b8b, 0xfe898989, 0xff3f3f3f, 0xff252525, 0xff232323, 0xff232323, 0xff252525, 0xff252525, 0xff252525, 0xff232323, 0xff232323, 0xff252525, 0xff252525, 0xff232323, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff404040, 0xff888888, 0xff8b8b8b, 0xff8e8e8e, 0xff919191, 0xff949494, 0xff969696, 0xff979797, 0xff989898, 0xff999999, 0xff989898, 0xff989898, 0xff989898, 0xff979797, 0xff979797, 0xff969696, 0xff969696, 0xff979797, 0xff989898, 0xff989898, 0xff9a9a9a, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xfe9f9f9f, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xfe9f9f9f, 0xfe9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0x80878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xef9e9e9e, 0xfe9d9e9d, 0xfe9e9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9d9d, 0xff9b9b9b, 0xfe9c9c9c, 0xff9a9a9a, 0xff999999, 0xff999999, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xff9a9a9a, 0xfe9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff989898, 0xfe979797, 0xfe949494, 0xff909090, 0xff8d8d8d, 0xff898989, 0xff757575, 0xff313131, 0xff252525, 0xff232323, 0xff232323, 0xff252525, 0xff232323, 0xff252525, 0xff252525, 0xff232323, 0xff252525, 0xff232323, 0xff252525, 0xff232323, 0xff232323, 0xff232323, 0xff2a2a2a, 0xff747474, 0xff898989, 0xff8c8c8c, 0xff909090, 0xfe949494, 0xff959595, 0xff979797, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xfe9a9a9a, 0xff9a9a9a, 0xff999999, 0xfe9a9a9a, 0xff989898, 0xfe999999, 0xff989898, 0xff999999, 0xff9a9a9a, 0xff9b9b9b, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9e9e, 0xfe9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xfe9d9e9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9a9a9a, 0xff999999, 0xff969696, 0xfe959595, 0xff919191, 0xff8e8e8e, 0xfe8b8b8b, 0xff868686, 0xfe848484, 0xff7f7f7f, 0xff7d7d7d, 0xff7c7c7c, 0xfe7b7b7b, 0xff7a7a7a, 0xff797979, 0xfe797979, 0xff797979, 0xff797979, 0xfe7a7a7a, 0xff7b7b7b, 0xfe7c7c7c, 0xff7e7e7e, 0xff808080, 0xff828282, 0xfe878787, 0xfe8b8b8b, 0xff8e8e8e, 0xff919191, 0xff949494, 0xff969696, 0xff999999, 0xfe9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9e9e, 0xfe9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xfe9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9d9d, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xfe9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xff9d9d9d, 0xfe9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff999999, 0xfe989898, 0xff959595, 0xff919191, 0xff8e8e8e, 0xfe8b8b8b, 0xff878787, 0xff838383, 0xfe818181, 0xff7e7e7e, 0xff7c7c7c, 0xfe7b7b7b, 0xfe7a7a7a, 0xff797979, 0xff7a7a7a, 0xff7a7a7a, 0xff7a7a7a, 0xff7a7a7a, 0xff7b7b7b, 0xff7c7c7c, 0xfe7e7e7e, 0xff818181, 0xff838383, 0xff878787, 0xff8b8b8b, 0xff8e8e8e, 0xfe939393, 0xff959595, 0xfe989898, 0xff999999, 0xff9b9b9b, 0xfe9c9c9c, 0xfe9c9c9c, 0xfe9d9d9d, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9a9a9a, 0xfe9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xff9d9d9d, 0xfe9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xfe9d9d9d, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xfe9d9d9d, 0xff9d9d9d, 0xfe9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfe9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff989898, 0xff959595, 0xff929292, 0xff909090, 0xff8b8b8b, 0xff878787, 0xff848484, 0xff818181, 0xff7f7f7f, 0xfe7d7d7d, 0xff7c7c7c, 0xff7b7b7b, 0xfe7a7a7a, 0xff7a7a7a, 0xff7b7b7b, 0xfe7a7a7a, 0xfe7b7b7b, 0xff7b7b7b, 0xff7d7d7d, 0xff7f7f7f, 0xff818181, 0xff858585, 0xff888888, 0xfe8c8c8c, 0xff8f8f8f, 0xfe939393, 0xff959595, 0xff989898, 0xff999999, 0xff9b9b9b, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9d9d9d, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xfe9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff9a9a9a, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9a9a9a, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9a9a9a, 0xfe9c9c9c, 0xff9b9b9b, 0xfe9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xfe9b9b9b, 0xff9b9b9b, 0xff999999, 0xff989898, 0xff969696, 0xfe939393, 0xff909090, 0xff8c8c8c, 0xff898989, 0xfe868686, 0xff828282, 0xfe818181, 0xfe7e7e7e, 0xff7d7d7d, 0xff7c7c7c, 0xfe7b7b7b, 0xfe7c7c7c, 0xff7b7b7b, 0xff7b7b7b, 0xff7c7c7c, 0xff7c7c7c, 0xff7e7e7e, 0xff818181, 0xff828282, 0xff858585, 0xff898989, 0xfe8d8d8d, 0xff909090, 0xff939393, 0xff959595, 0xff979797, 0xff999999, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xfe9b9b9b, 0xfe9c9c9c, 0xfe9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xfe9b9b9b, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xff9a9a9a, 0xfe9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xfe9a9a9a, 0xff999999, 0xff979797, 0xff959595, 0xff939393, 0xff909090, 0xff8d8d8d, 0xff8a8a8a, 0xff868686, 0xff848484, 0xff818181, 0xfe818181, 0xfe7e7e7e, 0xff7d7d7d, 0xff7d7d7d, 0xff7d7d7d, 0xff7d7d7d, 0xfe7d7d7d, 0xfe7d7d7d, 0xff7e7e7e, 0xff7f7f7f, 0xff818181, 0xff848484, 0xff878787, 0xff8a8a8a, 0xff8d8d8d, 0xff909090, 0xff949494, 0xff959595, 0xff979797, 0xfe9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xfe9b9b9b, 0xfe9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff9a9a9a, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xfe9a9a9a, 0xff9a9a9a, 0xff999999, 0xfe9a9a9a, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff9a9a9a, 0xfe9a9a9a, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xfe9a9a9a, 0xff9a9a9a, 0xfe9a9a9a, 0xff989898, 0xff979797, 0xfe979797, 0xff939393, 0xfe929292, 0xfe8f8f8f, 0xff8b8b8b, 0xff888888, 0xff868686, 0xff838383, 0xff828282, 0xff818181, 0xff7f7f7f, 0xff808080, 0xff7f7f7f, 0xff7f7f7f, 0xfe808080, 0xff808080, 0xff808080, 0xff828282, 0xff838383, 0xff858585, 0xff888888, 0xff8b8b8b, 0xff8e8e8e, 0xfe929292, 0xfe959595, 0xff969696, 0xfe989898, 0xff989898, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xfe9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff9a9a9a, 0xfe9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xfe9a9a9a, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xfe9a9a9a, 0xfe9a9a9a, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff999999, 0xff9a9a9a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfe999999, 0xfe999999, 0xff999999, 0xfe9a9a9a, 0xfe999999, 0xfe999999, 0xff989898, 0xfe999999, 0xfe999999, 0xfe999999, 0xff989898, 0xff989898, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xfe999999, 0xff999999, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff989898, 0xff999999, 0xff989898, 0xfe999999, 0xfe999999, 0xff999999, 0xff999999, 0xfe999999, 0xff999999, 0xfe999999, 0xfe999999, 0xff999999, 0xff989898, 0xff999999, 0xff989898, 0xfe999999, 0xff999999, 0xff999999, 0xfe999999, 0xfe999999, 0xff999999, 0xff989898, 0xfe999999, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff989898, 0xff999999, 0xfe999999, 0xff999999, 0xff999999, 0xff999999, 0xff989898, 0xff979797, 0xff959595, 0xfe959595, 0xff929292, 0xff909090, 0xff8d8d8d, 0xff8a8a8a, 0xff888888, 0xfe878787, 0xff848484, 0xff838383, 0xff838383, 0xff828282, 0xfe838383, 0xff828282, 0xff838383, 0xfe838383, 0xff838383, 0xff848484, 0xff858585, 0xff888888, 0xff8a8a8a, 0xff8c8c8c, 0xff8f8f8f, 0xff929292, 0xfe959595, 0xff959595, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff999999, 0xff989898, 0xfe999999, 0xff999999, 0xff999999, 0xfe999999, 0xfe999999, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xfe999999, 0xfe9a9a9a, 0xff999999, 0xfe999999, 0xff989898, 0xfe9a9a9a, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff999999, 0xfe999999, 0xfe999999, 0xff999999, 0xff999999, 0xff989898, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff989898, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xfe9a9a9a, 0xff989898, 0xfe999999, 0xfe9a9a9a, 0xfe999999, 0xff999999, 0xff999999, 0xff989898, 0xff999999, 0xff989898, 0xff999999, 0xff989898, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff999999, 0xff989898, 0xff989898, 0xff999999, 0xff989898, 0xff989898, 0xff999999, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff979797, 0xff979797, 0xff959595, 0xfe959595, 0xff939393, 0xff909090, 0xff8e8e8e, 0xff8c8c8c, 0xff8a8a8a, 0xfe898989, 0xff888888, 0xff868686, 0xfe878787, 0xff868686, 0xff858585, 0xff858585, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff888888, 0xff8a8a8a, 0xff8c8c8c, 0xff8e8e8e, 0xff909090, 0xff939393, 0xff949494, 0xfe969696, 0xff969696, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xfe989898, 0xfe999999, 0xff989898, 0xff999999, 0xff989898, 0xff989898, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff979797, 0xfe989898, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff989898, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff989898, 0xfe989898, 0xff989898, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff989898, 0xff979797, 0xfe989898, 0xff989898, 0xff979797, 0xff989898, 0xfe989898, 0xff979797, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff989898, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff989898, 0xff979797, 0xff979797, 0xff989898, 0xff979797, 0xff979797, 0xff979797, 0xff969696, 0xfe979797, 0xfe959595, 0xff939393, 0xff929292, 0xff909090, 0xff8e8e8e, 0xff8d8d8d, 0xff8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff898989, 0xfe8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8d8d8d, 0xff8e8e8e, 0xfe919191, 0xff929292, 0xff939393, 0xff959595, 0xff959595, 0xfe979797, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff989898, 0xff979797, 0xff989898, 0xff979797, 0xff979797, 0xff979797, 0xff989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff989898, 0xfe989898, 0xff979797, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff989898, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfe979797, 0xff969696, 0xfe979797, 0xff969696, 0xff979797, 0xfe979797, 0xff979797, 0xff979797, 0xff969696, 0xfe979797, 0xff969696, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xff969696, 0xff979797, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xff979797, 0xff969696, 0xfe989898, 0xff969696, 0xff979797, 0xff979797, 0xfe979797, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xfe979797, 0xff979797, 0xff969696, 0xff969696, 0xfe979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff969696, 0xff969696, 0xff979797, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff959595, 0xff959595, 0xff949494, 0xff929292, 0xff929292, 0xff909090, 0xff8f8f8f, 0xff8e8e8e, 0xff8d8d8d, 0xfe8e8e8e, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff909090, 0xff929292, 0xff939393, 0xfe959595, 0xff959595, 0xff959595, 0xff969696, 0xff979797, 0xff969696, 0xff969696, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xff979797, 0xfe979797, 0xff979797, 0xff969696, 0xfe979797, 0xff969696, 0xff969696, 0xff979797, 0xfe979797, 0xff979797, 0xff969696, 0xff979797, 0xff969696, 0xff979797, 0xfe979797, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe979797, 0xff979797, 0xff969696, 0xff969696, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe979797, 0xff979797, 0xff969696, 0xfe979797, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff979797, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfe969696, 0xfe979797, 0xff969696, 0xfe969696, 0xff959595, 0xff969696, 0xff969696, 0xff959595, 0xfe979797, 0xff969696, 0xff959595, 0xff969696, 0xff969696, 0xff959595, 0xff969696, 0xff969696, 0xff959595, 0xfe969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff959595, 0xff969696, 0xff959595, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xff959595, 0xff969696, 0xfe969696, 0xfe969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xff959595, 0xff969696, 0xff959595, 0xfe979797, 0xff969696, 0xfe979797, 0xfe969696, 0xff949494, 0xfe949494, 0xfe949494, 0xff929292, 0xff919191, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xfe909090, 0xff8f8f8f, 0xff909090, 0xff919191, 0xff919191, 0xff929292, 0xff939393, 0xff949494, 0xfe959595, 0xfe969696, 0xff969696, 0xfe979797, 0xfe969696, 0xff969696, 0xff969696, 0xfe969696, 0xfe969696, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff959595, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff959595, 0xff959595, 0xff969696, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff959595, 0xff969696, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe959595, 0xff959595, 0xfe969696, 0xfe969696, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe959595, 0xff949494, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe969696, 0xfe969696, 0xff959595, 0xfe959595, 0xff959595, 0xff959595, 0xfe959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe969696, 0xff959595, 0xfe959595, 0xff959595, 0xfe969696, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff969696, 0xff959595, 0xff949494, 0xfe959595, 0xff959595, 0xff959595, 0xff959595, 0xff969696, 0xff949494, 0xff949494, 0xff949494, 0xff939393, 0xff939393, 0xfe939393, 0xff919191, 0xff919191, 0xfe929292, 0xfe919191, 0xff909090, 0xff919191, 0xff909090, 0xff909090, 0xff909090, 0xff919191, 0xff909090, 0xff919191, 0xff919191, 0xff929292, 0xff929292, 0xff939393, 0xff949494, 0xff949494, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff969696, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff949494, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe959595, 0xff959595, 0xfe969696, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe969696, 0xff959595, 0xfe959595, 0xff959595, 0xff959595, 0xff969696, 0xfe959595, 0xff959595, 0xff959595, 0xff959595, 0xfe969696, 0xfe959595, 0xff959595, 0xfe959595, 0xfe959595, 0xff959595, 0xfe969696, 0xff959595, 0xff959595, 0xff969696, 0xff959595, 0xfe969696, 0xff959595, 0xff959595, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff949494, 0xfe959595, 0xff949494, 0xfe959595, 0xfe959595, 0xfe959595, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xfe959595, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xfe959595, 0xff939393, 0xff939393, 0xff929292, 0xff939393, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff959595, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff959595, 0xff949494, 0xfe959595, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff949494, 0xff959595, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff949494, 0xff939393, 0xfe949494, 0xff939393, 0xff949494, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xff939393, 0xfe949494, 0xff949494, 0xff939393, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xfe949494, 0xff949494, 0xff949494, 0xfe949494, 0xfe949494, 0xff949494, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xfe949494, 0xff939393, 0xff949494, 0xff939393, 0xff949494, 0xfe949494, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xfe949494, 0xff939393, 0xff949494, 0xff949494, 0xff939393, 0xfe949494, 0xff949494, 0xff949494, 0xfe949494, 0xff949494, 0xff949494, 0xff949494, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xfe949494, 0xff949494, 0xff949494, 0xff949494, 0xfe949494, 0xff949494, 0xff949494, 0xfe949494, 0xff939393, 0xfe949494, 0xff929292, 0xff939393, 0xff939393, 0xfe949494, 0xff929292, 0xff929292, 0xfe949494, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xfe949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff939393, 0xff949494, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff949494, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xff949494, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xff939393, 0xff949494, 0xfe949494, 0xff939393, 0xfe949494, 0xff939393, 0xff949494, 0xfe949494, 0xff949494, 0xff949494, 0xff939393, 0xff949494, 0xfe949494, 0xff939393, 0xff949494, 0xfe949494, 0xfe949494, 0xff939393, 0xfe949494, 0xff939393, 0xff949494, 0xff949494, 0xff939393, 0xfe949494, 0xfe949494, 0xff949494, 0xff949494, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xef939393, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xff929292, 0xff929292, 0xff939393, 0xfe939393, 0xff929292, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff929292, 0xff939393, 0xfe939393, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff929292, 0xfe939393, 0xff929292, 0xff939393, 0xff939393, 0xfe939393, 0xfe939393, 0xff929292, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xfe949494, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xfe949494, 0xff929292, 0xff939393, 0xff939393, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xef929292, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xdf929292, 0xff929292, 0xfe939393, 0xfe939393, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xfe939393, 0xff939393, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xfe929292, 0xff929292, 0xff929292, 0xcf939393, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xaf929292, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xfe929292, 0xff919191, 0xff919191, 0xfe929292, 0xfe929292, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xfe929292, 0xff919191, 0xff919191, 0xfe929292, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xff919191, 0xfe929292, 0xff929292, 0xff929292, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff929292, 0xff929292, 0xfe929292, 0xff929292, 0xff929292, 0xff919191, 0xfe929292, 0xff929292, 0xff929292, 0xff919191, 0xff919191, 0xff929292, 0xff929292, 0xff919191, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xff919191, 0xff919191, 0xfe919191, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff919191, 0xfe929292, 0xfe929292, 0xff929292, 0xff929292, 0xfe929292, 0xff919191, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff929292, 0xfe919191, 0xfe929292, 0xfe929292, 0xff929292, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff919191, 0xff919191, 0xff929292, 0xfe929292, 0xff919191, 0xfe929292, 0xff919191, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff929292, 0xfe929292, 0xff919191, 0xff929292, 0xff919191, 0xb0929292, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x70929292, 0xff919191, 0xff919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff919191, 0xff919191, 0xfe919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff909090, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff909090, 0xff919191, 0xfe919191, 0xff919191, 0xff919191, 0xff909090, 0xff919191, 0xff909090, 0xff919191, 0xff919191, 0xfe919191, 0xff909090, 0xfe919191, 0xfe919191, 0xff919191, 0xff909090, 0xff909090, 0xff919191, 0xff909090, 0xfe919191, 0xff919191, 0xff909090, 0xff919191, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xfe919191, 0xff909090, 0xff919191, 0xff919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xfe919191, 0xfe919191, 0xff909090, 0xff909090, 0xff919191, 0xff919191, 0xfe919191, 0xff909090, 0xff919191, 0xff909090, 0xff909090, 0xfe919191, 0xfe919191, 0xff909090, 0xff909090, 0xfe919191, 0xff919191, 0xfe919191, 0xfe919191, 0xff919191, 0xff909090, 0xff919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff919191, 0xff909090, 0xff909090, 0xfe919191, 0xfe919191, 0xfe919191, 0xfe919191, 0xfe919191, 0xff909090, 0xff919191, 0xff919191, 0xff919191, 0xff909090, 0xff909090, 0xff909090, 0xff919191, 0xff919191, 0xff909090, 0xff919191, 0xff919191, 0xff909090, 0xfe919191, 0xff909090, 0xff919191, 0xff919191, 0xff919191, 0xfe919191, 0xfe919191, 0xff909090, 0xfe929292, 0xff909090, 0xff909090, 0xff919191, 0xfe919191, 0xff909090, 0xff909090, 0xfe919191, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xff919191, 0xfe919191, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0x80919191, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x408f8f8f, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xfe909090, 0xfe919191, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xfe919191, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xfe919191, 0xff909090, 0xff8f8f8f, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xfe919191, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff909090, 0xff8f8f8f, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xfe909090, 0xff909090, 0xff909090, 0x408f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xee909090, 0xfe909090, 0xfe8f8f8f, 0xff909090, 0xfe909090, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xfe909090, 0xfe8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xfe909090, 0xfe909090, 0xff8f8f8f, 0xfe8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff909090, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xfe8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff909090, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xfe909090, 0xff909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff909090, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xfe909090, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xfe909090, 0xfe8f8f8f, 0xfe909090, 0xfe909090, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xdf909090, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x808f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0x9f909090, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x108f8f8f, 0xff8e8e8e, 0xfe8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8d8d8d, 0xff8e8e8e, 0xfe8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xfe8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xfe8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xfe8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xfe8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0x208f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x8f8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8e8e8e, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8e8e8e, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xfe8e8e8e, 0xff8d8d8d, 0xfe8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8e8e8e, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0x9f8f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x108f8f8f, 0xef8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8c8c8c, 0xff8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xdf8d8d8d, 0x20878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x708b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xfe8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xfe8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xfe8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0x5f8c8c8c, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x908a8a8a, 0xfe8b8b8b, 0xfe8c8c8c, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xfe8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0x908a8a8a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xbf8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xfe8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xfe8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xfe8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xcf8a8a8a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x108f8f8f, 0xcf898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xfe8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xfe8a8a8a, 0xff8a8a8a, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xfe8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff8a8a8a, 0xff898989, 0xfe8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xff898989, 0xfe8a8a8a, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xbf8a8a8a, 0x108f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x90888888, 0xfe898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xff898989, 0xfe898989, 0xff888888, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xfe898989, 0xff888888, 0xfe898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xfe898989, 0xff898989, 0xff888888, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xfe898989, 0xfe898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xfe898989, 0xff898989, 0xfe8a8a8a, 0xfe898989, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff888888, 0xff888888, 0xff888888, 0xff898989, 0xff888888, 0xfe898989, 0xff888888, 0xfe898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff888888, 0xff898989, 0xff898989, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xfe898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0x90878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x60878787, 0xdf888888, 0xff888888, 0xff888888, 0xfe888888, 0xfe898989, 0xff888888, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xfe888888, 0xff888888, 0xff878787, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff878787, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff878787, 0xff888888, 0xff888888, 0xfe898989, 0xfe888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff898989, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff878787, 0xff878787, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xfe898989, 0xff888888, 0xfe898989, 0xff888888, 0xef898989, 0x70868686, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20878787, 0xa0878787, 0xfe878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff888888, 0xff888888, 0xff878787, 0xff878787, 0xff878787, 0xff888888, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xff888888, 0xff878787, 0xff888888, 0xff878787, 0xfe878787, 0xff878787, 0xfe888888, 0xfe878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff888888, 0xff878787, 0xfe888888, 0xfe888888, 0xff878787, 0xfe878787, 0xfe888888, 0xff878787, 0xfe888888, 0xff878787, 0xff888888, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xfe888888, 0xfe888888, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xfe878787, 0xfe888888, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xfe878787, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xfe888888, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0x90878787, 0x108f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20808080, 0x9f878787, 0xdf878787, 0xff878787, 0xff868686, 0xff878787, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xfe878787, 0xfe878787, 0xff868686, 0xff868686, 0xff868686, 0xfe878787, 0xff868686, 0xff868686, 0xff878787, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff868686, 0xfe878787, 0xff868686, 0xfe878787, 0xff878787, 0xfe878787, 0xff878787, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff868686, 0xfe878787, 0xff868686, 0xff878787, 0xff878787, 0xff878787, 0xfe878787, 0xfe878787, 0xfe878787, 0xff868686, 0xff878787, 0xfe878787, 0xff878787, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xff868686, 0xff878787, 0xfe878787, 0xfe878787, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff878787, 0xfe878787, 0xff878787, 0xff878787, 0xfe878787, 0xff868686, 0xff878787, 0xff868686, 0xff868686, 0xff878787, 0xff868686, 0xff878787, 0xff868686, 0xff878787, 0xff868686, 0xff868686, 0xfe878787, 0xff868686, 0xfe878787, 0xfe878787, 0xff878787, 0xff868686, 0xfe878787, 0xff868686, 0xff868686, 0xff878787, 0xff868686, 0xfe878787, 0xff878787, 0xff868686, 0xff878787, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xff868686, 0xff878787, 0xef888888, 0x80878787, 0x108f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x40878787, 0x80858585, 0xaf888888, 0xcf868686, 0xef868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff858585, 0xfe868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xfe878787, 0xff868686, 0xff868686, 0xff868686, 0xfe868686, 0xff868686, 0xff858585, 0xff868686, 0xfe868686, 0xff858585, 0xff868686, 0xfe868686, 0xfe868686, 0xfe868686, 0xff868686, 0xff868686, 0xfe868686, 0xff868686, 0xff868686, 0xfe868686, 0xfe868686, 0xfe878787, 0xff868686, 0xfe868686, 0xfe878787, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff858585, 0xff858585, 0xfe868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xfe868686, 0xfe868686, 0xff858585, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xfe868686, 0xfe878787, 0xff868686, 0xff868686, 0xfe868686, 0xff868686, 0xff868686, 0xfe868686, 0xff858585, 0xfe868686, 0xff868686, 0xff868686, 0xff868686, 0xfe878787, 0xff868686, 0xff868686, 0xfe878787, 0xff858585, 0xff868686, 0xff858585, 0xff858585, 0xfe868686, 0xff858585, 0xff858585, 0xff868686, 0xff868686, 0xfe868686, 0xff868686, 0xfe868686, 0xff868686, 0xff868686, 0xfe868686, 0xff858585, 0xff868686, 0xfe868686, 0xff858585, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff858585, 0xff868686, 0xff868686, 0xff858585, 0xff868686, 0xef888888, 0xdf878787, 0xaf868686, 0x70868686, 0x40878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF +}; diff --git a/Private/NewBoot/Source/BootloaderRsrc.rsrc b/Private/NewBoot/Source/BootloaderRsrc.rsrc index f77a4079..e8d89e9a 100644 --- a/Private/NewBoot/Source/BootloaderRsrc.rsrc +++ b/Private/NewBoot/Source/BootloaderRsrc.rsrc @@ -1,6 +1,6 @@ #include "../../CompilerKit/Version.hxx" -1 ICON "../../Root/Boot/boot-logo.ico" +1 ICON "../../Root/Boot/Icons/boot-logo.ico" 1 VERSIONINFO FILEVERSION 1,0,0,0 @@ -11,7 +11,7 @@ BEGIN BLOCK "080904E4" BEGIN VALUE "CompanyName", "Mahrouss-Logic" - VALUE "FileDescription", "NewOS multi-platform bootloader." + VALUE "FileDescription", "New OS multi-platform bootloader." VALUE "FileVersion", BOOTLOADER_VERSION VALUE "InternalName", "NewBoot" VALUE "LegalCopyright", "Copyright Mahrouss-Logic, all rights reserved." diff --git a/Private/NewBoot/Source/CDROM/.NEWDEV b/Private/NewBoot/Source/CDROM/.NEWDEV deleted file mode 100644 index d5d2badf..00000000 --- a/Private/NewBoot/Source/CDROM/.NEWDEV +++ /dev/null @@ -1,2 +0,0 @@ -[POWER_MANAGEMENT] -ENFORCE_ACPI=YES
\ No newline at end of file diff --git a/Private/NewBoot/Source/CDROM/SplashScreen.fmt b/Private/NewBoot/Source/CDROM/SplashScreen.fmt new file mode 100644 index 00000000..e47a66a6 --- /dev/null +++ b/Private/NewBoot/Source/CDROM/SplashScreen.fmt @@ -0,0 +1,6 @@ +Welcome to NeWS + +Brought to you by: +* MicroKernel, Bootloader: Amlal EL Mahrouss. + +Copyright Mahrouss-Logic, all rights reserved. diff --git a/Private/NewBoot/Source/HEL/AMD64/BootATA.cxx b/Private/NewBoot/Source/HEL/AMD64/BootATA.cxx index 2a2852fb..4e41ba2e 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootATA.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootATA.cxx @@ -72,7 +72,7 @@ ATAInit_Retry: if (statRdy & ATA_SR_ERR) { writer.Write( - L"NewOS: ATA: Select error, not an IDE based hard-drive.\r\n"); + L"New Boot: ATA: Select error, not an IDE based hard-drive.\r\n"); return false; } @@ -108,21 +108,21 @@ ATAInit_Retry: /* differentiate ATA, ATAPI, SATA and SATAPI */ if (cl == 0x14 && ch == 0xEB) { - writer.Write(L"NewOS: PATAPI drive detected.\r\n"); + writer.Write(L"New Boot: PATAPI drive detected.\r\n"); kATADeviceType = kATADevicePATA_PI; } if (cl == 0x69 && ch == 0x96) { - writer.Write(L"NewOS: SATAPI drive detected.\r\n"); + writer.Write(L"New Boot: SATAPI drive detected.\r\n"); kATADeviceType = kATADeviceSATA_PI; } if (cl == 0x0 && ch == 0x0) { - writer.Write(L"NewOS: PATA drive detected.\r\n"); + writer.Write(L"New Boot: PATA drive detected.\r\n"); kATADeviceType = kATADevicePATA; } if (cl == 0x3c && ch == 0xc3) { - writer.Write(L"NewOS: SATA drive detected.\r\n"); + writer.Write(L"New Boot: SATA drive detected.\r\n"); kATADeviceType = kATADeviceSATA; } @@ -159,7 +159,7 @@ Void boot_ata_read(UInt64 Lba, UInt16 IO, UInt8 Master, CharacterTypeUTF8* Buf, ++IndexOff; while ((In8(ATA_COMMAND(IO))) & ATA_SR_BSY) boot_ata_wait_io(IO); - + byte = In16(IO + ATA_REG_DATA); Buf[IndexOff] = byte; } @@ -213,7 +213,7 @@ BootDeviceATA::BootDeviceATA() noexcept { BTextWriter writer; - writer.Write(L"NewOS: Drive is OnLine.\r\n"); + writer.Write(L"New Boot: Drive is OnLine.\r\n"); } } /** diff --git a/Private/NewBoot/Source/HEL/AMD64/BootEPM.cxx b/Private/NewBoot/Source/HEL/AMD64/BootEPM.cxx deleted file mode 100644 index 0d678dc1..00000000 --- a/Private/NewBoot/Source/HEL/AMD64/BootEPM.cxx +++ /dev/null @@ -1,119 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -#include <BootKit/BootKit.hxx> -#include <FSKit/NewFS.hxx> - -#define kEPMSectorSize kATASectorSize -#define kEPMSwapSize MIB(16) -#define kEPMGPTStartLba (30) - -// {310E1FC7-2060-425D-BE7B-75A37CC679BC} -STATIC const BlockGUID kEPMGuid = { - 0x310e1fc7, - 0x2060, - 0x425d, - {0xbe, 0x7b, 0x75, 0xa3, 0x7c, 0xc6, 0x79, 0xbc}}; - -/// @brief Write epm partition to disk. -/// @param namePart partition name -/// @param namePartLength length of name -/// @param bootDev disk interface. -/// @return -EXTERN_C Boolean boot_write_epm_partition(const Char* namePart, SizeT namePartLength, - BootDevice* bootDev) { - if (namePartLength > kEPMNameLength || !namePart) return No; - if (!bootDev) return No; - - bootDev->Leak().mBase = kEPMGPTStartLba; - bootDev->Leak().mSize = kEPMSectorSize; - - Char buf[kEPMSectorSize] = {0}; - - bootDev->Read(buf, 1); - - BTextWriter writer; - - writer.Write(L"NewOS: Checking for a EPM partition...\r\n"); - - for (SizeT index = 0; index < kEPMMagicLength; ++index) { - if (buf[index] != kEPMMagic[index]) { - writer.Write(L"NewOS: Writing a EPM partition...\r\n"); - - BootBlockType* bootBlock = (BootBlockType*)buf; - - bootBlock->Version = kEPMRevision; - bootBlock->NumBlocks = 2; - - for (SizeT i = 0; i < kEPMNameLength; ++i) { - bootBlock->Magic[i] = kEPMMagic[i]; - } - - for (SizeT i = 0; i < namePartLength; ++i) { - bootBlock->Name[i] = namePart[i]; - } - - bootBlock->LbaStart = - sizeof(BootBlockType) + (sizeof(PartitionBlockType) * kEPMMaxBlks); - - bootBlock->SectorSz = kEPMSectorSize; - - bootBlock->Uuid = kEPMGuid; - - PartitionBlock* partBlock = (PartitionBlock*)(buf + sizeof(BootBlock)); - - const char* fsName = "NewFS"; - int fsNameLength = 6; - - for (SizeT i = 0; i < fsNameLength; ++i) { - partBlock->Fs[i] = fsName[i]; - } - - partBlock->Version = kEPMNewOS; - - const char* partNameSystem = "System HD"; - int partNameLength = 10; - - for (SizeT i = 0; i < partNameLength; ++i) { - partBlock->Name[i] = partNameSystem[i]; - } - - partBlock->SectorSz = kEPMSectorSize; - partBlock->LbaStart = kEPMStartPartitionBlk + kEPMSwapSize; - partBlock->Version = kNewFSVersionInteger; - partBlock->Kind = kNewFSPartitionTypeStandard; - partBlock->LbaEnd = 0UL; ///! grows on the disk. - - PartitionBlock* swapBlock = (PartitionBlock*)(buf + sizeof(BootBlock) + sizeof(PartitionBlock)); - - for (SizeT i = 0; i < fsNameLength; ++i) { - swapBlock->Fs[i] = fsName[i]; - } - - swapBlock->Version = kEPMNewOS; - - const char *partNameSwap = "Swap HD"; - partNameLength = 8; - - for (SizeT i = 0; i < partNameLength; ++i) { - swapBlock->Name[i] = partNameSwap[i]; - } - - swapBlock->SectorSz = kEPMSectorSize; - swapBlock->LbaStart = kEPMStartPartitionBlk; - swapBlock->Version = kNewFSVersionInteger; - swapBlock->Kind = kNewFSPartitionTypePage; - swapBlock->LbaEnd = kEPMSwapSize; /// 4 MIB swap partition. - - bootDev->Write(buf, 1); - - return No; - } - } - - writer.Write(L"NewOS: Partition found, everything's OK.\r\n"); - return Yes; -}
\ No newline at end of file diff --git a/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx b/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx index b31f37de..3a445d61 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx @@ -3,7 +3,7 @@ Copyright Mahrouss Logic File: FileReader.cxx - Purpose: NewBoot FileReader, + Purpose: New Boot FileReader, Read complete file and store it in a buffer. ------------------------------------------- */ @@ -25,7 +25,8 @@ /*** @brief File Reader constructor. */ -BFileReader::BFileReader(const CharacterTypeUTF16* path, EfiHandlePtr ImageHandle) { +BFileReader::BFileReader(const CharacterTypeUTF16* path, + EfiHandlePtr ImageHandle) { if (path != nullptr) { SizeT index = 0UL; for (; path[index] != L'\0'; ++index) { @@ -46,12 +47,12 @@ BFileReader::BFileReader(const CharacterTypeUTF16* path, EfiHandlePtr ImageHandl EfiGUID guidImg = EfiGUID(EFI_LOADED_IMAGE_PROTOCOL_GUID); if (BS->HandleProtocol(ImageHandle, &guidImg, (void**)&img) != kEfiOk) { - mWriter.Write(L"NewOS: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); + mWriter.Write(L"New Boot: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); this->mErrorCode = kNotSupported; } if (BS->HandleProtocol(img->DeviceHandle, &guidEfp, (void**)&efp) != kEfiOk) { - mWriter.Write(L"NewOS: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); + mWriter.Write(L"New Boot: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); this->mErrorCode = kNotSupported; return; } @@ -59,7 +60,7 @@ BFileReader::BFileReader(const CharacterTypeUTF16* path, EfiHandlePtr ImageHandl /// Start doing disk I/O if (efp->OpenVolume(efp, &rootFs) != kEfiOk) { - mWriter.Write(L"NewOS: Fetch-Protocol: No-Such-Volume").Write(L"\r\n"); + mWriter.Write(L"New Boot: Fetch-Protocol: No-Such-Volume").Write(L"\r\n"); this->mErrorCode = kNotSupported; return; } @@ -68,7 +69,7 @@ BFileReader::BFileReader(const CharacterTypeUTF16* path, EfiHandlePtr ImageHandl if (rootFs->Open(rootFs, &kernelFile, mPath, kEFIFileRead, kEFIReadOnly) != kEfiOk) { - mWriter.Write(L"NewOS: Fetch-Protocol: No-Such-Path: ") + mWriter.Write(L"New Boot: Fetch-Protocol: No-Such-Path: ") .Write(mPath) .Write(L"\r\n"); this->mErrorCode = kNotSupported; @@ -88,24 +89,19 @@ BFileReader::~BFileReader() { this->mFile = nullptr; } - if (this->mBlob) - BS->FreePool(mBlob); + if (this->mBlob) BS->FreePool(mBlob); BSetMem(this->mPath, 0, kPathLen); } /** @brief this reads all of the buffer. - @param ImageHandle used internally. + @param until read until size is reached. */ -Void BFileReader::ReadAll() { - /// Allocate Handover page. - - if (this->mErrorCode != kOperationOkay) return; - +Void BFileReader::ReadAll(SizeT until, SizeT chunk) { if (mBlob == nullptr) { - if (auto err = BS->AllocatePool(EfiLoaderCode, mSizeFile, - (VoidPtr*)&mBlob) != kEfiOk) { + if (auto err = BS->AllocatePool(EfiLoaderCode, until, + (VoidPtr*)&mBlob) != kEfiOk) { mWriter.Write(L"*** EFI-Code: ").Write(err).Write(L" ***\r\n"); EFI::RaiseHardError(L"NewBoot_PageError", L"Allocation error."); } @@ -113,8 +109,34 @@ Void BFileReader::ReadAll() { mErrorCode = kNotSupported; - if (mFile->Read(mFile, &mSizeFile, (VoidPtr)((UIntPtr)mBlob)) != kEfiOk) - return; + UInt64 bufSize = chunk; + UInt64 szCnt = 0; + UInt64 curSz = 0; + + while (curSz < until) { + if (mFile->Read(mFile, &bufSize, (VoidPtr)((UIntPtr)mBlob + curSz)) != kEfiOk) { + break; + } + + szCnt += bufSize; + curSz += bufSize; + if (bufSize == 0) + break; + } + + mSizeFile = curSz; mErrorCode = kOperationOkay; } + +/// @brief error code getter. +/// @return the error code. +Int32& BFileReader::Error() { return mErrorCode; } + +/// @brief blob getter. +/// @return the blob. +VoidPtr BFileReader::Blob(){ return mBlob; } + +/// @breif Size getter. +/// @return the size of the file. +UInt64& BFileReader::Size() { return mSizeFile; } diff --git a/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx b/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx index f5bb3ce8..638fe37a 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx @@ -5,52 +5,61 @@ ------------------------------------------- */ #include <BootKit/BootKit.hxx> +#include <BootKit/Rsrc/Driver.rsrc> +#include <Builtins/Toolbox/Toolbox.hxx> #include <KernelKit/MSDOS.hpp> #include <KernelKit/PE.hxx> #include <NewKit/Ref.hpp> -#ifdef __x86_64__ -#include <HALKit/AMD64/HalPageAlloc.hpp> -#else -#error This CPU is unknown. -#endif // ifdef __x86_64__ +/** Graphics related. */ -#define kMaxBufSize 256 +STATIC EfiGraphicsOutputProtocol* kGop = nullptr; +STATIC UInt16 kStride = 0U; +STATIC EfiGUID kGopGuid; -/// @brief Bootloader main type. -typedef void (*bt_main_type)(HEL::HandoverInformationHeader* handoverInfo); +/** + @brief Finds and stores the GOP. +*/ + +STATIC Void CheckAndFindFramebuffer() noexcept { + kGopGuid = EfiGUID(EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID); + kGop = nullptr; + + extern EfiBootServices* BS; + + BS->LocateProtocol(&kGopGuid, nullptr, (VoidPtr*)&kGop); + + kStride = 4; +} + +/// @brief check the BootDevice if suitable. +STATIC Bool CheckBootDevice(BootDeviceATA& ataDev) { + if (ataDev.Leak().mErr) return false; + return true; +} /// @brief Main EFI entrypoint. /// @param ImageHandle Handle of this image. /// @param SystemTable The system table of it. /// @return -EFI_EXTERN_C EFI_API Int EfiMain(EfiHandlePtr ImageHandle, - EfiSystemTable* SystemTable) { - InitEFI(SystemTable); // Init the EFI library. - InitGOP(); // Init the GOP. +EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, + EfiSystemTable* SystemTable) { + InitEFI(SystemTable); ///! Init the EFI library. + CheckAndFindFramebuffer(); ///! Init the GOP. BTextWriter writer; + /// Splash screen stuff - writer.Write(L"Mahrouss-Logic (R) NewOS: ").Write(BVersionString::Shared()); + writer.Write(L"Mahrouss-Logic (R) New Boot: ") + .Write(BVersionString::Shared()); - writer.Write(L"\r\nNewOS: Firmware Vendor: ") + writer.Write(L"\r\nNewBoot: Firmware Vendor: ") .Write(SystemTable->FirmwareVendor) .Write(L"\r\n"); BootDeviceATA ataDev; - Boolean isEpmFound = No; - - /// if ATA drive is initialized and EFI vendor supports an EPM scheme. - /// @EDK tells our OS that it supports EPM scheme as well. - if (ataDev) { - Char namePart[kEPMNameLength] = {"NewBoot"}; - /// tries to read an EPM block, or writes one if it fails. - isEpmFound = boot_write_epm_partition(namePart, kEPMNameLength, &ataDev); - } else { - writer.Write(L"NewOS: This computer can't work with NewOS.\r\n"); - return kEfiFail; - } + Boolean isGptFound = No; UInt32 MapKey = 0; UInt32* SizePtr = nullptr; @@ -60,7 +69,7 @@ EFI_EXTERN_C EFI_API Int EfiMain(EfiHandlePtr ImageHandle, if (BS->AllocatePool(EfiLoaderData, sizeof(UInt32), (VoidPtr*)&SizePtr) != kEfiOk) { - EFI::RaiseHardError(L"__bad_alloc", L"NewBoot ran out of memory!"); + EFI::RaiseHardError(L"Bad-Alloc", L"New Boot ran out of memory!"); } /**** @@ -73,23 +82,31 @@ EFI_EXTERN_C EFI_API Int EfiMain(EfiHandlePtr ImageHandle, if (BS->AllocatePool(EfiLoaderData, sizeof(EfiMemoryDescriptor), (VoidPtr*)&Descriptor) != kEfiOk) { - EFI::RaiseHardError(L"__bad_alloc", L"NewBoot ran out of memory!"); + EFI::RaiseHardError(L"Bad-Alloc", L"New Boot ran out of memory!"); } - /**** - * - * Get machine memory map. - * - */ + HEL::HandoverInformationHeader* handoverHdrPtr = nullptr; - while (BS->GetMemoryMap(SizePtr, Descriptor, &MapKey, &SzDesc, &RevDesc) != - kEfiOk) - ; + for (SizeT indexVT = 0; indexVT < SystemTable->NumberOfTableEntries; + ++indexVT) { + volatile Char* vendorTable = reinterpret_cast<volatile Char*>( + SystemTable->ConfigurationTable[indexVT].VendorTable); - HEL::HandoverInformationHeader* handoverHdrPtr = nullptr; + if (vendorTable[0] == 'R' && vendorTable[1] == 'S' && + vendorTable[2] == 'D' && vendorTable[3] == ' ' && + vendorTable[4] == 'P' && vendorTable[5] == 'T' && + vendorTable[6] == 'R' && vendorTable[7] == ' ') { + handoverHdrPtr->f_HardwareTables.f_RsdPtr = (VoidPtr)vendorTable; - BS->AllocatePool(EfiLoaderData, sizeof(HEL::HandoverInformationHeader), - (VoidPtr*)&handoverHdrPtr); + break; + } + } + + handoverHdrPtr->f_Magic = kHandoverMagic; + handoverHdrPtr->f_Version = kHandoverVersion; + + BCopyMem(handoverHdrPtr->f_FirmwareVendorName, SystemTable->FirmwareVendor, + handoverHdrPtr->f_FirmwareVendorLen); handoverHdrPtr->f_GOP.f_The = kGop->Mode->FrameBufferBase; handoverHdrPtr->f_GOP.f_Width = kGop->Mode->Info->VerticalResolution; @@ -98,58 +115,77 @@ EFI_EXTERN_C EFI_API Int EfiMain(EfiHandlePtr ImageHandle, handoverHdrPtr->f_GOP.f_PixelFormat = kGop->Mode->Info->PixelFormat; handoverHdrPtr->f_GOP.f_Size = kGop->Mode->FrameBufferSize; - handoverHdrPtr->f_PhysicalStart = - reinterpret_cast<voidPtr>(Descriptor->PhysicalStart); - handoverHdrPtr->f_PhysicalSize = Descriptor->NumberOfPages; + ///! Finally draw bootloader screen. - handoverHdrPtr->f_VirtualStart = - reinterpret_cast<voidPtr>(Descriptor->VirtualStart); + auto kHandoverHeader = handoverHdrPtr; - handoverHdrPtr->f_VirtualSize = Descriptor->NumberOfPages; /* # of pages */ + ToolboxInitRsrc(); - handoverHdrPtr->f_FirmwareVendorLen = BStrLen(SystemTable->FirmwareVendor); + ToolboxDrawZone(RGB(FF, FF, FF), handoverHdrPtr->f_GOP.f_Height, + handoverHdrPtr->f_GOP.f_Width, 0, 0); - BCopyMem(handoverHdrPtr->f_FirmwareVendorName, SystemTable->FirmwareVendor, - handoverHdrPtr->f_FirmwareVendorLen); + ToolboxClearRsrc(); -#ifdef __DEBUG__ - writer.Write(L"NewOS: Fetching ACPI's 'RSD PTR'...").Write(L"\r\n"); -#endif + ToolboxDrawRsrc(Driver, DRIVER_HEIGHT, DRIVER_WIDTH, + (handoverHdrPtr->f_GOP.f_Width - DRIVER_HEIGHT) / 2, + (handoverHdrPtr->f_GOP.f_Height - DRIVER_HEIGHT) / 2); - for (SizeT indexVT = 0; indexVT < SystemTable->NumberOfTableEntries; - ++indexVT) { - volatile Char* vendorTable = reinterpret_cast<volatile Char*>( - SystemTable->ConfigurationTable[indexVT].VendorTable); + ToolboxClearRsrc(); - if (vendorTable[0] == 'R' && vendorTable[1] == 'S' && - vendorTable[2] == 'D' && vendorTable[3] == ' ' && - vendorTable[4] == 'P' && vendorTable[5] == 'T' && - vendorTable[6] == 'R' && vendorTable[7] == ' ') { - handoverHdrPtr->f_HardwareTables.f_RsdPtr = (VoidPtr)vendorTable; + BS->AllocatePool(EfiLoaderData, sizeof(HEL::HandoverInformationHeader), + (VoidPtr*)&handoverHdrPtr); -#ifdef __DEBUG__ - writer.Write(L"NewOS: Found ACPI's 'RSD PTR' table on this machine.") - .Write(L"\r\n"); -#endif + handoverHdrPtr->f_PhysicalStart = 0; + handoverHdrPtr->f_PhysicalSize = 0; - break; - } + EfiPhysicalAddress* whereAddress = + reinterpret_cast<EfiPhysicalAddress*>(kBootVirtualAddress); + + BS->AllocatePages(EfiAllocateType::AllocateAnyPages, + EfiMemoryType::EfiConventionalMemory, 1, whereAddress); + + handoverHdrPtr->f_VirtualStart = reinterpret_cast<voidPtr>(whereAddress); + + handoverHdrPtr->f_VirtualSize = Descriptor->NumberOfPages; /* # of pages */ + + handoverHdrPtr->f_FirmwareVendorLen = BStrLen(SystemTable->FirmwareVendor); + + BFileReader reader(L"SplashScreen.fmt", ImageHandle); + reader.ReadAll(512, 16); + + Char* buf = (Char*)reader.Blob(); + + for (SizeT i = 0; i < reader.Size(); ++i) { + if (buf[i] != '\n' && buf[i] != '\r') { + if (buf[i] == '*') { + writer.WriteCharacter('\t'); + } else { + writer.WriteCharacter(buf[i]); + } + } else + writer.Write(L"\r\n"); } - if (!isEpmFound) { - writer.Write(L"NewOS: No partition found for NewOS. (HCR-1000)\r\n"); + BFileReader kernelFile(L"NewKernel.exe", ImageHandle); + kernelFile.ReadAll(KIB(512), 4096); + + ExecOptionalHeaderPtr headerKind = (ExecOptionalHeaderPtr)rt_find_exec_header((DosHeaderPtr)kernelFile.Blob()); + + if (!headerKind) { + EFI::RaiseHardError(L"Bad-Exec", L"New Boot can't recognize this executable."); } - handoverHdrPtr->f_Magic = kHandoverMagic; - handoverHdrPtr->f_Version = kHandoverVersion; + BootMainKind main = (BootMainKind)nullptr; - writer.Write(L"Running NewOS...\r\n"); + if (!main) { + EFI::RaiseHardError(L"Bad-Exec", L"New Boot can't recognize this executable."); + } EFI::ExitBootServices(MapKey, ImageHandle); - /// TODO: Read catalog and read NewKernel.exe + main(handoverHdrPtr); EFI::Stop(); - return kEfiFail; + CANT_REACH(); } diff --git a/Private/NewBoot/Source/HEL/AMD64/BootPlatform.cxx b/Private/NewBoot/Source/HEL/AMD64/BootPlatform.cxx index 00f7bdd8..d0da09b7 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootPlatform.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootPlatform.cxx @@ -15,3 +15,36 @@ EXTERN_C void rt_sti() { asm volatile("sti"); } EXTERN_C void rt_cld() { asm volatile("cld"); } EXTERN_C void rt_std() { asm volatile("std"); } + +EXTERN_C void Out8(UInt16 port, UInt8 value) { + asm volatile("outb %%al, %1" : : "a"(value), "Nd"(port) : "memory"); +} + +EXTERN_C void Out16(UInt16 port, UInt16 value) { + asm volatile("outw %%ax, %1" : : "a"(value), "Nd"(port) : "memory"); +} + +EXTERN_C void Out32(UInt16 port, UInt32 value) { + asm volatile("outl %%eax, %1" : : "a"(value), "Nd"(port) : "memory"); +} + +EXTERN_C UInt8 In8(UInt16 port) { + UInt8 value; + asm volatile("inb %1, %%al" : "=a"(value) : "Nd"(port) : "memory"); + + return value; +} + +EXTERN_C UInt16 In16(UInt16 port) { + UInt16 value; + asm volatile("inw %%dx, %%ax" : "=a"(value) : "d"(port)); + + return value; +} + +EXTERN_C UInt32 In32(UInt16 port) { + UInt32 value; + asm volatile("inl %1, %%eax" : "=a"(value) : "Nd"(port) : "memory"); + + return value; +} diff --git a/Private/NewBoot/Source/HEL/AMD64/BootTextWriter.cxx b/Private/NewBoot/Source/HEL/AMD64/BootTextWriter.cxx index 7ccc37aa..2ebde023 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootTextWriter.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootTextWriter.cxx @@ -21,23 +21,27 @@ @brief puts wrapper over EFI ConOut. */ BTextWriter &BTextWriter::Write(const CharacterTypeUTF16 *str) { - if (*str == 0 || !str) return *this; +#ifdef __DEBUG__ + if (!str || *str == 0) return *this; ST->ConOut->OutputString(ST->ConOut, str); +#endif // ifdef __DEBUG__ return *this; } BTextWriter &BTextWriter::Write(const UChar *str) { - if (*str == 0 || !str) return *this; +#ifdef __DEBUG__ + if (!str || *str == 0) return *this; CharacterTypeUTF16 strTmp[2]; strTmp[1] = 0; - + for (size_t i = 0; str[i] != 0; i++) { strTmp[0] = str[i]; ST->ConOut->OutputString(ST->ConOut, strTmp); } +#endif // ifdef __DEBUG__ return *this; } @@ -46,22 +50,29 @@ BTextWriter &BTextWriter::Write(const UChar *str) { @brief putc wrapper over EFI ConOut. */ BTextWriter &BTextWriter::WriteCharacter(CharacterTypeUTF16 c) { +#ifdef __DEBUG__ EfiCharType str[2]; + str[0] = c; str[1] = 0; ST->ConOut->OutputString(ST->ConOut, str); +#endif // ifdef __DEBUG__ return *this; } BTextWriter &BTextWriter::Write(const Long &x) { +#ifdef __DEBUG__ this->Write(L"0x"); this->_Write(x); +#endif // ifdef __DEBUG__ + return *this; } BTextWriter &BTextWriter::_Write(const Long &x) { +#ifdef __DEBUG__ int y = x / 16; int h = x % 16; @@ -78,5 +89,7 @@ BTextWriter &BTextWriter::_Write(const Long &x) { const char NUMBERS[17] = "0123456789ABCDEF"; this->WriteCharacter(NUMBERS[h]); +#endif // ifdef __DEBUG__ + return *this; } diff --git a/Private/Servers/.gitkeep b/Private/NewBoot/Source/HEL/POWER/.gitkeep index e69de29b..e69de29b 100644 --- a/Private/Servers/.gitkeep +++ b/Private/NewBoot/Source/HEL/POWER/.gitkeep diff --git a/Private/NewBoot/Source/HEL/POWER/BootCoreBoot.S b/Private/NewBoot/Source/HEL/POWER/BootCoreBoot.S new file mode 100644 index 00000000..c611467d --- /dev/null +++ b/Private/NewBoot/Source/HEL/POWER/BootCoreBoot.S @@ -0,0 +1,34 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +.section .boot_hdr +.align 4 + +/* NewBoot boot header begin */ + +boot_hdr_mag: + .ascii "LX" +boot_hdr_name: + // it has to match ten bytes. + .asciz "NewBoot\0\0\0" +boot_hdr_ver: + .word 0x104 +boot_hdr_proc: + .long bootloader_start + +/* NewOS boot header end */ + +.extern bootloader_main +.extern bootloader_stack + +.globl bootloader_start +bootloader_start: + mflr 4 /* real address of .Laddr */ + lwz 0,(bootloader_stack-bootloader_start)(4) /* stack address location */ + mr 1,0 /* use user defined stack */ + + bl bootloader_main + blr diff --git a/Private/NewBoot/Source/HEL/PowerPC/BootEPM.cxx b/Private/NewBoot/Source/HEL/POWER/BootEPM.cxx index f088d73c..72276ef9 100644 --- a/Private/NewBoot/Source/HEL/PowerPC/BootEPM.cxx +++ b/Private/NewBoot/Source/HEL/POWER/BootEPM.cxx @@ -21,7 +21,7 @@ STATIC const BlockGUID kEPMGuid = { /// @param namePart partition name /// @param namePartLength length of name /// @param bootDev disk interface. -/// @return +/// @return EXTERN_C Boolean boot_write_epm_partition(const Char* namePart, SizeT namePartLength, BootDevice* bootDev) { if (namePartLength > kEPMNameLength || !namePart) return No; @@ -36,11 +36,11 @@ EXTERN_C Boolean boot_write_epm_partition(const Char* namePart, SizeT namePartLe BTextWriter writer; - writer.Write(L"NewOS: Checking for a EPM partition...\r\n"); + writer.Write(L"NewBoot: Checking for an EPM partition...\r\n"); for (SizeT index = 0; index < kEPMMagicLength; ++index) { if (buf[index] != kEPMMagic[index]) { - writer.Write(L"NewOS: Writing a EPM partition...\r\n"); + writer.Write(L"NewBoot: Writing an EPM partition...\r\n"); BootBlockType* bootBlock = (BootBlockType*)buf; @@ -113,6 +113,6 @@ EXTERN_C Boolean boot_write_epm_partition(const Char* namePart, SizeT namePartLe } } - writer.Write(L"NewOS: Partition found, everything's OK.\r\n"); + writer.Write(L"NewBoot: Partition found, everything's OK.\r\n"); return Yes; -}
\ No newline at end of file +} diff --git a/Private/NewBoot/Source/HEL/PowerPC/BootPowerPC.S b/Private/NewBoot/Source/HEL/PowerPC/BootPowerPC.S deleted file mode 100644 index 0b3cd493..00000000 --- a/Private/NewBoot/Source/HEL/PowerPC/BootPowerPC.S +++ /dev/null @@ -1,22 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -.section .init -.align 4 - -/* NewOS kernel header begin */ - -boot_hdr_mag: - .ascii "LX" -boot_hdr_name: - // it has to match ten bytes. - .asciz "NewBoot\0\0\0" -boot_hdr_ver: - .word 0x104 -boot_hdr_proc: - .long bootloader_start - -/* NewOS kernel header end */
\ No newline at end of file diff --git a/Private/NewBoot/Source/makefile b/Private/NewBoot/Source/makefile index 4016e3a8..197eb91b 100644 --- a/Private/NewBoot/Source/makefile +++ b/Private/NewBoot/Source/makefile @@ -1,5 +1,5 @@ ################################################## -# (C) Mahrouss Logic, all rights reserved. +# (C) Mahrouss Logic, all rights reserved. # This is the bootloader makefile. ################################################## @@ -20,12 +20,11 @@ endif IMG=epm.img IMG_2=epm-slave.img -EMU_FLAGS=-net none -smp 4 -m 4G -M q35 -bios OVMF.fd -device piix3-ide,id=ide -drive id=disk,file=$(IMG),format=raw,if=none -device ide-hd,drive=disk,bus=ide.0 -drive file=fat:rw:CDROM,index=2,format=raw -d int -hdd epm-slave.img +EMU_FLAGS=-net none -smp 4 -m 8G -M q35 -bios OVMF.fd -device piix3-ide,id=ide -drive id=disk,file=$(IMG),format=raw,if=none -device ide-hd,drive=disk,bus=ide.0 -drive file=fat:rw:CDROM,index=2,format=raw -d int -hdd epm-slave.img -LD_FLAGS=-e efi_main --subsystem=10 - -OBJ=$(wildcard *.o) $(wildcard HEL/AMD64/*.obj) +LD_FLAGS=-e Main --subsystem=10 +OBJ=*.o REM=rm REM_FLAG=-f @@ -35,14 +34,25 @@ FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KE .PHONY: invalid-recipe invalid-recipe: - @echo "invalid-recipe: Use make bootloader-<arch> all instead." + @echo "invalid-recipe: Use make bootloader-<arch> instead." + +KERNEL_OBJ=kernel.bin +DD=dd +IMG_CREATE=qemu-img +MAX_KERNEL_SIZE=1024K +BOOT_LOADER=NewBoot.exe +KERNEL=NewKernel.exe .PHONY: all all: compile-amd64 - $(LD_GNU) $(OBJ) $(LD_FLAGS) -o NewBoot.exe - $(COPY) NewBoot.exe CDROM/EFI/BOOT/BOOTX64.EFI - $(COPY) NewBoot.exe CDROM/EFI/BOOT/NEWBOOT.EFI - $(COPY) NewBoot.exe ../../Root/Boot/NewBoot.exe + mkdir -p CDROM/EFI/BOOT + $(LD_GNU) $(OBJ) $(LD_FLAGS) -o $(KERNEL_OBJ) + $(IMG_CREATE) create -f raw $(BOOT_LOADER) $(MAX_KERNEL_SIZE) + $(DD) if=$(KERNEL_OBJ) of=$(BOOT_LOADER) bs=1 seek=0 conv=notrunc + $(COPY) $(BOOT_LOADER) CDROM/EFI/BOOT/BOOTX64.EFI + $(COPY) $(BOOT_LOADER) CDROM/EFI/BOOT/NEWBOOT.EFI + $(COPY) $(BOOT_LOADER) ../../Root/Boot/$(BOOT_LOADER) + $(COPY) ../../$(KERNEL) CDROM/$(KERNEL) ifneq ($(DEBUG_SUPPORT), ) DEBUG = -D__DEBUG__ @@ -68,12 +78,13 @@ download-edk: .PHONY: clean clean: - $(REM) $(REM_FLAG) $(OBJ) NewBoot.exe NewKernel.exe OVMF.fd + $(REM) $(REM_FLAG) $(OBJ) NewBoot.exe NewKernel.exe OVMF.fd $(IMG) $(IMG_2) .PHONY: help help: @echo "=== HELP ===" - @echo "epm-img: Format a disk using the Explicit Partition Map/GPT." + @echo "epm-img: Format a disk using the Explicit Partition Map." + @echo "gpt-img: Format a disk using the Explicit Partition Map." @echo "clean: clean bootloader." @echo "bootloader-amd64: Build bootloader. (PC AMD64)" @echo "run-efi-amd64: Run bootloader. (PC AMD64)" diff --git a/Private/NewKit/Application.hxx b/Private/NewKit/Application.hxx index f19dbd97..15ffd073 100644 --- a/Private/NewKit/Application.hxx +++ b/Private/NewKit/Application.hxx @@ -7,7 +7,7 @@ #pragma once /// -/// @brief Main application object, given by the OS to interact with the OS. +/// @brief Application object, given by the OS to the process. interact with the OS. /// @file Application.hxx /// @author Amlal EL Mahrouss /// @@ -17,14 +17,14 @@ /// \brief Application Interface. /// \author Amlal El Mahrouss -typedef struct Application final { +typedef struct _Application final { /// @brief Releases the object exit the process on main object. - NewOS::Void(*Release)(struct Application* Self, NewOS::Int32 ExitCode); + NewOS::Void(*Release)(struct _Application* Self, NewOS::Int32 ExitCode); /// @brief Invoke a function from the application object. - NewOS::IntPtr(*Invoke)(struct Application* Self, NewOS::Int32 Sel, ...); + NewOS::IntPtr(*Invoke)(struct _Application* Self, NewOS::Int32 Sel, ...); /// @brief Query a new application object from a GUID. /// @note this doesn't query a process, it query a registered object withtin that app. - NewOS::Void(*Query)(struct Application* Self, NewOS::VoidPtr* Dst, NewOS::SizeT SzDst, NewOS::XRN::GUIDSequence GuidOf); + NewOS::Void(*Query)(struct _Application* Self, NewOS::VoidPtr* Dst, NewOS::SizeT SzDst, NewOS::XRN::GUIDSequence GuidOf); } Application, *ApplicationRef; #define app_cast reinterpret_cast<ApplicationRef> diff --git a/Private/Root/Boot/Icons/bonjour-logo.ico b/Private/Root/Boot/Icons/bonjour-logo.ico Binary files differnew file mode 100644 index 00000000..568de302 --- /dev/null +++ b/Private/Root/Boot/Icons/bonjour-logo.ico diff --git a/Private/Root/Boot/Icons/boot-logo.ico b/Private/Root/Boot/Icons/boot-logo.ico Binary files differnew file mode 100644 index 00000000..a7edcfe8 --- /dev/null +++ b/Private/Root/Boot/Icons/boot-logo.ico diff --git a/Private/Root/Boot/Icons/driver-logo.ico b/Private/Root/Boot/Icons/driver-logo.ico Binary files differnew file mode 100644 index 00000000..dbdcdee1 --- /dev/null +++ b/Private/Root/Boot/Icons/driver-logo.ico diff --git a/Private/Root/Boot/Icons/kernel-logo.ico b/Private/Root/Boot/Icons/kernel-logo.ico Binary files differnew file mode 100644 index 00000000..00724f48 --- /dev/null +++ b/Private/Root/Boot/Icons/kernel-logo.ico diff --git a/Private/Root/Boot/Icons/settings-icon.ico b/Private/Root/Boot/Icons/settings-icon.ico Binary files differnew file mode 100644 index 00000000..4fd36645 --- /dev/null +++ b/Private/Root/Boot/Icons/settings-icon.ico diff --git a/Private/Root/Boot/Icons/update-logo.ico b/Private/Root/Boot/Icons/update-logo.ico Binary files differnew file mode 100644 index 00000000..3423d76a --- /dev/null +++ b/Private/Root/Boot/Icons/update-logo.ico diff --git a/Private/Root/Boot/boot-logo.ico b/Private/Root/Boot/boot-logo.ico Binary files differdeleted file mode 100644 index a9c250ed..00000000 --- a/Private/Root/Boot/boot-logo.ico +++ /dev/null diff --git a/Private/Root/Boot/kernel-logo.ico b/Private/Root/Boot/kernel-logo.ico Binary files differdeleted file mode 100644 index d5ea0310..00000000 --- a/Private/Root/Boot/kernel-logo.ico +++ /dev/null diff --git a/Private/Servers/CoreDisplay/Headers/.gitkeep b/Private/Root/Users/Shared/.gitkeep index e69de29b..e69de29b 100644 --- a/Private/Servers/CoreDisplay/Headers/.gitkeep +++ b/Private/Root/Users/Shared/.gitkeep diff --git a/Private/Root/Users/User.script b/Private/Root/Users/User.script deleted file mode 100644 index 09cecb8b..00000000 --- a/Private/Root/Users/User.script +++ /dev/null @@ -1,3 +0,0 @@ -# User script - -Guest: true; diff --git a/Private/Servers/CoreDisplay/README.txt b/Private/Servers/CoreDisplay/README.txt deleted file mode 100644 index 669ec31c..00000000 --- a/Private/Servers/CoreDisplay/README.txt +++ /dev/null @@ -1,4 +0,0 @@ -CoreDisplay is the window manager of NewOS. -Written in C by Amlal EL Mahrouss. - -Unlike X it is not networked, but can be extend to with NetworkDisplay. diff --git a/Private/Servers/CoreDisplay/Sources/CDBitBlt.c b/Private/Servers/CoreDisplay/Sources/CDBitBlt.c deleted file mode 100644 index 91e5342f..00000000 --- a/Private/Servers/CoreDisplay/Sources/CDBitBlt.c +++ /dev/null @@ -1,11 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - - File: CDBitBlt.c - Purpose: Userbuffer to Framebuffer magic. - -------------------------------------------- */ - -#include <CDBitBlt.h> - diff --git a/Private/Servers/CoreDisplay/Sources/CDServerStartup.c b/Private/Servers/CoreDisplay/Sources/CDServerStartup.c deleted file mode 100644 index 7293b720..00000000 --- a/Private/Servers/CoreDisplay/Sources/CDServerStartup.c +++ /dev/null @@ -1,25 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - - File: CDServerStartup.c - Purpose: Server entrypoint. - -------------------------------------------- */ - -#include <CDServerStartup.h> -#include <IPC.h> - -/// @brief Called when the server starts. -int ServerStartup(void) -{ - return 0; -} - -/// @brief Called when the server shuts down. -int ServerShutdown(void) -{ - return 0; -} - -/// EOF. diff --git a/Private/Source/RuntimeMain.cxx b/Private/Source/AppMain.cxx index 5bbee3b2..87705393 100644 --- a/Private/Source/RuntimeMain.cxx +++ b/Private/Source/AppMain.cxx @@ -5,7 +5,6 @@ ------------------------------------------- */ #include <ArchKit/ArchKit.hpp> -#include <Builtins/Toolbox/Rsrc/Splash.rsrc> #include <Builtins/Toolbox/Toolbox.hxx> #include <FirmwareKit/Handover.hxx> #include <KernelKit/FileManager.hpp> @@ -18,15 +17,15 @@ /// @file Main microkernel entrypoint. -EXTERN_C void RuntimeMain(void) { +EXTERN_C NewOS::Void AppMain(NewOS::Void) { ///! Mounts a NewFS block. NewOS::NewFilesystemManager* newFS = new NewOS::NewFilesystemManager(); NewOS::ke_protect_ke_heap(newFS); NewOS::FilesystemManagerInterface::Mount(newFS); - + while (NewOS::ProcessScheduler::Shared().Leak().Run() > 0); ///! we're done, unmount. delete newFS; -}
\ No newline at end of file +} diff --git a/Private/Source/CxxAbi.cxx b/Private/Source/CxxAbi.cxx index d79d688c..452c4383 100644 --- a/Private/Source/CxxAbi.cxx +++ b/Private/Source/CxxAbi.cxx @@ -13,7 +13,7 @@ atexit_func_entry_t __atexit_funcs[kDSOMaxObjects]; uarch_t __atexit_func_count; extern "C" void __cxa_pure_virtual() { - NewOS::kcout << "NewOS: C++ placeholder method.\n"; + NewOS::kcout << "New OS: C++ placeholder method.\n"; } extern "C" void ___chkstk_ms() { diff --git a/Private/Source/FS/NewFS.cxx b/Private/Source/FS/NewFS.cxx index 1d7d3621..7eb79d10 100644 --- a/Private/Source/FS/NewFS.cxx +++ b/Private/Source/FS/NewFS.cxx @@ -7,13 +7,16 @@ #ifdef __FSKIT_NEWFS__ #include <FSKit/NewFS.hxx> +#include <KernelKit/HError.hpp> +#include <NewKit/Crc32.hpp> #include <NewKit/Utils.hpp> using namespace NewOS; -STATIC Lba ke_find_free_fork(SizeT sz); -STATIC Lba ke_find_free_catalog(SizeT sz); -STATIC Lba ke_find_free_data(SizeT sz); +/// forward decl. + +STATIC Lba ke_find_free_fork(SizeT sz, Int32 drv, NewCatalog* catalog); +STATIC Lba ke_find_free_catalog(SizeT kind, Int32 drv); STATIC MountpointInterface sMountpointInterface; @@ -26,7 +29,8 @@ _Output NewFork* NewFSParser::CreateFork(_Input NewCatalog* catalog, if (catalog && theFork.Name[0] != 0 && theFork.DataSize > 0) { Lba whereFork = 0; - theFork.DataOffset = ke_find_free_fork(theFork.DataSize); + theFork.DataOffset = + ke_find_free_fork(theFork.DataSize, this->fDriveIndex, catalog); theFork.Flags |= kNewFSFlagCreated; if (catalog->FirstFork == 0) { @@ -161,7 +165,55 @@ bool NewFSParser::Format(_Input _Output DriveTrait* drive) { return false; } - return true; + Char sectorBuf[kNewFSMinimumSectorSz] = {0}; + + drive->fPacket.fPacketContent = sectorBuf; + drive->fPacket.fPacketSize = kNewFSMinimumSectorSz; + drive->fPacket.fLba = kNewFSAddressAsLba; + + drive->fInput(&drive->fPacket); + + /// disk isnt faulty and data has been fetched. + if (drive->fPacket.fPacketGood) { + NewPartitionBlock* partBlock = (NewPartitionBlock*)sectorBuf; + + /// check for an empty partition here. + if (partBlock->PartitionName[0] == 0 && + rt_string_cmp(partBlock->Ident, kNewFSIdent, kNewFSIdentLen)) { + /// partition is free and valid. + + rt_copy_memory((VoidPtr)kNewFSIdent, (VoidPtr)partBlock->Ident, + kNewFSIdentLen); + rt_copy_memory((VoidPtr) "New OS\0", (VoidPtr)partBlock->PartitionName, + rt_string_len("New OS\0")); + + SizeT catalogCount = 0; + SizeT sectorCount = 0; + SizeT diskSize = 0; + + partBlock->Kind = kNewFSPartitionTypeStandard; + partBlock->StartCatalog = sizeof(NewPartitionBlock) + kNewFSAddressAsLba; + partBlock->CatalogCount = catalogCount; + partBlock->SectorCount = sectorCount; + partBlock->DiskSize = diskSize; + partBlock->FreeCatalog = partBlock->StartCatalog; + + drive->fPacket.fPacketContent = sectorBuf; + drive->fPacket.fPacketSize = kNewFSMinimumSectorSz; + drive->fPacket.fLba = kNewFSAddressAsLba; + + drive->fOutput(&drive->fPacket); + + return true; + } + + kcout << "New OS: Partition already exists.\r\n"; + + /// return success as well, do not ignore that partition. + return true; + } + + return false; } /// @brief @@ -173,73 +225,186 @@ bool NewFSParser::WriteCatalog(_Input _Output NewCatalog* catalog, return false; } -/// @brief -/// @param catalogName -/// @return +/// @brief +/// @param catalogName +/// @return _Output NewCatalog* NewFSParser::FindCatalog(_Input const char* catalogName) { return nullptr; } -/// @brief -/// @param name -/// @return +/// @brief +/// @param name +/// @return _Output NewCatalog* NewFSParser::GetCatalog(_Input const char* name) { return nullptr; } -/// @brief -/// @param catalog -/// @return +/// @brief +/// @param catalog +/// @return Boolean NewFSParser::CloseCatalog(_Input _Output NewCatalog* catalog) { - return false; + return true; } -/// @brief -/// @param catalog -/// @return +/// @brief Mark catalog as removed. +/// @param catalog The catalog structure. +/// @return Boolean NewFSParser::RemoveCatalog(_Input _Output NewCatalog* catalog) { + catalog->Flags |= kNewFSFlagDeleted; + this->WriteCatalog(catalog, nullptr); + return false; } -/// @brief -/// @param catalog -/// @param dataSz -/// @return +/// ***************************************************************** /// +/// Reading,Seek,Tell are unimplemented on catalogs, refer to forks I/O instead. +/// ***************************************************************** /// + +/// @brief +/// @param catalog +/// @param dataSz +/// @return VoidPtr NewFSParser::ReadCatalog(_Input _Output NewCatalog* catalog, SizeT dataSz) { return nullptr; } -/// @brief -/// @param catalog -/// @param off -/// @return +/// @brief +/// @param catalog +/// @param off +/// @return bool NewFSParser::Seek(_Input _Output NewCatalog* catalog, SizeT off) { return false; } -/// @brief -/// @param catalog -/// @return +/// @brief +/// @param catalog +/// @return SizeT NewFSParser::Tell(_Input _Output NewCatalog* catalog) { return 0; } -/// @brief -/// @param sz -/// @return -STATIC Lba ke_find_free_fork(SizeT sz) { return 0; } +/// @brief Find a free fork inside the filesystem. +/// @param sz the size of the fork to set. +/// @return the valid lba. +STATIC Lba ke_find_free_fork(SizeT sz, Int32 drv, NewCatalog* catalog) { + auto drive = *sMountpointInterface.GetAddressOf(drv); -/// @brief -/// @param sz -/// @return -STATIC Lba ke_find_free_catalog(SizeT sz) { return 0; } + if (drive) { + /// prepare packet. + bool done = false; + bool error = false; -/// @brief -/// @param sz -/// @return -STATIC Lba ke_find_free_data(SizeT sz) { return 0; } + Lba lba = catalog->LastFork; + + while (!done) { + Char sectorBuf[kNewFSMinimumSectorSz] = {0}; + + drive->fPacket.fPacketContent = sectorBuf; + drive->fPacket.fPacketSize = kNewFSMinimumSectorSz; + drive->fPacket.fLba = lba; + + drive->fInput(&drive->fPacket); + + if (!drive->fPacket.fPacketGood) { + ///! not a lot of choices, disk has become unreliable. + if (ke_calculate_crc32(sectorBuf, kNewFSMinimumSectorSz) != + drive->fPacket.fPacketCRC32) { + DbgLastError() = kErrorDiskIsCorrupted; + } + + error = true; + break; + } + + NewFork* fork = (NewFork*)sectorBuf; + + if (fork->DataSize == 0 && fork->Name[0] == 0 && + (fork->Flags == kNewFSFlagDeleted || + fork->Flags == kNewFSFlagUnallocated)) { + fork->DataSize = sz; + fork->Flags |= kNewFSFlagCreated; + + drive->fOutput(&drive->fPacket); + + /// here it's either a read-only filesystem or something bad happened.' + if (!drive->fPacket.fPacketGood) { + DbgLastError() = kErrorDiskReadOnly; + + return 0; + } + + return lba; + } + + lba += sizeof(NewFork); + } + + if (error) { + DbgLastError() = kErrorDisk; + return 0; + } + } + + return 0; +} + +/// @brief find a free catalog. +/// @param kind the catalog kind. +/// @return the valid lba. +STATIC Lba ke_find_free_catalog(SizeT kind, Int32 drv) { + auto drive = *sMountpointInterface.GetAddressOf(drv); + + if (drive) { + Char sectorBuf[kNewFSMinimumSectorSz] = {0}; + + /// prepare packet. + + drive->fPacket.fPacketContent = sectorBuf; + drive->fPacket.fPacketSize = kNewFSMinimumSectorSz; + drive->fPacket.fLba = kNewFSAddressAsLba; + + drive->fInput(&drive->fPacket); + + NewPartitionBlock* partBlock = (NewPartitionBlock*)sectorBuf; + + /// check for a valid partition. + if (partBlock->PartitionName[0] != 0 && + rt_string_cmp(partBlock->Ident, kNewFSIdent, kNewFSIdentLen) == 0) { + auto startLba = partBlock->FreeCatalog; + + if (startLba == 0) { + DbgLastError() = kErrorDiskIsFull; + return 1; + } else { + while (startLba != 0) { + drive->fPacket.fPacketContent = sectorBuf; + drive->fPacket.fPacketSize = kNewFSMinimumSectorSz; + drive->fPacket.fLba = startLba; + + drive->fInput(&drive->fPacket); + + NewCatalog* catalog = (NewCatalog*)sectorBuf; + + if (catalog->Flags == kNewFSFlagUnallocated || + catalog->Flags == kNewFSFlagDeleted) { + catalog->Flags |= kNewFSFlagCreated; + catalog->Kind |= kind; + + return startLba; + } + + startLba = catalog->NextSibling; + } + + return 0; + } + } + } + + return 0; +} namespace NewOS::Detail { -Boolean fs_init_newfs(Void) noexcept { return false; } +Boolean fs_init_newfs(Void) noexcept { return true; } } // namespace NewOS::Detail -#endif // ifdef __FSKIT_NEWFS__
\ No newline at end of file +#endif // ifdef __FSKIT_NEWFS__ diff --git a/Private/Source/IndexableProperty.cxx b/Private/Source/IndexableProperty.cxx index c3978fe9..dba56c74 100644 --- a/Private/Source/IndexableProperty.cxx +++ b/Private/Source/IndexableProperty.cxx @@ -34,7 +34,7 @@ Void fs_index_file(const Char* filename, SizeT filenameLen, IndexableProperty& i indexer.AddFlag(kIndexerClaimed); rt_copy_memory((VoidPtr)indexer.LeakProperty().Path, (VoidPtr)filename, filenameLen); - kcout << "NewOS: FSKit: index new file: " << filename << endl; + kcout << "New OS: FSKit: index new file: " << filename << endl; } } } // namespace Indexer diff --git a/Private/Source/KernelHeap.cxx b/Private/Source/KernelHeap.cxx index 72d291a8..3b77ebb6 100644 --- a/Private/Source/KernelHeap.cxx +++ b/Private/Source/KernelHeap.cxx @@ -97,7 +97,7 @@ Int32 ke_delete_ke_heap(VoidPtr heapPtr) { PTEWrapper pageWrapper(false, false, false, (UIntPtr)virtualAddress); Ref<PTEWrapper*> pteAddress{ &pageWrapper }; - + kHeapPageManager.Free(pteAddress); --kHeapCount; @@ -126,7 +126,7 @@ Boolean ke_is_valid_heap(VoidPtr heapPtr) { return false; } -/// @brief Protect the heap pointer with a CRC32. +/// @brief Protect the heap with a CRC value. /// @param heapPtr HIB pointer. /// @return if it valid: point has crc now., otherwise fail. Boolean ke_protect_ke_heap(VoidPtr heapPtr) { diff --git a/Private/Source/PEFCodeManager.cxx b/Private/Source/PEFCodeManager.cxx index f8616a8c..2f60f085 100644 --- a/Private/Source/PEFCodeManager.cxx +++ b/Private/Source/PEFCodeManager.cxx @@ -17,6 +17,7 @@ namespace NewOS { namespace Detail { +/// @brief Get the PEF platform signature according to the compiled backebnd UInt32 rt_get_pef_platform(void) noexcept { #ifdef __32x0__ return kPefArch32x0; @@ -33,7 +34,7 @@ UInt32 rt_get_pef_platform(void) noexcept { } // namespace Detail /// @brief PEF loader constructor w/ blob. -/// @param blob +/// @param blob PEFLoader::PEFLoader(const VoidPtr blob) : fCachedBlob(nullptr) { fCachedBlob = blob; fBad = false; @@ -42,11 +43,11 @@ PEFLoader::PEFLoader(const VoidPtr blob) : fCachedBlob(nullptr) { } /// @brief PEF loader constructor. -/// @param path -PEFLoader::PEFLoader(const char *path) : fCachedBlob(nullptr), fBad(false) { - OwnPtr<FileStream<char>> file; +/// @param path the filesystem path. +PEFLoader::PEFLoader(const Char* path) : fCachedBlob(nullptr), fBad(false) { + OwnPtr<FileStream<Char>> file; - file.New(const_cast<Char *>(path), kRestrictRB); + file.New(const_cast<Char*>(path), kRestrictRB); if (StringBuilder::Equals(file->MIME(), this->MIME())) { fPath = StringBuilder::Construct(path).Leak(); @@ -131,7 +132,7 @@ VoidPtr PEFLoader::FindSymbol(const char *name, Int32 kind) { } /// @brief Finds the executable entrypoint. -/// @return +/// @return ErrorOr<VoidPtr> PEFLoader::FindStart() { if (auto sym = this->FindSymbol(kPefStart, kPefCode); sym) return ErrorOr<VoidPtr>(sym); @@ -140,7 +141,7 @@ ErrorOr<VoidPtr> PEFLoader::FindStart() { } /// @brief Tells if the executable is loaded or not. -/// @return +/// @return bool PEFLoader::IsLoaded() noexcept { return !fBad && fCachedBlob; } #define kPefAppnameCommandHdr "PefAppName" diff --git a/Private/Source/ThreadLocalStorage.cxx b/Private/Source/ThreadLocalStorage.cxx index d3e31a1c..8d3281e3 100644 --- a/Private/Source/ThreadLocalStorage.cxx +++ b/Private/Source/ThreadLocalStorage.cxx @@ -31,7 +31,7 @@ Boolean tls_check_tib(ThreadInformationBlock* tib) { Encoder encoder; const char* tibAsBytes = encoder.AsBytes(tib); - kcout << "NewOS: Checking for a valid cookie...\r\n"; + kcout << "New OS: Checking for a valid cookie...\r\n"; return tibAsBytes[0] == kCookieMag0 && tibAsBytes[1] == kCookieMag1 && tibAsBytes[2] == kCookieMag2; @@ -46,9 +46,9 @@ EXTERN_C Void tls_check_syscall_impl(NewOS::HAL::StackFramePtr stackPtr) noexcep ThreadInformationBlock* tib = (ThreadInformationBlock*)stackPtr->Gs; if (!tls_check_tib(tib)) { - kcout << "NewOS: Verification failed, Crashing...\r\n"; + kcout << "New OS: Verification failed, Crashing...\r\n"; ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } - kcout << "NewOS: Verification succeeded! Keeping on...\r\n"; + kcout << "New OS: Verification succeeded! Keeping on...\r\n"; } diff --git a/Private/Source/URL.cxx b/Private/Source/URL.cxx index 090c7c66..4983a34c 100644 --- a/Private/Source/URL.cxx +++ b/Private/Source/URL.cxx @@ -15,12 +15,15 @@ URL::URL(StringView &strUrl) : fUrlView(strUrl, false) {} URL::~URL() = default; +/// @brief internal and reserved protocols by kernel. constexpr const char *kURLProtocols[] = { "file", // Filesystem protocol + "mup", // Mahrouss update protocol + "param", // Mahrouss parameter protocol. }; constexpr const int kUrlOutSz = 1; //! such as: :// -constexpr const int kProtosCount = 4; +constexpr const int kProtosCount = 3; constexpr const int kRangeSz = 4096; ErrorOr<StringView> url_extract_location(const char *url) { diff --git a/Private/makefile b/Private/makefile index 412739ca..128ccc55 100644 --- a/Private/makefile +++ b/Private/makefile @@ -1,33 +1,35 @@ ################################################## -# (C) Mahrouss Logic, all rights reserved. +# (C) Mahrouss Logic, all rights reserved. # This is the microkernel makefile. ################################################## CC = x86_64-w64-mingw32-gcc LD = x86_64-w64-mingw32-ld -CCFLAGS = -c -ffreestanding -D__NEWOS_AMD64__ -mgeneral-regs-only -mno-red-zone -fno-rtti -fno-exceptions -std=c++20 -D__FSKIT_NEWFS__ -D__KERNEL__ -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -I../ -I./ +CCFLAGS = -c -ffreestanding -D__NEWOS_AMD64__ -mgeneral-regs-only -mno-red-zone -fno-rtti -fno-exceptions -std=c++20 -D__FSKIT_NEWFS__ -D__KERNEL__ -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -I../ -I./ ASM = nasm ifneq ($(ATA_PIO_SUPPORT), ) -DISKDRIVER = -D__ATA_PIO__ +DISKDRIVER = -D__ATA_PIO__ endif ifneq ($(ATA_DMA_SUPPORT), ) -DISKDRIVER = -D__ATA_DMA__ +DISKDRIVER = -D__ATA_DMA__ endif ifneq ($(AHCI_SUPPORT), ) -DISKDRIVER = -D__AHCI__ +DISKDRIVER = -D__AHCI__ endif ifneq ($(DEBUG_SUPPORT), ) -DEBUG = -D__DEBUG__ +DEBUG = -D__DEBUG__ endif +COPY = cp + # Add assembler, linker, and object files variables. ASMFLAGS = -f win64 LDFLAGS = -e Main --subsystem=17 -LDOBJ = $(wildcard Objects/*.obj) +LDOBJ = Objects/*.obj # This file is the kernel, responsible of task management, memory, drivers and more. KERNEL = NewKernel.exe @@ -37,7 +39,7 @@ SCRIPT = --script=Linker/Platforms/PC.lds .PHONY: error error: - @echo "Use a specific target." + @echo "=> Use a specific target." MOVEALL=./MoveAll.sh WINDRES=x86_64-w64-mingw32-windres @@ -52,12 +54,19 @@ newos-amd64-epm: clean $(ASM) $(ASMFLAGS) HALKit/AMD64/HalInstallTIB.asm $(MOVEALL) -OBJCOPY=x86_64-w64-mingw32-objcopy +OBJCOPY=x86_64-w64-mingw32-objcopy + +KERNEL_OBJ=kernel.bin +DD=dd +IMG_CREATE=qemu-img +MAX_KERNEL_SIZE=1024K .PHONY: link-amd64-epm link-amd64-epm: - $(LD) $(LDFLAGS) $(LDOBJ) -o $(KERNEL) - cp $(KERNEL) Root/Boot + $(LD) $(LDFLAGS) $(LDOBJ) -o $(KERNEL_OBJ) + $(IMG_CREATE) create -f raw $(KERNEL) $(MAX_KERNEL_SIZE) + $(DD) if=$(KERNEL_OBJ) of=$(KERNEL) bs=1 seek=0 conv=notrunc + $(COPY) $(KERNEL) Root/Boot .PHONY: all all: newos-amd64-epm link-amd64-epm diff --git a/Public/Developer/PDF/POWRPCARCPRMRM.pdf b/Public/Developer/PDF/POWRPCARCPRMRM.pdf Binary files differdeleted file mode 100644 index f6a50007..00000000 --- a/Public/Developer/PDF/POWRPCARCPRMRM.pdf +++ /dev/null diff --git a/Public/Developer/DriverLib/.gitkeep b/Public/Developer/PDFLib/.gitkeep index e69de29b..e69de29b 100644 --- a/Public/Developer/DriverLib/.gitkeep +++ b/Public/Developer/PDFLib/.gitkeep diff --git a/Public/Developer/ServerLib/.gitkeep b/Public/Developer/ServerLib/.gitkeep deleted file mode 100644 index e69de29b..00000000 --- a/Public/Developer/ServerLib/.gitkeep +++ /dev/null diff --git a/Public/Developer/SystemLib/Headers/Dialog.h b/Public/Developer/SystemLib/Headers/Dialog.h index 800f56db..823b3366 100644 --- a/Public/Developer/SystemLib/Headers/Dialog.h +++ b/Public/Developer/SystemLib/Headers/Dialog.h @@ -27,13 +27,13 @@ typedef struct _DialogPort { DialogPoint dlgPosition; WmDialogFn dlgProc; struct _WmGFX* dlgGfx; - struct _WindowPort* parentPort; + struct _WmWindowPort* parentPort; } DialogPort; /// @brief Creates a new dialog from a rsrc fork id. /// @param rsrcId the resource id. /// @return the dialog port. -CA_EXTERN_C DialogPort* DlgCreateFromRsrc(QWordType rsrcId); +CA_EXTERN_C DialogPort* DlgCreateFromRsrc(QWordType rsrcId); /// @brief Shows an message box according to format. /// @param title the message box title diff --git a/Public/Developer/SystemLib/Headers/Wm.h b/Public/Developer/SystemLib/Headers/Wm.h index 66ed96a3..f6484c29 100644 --- a/Public/Developer/SystemLib/Headers/Wm.h +++ b/Public/Developer/SystemLib/Headers/Wm.h @@ -7,21 +7,22 @@ #pragma once #include <Headers/Defines.h> +#include "Headers/Dialog.h" /************************************************************* - * - * File: Wm.h + * + * File: Wm.h * Purpose: Window Manager API for NewOS. * Date: 3/26/24 - * + * * Copyright Mahrouss Logic, all rights reserved. - * + * *************************************************************/ struct _WmPoint; -struct _WindowPort; - -struct _ControlPort; +struct _WmWindowPort; +struct _WmGFX; +struct _WmControlPort; struct _WmPoint; /// @brief Window Graphics type. @@ -33,7 +34,7 @@ typedef struct _WmGFX { } WmGFX, *WmGFXRef; /// @brief Window procedure type. -typedef VoidType(*WmWindowFn)(struct _WindowPort* port, UInt32Type msg, UIntPtrType pParam, UIntPtrType iParam); +typedef VoidType(*WmWindowFn)(struct _WmWindowPort* port, UInt32Type msg, UIntPtrType pParam, UIntPtrType iParam); /// @brief A point, can represent the size, position of a window. typedef struct _WmPoint { @@ -42,7 +43,7 @@ typedef struct _WmPoint { /// @brief Window port type, can be used to control the window. -typedef struct _WindowPort { +typedef struct _WmWindowPort { WordType windowPort; WordType windowKind; BooleanType windowVisible : 1; @@ -56,12 +57,12 @@ typedef struct _WindowPort { WmPoint windowSize; WmGFXRef windowGfx; WmWindowFn windowProc; - struct _WindowPort* windowMenuPort; ///! Attached menu to it. - struct _WindowPort* windowParentPort; + struct _WmWindowPort* windowMenuPort; ///! Attached menu to it. + struct _WmWindowPort* windowParentPort; } WindowPort; /// @brief Control port type. -typedef struct _ControlPort { +typedef struct _WmControlPort { WordType controlPort; WordType controlKind; BooleanType controlVisible : 1; @@ -70,7 +71,7 @@ typedef struct _ControlPort { WmWindowFn controlProc; WmGFXRef controlGfx; WindowPort* parentPort; -} ControlPort; +} WmControlPort; enum { kWmErrIncompatible = 0x74, @@ -111,31 +112,31 @@ CA_EXTERN_C const ColorRef kRgbWhite; /// @brief Creates a new control /// @param id the control rsrc fork. -/// @return -CA_EXTERN_C ControlPort* WmCreateControl(DWordType id); +/// @return +CA_EXTERN_C WmControlPort* WmCreateControl(DWordType id); /// @brief Releases the control /// @param ctrlPort the control ref. -/// @return -CA_EXTERN_C VoidType WmReleaseControl(ControlPort* ctrlPort); +/// @return +CA_EXTERN_C VoidType WmReleaseControl(WmControlPort* ctrlPort); -/// @brief Moves a control inside a ControlPort. +/// @brief Moves a control inside a WmControlPort. /// @param ctrlPort the control ref. /// @param where where to move at. -/// @return -CA_EXTERN_C Int32Type WmSetControlPosition(ControlPort* ctrlPort, WmPoint where); +/// @return +CA_EXTERN_C Int32Type WmSetControlPosition(WmControlPort* ctrlPort, WmPoint where); /// @brief Enable control. -/// @param ctrlPort -/// @param enabled -/// @return -CA_EXTERN_C Int32Type WmSetControlEnabled(ControlPort* ctrlPort, BooleanType enabled); +/// @param ctrlPort +/// @param enabled +/// @return +CA_EXTERN_C Int32Type WmSetControlEnabled(WmControlPort* ctrlPort, BooleanType enabled); /// @brief Make control visible. -/// @param ctrlPort -/// @param visible -/// @return -CA_EXTERN_C Int32Type WmSetControlVisible(ControlPort* ctrlPort, BooleanType visible); +/// @param ctrlPort +/// @param visible +/// @return +CA_EXTERN_C Int32Type WmSetControlVisible(WmControlPort* ctrlPort, BooleanType visible); /// @brief Creates a new window. /// @param name the window name @@ -172,4 +173,4 @@ CA_EXTERN_C WindowPort* WmGetOSDlg(void); /// @brief Draws a blur effect on the window. /// @param wndPort the window port. -CA_EXTERN_C VoidType WmBlur(WindowPort* wndPort);
\ No newline at end of file +CA_EXTERN_C VoidType WmBlur(WindowPort* wndPort); diff --git a/Public/Developer/SystemLib/PowerPC/CoreAssembly.s b/Public/Developer/SystemLib/POWER/CoreAssembly.s index 7078774e..99605870 100644 --- a/Public/Developer/SystemLib/PowerPC/CoreAssembly.s +++ b/Public/Developer/SystemLib/POWER/CoreAssembly.s @@ -2,21 +2,22 @@ ; ; Copyright Mahrouss Logic ; -; Purpose: PowerPC Core assembly routines. +; Purpose: POWER low level I/O ; ; ------------------------------------------- */ /* @brief Application getter */ /* @throws: ApptError: appartement error. */ export .code64 RtGetAppPointer: + mflr r3 stw 0x10, 0(r3) /* sysGetProcessObject */ sc blr export .code64 RtAssertTriggerInterrupt: + mflr r3 stw 0x11, 0(r3) /* sysTerminateCurrentProcess */ sc blr - diff --git a/Public/Developer/SystemLib/Sources/App.c b/Public/Developer/SystemLib/Sources/App.c index 9d390795..36e53c7e 100644 --- a/Public/Developer/SystemLib/Sources/App.c +++ b/Public/Developer/SystemLib/Sources/App.c @@ -11,7 +11,7 @@ ApplicationRef kSharedApplication = NullPtr; /// @brief Gets the app arguments count. /// @param void no arguments. -/// @return +/// @return The number of arguments given to the application. CA_EXTERN_C SizeType RtGetAppArgumentsCount(VoidType) { CA_MUST_PASS(kSharedApplication); @@ -23,7 +23,7 @@ CA_EXTERN_C SizeType RtGetAppArgumentsCount(VoidType) { /// @return CA_EXTERN_C CharacterTypeUTF8** RtGetAppArgumentsPtr(VoidType) { CA_MUST_PASS(kSharedApplication); - + return (CharacterTypeUTF8**)kSharedApplication->Invoke(kSharedApplication, kCallGetArgsPtr); } diff --git a/Public/Developer/SystemLib/Sources/File.c b/Public/Developer/SystemLib/Sources/File.c index 39a4aff0..6e4a7440 100644 --- a/Public/Developer/SystemLib/Sources/File.c +++ b/Public/Developer/SystemLib/Sources/File.c @@ -25,7 +25,8 @@ CA_EXTERN_C FSRef FsOpenFile(const CharacterTypeUTF8* path, CA_MUST_PASS(path && FsIsValidPath(path) == Yes); CA_MUST_PASS(rest); - return kSharedApplication->Invoke(kSharedApplication, kCallOpenFile, path, rest); + return kSharedApplication->Invoke(kSharedApplication, kCallOpenFile, path, + rest); } /// @brief Closes the file and flushes it to the said file. diff --git a/Public/Developer/SystemLib/Makefile b/Public/Developer/SystemLib/amd64.mk index a753ccc8..a753ccc8 100644 --- a/Public/Developer/SystemLib/Makefile +++ b/Public/Developer/SystemLib/amd64.mk @@ -1,5 +1,5 @@ <div align="center"> -<img src="Meta/NewKernel.svg" width="96" height="96"/> +<img src="Meta/Kernel.svg" width="96" height="96"/> <h1>NewKernel</h1> </div> |
