/tags/0.4.0/kernel/genarch/src/fb/fb.c |
---|
0,0 → 1,534 |
/* |
* Copyright (c) 2008 Martin Decky |
* Copyright (c) 2006 Ondrej Palkovsky |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarch |
* @{ |
*/ |
/** @file |
*/ |
#include <genarch/fb/font-8x16.h> |
#include <genarch/fb/logo-196x66.h> |
#include <genarch/fb/visuals.h> |
#include <genarch/fb/fb.h> |
#include <console/chardev.h> |
#include <console/console.h> |
#include <sysinfo/sysinfo.h> |
#include <mm/slab.h> |
#include <align.h> |
#include <panic.h> |
#include <memstr.h> |
#include <config.h> |
#include <bitops.h> |
#include <print.h> |
#include <ddi/ddi.h> |
#include <arch/types.h> |
SPINLOCK_INITIALIZE(fb_lock); |
/**< Physical memory area for fb. */ |
static parea_t fb_parea; |
static uint8_t *fb_addr; |
static uint8_t *backbuf; |
static uint8_t *glyphs; |
static uint8_t *bgscan; |
static unsigned int xres; |
static unsigned int yres; |
static unsigned int ylogo; |
static unsigned int ytrim; |
static unsigned int rowtrim; |
static unsigned int scanline; |
static unsigned int glyphscanline; |
static unsigned int pixelbytes; |
static unsigned int glyphbytes; |
static unsigned int bgscanbytes; |
static unsigned int cols; |
static unsigned int rows; |
static unsigned int position = 0; |
#define BG_COLOR 0x000080 |
#define FG_COLOR 0xffff00 |
#define CURSOR 219 |
#define RED(x, bits) ((x >> (8 + 8 + 8 - bits)) & ((1 << bits) - 1)) |
#define GREEN(x, bits) ((x >> (8 + 8 - bits)) & ((1 << bits) - 1)) |
#define BLUE(x, bits) ((x >> (8 - bits)) & ((1 << bits) - 1)) |
#define COL2X(col) ((col) * FONT_WIDTH) |
#define ROW2Y(row) ((row) * FONT_SCANLINES) |
#define X2COL(x) ((x) / FONT_WIDTH) |
#define Y2ROW(y) ((y) / FONT_SCANLINES) |
#define FB_POS(x, y) ((y) * scanline + (x) * pixelbytes) |
#define BB_POS(col, row) ((row) * cols + (col)) |
#define GLYPH_POS(glyph, y) ((glyph) * glyphbytes + (y) * glyphscanline) |
static void (*rgb_conv)(void *, uint32_t); |
/** ARGB 8:8:8:8 conversion |
* |
*/ |
static void rgb_0888(void *dst, uint32_t rgb) |
{ |
*((uint32_t *) dst) = rgb & 0xffffff; |
} |
/** ABGR 8:8:8:8 conversion |
* |
*/ |
static void bgr_0888(void *dst, uint32_t rgb) |
{ |
*((uint32_t *) dst) |
= (BLUE(rgb, 8) << 16) | (GREEN(rgb, 8) << 8) | RED(rgb, 8); |
} |
/** BGR 8:8:8 conversion |
* |
*/ |
static void rgb_888(void *dst, uint32_t rgb) |
{ |
#if defined(FB_INVERT_ENDIAN) |
((uint8_t *) dst)[0] = RED(rgb, 8); |
((uint8_t *) dst)[1] = GREEN(rgb, 8); |
((uint8_t *) dst)[2] = BLUE(rgb, 8); |
#else |
((uint8_t *) dst)[0] = BLUE(rgb, 8); |
((uint8_t *) dst)[1] = GREEN(rgb, 8); |
((uint8_t *) dst)[2] = RED(rgb, 8); |
#endif |
} |
/** RGB 5:5:5 conversion |
* |
*/ |
static void rgb_555(void *dst, uint32_t rgb) |
{ |
*((uint16_t *) dst) |
= (RED(rgb, 5) << 10) | (GREEN(rgb, 5) << 5) | BLUE(rgb, 5); |
} |
/** RGB 5:6:5 conversion |
* |
*/ |
static void rgb_565(void *dst, uint32_t rgb) |
{ |
*((uint16_t *) dst) |
= (RED(rgb, 5) << 11) | (GREEN(rgb, 6) << 5) | BLUE(rgb, 5); |
} |
/** RGB 3:2:3 |
* |
* Even though we try 3:2:3 color scheme here, an 8-bit framebuffer |
* will most likely use a color palette. The color appearance |
* will be pretty random and depend on the default installed |
* palette. This could be fixed by supporting custom palette |
* and setting it to simulate the 8-bit truecolor. |
* |
* Currently we set the palette on the ia32, amd64 and sparc64 port. |
* |
* Note that the byte is being inverted by this function. The reason is |
* that we would like to use a color palette where the white color code |
* is 0 and the black color code is 255, as some machines (Sun Blade 1500) |
* use these codes for black and white and prevent to set codes |
* 0 and 255 to other colors. |
* |
*/ |
static void rgb_323(void *dst, uint32_t rgb) |
{ |
*((uint8_t *) dst) |
= ~((RED(rgb, 3) << 5) | (GREEN(rgb, 2) << 3) | BLUE(rgb, 3)); |
} |
/** Hide logo and refresh screen |
* |
*/ |
static void logo_hide(bool silent) |
{ |
ylogo = 0; |
ytrim = yres; |
rowtrim = rows; |
if (!silent) |
fb_redraw(); |
} |
/** Draw character at given position |
* |
*/ |
static void glyph_draw(uint8_t glyph, unsigned int col, unsigned int row, bool silent) |
{ |
unsigned int x = COL2X(col); |
unsigned int y = ROW2Y(row); |
unsigned int yd; |
if (y >= ytrim) |
logo_hide(silent); |
backbuf[BB_POS(col, row)] = glyph; |
if (!silent) { |
for (yd = 0; yd < FONT_SCANLINES; yd++) |
memcpy(&fb_addr[FB_POS(x, y + yd + ylogo)], |
&glyphs[GLYPH_POS(glyph, yd)], glyphscanline); |
} |
} |
/** Scroll screen down by one row |
* |
* |
*/ |
static void screen_scroll(bool silent) |
{ |
if (ylogo > 0) { |
logo_hide(silent); |
return; |
} |
if (!silent) { |
unsigned int row; |
for (row = 0; row < rows; row++) { |
unsigned int y = ROW2Y(row); |
unsigned int yd; |
for (yd = 0; yd < FONT_SCANLINES; yd++) { |
unsigned int x; |
unsigned int col; |
for (col = 0, x = 0; col < cols; col++, |
x += FONT_WIDTH) { |
uint8_t glyph; |
if (row < rows - 1) { |
if (backbuf[BB_POS(col, row)] == |
backbuf[BB_POS(col, row + 1)]) |
continue; |
glyph = backbuf[BB_POS(col, row + 1)]; |
} else |
glyph = 0; |
memcpy(&fb_addr[FB_POS(x, y + yd)], |
&glyphs[GLYPH_POS(glyph, yd)], |
glyphscanline); |
} |
} |
} |
} |
memmove(backbuf, backbuf + cols, cols * (rows - 1)); |
memsetb(&backbuf[BB_POS(0, rows - 1)], cols, 0); |
} |
static void cursor_put(bool silent) |
{ |
glyph_draw(CURSOR, position % cols, position / cols, silent); |
} |
static void cursor_remove(bool silent) |
{ |
glyph_draw(0, position % cols, position / cols, silent); |
} |
/** Print character to screen |
* |
* Emulate basic terminal commands. |
* |
*/ |
static void fb_putchar(chardev_t *dev, char ch, bool silent) |
{ |
spinlock_lock(&fb_lock); |
switch (ch) { |
case '\n': |
cursor_remove(silent); |
position += cols; |
position -= position % cols; |
break; |
case '\r': |
cursor_remove(silent); |
position -= position % cols; |
break; |
case '\b': |
cursor_remove(silent); |
if (position % cols) |
position--; |
break; |
case '\t': |
cursor_remove(silent); |
do { |
glyph_draw((uint8_t) ' ', position % cols, |
position / cols, silent); |
position++; |
} while ((position % 8) && (position < cols * rows)); |
break; |
default: |
glyph_draw((uint8_t) ch, position % cols, |
position / cols, silent); |
position++; |
} |
if (position >= cols * rows) { |
position -= cols; |
screen_scroll(silent); |
} |
cursor_put(silent); |
spinlock_unlock(&fb_lock); |
} |
static chardev_t framebuffer; |
static chardev_operations_t fb_ops = { |
.write = fb_putchar, |
}; |
/** Render glyphs |
* |
* Convert glyphs from device independent font |
* description to current visual representation. |
* |
*/ |
static void glyphs_render(void) |
{ |
/* Prerender glyphs */ |
unsigned int glyph; |
for (glyph = 0; glyph < FONT_GLYPHS; glyph++) { |
unsigned int y; |
for (y = 0; y < FONT_SCANLINES; y++) { |
unsigned int x; |
for (x = 0; x < FONT_WIDTH; x++) { |
void *dst = &glyphs[GLYPH_POS(glyph, y) + |
x * pixelbytes]; |
uint32_t rgb = (fb_font[ROW2Y(glyph) + y] & |
(1 << (7 - x))) ? FG_COLOR : BG_COLOR; |
rgb_conv(dst, rgb); |
} |
} |
} |
/* Prerender background scanline */ |
unsigned int x; |
for (x = 0; x < xres; x++) |
rgb_conv(&bgscan[x * pixelbytes], BG_COLOR); |
} |
/** Refresh the screen |
* |
*/ |
void fb_redraw(void) |
{ |
if (ylogo > 0) { |
unsigned int y; |
for (y = 0; y < LOGO_HEIGHT; y++) { |
unsigned int x; |
for (x = 0; x < xres; x++) |
rgb_conv(&fb_addr[FB_POS(x, y)], |
(x < LOGO_WIDTH) ? |
fb_logo[y * LOGO_WIDTH + x] : |
LOGO_COLOR); |
} |
} |
unsigned int row; |
for (row = 0; row < rowtrim; row++) { |
unsigned int y = ylogo + ROW2Y(row); |
unsigned int yd; |
for (yd = 0; yd < FONT_SCANLINES; yd++) { |
unsigned int x; |
unsigned int col; |
for (col = 0, x = 0; col < cols; |
col++, x += FONT_WIDTH) { |
void *d = &fb_addr[FB_POS(x, y + yd)]; |
void *s = &glyphs[GLYPH_POS(backbuf[BB_POS(col, |
row)], yd)]; |
memcpy(d, s, glyphscanline); |
} |
} |
} |
if (COL2X(cols) < xres) { |
unsigned int y; |
unsigned int size = (xres - COL2X(cols)) * pixelbytes; |
for (y = ylogo; y < yres; y++) |
memcpy(&fb_addr[FB_POS(COL2X(cols), y)], bgscan, size); |
} |
if (ROW2Y(rowtrim) + ylogo < yres) { |
unsigned int y; |
for (y = ROW2Y(rowtrim) + ylogo; y < yres; y++) |
memcpy(&fb_addr[FB_POS(0, y)], bgscan, bgscanbytes); |
} |
} |
/** Initialize framebuffer as a chardev output device |
* |
* @param addr Physical address of the framebuffer |
* @param x Screen width in pixels |
* @param y Screen height in pixels |
* @param scan Bytes per one scanline |
* @param visual Color model |
* |
*/ |
void fb_init(fb_properties_t *props) |
{ |
switch (props->visual) { |
case VISUAL_INDIRECT_8: |
rgb_conv = rgb_323; |
pixelbytes = 1; |
break; |
case VISUAL_RGB_5_5_5: |
rgb_conv = rgb_555; |
pixelbytes = 2; |
break; |
case VISUAL_RGB_5_6_5: |
rgb_conv = rgb_565; |
pixelbytes = 2; |
break; |
case VISUAL_RGB_8_8_8: |
rgb_conv = rgb_888; |
pixelbytes = 3; |
break; |
case VISUAL_RGB_8_8_8_0: |
rgb_conv = rgb_888; |
pixelbytes = 4; |
break; |
case VISUAL_RGB_0_8_8_8: |
rgb_conv = rgb_0888; |
pixelbytes = 4; |
break; |
case VISUAL_BGR_0_8_8_8: |
rgb_conv = bgr_0888; |
pixelbytes = 4; |
break; |
default: |
panic("Unsupported visual."); |
} |
xres = props->x; |
yres = props->y; |
scanline = props->scan; |
cols = X2COL(xres); |
rows = Y2ROW(yres); |
if (yres > ylogo) { |
ylogo = LOGO_HEIGHT; |
rowtrim = rows - Y2ROW(ylogo); |
if (ylogo % FONT_SCANLINES > 0) |
rowtrim--; |
ytrim = ROW2Y(rowtrim); |
} else { |
ylogo = 0; |
ytrim = yres; |
rowtrim = rows; |
} |
glyphscanline = FONT_WIDTH * pixelbytes; |
glyphbytes = ROW2Y(glyphscanline); |
bgscanbytes = xres * pixelbytes; |
unsigned int fbsize = scanline * yres; |
unsigned int bbsize = cols * rows; |
unsigned int glyphsize = FONT_GLYPHS * glyphbytes; |
backbuf = (uint8_t *) malloc(bbsize, 0); |
if (!backbuf) |
panic("Unable to allocate backbuffer."); |
glyphs = (uint8_t *) malloc(glyphsize, 0); |
if (!glyphs) |
panic("Unable to allocate glyphs."); |
bgscan = malloc(bgscanbytes, 0); |
if (!bgscan) |
panic("Unable to allocate background pixel."); |
memsetb(backbuf, bbsize, 0); |
glyphs_render(); |
fb_addr = (uint8_t *) hw_map((uintptr_t) props->addr, fbsize); |
fb_parea.pbase = (uintptr_t) props->addr + props->offset; |
fb_parea.vbase = (uintptr_t) fb_addr; |
fb_parea.frames = SIZE2FRAMES(fbsize); |
fb_parea.cacheable = false; |
ddi_parea_register(&fb_parea); |
sysinfo_set_item_val("fb", NULL, true); |
sysinfo_set_item_val("fb.kind", NULL, 1); |
sysinfo_set_item_val("fb.width", NULL, xres); |
sysinfo_set_item_val("fb.height", NULL, yres); |
sysinfo_set_item_val("fb.scanline", NULL, scanline); |
sysinfo_set_item_val("fb.visual", NULL, props->visual); |
sysinfo_set_item_val("fb.address.physical", NULL, props->addr); |
fb_redraw(); |
chardev_initialize("fb", &framebuffer, &fb_ops); |
stdout = &framebuffer; |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/fb/logo-196x66.c |
---|
0,0 → 1,13110 |
/* |
* Copyright (c) 2008 Martin Decky |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarch |
* @{ |
*/ |
/** @file |
*/ |
#include <genarch/fb/logo-196x66.h> |
uint32_t fb_logo[LOGO_WIDTH * LOGO_HEIGHT] = { |
/* Scanline 0 */ |
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, |
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, |
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, |
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, |
/* Scanline 1 */ |
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, |
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, |
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, |
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, |
/* Scanline 2 */ |
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, |
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, |
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, |
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, |
/* Scanline 3 */ |
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, |
0xfdfdfd, |
0xf9f9f8, |
0xf5f3f1, |
0xf3f1ee, |
0xf3f2ef, |
0xf7f7f6, |
0xfbfbfb, |
0xfefefe, |
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, |
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, |
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, |
/* Scanline 4 */ |
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, |
0xfefefd, |
0xf9f9f8, |
0xf3f1ed, |
0xeeeae4, |
0xece8df, |
0xebe6de, |
0xeae5dd, |
0xeae5dd, |
0xeae5de, |
0xeae8e4, |
0xf1f1f0, |
0xfbfbfb, |
0xfefefe, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 5 */ |
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, |
0xfefefd, |
0xf9f9f8, |
0xf4f2ef, |
0xefebe5, |
0xf0ece5, |
0xeeeae4, |
0xe3e0db, |
0xdfdcd8, |
0xe2e0db, |
0xeeebe6, |
0xeeebe5, |
0xeae5dd, |
0xe8e4db, |
0xe5e1db, |
0xe9e9e8, |
0xfafafa, |
0xfefefe, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 6 */ |
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, |
0xfefefd, |
0xfaf9f9, |
0xf4f3ef, |
0xefece6, |
0xf0ece5, |
0xeeebe5, |
0xdfdcd7, |
0xc6c4bd, |
0xbebcb5, |
0xcfcdc8, |
0xd3d2cd, |
0xd1cfca, |
0xc0beb7, |
0xcccac3, |
0xeae7e3, |
0xe9e5dd, |
0xe7e3da, |
0xdedbd8, |
0xe8e8e7, |
0xfbfbfb, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 7 */ |
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, |
0xfefefe, |
0xfafafa, |
0xf5f4f0, |
0xf1eee8, |
0xf0ece4, |
0xf0ede7, |
0xe1ded9, |
0xc9c7c1, |
0xbebcb4, |
0xd1cfca, |
0xecebe8, |
0xf9f9f7, |
0xfaf9f7, |
0xf8f6f4, |
0xf7f5f2, |
0xf4f3f1, |
0xdcdad6, |
0xc2c0b9, |
0xe6e4de, |
0xe5e2dc, |
0xe2ddd8, |
0xd7d5d4, |
0xf2f2f1, |
0xfefefe, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 8 */ |
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, |
0xfefefe, |
0xfbfbfb, |
0xf6f5f2, |
0xf1eee9, |
0xf1ede5, |
0xf1ede6, |
0xe4e1db, |
0xcecbc4, |
0xbebcb5, |
0xcfcdc8, |
0xe7e6e4, |
0xf8f8f6, |
0xfafaf8, |
0xf9f7f5, |
0xf7f5f2, |
0xf5f3f0, |
0xf5f3f0, |
0xf5f3f0, |
0xf4f2ef, |
0xf4f2ef, |
0xd9d7d2, |
0xc8c5bf, |
0xe9e5e0, |
0xe4dfd8, |
0xd5d2ce, |
0xe1e1e1, |
0xfbfbfb, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 9 */ |
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, |
0xfefefe, |
0xfbfbfb, |
0xf7f6f3, |
0xf2efea, |
0xf1ede6, |
0xf1eee7, |
0xe5e3de, |
0xd0cec7, |
0xbfbdb5, |
0xcdcbc5, |
0xe4e3e0, |
0xf7f7f6, |
0xfbfaf9, |
0xf9f8f6, |
0xf8f6f3, |
0xf7f5f2, |
0xf6f4f1, |
0xf5f3f0, |
0xf5f3f0, |
0xf4f2ef, |
0xf4f2ef, |
0xf4f2ef, |
0xf3f1ee, |
0xf1efeb, |
0xc5c2bb, |
0xe2dfdb, |
0xe5e0da, |
0xded9d3, |
0xd3d2d1, |
0xf4f4f4, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 10 */ |
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, |
0xfefefe, |
0xfcfcfb, |
0xf8f6f4, |
0xf3f0eb, |
0xf1eee7, |
0xf2efe8, |
0xe8e5df, |
0xd3d1cb, |
0xc0beb6, |
0xcbc9c3, |
0xe1e0dc, |
0xf5f4f3, |
0xfbfaf8, |
0xfaf9f7, |
0xf8f7f4, |
0xf8f6f3, |
0xf7f5f2, |
0xf7f5f2, |
0xf6f4f1, |
0xf5f3f0, |
0xf5f3f0, |
0xf4f2ef, |
0xf4f2ef, |
0xf3f1ee, |
0xf3f1ee, |
0xf2f0ec, |
0xf2efec, |
0xdbd9d4, |
0xcdcbc4, |
0xe8e4de, |
0xe3ded7, |
0xd0cecb, |
0xe7e7e6, |
0xfdfdfc, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 11 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfefefe, |
0xfcfcfb, |
0xf8f7f4, |
0xf4f1ed, |
0xf2eee8, |
0xf3efe9, |
0xeae7e1, |
0xd6d4cd, |
0xc3c1b9, |
0xcac8c2, |
0xdddcd8, |
0xf3f2f1, |
0xfafaf8, |
0xfbfaf7, |
0xf9f7f5, |
0xf8f6f4, |
0xf8f6f3, |
0xf7f5f2, |
0xf7f5f2, |
0xf6f4f1, |
0xf6f4f1, |
0xf5f3f0, |
0xf5f3f0, |
0xf4f2ef, |
0xf3f1ee, |
0xf3f1ee, |
0xf3f1ed, |
0xf2f0ec, |
0xf1efeb, |
0xf1eeeb, |
0xece9e5, |
0xc3c1ba, |
0xe5e3de, |
0xe3ded7, |
0xd9d5d0, |
0xd6d5d5, |
0xf7f7f7, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 12 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfefefe, |
0xfcfcfc, |
0xf9f8f5, |
0xf5f2ee, |
0xf3efe8, |
0xf4f0e9, |
0xece9e3, |
0xd9d7d1, |
0xc4c2bb, |
0xc8c6c0, |
0xd9d8d4, |
0xf1f0ef, |
0xfaf9f8, |
0xfbfaf8, |
0xfaf8f5, |
0xf9f7f4, |
0xf8f6f4, |
0xf8f6f3, |
0xf8f6f3, |
0xf7f5f2, |
0xf7f5f2, |
0xf6f4f1, |
0xf5f3f0, |
0xf5f3f0, |
0xf4f2ef, |
0xf4f2ef, |
0xf3f1ee, |
0xf3f1ee, |
0xf2f0ec, |
0xf2efec, |
0xf1eeeb, |
0xf1eeeb, |
0xf0edea, |
0xf0ede9, |
0xd2cfc9, |
0xd3d2cc, |
0xe4e0db, |
0xded9d3, |
0xcfccca, |
0xededec, |
0xfefefe, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 13 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfdfdfd, |
0xf9f9f7, |
0xf5f3f0, |
0xf3efe8, |
0xf4f0e9, |
0xeeeae5, |
0xdddad4, |
0xc7c4bd, |
0xc7c6bf, |
0xd7d6d1, |
0xeeedeb, |
0xf9f9f8, |
0xfcfbfa, |
0xfaf9f6, |
0xf9f7f4, |
0xf9f7f4, |
0xf9f7f4, |
0xf8f6f4, |
0xf8f6f3, |
0xf7f5f2, |
0xf7f5f2, |
0xf7f5f2, |
0xf6f4f1, |
0xf5f3f0, |
0xf5f3f0, |
0xf4f2ef, |
0xf3f1ee, |
0xf3f1ee, |
0xf3f1ed, |
0xf2f0ec, |
0xf1efeb, |
0xf1eeeb, |
0xf1eeea, |
0xf0ede9, |
0xefece8, |
0xefece8, |
0xe4e2dd, |
0xc4c2bb, |
0xe5e2de, |
0xdfdad3, |
0xd3d0cb, |
0xdbdbdb, |
0xfafafa, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 14 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfdfdfd, |
0xfaf9f7, |
0xf6f4f0, |
0xf3f0e9, |
0xf4f0ea, |
0xefece6, |
0xdfddd7, |
0xcbc8c1, |
0xc7c5be, |
0xd4d3ce, |
0xebebe8, |
0xf8f8f6, |
0xfcfcfa, |
0xfbfaf7, |
0xfaf9f6, |
0xf9f7f5, |
0xf9f7f4, |
0xf9f7f4, |
0xf9f7f4, |
0xf8f6f4, |
0xf7f5f2, |
0xf7f5f2, |
0xf7f5f2, |
0xf7f5f2, |
0xf6f4f1, |
0xf5f3f0, |
0xf4f2ef, |
0xf4f2ef, |
0xf3f1ee, |
0xf3f1ed, |
0xf2f0ec, |
0xf2efec, |
0xf1eeeb, |
0xf1eeeb, |
0xf0edea, |
0xf0ede9, |
0xefece8, |
0xefece8, |
0xeeebe7, |
0xedeae6, |
0xc8c6bf, |
0xdcdad5, |
0xe1dcd6, |
0xdbd7d0, |
0xd0cfcd, |
0xf1f0f0, |
0xfefefe, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 15 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfefefe, |
0xfafaf9, |
0xf7f5f1, |
0xf4f1ea, |
0xf5f1ea, |
0xf1ede7, |
0xe2e0da, |
0xcccac3, |
0xc6c5be, |
0xd1cfca, |
0xe9e8e6, |
0xf8f7f6, |
0xfcfcfb, |
0xfbfaf8, |
0xfaf9f6, |
0xfaf9f6, |
0xf9f8f5, |
0xf9f7f4, |
0xf9f7f4, |
0xf9f7f4, |
0xf8f6f4, |
0xf8f6f3, |
0xf7f5f2, |
0xf7f5f2, |
0xf7f5f2, |
0xf6f4f1, |
0xf5f3f0, |
0xf4f2ef, |
0xf4f2ef, |
0xf3f1ee, |
0xf3f1ee, |
0xf2f0ed, |
0xf2f0ec, |
0xf2efec, |
0xf1eeeb, |
0xf1eeeb, |
0xf0edea, |
0xf0ede9, |
0xefece8, |
0xeeebe7, |
0xeeebe7, |
0xedeae6, |
0xedeae5, |
0xdedbd5, |
0xc7c6bf, |
0xe5e2dd, |
0xded9d3, |
0xcfcdc9, |
0xe2e2e2, |
0xfbfbfb, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 16 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfefefe, |
0xfbfbf9, |
0xf6f3ed, |
0xf4f1e9, |
0xf4f1eb, |
0xe7e4df, |
0xcfcdc6, |
0xc7c5be, |
0xceccc7, |
0xe6e5e2, |
0xf7f6f5, |
0xfdfcfb, |
0xfcfbf9, |
0xfaf9f7, |
0xfaf9f6, |
0xfaf9f6, |
0xfaf9f6, |
0xf9f8f5, |
0xf9f7f4, |
0xf9f7f4, |
0xf9f7f4, |
0xf8f6f4, |
0xf8f6f3, |
0xf7f5f2, |
0xf7f5f2, |
0xf7f5f2, |
0xf6f4f1, |
0xf5f3f0, |
0xf4f2ef, |
0xf4f2ef, |
0xf3f1ee, |
0xe0dedb, |
0xb4b2b1, |
0xb6b5b4, |
0xe0dddb, |
0xf1eeeb, |
0xf1eeea, |
0xf0ede9, |
0xefece8, |
0xefece8, |
0xeeebe7, |
0xeeebe7, |
0xedeae6, |
0xece9e5, |
0xece9e4, |
0xe8e6e1, |
0xc3c1ba, |
0xdfddd9, |
0xddd9d3, |
0xd6d3cd, |
0xd3d2d1, |
0xf5f5f4, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 17 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfafaf9, |
0xf4f0e8, |
0xf5f1ea, |
0xf3f1ed, |
0xcbc9c3, |
0xcac8c2, |
0xe3e2df, |
0xf5f4f3, |
0xfdfcfb, |
0xfdfbfa, |
0xfcfaf8, |
0xfbf9f7, |
0xfaf9f6, |
0xfaf9f6, |
0xfaf9f6, |
0xf9f8f5, |
0xf9f7f4, |
0xf9f7f4, |
0xf9f7f4, |
0xf8f6f4, |
0xf8f6f4, |
0xf7f5f2, |
0xf7f5f2, |
0xf7f5f2, |
0xf7f5f2, |
0xf6f4f1, |
0xf4f2ef, |
0xf4f2ef, |
0xf3f1ee, |
0xf3f1ee, |
0xe1dedc, |
0x7f7e7e, |
0x706f6f, |
0x757374, |
0x8c8c8b, |
0xe1dedb, |
0xf0ede9, |
0xefece8, |
0xefece8, |
0xeeebe7, |
0xedeae6, |
0xedeae5, |
0xece9e4, |
0xebe9e4, |
0xeae8e3, |
0xeae8e3, |
0xd4d2cb, |
0xcdcbc5, |
0xe1ded8, |
0xdad6cf, |
0xcdcbc8, |
0xe8e8e8, |
0xfdfdfd, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 18 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfcfcfc, |
0xf4f0eb, |
0xf4f0e7, |
0xf8f6f3, |
0xc6c4bd, |
0xdcdad7, |
0xfbfbfa, |
0xfdfcfb, |
0xfcfaf8, |
0xfcfaf8, |
0xfbfaf7, |
0xfaf9f6, |
0xfaf9f6, |
0xfaf9f6, |
0xfaf9f6, |
0xf9f7f5, |
0xf9f7f4, |
0xf9f7f4, |
0xf8f6f4, |
0xf8f6f4, |
0xf8f6f3, |
0xf7f5f2, |
0xf7f5f2, |
0xf7f5f2, |
0xf6f4f1, |
0xf5f3f0, |
0xf4f2ef, |
0xf4f2ef, |
0xf3f1ee, |
0xf3f1ee, |
0xf3f1ed, |
0xb3b1af, |
0x716f70, |
0x7c7b7b, |
0x898989, |
0x8f8e8e, |
0xbdbbba, |
0xeeebe7, |
0xeeebe7, |
0xeeebe7, |
0xedeae6, |
0xece9e5, |
0xece9e4, |
0xebe8e3, |
0xeae8e3, |
0xe9e7e2, |
0xe8e6e1, |
0xe2e0db, |
0xc1bfb8, |
0xe2dfdb, |
0xdad7d0, |
0xd2d0cb, |
0xd7d7d7, |
0xf8f8f7, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 19 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf0f0ef, |
0xf1ede4, |
0xf8f6f0, |
0xdbd9d4, |
0xd3d2cd, |
0xfdfcfb, |
0xfcfbf9, |
0xfcfaf8, |
0xfcfaf8, |
0xfbfaf7, |
0xfaf9f6, |
0xfaf9f6, |
0xfaf9f6, |
0xf9f8f5, |
0xf9f7f5, |
0xf9f7f4, |
0xf9f7f4, |
0xf8f6f4, |
0xf8f6f4, |
0xf8f6f3, |
0xf7f5f2, |
0xf7f5f2, |
0xf6f4f1, |
0xf5f3f0, |
0xf4f2ef, |
0xf4f2ef, |
0xf4f2ef, |
0xf3f1ee, |
0xf3f1ee, |
0xf2f0ed, |
0xf2f0ec, |
0xaeacab, |
0x7a7979, |
0x8f8e8e, |
0xa3a2a2, |
0xabaaab, |
0xafaead, |
0xe8e5e1, |
0xeeebe7, |
0xedeae6, |
0xece9e4, |
0xebe8e4, |
0xeae8e3, |
0xe9e7e2, |
0xe9e7e2, |
0xe8e6e1, |
0xe7e5e0, |
0xe7e4df, |
0xcac8c1, |
0xd4d2cc, |
0xdcd9d3, |
0xd6d3ce, |
0xcdccca, |
0xeeeeed, |
0xfefefe, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 20 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfefefd, |
0xe1e0dd, |
0xf0ebe2, |
0xfbfaf7, |
0xc3c1ba, |
0xf3f2f0, |
0xfcfbf9, |
0xfcfaf8, |
0xfcfaf8, |
0xfbf9f7, |
0xfaf9f6, |
0xfaf9f6, |
0xfaf9f6, |
0xf9f8f5, |
0xf9f7f4, |
0xf9f7f4, |
0xf8f6f4, |
0xf8f6f4, |
0xf8f6f4, |
0xf7f5f2, |
0xf7f5f2, |
0xf7f5f2, |
0xf6f4f1, |
0xf5f3f0, |
0xf4f2ef, |
0xf4f2ef, |
0xf3f1ee, |
0xf3f1ee, |
0xf3f1ee, |
0xf2f0ec, |
0xf2f0ec, |
0xf1eeeb, |
0xd5d3d1, |
0x838282, |
0x9d9c9c, |
0xb4b3b3, |
0xbdbcbd, |
0xb6b5b5, |
0xd7d4d1, |
0xedeae6, |
0xece9e5, |
0xeae8e3, |
0xeae8e3, |
0xe9e7e2, |
0xe9e7e2, |
0xe7e5e0, |
0xe7e4df, |
0xe6e3de, |
0xe5e2dd, |
0xdbd8d3, |
0xc3c0ba, |
0xe1ded9, |
0xd8d4ce, |
0xcdcac6, |
0xdedddd, |
0xfafafa, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 21 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfcfcfc, |
0xd2d1cd, |
0xefeae1, |
0xfcfaf8, |
0xc3c1ba, |
0xf9f8f7, |
0xfcfaf8, |
0xfcfaf8, |
0xfbf9f7, |
0xfaf9f6, |
0xfaf9f6, |
0xfaf9f6, |
0xf9f7f5, |
0xf9f7f4, |
0xf9f7f4, |
0xf8f6f4, |
0xf8f6f4, |
0xf8f6f3, |
0xf7f5f2, |
0xf7f5f2, |
0xf0eeeb, |
0xebe9e6, |
0xf3f1ee, |
0xf4f2ef, |
0xf4f2ef, |
0xf3f1ee, |
0xf3f1ee, |
0xf3f1ed, |
0xf2f0ec, |
0xf2efec, |
0xf1eeeb, |
0xf1eeea, |
0xefece9, |
0x9c9b9a, |
0xa1a0a0, |
0xb9b7b8, |
0xc2c0c1, |
0xbfbdbe, |
0xc2c1c0, |
0xe9e6e2, |
0xeae8e3, |
0xe9e7e2, |
0xe9e7e2, |
0xe8e6e1, |
0xe7e5e0, |
0xe7e4df, |
0xe6e3de, |
0xe5e2dd, |
0xe4e1dc, |
0xe3dfda, |
0xc4c1ba, |
0xdbd9d4, |
0xd8d5ce, |
0xd4d0cb, |
0xcfcecd, |
0xf2f2f2, |
0xfefefe, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfdfdfd, |
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, |
0xe3e3e3, |
0xbbbbbb, |
0x9d9d9d, |
0x989898, |
0xa4a4a4, |
0xbfbfbf, |
0xeaeaea, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf1f1f1, |
0xc4c4c4, |
0xa6a6a6, |
0x989898, |
0xa2a2a2, |
0xc5c5c5, |
0xf1f0f0, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 22 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfbfbfb, |
0xb9b8b6, |
0xeae5dd, |
0xf9f6f3, |
0xc4c2bb, |
0xf2f2f0, |
0xfbfaf7, |
0xfaf9f6, |
0xfaf9f6, |
0xfaf9f6, |
0xf9f8f5, |
0xf9f7f5, |
0xf9f7f4, |
0xf8f6f4, |
0xf8f6f4, |
0xf8f6f4, |
0xf8f6f3, |
0xf7f5f2, |
0xf6f4f1, |
0xd2d0ce, |
0x908f8e, |
0x888686, |
0xb3b1b0, |
0xedebe8, |
0xf3f1ee, |
0xf3f1ee, |
0xf3f1ed, |
0xf2f0ec, |
0xf2efec, |
0xf1eeeb, |
0xf0edea, |
0xf0ede9, |
0xefece8, |
0xc6c4c2, |
0x9c9b9b, |
0xb4b3b3, |
0xc1bfc0, |
0xc1c0c0, |
0xbab9b9, |
0xdeddd9, |
0xe9e7e2, |
0xe9e7e2, |
0xe7e5e0, |
0xe7e4df, |
0xe7e4df, |
0xe5e2dd, |
0xe4e1dc, |
0xe4e0db, |
0xe4e0db, |
0xe3dfda, |
0xd4d1cb, |
0xc6c4bd, |
0xdfdcd7, |
0xd7d3cc, |
0xcbc9c6, |
0xe4e4e4, |
0xfcfcfc, |
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, |
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, |
0xcbcbcb, |
0x5f5f5f, |
0x343434, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x363636, |
0x737272, |
0xdedede, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf2f1f1, |
0x8e8e8e, |
0x3b3b3b, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x393939, |
0x8a8a8a, |
0xf2f2f2, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 23 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfbfbfb, |
0xbbbbba, |
0xc8c4bd, |
0xf4f1eb, |
0xd6d4cf, |
0xdbd9d5, |
0xfaf9f6, |
0xfaf9f6, |
0xfaf9f6, |
0xf9f8f5, |
0xf9f7f4, |
0xf9f7f4, |
0xf8f6f4, |
0xf8f6f4, |
0xf8f6f4, |
0xf7f5f3, |
0xf7f5f2, |
0xf6f4f1, |
0xe4e2df, |
0x7f7e7e, |
0x717071, |
0x7a7878, |
0x807f7f, |
0xbbbab9, |
0xf3f1ee, |
0xf2f0ec, |
0xf2f0ec, |
0xf1eeeb, |
0xf1eeeb, |
0xf0edea, |
0xf0ede9, |
0xefece8, |
0xefece8, |
0xe7e4e0, |
0x999897, |
0xacabab, |
0xbebcbd, |
0xc3c1c2, |
0xbebcbd, |
0xc9c8c7, |
0xe7e5e0, |
0xe7e5e0, |
0xe7e4df, |
0xe6e3de, |
0xe5e2dd, |
0xe4e1dc, |
0xe4e0db, |
0xe3dfda, |
0xe3dfda, |
0xe2ded9, |
0xdedad5, |
0xc0beb6, |
0xdedad5, |
0xd6d2cb, |
0xd1cec8, |
0xd2d2d2, |
0xf6f6f6, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
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, |
0xb0afaf, |
0x383838, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x414141, |
0xc8c8c8, |
0xffffff, |
0xefefef, |
0x626262, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x575656, |
0xefefef, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 24 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfdfdfc, |
0xd9d9d9, |
0x9a9893, |
0xede9e0, |
0xefede8, |
0xc3c1bb, |
0xf7f6f3, |
0xfaf9f6, |
0xf9f8f5, |
0xf9f7f4, |
0xf8f6f4, |
0xf8f6f4, |
0xf8f6f4, |
0xf8f6f3, |
0xf7f5f2, |
0xf7f5f2, |
0xf6f4f1, |
0xf5f3f0, |
0xcac9c7, |
0x717071, |
0x7e7e7e, |
0x908f8f, |
0x9a9998, |
0xa5a4a3, |
0xebeae6, |
0xf2efec, |
0xf1eeeb, |
0xf0edea, |
0xf0ede9, |
0xefece8, |
0xefece8, |
0xeeebe7, |
0xeeebe7, |
0xedeae6, |
0xb5b3b1, |
0xa2a1a1, |
0xb8b7b7, |
0xc2c0c1, |
0xc1bfc0, |
0xbcbaba, |
0xe1dfda, |
0xe7e4df, |
0xe6e3de, |
0xe5e1dc, |
0xe4e0db, |
0xe4e0db, |
0xe3dfda, |
0xe2deda, |
0xe1ddd8, |
0xe1ddd8, |
0xe0dbd6, |
0xcbc8c1, |
0xceccc7, |
0xdad7d1, |
0xd4d0ca, |
0xcbc9c7, |
0xeaeae9, |
0xfdfdfd, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
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, |
0xd6d6d6, |
0x3b3b3b, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x555555, |
0xececec, |
0x919191, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x7e7e7e, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 25 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfefefe, |
0xe9e9e9, |
0x989694, |
0xd8d4cc, |
0xf5f3ed, |
0xc8c6bf, |
0xe8e6e2, |
0xf9f7f5, |
0xf9f7f4, |
0xf8f6f4, |
0xf8f6f4, |
0xf8f6f4, |
0xf7f5f3, |
0xf7f5f2, |
0xf6f4f1, |
0xf6f4f1, |
0xf5f3f0, |
0xf4f2ef, |
0xd8d6d4, |
0x7d7d7c, |
0x8f8e8e, |
0xa6a5a6, |
0xb3b2b3, |
0xb1b0b0, |
0xd7d5d2, |
0xf1eeeb, |
0xf0edea, |
0xf0ede9, |
0xefece8, |
0xefece8, |
0xeeebe7, |
0xedeae6, |
0xedeae6, |
0xece9e5, |
0xd3d0cd, |
0x999897, |
0xb1afb0, |
0xc0bebf, |
0xc3c1c2, |
0xbbbabb, |
0xd2d0cc, |
0xe5e2dd, |
0xe4e1dc, |
0xe4e0db, |
0xe3dfda, |
0xe3dfda, |
0xe2ded9, |
0xe1ddd8, |
0xe0dcd7, |
0xe0dbd6, |
0xdfdad5, |
0xd9d5cf, |
0xbfbdb6, |
0xdedcd8, |
0xd4d0ca, |
0xcccac6, |
0xd9d8d8, |
0xf9f9f9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
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, |
0x7a7a7a, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x494949, |
0x666565, |
0x3f3f3f, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x939392, |
0x4e4e4e, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x3f3f3f, |
0x686868, |
0x4c4c4c, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x343434, |
0xe8e7e7, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 26 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf5f5f4, |
0xbcbbba, |
0xaaa7a2, |
0xbebcb6, |
0xa19f9c, |
0xa5a4a1, |
0xf4f2f0, |
0xf8f6f4, |
0xf8f6f4, |
0xf8f6f3, |
0xf7f5f2, |
0xf7f5f2, |
0xf6f4f1, |
0xf6f4f1, |
0xf5f3f0, |
0xf4f2ef, |
0xf4f2ef, |
0xedebe8, |
0x9c9b9a, |
0x999898, |
0xb3b1b2, |
0xc0bebf, |
0xbebcbd, |
0xc2c0c0, |
0xefece9, |
0xefece8, |
0xefece8, |
0xeeebe7, |
0xeeebe7, |
0xedeae6, |
0xedeae6, |
0xe4e1de, |
0xc7c5c2, |
0x9b9a99, |
0x8d8c8c, |
0xa9a8a8, |
0xbdbbbb, |
0xc3c1c2, |
0xc0bebe, |
0xc1bfbe, |
0xe1ded9, |
0xe4e0db, |
0xe3dfda, |
0xe2deda, |
0xe1ddd9, |
0xe1ddd8, |
0xe0dbd6, |
0xe0dbd6, |
0xdedad5, |
0xdddad5, |
0xdcd8d3, |
0xc4c1bb, |
0xd5d3ce, |
0xd6d2cc, |
0xd2cec9, |
0xcbcac9, |
0xefefef, |
0xfefefe, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
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, |
0xf6f6f6, |
0x424242, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x565656, |
0xebebeb, |
0xffffff, |
0xd4d4d4, |
0x414141, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x414141, |
0x343434, |
0x323232, |
0x323232, |
0x323232, |
0x434343, |
0xe1e1e0, |
0xffffff, |
0xf1f1f1, |
0x575757, |
0x323232, |
0x323232, |
0x323232, |
0x333333, |
0xaeaeae, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 27 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfcfcfc, |
0xe0e0e0, |
0x8e8c89, |
0x696865, |
0x343434, |
0x343434, |
0xc8c7c7, |
0xf8f6f4, |
0xf7f5f3, |
0xf7f5f2, |
0xf6f4f1, |
0xf6f4f1, |
0xf6f4f1, |
0xf5f3f0, |
0xf4f2ef, |
0xf4f2ef, |
0xf3f1ee, |
0xf3f1ed, |
0xc4c2c1, |
0x989797, |
0xb3b1b2, |
0xc1bfc0, |
0xc2c0c1, |
0xbcbabb, |
0xe1dfdc, |
0xeeebe7, |
0xeeebe7, |
0xedeae6, |
0xebe8e4, |
0xdedbd8, |
0xb0aeac, |
0x828181, |
0x6f6e6f, |
0x797877, |
0x8c8c8c, |
0xa7a6a6, |
0xbab9ba, |
0xc3c1c2, |
0xc2c0c1, |
0xb9b8b8, |
0xd7d4d0, |
0xe3dfda, |
0xe2deda, |
0xe1ddd8, |
0xe0dcd7, |
0xe0dbd6, |
0xdfdad5, |
0xdedad5, |
0xddd9d4, |
0xdbd8d3, |
0xdad7d2, |
0xd2cfca, |
0xc0beb7, |
0xdddad6, |
0xd4d0ca, |
0xcbc8c5, |
0xdfdfdf, |
0xfbfbfb, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
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, |
0xdedede, |
0x3b3b3b, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x929291, |
0xffffff, |
0xffffff, |
0xfdfdfd, |
0x616161, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x5c5c5c, |
0xffffff, |
0xffffff, |
0xfefefe, |
0x848484, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x858585, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 28 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfefefe, |
0xefefef, |
0xacaaaa, |
0x83807c, |
0x403f3f, |
0x323232, |
0x7d7c7c, |
0xf4f2f0, |
0xf7f5f2, |
0xf6f4f1, |
0xf6f4f1, |
0xf5f3f0, |
0xf5f3f0, |
0xf4f2ef, |
0xf3f1ee, |
0xf3f1ee, |
0xf2f0ed, |
0xf2f0ec, |
0xe5e2e0, |
0x9e9d9d, |
0xacabab, |
0xbebcbd, |
0xc2c1c1, |
0xbdbcbc, |
0xcccac8, |
0xedeae6, |
0xe8e5e2, |
0xcdcbc9, |
0x9b9a98, |
0x767575, |
0x717070, |
0x777676, |
0x7e7e7d, |
0x8b8a8a, |
0x9c9b9b, |
0xafaeae, |
0xbdbcbc, |
0xc3c1c2, |
0xc3c1c2, |
0xbebdbd, |
0xc6c4c2, |
0xe1ddd9, |
0xe1dcd7, |
0xe0dbd6, |
0xe0dbd6, |
0xdfdad5, |
0xddd9d4, |
0xddd9d4, |
0xdbd8d3, |
0xdad7d2, |
0xd9d6d1, |
0xd8d5cf, |
0xc0bdb6, |
0xdbd9d4, |
0xd4d0ca, |
0xd1cdc8, |
0xcecdcc, |
0xf3f3f3, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfdfdfd, |
0xe0e0e0, |
0xbfbfbf, |
0xb4b4b4, |
0xc0c0c0, |
0xdfdfdf, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xebebeb, |
0xc8c8c8, |
0xb4b4b4, |
0xbababa, |
0xd5d4d4, |
0xfafafa, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf1f1f1, |
0xc7c7c7, |
0xb4b4b4, |
0xbfbfbf, |
0xdddddd, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xd5d5d5, |
0x393939, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0xb1b1b1, |
0xffffff, |
0xffffff, |
0xffffff, |
0x787878, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x474747, |
0xebebeb, |
0xffffff, |
0xffffff, |
0xa3a3a3, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x747474, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 29 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf9f9f9, |
0xd0d0d0, |
0x8c8a85, |
0x595958, |
0x333333, |
0x414141, |
0xe0dfdc, |
0xf6f4f1, |
0xf6f4f1, |
0xf5f3f0, |
0xf5f3f0, |
0xf4f2ef, |
0xf3f1ee, |
0xf3f1ed, |
0xf2f0ec, |
0xf2efec, |
0xf1eeeb, |
0xf0edea, |
0xb7b5b4, |
0xa2a1a1, |
0xb9b8b8, |
0xc2c0c1, |
0xc1c0c0, |
0xbbb9ba, |
0xcac8c5, |
0x999797, |
0x747373, |
0x737272, |
0x7a7979, |
0x848382, |
0x8f8e8e, |
0x9a9999, |
0xa6a5a5, |
0xb1b0b1, |
0xbbb9ba, |
0xc1bfc0, |
0xc4c2c3, |
0xc4c2c3, |
0xc1bfc0, |
0xbbb9b9, |
0xdad6d2, |
0xe0dbd6, |
0xdfdbd6, |
0xdedad5, |
0xddd9d4, |
0xdcd8d3, |
0xdad7d2, |
0xdad7d2, |
0xd9d6d1, |
0xd9d6d0, |
0xd9d6d0, |
0xccc9c3, |
0xc6c4be, |
0xdbd8d3, |
0xd4d0ca, |
0xcac8c5, |
0xe6e6e6, |
0xfdfdfc, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfafafa, |
0xb1b0b0, |
0x505050, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x333333, |
0x5c5c5c, |
0xd1d1d1, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
0xffffff, |
0xffffff, |
0xffffff, |
0xcfcfcf, |
0x676767, |
0x363636, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x484847, |
0xacacac, |
0xfbfbfb, |
0xffffff, |
0xffffff, |
0xe2e2e2, |
0x4d4d4d, |
0x4e4e4e, |
0xa4a4a4, |
0xfaf9f9, |
0x979797, |
0x3b3b3b, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x585857, |
0xcbcbcb, |
0xffffff, |
0xffffff, |
0xd5d5d5, |
0x393939, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0xb1b1b1, |
0xffffff, |
0xffffff, |
0xffffff, |
0x787878, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x757575, |
0xf4f4f4, |
0xffffff, |
0xf2f2f2, |
0xe3e3e3, |
0xe3e3e3, |
0xe3e3e3, |
0xe4e4e4, |
0xebebeb, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 30 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfdfdfd, |
0xe9e9e9, |
0x9f9d9a, |
0x787672, |
0x393939, |
0x323232, |
0xa2a1a0, |
0xf6f4f1, |
0xf5f3f0, |
0xf4f2ef, |
0xf3f1ee, |
0xf3f1ee, |
0xf2f0ed, |
0xf2f0ec, |
0xf1efec, |
0xf1eeeb, |
0xf0edea, |
0xf0ede9, |
0xd8d6d3, |
0x999898, |
0xb1b0b0, |
0xbfbebe, |
0xc2c0c1, |
0xbbbabb, |
0xa9a8a8, |
0x929191, |
0x868585, |
0x8a8888, |
0x939292, |
0xa09f9f, |
0xabaaaa, |
0xb4b2b3, |
0xbbb9ba, |
0xc3c1c2, |
0xceccca, |
0xc3c1c2, |
0xc3c1c2, |
0xc3c1c2, |
0xc3c1c2, |
0xbcbbbb, |
0xcbc8c6, |
0xdfdad5, |
0xddd9d4, |
0xddd9d4, |
0xdbd8d3, |
0xdad7d2, |
0xdad7d2, |
0xd9d6d0, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d5cf, |
0xd5d1cb, |
0xbdbbb3, |
0xdcd9d6, |
0xd4d0ca, |
0xd0cdc7, |
0xd3d3d3, |
0xf7f7f7, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xffffff, |
0xffffff, |
0xf4f4f4, |
0x7b7a7a, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x373737, |
0xbcbcbc, |
0xffffff, |
0xffffff, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
0xffffff, |
0xffffff, |
0xa7a7a7, |
0x393939, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x343434, |
0x888888, |
0xf9f9f9, |
0xffffff, |
0xdedede, |
0x323232, |
0x323232, |
0x8f8f8f, |
0x7f7f7f, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x353535, |
0xc4c4c4, |
0xffffff, |
0xd5d5d5, |
0x393939, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0xb1b1b1, |
0xffffff, |
0xffffff, |
0xffffff, |
0x787878, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x424242, |
0x484848, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x595959, |
0xc7c7c7, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 31 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf4f4f4, |
0xbdbcbb, |
0x898782, |
0x4b4a4a, |
0x323232, |
0x5d5d5d, |
0xebe9e7, |
0xf4f2ef, |
0xf3f1ee, |
0xf2f0ed, |
0xf2f0ec, |
0xf1efec, |
0xf1eeeb, |
0xf0eeea, |
0xf0edea, |
0xf0ede9, |
0xefece8, |
0xe9e6e3, |
0xa7a6a5, |
0xa7a6a6, |
0xbcbabb, |
0xc3c1c2, |
0xc0bebf, |
0xb6b4b5, |
0xa8a7a7, |
0xa2a0a0, |
0xa5a5a5, |
0xafaeae, |
0xb8b6b6, |
0xbdbcbc, |
0xc9c7c6, |
0xd7d5d2, |
0xe2deda, |
0xe3dfda, |
0xc6c4c3, |
0xbdbbbc, |
0xc1bfc0, |
0xc3c1c2, |
0xc0bebf, |
0xbebcbc, |
0xdad7d2, |
0xdcd9d4, |
0xdbd8d3, |
0xdad7d2, |
0xdad7d1, |
0xd9d6d0, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d4cf, |
0xd7d3cd, |
0xd7d3cd, |
0xc4c2ba, |
0xd0cec8, |
0xd7d3cd, |
0xd3cfc9, |
0xc9c8c6, |
0xececec, |
0xfefefd, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xffffff, |
0xfafafa, |
0x838383, |
0x323232, |
0x323232, |
0x424242, |
0x9f9f9f, |
0xdbdbdb, |
0xe3e3e3, |
0xcfcfcf, |
0x858585, |
0x353535, |
0x323232, |
0x3a3a39, |
0xe3e3e3, |
0xffffff, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
0xffffff, |
0xb6b6b6, |
0x383838, |
0x323232, |
0x363636, |
0x818181, |
0xcfcfcf, |
0xe4e4e4, |
0xd9d9d9, |
0xa1a0a0, |
0x454545, |
0x323232, |
0x353535, |
0xaaaaaa, |
0xffffff, |
0xdedede, |
0x323232, |
0x323232, |
0x444343, |
0x323232, |
0x4b4b4b, |
0xa9a8a8, |
0xdedede, |
0xe3e3e3, |
0xc3c3c2, |
0x5d5d5d, |
0x323232, |
0x323232, |
0x525252, |
0xfafafa, |
0xd5d5d5, |
0x393939, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0xb1b1b1, |
0xffffff, |
0xffffff, |
0xffffff, |
0x787878, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x4f4f4f, |
0x6f6f6f, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x353535, |
0x777777, |
0xe7e7e7, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 32 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfcfcfb, |
0xe0e0e0, |
0x92908b, |
0x6a6966, |
0x353535, |
0x343434, |
0xc7c6c6, |
0xf3f1ee, |
0xf2f0ed, |
0xf2f0ec, |
0xf1efec, |
0xf1eeeb, |
0xf0edea, |
0xf0edea, |
0xefece9, |
0xefece8, |
0xeeebe7, |
0xeeebe7, |
0xc8c7c4, |
0x9c9b9b, |
0xb5b4b4, |
0xc1bfc0, |
0xc3c1c2, |
0xbfbdbe, |
0xbab8b9, |
0xb8b6b7, |
0xbab9ba, |
0xc1c0c0, |
0xd0cecc, |
0xdfdcd8, |
0xe4e0db, |
0xe3dfda, |
0xe3dfda, |
0xe2deda, |
0xcfccc9, |
0xafaeae, |
0xbab8b9, |
0xc1c0c0, |
0xc2c0c1, |
0xbab9b9, |
0xcfcdc9, |
0xdad7d2, |
0xdad7d2, |
0xd9d6d1, |
0xd9d6d0, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d4cf, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd2cec8, |
0xbdbbb3, |
0xdedbd7, |
0xd4d0ca, |
0xcbc9c5, |
0xdbdbda, |
0xfafafa, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0x515151, |
0x686868, |
0x686868, |
0x686868, |
0x686868, |
0x686868, |
0x686868, |
0x686868, |
0x686868, |
0x686868, |
0x686868, |
0x686868, |
0x454545, |
0x323232, |
0x323232, |
0xababab, |
0xffffff, |
0xc6c6c6, |
0x363636, |
0x323232, |
0x4e4e4e, |
0xdddddd, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfefefe, |
0xadacad, |
0x323232, |
0x323232, |
0x808080, |
0xfefefe, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
0xefefef, |
0x4c4c4c, |
0x323232, |
0x393939, |
0xb5b5b5, |
0xfefefe, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xd6d6d6, |
0x464646, |
0x323232, |
0x525252, |
0xeeeeee, |
0xdedede, |
0x323232, |
0x323232, |
0x323232, |
0x575757, |
0xececec, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf3f3f3, |
0x464646, |
0x323232, |
0x323232, |
0xd5d5d5, |
0xd5d5d5, |
0x393939, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0xb1b1b1, |
0xffffff, |
0xffffff, |
0xffffff, |
0x787878, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x525252, |
0xd3d3d3, |
0x4b4b4b, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x3d3d3d, |
0x9f9f9f, |
0xfcfcfc, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 33 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfefefe, |
0xefefef, |
0xacaba9, |
0x83807c, |
0x424141, |
0x323232, |
0x7c7c7b, |
0xf0efec, |
0xf2f0ec, |
0xf1eeec, |
0xf1eeeb, |
0xf0edea, |
0xf0edea, |
0xefece8, |
0xefece8, |
0xeeebe7, |
0xedeae6, |
0xedeae6, |
0xe2e0dc, |
0x9f9d9d, |
0xacabab, |
0xbebcbd, |
0xc3c1c2, |
0xc3c1c2, |
0xc3c1c2, |
0xc9c7c6, |
0xd8d6d3, |
0xe3e0dc, |
0xe5e2dd, |
0xe4e0db, |
0xe3dfda, |
0xe2deda, |
0xe2deda, |
0xe1ddd8, |
0xdcd8d4, |
0xa3a1a1, |
0xadacac, |
0xbdbcbc, |
0xc2c0c1, |
0xbebcbd, |
0xc1bfbe, |
0xd9d6d1, |
0xd9d6d0, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d5cf, |
0xd8d4ce, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xc0bdb5, |
0xd6d4d0, |
0xd4d0cb, |
0xd2cfc9, |
0xcbcac9, |
0xf1f1f0, |
0xfefefe, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0xababab, |
0xfbfbfb, |
0x757575, |
0x323232, |
0x3c3c3c, |
0xc6c6c6, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfbfbfb, |
0x605f5f, |
0x323232, |
0x393938, |
0xf3f3f3, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
0xacacac, |
0x343434, |
0x323232, |
0x939393, |
0xfdfdfd, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x9a9a9a, |
0x323232, |
0x353535, |
0xb8b8b8, |
0xdedede, |
0x323232, |
0x323232, |
0x3a3a3a, |
0xc6c6c6, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x8a8a8a, |
0x323232, |
0x323232, |
0xb2b2b2, |
0xd5d5d5, |
0x393939, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0xb1b1b1, |
0xffffff, |
0xffffff, |
0xffffff, |
0x787878, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x525252, |
0xefefef, |
0xd4d4d4, |
0x505050, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x333333, |
0x6e6e6e, |
0xf9f9f9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 34 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf8f8f7, |
0xcecdcd, |
0x8d8b86, |
0x5c5b59, |
0x333333, |
0x434343, |
0xdcdbd9, |
0xf1eeeb, |
0xf0eeea, |
0xf0edea, |
0xefece9, |
0xefece8, |
0xeeebe7, |
0xeeebe7, |
0xedeae6, |
0xece9e5, |
0xece9e5, |
0xeae8e3, |
0xb5b4b2, |
0xa1a0a0, |
0xb7b6b7, |
0xc2c1c1, |
0xc4c2c3, |
0xc6c4c5, |
0xe2dfdb, |
0xe5e2dd, |
0xe4e1dc, |
0xe3dfda, |
0xe3dfda, |
0xe2deda, |
0xe1ddd9, |
0xe0dcd7, |
0xe0dbd6, |
0xe0dbd6, |
0xb4b2b0, |
0xa09f9f, |
0xb7b6b7, |
0xc2c0c1, |
0xc1c0c0, |
0xbbb9b9, |
0xd3d1cc, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d4cf, |
0xd7d3ce, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xcdcac3, |
0xc0beb7, |
0xdddad5, |
0xd4d0ca, |
0xc9c7c4, |
0xe1e1e1, |
0xfcfcfc, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0xababab, |
0xe6e6e6, |
0x4b4b4b, |
0x323232, |
0x5b5b5b, |
0xfafafa, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xa8a8a7, |
0x323232, |
0x323232, |
0xbebebe, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
0x707070, |
0x323232, |
0x393939, |
0xdddddd, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xdadada, |
0x3e3e3e, |
0x323232, |
0x808080, |
0xdedede, |
0x323232, |
0x323232, |
0x535353, |
0xfafafa, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xb0b0b0, |
0x323232, |
0x323232, |
0xacacac, |
0xd5d5d5, |
0x393939, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0xb1b1b1, |
0xffffff, |
0xffffff, |
0xffffff, |
0x787878, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x525252, |
0xefefef, |
0xffffff, |
0xececec, |
0x7a7a7a, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x333333, |
0x8b8b8b, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 35 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfdfdfd, |
0xe8e7e7, |
0x9c9a96, |
0x797873, |
0x3a3a3a, |
0x323232, |
0xa2a1a0, |
0xf2efec, |
0xf0edea, |
0xefece9, |
0xefece8, |
0xeeebe7, |
0xeeebe7, |
0xedeae6, |
0xece9e5, |
0xece9e5, |
0xebe8e4, |
0xe9e7e2, |
0xd6d5d1, |
0x999898, |
0xb0afaf, |
0xbfbebe, |
0xc4c2c3, |
0xc3c1c2, |
0xd6d3d0, |
0xe4e0db, |
0xe3dfda, |
0xe2deda, |
0xe2deda, |
0xe1ddd8, |
0xe0dcd7, |
0xe0dbd6, |
0xdfdbd6, |
0xddd9d4, |
0xcecbc7, |
0x999999, |
0xaeadae, |
0xbebdbe, |
0xc3c1c2, |
0xbcbbbb, |
0xc9c7c3, |
0xd8d5cf, |
0xd8d4cf, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd3cfc9, |
0xbdbab3, |
0xdbd8d4, |
0xd4d0ca, |
0xd1cec8, |
0xcececd, |
0xf5f4f4, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xcbcbcb, |
0x323232, |
0x323232, |
0x878686, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xcacaca, |
0x323232, |
0x323232, |
0x9c9c9b, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xeaeaea, |
0x454545, |
0x323232, |
0x575757, |
0xf0f0f0, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xeaeaea, |
0x515151, |
0x323232, |
0x5d5d5d, |
0xdedede, |
0x323232, |
0x323232, |
0x777777, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xb4b4b4, |
0x323232, |
0x323232, |
0xacacac, |
0xd5d5d5, |
0x393939, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0xb1b1b1, |
0xffffff, |
0xffffff, |
0xffffff, |
0x787878, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x525252, |
0xefefef, |
0xffffff, |
0xffffff, |
0xfdfdfd, |
0xc1c1c1, |
0x525252, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x343434, |
0xe1e1e1, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 36 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf4f4f3, |
0xbabab9, |
0x898782, |
0x4e4d4c, |
0x323232, |
0x5e5e5e, |
0xe7e5e3, |
0xefece8, |
0xefece8, |
0xeeebe7, |
0xedeae6, |
0xedeae6, |
0xece9e5, |
0xebe8e4, |
0xeae8e3, |
0xe9e7e2, |
0xe9e7e2, |
0xe4e3de, |
0xa8a7a5, |
0xa6a5a5, |
0xbbb9ba, |
0xc3c1c2, |
0xc3c1c2, |
0xc4c1c1, |
0xe1ded9, |
0xe2deda, |
0xe1ddd9, |
0xe1ddd8, |
0xe0dbd6, |
0xe0dbd6, |
0xdedad5, |
0xddd9d4, |
0xdbd8d3, |
0xdad7d2, |
0xa4a3a2, |
0xa5a4a4, |
0xbab9b9, |
0xc2c0c1, |
0xc0bebf, |
0xcbc8c6, |
0xd8d4ce, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xc7c5be, |
0xc9c6c0, |
0xd9d5d0, |
0xd4d0ca, |
0xc9c8c5, |
0xe8e8e7, |
0xfdfdfd, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xb3b3b3, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x7e7e7e, |
0xfefefe, |
0x565656, |
0x323232, |
0x494949, |
0xd6d6d6, |
0x404040, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x4e4e4e, |
0xcecece, |
0x323232, |
0x323232, |
0x818181, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xb4b4b4, |
0x323232, |
0x323232, |
0xacacac, |
0xd5d5d5, |
0x393939, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0xb1b1b1, |
0xffffff, |
0xffffff, |
0xffffff, |
0x787878, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x525252, |
0xefefef, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf5f5f5, |
0x949494, |
0x373737, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x9d9d9d, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 37 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfbfbfb, |
0xdddddd, |
0x8f8d8a, |
0x6c6a68, |
0x363636, |
0x363636, |
0xc5c4c3, |
0xefece8, |
0xeeebe7, |
0xedeae6, |
0xece9e5, |
0xece9e5, |
0xebe8e4, |
0xeae7e3, |
0xe9e7e2, |
0xe8e6e1, |
0xe8e6e1, |
0xe7e5e0, |
0xc7c5c2, |
0x9a9a9a, |
0xb4b3b3, |
0xc1bfc0, |
0xc3c1c2, |
0xbdbbbc, |
0xd5d2ce, |
0xe1ddd9, |
0xe0dcd7, |
0xe0dbd6, |
0xdfdad5, |
0xdedad5, |
0xdcd8d3, |
0xdbd8d3, |
0xdad7d2, |
0xdad7d2, |
0xc6c3c0, |
0x9f9d9d, |
0xb2b1b2, |
0xc1bfc0, |
0xc5c3c3, |
0xd4d0cc, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd1cec7, |
0xbbb8b1, |
0xdddad6, |
0xd4d0ca, |
0xcfcbc6, |
0xd4d4d4, |
0xf8f8f8, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xa5a5a5, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x7a7a7a, |
0xfefefe, |
0x565656, |
0x323232, |
0x494949, |
0xcbcbcb, |
0x3d3d3d, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x4d4d4d, |
0xcccccc, |
0x323232, |
0x323232, |
0x818181, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xb4b4b4, |
0x323232, |
0x323232, |
0xacacac, |
0xd5d5d5, |
0x393939, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0xb1b1b1, |
0xffffff, |
0xffffff, |
0xffffff, |
0x787878, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x424242, |
0xa4a4a4, |
0xb4b4b4, |
0xb4b4b4, |
0xb4b4b4, |
0xdadada, |
0xffffff, |
0xfefefe, |
0xc6c6c6, |
0x3d3d3d, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x7b7b7b, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 38 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfefefe, |
0xefeeee, |
0xaaa8a7, |
0x827f7b, |
0x434242, |
0x323232, |
0x7d7d7c, |
0xeeece9, |
0xedeae6, |
0xece9e5, |
0xebe8e4, |
0xeae8e3, |
0xe9e7e2, |
0xe9e7e2, |
0xe8e6e1, |
0xe8e5e0, |
0xe7e4df, |
0xe6e3de, |
0xdddad6, |
0x9d9c9b, |
0xabaaaa, |
0xbdbcbc, |
0xc3c1c2, |
0xbfbdbe, |
0xc3c1c0, |
0xe0dcd7, |
0xe0dbd6, |
0xdedad5, |
0xddd9d4, |
0xdbd8d3, |
0xdbd8d3, |
0xdad7d2, |
0xdad7d2, |
0xd9d6d1, |
0xd8d5d0, |
0xcac8c3, |
0xc0bebc, |
0xc9c7c5, |
0xd4d0cc, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd4d0ca, |
0xd2cfc8, |
0xc1beb8, |
0xc7c4be, |
0xd5d1cb, |
0xd4d0ca, |
0xc3c0b9, |
0xd3d1cc, |
0xd6d2cc, |
0xd3cfca, |
0xc8c7c6, |
0xeeeeed, |
0xfefefe, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xa8a8a8, |
0x323232, |
0x323232, |
0x747474, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xe0e0e0, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xcecece, |
0x3e3e3e, |
0x323232, |
0x505050, |
0xc4c4c4, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xcfcfcf, |
0xd5d5d5, |
0xd9d9d9, |
0x323232, |
0x323232, |
0x818181, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xb4b4b4, |
0x323232, |
0x323232, |
0xacacac, |
0xd5d5d5, |
0x393939, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0xb1b1b1, |
0xffffff, |
0xffffff, |
0xffffff, |
0x787878, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x9a9a9a, |
0xffffff, |
0xffffff, |
0xfefefe, |
0x898988, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x696969, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 39 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf8f8f7, |
0xcbcbcb, |
0x8d8a86, |
0x5e5d5b, |
0x343433, |
0x454545, |
0xd9d8d6, |
0xece9e5, |
0xebe8e4, |
0xe9e7e2, |
0xe9e7e2, |
0xe8e6e1, |
0xe8e6e1, |
0xe7e5e0, |
0xe6e4df, |
0xe5e2dd, |
0xe5e2dd, |
0xe4e0db, |
0xb7b5b3, |
0xa09fa0, |
0xb7b6b6, |
0xc2c0c1, |
0xc1c0c0, |
0xbab8b8, |
0xd9d5d1, |
0xdedad5, |
0xdcd9d4, |
0xdbd8d3, |
0xdbd8d3, |
0xdad7d2, |
0xdad7d2, |
0xd9d6d0, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d5cf, |
0xd7d4ce, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xacaaa3, |
0x817f7b, |
0x93918e, |
0xd7d4d0, |
0xd4d0ca, |
0xcecac4, |
0xc3c1ba, |
0xe1deda, |
0xd4d0ca, |
0xcac8c4, |
0xdcdcdc, |
0xfafafa, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xc1c1c1, |
0x323232, |
0x323232, |
0x7c7c7c, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xe1e1e1, |
0x434343, |
0x323232, |
0x505050, |
0xededed, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xdedede, |
0x323232, |
0x323232, |
0x818181, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xb4b4b4, |
0x323232, |
0x323232, |
0xacacac, |
0xdedede, |
0x3b3b3b, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0xa3a3a3, |
0xffffff, |
0xffffff, |
0xffffff, |
0x6d6d6d, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x9a9a9a, |
0xffffff, |
0xffffff, |
0xffffff, |
0xa3a3a3, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x696969, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 40 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfdfdfd, |
0xe7e7e7, |
0x9a9896, |
0x797773, |
0x3b3b3b, |
0x323232, |
0xa2a1a0, |
0xedeae6, |
0xe9e7e2, |
0xe8e6e1, |
0xe8e6e1, |
0xe8e5e0, |
0xe7e4df, |
0xe6e3de, |
0xe5e2dd, |
0xe4e1dc, |
0xe4e0db, |
0xe3dfda, |
0xd3d0cd, |
0x999898, |
0xafaeae, |
0xbfbebe, |
0xc3c1c2, |
0xbcbbbb, |
0xc9c6c4, |
0xdcd8d3, |
0xdbd8d3, |
0xdad7d2, |
0xdad7d2, |
0xdad7d1, |
0xd9d6d0, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d4cf, |
0xd7d3ce, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xb5b3ae, |
0xadaba4, |
0xd2d0ca, |
0xe6e4e2, |
0xd4d0ca, |
0xd1cdc7, |
0xc2c0b9, |
0xe9e6e4, |
0xd4d0ca, |
0xd2cfc9, |
0xcac9c9, |
0xf3f3f3, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xdfdfdf, |
0x414141, |
0x323232, |
0x535353, |
0xf8f8f8, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xcfcfcf, |
0x7d7d7d, |
0x7d7d7d, |
0xcacaca, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
0x5f5f5f, |
0x323232, |
0x353535, |
0xd7d7d7, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xebebeb, |
0x898989, |
0x7d7d7d, |
0xa2a2a2, |
0xdedede, |
0x323232, |
0x323232, |
0x818181, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xb4b4b4, |
0x323232, |
0x323232, |
0xacacac, |
0xf6f6f6, |
0x3e3e3e, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x747474, |
0xfbfbfb, |
0xffffff, |
0xefeeee, |
0x515151, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x717170, |
0xffffff, |
0xffffff, |
0xfcfcfc, |
0x7f7f7f, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x828282, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 41 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf4f4f3, |
0xb9b9b8, |
0x898781, |
0x4f4e4d, |
0x323232, |
0x5f5f5f, |
0xe5e3e1, |
0xe8e6e1, |
0xe8e6e1, |
0xe7e5e0, |
0xe7e4df, |
0xe6e3de, |
0xe5e2dd, |
0xe4e1dc, |
0xe4e0db, |
0xe3dfda, |
0xe2deda, |
0xdedad7, |
0xa8a6a5, |
0xa5a4a4, |
0xbbb9ba, |
0xc2c0c1, |
0xc0bebf, |
0xc1bfbe, |
0xdbd8d3, |
0xdad7d2, |
0xdad7d2, |
0xd9d6d1, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d5cf, |
0xd8d4cf, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd6d2cc, |
0xe5e3e0, |
0xecebe8, |
0xdad6d1, |
0xd4d0ca, |
0xcbc8c2, |
0xc7c5bf, |
0xeae8e6, |
0xd4d0ca, |
0xd3cfc9, |
0xbfbebc, |
0xeaeaea, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xf8f8f8, |
0x6a696a, |
0x323232, |
0x383838, |
0xb8b8b8, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfcfcfc, |
0x6c6c6c, |
0x323232, |
0x323232, |
0xe1e1e1, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
0xa1a0a0, |
0x333333, |
0x323232, |
0x848484, |
0xfbfbfb, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xa8a8a7, |
0x323232, |
0x323232, |
0xa3a3a3, |
0xdedede, |
0x323232, |
0x323232, |
0x818181, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xb4b4b4, |
0x323232, |
0x323232, |
0xacacac, |
0xffffff, |
0x696969, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x373737, |
0x9b9b9a, |
0xcccccc, |
0x878686, |
0x353535, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x5c5c5c, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x393939, |
0x969595, |
0xcecece, |
0xa4a4a4, |
0x3b3b3b, |
0x323232, |
0x323232, |
0x323232, |
0x333333, |
0xaeaeae, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 42 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfbfbfa, |
0xdbdbdb, |
0x918e8b, |
0x6d6c68, |
0x363636, |
0x363636, |
0xbfbebd, |
0xe9e7e2, |
0xe7e5e0, |
0xe6e4df, |
0xe5e2dd, |
0xe4e1dc, |
0xe4e1dc, |
0xe3dfda, |
0xe2deda, |
0xe1ddd9, |
0xe1ddd9, |
0xe0dcd7, |
0xc5c2bf, |
0x9a9999, |
0xb3b2b3, |
0xc1bfc0, |
0xc3c1c2, |
0xcac8c6, |
0xdad7d2, |
0xdad7d2, |
0xd9d6d1, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d5cf, |
0xd7d4ce, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd3cfc9, |
0xbdbbb3, |
0xdeddd9, |
0xe3e0dc, |
0xd4d0ca, |
0xd3cfc9, |
0xb5b4b3, |
0xe4e4e4, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xffffff, |
0xc3c3c3, |
0x363636, |
0x323232, |
0x494949, |
0xd4d4d4, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf8f8f8, |
0x8f8f8f, |
0x323232, |
0x323232, |
0x767676, |
0xfefefe, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
0xececec, |
0x4b4b4b, |
0x323232, |
0x373736, |
0xacacac, |
0xfbfbfb, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfdfdfd, |
0xbababa, |
0x414141, |
0x323232, |
0x4f4f4f, |
0xe7e7e7, |
0xdedede, |
0x323232, |
0x323232, |
0x818181, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xb4b4b4, |
0x323232, |
0x323232, |
0xacacac, |
0xffffff, |
0xacacac, |
0x343434, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x3d3d3d, |
0xa3a3a3, |
0x3a3a3a, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x3b3b3b, |
0xefeeee, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 43 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfefefe, |
0xeeeeee, |
0xa9a8a7, |
0x82807b, |
0x454544, |
0x323232, |
0x787877, |
0xeae8e4, |
0xe6e3de, |
0xe5e2dd, |
0xe4e1dc, |
0xe4e0db, |
0xe3dfda, |
0xe2deda, |
0xe1ddd9, |
0xe1dcd8, |
0xe0dbd6, |
0xdfdad5, |
0xdbd7d2, |
0xb5b3b1, |
0xadabac, |
0xbdbcbc, |
0xc8c6c6, |
0xd7d4d0, |
0xdad7d2, |
0xd9d6d0, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d4cf, |
0xd7d4ce, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd2cec8, |
0xc1beb6, |
0xc5c4bd, |
0xf4f3f1, |
0xd7d3cd, |
0xd4d0ca, |
0xccc9c3, |
0xadacac, |
0xe4e4e4, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xffffff, |
0xfbfbfb, |
0x8c8c8c, |
0x323232, |
0x323232, |
0x373737, |
0x777777, |
0xa9a9a9, |
0xb3b3b3, |
0x9b9b9b, |
0x545454, |
0x323232, |
0x323232, |
0x484848, |
0xe7e7e7, |
0xffffff, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
0xffffff, |
0xbfbfbf, |
0x3a3a3a, |
0x323232, |
0x323232, |
0x616161, |
0x9d9d9d, |
0xb4b4b4, |
0xa7a7a7, |
0x6c6b6b, |
0x353535, |
0x323232, |
0x3b3b3b, |
0xb6b6b6, |
0xffffff, |
0xdedede, |
0x323232, |
0x323232, |
0x818181, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xb4b4b4, |
0x323232, |
0x323232, |
0xacacac, |
0xffffff, |
0xf3f3f3, |
0x5c5c5c, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x868586, |
0xfafafa, |
0x8a8a8a, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x333333, |
0xa09f9f, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 44 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf7f7f7, |
0xcacaca, |
0x8b8984, |
0x5f5e5c, |
0x343434, |
0x454545, |
0xd5d4d2, |
0xe5e2dd, |
0xe4e1dc, |
0xe3e0db, |
0xe3dfda, |
0xe1ddd9, |
0xe1ddd9, |
0xe0dcd7, |
0xe0dbd6, |
0xdfdad5, |
0xddd9d4, |
0xddd9d4, |
0xdad7d2, |
0xd2d0cc, |
0xd4d2ce, |
0xd8d6d1, |
0xd9d6d1, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d5cf, |
0xd8d4cf, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd3cfc9, |
0xcecac3, |
0xc3c0b8, |
0xbbb9b1, |
0xcfcdc7, |
0xf2f1ef, |
0xdfdcd8, |
0xd4d0ca, |
0xd3cfc9, |
0x9c9a96, |
0xb4b3b3, |
0xeaeae9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7e7e7e, |
0x323232, |
0x323232, |
0xa9a9a9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0x7d7d7d, |
0x323232, |
0x323232, |
0xababab, |
0xffffff, |
0xffffff, |
0xf8f8f8, |
0x919191, |
0x373737, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x545454, |
0xe1e1e1, |
0xffffff, |
0xffffff, |
0xffffff, |
0x565656, |
0x323232, |
0x494949, |
0xf2f2f2, |
0xffffff, |
0xffffff, |
0xbcbbbb, |
0x444444, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x424242, |
0xb5b5b5, |
0xffffff, |
0xffffff, |
0xdedede, |
0x323232, |
0x323232, |
0x818181, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xb4b4b4, |
0x323232, |
0x323232, |
0xacacac, |
0xffffff, |
0xffffff, |
0xe6e6e6, |
0x626262, |
0x333333, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x343434, |
0x7f7e7e, |
0xf4f4f4, |
0xffffff, |
0xf7f7f7, |
0x898989, |
0x343434, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x323232, |
0x343434, |
0x9a9a9a, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 45 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfdfdfd, |
0xe7e6e6, |
0x989795, |
0x797873, |
0x3c3c3c, |
0x323232, |
0x9c9c9b, |
0xe8e5e1, |
0xe3dfda, |
0xe2deda, |
0xe1ddd9, |
0xe1ddd8, |
0xe0dcd7, |
0xdfdbd6, |
0xdedad5, |
0xddd9d4, |
0xdcd8d3, |
0xdbd8d3, |
0xdbd8d3, |
0xdad7d2, |
0xdad7d2, |
0xd9d6d1, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d5cf, |
0xd7d4ce, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xcecbc5, |
0xc5c3bb, |
0xbdbab2, |
0xc2c0ba, |
0xd7d6d1, |
0xecebe9, |
0xeeedea, |
0xdcd9d4, |
0xd4d0ca, |
0xd3cfc9, |
0x9d9b97, |
0x6f6f6e, |
0xc3c2c2, |
0xf2f2f1, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xbfbfbf, |
0x989898, |
0x989898, |
0xd4d4d4, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xbebebe, |
0x989898, |
0x989898, |
0xd5d5d5, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfefefe, |
0xd8d8d7, |
0x868585, |
0x535353, |
0x353535, |
0x333333, |
0x454545, |
0x666565, |
0xadadad, |
0xf9f9f9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xababab, |
0x989898, |
0xa4a4a4, |
0xf9f9f9, |
0xffffff, |
0xffffff, |
0xffffff, |
0xebebeb, |
0x9d9d9d, |
0x605f5f, |
0x3b3b3b, |
0x323232, |
0x3d3d3d, |
0x5a5959, |
0x949494, |
0xe8e8e8, |
0xffffff, |
0xffffff, |
0xffffff, |
0xeeeeee, |
0x989898, |
0x989898, |
0xc0c0c0, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xd9d9d9, |
0x999999, |
0x989898, |
0xd5d5d5, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfcfcfc, |
0xc1c1c1, |
0x7a7a7a, |
0x555554, |
0x363636, |
0x323232, |
0x3a3a3a, |
0x595958, |
0x878787, |
0xd0d0d0, |
0xfdfdfd, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfefefe, |
0xd5d5d5, |
0x8b8b8b, |
0x5b5a5a, |
0x3c3c3c, |
0x323232, |
0x383838, |
0x5b5b5b, |
0x898989, |
0xdddddd, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 46 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf4f3f3, |
0xb9b8b8, |
0x878580, |
0x51514f, |
0x323232, |
0x5c5c5c, |
0xe2e0dd, |
0xe2deda, |
0xe1ddd9, |
0xe1dcd7, |
0xe0dbd6, |
0xdfdad5, |
0xded9d4, |
0xddd9d4, |
0xdcd8d3, |
0xdbd8d3, |
0xdad7d2, |
0xdad7d2, |
0xdad7d2, |
0xd9d6d0, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d4cf, |
0xd7d4ce, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd0ccc6, |
0xc7c4be, |
0xbcbab2, |
0xc0bfb8, |
0xd1d0cb, |
0xe9e8e6, |
0xeeedeb, |
0xe7e5e1, |
0xdbd8d3, |
0xd5d1cb, |
0xd1cdc7, |
0xb5b2ae, |
0x7a7978, |
0x4b4b4b, |
0x969595, |
0xd6d6d6, |
0xf8f8f8, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 47 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfafafa, |
0xdadada, |
0x8f8d8a, |
0x6e6c69, |
0x373636, |
0x373737, |
0xbebdbc, |
0xe4e0db, |
0xe0dcd7, |
0xdfdbd6, |
0xdedad5, |
0xddd9d4, |
0xdcd9d4, |
0xdbd8d3, |
0xdbd8d3, |
0xdad7d2, |
0xdad7d2, |
0xd9d6d1, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d5cf, |
0xd8d4cf, |
0xd7d3cd, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd1cdc7, |
0xcac6c0, |
0xbfbcb5, |
0xbebcb5, |
0xceccc7, |
0xe5e4e1, |
0xefeeec, |
0xeae8e4, |
0xdddad5, |
0xd6d2cc, |
0xd2cec8, |
0xbdbab4, |
0x94928f, |
0x626160, |
0x424141, |
0x444343, |
0x807f7f, |
0xbcbbbc, |
0xeaeaea, |
0xfdfdfd, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 48 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfefefe, |
0xeeeeee, |
0xa8a7a5, |
0x817f7a, |
0x464544, |
0x333333, |
0xa6a5a5, |
0xe6e3e0, |
0xdfdbd6, |
0xded9d4, |
0xddd9d4, |
0xdcd8d3, |
0xdbd8d3, |
0xdbd8d3, |
0xdad7d2, |
0xdad7d2, |
0xd9d6d1, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d5cf, |
0xd7d4ce, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd2cec8, |
0xcbc8c1, |
0xc0bdb5, |
0xbebcb5, |
0xc9c7c1, |
0xe2e1de, |
0xeeedeb, |
0xeceae8, |
0xdfdcd8, |
0xd7d3cd, |
0xd3cfc9, |
0xc2beb9, |
0x9f9d98, |
0x6b6a67, |
0x4a4948, |
0x3b3b3b, |
0x474746, |
0x626161, |
0x8b8a8a, |
0xb7b6b6, |
0xe0e0df, |
0xf8f8f8, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 49 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf7f7f7, |
0xc9c8c8, |
0x8b8884, |
0x5f5f5d, |
0x5d5c5c, |
0xd3d2d0, |
0xe2dfdb, |
0xddd9d4, |
0xddd9d4, |
0xdcd8d3, |
0xdbd8d3, |
0xd0cdc8, |
0xc7c4c0, |
0xd4d2cd, |
0xd9d6d0, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d4cf, |
0xd7d4ce, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd4d0ca, |
0xd4d0ca, |
0xd3cfc9, |
0xcdc9c3, |
0xc2bfb8, |
0xbdbbb3, |
0xc5c3bd, |
0xdddcd8, |
0xedecea, |
0xeeedeb, |
0xe1deda, |
0xd8d4cf, |
0xd3d0ca, |
0xc6c2bd, |
0xa8a5a1, |
0x747371, |
0x4f4f4f, |
0x3d3d3d, |
0x444444, |
0x5b5b5a, |
0x777777, |
0x939392, |
0xababab, |
0xc8c7c7, |
0xe4e4e4, |
0xf7f7f7, |
0xfefefe, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 50 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfdfdfd, |
0xe6e6e6, |
0x989794, |
0x83817d, |
0xc4c3c2, |
0xcbc9c2, |
0xd5d3ce, |
0xdfdbd6, |
0xdbd8d3, |
0xdbd8d3, |
0xd5d2cd, |
0x94928d, |
0x85837e, |
0xaaa8a4, |
0xe1deda, |
0xd8d5cf, |
0xd8d4cf, |
0xd7d3ce, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd3cfc9, |
0xcfcbc5, |
0xc5c2ba, |
0xbebbb3, |
0xc2c0b9, |
0xd8d7d3, |
0xebeae8, |
0xefeeec, |
0xe4e1dd, |
0xd9d6d0, |
0xd4d0ca, |
0xcac6c0, |
0xafaca8, |
0x807f7c, |
0x565655, |
0x3e3e3e, |
0x444343, |
0x555454, |
0x717070, |
0x8d8b8c, |
0xa6a5a5, |
0xbcbbbb, |
0xd0d0d0, |
0xe2e2e2, |
0xf1f1f1, |
0xfafafa, |
0xfefefe, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 51 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf4f3f3, |
0xb8b8b7, |
0x9d9b96, |
0xd8d5d1, |
0xd3d0ca, |
0xc2c0ba, |
0xe1deda, |
0xdbd8d3, |
0xdad7d2, |
0xd5d3ce, |
0xa7a5a2, |
0xc2c0b9, |
0xd8d7d5, |
0xe3e1dd, |
0xd8d4cf, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xcfccc5, |
0xc7c4be, |
0xbdbbb3, |
0xc0beb7, |
0xd3d2cd, |
0xe8e8e5, |
0xf1f0ef, |
0xe6e4e0, |
0xdbd8d3, |
0xd4d1cb, |
0xccc8c3, |
0xb8b5b0, |
0x898785, |
0x5f5e5c, |
0x444343, |
0x444443, |
0x515151, |
0x6b6b6a, |
0x868685, |
0xa09f9f, |
0xb6b5b5, |
0xcccbcb, |
0xdedede, |
0xececec, |
0xf6f6f6, |
0xfcfcfc, |
0xfefefe, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 52 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfafafa, |
0xd9d9d9, |
0x8c8a87, |
0xbfbcb7, |
0xd8d4ce, |
0xc0beb7, |
0xdcd9d4, |
0xdbd8d3, |
0xdad7d2, |
0xd9d6d0, |
0xe0ddd9, |
0xebeae7, |
0xeae9e6, |
0xd9d5d0, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd6d2cc, |
0xd5d1cb, |
0xd2cec8, |
0xc9c7c0, |
0xbebbb4, |
0xbdbbb4, |
0xceccc7, |
0xe6e5e2, |
0xf1f0ee, |
0xe9e7e4, |
0xdcd9d4, |
0xd5d1cb, |
0xd0ccc6, |
0xbdbab4, |
0x95938f, |
0x656463, |
0x474747, |
0x444443, |
0x4f4f4e, |
0x646464, |
0x807f7e, |
0x9b9a9a, |
0xb1b0b0, |
0xc7c6c6, |
0xdadada, |
0xe9e9e9, |
0xf4f4f4, |
0xfbfbfb, |
0xfefefe, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 53 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfefefe, |
0xeeeeed, |
0x9c9b9a, |
0x92908d, |
0xd5d2cc, |
0xceccc6, |
0xc4c2bb, |
0xdcd9d4, |
0xd9d6d0, |
0xd9d6d0, |
0xd8d5cf, |
0xd8d4cf, |
0xd7d3ce, |
0xd7d3cd, |
0xd7d3cd, |
0xd6d2cc, |
0xd3cfc9, |
0xcdc9c3, |
0xc0beb6, |
0xbdbbb3, |
0xc9c8c1, |
0xe2e1de, |
0xf1f1ef, |
0xebe9e6, |
0xdfdcd7, |
0xd5d1cb, |
0xd1cdc7, |
0xc2bfba, |
0x9d9a96, |
0x6f6e6b, |
0x4d4c4b, |
0x464544, |
0x4c4c4b, |
0x60605f, |
0x7a7a79, |
0x959595, |
0xababab, |
0xc1c1c1, |
0xd6d5d5, |
0xe7e7e6, |
0xf3f2f2, |
0xfafaf9, |
0xfdfdfd, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 54 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf7f7f7, |
0xc7c7c6, |
0x787775, |
0xc8c4be, |
0xd7d4cf, |
0xc3c1b9, |
0xc4c2ba, |
0xd4d1cb, |
0xd8d5cf, |
0xd8d4cf, |
0xd7d3cd, |
0xd7d3cd, |
0xd5d1cb, |
0xcfcbc5, |
0xc3c0b8, |
0xbdbbb4, |
0xc3c1bb, |
0xdfdedb, |
0xefeeed, |
0xefedeb, |
0xe0deda, |
0xd7d3cd, |
0xd2cec8, |
0xc7c3bd, |
0xa6a39e, |
0x757371, |
0x525150, |
0x454544, |
0x4b4a49, |
0x5c5b5a, |
0x767575, |
0x909090, |
0xa7a6a6, |
0xbdbdbd, |
0xd1d1d1, |
0xe2e2e1, |
0xf0efef, |
0xf8f8f8, |
0xfdfdfd, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 55 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfdfdfc, |
0xe6e6e5, |
0x848382, |
0xa5a39e, |
0xd6d2cc, |
0xd7d4ce, |
0xc8c5be, |
0xbcbab2, |
0xc4c1ba, |
0xcbc8c1, |
0xccc9c2, |
0xc4c1ba, |
0xbdbbb3, |
0xc1bfb8, |
0xd8d7d3, |
0xededeb, |
0xf1f0ee, |
0xe3e1dd, |
0xd8d4cf, |
0xd3cfca, |
0xcac6c1, |
0xafaca7, |
0x7d7b78, |
0x555452, |
0x454443, |
0x494847, |
0x575555, |
0x706f6f, |
0x8a8989, |
0xa2a1a1, |
0xb8b7b8, |
0xcecdcd, |
0xe0e0df, |
0xeeeeed, |
0xf7f7f7, |
0xfcfcfc, |
0xfefefe, |
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, |
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, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
/* Scanline 56 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf4f3f3, |
0xb2b2b2, |
0x797875, |
0xcdc9c3, |
0xd6d3cd, |
0xd9d6d0, |
0xdcd9d5, |
0xd8d7d2, |
0xcfcdc7, |
0xd0cec9, |
0xdcdad7, |
0xeae9e6, |
0xf3f2f1, |
0xe6e3e0, |
0xdad6d0, |
0xd4d0ca, |
0xcdc9c3, |
0xb5b2ad, |
0x878581, |
0x5d5c5a, |
0x464544, |
0x474645, |
0x515050, |
0x696968, |
0x848483, |
0x9d9c9c, |
0xb3b2b2, |
0xc8c8c8, |
0xdcdcdc, |
0xebebeb, |
0xf6f6f5, |
0xfbfbfb, |
0xfefefe, |
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, |
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, |
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, |
/* Scanline 57 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfafafa, |
0xd8d8d8, |
0x71706f, |
0x92908c, |
0xd1cec8, |
0xd6d2cc, |
0xd7d3cd, |
0xd8d4ce, |
0xdfdbd6, |
0xe2dfdb, |
0xe1deda, |
0xdbd7d2, |
0xd4d0ca, |
0xcfcbc5, |
0xbfbcb6, |
0x8e8c89, |
0x646260, |
0x494847, |
0x494847, |
0x504f4e, |
0x646362, |
0x7e7d7d, |
0x979696, |
0xadacac, |
0xc4c3c3, |
0xd8d7d7, |
0xe8e8e8, |
0xf3f3f3, |
0xfafafa, |
0xfefefe, |
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, |
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, |
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, |
/* Scanline 58 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfefefe, |
0xeeeeed, |
0x9f9e9e, |
0x5a5958, |
0x878683, |
0xc6c2bd, |
0xd3cfc9, |
0xd5d1cb, |
0xd5d1cb, |
0xd4d0ca, |
0xd1cdc7, |
0xc4c0bb, |
0x9a9894, |
0x6c6b68, |
0x4d4c4b, |
0x494847, |
0x4d4c4b, |
0x5f5e5d, |
0x777776, |
0x929292, |
0xa8a7a7, |
0xbebdbe, |
0xd4d3d2, |
0xe5e5e5, |
0xf1f1f1, |
0xf9f9f9, |
0xfdfdfd, |
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, |
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, |
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, |
/* Scanline 59 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xf8f8f7, |
0xd5d4d4, |
0x7c7c7b, |
0x555452, |
0x5f5e5c, |
0x82807c, |
0x989692, |
0x9a9894, |
0x92908c, |
0x747371, |
0x525251, |
0x4a4948, |
0x4e4d4c, |
0x5a5a59, |
0x717171, |
0x8c8b8c, |
0xa3a2a2, |
0xb9b9b9, |
0xd0cfcf, |
0xe1e1e1, |
0xeeeeee, |
0xf7f7f7, |
0xfcfcfc, |
0xfefefe, |
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, |
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, |
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, |
/* Scanline 60 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfdfdfd, |
0xefefef, |
0xc5c5c5, |
0x807f7e, |
0x585755, |
0x525150, |
0x51504f, |
0x4f4f4e, |
0x4e4e4d, |
0x4f4f4e, |
0x595857, |
0x6d6c6b, |
0x878787, |
0x9e9d9d, |
0xb4b3b4, |
0xcacaca, |
0xdddddd, |
0xededec, |
0xf7f7f6, |
0xfcfcfc, |
0xfefefe, |
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, |
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, |
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, |
/* Scanline 61 */ |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xffffff, |
0xfcfcfb, |
0xebebea, |
0xcacaca, |
0xa09f9f, |
0x7b7b7a, |
0x6b6b6a, |
0x686868, |
0x6f6f6e, |
0x838281, |
0x9a9999, |
0xafaeae, |
0xc5c5c5, |
0xdadad9, |
0xe9e9e9, |
0xf4f4f3, |
0xfbfbfb, |
0xfefefe, |
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, |
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, |
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, |
/* Scanline 62 */ |
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, |
0xfcfcfb, |
0xf0f0f0, |
0xdcdcdb, |
0xc7c7c7, |
0xb8b7b7, |
0xb2b2b2, |
0xb6b6b6, |
0xc4c3c3, |
0xd5d5d5, |
0xe6e6e6, |
0xf3f3f2, |
0xfafafa, |
0xfefefd, |
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, |
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, |
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, |
/* Scanline 63 */ |
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, |
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, |
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, |
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, |
/* Scanline 64 */ |
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, |
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, |
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, |
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, |
/* Scanline 65 */ |
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, |
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, |
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, |
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, |
}; |
/** @} |
*/ |
Property changes: |
Added: svn:mergeinfo |
/tags/0.4.0/kernel/genarch/src/fb/font-8x16.c |
---|
0,0 → 1,4650 |
/* |
* Copyright (c) 2005 Martin Decky |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarch |
* @{ |
*/ |
/** @file |
*/ |
#include <genarch/fb/font-8x16.h> |
uint8_t fb_font[FONT_GLYPHS * FONT_SCANLINES] = { |
/* 0 0x00 '^@' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 1 0x01 '^A' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7e, /* 01111110 */ |
0x81, /* 10000001 */ |
0xa5, /* 10100101 */ |
0x81, /* 10000001 */ |
0x81, /* 10000001 */ |
0xbd, /* 10111101 */ |
0x99, /* 10011001 */ |
0x81, /* 10000001 */ |
0x81, /* 10000001 */ |
0x7e, /* 01111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 2 0x02 '^B' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7e, /* 01111110 */ |
0xff, /* 11111111 */ |
0xdb, /* 11011011 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xc3, /* 11000011 */ |
0xe7, /* 11100111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0x7e, /* 01111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 3 0x03 '^C' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x6c, /* 01101100 */ |
0xfe, /* 11111110 */ |
0xfe, /* 11111110 */ |
0xfe, /* 11111110 */ |
0xfe, /* 11111110 */ |
0x7c, /* 01111100 */ |
0x38, /* 00111000 */ |
0x10, /* 00010000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 4 0x04 '^D' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x10, /* 00010000 */ |
0x38, /* 00111000 */ |
0x7c, /* 01111100 */ |
0xfe, /* 11111110 */ |
0x7c, /* 01111100 */ |
0x38, /* 00111000 */ |
0x10, /* 00010000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 5 0x05 '^E' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x3c, /* 00111100 */ |
0xe7, /* 11100111 */ |
0xe7, /* 11100111 */ |
0xe7, /* 11100111 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 6 0x06 '^F' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x7e, /* 01111110 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0x7e, /* 01111110 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 7 0x07 '^G' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x3c, /* 00111100 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 8 0x08 '^H' */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xe7, /* 11100111 */ |
0xc3, /* 11000011 */ |
0xc3, /* 11000011 */ |
0xe7, /* 11100111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
/* 9 0x09 '^I' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x3c, /* 00111100 */ |
0x66, /* 01100110 */ |
0x42, /* 01000010 */ |
0x42, /* 01000010 */ |
0x66, /* 01100110 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 10 0x0a '^J' */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xc3, /* 11000011 */ |
0x99, /* 10011001 */ |
0xbd, /* 10111101 */ |
0xbd, /* 10111101 */ |
0x99, /* 10011001 */ |
0xc3, /* 11000011 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
/* 11 0x0b '^K' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x1e, /* 00011110 */ |
0x0e, /* 00001110 */ |
0x1a, /* 00011010 */ |
0x32, /* 00110010 */ |
0x78, /* 01111000 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x78, /* 01111000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 12 0x0c '^L' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x3c, /* 00111100 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x3c, /* 00111100 */ |
0x18, /* 00011000 */ |
0x7e, /* 01111110 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 13 0x0d '^M' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x3f, /* 00111111 */ |
0x33, /* 00110011 */ |
0x3f, /* 00111111 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x70, /* 01110000 */ |
0xf0, /* 11110000 */ |
0xe0, /* 11100000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 14 0x0e '^N' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7f, /* 01111111 */ |
0x63, /* 01100011 */ |
0x7f, /* 01111111 */ |
0x63, /* 01100011 */ |
0x63, /* 01100011 */ |
0x63, /* 01100011 */ |
0x63, /* 01100011 */ |
0x67, /* 01100111 */ |
0xe7, /* 11100111 */ |
0xe6, /* 11100110 */ |
0xc0, /* 11000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 15 0x0f '^O' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0xdb, /* 11011011 */ |
0x3c, /* 00111100 */ |
0xe7, /* 11100111 */ |
0x3c, /* 00111100 */ |
0xdb, /* 11011011 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 16 0x10 '^P' */ |
0x00, /* 00000000 */ |
0x80, /* 10000000 */ |
0xc0, /* 11000000 */ |
0xe0, /* 11100000 */ |
0xf0, /* 11110000 */ |
0xf8, /* 11111000 */ |
0xfe, /* 11111110 */ |
0xf8, /* 11111000 */ |
0xf0, /* 11110000 */ |
0xe0, /* 11100000 */ |
0xc0, /* 11000000 */ |
0x80, /* 10000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 17 0x11 '^Q' */ |
0x00, /* 00000000 */ |
0x02, /* 00000010 */ |
0x06, /* 00000110 */ |
0x0e, /* 00001110 */ |
0x1e, /* 00011110 */ |
0x3e, /* 00111110 */ |
0xfe, /* 11111110 */ |
0x3e, /* 00111110 */ |
0x1e, /* 00011110 */ |
0x0e, /* 00001110 */ |
0x06, /* 00000110 */ |
0x02, /* 00000010 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 18 0x12 '^R' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x7e, /* 01111110 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x7e, /* 01111110 */ |
0x3c, /* 00111100 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 19 0x13 '^S' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x00, /* 00000000 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 20 0x14 '^T' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7f, /* 01111111 */ |
0xdb, /* 11011011 */ |
0xdb, /* 11011011 */ |
0xdb, /* 11011011 */ |
0x7b, /* 01111011 */ |
0x1b, /* 00011011 */ |
0x1b, /* 00011011 */ |
0x1b, /* 00011011 */ |
0x1b, /* 00011011 */ |
0x1b, /* 00011011 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 21 0x15 '^U' */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0x60, /* 01100000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x6c, /* 01101100 */ |
0x38, /* 00111000 */ |
0x0c, /* 00001100 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 22 0x16 '^V' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0xfe, /* 11111110 */ |
0xfe, /* 11111110 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 23 0x17 '^W' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x7e, /* 01111110 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x7e, /* 01111110 */ |
0x3c, /* 00111100 */ |
0x18, /* 00011000 */ |
0x7e, /* 01111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 24 0x18 '^X' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x7e, /* 01111110 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 25 0x19 '^Y' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x7e, /* 01111110 */ |
0x3c, /* 00111100 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 26 0x1a '^Z' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x0c, /* 00001100 */ |
0xfe, /* 11111110 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 27 0x1b '^[' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0xfe, /* 11111110 */ |
0x60, /* 01100000 */ |
0x30, /* 00110000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 28 0x1c '^\' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 29 0x1d '^]' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x28, /* 00101000 */ |
0x6c, /* 01101100 */ |
0xfe, /* 11111110 */ |
0x6c, /* 01101100 */ |
0x28, /* 00101000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 30 0x1e '^^' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x10, /* 00010000 */ |
0x38, /* 00111000 */ |
0x38, /* 00111000 */ |
0x7c, /* 01111100 */ |
0x7c, /* 01111100 */ |
0xfe, /* 11111110 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 31 0x1f '^_' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0xfe, /* 11111110 */ |
0x7c, /* 01111100 */ |
0x7c, /* 01111100 */ |
0x38, /* 00111000 */ |
0x38, /* 00111000 */ |
0x10, /* 00010000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 32 0x20 ' ' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 33 0x21 '!' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x3c, /* 00111100 */ |
0x3c, /* 00111100 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 34 0x22 '"' */ |
0x00, /* 00000000 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x24, /* 00100100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 35 0x23 '#' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0xfe, /* 11111110 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0xfe, /* 11111110 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 36 0x24 '$' */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc2, /* 11000010 */ |
0xc0, /* 11000000 */ |
0x7c, /* 01111100 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x86, /* 10000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 37 0x25 '%' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc2, /* 11000010 */ |
0xc6, /* 11000110 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0xc6, /* 11000110 */ |
0x86, /* 10000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 38 0x26 '&' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0x38, /* 00111000 */ |
0x76, /* 01110110 */ |
0xdc, /* 11011100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x76, /* 01110110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 39 0x27 ''' */ |
0x00, /* 00000000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 40 0x28 '(' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x18, /* 00011000 */ |
0x0c, /* 00001100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 41 0x29 ')' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x30, /* 00110000 */ |
0x18, /* 00011000 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 42 0x2a '*' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x66, /* 01100110 */ |
0x3c, /* 00111100 */ |
0xff, /* 11111111 */ |
0x3c, /* 00111100 */ |
0x66, /* 01100110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 43 0x2b '+' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x7e, /* 01111110 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 44 0x2c ',' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 45 0x2d '-' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 46 0x2e '.' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 47 0x2f '/' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x02, /* 00000010 */ |
0x06, /* 00000110 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0xc0, /* 11000000 */ |
0x80, /* 10000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 48 0x30 '0' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xd6, /* 11010110 */ |
0xd6, /* 11010110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x6c, /* 01101100 */ |
0x38, /* 00111000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 49 0x31 '1' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x38, /* 00111000 */ |
0x78, /* 01111000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x7e, /* 01111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 50 0x32 '2' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0x06, /* 00000110 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0xc0, /* 11000000 */ |
0xc6, /* 11000110 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 51 0x33 '3' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x3c, /* 00111100 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 52 0x34 '4' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x0c, /* 00001100 */ |
0x1c, /* 00011100 */ |
0x3c, /* 00111100 */ |
0x6c, /* 01101100 */ |
0xcc, /* 11001100 */ |
0xfe, /* 11111110 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x1e, /* 00011110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 53 0x35 '5' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xfc, /* 11111100 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 54 0x36 '6' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x38, /* 00111000 */ |
0x60, /* 01100000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xfc, /* 11111100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 55 0x37 '7' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0xc6, /* 11000110 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 56 0x38 '8' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 57 0x39 '9' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7e, /* 01111110 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x0c, /* 00001100 */ |
0x78, /* 01111000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 58 0x3a ':' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 59 0x3b ';' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 60 0x3c '<' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x06, /* 00000110 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0x30, /* 00110000 */ |
0x18, /* 00011000 */ |
0x0c, /* 00001100 */ |
0x06, /* 00000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 61 0x3d '=' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7e, /* 01111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7e, /* 01111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 62 0x3e '>' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x60, /* 01100000 */ |
0x30, /* 00110000 */ |
0x18, /* 00011000 */ |
0x0c, /* 00001100 */ |
0x06, /* 00000110 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 63 0x3f '?' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 64 0x40 '@' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xde, /* 11011110 */ |
0xde, /* 11011110 */ |
0xde, /* 11011110 */ |
0xdc, /* 11011100 */ |
0xc0, /* 11000000 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 65 0x41 'A' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x10, /* 00010000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xfe, /* 11111110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 66 0x42 'B' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfc, /* 11111100 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x7c, /* 01111100 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0xfc, /* 11111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 67 0x43 'C' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x3c, /* 00111100 */ |
0x66, /* 01100110 */ |
0xc2, /* 11000010 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc2, /* 11000010 */ |
0x66, /* 01100110 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 68 0x44 'D' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xf8, /* 11111000 */ |
0x6c, /* 01101100 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x6c, /* 01101100 */ |
0xf8, /* 11111000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 69 0x45 'E' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0x66, /* 01100110 */ |
0x62, /* 01100010 */ |
0x68, /* 01101000 */ |
0x78, /* 01111000 */ |
0x68, /* 01101000 */ |
0x60, /* 01100000 */ |
0x62, /* 01100010 */ |
0x66, /* 01100110 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 70 0x46 'F' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0x66, /* 01100110 */ |
0x62, /* 01100010 */ |
0x68, /* 01101000 */ |
0x78, /* 01111000 */ |
0x68, /* 01101000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0xf0, /* 11110000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 71 0x47 'G' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x3c, /* 00111100 */ |
0x66, /* 01100110 */ |
0xc2, /* 11000010 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xde, /* 11011110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x66, /* 01100110 */ |
0x3a, /* 00111010 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 72 0x48 'H' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xfe, /* 11111110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 73 0x49 'I' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x3c, /* 00111100 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 74 0x4a 'J' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x1e, /* 00011110 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x78, /* 01111000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 75 0x4b 'K' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xe6, /* 11100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x6c, /* 01101100 */ |
0x78, /* 01111000 */ |
0x78, /* 01111000 */ |
0x6c, /* 01101100 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0xe6, /* 11100110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 76 0x4c 'L' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xf0, /* 11110000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x62, /* 01100010 */ |
0x66, /* 01100110 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 77 0x4d 'M' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0xee, /* 11101110 */ |
0xfe, /* 11111110 */ |
0xfe, /* 11111110 */ |
0xd6, /* 11010110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 78 0x4e 'N' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0xe6, /* 11100110 */ |
0xf6, /* 11110110 */ |
0xfe, /* 11111110 */ |
0xde, /* 11011110 */ |
0xce, /* 11001110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 79 0x4f 'O' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 80 0x50 'P' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfc, /* 11111100 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x7c, /* 01111100 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0xf0, /* 11110000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 81 0x51 'Q' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xd6, /* 11010110 */ |
0xde, /* 11011110 */ |
0x7c, /* 01111100 */ |
0x0c, /* 00001100 */ |
0x0e, /* 00001110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 82 0x52 'R' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfc, /* 11111100 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x7c, /* 01111100 */ |
0x6c, /* 01101100 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0xe6, /* 11100110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 83 0x53 'S' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x60, /* 01100000 */ |
0x38, /* 00111000 */ |
0x0c, /* 00001100 */ |
0x06, /* 00000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 84 0x54 'T' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7e, /* 01111110 */ |
0x7e, /* 01111110 */ |
0x5a, /* 01011010 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 85 0x55 'U' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 86 0x56 'V' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x6c, /* 01101100 */ |
0x38, /* 00111000 */ |
0x10, /* 00010000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 87 0x57 'W' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xd6, /* 11010110 */ |
0xd6, /* 11010110 */ |
0xd6, /* 11010110 */ |
0xfe, /* 11111110 */ |
0xee, /* 11101110 */ |
0x6c, /* 01101100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 88 0x58 'X' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x6c, /* 01101100 */ |
0x7c, /* 01111100 */ |
0x38, /* 00111000 */ |
0x38, /* 00111000 */ |
0x7c, /* 01111100 */ |
0x6c, /* 01101100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 89 0x59 'Y' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x3c, /* 00111100 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 90 0x5a 'Z' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0xc6, /* 11000110 */ |
0x86, /* 10000110 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0xc2, /* 11000010 */ |
0xc6, /* 11000110 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 91 0x5b '[' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x3c, /* 00111100 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 92 0x5c '\' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x80, /* 10000000 */ |
0xc0, /* 11000000 */ |
0xe0, /* 11100000 */ |
0x70, /* 01110000 */ |
0x38, /* 00111000 */ |
0x1c, /* 00011100 */ |
0x0e, /* 00001110 */ |
0x06, /* 00000110 */ |
0x02, /* 00000010 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 93 0x5d ']' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x3c, /* 00111100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 94 0x5e '^' */ |
0x10, /* 00010000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 95 0x5f '_' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xff, /* 11111111 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 96 0x60 '`' */ |
0x00, /* 00000000 */ |
0x30, /* 00110000 */ |
0x18, /* 00011000 */ |
0x0c, /* 00001100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 97 0x61 'a' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x78, /* 01111000 */ |
0x0c, /* 00001100 */ |
0x7c, /* 01111100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x76, /* 01110110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 98 0x62 'b' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xe0, /* 11100000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x78, /* 01111000 */ |
0x6c, /* 01101100 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 99 0x63 'c' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 100 0x64 'd' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x1c, /* 00011100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x3c, /* 00111100 */ |
0x6c, /* 01101100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x76, /* 01110110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 101 0x65 'e' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xfe, /* 11111110 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 102 0x66 'f' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x1c, /* 00011100 */ |
0x36, /* 00110110 */ |
0x32, /* 00110010 */ |
0x30, /* 00110000 */ |
0x78, /* 01111000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x78, /* 01111000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 103 0x67 'g' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x76, /* 01110110 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x7c, /* 01111100 */ |
0x0c, /* 00001100 */ |
0xcc, /* 11001100 */ |
0x78, /* 01111000 */ |
0x00, /* 00000000 */ |
/* 104 0x68 'h' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xe0, /* 11100000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x6c, /* 01101100 */ |
0x76, /* 01110110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0xe6, /* 11100110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 105 0x69 'i' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x38, /* 00111000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 106 0x6a 'j' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x00, /* 00000000 */ |
0x0e, /* 00001110 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
/* 107 0x6b 'k' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xe0, /* 11100000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x66, /* 01100110 */ |
0x6c, /* 01101100 */ |
0x78, /* 01111000 */ |
0x78, /* 01111000 */ |
0x6c, /* 01101100 */ |
0x66, /* 01100110 */ |
0xe6, /* 11100110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 108 0x6c 'l' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x38, /* 00111000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 109 0x6d 'm' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xec, /* 11101100 */ |
0xfe, /* 11111110 */ |
0xd6, /* 11010110 */ |
0xd6, /* 11010110 */ |
0xd6, /* 11010110 */ |
0xd6, /* 11010110 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 110 0x6e 'n' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xdc, /* 11011100 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 111 0x6f 'o' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 112 0x70 'p' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xdc, /* 11011100 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x7c, /* 01111100 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0xf0, /* 11110000 */ |
0x00, /* 00000000 */ |
/* 113 0x71 'q' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x76, /* 01110110 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x7c, /* 01111100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x1e, /* 00011110 */ |
0x00, /* 00000000 */ |
/* 114 0x72 'r' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xdc, /* 11011100 */ |
0x76, /* 01110110 */ |
0x66, /* 01100110 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0xf0, /* 11110000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 115 0x73 's' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0x60, /* 01100000 */ |
0x38, /* 00111000 */ |
0x0c, /* 00001100 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 116 0x74 't' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x10, /* 00010000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0xfc, /* 11111100 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x36, /* 00110110 */ |
0x1c, /* 00011100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 117 0x75 'u' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x76, /* 01110110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 118 0x76 'v' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x6c, /* 01101100 */ |
0x38, /* 00111000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 119 0x77 'w' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xd6, /* 11010110 */ |
0xd6, /* 11010110 */ |
0xd6, /* 11010110 */ |
0xfe, /* 11111110 */ |
0x6c, /* 01101100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 120 0x78 'x' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0x6c, /* 01101100 */ |
0x38, /* 00111000 */ |
0x38, /* 00111000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 121 0x79 'y' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7e, /* 01111110 */ |
0x06, /* 00000110 */ |
0x0c, /* 00001100 */ |
0xf8, /* 11111000 */ |
0x00, /* 00000000 */ |
/* 122 0x7a 'z' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0xcc, /* 11001100 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0xc6, /* 11000110 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 123 0x7b '{' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x0e, /* 00001110 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x70, /* 01110000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x0e, /* 00001110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 124 0x7c '|' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 125 0x7d '}' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x70, /* 01110000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x0e, /* 00001110 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x70, /* 01110000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 126 0x7e '~' */ |
0x00, /* 00000000 */ |
0x76, /* 01110110 */ |
0xdc, /* 11011100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 127 0x7f '' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x10, /* 00010000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 128 0x80 '€' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x3c, /* 00111100 */ |
0x66, /* 01100110 */ |
0xc2, /* 11000010 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc2, /* 11000010 */ |
0x66, /* 01100110 */ |
0x3c, /* 00111100 */ |
0x18, /* 00011000 */ |
0x70, /* 01110000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 129 0x81 '' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xcc, /* 11001100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x76, /* 01110110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 130 0x82 '‚' */ |
0x00, /* 00000000 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xfe, /* 11111110 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 131 0x83 'ƒ' */ |
0x00, /* 00000000 */ |
0x10, /* 00010000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0x00, /* 00000000 */ |
0x78, /* 01111000 */ |
0x0c, /* 00001100 */ |
0x7c, /* 01111100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x76, /* 01110110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 132 0x84 '„' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xcc, /* 11001100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x78, /* 01111000 */ |
0x0c, /* 00001100 */ |
0x7c, /* 01111100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x76, /* 01110110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 133 0x85 '…' */ |
0x00, /* 00000000 */ |
0x60, /* 01100000 */ |
0x30, /* 00110000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x78, /* 01111000 */ |
0x0c, /* 00001100 */ |
0x7c, /* 01111100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x76, /* 01110110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 134 0x86 '†' */ |
0x00, /* 00000000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0x38, /* 00111000 */ |
0x00, /* 00000000 */ |
0x78, /* 01111000 */ |
0x0c, /* 00001100 */ |
0x7c, /* 01111100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x76, /* 01110110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 135 0x87 '‡' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x18, /* 00011000 */ |
0x70, /* 01110000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 136 0x88 'ˆ' */ |
0x00, /* 00000000 */ |
0x10, /* 00010000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xfe, /* 11111110 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 137 0x89 '‰' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xfe, /* 11111110 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 138 0x8a 'Š' */ |
0x00, /* 00000000 */ |
0x60, /* 01100000 */ |
0x30, /* 00110000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xfe, /* 11111110 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 139 0x8b '‹' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x66, /* 01100110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x38, /* 00111000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 140 0x8c 'Œ' */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x66, /* 01100110 */ |
0x00, /* 00000000 */ |
0x38, /* 00111000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 141 0x8d '' */ |
0x00, /* 00000000 */ |
0x60, /* 01100000 */ |
0x30, /* 00110000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x38, /* 00111000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 142 0x8e 'Ž' */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x10, /* 00010000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xfe, /* 11111110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 143 0x8f '' */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0x38, /* 00111000 */ |
0x10, /* 00010000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0xc6, /* 11000110 */ |
0xfe, /* 11111110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 144 0x90 '' */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0x66, /* 01100110 */ |
0x62, /* 01100010 */ |
0x68, /* 01101000 */ |
0x78, /* 01111000 */ |
0x68, /* 01101000 */ |
0x62, /* 01100010 */ |
0x66, /* 01100110 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 145 0x91 '‘' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xec, /* 11101100 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x7e, /* 01111110 */ |
0xd8, /* 11011000 */ |
0xd8, /* 11011000 */ |
0x6e, /* 01101110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 146 0x92 '’' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x3e, /* 00111110 */ |
0x6c, /* 01101100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xfe, /* 11111110 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xce, /* 11001110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 147 0x93 '“' */ |
0x00, /* 00000000 */ |
0x10, /* 00010000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 148 0x94 '”' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 149 0x95 '•' */ |
0x00, /* 00000000 */ |
0x60, /* 01100000 */ |
0x30, /* 00110000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 150 0x96 '–' */ |
0x00, /* 00000000 */ |
0x30, /* 00110000 */ |
0x78, /* 01111000 */ |
0xcc, /* 11001100 */ |
0x00, /* 00000000 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x76, /* 01110110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 151 0x97 '—' */ |
0x00, /* 00000000 */ |
0x60, /* 01100000 */ |
0x30, /* 00110000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x76, /* 01110110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 152 0x98 '˜' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7e, /* 01111110 */ |
0x06, /* 00000110 */ |
0x0c, /* 00001100 */ |
0x78, /* 01111000 */ |
0x00, /* 00000000 */ |
/* 153 0x99 '™' */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 154 0x9a 'š' */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 155 0x9b '›' */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 156 0x9c 'œ' */ |
0x00, /* 00000000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0x64, /* 01100100 */ |
0x60, /* 01100000 */ |
0xf0, /* 11110000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0xe6, /* 11100110 */ |
0xfc, /* 11111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 157 0x9d '' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x3c, /* 00111100 */ |
0x18, /* 00011000 */ |
0x7e, /* 01111110 */ |
0x18, /* 00011000 */ |
0x7e, /* 01111110 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 158 0x9e 'ž' */ |
0x00, /* 00000000 */ |
0xf8, /* 11111000 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xf8, /* 11111000 */ |
0xc4, /* 11000100 */ |
0xcc, /* 11001100 */ |
0xde, /* 11011110 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 159 0x9f 'Ÿ' */ |
0x00, /* 00000000 */ |
0x0e, /* 00001110 */ |
0x1b, /* 00011011 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x7e, /* 01111110 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0xd8, /* 11011000 */ |
0x70, /* 01110000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 160 0xa0 ' ' */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0x00, /* 00000000 */ |
0x78, /* 01111000 */ |
0x0c, /* 00001100 */ |
0x7c, /* 01111100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x76, /* 01110110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 161 0xa1 '¡' */ |
0x00, /* 00000000 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x00, /* 00000000 */ |
0x38, /* 00111000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 162 0xa2 '¢' */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 163 0xa3 '£' */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0x00, /* 00000000 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0x76, /* 01110110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 164 0xa4 '¤' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x76, /* 01110110 */ |
0xdc, /* 11011100 */ |
0x00, /* 00000000 */ |
0xdc, /* 11011100 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 165 0xa5 '¥' */ |
0x76, /* 01110110 */ |
0xdc, /* 11011100 */ |
0x00, /* 00000000 */ |
0xc6, /* 11000110 */ |
0xe6, /* 11100110 */ |
0xf6, /* 11110110 */ |
0xfe, /* 11111110 */ |
0xde, /* 11011110 */ |
0xce, /* 11001110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 166 0xa6 '¦' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x3c, /* 00111100 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0x3e, /* 00111110 */ |
0x00, /* 00000000 */ |
0x7e, /* 01111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 167 0xa7 '§' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0x38, /* 00111000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 168 0xa8 '¨' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x00, /* 00000000 */ |
0x30, /* 00110000 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0xc0, /* 11000000 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x7c, /* 01111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 169 0xa9 '©' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 170 0xaa 'ª' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 171 0xab '«' */ |
0x00, /* 00000000 */ |
0x60, /* 01100000 */ |
0xe0, /* 11100000 */ |
0x62, /* 01100010 */ |
0x66, /* 01100110 */ |
0x6c, /* 01101100 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0xdc, /* 11011100 */ |
0x86, /* 10000110 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x3e, /* 00111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 172 0xac '¬' */ |
0x00, /* 00000000 */ |
0x60, /* 01100000 */ |
0xe0, /* 11100000 */ |
0x62, /* 01100010 */ |
0x66, /* 01100110 */ |
0x6c, /* 01101100 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x66, /* 01100110 */ |
0xce, /* 11001110 */ |
0x9a, /* 10011010 */ |
0x3f, /* 00111111 */ |
0x06, /* 00000110 */ |
0x06, /* 00000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 173 0xad '' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x3c, /* 00111100 */ |
0x3c, /* 00111100 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 174 0xae '®' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x36, /* 00110110 */ |
0x6c, /* 01101100 */ |
0xd8, /* 11011000 */ |
0x6c, /* 01101100 */ |
0x36, /* 00110110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 175 0xaf '¯' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xd8, /* 11011000 */ |
0x6c, /* 01101100 */ |
0x36, /* 00110110 */ |
0x6c, /* 01101100 */ |
0xd8, /* 11011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 176 0xb0 '°' */ |
0x11, /* 00010001 */ |
0x44, /* 01000100 */ |
0x11, /* 00010001 */ |
0x44, /* 01000100 */ |
0x11, /* 00010001 */ |
0x44, /* 01000100 */ |
0x11, /* 00010001 */ |
0x44, /* 01000100 */ |
0x11, /* 00010001 */ |
0x44, /* 01000100 */ |
0x11, /* 00010001 */ |
0x44, /* 01000100 */ |
0x11, /* 00010001 */ |
0x44, /* 01000100 */ |
0x11, /* 00010001 */ |
0x44, /* 01000100 */ |
/* 177 0xb1 '±' */ |
0x55, /* 01010101 */ |
0xaa, /* 10101010 */ |
0x55, /* 01010101 */ |
0xaa, /* 10101010 */ |
0x55, /* 01010101 */ |
0xaa, /* 10101010 */ |
0x55, /* 01010101 */ |
0xaa, /* 10101010 */ |
0x55, /* 01010101 */ |
0xaa, /* 10101010 */ |
0x55, /* 01010101 */ |
0xaa, /* 10101010 */ |
0x55, /* 01010101 */ |
0xaa, /* 10101010 */ |
0x55, /* 01010101 */ |
0xaa, /* 10101010 */ |
/* 178 0xb2 '²' */ |
0xdd, /* 11011101 */ |
0x77, /* 01110111 */ |
0xdd, /* 11011101 */ |
0x77, /* 01110111 */ |
0xdd, /* 11011101 */ |
0x77, /* 01110111 */ |
0xdd, /* 11011101 */ |
0x77, /* 01110111 */ |
0xdd, /* 11011101 */ |
0x77, /* 01110111 */ |
0xdd, /* 11011101 */ |
0x77, /* 01110111 */ |
0xdd, /* 11011101 */ |
0x77, /* 01110111 */ |
0xdd, /* 11011101 */ |
0x77, /* 01110111 */ |
/* 179 0xb3 '³' */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
/* 180 0xb4 '´' */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0xf8, /* 11111000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
/* 181 0xb5 'µ' */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0xf8, /* 11111000 */ |
0x18, /* 00011000 */ |
0xf8, /* 11111000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
/* 182 0xb6 '¶' */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0xf6, /* 11110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
/* 183 0xb7 '·' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
/* 184 0xb8 '¸' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xf8, /* 11111000 */ |
0x18, /* 00011000 */ |
0xf8, /* 11111000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
/* 185 0xb9 '¹' */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0xf6, /* 11110110 */ |
0x06, /* 00000110 */ |
0xf6, /* 11110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
/* 186 0xba 'º' */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
/* 187 0xbb '»' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0x06, /* 00000110 */ |
0xf6, /* 11110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
/* 188 0xbc '¼' */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0xf6, /* 11110110 */ |
0x06, /* 00000110 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 189 0xbd '½' */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 190 0xbe '¾' */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0xf8, /* 11111000 */ |
0x18, /* 00011000 */ |
0xf8, /* 11111000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 191 0xbf '¿' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xf8, /* 11111000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
/* 192 0xc0 'À' */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x1f, /* 00011111 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 193 0xc1 'Á' */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0xff, /* 11111111 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 194 0xc2 'Â' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xff, /* 11111111 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
/* 195 0xc3 'Ã' */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x1f, /* 00011111 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
/* 196 0xc4 'Ä' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xff, /* 11111111 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 197 0xc5 'Å' */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0xff, /* 11111111 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
/* 198 0xc6 'Æ' */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x1f, /* 00011111 */ |
0x18, /* 00011000 */ |
0x1f, /* 00011111 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
/* 199 0xc7 'Ç' */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x37, /* 00110111 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
/* 200 0xc8 'È' */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x37, /* 00110111 */ |
0x30, /* 00110000 */ |
0x3f, /* 00111111 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 201 0xc9 'É' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x3f, /* 00111111 */ |
0x30, /* 00110000 */ |
0x37, /* 00110111 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
/* 202 0xca 'Ê' */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0xf7, /* 11110111 */ |
0x00, /* 00000000 */ |
0xff, /* 11111111 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 203 0xcb 'Ë' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xff, /* 11111111 */ |
0x00, /* 00000000 */ |
0xf7, /* 11110111 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
/* 204 0xcc 'Ì' */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x37, /* 00110111 */ |
0x30, /* 00110000 */ |
0x37, /* 00110111 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
/* 205 0xcd 'Í' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xff, /* 11111111 */ |
0x00, /* 00000000 */ |
0xff, /* 11111111 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 206 0xce 'Î' */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0xf7, /* 11110111 */ |
0x00, /* 00000000 */ |
0xf7, /* 11110111 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
/* 207 0xcf 'Ï' */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0xff, /* 11111111 */ |
0x00, /* 00000000 */ |
0xff, /* 11111111 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 208 0xd0 'Ð' */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0xff, /* 11111111 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 209 0xd1 'Ñ' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xff, /* 11111111 */ |
0x00, /* 00000000 */ |
0xff, /* 11111111 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
/* 210 0xd2 'Ò' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xff, /* 11111111 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
/* 211 0xd3 'Ó' */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x3f, /* 00111111 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 212 0xd4 'Ô' */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x1f, /* 00011111 */ |
0x18, /* 00011000 */ |
0x1f, /* 00011111 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 213 0xd5 'Õ' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x1f, /* 00011111 */ |
0x18, /* 00011000 */ |
0x1f, /* 00011111 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
/* 214 0xd6 'Ö' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x3f, /* 00111111 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
/* 215 0xd7 '×' */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0xff, /* 11111111 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
/* 216 0xd8 'Ø' */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0xff, /* 11111111 */ |
0x18, /* 00011000 */ |
0xff, /* 11111111 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
/* 217 0xd9 'Ù' */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0xf8, /* 11111000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 218 0xda 'Ú' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x1f, /* 00011111 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
/* 219 0xdb 'Û' */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
/* 220 0xdc 'Ü' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
/* 221 0xdd 'Ý' */ |
0xf0, /* 11110000 */ |
0xf0, /* 11110000 */ |
0xf0, /* 11110000 */ |
0xf0, /* 11110000 */ |
0xf0, /* 11110000 */ |
0xf0, /* 11110000 */ |
0xf0, /* 11110000 */ |
0xf0, /* 11110000 */ |
0xf0, /* 11110000 */ |
0xf0, /* 11110000 */ |
0xf0, /* 11110000 */ |
0xf0, /* 11110000 */ |
0xf0, /* 11110000 */ |
0xf0, /* 11110000 */ |
0xf0, /* 11110000 */ |
0xf0, /* 11110000 */ |
/* 222 0xde 'Þ' */ |
0x0f, /* 00001111 */ |
0x0f, /* 00001111 */ |
0x0f, /* 00001111 */ |
0x0f, /* 00001111 */ |
0x0f, /* 00001111 */ |
0x0f, /* 00001111 */ |
0x0f, /* 00001111 */ |
0x0f, /* 00001111 */ |
0x0f, /* 00001111 */ |
0x0f, /* 00001111 */ |
0x0f, /* 00001111 */ |
0x0f, /* 00001111 */ |
0x0f, /* 00001111 */ |
0x0f, /* 00001111 */ |
0x0f, /* 00001111 */ |
0x0f, /* 00001111 */ |
/* 223 0xdf 'ß' */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0xff, /* 11111111 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 224 0xe0 'à' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x76, /* 01110110 */ |
0xdc, /* 11011100 */ |
0xd8, /* 11011000 */ |
0xd8, /* 11011000 */ |
0xd8, /* 11011000 */ |
0xdc, /* 11011100 */ |
0x76, /* 01110110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 225 0xe1 'á' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x78, /* 01111000 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xcc, /* 11001100 */ |
0xd8, /* 11011000 */ |
0xcc, /* 11001100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xcc, /* 11001100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 226 0xe2 'â' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0xc0, /* 11000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 227 0xe3 'ã' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 228 0xe4 'ä' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0xc6, /* 11000110 */ |
0x60, /* 01100000 */ |
0x30, /* 00110000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0xc6, /* 11000110 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 229 0xe5 'å' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7e, /* 01111110 */ |
0xd8, /* 11011000 */ |
0xd8, /* 11011000 */ |
0xd8, /* 11011000 */ |
0xd8, /* 11011000 */ |
0xd8, /* 11011000 */ |
0x70, /* 01110000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 230 0xe6 'æ' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x7c, /* 01111100 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0xc0, /* 11000000 */ |
0x00, /* 00000000 */ |
/* 231 0xe7 'ç' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x76, /* 01110110 */ |
0xdc, /* 11011100 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 232 0xe8 'è' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7e, /* 01111110 */ |
0x18, /* 00011000 */ |
0x3c, /* 00111100 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x3c, /* 00111100 */ |
0x18, /* 00011000 */ |
0x7e, /* 01111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 233 0xe9 'é' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xfe, /* 11111110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x6c, /* 01101100 */ |
0x38, /* 00111000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 234 0xea 'ê' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0xee, /* 11101110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 235 0xeb 'ë' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x1e, /* 00011110 */ |
0x30, /* 00110000 */ |
0x18, /* 00011000 */ |
0x0c, /* 00001100 */ |
0x3e, /* 00111110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x66, /* 01100110 */ |
0x3c, /* 00111100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 236 0xec 'ì' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7e, /* 01111110 */ |
0xdb, /* 11011011 */ |
0xdb, /* 11011011 */ |
0xdb, /* 11011011 */ |
0x7e, /* 01111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 237 0xed 'í' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x03, /* 00000011 */ |
0x06, /* 00000110 */ |
0x7e, /* 01111110 */ |
0xdb, /* 11011011 */ |
0xdb, /* 11011011 */ |
0xf3, /* 11110011 */ |
0x7e, /* 01111110 */ |
0x60, /* 01100000 */ |
0xc0, /* 11000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 238 0xee 'î' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x1c, /* 00011100 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x7c, /* 01111100 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x60, /* 01100000 */ |
0x30, /* 00110000 */ |
0x1c, /* 00011100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 239 0xef 'ï' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7c, /* 01111100 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0xc6, /* 11000110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 240 0xf0 'ð' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0xfe, /* 11111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 241 0xf1 'ñ' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x7e, /* 01111110 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7e, /* 01111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 242 0xf2 'ò' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x30, /* 00110000 */ |
0x18, /* 00011000 */ |
0x0c, /* 00001100 */ |
0x06, /* 00000110 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x00, /* 00000000 */ |
0x7e, /* 01111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 243 0xf3 'ó' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x30, /* 00110000 */ |
0x60, /* 01100000 */ |
0x30, /* 00110000 */ |
0x18, /* 00011000 */ |
0x0c, /* 00001100 */ |
0x00, /* 00000000 */ |
0x7e, /* 01111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 244 0xf4 'ô' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x0e, /* 00001110 */ |
0x1b, /* 00011011 */ |
0x1b, /* 00011011 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
/* 245 0xf5 'õ' */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0xd8, /* 11011000 */ |
0xd8, /* 11011000 */ |
0xd8, /* 11011000 */ |
0x70, /* 01110000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 246 0xf6 'ö' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x7e, /* 01111110 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 247 0xf7 '÷' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x76, /* 01110110 */ |
0xdc, /* 11011100 */ |
0x00, /* 00000000 */ |
0x76, /* 01110110 */ |
0xdc, /* 11011100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 248 0xf8 'ø' */ |
0x00, /* 00000000 */ |
0x38, /* 00111000 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0x38, /* 00111000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 249 0xf9 'ù' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 250 0xfa 'ú' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x18, /* 00011000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 251 0xfb 'û' */ |
0x00, /* 00000000 */ |
0x0f, /* 00001111 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0x0c, /* 00001100 */ |
0xec, /* 11101100 */ |
0x6c, /* 01101100 */ |
0x6c, /* 01101100 */ |
0x3c, /* 00111100 */ |
0x1c, /* 00011100 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 252 0xfc 'ü' */ |
0x00, /* 00000000 */ |
0x6c, /* 01101100 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x36, /* 00110110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 253 0xfd 'ý' */ |
0x00, /* 00000000 */ |
0x3c, /* 00111100 */ |
0x66, /* 01100110 */ |
0x0c, /* 00001100 */ |
0x18, /* 00011000 */ |
0x32, /* 00110010 */ |
0x7e, /* 01111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 254 0xfe 'þ' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x7e, /* 01111110 */ |
0x7e, /* 01111110 */ |
0x7e, /* 01111110 */ |
0x7e, /* 01111110 */ |
0x7e, /* 01111110 */ |
0x7e, /* 01111110 */ |
0x7e, /* 01111110 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
/* 255 0xff 'ÿ' */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
0x00, /* 00000000 */ |
}; |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/drivers/ega/ega.c |
---|
0,0 → 1,176 |
/* |
* Copyright (c) 2001-2004 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarch_drivers |
* @{ |
*/ |
/** |
* @file |
* @brief EGA driver. |
*/ |
#include <genarch/drivers/ega/ega.h> |
#include <putchar.h> |
#include <mm/page.h> |
#include <mm/as.h> |
#include <mm/slab.h> |
#include <arch/mm/page.h> |
#include <synch/spinlock.h> |
#include <arch/types.h> |
#include <arch/asm.h> |
#include <memstr.h> |
#include <console/chardev.h> |
#include <console/console.h> |
#include <sysinfo/sysinfo.h> |
#include <ddi/ddi.h> |
/* |
* The EGA driver. |
* Simple and short. Function for displaying characters and "scrolling". |
*/ |
static parea_t ega_parea; /**< Physical memory area for EGA video RAM. */ |
SPINLOCK_INITIALIZE(egalock); |
static uint32_t ega_cursor; |
static uint8_t *videoram; |
static uint8_t *backbuf; |
static ioport_t ega_base; |
chardev_t ega_console; |
/* |
* This function takes care of scrolling. |
*/ |
static void ega_check_cursor(void) |
{ |
if (ega_cursor < SCREEN) |
return; |
memmove((void *) videoram, (void *) (videoram + ROW * 2), |
(SCREEN - ROW) * 2); |
memmove((void *) backbuf, (void *) (backbuf + ROW * 2), |
(SCREEN - ROW) * 2); |
memsetw(videoram + (SCREEN - ROW) * 2, ROW, 0x0720); |
memsetw(backbuf + (SCREEN - ROW) * 2, ROW, 0x0720); |
ega_cursor = ega_cursor - ROW; |
} |
static void ega_move_cursor(void) |
{ |
outb(ega_base + EGA_INDEX_REG, 0xe); |
outb(ega_base + EGA_DATA_REG, (uint8_t) ((ega_cursor >> 8) & 0xff)); |
outb(ega_base + EGA_INDEX_REG, 0xf); |
outb(ega_base + EGA_DATA_REG, (uint8_t) (ega_cursor & 0xff)); |
} |
static void ega_display_char(char ch, bool silent) |
{ |
backbuf[ega_cursor * 2] = ch; |
if (!silent) |
videoram[ega_cursor * 2] = ch; |
} |
static void ega_putchar(chardev_t *d __attribute__((unused)), const char ch, bool silent) |
{ |
ipl_t ipl; |
ipl = interrupts_disable(); |
spinlock_lock(&egalock); |
switch (ch) { |
case '\n': |
ega_cursor = (ega_cursor + ROW) - ega_cursor % ROW; |
break; |
case '\t': |
ega_cursor = (ega_cursor + 8) - ega_cursor % 8; |
break; |
case '\b': |
if (ega_cursor % ROW) |
ega_cursor--; |
break; |
default: |
ega_display_char(ch, silent); |
ega_cursor++; |
break; |
} |
ega_check_cursor(); |
if (!silent) |
ega_move_cursor(); |
spinlock_unlock(&egalock); |
interrupts_restore(ipl); |
} |
static chardev_operations_t ega_ops = { |
.write = ega_putchar |
}; |
void ega_init(ioport_t base, uintptr_t videoram_phys) |
{ |
/* Initialize the software structure. */ |
ega_base = base; |
backbuf = (uint8_t *) malloc(SCREEN * 2, 0); |
if (!backbuf) |
panic("Unable to allocate backbuffer."); |
videoram = (uint8_t *) hw_map(videoram_phys, SCREEN * 2); |
/* Clear the screen and set the cursor position. */ |
memsetw(videoram, SCREEN, 0x0720); |
memsetw(backbuf, SCREEN, 0x0720); |
ega_move_cursor(); |
chardev_initialize("ega_out", &ega_console, &ega_ops); |
stdout = &ega_console; |
ega_parea.pbase = videoram_phys; |
ega_parea.vbase = (uintptr_t) videoram; |
ega_parea.frames = 1; |
ega_parea.cacheable = false; |
ddi_parea_register(&ega_parea); |
sysinfo_set_item_val("fb", NULL, true); |
sysinfo_set_item_val("fb.kind", NULL, 2); |
sysinfo_set_item_val("fb.width", NULL, ROW); |
sysinfo_set_item_val("fb.height", NULL, ROWS); |
sysinfo_set_item_val("fb.blinking", NULL, true); |
sysinfo_set_item_val("fb.address.physical", NULL, videoram_phys); |
} |
void ega_redraw(void) |
{ |
memcpy(videoram, backbuf, SCREEN * 2); |
ega_move_cursor(); |
} |
/** @} |
*/ |
Property changes: |
Added: svn:mergeinfo |
/tags/0.4.0/kernel/genarch/src/ofw/fhc.c |
---|
0,0 → 1,137 |
/* |
* Copyright (c) 2006 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup ofw |
* @{ |
*/ |
/** |
* @file |
* @brief FHC 'reg' and 'ranges' properties handling. |
* |
*/ |
#include <genarch/ofw/ofw_tree.h> |
#include <arch/drivers/fhc.h> |
#include <arch/memstr.h> |
#include <func.h> |
#include <panic.h> |
#include <macros.h> |
bool ofw_fhc_apply_ranges(ofw_tree_node_t *node, ofw_fhc_reg_t *reg, uintptr_t *pa) |
{ |
ofw_tree_property_t *prop; |
ofw_fhc_range_t *range; |
count_t ranges; |
prop = ofw_tree_getprop(node, "ranges"); |
if (!prop) |
return false; |
ranges = prop->size / sizeof(ofw_fhc_range_t); |
range = prop->value; |
unsigned int i; |
for (i = 0; i < ranges; i++) { |
if (overlaps(reg->addr, reg->size, range[i].child_base, range[i].size)) { |
uintptr_t addr; |
addr = range[i].parent_base + (reg->addr - range[i].child_base); |
if (!node->parent->parent) { |
*pa = addr; |
return true; |
} |
if (strcmp(ofw_tree_node_name(node->parent), "central") != 0) |
panic("Unexpected parent node: %s.", ofw_tree_node_name(node->parent)); |
ofw_central_reg_t central_reg; |
central_reg.addr = addr; |
central_reg.size = reg->size; |
return ofw_central_apply_ranges(node->parent, ¢ral_reg, pa); |
} |
} |
return false; |
} |
bool ofw_central_apply_ranges(ofw_tree_node_t *node, ofw_central_reg_t *reg, uintptr_t *pa) |
{ |
if (node->parent->parent) |
panic("Unexpected parent node: %s.", ofw_tree_node_name(node->parent)); |
ofw_tree_property_t *prop; |
ofw_central_range_t *range; |
count_t ranges; |
prop = ofw_tree_getprop(node, "ranges"); |
if (!prop) |
return false; |
ranges = prop->size / sizeof(ofw_central_range_t); |
range = prop->value; |
unsigned int i; |
for (i = 0; i < ranges; i++) { |
if (overlaps(reg->addr, reg->size, range[i].child_base, range[i].size)) { |
*pa = range[i].parent_base + (reg->addr - range[i].child_base); |
return true; |
} |
} |
return false; |
} |
bool |
ofw_fhc_map_interrupt(ofw_tree_node_t *node, ofw_fhc_reg_t *reg, |
uint32_t interrupt, int *inr, cir_t *cir, void **cir_arg) |
{ |
fhc_t *fhc = NULL; |
if (!node->device) { |
fhc = fhc_init(node); |
if (!fhc) |
return false; |
node->device = fhc; |
central_fhc = fhc; |
} |
/* |
* The interrupt controller for the interrupt is the FHC itself. |
*/ |
fhc_enable_interrupt(fhc, interrupt); |
*inr = interrupt; |
*cir = fhc_clear_interrupt; |
*cir_arg = fhc; |
return true; |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/ofw/ofw_tree.c |
---|
0,0 → 1,307 |
/* |
* Copyright (c) 2006 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup ofw |
* @{ |
*/ |
/** |
* @file |
* @brief OpenFirmware device tree navigation. |
* |
*/ |
#include <genarch/ofw/ofw_tree.h> |
#include <arch/memstr.h> |
#include <mm/slab.h> |
#include <func.h> |
#include <print.h> |
#include <panic.h> |
#define PATH_MAX_LEN 80 |
#define NAME_BUF_LEN 50 |
static ofw_tree_node_t *ofw_root; |
void ofw_tree_init(ofw_tree_node_t *root) |
{ |
ofw_root = root; |
} |
/** Get OpenFirmware node property. |
* |
* @param node Node in which to lookup the property. |
* @param name Name of the property. |
* |
* @return Pointer to the property structure or NULL if no such |
* property. |
*/ |
ofw_tree_property_t * |
ofw_tree_getprop(const ofw_tree_node_t *node, const char *name) |
{ |
unsigned int i; |
for (i = 0; i < node->properties; i++) { |
if (strcmp(node->property[i].name, name) == 0) |
return &node->property[i]; |
} |
return NULL; |
} |
/** Return value of the 'name' property. |
* |
* @param node Node of interest. |
* |
* @return Value of the 'name' property belonging to the node. |
*/ |
const char *ofw_tree_node_name(const ofw_tree_node_t *node) |
{ |
ofw_tree_property_t *prop; |
prop = ofw_tree_getprop(node, "name"); |
if (!prop) |
panic("Node without name property."); |
if (prop->size < 2) |
panic("Invalid name property."); |
return prop->value; |
} |
/** Lookup child of given name. |
* |
* @param node Node whose child is being looked up. |
* @param name Name of the child being looked up. |
* |
* @return NULL if there is no such child or pointer to the |
* matching child node. |
*/ |
ofw_tree_node_t *ofw_tree_find_child(ofw_tree_node_t *node, const char *name) |
{ |
ofw_tree_node_t *cur; |
/* |
* Try to find the disambigued name. |
*/ |
for (cur = node->child; cur; cur = cur->peer) { |
if (strcmp(cur->da_name, name) == 0) |
return cur; |
} |
/* |
* Disambigued name not found. |
* Lets try our luck with possibly ambiguous "name" property. |
* |
* We need to do this because paths stored in "/aliases" |
* are not always fully-qualified. |
*/ |
for (cur = node->child; cur; cur = cur->peer) { |
if (strcmp(ofw_tree_node_name(cur), name) == 0) |
return cur; |
} |
return NULL; |
} |
/** Lookup first child of given device type. |
* |
* @param node Node whose child is being looked up. |
* @param name Device type of the child being looked up. |
* |
* @return NULL if there is no such child or pointer to the |
* matching child node. |
*/ |
ofw_tree_node_t * |
ofw_tree_find_child_by_device_type(ofw_tree_node_t *node, const char *name) |
{ |
ofw_tree_node_t *cur; |
ofw_tree_property_t *prop; |
for (cur = node->child; cur; cur = cur->peer) { |
prop = ofw_tree_getprop(cur, "device_type"); |
if (!prop || !prop->value) |
continue; |
if (strcmp(prop->value, name) == 0) |
return cur; |
} |
return NULL; |
} |
/** Lookup node with matching node_handle. |
* |
* Child nodes are looked up recursively contrary to peer nodes that |
* are looked up iteratively to avoid stack overflow. |
* |
* @param root Root of the searched subtree. |
* @param handle OpenFirmware handle. |
* |
* @return NULL if there is no such node or pointer to the matching |
* node. |
*/ |
ofw_tree_node_t * |
ofw_tree_find_node_by_handle(ofw_tree_node_t *root, uint32_t handle) |
{ |
ofw_tree_node_t *cur; |
for (cur = root; cur; cur = cur->peer) { |
if (cur->node_handle == handle) |
return cur; |
if (cur->child) { |
ofw_tree_node_t *node; |
node = ofw_tree_find_node_by_handle(cur->child, handle); |
if (node) |
return node; |
} |
} |
return NULL; |
} |
/** Lookup first peer of given device type. |
* |
* @param node Node whose peer is being looked up. |
* @param name Device type of the child being looked up. |
* |
* @return NULL if there is no such child or pointer to the |
* matching child node. |
*/ |
ofw_tree_node_t * |
ofw_tree_find_peer_by_device_type(ofw_tree_node_t *node, const char *name) |
{ |
ofw_tree_node_t *cur; |
ofw_tree_property_t *prop; |
for (cur = node->peer; cur; cur = cur->peer) { |
prop = ofw_tree_getprop(cur, "device_type"); |
if (!prop || !prop->value) |
continue; |
if (strcmp(prop->value, name) == 0) |
return cur; |
} |
return NULL; |
} |
/** Lookup first peer of given name. |
* |
* @param node Node whose peer is being looked up. |
* @param name Name of the child being looked up. |
* |
* @return NULL if there is no such peer or pointer to the matching |
* peer node. |
*/ |
ofw_tree_node_t * |
ofw_tree_find_peer_by_name(ofw_tree_node_t *node, const char *name) |
{ |
ofw_tree_node_t *cur; |
ofw_tree_property_t *prop; |
for (cur = node->peer; cur; cur = cur->peer) { |
prop = ofw_tree_getprop(cur, "name"); |
if (!prop || !prop->value) |
continue; |
if (strcmp(prop->value, name) == 0) |
return cur; |
} |
return NULL; |
} |
/** Lookup OpenFirmware node by its path. |
* |
* @param path Path to the node. |
* |
* @return NULL if there is no such node or pointer to the leaf |
* node. |
*/ |
ofw_tree_node_t *ofw_tree_lookup(const char *path) |
{ |
char buf[NAME_BUF_LEN + 1]; |
ofw_tree_node_t *node = ofw_root; |
index_t i, j; |
if (path[0] != '/') |
return NULL; |
for (i = 1; i < strlen(path) && node; i = j + 1) { |
for (j = i; j < strlen(path) && path[j] != '/'; j++) |
; |
if (i == j) /* skip extra slashes */ |
continue; |
memcpy(buf, &path[i], j - i); |
buf[j - i] = '\0'; |
node = ofw_tree_find_child(node, buf); |
} |
return node; |
} |
/** Print OpenFirmware device subtree rooted in a node. |
* |
* Child nodes are processed recursively and peer nodes are processed |
* iteratively in order to avoid stack overflow. |
* |
* @param node Root of the subtree. |
* @param path Current path, NULL for the very root of the entire tree. |
*/ |
static void ofw_tree_node_print(const ofw_tree_node_t *node, const char *path) |
{ |
char *p; |
const ofw_tree_node_t *cur; |
p = (char *) malloc(PATH_MAX_LEN, 0); |
for (cur = node; cur; cur = cur->peer) { |
if (cur->parent) { |
snprintf(p, PATH_MAX_LEN, "%s/%s", path, cur->da_name); |
printf("%s\n", p); |
} else { |
snprintf(p, PATH_MAX_LEN, "%s", cur->da_name); |
printf("/\n"); |
} |
if (cur->child) |
ofw_tree_node_print(cur->child, p); |
} |
free(p); |
} |
/** Print the structure of the OpenFirmware device tree. */ |
void ofw_tree_print(void) |
{ |
ofw_tree_node_print(ofw_root, NULL); |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/ofw/pci.c |
---|
0,0 → 1,151 |
/* |
* Copyright (c) 2006 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup ofw |
* @{ |
*/ |
/** |
* @file |
* @brief PCI 'reg' and 'ranges' properties handling. |
* |
*/ |
#include <genarch/ofw/ofw_tree.h> |
#include <arch/drivers/pci.h> |
#include <arch/trap/interrupt.h> |
#include <arch/memstr.h> |
#include <func.h> |
#include <panic.h> |
#include <macros.h> |
#define PCI_SPACE_MASK 0x03000000 |
#define PCI_ABS_MASK 0x80000000 |
#define PCI_REG_MASK 0x000000ff |
#define PCI_IGN 0x1f |
bool |
ofw_pci_apply_ranges(ofw_tree_node_t *node, ofw_pci_reg_t *reg, uintptr_t *pa) |
{ |
ofw_tree_property_t *prop; |
ofw_pci_range_t *range; |
count_t ranges; |
prop = ofw_tree_getprop(node, "ranges"); |
if (!prop) { |
if (strcmp(ofw_tree_node_name(node->parent), "pci") == 0) |
return ofw_pci_apply_ranges(node->parent, reg, pa); |
return false; |
} |
ranges = prop->size / sizeof(ofw_pci_range_t); |
range = prop->value; |
unsigned int i; |
for (i = 0; i < ranges; i++) { |
if ((reg->space & PCI_SPACE_MASK) != |
(range[i].space & PCI_SPACE_MASK)) |
continue; |
if (overlaps(reg->addr, reg->size, range[i].child_base, |
range[i].size)) { |
*pa = range[i].parent_base + |
(reg->addr - range[i].child_base); |
return true; |
} |
} |
return false; |
} |
bool |
ofw_pci_reg_absolutize(ofw_tree_node_t *node, ofw_pci_reg_t *reg, |
ofw_pci_reg_t *out) |
{ |
if (reg->space & PCI_ABS_MASK) { |
/* already absolute */ |
out->space = reg->space; |
out->addr = reg->addr; |
out->size = reg->size; |
return true; |
} |
ofw_tree_property_t *prop; |
ofw_pci_reg_t *assigned_address; |
count_t assigned_addresses; |
prop = ofw_tree_getprop(node, "assigned-addresses"); |
if (!prop) |
panic("Cannot find 'assigned-addresses' property."); |
assigned_addresses = prop->size / sizeof(ofw_pci_reg_t); |
assigned_address = prop->value; |
unsigned int i; |
for (i = 0; i < assigned_addresses; i++) { |
if ((assigned_address[i].space & PCI_REG_MASK) == |
(reg->space & PCI_REG_MASK)) { |
out->space = assigned_address[i].space; |
out->addr = reg->addr + assigned_address[i].addr; |
out->size = reg->size; |
return true; |
} |
} |
return false; |
} |
/** Map PCI interrupt. |
* |
* So far, we only know how to map interrupts of non-PCI devices connected |
* to a PCI bridge. |
*/ |
bool |
ofw_pci_map_interrupt(ofw_tree_node_t *node, ofw_pci_reg_t *reg, int ino, |
int *inr, cir_t *cir, void **cir_arg) |
{ |
pci_t *pci = node->device; |
if (!pci) { |
pci = pci_init(node); |
if (!pci) |
return false; |
node->device = pci; |
} |
pci_enable_interrupt(pci, ino); |
*inr = (PCI_IGN << IGN_SHIFT) | ino; |
*cir = pci_clear_interrupt; |
*cir_arg = pci; |
return true; |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/ofw/ebus.c |
---|
0,0 → 1,148 |
/* |
* Copyright (c) 2006 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup ofw |
* @{ |
*/ |
/** |
* @file |
* @brief EBUS 'reg' and 'ranges' properties handling. |
* |
*/ |
#include <genarch/ofw/ofw_tree.h> |
#include <arch/memstr.h> |
#include <arch/trap/interrupt.h> |
#include <func.h> |
#include <panic.h> |
#include <debug.h> |
#include <macros.h> |
/** Apply EBUS ranges to EBUS register. */ |
bool |
ofw_ebus_apply_ranges(ofw_tree_node_t *node, ofw_ebus_reg_t *reg, uintptr_t *pa) |
{ |
ofw_tree_property_t *prop; |
ofw_ebus_range_t *range; |
count_t ranges; |
prop = ofw_tree_getprop(node, "ranges"); |
if (!prop) |
return false; |
ranges = prop->size / sizeof(ofw_ebus_range_t); |
range = prop->value; |
unsigned int i; |
for (i = 0; i < ranges; i++) { |
if (reg->space != range[i].child_space) |
continue; |
if (overlaps(reg->addr, reg->size, range[i].child_base, |
range[i].size)) { |
ofw_pci_reg_t pci_reg; |
pci_reg.space = range[i].parent_space; |
pci_reg.addr = range[i].parent_base + |
(reg->addr - range[i].child_base); |
pci_reg.size = reg->size; |
return ofw_pci_apply_ranges(node->parent, &pci_reg, pa); |
} |
} |
return false; |
} |
bool |
ofw_ebus_map_interrupt(ofw_tree_node_t *node, ofw_ebus_reg_t *reg, |
uint32_t interrupt, int *inr, cir_t *cir, void **cir_arg) |
{ |
ofw_tree_property_t *prop; |
ofw_tree_node_t *controller; |
prop = ofw_tree_getprop(node, "interrupt-map"); |
if (!prop || !prop->value) |
return false; |
ofw_ebus_intr_map_t *intr_map = prop->value; |
count_t count = prop->size / sizeof(ofw_ebus_intr_map_t); |
ASSERT(count); |
prop = ofw_tree_getprop(node, "interrupt-map-mask"); |
if (!prop || !prop->value) |
return false; |
ofw_ebus_intr_mask_t *intr_mask = prop->value; |
ASSERT(prop->size == sizeof(ofw_ebus_intr_mask_t)); |
uint32_t space = reg->space & intr_mask->space_mask; |
uint32_t addr = reg->addr & intr_mask->addr_mask; |
uint32_t intr = interrupt & intr_mask->intr_mask; |
unsigned int i; |
for (i = 0; i < count; i++) { |
if ((intr_map[i].space == space) && |
(intr_map[i].addr == addr) && (intr_map[i].intr == intr)) |
goto found; |
} |
return false; |
found: |
/* |
* We found the device that functions as an interrupt controller |
* for the interrupt. We also found partial mapping from interrupt to |
* INO. |
*/ |
controller = ofw_tree_find_node_by_handle(ofw_tree_lookup("/"), |
intr_map[i].controller_handle); |
if (!controller) |
return false; |
if (strcmp(ofw_tree_node_name(controller), "pci") != 0) { |
/* |
* This is not a PCI node. |
*/ |
return false; |
} |
/* |
* Let the PCI do the next step in mapping the interrupt. |
*/ |
if (!ofw_pci_map_interrupt(controller, NULL, intr_map[i].controller_ino, |
inr, cir, cir_arg)) |
return false; |
return true; |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/ofw/sbus.c |
---|
0,0 → 1,79 |
/* |
* Copyright (c) 2007 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup ofw |
* @{ |
*/ |
/** |
* @file |
* @brief SBUS 'reg' and 'ranges' properties handling. |
* |
*/ |
#include <genarch/ofw/ofw_tree.h> |
#include <macros.h> |
bool ofw_sbus_apply_ranges(ofw_tree_node_t *node, ofw_sbus_reg_t *reg, |
uintptr_t *pa) |
{ |
ofw_tree_property_t *prop; |
ofw_sbus_range_t *range; |
count_t ranges; |
/* |
* The SBUS support is very rudimentary in that we simply assume |
* that the SBUS bus in question is connected directly to the UPA bus. |
* Should we come across configurations that need more robust support, |
* the driver will have to be extended to handle different topologies. |
*/ |
if (!node->parent || node->parent->parent) |
return false; |
prop = ofw_tree_getprop(node, "ranges"); |
if (!prop) |
return false; |
ranges = prop->size / sizeof(ofw_sbus_range_t); |
range = prop->value; |
unsigned int i; |
for (i = 0; i < ranges; i++) { |
if (overlaps(reg->addr, reg->size, range[i].child_base, |
range[i].size)) { |
*pa = range[i].parent_base + |
(reg->addr - range[i].child_base); |
return true; |
} |
} |
return false; |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/ofw/upa.c |
---|
0,0 → 1,52 |
/* |
* Copyright (c) 2006 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup ofw |
* @{ |
*/ |
/** |
* @file |
* @brief UPA 'reg' and 'ranges' properties handling. |
* |
*/ |
#include <genarch/ofw/ofw_tree.h> |
#include <arch/memstr.h> |
#include <func.h> |
#include <panic.h> |
#include <macros.h> |
#include <debug.h> |
bool ofw_upa_apply_ranges(ofw_tree_node_t *node, ofw_upa_reg_t *reg, uintptr_t *pa) |
{ |
*pa = reg->addr; |
return true; |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/kbd/key.c |
---|
0,0 → 1,254 |
/* |
* Copyright (c) 2006 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarch |
* @{ |
*/ |
/** |
* @file |
* @brief Key processing. |
*/ |
#include <genarch/kbd/key.h> |
#include <genarch/kbd/scanc.h> |
#ifdef CONFIG_I8042 |
#include <genarch/kbd/scanc_pc.h> |
#endif |
#if (defined(sparc64)) |
#include <genarch/kbd/scanc_sun.h> |
#endif |
#include <synch/spinlock.h> |
#include <console/chardev.h> |
#include <macros.h> |
#define PRESSED_SHIFT (1<<0) |
#define PRESSED_CAPSLOCK (1<<1) |
#define LOCKED_CAPSLOCK (1<<0) |
#define ACTIVE_READ_BUFF_SIZE 16 /* Must be power of 2 */ |
chardev_t kbrd; |
static uint8_t active_read_buff[ACTIVE_READ_BUFF_SIZE]; |
SPINLOCK_INITIALIZE(keylock); /**< keylock protects keyflags and lockflags. */ |
static volatile int keyflags; /**< Tracking of multiple keypresses. */ |
static volatile int lockflags; /**< Tracking of multiple keys lockings. */ |
/** Process release of key. |
* |
* @param sc Scancode of the key being released. |
*/ |
void key_released(uint8_t sc) |
{ |
spinlock_lock(&keylock); |
switch (sc) { |
case SC_LSHIFT: |
case SC_RSHIFT: |
keyflags &= ~PRESSED_SHIFT; |
break; |
case SC_CAPSLOCK: |
keyflags &= ~PRESSED_CAPSLOCK; |
if (lockflags & LOCKED_CAPSLOCK) |
lockflags &= ~LOCKED_CAPSLOCK; |
else |
lockflags |= LOCKED_CAPSLOCK; |
break; |
default: |
break; |
} |
spinlock_unlock(&keylock); |
} |
/** Process keypress. |
* |
* @param sc Scancode of the key being pressed. |
*/ |
void key_pressed(uint8_t sc) |
{ |
char *map = sc_primary_map; |
char ascii = sc_primary_map[sc]; |
bool shift, capslock; |
bool letter = false; |
spinlock_lock(&keylock); |
switch (sc) { |
case SC_LSHIFT: |
case SC_RSHIFT: |
keyflags |= PRESSED_SHIFT; |
break; |
case SC_CAPSLOCK: |
keyflags |= PRESSED_CAPSLOCK; |
break; |
case SC_SPEC_ESCAPE: |
break; |
case SC_LEFTARR: |
chardev_push_character(&kbrd, 0x1b); |
chardev_push_character(&kbrd, 0x5b); |
chardev_push_character(&kbrd, 0x44); |
break; |
case SC_RIGHTARR: |
chardev_push_character(&kbrd, 0x1b); |
chardev_push_character(&kbrd, 0x5b); |
chardev_push_character(&kbrd, 0x43); |
break; |
case SC_UPARR: |
chardev_push_character(&kbrd, 0x1b); |
chardev_push_character(&kbrd, 0x5b); |
chardev_push_character(&kbrd, 0x41); |
break; |
case SC_DOWNARR: |
chardev_push_character(&kbrd, 0x1b); |
chardev_push_character(&kbrd, 0x5b); |
chardev_push_character(&kbrd, 0x42); |
break; |
case SC_HOME: |
chardev_push_character(&kbrd, 0x1b); |
chardev_push_character(&kbrd, 0x4f); |
chardev_push_character(&kbrd, 0x48); |
break; |
case SC_END: |
chardev_push_character(&kbrd, 0x1b); |
chardev_push_character(&kbrd, 0x4f); |
chardev_push_character(&kbrd, 0x46); |
break; |
case SC_DELETE: |
chardev_push_character(&kbrd, 0x1b); |
chardev_push_character(&kbrd, 0x5b); |
chardev_push_character(&kbrd, 0x33); |
chardev_push_character(&kbrd, 0x7e); |
break; |
default: |
letter = islower(ascii); |
capslock = (keyflags & PRESSED_CAPSLOCK) || |
(lockflags & LOCKED_CAPSLOCK); |
shift = keyflags & PRESSED_SHIFT; |
if (letter && capslock) |
shift = !shift; |
if (shift) |
map = sc_secondary_map; |
chardev_push_character(&kbrd, map[sc]); |
break; |
} |
spinlock_unlock(&keylock); |
} |
uint8_t active_read_buff_read(void) |
{ |
static int i=0; |
i &= (ACTIVE_READ_BUFF_SIZE-1); |
if(!active_read_buff[i]) { |
return 0; |
} |
return active_read_buff[i++]; |
} |
void active_read_buff_write(uint8_t ch) |
{ |
static int i=0; |
active_read_buff[i] = ch; |
i++; |
i &= (ACTIVE_READ_BUFF_SIZE-1); |
active_read_buff[i]=0; |
} |
void active_read_key_pressed(uint8_t sc) |
{ |
char *map = sc_primary_map; |
char ascii = sc_primary_map[sc]; |
bool shift, capslock; |
bool letter = false; |
/*spinlock_lock(&keylock);*/ |
switch (sc) { |
case SC_LSHIFT: |
case SC_RSHIFT: |
keyflags |= PRESSED_SHIFT; |
break; |
case SC_CAPSLOCK: |
keyflags |= PRESSED_CAPSLOCK; |
break; |
case SC_SPEC_ESCAPE: |
break; |
case SC_LEFTARR: |
active_read_buff_write(0x1b); |
active_read_buff_write(0x5b); |
active_read_buff_write(0x44); |
break; |
case SC_RIGHTARR: |
active_read_buff_write(0x1b); |
active_read_buff_write(0x5b); |
active_read_buff_write(0x43); |
break; |
case SC_UPARR: |
active_read_buff_write(0x1b); |
active_read_buff_write(0x5b); |
active_read_buff_write(0x41); |
break; |
case SC_DOWNARR: |
active_read_buff_write(0x1b); |
active_read_buff_write(0x5b); |
active_read_buff_write(0x42); |
break; |
case SC_HOME: |
active_read_buff_write(0x1b); |
active_read_buff_write(0x4f); |
active_read_buff_write(0x48); |
break; |
case SC_END: |
active_read_buff_write(0x1b); |
active_read_buff_write(0x4f); |
active_read_buff_write(0x46); |
break; |
case SC_DELETE: |
active_read_buff_write(0x1b); |
active_read_buff_write(0x5b); |
active_read_buff_write(0x33); |
active_read_buff_write(0x7e); |
break; |
default: |
letter = islower(ascii); |
capslock = (keyflags & PRESSED_CAPSLOCK) || |
(lockflags & LOCKED_CAPSLOCK); |
shift = keyflags & PRESSED_SHIFT; |
if (letter && capslock) |
shift = !shift; |
if (shift) |
map = sc_secondary_map; |
active_read_buff_write(map[sc]); |
break; |
} |
/*spinlock_unlock(&keylock);*/ |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/kbd/i8042.c |
---|
0,0 → 1,245 |
/* |
* Copyright (c) 2001-2004 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarch |
* @{ |
*/ |
/** |
* @file |
* @brief i8042 processor driver. |
* |
* It takes care of low-level keyboard functions. |
*/ |
#include <genarch/kbd/i8042.h> |
#ifdef ia64 |
#include <arch/drivers/kbd.h> |
#endif |
#include <genarch/kbd/key.h> |
#include <genarch/kbd/scanc.h> |
#include <genarch/kbd/scanc_pc.h> |
#include <arch/drivers/i8042.h> |
#include <cpu.h> |
#include <arch/asm.h> |
#include <arch.h> |
#include <console/chardev.h> |
#include <console/console.h> |
#include <interrupt.h> |
#include <sysinfo/sysinfo.h> |
#include <ipc/irq.h> |
/* Keyboard commands. */ |
#define KBD_ENABLE 0xf4 |
#define KBD_DISABLE 0xf5 |
#define KBD_ACK 0xfa |
/* |
* 60 Write 8042 Command Byte: next data byte written to port 60h is |
* placed in 8042 command register. Format: |
* |
* |7|6|5|4|3|2|1|0|8042 Command Byte |
* | | | | | | | `---- 1=enable output register full interrupt |
* | | | | | | `----- should be 0 |
* | | | | | `------ 1=set status register system, 0=clear |
* | | | | `------- 1=override keyboard inhibit, 0=allow inhibit |
* | | | `-------- disable keyboard I/O by driving clock line low |
* | | `--------- disable auxiliary device, drives clock line low |
* | `---------- IBM scancode translation 0=AT, 1=PC/XT |
* `----------- reserved, should be 0 |
*/ |
#define i8042_SET_COMMAND 0x60 |
#define i8042_COMMAND 0x69 |
#define i8042_BUFFER_FULL_MASK 0x01 |
#define i8042_WAIT_MASK 0x02 |
#define i8042_MOUSE_DATA 0x20 |
static void i8042_suspend(chardev_t *); |
static void i8042_resume(chardev_t *); |
static chardev_operations_t ops = { |
.suspend = i8042_suspend, |
.resume = i8042_resume, |
.read = i8042_key_read |
}; |
/** Structure for i8042's IRQ. */ |
static irq_t i8042_kbd_irq; |
static irq_t i8042_mouse_irq; |
void i8042_grab(void) |
{ |
ipl_t ipl = interrupts_disable(); |
spinlock_lock(&i8042_kbd_irq.lock); |
i8042_kbd_irq.notif_cfg.notify = false; |
spinlock_unlock(&i8042_kbd_irq.lock); |
spinlock_lock(&i8042_mouse_irq.lock); |
i8042_mouse_irq.notif_cfg.notify = false; |
spinlock_unlock(&i8042_mouse_irq.lock); |
interrupts_restore(ipl); |
} |
void i8042_release(void) |
{ |
ipl_t ipl = interrupts_disable(); |
spinlock_lock(&i8042_kbd_irq.lock); |
if (i8042_kbd_irq.notif_cfg.answerbox) |
i8042_kbd_irq.notif_cfg.notify = true; |
spinlock_unlock(&i8042_kbd_irq.lock); |
spinlock_lock(&i8042_mouse_irq.lock); |
if (i8042_mouse_irq.notif_cfg.answerbox) |
i8042_mouse_irq.notif_cfg.notify = true; |
spinlock_unlock(&i8042_mouse_irq.lock); |
interrupts_restore(ipl); |
} |
static irq_ownership_t i8042_claim(void) |
{ |
return IRQ_ACCEPT; |
} |
static void i8042_irq_handler(irq_t *irq, void *arg, ...) |
{ |
if (irq->notif_cfg.notify && irq->notif_cfg.answerbox) |
ipc_irq_send_notif(irq); |
else { |
uint8_t data; |
uint8_t status; |
while (((status = i8042_status_read()) & i8042_BUFFER_FULL_MASK)) { |
data = i8042_data_read(); |
if ((status & i8042_MOUSE_DATA)) |
continue; |
if (data & KEY_RELEASE) |
key_released(data ^ KEY_RELEASE); |
else |
key_pressed(data); |
} |
} |
} |
/** Initialize i8042. */ |
void i8042_init(devno_t kbd_devno, inr_t kbd_inr, devno_t mouse_devno, inr_t mouse_inr) |
{ |
chardev_initialize("i8042_kbd", &kbrd, &ops); |
stdin = &kbrd; |
irq_initialize(&i8042_kbd_irq); |
i8042_kbd_irq.devno = kbd_devno; |
i8042_kbd_irq.inr = kbd_inr; |
i8042_kbd_irq.claim = i8042_claim; |
i8042_kbd_irq.handler = i8042_irq_handler; |
irq_register(&i8042_kbd_irq); |
irq_initialize(&i8042_mouse_irq); |
i8042_mouse_irq.devno = mouse_devno; |
i8042_mouse_irq.inr = mouse_inr; |
i8042_mouse_irq.claim = i8042_claim; |
i8042_mouse_irq.handler = i8042_irq_handler; |
irq_register(&i8042_mouse_irq); |
#ifndef ia64 |
trap_virtual_enable_irqs(1 << kbd_inr); |
trap_virtual_enable_irqs(1 << mouse_inr); |
#endif |
/* |
* Clear input buffer. |
* Number of iterations is limited to prevent infinite looping. |
*/ |
int i; |
for (i = 0; (i8042_status_read() & i8042_BUFFER_FULL_MASK) && i < 100; i++) { |
i8042_data_read(); |
} |
sysinfo_set_item_val("kbd", NULL, true); |
sysinfo_set_item_val("kbd.devno", NULL, kbd_devno); |
sysinfo_set_item_val("kbd.inr", NULL, kbd_inr); |
#ifdef KBD_LEGACY |
sysinfo_set_item_val("kbd.type", NULL, KBD_LEGACY); |
#endif |
sysinfo_set_item_val("mouse", NULL, true); |
sysinfo_set_item_val("mouse.devno", NULL, mouse_devno); |
sysinfo_set_item_val("mouse.inr", NULL, mouse_inr); |
i8042_grab(); |
} |
/* Called from getc(). */ |
void i8042_resume(chardev_t *d) |
{ |
} |
/* Called from getc(). */ |
void i8042_suspend(chardev_t *d) |
{ |
} |
char i8042_key_read(chardev_t *d) |
{ |
char ch; |
while(!(ch = active_read_buff_read())) { |
uint8_t x; |
while (!(i8042_status_read() & i8042_BUFFER_FULL_MASK)) |
; |
x = i8042_data_read(); |
if (x & KEY_RELEASE) |
key_released(x ^ KEY_RELEASE); |
else |
active_read_key_pressed(x); |
} |
return ch; |
} |
/** Poll for key press and release events. |
* |
* This function can be used to implement keyboard polling. |
*/ |
void i8042_poll(void) |
{ |
uint8_t x; |
while (((x = i8042_status_read() & i8042_BUFFER_FULL_MASK))) { |
x = i8042_data_read(); |
if (x & KEY_RELEASE) |
key_released(x ^ KEY_RELEASE); |
else |
key_pressed(x); |
} |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/kbd/ns16550.c |
---|
0,0 → 1,276 |
/* |
* Copyright (c) 2001-2006 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarch |
* @{ |
*/ |
/** |
* @file |
* @brief NS 16550 serial port / keyboard driver. |
*/ |
#include <genarch/kbd/ns16550.h> |
#include <genarch/kbd/key.h> |
#include <genarch/kbd/scanc.h> |
#include <genarch/kbd/scanc_sun.h> |
#include <arch/drivers/kbd.h> |
#ifndef ia64 |
#include <arch/drivers/ns16550.h> |
#endif |
#include <ddi/irq.h> |
#include <ipc/irq.h> |
#include <cpu.h> |
#include <arch/asm.h> |
#include <arch.h> |
#include <console/chardev.h> |
#include <console/console.h> |
#include <interrupt.h> |
#include <arch/interrupt.h> |
#include <sysinfo/sysinfo.h> |
#include <synch/spinlock.h> |
#define LSR_DATA_READY 0x01 |
/** Structure representing the ns16550. */ |
static ns16550_t ns16550; |
/** Structure for ns16550's IRQ. */ |
static irq_t ns16550_irq; |
/* |
* These codes read from ns16550 data register are silently ignored. |
*/ |
#define IGNORE_CODE 0x7f /* all keys up */ |
static void ns16550_suspend(chardev_t *); |
static void ns16550_resume(chardev_t *); |
static chardev_operations_t ops = { |
.suspend = ns16550_suspend, |
.resume = ns16550_resume, |
.read = ns16550_key_read |
}; |
void ns16550_interrupt(void); |
/** Initialize keyboard and service interrupts using kernel routine */ |
void ns16550_grab(void) |
{ |
ipl_t ipl = interrupts_disable(); |
ns16550_ier_write(&ns16550, IER_ERBFI); /* enable receiver interrupt */ |
while (ns16550_lsr_read(&ns16550) & LSR_DATA_READY) |
(void) ns16550_rbr_read(&ns16550); |
spinlock_lock(&ns16550_irq.lock); |
ns16550_irq.notif_cfg.notify = false; |
spinlock_unlock(&ns16550_irq.lock); |
interrupts_restore(ipl); |
} |
/** Resume the former interrupt vector */ |
void ns16550_release(void) |
{ |
ipl_t ipl = interrupts_disable(); |
spinlock_lock(&ns16550_irq.lock); |
if (ns16550_irq.notif_cfg.answerbox) |
ns16550_irq.notif_cfg.notify = true; |
spinlock_unlock(&ns16550_irq.lock); |
interrupts_restore(ipl); |
} |
/** Initialize ns16550. |
* |
* @param devno Device number. |
* @param port Virtual/IO address of device's registers. |
* @param inr Interrupt number. |
* @param cir Clear interrupt function. |
* @param cir_arg First argument to cir. |
*/ |
void |
ns16550_init(devno_t devno, ioport_t port, inr_t inr, cir_t cir, void *cir_arg) |
{ |
chardev_initialize("ns16550_kbd", &kbrd, &ops); |
stdin = &kbrd; |
ns16550.devno = devno; |
ns16550.io_port = port; |
irq_initialize(&ns16550_irq); |
ns16550_irq.devno = devno; |
ns16550_irq.inr = inr; |
ns16550_irq.claim = ns16550_claim; |
ns16550_irq.handler = ns16550_irq_handler; |
ns16550_irq.cir = cir; |
ns16550_irq.cir_arg = cir_arg; |
irq_register(&ns16550_irq); |
while ((ns16550_lsr_read(&ns16550) & LSR_DATA_READY)) |
ns16550_rbr_read(&ns16550); |
sysinfo_set_item_val("kbd", NULL, true); |
sysinfo_set_item_val("kbd.type", NULL, KBD_NS16550); |
sysinfo_set_item_val("kbd.devno", NULL, devno); |
sysinfo_set_item_val("kbd.inr", NULL, inr); |
sysinfo_set_item_val("kbd.address.virtual", NULL, port); |
sysinfo_set_item_val("kbd.port", NULL, port); |
#ifdef CONFIG_NS16550_INTERRUPT_DRIVEN |
/* Enable interrupts */ |
ns16550_ier_write(&ns16550, IER_ERBFI); |
ns16550_mcr_write(&ns16550, MCR_OUT2); |
#endif |
#ifdef ia64 |
uint8_t c; |
// This switches rbr & ier to mode when accept baudrate constant |
c = ns16550_lcr_read(&ns16550); |
ns16550_lcr_write(&ns16550, 0x80 | c); |
ns16550_rbr_write(&ns16550, 0x0c); |
ns16550_ier_write(&ns16550, 0x00); |
ns16550_lcr_write(&ns16550, c); |
#endif |
ns16550_grab(); |
} |
/** Process ns16550 interrupt. */ |
void ns16550_interrupt(void) |
{ |
ns16550_poll(); |
} |
/* Called from getc(). */ |
void ns16550_resume(chardev_t *d) |
{ |
} |
/* Called from getc(). */ |
void ns16550_suspend(chardev_t *d) |
{ |
} |
char ns16550_key_read(chardev_t *d) |
{ |
char ch; |
while(!(ch = active_read_buff_read())) { |
uint8_t x; |
while (!(ns16550_lsr_read(&ns16550) & LSR_DATA_READY)) |
; |
x = ns16550_rbr_read(&ns16550); |
#ifndef ia64 |
if (x != IGNORE_CODE) { |
if (x & KEY_RELEASE) |
key_released(x ^ KEY_RELEASE); |
else |
active_read_key_pressed(x); |
} |
#else |
extern chardev_t kbrd; |
if(x != 0x0d) { |
if(x == 0x7f) |
x = '\b'; |
chardev_push_character(&kbrd, x); |
} |
#endif |
} |
return ch; |
} |
/** Poll for key press and release events. |
* |
* This function can be used to implement keyboard polling. |
*/ |
void ns16550_poll(void) |
{ |
#ifndef CONFIG_NS16550_INTERRUPT_DRIVEN |
ipl_t ipl; |
ipl = interrupts_disable(); |
spinlock_lock(&ns16550_irq.lock); |
if (ns16550_lsr_read(&ns16550) & LSR_DATA_READY) { |
if (ns16550_irq.notif_cfg.notify && ns16550_irq.notif_cfg.answerbox) { |
/* |
* Send IPC notification. |
*/ |
ipc_irq_send_notif(&ns16550_irq); |
spinlock_unlock(&ns16550_irq.lock); |
interrupts_restore(ipl); |
return; |
} |
} |
spinlock_unlock(&ns16550_irq.lock); |
interrupts_restore(ipl); |
#endif |
while (ns16550_lsr_read(&ns16550) & LSR_DATA_READY) { |
uint8_t x; |
x = ns16550_rbr_read(&ns16550); |
#ifndef ia64 |
if (x != IGNORE_CODE) { |
if (x & KEY_RELEASE) |
key_released(x ^ KEY_RELEASE); |
else |
key_pressed(x); |
} |
#else |
extern chardev_t kbrd; |
if(x != 0x0d) { |
if (x == 0x7f) |
x = '\b'; |
chardev_push_character(&kbrd, x); |
} |
#endif |
} |
} |
irq_ownership_t ns16550_claim(void) |
{ |
return (ns16550_lsr_read(&ns16550) & LSR_DATA_READY); |
} |
void ns16550_irq_handler(irq_t *irq, void *arg, ...) |
{ |
if (irq->notif_cfg.notify && irq->notif_cfg.answerbox) |
ipc_irq_send_notif(irq); |
else |
ns16550_interrupt(); |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/kbd/z8530.c |
---|
0,0 → 1,211 |
/* |
* Copyright (c) 2001-2004 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarch |
* @{ |
*/ |
/** |
* @file |
* @brief Zilog 8530 serial port / keyboard driver. |
*/ |
#include <genarch/kbd/z8530.h> |
#include <genarch/kbd/key.h> |
#include <genarch/kbd/scanc.h> |
#include <genarch/kbd/scanc_sun.h> |
#include <arch/drivers/z8530.h> |
#include <ddi/irq.h> |
#include <ipc/irq.h> |
#include <arch/interrupt.h> |
#include <arch/drivers/kbd.h> |
#include <cpu.h> |
#include <arch/asm.h> |
#include <arch.h> |
#include <console/chardev.h> |
#include <console/console.h> |
#include <interrupt.h> |
#include <sysinfo/sysinfo.h> |
#include <print.h> |
/* |
* These codes read from z8530 data register are silently ignored. |
*/ |
#define IGNORE_CODE 0x7f /* all keys up */ |
static z8530_t z8530; /**< z8530 device structure. */ |
static irq_t z8530_irq; /**< z8530's IRQ. */ |
static void z8530_suspend(chardev_t *); |
static void z8530_resume(chardev_t *); |
static chardev_operations_t ops = { |
.suspend = z8530_suspend, |
.resume = z8530_resume, |
.read = z8530_key_read |
}; |
/** Initialize keyboard and service interrupts using kernel routine. */ |
void z8530_grab(void) |
{ |
ipl_t ipl = interrupts_disable(); |
(void) z8530_read_a(&z8530, RR8); |
/* |
* Clear any pending TX interrupts or we never manage |
* to set FHC UART interrupt state to idle. |
*/ |
z8530_write_a(&z8530, WR0, WR0_TX_IP_RST); |
/* interrupt on all characters */ |
z8530_write_a(&z8530, WR1, WR1_IARCSC); |
/* 8 bits per character and enable receiver */ |
z8530_write_a(&z8530, WR3, WR3_RX8BITSCH | WR3_RX_ENABLE); |
/* Master Interrupt Enable. */ |
z8530_write_a(&z8530, WR9, WR9_MIE); |
spinlock_lock(&z8530_irq.lock); |
z8530_irq.notif_cfg.notify = false; |
spinlock_unlock(&z8530_irq.lock); |
interrupts_restore(ipl); |
} |
/** Resume the former IPC notification behavior. */ |
void z8530_release(void) |
{ |
ipl_t ipl = interrupts_disable(); |
spinlock_lock(&z8530_irq.lock); |
if (z8530_irq.notif_cfg.answerbox) |
z8530_irq.notif_cfg.notify = true; |
spinlock_unlock(&z8530_irq.lock); |
interrupts_restore(ipl); |
} |
/** Initialize z8530. */ |
void |
z8530_init(devno_t devno, uintptr_t vaddr, inr_t inr, cir_t cir, void *cir_arg) |
{ |
chardev_initialize("z8530_kbd", &kbrd, &ops); |
stdin = &kbrd; |
z8530.devno = devno; |
z8530.reg = (uint8_t *) vaddr; |
irq_initialize(&z8530_irq); |
z8530_irq.devno = devno; |
z8530_irq.inr = inr; |
z8530_irq.claim = z8530_claim; |
z8530_irq.handler = z8530_irq_handler; |
z8530_irq.cir = cir; |
z8530_irq.cir_arg = cir_arg; |
irq_register(&z8530_irq); |
sysinfo_set_item_val("kbd", NULL, true); |
sysinfo_set_item_val("kbd.type", NULL, KBD_Z8530); |
sysinfo_set_item_val("kbd.devno", NULL, devno); |
sysinfo_set_item_val("kbd.inr", NULL, inr); |
sysinfo_set_item_val("kbd.address.virtual", NULL, vaddr); |
z8530_grab(); |
} |
/** Process z8530 interrupt. |
* |
* @param n Interrupt vector. |
* @param istate Interrupted state. |
*/ |
void z8530_interrupt(void) |
{ |
z8530_poll(); |
} |
/* Called from getc(). */ |
void z8530_resume(chardev_t *d) |
{ |
} |
/* Called from getc(). */ |
void z8530_suspend(chardev_t *d) |
{ |
} |
char z8530_key_read(chardev_t *d) |
{ |
char ch; |
while(!(ch = active_read_buff_read())) { |
uint8_t x; |
while (!(z8530_read_a(&z8530, RR0) & RR0_RCA)) |
; |
x = z8530_read_a(&z8530, RR8); |
if (x != IGNORE_CODE) { |
if (x & KEY_RELEASE) |
key_released(x ^ KEY_RELEASE); |
else |
active_read_key_pressed(x); |
} |
} |
return ch; |
} |
/** Poll for key press and release events. |
* |
* This function can be used to implement keyboard polling. |
*/ |
void z8530_poll(void) |
{ |
uint8_t x; |
while (z8530_read_a(&z8530, RR0) & RR0_RCA) { |
x = z8530_read_a(&z8530, RR8); |
if (x != IGNORE_CODE) { |
if (x & KEY_RELEASE) |
key_released(x ^ KEY_RELEASE); |
else |
key_pressed(x); |
} |
} |
} |
irq_ownership_t z8530_claim(void) |
{ |
return (z8530_read_a(&z8530, RR0) & RR0_RCA); |
} |
void z8530_irq_handler(irq_t *irq, void *arg, ...) |
{ |
if (irq->notif_cfg.notify && irq->notif_cfg.answerbox) |
ipc_irq_send_notif(irq); |
else |
z8530_interrupt(); |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/kbd/scanc_pc.c |
---|
0,0 → 1,200 |
/* |
* Copyright (c) 2006 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarch |
* @{ |
*/ |
/** |
* @file |
* @brief Scan codes for pc keyboards. |
*/ |
#include <genarch/kbd/scanc.h> |
/** Primary meaning of scancodes. */ |
char sc_primary_map[] = { |
SPECIAL, /* 0x00 */ |
SPECIAL, /* 0x01 - Esc */ |
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', |
'\b', /* 0x0e - Backspace */ |
'\t', 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', '\n', |
SPECIAL, /* 0x1d - LCtrl */ |
'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'', |
'`', |
SPECIAL, /* 0x2a - LShift */ |
'\\', |
'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', |
SPECIAL, /* 0x36 - RShift */ |
'*', |
SPECIAL, /* 0x38 - LAlt */ |
' ', |
SPECIAL, /* 0x3a - CapsLock */ |
SPECIAL, /* 0x3b - F1 */ |
SPECIAL, /* 0x3c - F2 */ |
SPECIAL, /* 0x3d - F3 */ |
SPECIAL, /* 0x3e - F4 */ |
SPECIAL, /* 0x3f - F5 */ |
SPECIAL, /* 0x40 - F6 */ |
SPECIAL, /* 0x41 - F7 */ |
SPECIAL, /* 0x42 - F8 */ |
SPECIAL, /* 0x43 - F9 */ |
SPECIAL, /* 0x44 - F10 */ |
SPECIAL, /* 0x45 - NumLock */ |
SPECIAL, /* 0x46 - ScrollLock */ |
'7', '8', '9', '-', |
'4', '5', '6', '+', |
'1', '2', '3', |
'0', '.', |
SPECIAL, /* 0x54 - Alt-SysRq */ |
SPECIAL, /* 0x55 - F11/F12/PF1/FN */ |
SPECIAL, /* 0x56 - unlabelled key next to LAlt */ |
SPECIAL, /* 0x57 - F11 */ |
SPECIAL, /* 0x58 - F12 */ |
SPECIAL, /* 0x59 */ |
SPECIAL, /* 0x5a */ |
SPECIAL, /* 0x5b */ |
SPECIAL, /* 0x5c */ |
SPECIAL, /* 0x5d */ |
SPECIAL, /* 0x5e */ |
SPECIAL, /* 0x5f */ |
SPECIAL, /* 0x60 */ |
SPECIAL, /* 0x61 */ |
SPECIAL, /* 0x62 */ |
SPECIAL, /* 0x63 */ |
SPECIAL, /* 0x64 */ |
SPECIAL, /* 0x65 */ |
SPECIAL, /* 0x66 */ |
SPECIAL, /* 0x67 */ |
SPECIAL, /* 0x68 */ |
SPECIAL, /* 0x69 */ |
SPECIAL, /* 0x6a */ |
SPECIAL, /* 0x6b */ |
SPECIAL, /* 0x6c */ |
SPECIAL, /* 0x6d */ |
SPECIAL, /* 0x6e */ |
SPECIAL, /* 0x6f */ |
SPECIAL, /* 0x70 */ |
SPECIAL, /* 0x71 */ |
SPECIAL, /* 0x72 */ |
SPECIAL, /* 0x73 */ |
SPECIAL, /* 0x74 */ |
SPECIAL, /* 0x75 */ |
SPECIAL, /* 0x76 */ |
SPECIAL, /* 0x77 */ |
SPECIAL, /* 0x78 */ |
SPECIAL, /* 0x79 */ |
SPECIAL, /* 0x7a */ |
SPECIAL, /* 0x7b */ |
SPECIAL, /* 0x7c */ |
SPECIAL, /* 0x7d */ |
SPECIAL, /* 0x7e */ |
SPECIAL, /* 0x7f */ |
}; |
/** Secondary meaning of scancodes. */ |
char sc_secondary_map[] = { |
SPECIAL, /* 0x00 */ |
SPECIAL, /* 0x01 - Esc */ |
'!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', |
SPECIAL, /* 0x0e - Backspace */ |
'\t', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '{', '}', '\n', |
SPECIAL, /* 0x1d - LCtrl */ |
'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', '"', |
'~', |
SPECIAL, /* 0x2a - LShift */ |
'|', |
'Z', 'X', 'C', 'V', 'B', 'N', 'M', '<', '>', '?', |
SPECIAL, /* 0x36 - RShift */ |
'*', |
SPECIAL, /* 0x38 - LAlt */ |
' ', |
SPECIAL, /* 0x3a - CapsLock */ |
SPECIAL, /* 0x3b - F1 */ |
SPECIAL, /* 0x3c - F2 */ |
SPECIAL, /* 0x3d - F3 */ |
SPECIAL, /* 0x3e - F4 */ |
SPECIAL, /* 0x3f - F5 */ |
SPECIAL, /* 0x40 - F6 */ |
SPECIAL, /* 0x41 - F7 */ |
SPECIAL, /* 0x42 - F8 */ |
SPECIAL, /* 0x43 - F9 */ |
SPECIAL, /* 0x44 - F10 */ |
SPECIAL, /* 0x45 - NumLock */ |
SPECIAL, /* 0x46 - ScrollLock */ |
'7', '8', '9', '-', |
'4', '5', '6', '+', |
'1', '2', '3', |
'0', '.', |
SPECIAL, /* 0x54 - Alt-SysRq */ |
SPECIAL, /* 0x55 - F11/F12/PF1/FN */ |
SPECIAL, /* 0x56 - unlabelled key next to LAlt */ |
SPECIAL, /* 0x57 - F11 */ |
SPECIAL, /* 0x58 - F12 */ |
SPECIAL, /* 0x59 */ |
SPECIAL, /* 0x5a */ |
SPECIAL, /* 0x5b */ |
SPECIAL, /* 0x5c */ |
SPECIAL, /* 0x5d */ |
SPECIAL, /* 0x5e */ |
SPECIAL, /* 0x5f */ |
SPECIAL, /* 0x60 */ |
SPECIAL, /* 0x61 */ |
SPECIAL, /* 0x62 */ |
SPECIAL, /* 0x63 */ |
SPECIAL, /* 0x64 */ |
SPECIAL, /* 0x65 */ |
SPECIAL, /* 0x66 */ |
SPECIAL, /* 0x67 */ |
SPECIAL, /* 0x68 */ |
SPECIAL, /* 0x69 */ |
SPECIAL, /* 0x6a */ |
SPECIAL, /* 0x6b */ |
SPECIAL, /* 0x6c */ |
SPECIAL, /* 0x6d */ |
SPECIAL, /* 0x6e */ |
SPECIAL, /* 0x6f */ |
SPECIAL, /* 0x70 */ |
SPECIAL, /* 0x71 */ |
SPECIAL, /* 0x72 */ |
SPECIAL, /* 0x73 */ |
SPECIAL, /* 0x74 */ |
SPECIAL, /* 0x75 */ |
SPECIAL, /* 0x76 */ |
SPECIAL, /* 0x77 */ |
SPECIAL, /* 0x78 */ |
SPECIAL, /* 0x79 */ |
SPECIAL, /* 0x7a */ |
SPECIAL, /* 0x7b */ |
SPECIAL, /* 0x7c */ |
SPECIAL, /* 0x7d */ |
SPECIAL, /* 0x7e */ |
SPECIAL, /* 0x7f */ |
}; |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/kbd/scanc_sun.c |
---|
0,0 → 1,304 |
/* |
* Copyright (c) 2006 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarch |
* @{ |
*/ |
/** |
* @file |
* @brief Scan codes for Sun keyboards. |
*/ |
#include <genarch/kbd/scanc.h> |
/** Primary meaning of scancodes. */ |
char sc_primary_map[] = { |
[0x00] = SPECIAL, |
[0x01] = SPECIAL, |
[0x02] = SPECIAL, |
[0x03] = SPECIAL, |
[0x04] = SPECIAL, |
[0x05] = SPECIAL, /* F1 */ |
[0x06] = SPECIAL, /* F2 */ |
[0x07] = SPECIAL, /* F10 */ |
[0x08] = SPECIAL, /* F3 */ |
[0x09] = SPECIAL, /* F11 */ |
[0x0a] = SPECIAL, /* F4 */ |
[0x0b] = SPECIAL, /* F12 */ |
[0x0c] = SPECIAL, /* F5 */ |
[0x0d] = SPECIAL, /* RAlt */ |
[0x0e] = SPECIAL, /* F6 */ |
[0x0f] = SPECIAL, |
[0x10] = SPECIAL, /* F7 */ |
[0x11] = SPECIAL, /* F8 */ |
[0x12] = SPECIAL, /* F9 */ |
[0x13] = SPECIAL, /* LAlt */ |
[0x14] = SPECIAL, /* Up Arrow */ |
[0x15] = SPECIAL, /* Pause */ |
[0x16] = SPECIAL, |
[0x17] = SPECIAL, /* Scroll Lock */ |
[0x18] = SPECIAL, /* Left Arrow */ |
[0x19] = SPECIAL, |
[0x1a] = SPECIAL, |
[0x1b] = SPECIAL, /* Down Arrow */ |
[0x1c] = SPECIAL, /* Right Arrow */ |
[0x1d] = SPECIAL, /* Esc */ |
[0x1e] = '1', |
[0x1f] = '2', |
[0x20] = '3', |
[0x21] = '4', |
[0x22] = '5', |
[0x23] = '6', |
[0x24] = '7', |
[0x25] = '8', |
[0x26] = '9', |
[0x27] = '0', |
[0x28] = '-', |
[0x29] = '=', |
[0x2a] = '`', |
[0x2b] = '\b', /* Backspace */ |
[0x2c] = SPECIAL, /* Insert */ |
[0x2d] = SPECIAL, |
[0x2e] = '/', /* numeric keypad */ |
[0x2f] = '*', /* numeric keypad */ |
[0x30] = SPECIAL, |
[0x31] = SPECIAL, |
[0x32] = '.', /* numeric keypad */ |
[0x33] = SPECIAL, |
[0x34] = SPECIAL, /* Home */ |
[0x35] = '\t', /* Tab */ |
[0x36] = 'q', |
[0x37] = 'w', |
[0x38] = 'e', |
[0x39] = 'r', |
[0x3a] = 't', |
[0x3b] = 'y', |
[0x3c] = 'u', |
[0x3d] = 'i', |
[0x3e] = 'o', |
[0x3f] = 'p', |
[0x40] = '[', |
[0x41] = ']', |
[0x42] = SPECIAL, /* Del */ |
[0x43] = SPECIAL, |
[0x44] = '7', /* numeric keypad */ |
[0x45] = '8', /* numeric keypad */ |
[0x46] = '9', /* numeric keypad */ |
[0x47] = '-', /* numeric keypad */ |
[0x48] = SPECIAL, |
[0x49] = SPECIAL, |
[0x4a] = SPECIAL, /* End */ |
[0x4b] = SPECIAL, |
[0x4c] = SPECIAL, /* Control */ |
[0x4d] = 'a', |
[0x4e] = 's', |
[0x4f] = 'd', |
[0x50] = 'f', |
[0x51] = 'g', |
[0x52] = 'h', |
[0x53] = 'j', |
[0x54] = 'k', |
[0x55] = 'l', |
[0x56] = ';', |
[0x57] = '\'', |
[0x58] = '\\', |
[0x59] = '\n', /* Enter */ |
[0x5a] = '\n', /* Enter on numeric keypad */ |
[0x5b] = '4', /* numeric keypad */ |
[0x5c] = '5', /* numeric keypad */ |
[0x5d] = '6', /* numeric keypad */ |
[0x5e] = '0', /* numeric keypad */ |
[0x5f] = SPECIAL, |
[0x60] = SPECIAL, /* Page Up */ |
[0x61] = SPECIAL, |
[0x62] = SPECIAL, /* Num Lock */ |
[0x63] = SPECIAL, /* LShift */ |
[0x64] = 'z', |
[0x65] = 'x', |
[0x66] = 'c', |
[0x67] = 'v', |
[0x68] = 'b', |
[0x69] = 'n', |
[0x6a] = 'm', |
[0x6b] = ',', |
[0x6c] = '.', |
[0x6d] = '/', |
[0x6e] = SPECIAL, /* RShift */ |
[0x6f] = SPECIAL, |
[0x70] = '1', /* numeric keypad */ |
[0x71] = '2', /* numeric keypad */ |
[0x72] = '3', /* numeric keypad */ |
[0x73] = SPECIAL, |
[0x74] = SPECIAL, |
[0x75] = SPECIAL, |
[0x76] = SPECIAL, |
[0x77] = SPECIAL, /* Caps Lock */ |
[0x78] = SPECIAL, |
[0x79] = ' ', |
[0x7a] = SPECIAL, |
[0x7b] = SPECIAL, /* Page Down */ |
[0x7c] = SPECIAL, |
[0x7d] = '+', /* numeric key pad */ |
[0x7e] = SPECIAL, |
[0x7f] = SPECIAL |
}; |
/** Secondary meaning of scancodes. */ |
char sc_secondary_map[] = { |
[0x00] = SPECIAL, |
[0x01] = SPECIAL, |
[0x02] = SPECIAL, |
[0x03] = SPECIAL, |
[0x04] = SPECIAL, |
[0x05] = SPECIAL, /* F1 */ |
[0x06] = SPECIAL, /* F2 */ |
[0x07] = SPECIAL, /* F10 */ |
[0x08] = SPECIAL, /* F3 */ |
[0x09] = SPECIAL, /* F11 */ |
[0x0a] = SPECIAL, /* F4 */ |
[0x0b] = SPECIAL, /* F12 */ |
[0x0c] = SPECIAL, /* F5 */ |
[0x0d] = SPECIAL, /* RAlt */ |
[0x0e] = SPECIAL, /* F6 */ |
[0x0f] = SPECIAL, |
[0x10] = SPECIAL, /* F7 */ |
[0x11] = SPECIAL, /* F8 */ |
[0x12] = SPECIAL, /* F9 */ |
[0x13] = SPECIAL, /* LAlt */ |
[0x14] = SPECIAL, /* Up Arrow */ |
[0x15] = SPECIAL, /* Pause */ |
[0x16] = SPECIAL, |
[0x17] = SPECIAL, /* Scroll Lock */ |
[0x18] = SPECIAL, /* Left Arrow */ |
[0x19] = SPECIAL, |
[0x1a] = SPECIAL, |
[0x1b] = SPECIAL, /* Down Arrow */ |
[0x1c] = SPECIAL, /* Right Arrow */ |
[0x1d] = SPECIAL, /* Esc */ |
[0x1e] = '!', |
[0x1f] = '@', |
[0x20] = '#', |
[0x21] = '$', |
[0x22] = '%', |
[0x23] = '^', |
[0x24] = '&', |
[0x25] = '*', |
[0x26] = '(', |
[0x27] = ')', |
[0x28] = '_', |
[0x29] = '+', |
[0x2a] = '~', |
[0x2b] = SPECIAL, /* Backspace */ |
[0x2c] = SPECIAL, /* Insert */ |
[0x2d] = SPECIAL, |
[0x2e] = '/', /* numeric keypad */ |
[0x2f] = '*', /* numeric keypad */ |
[0x30] = SPECIAL, |
[0x31] = SPECIAL, |
[0x32] = '.', /* numeric keypad */ |
[0x33] = SPECIAL, |
[0x34] = SPECIAL, /* Home */ |
[0x35] = SPECIAL, /* Tab */ |
[0x36] = 'Q', |
[0x37] = 'W', |
[0x38] = 'E', |
[0x39] = 'R', |
[0x3a] = 'T', |
[0x3b] = 'Y', |
[0x3c] = 'U', |
[0x3d] = 'I', |
[0x3e] = 'O', |
[0x3f] = 'P', |
[0x40] = '{', |
[0x41] = '}', |
[0x42] = SPECIAL, /* Del */ |
[0x43] = SPECIAL, |
[0x44] = '7', /* numeric keypad */ |
[0x45] = '8', /* numeric keypad */ |
[0x46] = '9', /* numeric keypad */ |
[0x47] = '-', /* numeric keypad */ |
[0x48] = SPECIAL, |
[0x49] = SPECIAL, |
[0x4a] = SPECIAL, /* End */ |
[0x4b] = SPECIAL, |
[0x4c] = SPECIAL, /* Control */ |
[0x4d] = 'A', |
[0x4e] = 'S', |
[0x4f] = 'D', |
[0x50] = 'F', |
[0x51] = 'G', |
[0x52] = 'H', |
[0x53] = 'J', |
[0x54] = 'K', |
[0x55] = 'L', |
[0x56] = ':', |
[0x57] = '"', |
[0x58] = '|', |
[0x59] = SPECIAL, /* Enter */ |
[0x5a] = SPECIAL, /* Enter on numeric keypad */ |
[0x5b] = '4', /* numeric keypad */ |
[0x5c] = '5', /* numeric keypad */ |
[0x5d] = '6', /* numeric keypad */ |
[0x5e] = '0', /* numeric keypad */ |
[0x5f] = SPECIAL, |
[0x60] = SPECIAL, /* Page Up */ |
[0x61] = SPECIAL, |
[0x62] = SPECIAL, /* Num Lock */ |
[0x63] = SPECIAL, /* LShift */ |
[0x64] = 'Z', |
[0x65] = 'X', |
[0x66] = 'C', |
[0x67] = 'V', |
[0x68] = 'B', |
[0x69] = 'N', |
[0x6a] = 'M', |
[0x6b] = '<', |
[0x6c] = '>', |
[0x6d] = '?', |
[0x6e] = SPECIAL, /* RShift */ |
[0x6f] = SPECIAL, |
[0x70] = '1', /* numeric keypad */ |
[0x71] = '2', /* numeric keypad */ |
[0x72] = '3', /* numeric keypad */ |
[0x73] = SPECIAL, |
[0x74] = SPECIAL, |
[0x75] = SPECIAL, |
[0x76] = SPECIAL, |
[0x77] = SPECIAL, /* Caps Lock */ |
[0x78] = SPECIAL, |
[0x79] = ' ', |
[0x7a] = SPECIAL, |
[0x7b] = SPECIAL, /* Page Down */ |
[0x7c] = SPECIAL, |
[0x7d] = '+', /* numeric key pad */ |
[0x7e] = SPECIAL, |
[0x7f] = SPECIAL |
}; |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/mm/asid.c |
---|
0,0 → 1,166 |
/* |
* Copyright (c) 2006 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarchmm |
* @{ |
*/ |
/** |
* @file |
* @brief ASID management. |
* |
* Modern processor architectures optimize TLB utilization |
* by using ASIDs (a.k.a. memory contexts on sparc64 and |
* region identifiers on ia64). These ASIDs help to associate |
* each TLB item with an address space, thus making |
* finer-grained TLB invalidation possible. |
* |
* Unfortunatelly, there are usually less ASIDs available than |
* there can be unique as_t structures (i.e. address spaces |
* recognized by the kernel). |
* |
* When system runs short of ASIDs, it will attempt to steal |
* ASID from an address space that has not been active for |
* a while. |
* |
* This code depends on the fact that ASIDS_ALLOCABLE |
* is greater than number of supported CPUs (i.e. the |
* amount of concurently active address spaces). |
* |
* Architectures that don't have hardware support for address |
* spaces do not compile with this file. |
*/ |
#include <mm/asid.h> |
#include <mm/as.h> |
#include <mm/tlb.h> |
#include <arch/mm/asid.h> |
#include <synch/spinlock.h> |
#include <synch/mutex.h> |
#include <adt/list.h> |
#include <debug.h> |
static count_t asids_allocated = 0; |
/** Allocate free address space identifier. |
* |
* Interrupts must be disabled and inactive_as_with_asid_lock must be held |
* prior to this call |
* |
* @return New ASID. |
*/ |
asid_t asid_get(void) |
{ |
asid_t asid; |
link_t *tmp; |
as_t *as; |
/* |
* Check if there is an unallocated ASID. |
*/ |
if (asids_allocated == ASIDS_ALLOCABLE) { |
/* |
* All ASIDs are already allocated. |
* Resort to stealing. |
*/ |
/* |
* Remove the first item on the list. |
* It is guaranteed to belong to an |
* inactive address space. |
*/ |
ASSERT(!list_empty(&inactive_as_with_asid_head)); |
tmp = inactive_as_with_asid_head.next; |
list_remove(tmp); |
as = list_get_instance(tmp, as_t, inactive_as_with_asid_link); |
/* |
* Steal the ASID. |
* Note that the stolen ASID is not active. |
*/ |
asid = as->asid; |
ASSERT(asid != ASID_INVALID); |
/* |
* Notify the address space from wich the ASID |
* was stolen by invalidating its asid member. |
*/ |
as->asid = ASID_INVALID; |
/* |
* If the architecture uses some software cache |
* of TLB entries (e.g. TSB on sparc64), the |
* cache must be invalidated as well. |
*/ |
as_invalidate_translation_cache(as, 0, (count_t) -1); |
/* |
* Get the system rid of the stolen ASID. |
*/ |
tlb_shootdown_start(TLB_INVL_ASID, asid, 0, 0); |
tlb_invalidate_asid(asid); |
tlb_shootdown_finalize(); |
} else { |
/* |
* There is at least one unallocated ASID. |
* Find it and assign it. |
*/ |
asid = asid_find_free(); |
asids_allocated++; |
/* |
* Purge the allocated ASID from TLBs. |
*/ |
tlb_shootdown_start(TLB_INVL_ASID, asid, 0, 0); |
tlb_invalidate_asid(asid); |
tlb_shootdown_finalize(); |
} |
return asid; |
} |
/** Release address space identifier. |
* |
* This code relies on architecture |
* dependent functionality. |
* |
* @param asid ASID to be released. |
*/ |
void asid_put(asid_t asid) |
{ |
asids_allocated--; |
asid_put_arch(asid); |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/mm/as_pt.c |
---|
0,0 → 1,144 |
/* |
* Copyright (c) 2006 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarchmm |
* @{ |
*/ |
/** |
* @file |
* @brief Address space functions for 4-level hierarchical pagetables. |
*/ |
#include <genarch/mm/page_pt.h> |
#include <mm/page.h> |
#include <mm/frame.h> |
#include <mm/as.h> |
#include <synch/mutex.h> |
#include <arch/mm/page.h> |
#include <arch/mm/as.h> |
#include <arch/types.h> |
#include <memstr.h> |
#include <arch.h> |
static pte_t *ptl0_create(int flags); |
static void ptl0_destroy(pte_t *page_table); |
static void pt_lock(as_t *as, bool lock); |
static void pt_unlock(as_t *as, bool unlock); |
as_operations_t as_pt_operations = { |
.page_table_create = ptl0_create, |
.page_table_destroy = ptl0_destroy, |
.page_table_lock = pt_lock, |
.page_table_unlock = pt_unlock |
}; |
/** Create PTL0. |
* |
* PTL0 of 4-level page table will be created for each address space. |
* |
* @param flags Flags can specify whether ptl0 is for the kernel address space. |
* |
* @return New PTL0. |
*/ |
pte_t *ptl0_create(int flags) |
{ |
pte_t *src_ptl0, *dst_ptl0; |
ipl_t ipl; |
int table_size; |
dst_ptl0 = (pte_t *) frame_alloc(PTL0_SIZE, FRAME_KA); |
table_size = FRAME_SIZE << PTL0_SIZE; |
if (flags & FLAG_AS_KERNEL) { |
memsetb(dst_ptl0, table_size, 0); |
} else { |
uintptr_t src, dst; |
/* |
* Copy the kernel address space portion to new PTL0. |
*/ |
ipl = interrupts_disable(); |
mutex_lock(&AS_KERNEL->lock); |
src_ptl0 = (pte_t *) PA2KA((uintptr_t) AS_KERNEL->genarch.page_table); |
src = (uintptr_t) &src_ptl0[PTL0_INDEX(KERNEL_ADDRESS_SPACE_START)]; |
dst = (uintptr_t) &dst_ptl0[PTL0_INDEX(KERNEL_ADDRESS_SPACE_START)]; |
memsetb(dst_ptl0, table_size, 0); |
memcpy((void *) dst, (void *) src, table_size - (src - (uintptr_t) src_ptl0)); |
mutex_unlock(&AS_KERNEL->lock); |
interrupts_restore(ipl); |
} |
return (pte_t *) KA2PA((uintptr_t) dst_ptl0); |
} |
/** Destroy page table. |
* |
* Destroy PTL0, other levels are expected to be already deallocated. |
* |
* @param page_table Physical address of PTL0. |
*/ |
void ptl0_destroy(pte_t *page_table) |
{ |
frame_free((uintptr_t)page_table); |
} |
/** Lock page tables. |
* |
* Lock only the address space. |
* Interrupts must be disabled. |
* |
* @param as Address space. |
* @param lock If false, do not attempt to lock the address space. |
*/ |
void pt_lock(as_t *as, bool lock) |
{ |
if (lock) |
mutex_lock(&as->lock); |
} |
/** Unlock page tables. |
* |
* Unlock the address space. |
* Interrupts must be disabled. |
* |
* @param as Address space. |
* @param unlock If false, do not attempt to unlock the address space. |
*/ |
void pt_unlock(as_t *as, bool unlock) |
{ |
if (unlock) |
mutex_unlock(&as->lock); |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/mm/as_ht.c |
---|
0,0 → 1,122 |
/* |
* Copyright (c) 2006 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarchmm |
* @{ |
*/ |
/** |
* @file |
* @brief Address space functions for global page hash table. |
*/ |
#include <arch/mm/as.h> |
#include <genarch/mm/as_ht.h> |
#include <genarch/mm/page_ht.h> |
#include <mm/as.h> |
#include <mm/frame.h> |
#include <arch/types.h> |
#include <memstr.h> |
#include <adt/hash_table.h> |
#include <synch/mutex.h> |
static pte_t *ht_create(int flags); |
static void ht_destroy(pte_t *page_table); |
static void ht_lock(as_t *as, bool lock); |
static void ht_unlock(as_t *as, bool unlock); |
as_operations_t as_ht_operations = { |
.page_table_create = ht_create, |
.page_table_destroy = ht_destroy, |
.page_table_lock = ht_lock, |
.page_table_unlock = ht_unlock, |
}; |
/** Page hash table create. |
* |
* The page hash table will be created only once |
* and will be shared by all address spaces. |
* |
* @param flags Ignored. |
* |
* @return Returns NULL. |
*/ |
pte_t *ht_create(int flags) |
{ |
if (flags & FLAG_AS_KERNEL) { |
hash_table_create(&page_ht, PAGE_HT_ENTRIES, 2, &ht_operations); |
mutex_initialize(&page_ht_lock, MUTEX_PASSIVE); |
} |
return NULL; |
} |
/** Destroy page table. |
* |
* Actually do nothing as the global page hash table is used. |
* |
* @param page_table This parameter is ignored. |
*/ |
void ht_destroy(pte_t *page_table) |
{ |
/* No-op. */ |
} |
/** Lock page table. |
* |
* Lock address space and page hash table. |
* Interrupts must be disabled. |
* |
* @param as Address space. |
* @param lock If false, do not attempt to lock the address space. |
*/ |
void ht_lock(as_t *as, bool lock) |
{ |
if (lock) |
mutex_lock(&as->lock); |
mutex_lock(&page_ht_lock); |
} |
/** Unlock page table. |
* |
* Unlock address space and page hash table. |
* Interrupts must be disabled. |
* |
* @param as Address space. |
* @param unlock If false, do not attempt to lock the address space. |
*/ |
void ht_unlock(as_t *as, bool unlock) |
{ |
mutex_unlock(&page_ht_lock); |
if (unlock) |
mutex_unlock(&as->lock); |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/mm/page_pt.c |
---|
0,0 → 1,268 |
/* |
* Copyright (c) 2006 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarchmm |
* @{ |
*/ |
/** |
* @file |
* @brief Virtual Address Translation for hierarchical 4-level page tables. |
*/ |
#include <genarch/mm/page_pt.h> |
#include <mm/page.h> |
#include <mm/frame.h> |
#include <mm/as.h> |
#include <arch/mm/page.h> |
#include <arch/mm/as.h> |
#include <arch/types.h> |
#include <arch/asm.h> |
#include <memstr.h> |
static void pt_mapping_insert(as_t *as, uintptr_t page, uintptr_t frame, int flags); |
static void pt_mapping_remove(as_t *as, uintptr_t page); |
static pte_t *pt_mapping_find(as_t *as, uintptr_t page); |
page_mapping_operations_t pt_mapping_operations = { |
.mapping_insert = pt_mapping_insert, |
.mapping_remove = pt_mapping_remove, |
.mapping_find = pt_mapping_find |
}; |
/** Map page to frame using hierarchical page tables. |
* |
* Map virtual address page to physical address frame |
* using flags. |
* |
* The page table must be locked and interrupts must be disabled. |
* |
* @param as Address space to wich page belongs. |
* @param page Virtual address of the page to be mapped. |
* @param frame Physical address of memory frame to which the mapping is done. |
* @param flags Flags to be used for mapping. |
*/ |
void pt_mapping_insert(as_t *as, uintptr_t page, uintptr_t frame, int flags) |
{ |
pte_t *ptl0, *ptl1, *ptl2, *ptl3; |
pte_t *newpt; |
ptl0 = (pte_t *) PA2KA((uintptr_t) as->genarch.page_table); |
if (GET_PTL1_FLAGS(ptl0, PTL0_INDEX(page)) & PAGE_NOT_PRESENT) { |
newpt = (pte_t *)frame_alloc(PTL1_SIZE, FRAME_KA); |
memsetb(newpt, FRAME_SIZE << PTL1_SIZE, 0); |
SET_PTL1_ADDRESS(ptl0, PTL0_INDEX(page), KA2PA(newpt)); |
SET_PTL1_FLAGS(ptl0, PTL0_INDEX(page), PAGE_PRESENT | PAGE_USER | PAGE_EXEC | PAGE_CACHEABLE | PAGE_WRITE); |
} |
ptl1 = (pte_t *) PA2KA(GET_PTL1_ADDRESS(ptl0, PTL0_INDEX(page))); |
if (GET_PTL2_FLAGS(ptl1, PTL1_INDEX(page)) & PAGE_NOT_PRESENT) { |
newpt = (pte_t *)frame_alloc(PTL2_SIZE, FRAME_KA); |
memsetb(newpt, FRAME_SIZE << PTL2_SIZE, 0); |
SET_PTL2_ADDRESS(ptl1, PTL1_INDEX(page), KA2PA(newpt)); |
SET_PTL2_FLAGS(ptl1, PTL1_INDEX(page), PAGE_PRESENT | PAGE_USER | PAGE_EXEC | PAGE_CACHEABLE | PAGE_WRITE); |
} |
ptl2 = (pte_t *) PA2KA(GET_PTL2_ADDRESS(ptl1, PTL1_INDEX(page))); |
if (GET_PTL3_FLAGS(ptl2, PTL2_INDEX(page)) & PAGE_NOT_PRESENT) { |
newpt = (pte_t *)frame_alloc(PTL3_SIZE, FRAME_KA); |
memsetb(newpt, FRAME_SIZE << PTL3_SIZE, 0); |
SET_PTL3_ADDRESS(ptl2, PTL2_INDEX(page), KA2PA(newpt)); |
SET_PTL3_FLAGS(ptl2, PTL2_INDEX(page), PAGE_PRESENT | PAGE_USER | PAGE_EXEC | PAGE_CACHEABLE | PAGE_WRITE); |
} |
ptl3 = (pte_t *) PA2KA(GET_PTL3_ADDRESS(ptl2, PTL2_INDEX(page))); |
SET_FRAME_ADDRESS(ptl3, PTL3_INDEX(page), frame); |
SET_FRAME_FLAGS(ptl3, PTL3_INDEX(page), flags); |
} |
/** Remove mapping of page from hierarchical page tables. |
* |
* Remove any mapping of page within address space as. |
* TLB shootdown should follow in order to make effects of |
* this call visible. |
* |
* Empty page tables except PTL0 are freed. |
* |
* The page table must be locked and interrupts must be disabled. |
* |
* @param as Address space to wich page belongs. |
* @param page Virtual address of the page to be demapped. |
*/ |
void pt_mapping_remove(as_t *as, uintptr_t page) |
{ |
pte_t *ptl0, *ptl1, *ptl2, *ptl3; |
bool empty = true; |
int i; |
/* |
* First, remove the mapping, if it exists. |
*/ |
ptl0 = (pte_t *) PA2KA((uintptr_t) as->genarch.page_table); |
if (GET_PTL1_FLAGS(ptl0, PTL0_INDEX(page)) & PAGE_NOT_PRESENT) |
return; |
ptl1 = (pte_t *) PA2KA(GET_PTL1_ADDRESS(ptl0, PTL0_INDEX(page))); |
if (GET_PTL2_FLAGS(ptl1, PTL1_INDEX(page)) & PAGE_NOT_PRESENT) |
return; |
ptl2 = (pte_t *) PA2KA(GET_PTL2_ADDRESS(ptl1, PTL1_INDEX(page))); |
if (GET_PTL3_FLAGS(ptl2, PTL2_INDEX(page)) & PAGE_NOT_PRESENT) |
return; |
ptl3 = (pte_t *) PA2KA(GET_PTL3_ADDRESS(ptl2, PTL2_INDEX(page))); |
/* Destroy the mapping. Setting to PAGE_NOT_PRESENT is not sufficient. */ |
memsetb(&ptl3[PTL3_INDEX(page)], sizeof(pte_t), 0); |
/* |
* Second, free all empty tables along the way from PTL3 down to PTL0. |
*/ |
/* check PTL3 */ |
for (i = 0; i < PTL3_ENTRIES; i++) { |
if (PTE_VALID(&ptl3[i])) { |
empty = false; |
break; |
} |
} |
if (empty) { |
/* |
* PTL3 is empty. |
* Release the frame and remove PTL3 pointer from preceding table. |
*/ |
frame_free(KA2PA((uintptr_t) ptl3)); |
if (PTL2_ENTRIES) |
memsetb(&ptl2[PTL2_INDEX(page)], sizeof(pte_t), 0); |
else if (PTL1_ENTRIES) |
memsetb(&ptl1[PTL1_INDEX(page)], sizeof(pte_t), 0); |
else |
memsetb(&ptl0[PTL0_INDEX(page)], sizeof(pte_t), 0); |
} else { |
/* |
* PTL3 is not empty. |
* Therefore, there must be a path from PTL0 to PTL3 and |
* thus nothing to free in higher levels. |
*/ |
return; |
} |
/* check PTL2, empty is still true */ |
if (PTL2_ENTRIES) { |
for (i = 0; i < PTL2_ENTRIES; i++) { |
if (PTE_VALID(&ptl2[i])) { |
empty = false; |
break; |
} |
} |
if (empty) { |
/* |
* PTL2 is empty. |
* Release the frame and remove PTL2 pointer from preceding table. |
*/ |
frame_free(KA2PA((uintptr_t) ptl2)); |
if (PTL1_ENTRIES) |
memsetb(&ptl1[PTL1_INDEX(page)], sizeof(pte_t), 0); |
else |
memsetb(&ptl0[PTL0_INDEX(page)], sizeof(pte_t), 0); |
} |
else { |
/* |
* PTL2 is not empty. |
* Therefore, there must be a path from PTL0 to PTL2 and |
* thus nothing to free in higher levels. |
*/ |
return; |
} |
} |
/* check PTL1, empty is still true */ |
if (PTL1_ENTRIES) { |
for (i = 0; i < PTL1_ENTRIES; i++) { |
if (PTE_VALID(&ptl1[i])) { |
empty = false; |
break; |
} |
} |
if (empty) { |
/* |
* PTL1 is empty. |
* Release the frame and remove PTL1 pointer from preceding table. |
*/ |
frame_free(KA2PA((uintptr_t) ptl1)); |
memsetb(&ptl0[PTL0_INDEX(page)], sizeof(pte_t), 0); |
} |
} |
} |
/** Find mapping for virtual page in hierarchical page tables. |
* |
* Find mapping for virtual page. |
* |
* The page table must be locked and interrupts must be disabled. |
* |
* @param as Address space to which page belongs. |
* @param page Virtual page. |
* |
* @return NULL if there is no such mapping; entry from PTL3 describing the mapping otherwise. |
*/ |
pte_t *pt_mapping_find(as_t *as, uintptr_t page) |
{ |
pte_t *ptl0, *ptl1, *ptl2, *ptl3; |
ptl0 = (pte_t *) PA2KA((uintptr_t) as->genarch.page_table); |
if (GET_PTL1_FLAGS(ptl0, PTL0_INDEX(page)) & PAGE_NOT_PRESENT) |
return NULL; |
ptl1 = (pte_t *) PA2KA(GET_PTL1_ADDRESS(ptl0, PTL0_INDEX(page))); |
if (GET_PTL2_FLAGS(ptl1, PTL1_INDEX(page)) & PAGE_NOT_PRESENT) |
return NULL; |
ptl2 = (pte_t *) PA2KA(GET_PTL2_ADDRESS(ptl1, PTL1_INDEX(page))); |
if (GET_PTL3_FLAGS(ptl2, PTL2_INDEX(page)) & PAGE_NOT_PRESENT) |
return NULL; |
ptl3 = (pte_t *) PA2KA(GET_PTL3_ADDRESS(ptl2, PTL2_INDEX(page))); |
return &ptl3[PTL3_INDEX(page)]; |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/mm/page_ht.c |
---|
0,0 → 1,258 |
/* |
* Copyright (c) 2006 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarchmm |
* @{ |
*/ |
/** |
* @file |
* @brief Virtual Address Translation (VAT) for global page hash table. |
*/ |
#include <genarch/mm/page_ht.h> |
#include <mm/page.h> |
#include <arch/mm/page.h> |
#include <mm/frame.h> |
#include <mm/slab.h> |
#include <mm/as.h> |
#include <arch/mm/asid.h> |
#include <arch/types.h> |
#include <arch/asm.h> |
#include <synch/spinlock.h> |
#include <arch.h> |
#include <debug.h> |
#include <memstr.h> |
#include <adt/hash_table.h> |
#include <align.h> |
static index_t hash(unative_t key[]); |
static bool compare(unative_t key[], count_t keys, link_t *item); |
static void remove_callback(link_t *item); |
static void ht_mapping_insert(as_t *as, uintptr_t page, uintptr_t frame, |
int flags); |
static void ht_mapping_remove(as_t *as, uintptr_t page); |
static pte_t *ht_mapping_find(as_t *as, uintptr_t page); |
/** |
* This lock protects the page hash table. It must be acquired |
* after address space lock and after any address space area |
* locks. |
*/ |
mutex_t page_ht_lock; |
/** |
* Page hash table. |
* The page hash table may be accessed only when page_ht_lock is held. |
*/ |
hash_table_t page_ht; |
/** Hash table operations for page hash table. */ |
hash_table_operations_t ht_operations = { |
.hash = hash, |
.compare = compare, |
.remove_callback = remove_callback |
}; |
/** Page mapping operations for page hash table architectures. */ |
page_mapping_operations_t ht_mapping_operations = { |
.mapping_insert = ht_mapping_insert, |
.mapping_remove = ht_mapping_remove, |
.mapping_find = ht_mapping_find |
}; |
/** Compute page hash table index. |
* |
* @param key Array of two keys (i.e. page and address space). |
* |
* @return Index into page hash table. |
*/ |
index_t hash(unative_t key[]) |
{ |
as_t *as = (as_t *) key[KEY_AS]; |
uintptr_t page = (uintptr_t) key[KEY_PAGE]; |
index_t index; |
/* |
* Virtual page addresses have roughly the same probability |
* of occurring. Least significant bits of VPN compose the |
* hash index. |
*/ |
index = ((page >> PAGE_WIDTH) & (PAGE_HT_ENTRIES - 1)); |
/* |
* Address space structures are likely to be allocated from |
* similar addresses. Least significant bits compose the |
* hash index. |
*/ |
index |= ((unative_t) as) & (PAGE_HT_ENTRIES - 1); |
return index; |
} |
/** Compare page hash table item with page and/or address space. |
* |
* @param key Array of one or two keys (i.e. page and/or address space). |
* @param keys Number of keys passed. |
* @param item Item to compare the keys with. |
* |
* @return true on match, false otherwise. |
*/ |
bool compare(unative_t key[], count_t keys, link_t *item) |
{ |
pte_t *t; |
ASSERT(item); |
ASSERT((keys > 0) && (keys <= PAGE_HT_KEYS)); |
/* |
* Convert item to PTE. |
*/ |
t = hash_table_get_instance(item, pte_t, link); |
if (keys == PAGE_HT_KEYS) { |
return (key[KEY_AS] == (uintptr_t) t->as) && |
(key[KEY_PAGE] == t->page); |
} else { |
return (key[KEY_AS] == (uintptr_t) t->as); |
} |
} |
/** Callback on page hash table item removal. |
* |
* @param item Page hash table item being removed. |
*/ |
void remove_callback(link_t *item) |
{ |
pte_t *t; |
ASSERT(item); |
/* |
* Convert item to PTE. |
*/ |
t = hash_table_get_instance(item, pte_t, link); |
free(t); |
} |
/** Map page to frame using page hash table. |
* |
* Map virtual address page to physical address frame |
* using flags. |
* |
* The page table must be locked and interrupts must be disabled. |
* |
* @param as Address space to which page belongs. |
* @param page Virtual address of the page to be mapped. |
* @param frame Physical address of memory frame to which the mapping is done. |
* @param flags Flags to be used for mapping. |
*/ |
void ht_mapping_insert(as_t *as, uintptr_t page, uintptr_t frame, int flags) |
{ |
pte_t *t; |
unative_t key[2] = { |
(uintptr_t) as, |
page = ALIGN_DOWN(page, PAGE_SIZE) |
}; |
if (!hash_table_find(&page_ht, key)) { |
t = (pte_t *) malloc(sizeof(pte_t), FRAME_ATOMIC); |
ASSERT(t != NULL); |
t->g = (flags & PAGE_GLOBAL) != 0; |
t->x = (flags & PAGE_EXEC) != 0; |
t->w = (flags & PAGE_WRITE) != 0; |
t->k = !(flags & PAGE_USER); |
t->c = (flags & PAGE_CACHEABLE) != 0; |
t->p = !(flags & PAGE_NOT_PRESENT); |
t->as = as; |
t->page = ALIGN_DOWN(page, PAGE_SIZE); |
t->frame = ALIGN_DOWN(frame, FRAME_SIZE); |
hash_table_insert(&page_ht, key, &t->link); |
} |
} |
/** Remove mapping of page from page hash table. |
* |
* Remove any mapping of page within address space as. |
* TLB shootdown should follow in order to make effects of |
* this call visible. |
* |
* The page table must be locked and interrupts must be disabled. |
* |
* @param as Address space to wich page belongs. |
* @param page Virtual address of the page to be demapped. |
*/ |
void ht_mapping_remove(as_t *as, uintptr_t page) |
{ |
unative_t key[2] = { |
(uintptr_t) as, |
page = ALIGN_DOWN(page, PAGE_SIZE) |
}; |
/* |
* Note that removed PTE's will be freed |
* by remove_callback(). |
*/ |
hash_table_remove(&page_ht, key, 2); |
} |
/** Find mapping for virtual page in page hash table. |
* |
* Find mapping for virtual page. |
* |
* The page table must be locked and interrupts must be disabled. |
* |
* @param as Address space to wich page belongs. |
* @param page Virtual page. |
* |
* @return NULL if there is no such mapping; requested mapping otherwise. |
*/ |
pte_t *ht_mapping_find(as_t *as, uintptr_t page) |
{ |
link_t *hlp; |
pte_t *t = NULL; |
unative_t key[2] = { |
(uintptr_t) as, |
page = ALIGN_DOWN(page, PAGE_SIZE) |
}; |
hlp = hash_table_find(&page_ht, key); |
if (hlp) |
t = hash_table_get_instance(hlp, pte_t, link); |
return t; |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/mm/asid_fifo.c |
---|
0,0 → 1,97 |
/* |
* Copyright (c) 2006 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarchmm |
* @{ |
*/ |
/** |
* @file |
* @brief FIFO queue ASID management. |
* |
* Architectures that link with this file keep the unallocated ASIDs |
* in FIFO queue. The queue can be statically (e.g. mips32) or |
* dynamically allocated (e.g ia64 and sparc64). |
*/ |
#include <genarch/mm/asid_fifo.h> |
#include <arch/mm/asid.h> |
#include <mm/asid.h> |
#include <adt/fifo.h> |
#define FIFO_STATIC_LIMIT 1024 |
#define FIFO_STATIC (ASIDS_ALLOCABLE<FIFO_STATIC_LIMIT) |
/** |
* FIFO queue containing unassigned ASIDs. |
* Can be only accessed when asidlock is held. |
*/ |
#if FIFO_STATIC |
FIFO_INITIALIZE_STATIC(free_asids, asid_t, ASIDS_ALLOCABLE); |
#else |
FIFO_INITIALIZE_DYNAMIC(free_asids, asid_t, ASIDS_ALLOCABLE); |
#endif |
/** Initialize data structures for O(1) ASID allocation and deallocation. */ |
void asid_fifo_init(void) |
{ |
int i; |
#if (!FIFO_STATIC) |
fifo_create(free_asids); |
#endif |
for (i = 0; i < ASIDS_ALLOCABLE; i++) { |
fifo_push(free_asids, ASID_START + i); |
} |
} |
/** Allocate free ASID. |
* |
* Allocation runs in O(1). |
* |
* @return Free ASID. |
*/ |
asid_t asid_find_free(void) |
{ |
return fifo_pop(free_asids); |
} |
/** Return ASID among free ASIDs. |
* |
* This operation runs in O(1). |
* |
* @param asid ASID being freed. |
*/ |
void asid_put_arch(asid_t asid) |
{ |
fifo_push(free_asids, asid); |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/acpi/acpi.c |
---|
0,0 → 1,190 |
/* |
* Copyright (c) 2005 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarch |
* @{ |
*/ |
/** |
* @file |
* @brief Advanced Configuration and Power Interface (ACPI) initialization. |
*/ |
#include <genarch/acpi/acpi.h> |
#include <genarch/acpi/madt.h> |
#include <arch/bios/bios.h> |
#include <mm/as.h> |
#include <mm/page.h> |
#include <print.h> |
#define RSDP_SIGNATURE "RSD PTR " |
#define RSDP_REVISION_OFFS 15 |
struct acpi_rsdp *acpi_rsdp = NULL; |
struct acpi_rsdt *acpi_rsdt = NULL; |
struct acpi_xsdt *acpi_xsdt = NULL; |
struct acpi_signature_map signature_map[] = { |
{ |
(uint8_t *) "APIC", |
(void *) &acpi_madt, |
"Multiple APIC Description Table" |
} |
}; |
static int rsdp_check(uint8_t *rsdp) { |
struct acpi_rsdp *r = (struct acpi_rsdp *) rsdp; |
uint8_t sum = 0; |
unsigned int i; |
for (i = 0; i < 20; i++) |
sum = (uint8_t) (sum + rsdp[i]); |
if (sum) |
return 0; /* bad checksum */ |
if (r->revision == 0) |
return 1; /* ACPI 1.0 */ |
for (; i < r->length; i++) |
sum = (uint8_t) (sum + rsdp[i]); |
return !sum; |
} |
int acpi_sdt_check(uint8_t *sdt) |
{ |
struct acpi_sdt_header *h = (struct acpi_sdt_header *) sdt; |
uint8_t sum = 0; |
unsigned int i; |
for (i = 0; i < h->length; i++) |
sum = (uint8_t) (sum + sdt[i]); |
return !sum; |
} |
static void map_sdt(struct acpi_sdt_header *sdt) |
{ |
page_mapping_insert(AS_KERNEL, (uintptr_t) sdt, (uintptr_t) sdt, PAGE_NOT_CACHEABLE | PAGE_WRITE); |
map_structure((uintptr_t) sdt, sdt->length); |
} |
static void configure_via_rsdt(void) |
{ |
unsigned int i, j, cnt = (acpi_rsdt->header.length - sizeof(struct acpi_sdt_header)) / sizeof(uint32_t); |
for (i = 0; i < cnt; i++) { |
for (j = 0; j < sizeof(signature_map) / sizeof(struct acpi_signature_map); j++) { |
struct acpi_sdt_header *h = (struct acpi_sdt_header *) (unative_t) acpi_rsdt->entry[i]; |
map_sdt(h); |
if (*((uint32_t *) &h->signature[0]) == *((uint32_t *) &signature_map[j].signature[0])) { |
if (!acpi_sdt_check((uint8_t *) h)) |
goto next; |
*signature_map[j].sdt_ptr = h; |
LOG("%p: ACPI %s\n", *signature_map[j].sdt_ptr, signature_map[j].description); |
} |
} |
next: |
; |
} |
} |
static void configure_via_xsdt(void) |
{ |
unsigned int i, j, cnt = (acpi_xsdt->header.length - sizeof(struct acpi_sdt_header)) / sizeof(uint64_t); |
for (i = 0; i < cnt; i++) { |
for (j = 0; j < sizeof(signature_map) / sizeof(struct acpi_signature_map); j++) { |
struct acpi_sdt_header *h = (struct acpi_sdt_header *) ((uintptr_t) acpi_rsdt->entry[i]); |
map_sdt(h); |
if (*((uint32_t *) &h->signature[0]) == *((uint32_t *) &signature_map[j].signature[0])) { |
if (!acpi_sdt_check((uint8_t *) h)) |
goto next; |
*signature_map[j].sdt_ptr = h; |
LOG("%p: ACPI %s\n", *signature_map[j].sdt_ptr, signature_map[j].description); |
} |
} |
next: |
; |
} |
} |
void acpi_init(void) |
{ |
uint8_t *addr[2] = { NULL, (uint8_t *) PA2KA(0xe0000) }; |
int i, j, length[2] = { 1024, 128*1024 }; |
uint64_t *sig = (uint64_t *) RSDP_SIGNATURE; |
/* |
* Find Root System Description Pointer |
* 1. search first 1K of EBDA |
* 2. search 128K starting at 0xe0000 |
*/ |
addr[0] = (uint8_t *) PA2KA(ebda); |
for (i = (ebda ? 0 : 1); i < 2; i++) { |
for (j = 0; j < length[i]; j += 16) { |
if (*((uint64_t *) &addr[i][j]) == *sig && rsdp_check(&addr[i][j])) { |
acpi_rsdp = (struct acpi_rsdp *) &addr[i][j]; |
goto rsdp_found; |
} |
} |
} |
return; |
rsdp_found: |
LOG("%p: ACPI Root System Description Pointer\n", acpi_rsdp); |
acpi_rsdt = (struct acpi_rsdt *) (unative_t) acpi_rsdp->rsdt_address; |
if (acpi_rsdp->revision) acpi_xsdt = (struct acpi_xsdt *) ((uintptr_t) acpi_rsdp->xsdt_address); |
if (acpi_rsdt) map_sdt((struct acpi_sdt_header *) acpi_rsdt); |
if (acpi_xsdt) map_sdt((struct acpi_sdt_header *) acpi_xsdt); |
if (acpi_rsdt && !acpi_sdt_check((uint8_t *) acpi_rsdt)) { |
printf("RSDT: bad checksum\n"); |
return; |
} |
if (acpi_xsdt && !acpi_sdt_check((uint8_t *) acpi_xsdt)) { |
printf("XSDT: bad checksum\n"); |
return; |
} |
if (acpi_xsdt) configure_via_xsdt(); |
else if (acpi_rsdt) configure_via_rsdt(); |
} |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/acpi/madt.c |
---|
0,0 → 1,245 |
/* |
* Copyright (c) 2005 Jakub Jermar |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarch |
* @{ |
*/ |
/** |
* @file |
* @brief Multiple APIC Description Table (MADT) parsing. |
*/ |
#include <arch/types.h> |
#include <genarch/acpi/acpi.h> |
#include <genarch/acpi/madt.h> |
#include <arch/smp/apic.h> |
#include <arch/smp/smp.h> |
#include <panic.h> |
#include <debug.h> |
#include <config.h> |
#include <print.h> |
#include <mm/slab.h> |
#include <memstr.h> |
#include <sort.h> |
struct acpi_madt *acpi_madt = NULL; |
#ifdef CONFIG_SMP |
/** Standard ISA IRQ map; can be overriden by Interrupt Source Override entries of MADT. */ |
int isa_irq_map[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; |
static void madt_l_apic_entry(struct madt_l_apic *la, uint32_t index); |
static void madt_io_apic_entry(struct madt_io_apic *ioa, uint32_t index); |
static void madt_intr_src_ovrd_entry(struct madt_intr_src_ovrd *override, uint32_t index); |
static int madt_cmp(void * a, void * b); |
struct madt_l_apic *madt_l_apic_entries = NULL; |
struct madt_io_apic *madt_io_apic_entries = NULL; |
index_t madt_l_apic_entry_index = 0; |
index_t madt_io_apic_entry_index = 0; |
count_t madt_l_apic_entry_cnt = 0; |
count_t madt_io_apic_entry_cnt = 0; |
count_t cpu_count = 0; |
struct madt_apic_header * * madt_entries_index = NULL; |
unsigned int madt_entries_index_cnt = 0; |
char *entry[] = { |
"L_APIC", |
"IO_APIC", |
"INTR_SRC_OVRD", |
"NMI_SRC", |
"L_APIC_NMI", |
"L_APIC_ADDR_OVRD", |
"IO_SAPIC", |
"L_SAPIC", |
"PLATFORM_INTR_SRC" |
}; |
/* |
* ACPI MADT Implementation of SMP configuration interface. |
*/ |
static count_t madt_cpu_count(void); |
static bool madt_cpu_enabled(index_t i); |
static bool madt_cpu_bootstrap(index_t i); |
static uint8_t madt_cpu_apic_id(index_t i); |
static int madt_irq_to_pin(unsigned int irq); |
struct smp_config_operations madt_config_operations = { |
.cpu_count = madt_cpu_count, |
.cpu_enabled = madt_cpu_enabled, |
.cpu_bootstrap = madt_cpu_bootstrap, |
.cpu_apic_id = madt_cpu_apic_id, |
.irq_to_pin = madt_irq_to_pin |
}; |
count_t madt_cpu_count(void) |
{ |
return madt_l_apic_entry_cnt; |
} |
bool madt_cpu_enabled(index_t i) |
{ |
ASSERT(i < madt_l_apic_entry_cnt); |
return ((struct madt_l_apic *) madt_entries_index[madt_l_apic_entry_index + i])->flags & 0x1; |
} |
bool madt_cpu_bootstrap(index_t i) |
{ |
ASSERT(i < madt_l_apic_entry_cnt); |
return ((struct madt_l_apic *) madt_entries_index[madt_l_apic_entry_index + i])->apic_id == l_apic_id(); |
} |
uint8_t madt_cpu_apic_id(index_t i) |
{ |
ASSERT(i < madt_l_apic_entry_cnt); |
return ((struct madt_l_apic *) madt_entries_index[madt_l_apic_entry_index + i])->apic_id; |
} |
int madt_irq_to_pin(unsigned int irq) |
{ |
ASSERT(irq < sizeof(isa_irq_map) / sizeof(int)); |
return isa_irq_map[irq]; |
} |
int madt_cmp(void * a, void * b) |
{ |
return |
(((struct madt_apic_header *) a)->type > ((struct madt_apic_header *) b)->type) ? |
1 : |
((((struct madt_apic_header *) a)->type < ((struct madt_apic_header *) b)->type) ? -1 : 0); |
} |
void acpi_madt_parse(void) |
{ |
struct madt_apic_header *end = (struct madt_apic_header *) (((uint8_t *) acpi_madt) + acpi_madt->header.length); |
struct madt_apic_header *h; |
l_apic = (uint32_t *) (unative_t) acpi_madt->l_apic_address; |
/* calculate madt entries */ |
for (h = &acpi_madt->apic_header[0]; h < end; h = (struct madt_apic_header *) (((uint8_t *) h) + h->length)) { |
madt_entries_index_cnt++; |
} |
/* create madt apic entries index array */ |
madt_entries_index = (struct madt_apic_header * *) malloc(madt_entries_index_cnt * sizeof(struct madt_apic_header * *), FRAME_ATOMIC); |
if (!madt_entries_index) |
panic("Memory allocation error."); |
uint32_t index = 0; |
for (h = &acpi_madt->apic_header[0]; h < end; h = (struct madt_apic_header *) (((uint8_t *) h) + h->length)) { |
madt_entries_index[index++] = h; |
} |
/* Quicksort MADT index structure */ |
qsort(madt_entries_index, madt_entries_index_cnt, sizeof(uintptr_t), &madt_cmp); |
/* Parse MADT entries */ |
if (madt_entries_index_cnt > 0) { |
for (index = 0; index < madt_entries_index_cnt - 1; index++) { |
h = madt_entries_index[index]; |
switch (h->type) { |
case MADT_L_APIC: |
madt_l_apic_entry((struct madt_l_apic *) h, index); |
break; |
case MADT_IO_APIC: |
madt_io_apic_entry((struct madt_io_apic *) h, index); |
break; |
case MADT_INTR_SRC_OVRD: |
madt_intr_src_ovrd_entry((struct madt_intr_src_ovrd *) h, index); |
break; |
case MADT_NMI_SRC: |
case MADT_L_APIC_NMI: |
case MADT_L_APIC_ADDR_OVRD: |
case MADT_IO_SAPIC: |
case MADT_L_SAPIC: |
case MADT_PLATFORM_INTR_SRC: |
printf("MADT: skipping %s entry (type=%" PRIu8 ")\n", entry[h->type], h->type); |
break; |
default: |
if (h->type >= MADT_RESERVED_SKIP_BEGIN && h->type <= MADT_RESERVED_SKIP_END) { |
printf("MADT: skipping reserved entry (type=%" PRIu8 ")\n", h->type); |
} |
if (h->type >= MADT_RESERVED_OEM_BEGIN) { |
printf("MADT: skipping OEM entry (type=%" PRIu8 ")\n", h->type); |
} |
break; |
} |
} |
} |
if (cpu_count) |
config.cpu_count = cpu_count; |
} |
void madt_l_apic_entry(struct madt_l_apic *la, uint32_t index) |
{ |
if (!madt_l_apic_entry_cnt++) { |
madt_l_apic_entry_index = index; |
} |
if (!(la->flags & 0x1)) { |
/* Processor is unusable, skip it. */ |
return; |
} |
cpu_count++; |
apic_id_mask |= 1<<la->apic_id; |
} |
void madt_io_apic_entry(struct madt_io_apic *ioa, uint32_t index) |
{ |
if (!madt_io_apic_entry_cnt++) { |
/* remember index of the first io apic entry */ |
madt_io_apic_entry_index = index; |
io_apic = (uint32_t *) (unative_t) ioa->io_apic_address; |
} else { |
/* currently not supported */ |
return; |
} |
} |
void madt_intr_src_ovrd_entry(struct madt_intr_src_ovrd *override, uint32_t index) |
{ |
ASSERT(override->source < sizeof(isa_irq_map) / sizeof(int)); |
printf("MADT: ignoring %s entry: bus=%" PRIu8 ", source=%" PRIu8 ", global_int=%" PRIu32 ", flags=%#" PRIx16 "\n", |
entry[override->header.type], override->bus, override->source, |
override->global_int, override->flags); |
} |
#endif /* CONFIG_SMP */ |
/** @} |
*/ |
/tags/0.4.0/kernel/genarch/src/softint/division.c |
---|
0,0 → 1,200 |
/* |
* Copyright (c) 2006 Josef Cejka |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup genarch |
* @{ |
*/ |
/** @file |
*/ |
#include <genarch/softint/division.h> |
#define ABSVAL(x) ((x) > 0 ? (x) : -(x)) |
#define SGN(x) ((x) >= 0 ? 1 : 0) |
static unsigned int divandmod32(unsigned int a, unsigned int b, |
unsigned int *remainder) |
{ |
unsigned int result; |
int steps = sizeof(unsigned int) * 8; |
*remainder = 0; |
result = 0; |
if (b == 0) { |
/* FIXME: division by zero */ |
return 0; |
} |
if (a < b) { |
*remainder = a; |
return 0; |
} |
for (; steps > 0; steps--) { |
/* shift one bit to remainder */ |
*remainder = ((*remainder) << 1) | (( a >> 31) & 0x1); |
result <<= 1; |
if (*remainder >= b) { |
*remainder -= b; |
result |= 0x1; |
} |
a <<= 1; |
} |
return result; |
} |
static unsigned long long divandmod64(unsigned long long a, |
unsigned long long b, unsigned long long *remainder) |
{ |
unsigned long long result; |
int steps = sizeof(unsigned long long) * 8; |
*remainder = 0; |
result = 0; |
if (b == 0) { |
/* FIXME: division by zero */ |
return 0; |
} |
if (a < b) { |
*remainder = a; |
return 0; |
} |
for (; steps > 0; steps--) { |
/* shift one bit to remainder */ |
*remainder = ((*remainder) << 1) | ((a >> 63) & 0x1); |
result <<= 1; |
if (*remainder >= b) { |
*remainder -= b; |
result |= 0x1; |
} |
a <<= 1; |
} |
return result; |
} |
/* 32bit integer division */ |
int __divsi3(int a, int b) |
{ |
unsigned int rem; |
int result; |
result = (int) divandmod32(ABSVAL(a), ABSVAL(b), &rem); |
if (SGN(a) == SGN(b)) |
return result; |
return -result; |
} |
/* 64bit integer division */ |
long long __divdi3(long long a, long long b) |
{ |
unsigned long long rem; |
long long result; |
result = (long long) divandmod64(ABSVAL(a), ABSVAL(b), &rem); |
if (SGN(a) == SGN(b)) |
return result; |
return -result; |
} |
/* 32bit unsigned integer division */ |
unsigned int __udivsi3(unsigned int a, unsigned int b) |
{ |
unsigned int rem; |
return divandmod32(a, b, &rem); |
} |
/* 64bit unsigned integer division */ |
unsigned long long __udivdi3(unsigned long long a, unsigned long long b) |
{ |
unsigned long long rem; |
return divandmod64(a, b, &rem); |
} |
/* 32bit remainder of the signed division */ |
int __modsi3(int a, int b) |
{ |
unsigned int rem; |
divandmod32(a, b, &rem); |
/* if divident is negative, remainder must be too */ |
if (!(SGN(a))) { |
return -((int) rem); |
} |
return (int) rem; |
} |
/* 64bit remainder of the signed division */ |
long long __moddi3(long long a,long long b) |
{ |
unsigned long long rem; |
divandmod64(a, b, &rem); |
/* if divident is negative, remainder must be too */ |
if (!(SGN(a))) { |
return -((long long) rem); |
} |
return (long long) rem; |
} |
/* 32bit remainder of the unsigned division */ |
unsigned int __umodsi3(unsigned int a, unsigned int b) |
{ |
unsigned int rem; |
divandmod32(a, b, &rem); |
return rem; |
} |
/* 64bit remainder of the unsigned division */ |
unsigned long long __umoddi3(unsigned long long a, unsigned long long b) |
{ |
unsigned long long rem; |
divandmod64(a, b, &rem); |
return rem; |
} |
unsigned long long __udivmoddi3(unsigned long long a, unsigned long long b, |
unsigned long long *c) |
{ |
return divandmod64(a, b, c); |
} |
/** @} |
*/ |