extmod/modframebuf: Add ellipse drawing method.

This commit is contained in:
Peter Hinch 2022-08-10 14:51:19 +01:00 committed by Damien George
parent 127b340438
commit 42ec9703a0
5 changed files with 885 additions and 6 deletions

View File

@ -11,8 +11,8 @@ class FrameBuffer
-----------------
The FrameBuffer class provides a pixel buffer which can be drawn upon with
pixels, lines, rectangles, text and even other FrameBuffer's. It is useful
when generating output for displays.
pixels, lines, rectangles, ellipses, text and even other FrameBuffers. It is
useful when generating output for displays.
For example::
@ -84,6 +84,20 @@ The following methods draw shapes onto the FrameBuffer.
The optional *f* parameter can be set to ``True`` to fill the rectangle.
Otherwise just a one pixel outline is drawn.
.. method:: FrameBuffer.ellipse(x, y, xr, yr, c[, f, m])
Draw an ellipse at the given location. Radii *xr* and *yr* define the
geometry; equal values cause a circle to be drawn. The *c* parameter
defines the color.
The optional *f* parameter can be set to ``True`` to fill the ellipse.
Otherwise just a one pixel outline is drawn.
The optional *m* parameter enables drawing to be restricted to certain
quadrants of the ellipse. The LS four bits determine which quadrants are
to be drawn, with bit 0 specifying Q1, b1 Q2, b2 Q3 and b3 Q4. Quadrants
are numbered counterclockwise with Q1 being top right.
Drawing text
------------

View File

@ -12,7 +12,7 @@ mp_obj_type_t mp_type_framebuf;
#include "extmod/modframebuf.c"
mp_map_elem_t framebuf_locals_dict_table[10];
mp_map_elem_t framebuf_locals_dict_table[11];
STATIC MP_DEFINE_CONST_DICT(framebuf_locals_dict, framebuf_locals_dict_table);
mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_obj_t *args) {
@ -29,9 +29,10 @@ mp_obj_t mpy_init(mp_obj_fun_bc_t *self, size_t n_args, size_t n_kw, mp_obj_t *a
framebuf_locals_dict_table[4] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_vline), MP_OBJ_FROM_PTR(&framebuf_vline_obj) };
framebuf_locals_dict_table[5] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_rect), MP_OBJ_FROM_PTR(&framebuf_rect_obj) };
framebuf_locals_dict_table[6] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_line), MP_OBJ_FROM_PTR(&framebuf_line_obj) };
framebuf_locals_dict_table[7] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_blit), MP_OBJ_FROM_PTR(&framebuf_blit_obj) };
framebuf_locals_dict_table[8] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_scroll), MP_OBJ_FROM_PTR(&framebuf_scroll_obj) };
framebuf_locals_dict_table[9] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_text), MP_OBJ_FROM_PTR(&framebuf_text_obj) };
framebuf_locals_dict_table[7] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_ellipse), MP_OBJ_FROM_PTR(&framebuf_ellipse_obj) };
framebuf_locals_dict_table[8] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_blit), MP_OBJ_FROM_PTR(&framebuf_blit_obj) };
framebuf_locals_dict_table[9] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_scroll), MP_OBJ_FROM_PTR(&framebuf_scroll_obj) };
framebuf_locals_dict_table[10] = (mp_map_elem_t){ MP_OBJ_NEW_QSTR(MP_QSTR_text), MP_OBJ_FROM_PTR(&framebuf_text_obj) };
mp_type_framebuf.locals_dict = (void*)&framebuf_locals_dict;
mp_store_global(MP_QSTR_FrameBuffer, MP_OBJ_FROM_PTR(&mp_type_framebuf));

View File

@ -469,6 +469,100 @@ STATIC mp_obj_t framebuf_line(size_t n_args, const mp_obj_t *args_in) {
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(framebuf_line_obj, 6, 6, framebuf_line);
STATIC void ellipse_pixel(const mp_obj_framebuf_t *fb, mp_int_t x, mp_int_t y, mp_int_t col, mp_int_t mask) {
if (mask && 0 <= x && x < fb->width && 0 <= y && y < fb->height) {
setpixel(fb, x, y, col);
}
}
// Q2 Q1
// Q3 Q4
#define ELLIPSE_MASK_FILL (0x10)
#define ELLIPSE_MASK_ALL (0x0f)
#define ELLIPSE_MASK_Q1 (0x01)
#define ELLIPSE_MASK_Q2 (0x02)
#define ELLIPSE_MASK_Q3 (0x04)
#define ELLIPSE_MASK_Q4 (0x08)
STATIC void draw_ellipse_points(const mp_obj_framebuf_t *fb, mp_int_t cx, mp_int_t cy, mp_int_t x, mp_int_t y, mp_int_t col, mp_int_t mask) {
if (mask & ELLIPSE_MASK_FILL) {
if (mask & ELLIPSE_MASK_Q1) {
fill_rect(fb, cx, cy - y, x + 1, 1, col);
}
if (mask & ELLIPSE_MASK_Q2) {
fill_rect(fb, cx - x, cy - y, x + 1, 1, col);
}
if (mask & ELLIPSE_MASK_Q3) {
fill_rect(fb, cx - x, cy + y, x + 1, 1, col);
}
if (mask & ELLIPSE_MASK_Q4) {
fill_rect(fb, cx, cy + y, x + 1, 1, col);
}
} else {
ellipse_pixel(fb, cx + x, cy - y, col, mask & ELLIPSE_MASK_Q1);
ellipse_pixel(fb, cx - x, cy - y, col, mask & ELLIPSE_MASK_Q2);
ellipse_pixel(fb, cx - x, cy + y, col, mask & ELLIPSE_MASK_Q3);
ellipse_pixel(fb, cx + x, cy + y, col, mask & ELLIPSE_MASK_Q4);
}
}
STATIC mp_obj_t framebuf_ellipse(size_t n_args, const mp_obj_t *args_in) {
mp_obj_framebuf_t *self = MP_OBJ_TO_PTR(args_in[0]);
mp_int_t args[5];
framebuf_args(args_in, args, 5); // cx, cy, xradius, yradius, col
mp_int_t mask = (n_args > 6 && mp_obj_is_true(args_in[6])) ? ELLIPSE_MASK_FILL : 0;
if (n_args > 7) {
mask |= mp_obj_get_int(args_in[7]) & ELLIPSE_MASK_ALL;
} else {
mask |= ELLIPSE_MASK_ALL;
}
mp_int_t two_asquare = 2 * args[2] * args[2];
mp_int_t two_bsquare = 2 * args[3] * args[3];
mp_int_t x = args[2];
mp_int_t y = 0;
mp_int_t xchange = args[3] * args[3] * (1 - 2 * args[2]);
mp_int_t ychange = args[2] * args[2];
mp_int_t ellipse_error = 0;
mp_int_t stoppingx = two_bsquare * args[2];
mp_int_t stoppingy = 0;
while (stoppingx >= stoppingy) { // 1st set of points, y' > -1
draw_ellipse_points(self, args[0], args[1], x, y, args[4], mask);
y += 1;
stoppingy += two_asquare;
ellipse_error += ychange;
ychange += two_asquare;
if ((2 * ellipse_error + xchange) > 0) {
x -= 1;
stoppingx -= two_bsquare;
ellipse_error += xchange;
xchange += two_bsquare;
}
}
// 1st point set is done start the 2nd set of points
x = 0;
y = args[3];
xchange = args[3] * args[3];
ychange = args[2] * args[2] * (1 - 2 * args[3]);
ellipse_error = 0;
stoppingx = 0;
stoppingy = two_asquare * args[3];
while (stoppingx <= stoppingy) { // 2nd set of points, y' < -1
draw_ellipse_points(self, args[0], args[1], x, y, args[4], mask);
x += 1;
stoppingx += two_bsquare;
ellipse_error += xchange;
xchange += two_bsquare;
if ((2 * ellipse_error + ychange) > 0) {
y -= 1;
stoppingy -= two_asquare;
ellipse_error += ychange;
ychange += two_asquare;
}
}
return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(framebuf_ellipse_obj, 6, 8, framebuf_ellipse);
STATIC mp_obj_t framebuf_blit(size_t n_args, const mp_obj_t *args_in) {
mp_obj_framebuf_t *self = MP_OBJ_TO_PTR(args_in[0]);
mp_obj_t source_in = mp_obj_cast_to_native_base(args_in[1], MP_OBJ_FROM_PTR(&mp_type_framebuf));
@ -603,6 +697,7 @@ STATIC const mp_rom_map_elem_t framebuf_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_vline), MP_ROM_PTR(&framebuf_vline_obj) },
{ MP_ROM_QSTR(MP_QSTR_rect), MP_ROM_PTR(&framebuf_rect_obj) },
{ MP_ROM_QSTR(MP_QSTR_line), MP_ROM_PTR(&framebuf_line_obj) },
{ MP_ROM_QSTR(MP_QSTR_ellipse), MP_ROM_PTR(&framebuf_ellipse_obj) },
{ MP_ROM_QSTR(MP_QSTR_blit), MP_ROM_PTR(&framebuf_blit_obj) },
{ MP_ROM_QSTR(MP_QSTR_scroll), MP_ROM_PTR(&framebuf_scroll_obj) },
{ MP_ROM_QSTR(MP_QSTR_text), MP_ROM_PTR(&framebuf_text_obj) },

View File

@ -0,0 +1,65 @@
try:
import framebuf
except ImportError:
print("SKIP")
raise SystemExit
def printbuf():
print("--8<--")
for y in range(h):
for x in range(w):
print("%02x" % buf[(x + y * w)], end="")
print()
print("-->8--")
w = 30
h = 30
buf = bytearray(w * h)
fbuf = framebuf.FrameBuffer(buf, w, h, framebuf.GS8)
# Outline
fbuf.fill(0)
fbuf.ellipse(15, 15, 12, 6, 0xFF, False)
printbuf()
# Fill
fbuf.fill(0)
fbuf.ellipse(15, 15, 6, 12, 0xAA, True)
printbuf()
# Outline and fill some different quadrant combos.
for m in (0, 0b0001, 0b0010, 0b0100, 0b1000, 0b1010):
fbuf.fill(0)
fbuf.ellipse(15, 15, 6, 12, 0xAA, False, m)
printbuf()
fbuf.fill(0)
fbuf.ellipse(15, 15, 6, 12, 0xAA, True, m)
printbuf()
# Draw ellipses that will go out of bounds at each of the edges.
for x, y in (
(
4,
4,
),
(
26,
4,
),
(
26,
26,
),
(
4,
26,
),
):
fbuf.fill(0)
fbuf.ellipse(x, y, 6, 12, 0xAA, False)
printbuf()
fbuf.fill(0)
fbuf.ellipse(x, y, 6, 12, 0xAA, True)
printbuf()

View File

@ -0,0 +1,704 @@
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000ffffffffffffffffff00000000000000000000
0000000000000000ffffff000000000000000000ffffff00000000000000
000000000000ffff000000000000000000000000000000ffff0000000000
0000000000ff00000000000000000000000000000000000000ff00000000
00000000ff000000000000000000000000000000000000000000ff000000
000000ff0000000000000000000000000000000000000000000000ff0000
000000ff0000000000000000000000000000000000000000000000ff0000
000000ff0000000000000000000000000000000000000000000000ff0000
00000000ff000000000000000000000000000000000000000000ff000000
0000000000ff00000000000000000000000000000000000000ff00000000
000000000000ffff000000000000000000000000000000ffff0000000000
0000000000000000ffffff000000000000000000ffffff00000000000000
0000000000000000000000ffffffffffffffffff00000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000aaaaaa00000000000000000000000000
00000000000000000000000000aaaaaaaaaa000000000000000000000000
000000000000000000000000aaaaaaaaaaaaaa0000000000000000000000
0000000000000000000000aaaaaaaaaaaaaaaaaa00000000000000000000
0000000000000000000000aaaaaaaaaaaaaaaaaa00000000000000000000
00000000000000000000aaaaaaaaaaaaaaaaaaaaaa000000000000000000
00000000000000000000aaaaaaaaaaaaaaaaaaaaaa000000000000000000
00000000000000000000aaaaaaaaaaaaaaaaaaaaaa000000000000000000
000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000
000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000
000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000
000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000
000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000
000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000
000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000
000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000
000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000
00000000000000000000aaaaaaaaaaaaaaaaaaaaaa000000000000000000
00000000000000000000aaaaaaaaaaaaaaaaaaaaaa000000000000000000
00000000000000000000aaaaaaaaaaaaaaaaaaaaaa000000000000000000
0000000000000000000000aaaaaaaaaaaaaaaaaa00000000000000000000
0000000000000000000000aaaaaaaaaaaaaaaaaa00000000000000000000
000000000000000000000000aaaaaaaaaaaaaa0000000000000000000000
00000000000000000000000000aaaaaaaaaa000000000000000000000000
0000000000000000000000000000aaaaaa00000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000aaaa00000000000000000000000000
0000000000000000000000000000000000aa000000000000000000000000
000000000000000000000000000000000000aa0000000000000000000000
00000000000000000000000000000000000000aa00000000000000000000
00000000000000000000000000000000000000aa00000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
000000000000000000000000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000aaaa00000000000000000000000000
000000000000000000000000000000aaaaaa000000000000000000000000
000000000000000000000000000000aaaaaaaa0000000000000000000000
000000000000000000000000000000aaaaaaaaaa00000000000000000000
000000000000000000000000000000aaaaaaaaaa00000000000000000000
000000000000000000000000000000aaaaaaaaaaaa000000000000000000
000000000000000000000000000000aaaaaaaaaaaa000000000000000000
000000000000000000000000000000aaaaaaaaaaaa000000000000000000
000000000000000000000000000000aaaaaaaaaaaaaa0000000000000000
000000000000000000000000000000aaaaaaaaaaaaaa0000000000000000
000000000000000000000000000000aaaaaaaaaaaaaa0000000000000000
000000000000000000000000000000aaaaaaaaaaaaaa0000000000000000
000000000000000000000000000000aaaaaaaaaaaaaa0000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000aaaa0000000000000000000000000000
00000000000000000000000000aa00000000000000000000000000000000
000000000000000000000000aa0000000000000000000000000000000000
0000000000000000000000aa000000000000000000000000000000000000
0000000000000000000000aa000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000aaaa0000000000000000000000000000
00000000000000000000000000aaaaaa0000000000000000000000000000
000000000000000000000000aaaaaaaa0000000000000000000000000000
0000000000000000000000aaaaaaaaaa0000000000000000000000000000
0000000000000000000000aaaaaaaaaa0000000000000000000000000000
00000000000000000000aaaaaaaaaaaa0000000000000000000000000000
00000000000000000000aaaaaaaaaaaa0000000000000000000000000000
00000000000000000000aaaaaaaaaaaa0000000000000000000000000000
000000000000000000aaaaaaaaaaaaaa0000000000000000000000000000
000000000000000000aaaaaaaaaaaaaa0000000000000000000000000000
000000000000000000aaaaaaaaaaaaaa0000000000000000000000000000
000000000000000000aaaaaaaaaaaaaa0000000000000000000000000000
000000000000000000aaaaaaaaaaaaaa0000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
0000000000000000000000aa000000000000000000000000000000000000
0000000000000000000000aa000000000000000000000000000000000000
000000000000000000000000aa0000000000000000000000000000000000
00000000000000000000000000aa00000000000000000000000000000000
0000000000000000000000000000aaaa0000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000aaaaaaaaaaaaaa0000000000000000000000000000
000000000000000000aaaaaaaaaaaaaa0000000000000000000000000000
000000000000000000aaaaaaaaaaaaaa0000000000000000000000000000
000000000000000000aaaaaaaaaaaaaa0000000000000000000000000000
000000000000000000aaaaaaaaaaaaaa0000000000000000000000000000
00000000000000000000aaaaaaaaaaaa0000000000000000000000000000
00000000000000000000aaaaaaaaaaaa0000000000000000000000000000
00000000000000000000aaaaaaaaaaaa0000000000000000000000000000
0000000000000000000000aaaaaaaaaa0000000000000000000000000000
0000000000000000000000aaaaaaaaaa0000000000000000000000000000
000000000000000000000000aaaaaaaa0000000000000000000000000000
00000000000000000000000000aaaaaa0000000000000000000000000000
0000000000000000000000000000aaaa0000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000aa0000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
00000000000000000000000000000000000000aa00000000000000000000
00000000000000000000000000000000000000aa00000000000000000000
000000000000000000000000000000000000aa0000000000000000000000
0000000000000000000000000000000000aa000000000000000000000000
000000000000000000000000000000aaaa00000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000aaaaaaaaaaaaaa0000000000000000
000000000000000000000000000000aaaaaaaaaaaaaa0000000000000000
000000000000000000000000000000aaaaaaaaaaaaaa0000000000000000
000000000000000000000000000000aaaaaaaaaaaaaa0000000000000000
000000000000000000000000000000aaaaaaaaaaaaaa0000000000000000
000000000000000000000000000000aaaaaaaaaaaa000000000000000000
000000000000000000000000000000aaaaaaaaaaaa000000000000000000
000000000000000000000000000000aaaaaaaaaaaa000000000000000000
000000000000000000000000000000aaaaaaaaaa00000000000000000000
000000000000000000000000000000aaaaaaaaaa00000000000000000000
000000000000000000000000000000aaaaaaaa0000000000000000000000
000000000000000000000000000000aaaaaa000000000000000000000000
000000000000000000000000000000aaaa00000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000aaaa0000000000000000000000000000
00000000000000000000000000aa00000000000000000000000000000000
000000000000000000000000aa0000000000000000000000000000000000
0000000000000000000000aa000000000000000000000000000000000000
0000000000000000000000aa000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000aa0000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
00000000000000000000000000000000000000aa00000000000000000000
00000000000000000000000000000000000000aa00000000000000000000
000000000000000000000000000000000000aa0000000000000000000000
0000000000000000000000000000000000aa000000000000000000000000
000000000000000000000000000000aaaa00000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000aaaa0000000000000000000000000000
00000000000000000000000000aaaaaa0000000000000000000000000000
000000000000000000000000aaaaaaaa0000000000000000000000000000
0000000000000000000000aaaaaaaaaa0000000000000000000000000000
0000000000000000000000aaaaaaaaaa0000000000000000000000000000
00000000000000000000aaaaaaaaaaaa0000000000000000000000000000
00000000000000000000aaaaaaaaaaaa0000000000000000000000000000
00000000000000000000aaaaaaaaaaaa0000000000000000000000000000
000000000000000000aaaaaaaaaaaaaa0000000000000000000000000000
000000000000000000aaaaaaaaaaaaaa0000000000000000000000000000
000000000000000000aaaaaaaaaaaaaa0000000000000000000000000000
000000000000000000aaaaaaaaaaaaaa0000000000000000000000000000
000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000
000000000000000000000000000000aaaaaaaaaaaaaa0000000000000000
000000000000000000000000000000aaaaaaaaaaaaaa0000000000000000
000000000000000000000000000000aaaaaaaaaaaaaa0000000000000000
000000000000000000000000000000aaaaaaaaaaaaaa0000000000000000
000000000000000000000000000000aaaaaaaaaaaa000000000000000000
000000000000000000000000000000aaaaaaaaaaaa000000000000000000
000000000000000000000000000000aaaaaaaaaaaa000000000000000000
000000000000000000000000000000aaaaaaaaaa00000000000000000000
000000000000000000000000000000aaaaaaaaaa00000000000000000000
000000000000000000000000000000aaaaaaaa0000000000000000000000
000000000000000000000000000000aaaaaa000000000000000000000000
000000000000000000000000000000aaaa00000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
aa00000000000000aa000000000000000000000000000000000000000000
aa00000000000000aa000000000000000000000000000000000000000000
00aa0000000000aa00000000000000000000000000000000000000000000
0000aa000000aa0000000000000000000000000000000000000000000000
000000aaaaaa000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaa0000000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaa0000000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaa0000000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaa000000000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaa000000000000000000000000000000000000000000
00aaaaaaaaaaaaaa00000000000000000000000000000000000000000000
0000aaaaaaaaaa0000000000000000000000000000000000000000000000
000000aaaaaa000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
000000000000000000000000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000aa0000000000000000
00000000000000000000000000000000000000000000aa00000000000000
00000000000000000000000000000000000000000000aa00000000000000
0000000000000000000000000000000000000000000000aa0000000000aa
000000000000000000000000000000000000000000000000aa000000aa00
00000000000000000000000000000000000000000000000000aaaaaa0000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
000000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaa
000000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaa
000000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaa
00000000000000000000000000000000000000000000aaaaaaaaaaaaaaaa
00000000000000000000000000000000000000000000aaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000000000aaaaaaaaaaaaaa
000000000000000000000000000000000000000000000000aaaaaaaaaa00
00000000000000000000000000000000000000000000000000aaaaaa0000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000aaaaaa0000
000000000000000000000000000000000000000000000000aa000000aa00
0000000000000000000000000000000000000000000000aa0000000000aa
00000000000000000000000000000000000000000000aa00000000000000
00000000000000000000000000000000000000000000aa00000000000000
000000000000000000000000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000aa0000000000000000
000000000000000000000000000000000000000000aa0000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
0000000000000000000000000000000000000000aa000000000000000000
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000aaaaaa0000
000000000000000000000000000000000000000000000000aaaaaaaaaa00
0000000000000000000000000000000000000000000000aaaaaaaaaaaaaa
00000000000000000000000000000000000000000000aaaaaaaaaaaaaaaa
00000000000000000000000000000000000000000000aaaaaaaaaaaaaaaa
000000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaa
000000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaa
000000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
0000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaa
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000aaaaaa000000000000000000000000000000000000000000000000
0000aa000000aa0000000000000000000000000000000000000000000000
00aa0000000000aa00000000000000000000000000000000000000000000
aa00000000000000aa000000000000000000000000000000000000000000
aa00000000000000aa000000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
000000000000000000aa0000000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
00000000000000000000aa00000000000000000000000000000000000000
-->8--
--8<--
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000aaaaaa000000000000000000000000000000000000000000000000
0000aaaaaaaaaa0000000000000000000000000000000000000000000000
00aaaaaaaaaaaaaa00000000000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaa000000000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaa000000000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaa0000000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaa0000000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaa0000000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
aaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000000000
-->8--