// linear framebuffer driver for QNX 8.0 by Pierre-Marie Baty <pm@pmbaty.com>
// compile and link with: cc -Wall fbwrite.c -lpng -o fbwrite
// standard C includes
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <assert.h>
#include <ctype.h>
// platform-specific includes
#include <unistd.h> // POSIX
#include <sys/mman.h> // POSIX
#ifdef __QNXNTO__
#include <sys/neutrino.h> // QNX
#include <hw/inout.h> // QNX
#endif // __QNXNTO__
// the PNG library
#include <png.h>
/* codepage 837
================
☺☻♥♦♣♠•◘○◙♂♀♪♫☼
►◄↕‼¶§▬↨↑↓→←∟↔▲▼
!"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}~⌂
ÇüéâäàåçêëèïîìÄÅ
ÉæÆôöòûùÿÖÜ¢£¥₧ƒ
áíóúñѪº¿⌐¬½¼¡«»
░▒▓│┤╡╢╖╕╣║╗╝╜╛┐
└┴┬├─┼╞╟╚╔╩╦╠═╬╧
╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀
αßΓπΣσµτΦΘΩδ∞φε∩
≡±≥≤⌠⌡÷≈°∙·√ⁿ²■
================ */
// character tables
#define CHAR_PIXELS_W 8
#define CHAR_PIXELS_H 16
#define _ 0x00,
#define B 0xff,
static const uint8_t characters_table_16x16_8x16_bold[] = // https://www.youtube.com/watch?v=Tl7VfKYbRjg
{
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
B _ B _ _ _ _ _ _ B B B B B B _ _ B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ B B B B _ _ _ B B B B _ _ _ _ B B B B B B _ B B B B B B B _ _ _ _ _ _ _ _
B _ B _ _ _ _ _ B _ _ _ _ _ _ B B B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ B B B _ _ B B _ _ B B _ _ _ B B _ _ B B _ B B _ _ _ B B _ _ _ B B _ _ _
B _ B _ _ _ _ _ B _ B _ _ B _ B B B _ B B _ B B _ B B _ B B _ _ _ _ _ B _ _ _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ B B _ B _ _ B B _ _ B B _ _ _ B B B B B B _ B B B B B B B _ _ _ B B _ _ _
_ _ _ _ _ _ _ _ B _ _ _ _ _ _ B B B B B B B B B B B B B B B B _ _ _ B B B _ _ _ _ _ B B B B _ _ _ B B B B B B _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ B B B B _ _ B B _ _ _ _ B B _ _ B B _ _ B _ _ B B _ _ B B _ _ _ B B _ _ _ _ _ B B _ _ _ B B B B _ B B _ B B
_ _ B _ B _ _ _ B _ _ _ _ _ _ B B B B B B B B B B B B B B B B _ _ B B B B B _ _ B B B _ _ B B B B B B B B B B B _ _ _ B B _ _ _ B B B _ _ B B B _ B B _ _ B B _ B _ _ B B _ _ B _ B B B B _ _ _ _ B B _ _ B B _ _ _ B B _ _ _ _ _ B B _ _ _ B B _ _ B B B B _ _
_ _ B _ B _ _ _ B _ B B B B _ B B B _ _ _ _ B B B B B B B B B _ B B B B B B B _ B B B _ _ B B B B B B B B B B B _ _ B B B B _ _ B B _ _ _ _ B B _ B _ _ _ _ B _ B _ B B B B _ B B B _ _ B B _ _ _ _ B B B B _ _ _ _ B B _ _ _ _ _ B B _ _ _ B B B B B _ _ B B B
_ _ B _ B _ _ _ B _ _ B B _ _ B B B B _ _ B B B B B B B B B B _ _ B B B B B _ _ B B B _ _ B B B _ B B B B B B _ _ _ B B B B _ _ B B _ _ _ _ B B _ B _ _ _ _ B _ B _ B B B B _ B B B _ _ B B _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ B B _ _ B B B B _ _
_ _ _ B B _ _ _ B _ _ _ _ _ _ B B B B B B B B B _ B B B B B _ _ _ _ B B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ B B B _ _ B B B _ B B _ _ B B _ B _ _ B B _ _ B B B _ _ B B _ _ _ B B B B B B _ _ B B B _ _ _ _ _ B B _ _ B B B B B _ B B _ B B
_ _ _ _ _ _ _ _ B _ _ _ _ _ _ B B B B B B B B B _ _ B B B _ _ _ _ _ _ B _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ B B B B _ _ B B _ _ _ _ B B B B _ _ B B _ _ _ _ _ B B _ _ _ B B B B _ _ _ _ B B B _ _ B B B _ _ _ B B _ _ _
_ _ _ _ B _ _ _ _ B B B B B B _ _ B B B B B B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B B B B B _ B B B B _ _ _ _ _ _ B B _ _ _ B B B _ _ _ _ _ B B B _ _ B B _ _ _ _ B B _ _ _
_ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
B B _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ _ _ _ B B _ _ B B _ _ B B B B B B B B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
B B B _ _ _ _ _ _ _ _ _ B B B _ _ _ B B B B _ _ _ B B _ _ B B _ B B _ B B _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
B B B B _ _ _ _ _ _ _ B B B B _ _ B B B B B B _ _ B B _ _ B B _ B B _ B B _ B B _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B _ _ B B B B B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ B B B B B B B _
B B B B B _ _ _ _ _ B B B B B _ _ _ _ B B _ _ _ _ B B _ _ B B _ B B _ B B _ B B _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ B _ _ _ _ _ B B B _ _ _ B B B B B B B _
B B B B B B B _ B B B B B B B _ _ _ _ B B _ _ _ _ B B _ _ B B _ _ B B B B _ B B B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B B _ _ _ _ B B B B B _ _
B B B B B _ _ _ _ _ B B B B B _ _ _ _ B B _ _ _ _ B B _ _ B B _ _ _ _ B B _ B B B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ B B B B B B B _ B B B B B B B _ B B _ _ _ _ _ _ B B B B B B B _ _ B B B B B _ _ _ B B B B B _ _
B B B B _ _ _ _ _ _ _ B B B B _ _ B B B B B B _ _ B B _ _ B B _ _ _ _ B B _ B B _ B B _ B B _ _ B B B B B B B _ _ B B B B B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ _ _ B B _ B B _ _ _ B B B B B _ _ _ _ B B B _ _ _
B B B _ _ _ _ _ _ _ _ _ B B B _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ B B B _ _ _ B B B B B B B _ _ _ B B B B _ _ _ _ _ B B _ _ _ _ B B B B B B _ _ _ _ B B _ _ _ _ _ B B _ _ _ _ B B B B B B B _ _ _ B _ B _ _ _ B B B B B B B _ _ _ B B B _ _ _
B B _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ _ _ _ B B _ _ B B _ _ _ _ B B _ B B _ _ _ _ B B _ _ B B B B B B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ B _ _ _ _
B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ B B _ _ B B _ _ _ _ B B _ B B B B _ _ _ B B _ B B B B B B B _ _ B B B B B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ _ B B _ _ _ _ _ _ _ _ _ _ B B B B B _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ B B B B _ _ _ B B _ _ B B _ _ B B _ B B _ _ B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ B _ _ B _ _ _ B B _ B B _ _ B B _ _ _ _ B _ B B _ _ _ _ B _ _ B B _ B B _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _
_ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ B B B B B B B _ B B _ _ _ _ _ _ B B _ _ _ B B _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ B B _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B B B B _ _ _ _ _ _ B B _ _ _ B B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ _ B B B B _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ B B _ _ _ _ B B _ _ _ B B _ B B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ B B B B B B B B _ B B B B B B _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ B B _ _ _ B B _ _ _ _ B B _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ _ B B B B _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B _ B _ _ _ _ B B _ _ B B _ _ _ _ _ B B _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ B B _ _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B B B B _ _ B _ _ _ _ B B _ _ B B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ B B B _ _ _ _ _ _ B B _ _ _ _ B B B B B _ _ _ B B B B B _ _ _ _ _ _ B B _ _ B B B B B B B _ _ _ B B B _ _ _ B B B B B B B _ _ B B B B B _ _ _ B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B _ _
_ B B _ B B _ _ _ _ B B B _ _ _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ B B B _ _ B B _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ B B _
B B _ _ _ B B _ _ B B B B _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ B B B B _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ _ _ B B _
B B _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ B B _ B B _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ B B B B B B _ _ _ _ B B _ _ _ _ _ _ _ B B _ _
B B _ B _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B B B _ _ B B _ _ B B _ _ B B B B B B _ _ B B B B B B _ _ _ _ _ _ B B _ _ _ B B B B B _ _ _ B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ _ _
B B _ B _ B B _ _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ B B _ B B B B B B B _ _ _ _ _ _ B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ _ _
B B _ _ _ B B _ _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ _ _ B B _ _ _ _ B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B B B B B _ _ _ _ _ B B _ _ _ _ _ B B _ _ _
B B _ _ _ B B _ _ _ _ B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ _ _ B B _ _ _ _ B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _
_ B B _ B B _ _ _ _ _ B B _ _ _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ B B _ _ _ _ B B _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _
_ _ B B B _ _ _ _ B B B B B B _ B B B B B B B _ _ B B B B B _ _ _ _ _ B B B B _ _ B B B B B _ _ _ B B B B B _ _ _ _ B B _ _ _ _ _ B B B B B _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ B B B B B B _ _ _ _ B B B B _ _ B B B B B _ _ _ B B B B B B B _ B B B B B B B _ _ _ B B B B _ _ B B _ _ _ B B _ _ _ B B B B _ _ _ _ _ B B B B _ B B B _ _ B B _ B B B B _ _ _ _ B B _ _ _ B B _ B B _ _ _ B B _ _ B B B B B _ _
_ B B B B B _ _ _ _ B B B _ _ _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ B B _ _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ B B _ _ B B _ _ B B _ _ _ _ _ B B B _ B B B _ B B B _ _ B B _ B B _ _ _ B B _
B B _ _ _ B B _ _ B B _ B B _ _ _ B B _ _ B B _ B B _ _ _ _ B _ _ B B _ _ B B _ _ B B _ _ _ B _ _ B B _ _ _ B _ B B _ _ _ _ B _ B B _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ B B _ _ B B _ _ B B _ _ _ _ _ B B B B B B B _ B B B B _ B B _ B B _ _ _ B B _
B B _ _ _ B B _ B B _ _ _ B B _ _ B B _ _ B B _ B B _ _ _ _ _ _ _ B B _ _ B B _ _ B B _ B _ _ _ _ B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ _ B B B B B B B _ B B B B B B B _ B B _ _ _ B B _
B B _ B B B B _ B B _ _ _ B B _ _ B B B B B _ _ B B _ _ _ _ _ _ _ B B _ _ B B _ _ B B B B _ _ _ _ B B B B _ _ _ B B _ _ _ _ _ _ B B B B B B B _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ B B B B _ _ _ _ B B _ _ _ _ _ B B _ B _ B B _ B B _ B B B B _ B B _ _ _ B B _
B B _ B B B B _ B B B B B B B _ _ B B _ _ B B _ B B _ _ _ _ _ _ _ B B _ _ B B _ _ B B _ B _ _ _ _ B B _ B _ _ _ B B _ B B B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ B B B B _ _ _ _ B B _ _ _ _ _ B B _ _ _ B B _ B B _ _ B B B _ B B _ _ _ B B _
B B _ B B B B _ B B _ _ _ B B _ _ B B _ _ B B _ B B _ _ _ _ _ _ _ B B _ _ B B _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _
B B _ B B B _ _ B B _ _ _ B B _ _ B B _ _ B B _ B B _ _ _ _ B _ _ B B _ _ B B _ _ B B _ _ _ B _ _ B B _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ B B _ _ B B _ _ _ B B _ _ B B _ _ B B _ _ _ B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _
B B _ _ _ _ _ _ B B _ _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ B B _ _ _ B B _ _ B B _ _ B B _ _ _ _ _ _ B B _ _ B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ B B _ _ B B _ _ _ B B _ _ B B _ _ B B _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _
_ B B B B B _ _ B B _ _ _ B B _ B B B B B B _ _ _ _ B B B B _ _ B B B B B _ _ _ B B B B B B B _ B B B B _ _ _ _ _ _ B B B _ B _ B B _ _ _ B B _ _ _ B B B B _ _ _ B B B B _ _ _ B B B _ _ B B _ B B B B B B B _ B B _ _ _ B B _ B B _ _ _ B B _ _ B B B B B _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _
B B B B B B _ _ _ B B B B B _ _ B B B B B B _ _ _ B B B B B _ _ _ B B B B B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ _ B B _ _ B B _ B B B B B B B _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _
_ B B _ _ B B _ B B _ _ _ B B _ _ B B _ _ B B _ B B _ _ _ B B _ _ B B B B B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ _ B B _ _ B B _ B B _ _ _ B B _ _ _ B B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ B B _ _ B B _ _ _ B B _ _ _ _ _ _ _ _ _
_ B B _ _ B B _ B B _ _ _ B B _ _ B B _ _ B B _ B B _ _ _ B B _ _ B _ B B _ B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ _ B B _ B B _ _ _ B B _ _ B B _ B _ _ _ _ B B _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B B _ _ B B _ B B _ _ _ B B _ _ B B _ _ B B _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ _ B B B B B _ _ _ B B _ _ B B _ _ _ _ _ B B _ _ _ _ B B _ _ _ _ B B B _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B B B B B _ _ B B _ _ _ B B _ _ B B B B B _ _ _ _ B B B _ _ _ _ _ _ B B _ _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ B _ B B _ _ _ B B B _ _ _ _ _ B B B B _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ B B B _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B B _ _ _ _ _ B B _ _ _ B B _ _ B B _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ B _ B B _ _ _ B B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B B _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B B _ _ _ _ _ B B _ _ _ B B _ _ B B _ _ B B _ _ _ _ _ _ B B _ _ _ _ B B _ _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ B _ B B _ _ B B B B B _ _ _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ B B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B B _ _ _ _ _ B B _ B _ B B _ _ B B _ _ B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ B B _ _ _ B B _ _ B B _ B B _ _ B B B B B B B _ _ B B _ B B _ _ _ _ _ B B _ _ _ B B _ _ _ _ B _ _ _ B B _ _ _ _ _ _ _ _ B B B _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B B _ _ _ _ _ B B _ B B B B _ _ B B _ _ B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ B B _ _ _ B B _ _ _ B B B _ _ _ B B B _ B B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ B B _ _ _ B B _ _ _ B B _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
B B B B _ _ _ _ _ B B B B B _ _ B B B _ _ B B _ _ B B B B B _ _ _ _ B B B B _ _ _ B B B B B _ _ _ _ _ B _ _ _ _ _ B B _ B B _ _ B B _ _ _ B B _ _ _ B B B B _ _ B B B B B B B _ _ _ B B B B _ _ _ _ _ _ _ _ B _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ B B B _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ B _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B B _ _ _ _ B B B B _ _ _ B B B B B _ _ _ _ B B _ _ _ _ _ B B B _ B B _ _ B B _ B B _ _ _ _ B B B _ _ _ _ _ _ _ B B B _ _ B B _ _ B B _ _ _ _ B B _ _ _ B B B _ B B _ _ B B _ B B B _ _ _ B B B B B _ _
_ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B _ B B _ _ B B _ _ _ B B _ _ B B _ B B _ _ B B _ _ _ B B _ _ B B B B _ _ _ B B _ _ B B _ _ _ B B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ B B _ B B _ _ _ _ _ B B _ _ _ B B B B B B B _ _ B B _ _ B B _ B B _ _ _ B B _
_ _ _ _ _ _ _ _ _ B B B B B _ _ _ B B _ _ B B _ B B _ _ _ _ _ _ B B _ _ B B _ _ B B B B B B B _ _ _ B B _ _ _ _ B B _ _ B B _ _ _ B B _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ B B B B _ _ _ _ _ _ B B _ _ _ B B _ B _ B B _ _ B B _ _ B B _ B B _ _ _ B B _
_ _ _ _ _ _ _ _ B B _ _ B B _ _ _ B B _ _ B B _ B B _ _ _ _ _ _ B B _ _ B B _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ _ B B _ _ _ B B _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ B B B B _ _ _ _ _ _ B B _ _ _ B B _ B _ B B _ _ B B _ _ B B _ B B _ _ _ B B _
_ _ _ _ _ _ _ _ B B _ _ B B _ _ _ B B _ _ B B _ B B _ _ _ _ _ _ B B _ _ B B _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ _ B B _ _ _ B B _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ B B _ B B _ _ _ _ _ B B _ _ _ B B _ B _ B B _ _ B B _ _ B B _ B B _ _ _ B B _
_ _ _ _ _ _ _ _ B B _ _ B B _ _ _ B B _ _ B B _ B B _ _ _ B B _ B B _ _ B B _ _ B B _ _ _ B B _ _ _ B B _ _ _ _ B B _ _ B B _ _ _ B B _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ B B _ _ B B _ _ _ _ B B _ _ _ B B _ B _ B B _ _ B B _ _ B B _ B B _ _ _ B B _
_ _ _ _ _ _ _ _ _ B B B _ B B _ _ B B B B B _ _ _ B B B B B _ _ _ B B B _ B B _ _ B B B B B _ _ _ B B B B _ _ _ _ B B B B B _ _ B B B _ _ B B _ _ _ B B B B _ _ _ _ _ _ _ B B _ B B B _ _ B B _ _ _ B B B B _ _ B B _ _ _ B B _ _ B B _ _ B B _ _ B B B B B _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ B B _ _ _ _ B B B _ _ _ _ B B _ B B B _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _
B B _ B B B _ _ _ B B B _ B B _ B B _ B B B _ _ _ B B B B B _ _ B B B B B B _ _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B B B B B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _
_ B B _ _ B B _ B B _ _ B B _ _ _ B B B _ B B _ B B _ _ _ B B _ _ _ B B _ _ _ _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ _ B B _ B B _ _ B B _ _ _ B B _ B B _ _ B B _ _ _ B B B _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ B B _ B B _ _
_ B B _ _ B B _ B B _ _ B B _ _ _ B B _ _ B B _ _ B B _ _ _ _ _ _ _ B B _ _ _ _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ B _ B B _ _ _ B B B _ _ _ B B _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B _
_ B B _ _ B B _ B B _ _ B B _ _ _ B B _ _ _ _ _ _ _ B B B _ _ _ _ _ B B _ _ _ _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ B _ B B _ _ _ B B B _ _ _ B B _ _ _ B B _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B _
_ B B _ _ B B _ B B _ _ B B _ _ _ B B _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ _ _ _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ B _ B B _ _ _ B B B _ _ _ B B _ _ _ B B _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B _
_ B B _ _ B B _ B B _ _ B B _ _ _ B B _ _ _ _ _ B B _ _ _ B B _ _ _ B B _ B B _ B B _ _ B B _ _ _ B B _ B B _ _ B B B B B B B _ _ B B _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B _
_ B B B B B _ _ _ B B B B B _ _ B B B B _ _ _ _ _ B B B B B _ _ _ _ _ B B B _ _ _ B B B _ B B _ _ _ B B B _ _ _ _ B B _ B B _ _ B B _ _ _ B B _ _ B B B B B B _ B B B B B B B _ _ _ _ _ B B B _ _ _ _ B B _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B B _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B B _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
B B B B _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ _ _ _ _ B B _ _ _ B B _ _ B B _ B B _ _
_ _ B B B B _ _ B B _ _ B B _ _ _ _ _ B B _ _ _ _ _ B B B _ _ _ B B _ _ B B _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ B B _ _ _ B B _ _ _ B B _ _ _ _ _ B B _ _ B B _ _ _ B B B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _
_ B B _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ B B _ _ _ _ B B _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _
B B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ B B B _ _ _
B B _ _ _ _ _ _ B B _ _ B B _ _ _ B B B B B _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ _ _ B B B _ _ _ _ _ B B B _ _ _ _ _ B B B _ _ _ _ B B _ B B _ _ _ B B _ B B _ _
B B _ _ _ _ _ _ B B _ _ B B _ _ B B _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ B B _ _ _ B B _ B B _ _ _ B B _
B B _ _ _ _ _ _ B B _ _ B B _ _ B B B B B B B _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ B B _ _ _ _ _ _ B B B B B B B _ B B B B B B B _ B B B B B B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ B B _ _ _ B B _ B B B B B B B _
B B _ _ _ _ _ _ B B _ _ B B _ _ B B _ _ _ _ _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ B B B B B B B _ B B _ _ _ B B _
B B _ _ _ _ B _ B B _ _ B B _ _ B B _ _ _ _ _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ B B _ _ _ B B _ B B _ _ _ B B _
_ B B _ _ B B _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ B B _ _ _ B B _ B B _ _ _ B B _
_ _ B B B B _ _ _ B B B _ B B _ _ B B B B B _ _ _ B B B _ B B _ _ B B B _ B B _ _ B B B _ B B _ _ B B B _ B B _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B _ _ B B _ _ _ B B _ B B _ _ _ B B _
_ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ B B B B B _ _ _ _ _ _ _ B B B _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B _ _ _ B B B _ _ _ B B _ _ _ B B _ _ _ B B _ _ _ _ _ B B B B _ _ _ _ _ B B _ _ _ _ B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ B B _ _ _ B B _ _ B B _ B B _ _ B B _ _ _ _ _ B B _ B B
B B B B B B B _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B _ _ B B _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B B B B _ _ B B _ _ _ B B _ _ B B B B B _ _ _ B B _ _ B _ _ _ B B _ _ B B _ B B _ _ B B _ _ _ _ _ B B _ _ _
_ B B _ _ B B _ _ _ _ _ _ _ _ _ B B _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ _ B B _ _ _ _ _ _ _ B B B B _ _ B B B B B _ _ _ _ _ _ B B _ _ _
_ B B _ _ _ B _ B B B _ B B _ _ B B _ _ B B _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ B B _ _ _ B B _ _ _ B _ _ _ _ _ B B _ _ _
_ B B _ B _ _ _ _ _ B B _ B B _ B B B B B B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B B B B B _ B B _ _ B B _ _ _ B B B B B B _
_ B B B B _ _ _ _ _ B B _ B B _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ B B _ B B B B _ _ _ _ B B _ _ _
_ B B _ B _ _ _ _ B B B B B B _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ _ B B _ _ _ _ _ _ B B B B B B _ B B _ _ B B _ _ _ _ _ B B _ _ _
_ B B _ _ _ B _ B B _ B B _ _ _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ _ B B B B B _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ B B _ _ B B _ _ _ _ _ B B _ _ _
_ B B _ _ B B _ B B _ B B _ _ _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ B B _ _ B B _ _ B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ B B B _ _ B B _ _ _ _ B B _ _ _ B B _ _ B B _ _ B B _ B B _ _ _
B B B B B B B _ _ B B _ B B B _ B B _ _ B B B _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B _ B B _ _ B B B _ B B _ _ B B B B B B _ _ B B B B B _ _ _ B B B B B _ _ _ _ _ B B _ _ _ B B B B B B _ _ _ _ _ B B _ _ _ B B _ _ _ B B _ _ B B B _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ B B _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ B B _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ B B B _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ B B B _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B B _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B B _ _ B B _ _ _ B B _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B _ _ B B _ _ _ B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ B B _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ B B _ _ B B _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B B B B _ _ _ _ _ B B B _ _ _ _ B B B B B _ _ B B _ _ B B _ _ B B _ B B B _ _ B B B B _ B B _ _ _ B B B B B _ _ _ B B B _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ B B _ B B _ _ _
_ _ _ _ B B _ _ _ _ _ B B _ _ _ B B _ _ _ B B _ B B _ _ B B _ _ _ B B _ _ B B _ B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B B B B B B _ B B B B B B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ B B _ B B _ _ _ B B _ B B _ _
_ B B B B B _ _ _ _ _ B B _ _ _ B B _ _ _ B B _ B B _ _ B B _ _ _ B B _ _ B B _ B B _ B B B B _ _ B B B B B B _ _ B B B B B _ _ _ B B _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ _ _ B B _ B B _
B B _ _ B B _ _ _ _ _ B B _ _ _ B B _ _ _ B B _ B B _ _ B B _ _ _ B B _ _ B B _ B B _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ _ B B _ _ _ _ _ _ B B _ _ B B _ _ _ B B B B _ _ _ B B _ B B _ _ _ B B _ B B _ _
B B _ _ B B _ _ _ _ _ B B _ _ _ B B _ _ _ B B _ B B _ _ B B _ _ _ B B _ _ B B _ B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ B B B _ _ B B _ _ B B B _ _ _ B B B B _ _ _ _ B B _ B B _ B B _ B B _ _ _
B B _ _ B B _ _ _ _ _ B B _ _ _ B B _ _ _ B B _ B B _ _ B B _ _ _ B B _ _ B B _ B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B _ _ _ _ B B _ B _ _ B B _ B _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B B B _ B B _ _ _ B B B B _ _ _ B B B B B _ _ _ B B B _ B B _ _ B B _ _ B B _ B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B B B B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ B _ _ _ B _ B _ B _ B _ B B B _ B B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ B _ _ B _ B _ B _ B _ _ B B B _ B B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _
_ _ _ B _ _ _ B _ B _ B _ B _ B B B _ B B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ B _ _ B _ B _ B _ B _ _ B B B _ B B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _
_ _ _ B _ _ _ B _ B _ B _ B _ B B B _ B B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ B _ _ B _ B _ B _ B _ _ B B B _ B B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ B B B B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ B B B B B _ _ _ B B B B _ B B _ _ _ B B _ B B _ B B B B B B B _ B B B B _ B B _ _ _ B B _ B B _ B B B B B _ _ _ _ _ _ _ _ _ _ _
_ _ _ B _ _ _ B _ B _ B _ B _ B B B _ B B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ B _ _ B _ B _ B _ B _ _ B B B _ B B B _ _ _ B B _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B _ B B _ B B B B B B B _ B B B B B _ _ _ B B B B _ B B _ _ _ B B _ B B _ B B B B _ B B _ B B B B B B B _ B B B B B B B _ B B B B B _ _ _ B B B B B _ _ _
_ _ _ B _ _ _ B _ B _ B _ B _ B B B _ B B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _
_ B _ _ _ B _ _ B _ B _ B _ B _ _ B B B _ B B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _
_ _ _ B _ _ _ B _ B _ B _ B _ B B B _ B B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _
_ B _ _ _ B _ _ B _ B _ B _ B _ _ B B B _ B B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _
_ _ _ B _ _ _ B _ B _ B _ B _ B B B _ B B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _
_ B _ _ _ B _ _ B _ B _ B _ B _ _ B B B _ B B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _
_ _ _ B _ _ _ B _ B _ B _ B _ B B B _ B B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _
_ B _ _ _ B _ _ B _ B _ B _ B _ _ B B B _ B B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _
_ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _
_ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _
_ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _
_ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _
_ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _
_ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B B B B _ _ B B _ B B _ _ _ B B _ B B B _ _ B B B B B B B B B B _ B B B B B B B B B B B _ _ B B _ B B B B B B B B B B B B B B B _ B B B B B B B B B B B
_ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ B B B B B B B B B B B B B B B B B B B B B _ _ _ B B B B B B B B B B B B B B B B B B B B B _ _ _ B B B B B _ _ B B _ B B B _ _ B B B B B B _ _ B B _ B B B B B B B B B B B B B B B _ B B B _ _ B B _ B B B B B B B B B B B B B B B _ B B B B B B B B B B B
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _
_ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ B B B B B B B B B B B B
_ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ B B B B B B B B B B B B
_ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ B B B B B B B B B B B B
_ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ B B B B B B B B B B B B
_ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ B B B B B B B B B B B B
_ _ B B _ B B _ B B B B B B B B _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B B B B _ _ _ B B B B B _ _ _ _ _ _ _ _ _ _ B B _ B B _ B B B B B B B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ B B B B B B B B B B B B
_ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ B B B B B B B B B B B B
B B B B B B B B B B B B B B B B B B B B B B B B _ _ B B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ B B B B B B B B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ B B B B B B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ B B B B _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B _ _ _ B B B _ _ _ _ _ B B B _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ B B _ _ B B _ _ B B _ _ _ B B _ _ _ _ _ _ _ _ _ B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ B B _ _ _ _ _ B B B B B _ _
_ _ _ _ _ _ _ _ B B _ _ B B _ _ B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ B B _ _ _ B B B B _ _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ B B _ _ _ _ _ B B _ _ _ B B _
_ B B B _ B B _ B B _ _ B B _ _ B B _ _ _ _ _ _ B B B B B B B _ _ _ B B _ _ _ _ _ B B B B B B _ _ B B _ _ B B _ B B _ B B B _ _ _ B B _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ _ B B _ _ _ B B B B B B _ _ B B B B B B _ _ B B _ _ _ _ _ B B _ _ _ B B _
B B _ B B B _ _ B B _ B B _ _ _ B B _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ B B _ _ _ _ B B _ _ _ _ B B _ _ B B _ B B B B B B B _ B B _ _ _ B B _ _ _ B B B B B _ B B _ B B _ B B B B _ B B _ B B _ B B B B B _ _ B B _ _ _ B B _
B B _ B B _ _ _ B B _ _ B B _ _ B B _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ B B _ _ _ _ B B _ _ _ _ B B _ _ B B _ B B _ _ _ B B _ _ B B _ B B _ _ _ B B _ _ B B _ B B _ B B _ B B B B _ B B _ B B _ B B _ _ _ _ _ B B _ _ _ B B _
B B _ B B _ _ _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ B B _ B B _ _ _ _ B B _ _ B B _ _ _ _ B B _ _ _ _ B B _ _ B B _ B B _ _ _ B B _ _ B B _ B B _ _ _ B B _ _ B B _ B B _ B B _ B B B B B B _ _ B B _ B B _ _ _ _ _ B B _ _ _ B B _
B B _ B B _ _ _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ B B _ _ _ _ B B _ _ _ _ _ B B B B _ _ B B _ _ _ B B _ _ B B _ B B _ _ _ B B _ _ B B _ _ B B B B B B _ _ B B B B B B _ _ B B _ _ _ _ _ B B _ _ _ B B _
B B _ B B B _ _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ B B _ B B _ _ B B _ _ _ B B _ B B _ B B _ _ _ _ B B _ _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ _ B B _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ _ B B _ _ _ B B _
_ B B B _ B B _ B B _ _ B B _ _ B B _ _ _ _ _ _ _ B B _ B B _ _ B B B B B B B _ _ B B B _ _ _ _ _ B B B B B _ _ _ _ _ B B _ _ _ _ B B B B B B _ _ _ B B B _ _ _ B B B _ B B B _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ B B B _ _ B B _ _ _ B B _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ B B _ B B _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ B B _ _ B B _ _ B B _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ B B _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _
B B B B B B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ B B B B B B _ B B B _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ B B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ B B _ _ _ B B _ _ B _ _ B B B B B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ B B B B B B _ _ _ _ _ _ B B _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B _ B B _ _ B B B B B B _ _ B B B B B B _ _ _ _ B _ _ _ _
B B B B B B B _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ B B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B _ _ _ B _ B _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B _ _ _ B _ B _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ _ _ _ B B _ _ _ B B _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B _ _ _ _ B _ _ _ _
B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ B B B B B B _ _ B B B B B B _ _ B B B B B B _ _ _ _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
};
static const uint8_t characters_table_16x16_8x16_light[] =
{
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
B _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
B _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ B B B B _ _ _ B B B B _ _ _ _ _ B B B B _ _ _ B B B B B _ _ _ _ B _ _ _ _
B _ B _ _ _ _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B _ B B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ B B _ _ B _ _ _ _ B _ _ _ _ B _ _ B _ _ _ B _ _ _ B _ B _ _ B _ _ B _
_ _ _ _ _ _ _ _ B _ _ _ _ _ B _ B B B B B B B _ B _ _ B _ _ B _ _ _ B _ B _ _ _ _ _ B _ B _ _ _ _ _ B _ B _ _ _ _ _ _ B B _ _ _ B B B _ B B B _ _ _ B B B B _ _ B B _ _ _ B B _ _ _ _ _ B _ B _ _ B _ _ _ _ B _ _ _ _ B B B B _ _ _ B B B B B _ _ B _ B _ B _ _
_ _ B _ B _ _ _ B _ B _ B _ B _ B B _ B _ B B _ B _ _ B _ _ B _ _ B _ _ _ B _ _ _ _ _ B _ _ _ _ _ B _ _ _ B _ _ _ _ B B B B _ _ B B _ _ _ B B _ _ B B _ _ B B _ B _ _ B _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ B _ _ _ B _ _ _ B B B _ _ _
_ _ B _ B _ _ _ B _ _ _ _ _ B _ B B B B B B B _ B _ _ _ _ _ B _ B _ _ _ _ _ B _ _ B _ B _ B _ _ B _ _ _ _ _ B _ _ _ B B B B _ _ B B _ _ _ B B _ _ B _ _ _ _ B _ B _ B B B _ B _ _ B B B B _ _ _ _ _ B B B B _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ B _ B B B _ B B B _
_ _ B _ B _ _ _ B _ B B B _ B _ B B B B B B B _ _ B _ _ _ B _ _ _ B _ _ _ B _ _ B _ B B B _ B _ B _ B B B _ B _ _ _ _ B B _ _ _ B B B _ B B B _ _ B _ _ _ _ B _ B _ B B B _ B _ B _ _ _ _ B _ _ _ _ _ B B _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ B _ _ _ B B B _ _ _
_ _ _ B B _ _ _ B _ _ B _ _ B _ B B _ _ _ B B _ _ _ B _ B _ _ _ _ _ B _ B _ _ _ _ B _ B _ B _ _ _ B _ B _ B _ _ _ _ _ _ _ _ _ _ B B B B B B B _ _ B B _ _ B B _ B _ _ B _ _ B _ B _ _ _ _ B _ _ _ B B B B B B _ _ B B B _ _ _ _ _ _ B _ B B B _ _ B _ B _ B _ _
_ _ _ _ _ _ _ _ B _ _ _ _ _ B _ B B B _ B B B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ B B B B _ _ B B _ _ _ B B _ B _ _ _ _ B _ _ _ _ _ B B _ _ _ B B B B _ _ _ _ B B B _ B B B _ B _ _ B _ _ B _
_ _ _ _ B _ _ _ _ B B B B B _ _ _ B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ B B B B B B B _ _ B B B B _ _ _ _ _ _ B B _ _ _ B B B _ _ _ _ _ B B B _ B B _ _ _ _ _ B _ _ _ _
_ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B
_ B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ B _ _ _ B B B B B B _ B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B _
_ B B _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B _ _ _ _ B _ _ _ B _ _ B _ _ B _ _ B _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ B B B _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B _
_ B B B _ _ _ _ _ _ _ _ B B B _ _ B _ B _ B _ _ _ B _ _ _ B _ _ B _ _ B _ _ B _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ B _ B _ B _ _ _ B _ B _ B _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _
_ B B B B _ _ _ _ _ _ B B B B _ _ _ _ B _ _ _ _ _ B _ _ _ B _ _ B _ _ B _ _ B _ B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ B B B B _ _
_ B B B B B _ _ _ _ B B B B B _ _ _ _ B _ _ _ _ _ B _ _ _ B _ _ _ B B B _ _ B _ B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ B B B B B B _ _ B B B B B B _ _ B _ _ _ _ _ _ B B B B B B B B _ _ _ B B _ _ _ _ _ _ B B _ _ _
_ B B B B _ _ _ _ _ _ B B B B _ _ _ _ B _ _ _ _ _ B _ _ _ B _ _ _ _ _ B _ _ B _ B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ B _ B _ B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _
_ B B B _ _ _ _ _ _ _ _ B B B _ _ B _ B _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ B B B B _ _ _ B B B B B B B _ _ _ B B B _ _ _ _ _ _ B _ _ _ _ _ B _ B _ B _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ B B B B B B _ _ _ B _ _ B _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _
_ B B _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ _ _ _ B _ _ _ B B B B B B B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ B B B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _
_ B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ B _ _ _ _ _ B _ _ B _ B _ _ _ _ B _ _ B B B B B B B _ _ B B B B B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ B B _ _ _ B B _ _ B _ _ _ B _ _ _ _ B B B B _ _ B B B _ _ _ B _ _ _ B B B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _
_ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ B B _ _ _ B B _ _ B _ _ _ B _ _ _ B _ _ B _ B _ B _ B _ _ B _ _ _ B _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ B _ B _ B _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _
_ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ B _ _ B B B B B B B _ _ B _ _ B _ _ _ B B B _ B _ _ _ _ B _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B B B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _
_ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ B _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ B B B B B B B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ B _ _ _ _ B B B B _ _ _ _ _ B _ _ _ _ _ B _ B _ _ B _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B B B _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ _ B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ B _ _ _ _ _ B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ B _ B _ B _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B _ _ B _ B _ _ B _ _ _ B _ B B B _ B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ B _ _ _ B _ B _ _ B _ _ B _ _ B _ B _ B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ B _ _ _ _ B B B B _ _ B _ _ _ B B B _ _ B B B B _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B B B B B _ _
_ _ B B B B _ _ _ _ _ _ B _ _ _ _ _ B B B B _ _ _ B B B B B _ _ _ _ _ _ _ B B _ _ _ B B B B B _ _ _ B B B B B _ _ B B B B B B _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ B _
_ B _ _ _ _ B _ _ _ _ B B _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ B _ B _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _
_ B _ _ _ _ B _ _ _ B _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ B _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ B B B B B B _ _ _ _ _ B _ _ _ _ _ _ _ B B _ _
_ B _ B B _ B _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ B B B B _ _ _ _ B _ _ _ B _ _ _ B B B B _ _ _ B B B B B _ _ _ _ _ _ B _ _ _ _ _ B B B B _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _
_ B _ B B _ B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ B _ _ _ _ B _ _ _ B _ _ _ B _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ B _ _ B _ _ _ _ B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _
_ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ B _ _ B B B B B B B _ _ _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B B B B B B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _
_ _ B B B B _ _ _ _ B B B B B _ _ B B B B B B _ _ B B B B B _ _ _ _ _ _ _ _ B _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ _ B _ _ _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B B B B B _ _ _ _ _ B B _ _ _ _ B B B B B _ _ _ _ B B B B _ _ _ B B B B _ _ _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ B _ _ _ _ B _ _ _ _ B B B _ _ _ _ B B B B B _ _ B _ _ _ _ B _ _ _ B _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ B B B B _ _
B _ _ _ _ _ B _ _ _ B _ _ B _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ B _ _ _ _ B _ _ _ _ _ _ B B _ _ B B _ _ B B _ _ _ B _ _ B _ _ _ _ B _
B _ B B B _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ _ B _ _ _ _ _ _ B _ B B _ B _ _ B _ B _ _ B _ _ B _ _ _ _ B _
B _ B _ B _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ B _ _ _ _ _ _ B _ _ _ _ _ _ B _ B B _ B _ _ B _ _ B _ B _ _ B _ _ _ _ B _
B _ B _ B _ B _ _ B _ _ _ _ B _ _ B B B B B _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ B B B B B _ _ _ B B B B B _ _ B _ _ B B B _ _ B B B B B B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B B _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ B B _ _ B _ _ _ _ B _
B _ B _ B _ B _ _ B B B B B B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ B _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _
B _ _ B B B _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _
B _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ B _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _
_ B B B B B _ _ _ B _ _ _ _ B _ _ B B B B B _ _ _ _ B B B B _ _ _ B B B B B _ _ _ _ B B B B B _ _ _ B _ _ _ _ _ _ _ B B B B B _ _ B _ _ _ _ B _ _ _ _ B B B _ _ _ _ B B _ _ _ _ _ B _ _ _ _ B _ _ _ B B B B B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ B B B B _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _
_ B B B B B _ _ _ _ B B B B _ _ _ B B B B B _ _ _ _ B B B B _ _ _ B B B B B B B _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ B _ B _ _ _ _ _ B _ B B B B B B _ _ _ B B B B _ _ _ B _ _ _ _ _ _ _ _ B B B B _ _ _ _ B _ B _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ B _ B _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ B _ _ _ B _ _ _ B _ _ _ _ _ _ _ _ _ _
_ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ B _ _ _ B _ _ B _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ B _ B _ _ _ _ B _ _ _ B _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B B B B B _ _ _ B _ _ _ _ B _ _ B B B B B _ _ _ _ _ B B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ B B _ B _ _ _ _ _ B _ _ _ _ _ _ B _ B _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ B B _ B _ _ _ _ B _ B _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ _ _ _ _ B _ _ B _ B _ _ B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ B B _ B _ _ _ B _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ _ _ _ _ B _ _ B _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ B _ _ B _ _ _ B B _ _ B B _ _ B _ _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ _ _ _ _ _ B B B B _ _ _ B _ _ _ _ B _ _ _ B B B B _ _ _ _ _ _ B _ _ _ _ _ B B B B _ _ _ _ _ B B _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ _ B _ _ _ _ B _ _ _ _ B B B B B B _ _ _ B B B B _ _ _ _ _ _ _ B _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ B B B B _ _ _ B _ B B B _ _ _ _ B B B B _ _ _ _ B B B _ B _ _ _ B B B B _ _ _ _ B B B B B _ _ _ B B B B B _ _ B _ B B B _ _ _ _ B B B _ _ _ _ _ B B B _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ B B B _ B B _ _ _ B B B B B _ _ _ _ B B B B _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ B B _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ B B _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ B B _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ B _ _ _ _ _ _ B _ _ _ B _ _ B _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B B B B _ _ _ _ _ _ _ B _ _ _ B _ _ B _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _
_ _ _ _ _ _ _ _ _ _ B B B B B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ B B B B B B _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ B _ _ _ _ _ _ B _ _ _ B _ _ B _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _
_ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ B B _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ B _ _ B _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _
_ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ B B B _ B _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ B _ _ B _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _
_ _ _ _ _ _ _ _ _ _ B B B B B _ _ B B B B B _ _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ _ _ B _ _ _ B B B B B _ _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ B B B B B _ B _ _ B _ _ B _ _ B _ _ _ _ B _ _ _ B B B B _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B _ B B B _ _ _ _ B B B B B _ _ _ B _ B B _ _ _ _ B B B B B _ _ B B B B B B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ B _ _ B _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B B B B B B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _
_ B B _ _ _ B _ _ B _ _ _ _ B _ _ _ B B _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ B _ _ B _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ B B _ _ _ B _ _ _ B _ B _ _ _
_ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ B _ _ B _ _ B _ _ _ B _ _ B _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ B _ _ B _ _ B _ _ _ B _ _
_ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ B _ _ _ _ _ _ _ B B B B _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ B _ _ B _ _ B _ _ _ _ B B _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ B _ _ _ B B _ _ B _ _ _ _ _ B _
_ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ B _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ B _ _ B _ _ B _ _ _ B _ _ B _ _ _ B _ _ _ _ B _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _
_ B _ _ _ _ B _ _ B _ _ _ B B _ _ _ B _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ _ B _ _ B _ _ B _ _ B _ _ B _ _ B _ _ _ _ B _ _ _ B B B B B _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B _
_ B B B B B _ _ _ _ B B B _ B _ _ _ B _ _ _ _ _ _ B B B B B _ _ _ _ _ _ B B B _ _ _ B B B B B _ _ _ _ B B _ _ _ _ B B _ B B _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ B _ _ B B B B B B _ _ _ _ _ B B _ _ _ _ _ B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ B B _ _ _ B B B _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ B _ _
_ _ B B B B _ _ _ _ B _ _ B _ _ _ _ _ _ B _ _ _ _ _ B _ B _ _ _ _ _ B _ _ B _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ B _ _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ B _ _ _ _ _ B _ _ _ B _ _ _ _ B _ B _ _ _ _ _ _ B _ _ _ _ _ _ B B B B _ _ _ _ B B B _ _ _
_ B _ _ _ _ B _ _ _ B _ _ B _ _ _ _ _ B _ _ _ _ _ B _ _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ B _ _ B _ _ _ _ _ _ B _ _ _ _ B _ _ _ B _ _ _ B _ _ _ B _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ _ _
_ B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ B B B B B _ _
_ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ B _ _ _ _ _ B _
_ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ B B B B B B _ B _ _ _ _ _ B _
_ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ B _ _ _ _ _ _ _ B B B B B B _ _ B B B B B B _ _ B B B B B B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ B B B B B B B _
_ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B B B B B B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ B _ _ _ _ _ B _
_ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ B _ _ _ _ _ B _
_ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ B _ _ _ _ _ B _
_ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ B B B _ _ _ B _ _ _ _ _ B _ B B B B B _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B _ _ _ _ B B _ _ _ _ _ B _ _ B _ _ _ _ _ B _ _ _ _ _ _ B _ _ B _ _ _ _ _ B _ _ _ _ _ _ B _ _ B _ _ _ B B B B B _ _ B _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ B _ _ _ B _ _ _ B _ _ B _ _ _ _ B _ _ _ _ _ _ _ B _ _
_ B B B B B _ _ _ _ _ _ _ _ _ _ B _ _ _ B _ _ _ _ _ B _ _ B _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _ B _ _ _ _ _ B _ _ B B B B B _ _ _ B _ _ _ B _ _ _ _ B _ B _ _ _ B _ _ _ _ B _ _ _ _ _ _ B _ _ _
_ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _ B _ _ _ _ _ B _ B _ _ _ _ _ B _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _
_ B _ _ _ _ _ _ _ B B _ B B _ _ B _ _ _ B _ _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ B _ _ _ _ _ B _ B _ _ _ _ _ B _ B _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ B _ _ _ _ B B B B B _ _ _ _ _ _ B _ _ _ _
_ B B B B _ _ _ _ _ _ B _ _ B _ B B B B B B B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ B _ _ _ _ _ B _ B _ _ _ _ _ B _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B B B B B _ _ B _ _ _ _ _ _ _ _ _ _ B _ _ _ _
_ B _ _ _ _ _ _ _ B B B B B _ _ B _ _ _ B _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ B _ _ _ _ _ B _ B _ _ _ _ _ B _ B _ _ _ _ _ B _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ B B B _ _ _ _ B _ _ _ _
_ B _ _ _ _ _ _ B _ _ B _ _ _ _ B _ _ _ B _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ B _ _ _ _ _ B _ B _ _ _ _ _ B _ _ B B B B B _ _ _ B B _ _ _ _ _ _ B B B B B _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _
_ B _ _ _ _ _ _ B _ _ B _ _ B _ B _ _ _ B _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ B _ _ _ _ _ B _ B _ _ _ _ _ B _ _ _ _ B _ _ _ _ B B _ B _ B B _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _
_ B B B B B _ _ _ B B B B B _ _ B _ _ _ B B B _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ B B B B B _ _ _ B B B B B _ _ _ _ _ B _ _ _ _ B B _ _ B B _ _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ B B _ _ B _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ B B B B _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ B _ _ B B _ _ B _ _ _ _
_ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ B B _ _ B _ _ _ _ _ B _ _ B _ _ _ B _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ B _ _ _ B _ _ _ B _ _ _ _ B B _ _ _ _ _ _ B _ _ B _ _ B _ _ B _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B _ _ B _ _ _ B _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _
_ _ B B B B _ _ _ _ B B _ _ _ _ _ _ B B B B _ _ _ B _ _ _ _ B _ _ B B B B B _ _ B _ B _ _ _ B _ _ _ B B B B B _ _ _ B B B B _ _ _ _ _ B _ _ _ _ _ B B B B B B _ _ B B B B B B _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ B B _ _ _ _ B _ _ B _ _ _ _ _ _ B _ _ B _
_ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ B _ _ B _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B B _ _ _ B _ _ B _ _ _ _ _ _ _ _ B _ _ B
_ _ B B B B B _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ B _ _ _ B _ B _ _ B B B B B B _ _ B B B B B B _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ B _ _ _ _ _ _ _ B _ _ _ B _ _ _ _ B B _ _ _ _ B _ _ B _ _ _ _ _ _ B _ _ B _
_ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ B B _ _ _ B _ _ _ B B _ _ _ _ B B _ _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _
_ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ B _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ B _ B _ _ _ B _ B _ _ _ _ B B _ _ _ _ _ _ B _ _ B _ _ B _ _ B _ _ _
_ _ B B B B B _ _ _ _ B _ _ _ _ _ _ B B B B _ _ _ _ B B B B B _ _ B _ _ _ _ B _ B _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B B B B _ _ _ _ B B _ _ _ _ _ _ _ B _ _ B B _ _ B _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ B _ _ B _ B _ B _ B _ _ B B B _ B B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _
_ _ _ B _ _ _ B _ B _ B _ B _ B B B _ B B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ B _ _ B _ B _ B _ B _ _ B B B _ B B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _
_ _ _ B _ _ _ B _ B _ B _ B _ B B B _ B B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ B _ _ B _ B _ B _ B _ _ B B B _ B B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _
_ _ _ B _ _ _ B _ B _ B _ B _ B B B _ B B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ B _ _ B _ B _ B _ B _ _ B B B _ B B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ B B B B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ B B B B B _ _ _ B B B B _ B B _ _ _ B B _ B B _ B B B B B B B _ B B B B _ B B _ _ _ B B _ B B _ B B B B B _ _ _ _ _ _ _ _ _ _ _
_ _ _ B _ _ _ B _ B _ B _ B _ B B B _ B B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _
_ B _ _ _ B _ _ B _ B _ B _ B _ _ B B B _ B B B _ _ _ B B _ _ _ B B B B B _ _ _ B B B B B _ _ _ B B B B _ B B _ B B B B B B B _ B B B B B _ _ _ B B B B _ B B _ _ _ B B _ B B _ B B B B _ B B _ B B B B B B B _ B B B B B B B _ B B B B B _ _ _ B B B B B _ _ _
_ _ _ B _ _ _ B _ B _ B _ B _ B B B _ B B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _
_ B _ _ _ B _ _ B _ B _ B _ B _ _ B B B _ B B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _
_ _ _ B _ _ _ B _ B _ B _ B _ B B B _ B B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _
_ B _ _ _ B _ _ B _ B _ B _ B _ _ B B B _ B B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _
_ _ _ B _ _ _ B _ B _ B _ B _ B B B _ B B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _
_ B _ _ _ B _ _ B _ B _ B _ B _ _ B B B _ B B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _
_ _ _ B _ _ _ B _ B _ B _ B _ B B B _ B B B _ B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _
_ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _
_ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _
_ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _
_ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _
_ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _
_ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _
_ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B B B B _ _ B B _ B B _ _ _ B B _ B B B _ _ B B B B B B B B B B _ B B B B B B B B B B B _ _ B B _ B B B B B B B B B B B B B B B _ B B B B B B B B B B B
_ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ B B B B B B B B B B B B B B B B B B B B B _ _ _ B B B B B B B B B B B B B B B B B B B B B _ _ _ B B B B B _ _ B B _ B B B _ _ B B B B B B _ _ B B _ B B B B B B B B B B B B B B B _ B B B _ _ B B _ B B B B B B B B B B B B B B B _ B B B B B B B B B B B
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _
_ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ B B B B B B B B B B B B
_ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ B B B B B B B B B B B B
_ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ B B B B B B B B B B B B
_ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ B B B B B B B B B B B B
_ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ B B B B B B B B B B B B
_ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ B B B B B B B B B B B B
_ _ B B _ B B _ B B B B B B B B _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B B B B _ _ _ B B B B B _ _ _ _ _ _ _ _ _ _ B B _ B B _ B B B B B B B B _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ B B B B B B B B B B B B
_ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ B B B B B B B B B B B B
B B B B B B B B B B B B B B B B B B B B B B B B _ _ B B B B B B _ _ _ B B B B B _ _ _ B B B B B _ _ B B B B B B B B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ B B B B B B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ B B _ B B _ _ _ B B _ B B _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ B B B B B B B B B B B B B B B B B B B B _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B B B _ _ B B B B B B B _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ B _ _ _ B _ _ B _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ B B B _ _ _ _ _ B B B _ _ _ _ _ B _ _ _ B _ _ _ _ _ _ _ _ _ _ _ B B B _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ B _ B _ _ _ B _ _ _ B _ _ _ B _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ B _ _ _ _ _ _ _ _ _ _ _ B B B B B _ _
_ B B B _ B B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ B B B B B B _ _ _ B _ _ _ _ _ _ _ B B B B B _ _ B _ _ _ _ B _ _ B B B B B B _ B _ _ B _ _ B _ B _ _ _ _ _ B _ B _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ _ _ B _ _ B _ _ _ B _ B _ _ _ B B B B B _ B _ _ _ _ _ B _
B _ _ _ B _ _ _ _ B B B B B _ _ _ B _ _ _ _ _ _ _ _ B _ _ B _ _ _ _ _ B _ _ _ _ _ B _ _ _ B _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ B _ _ B _ B B B B B B B _ B _ _ _ _ _ B _ _ _ _ B B _ _ _ B _ B _ B _ B _ B _ _ B _ _ B _ _ B _ _ _ _ _ _ B _ _ _ _ _ B _
B _ _ _ B _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ _ B _ _ B _ _ _ _ B _ _ _ _ _ _ B _ _ _ B _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ B _ _ B _ _ B _ B _ _ _ _ _ B _ B _ _ _ _ _ B _ _ _ B _ _ B _ _ B _ _ B _ _ B _ B _ B _ _ _ B _ _ B B B B B _ _ B _ _ _ _ _ B _
B _ _ _ B _ _ _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ _ B _ _ B _ _ _ B _ _ _ _ _ _ _ B _ _ _ B _ _ _ B _ _ _ _ B _ _ _ _ B _ _ _ _ _ B _ B _ B _ _ _ B _ _ _ B _ _ _ B _ _ _ B _ _ _ B _ _ _ _ B _ B _ B _ B _ B _ _ B _ _ _ B _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ B _
_ B B B _ B B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ B B _ _ B _ _ B _ _ _ _ _ B _ _ _ B B B _ _ _ _ B B B B B _ _ _ _ _ B _ _ _ _ _ _ B B B _ _ _ _ _ B B B _ _ _ B B _ _ _ B B _ _ B _ _ _ _ B _ _ B _ _ _ B _ _ B _ B B B _ _ _ _ _ B B B B B _ B _ _ _ _ _ B _
_ _ _ _ _ _ _ _ _ B B B B B _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B B B _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B _
_ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ B B B _ _ _ _ B B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ B B _ _ B _ _ _ B B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ _ _ B _ _ B _ _ _ _ _ _ _ _ _ _ _ B B B _ _ _ _ _
B B B B B B B _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ B _ _ _ _ B _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ B _ _ B _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B B _ _ B _ _ B _ _ _ _ _ B _ _ _ _ _ _ _ B B B B _ _ _ _ _ B _ _ _ _
B B B B B B B _ _ B B B B B _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ B B B B B B B _ _ _ _ _ B B _ _ _ _ B B _ _ _ _ _ _ B B B _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ B _ _ _ _ B B B B _ _ _ _ _ B B B B _ _ _ _ B _ B _ _ _
_ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ B _ B _ _ _
B B B B B B B _ _ _ _ B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ B _ _ B _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B B _ _ _ _ _ B _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ B B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ B B B B B _ _ _ B B B B B B _ _ B B B B B B _ _ _ _ B B _ _ _ B _ _ B B _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B B _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ B B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ B B _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
};
#undef B
#undef _
// text styles
#define TEXTSTYLE_NONE 0
#define TEXTSTYLE_BOLD (1 << 0)
#define TEXTSTYLE_DIM (1 << 1)
#define TEXTSTYLE_ITALIC (1 << 2)
#define TEXTSTYLE_UNDERLINE1 (1 << 3)
#define TEXTSTYLE_UNDERLINE2 (1 << 4)
#define TEXTSTYLE_STRIKETHROUGH (1 << 5)
// handy macros
#define ROUND_TO_MULTIPLE_OF_32(num) (((num) + 31) & -32) // this macro is valid for all multiples that are powers of 2
#define GET_NEXT_CHARACTER() (repeat_count > 0 ? (repeat_count--, current_char) : (accumulated_character_count > 0 ? accumulated_characters[(--accumulated_character_count, accumulated_character_index++)] : ((int) (accumulated_character_index = 0), getchar ())))
#if (SIZE_MAX != UINTPTR_MAX) // compile-time assertion
#error size_t is not aligned with natural integer size on this platform!
#endif
int main (int argc, char **argv)
{
// program entrypoint
typedef struct rbgtriple_s
{
int r;
int g;
int b;
} rbgtriple_t;
static const rbgtriple_t ansi_colors_normal[10] =
{
{ 0, 0, 0 }, // 0: black
{ 153, 0, 0 }, // 1: red
{ 0, 166, 0 }, // 2: green
{ 153, 153, 0 }, // 3: yellow
{ 0, 0, 178 }, // 4: blue
{ 178, 0, 178 }, // 5: magenta
{ 0, 166, 178 }, // 6: cyan
{ 191, 191, 191 }, // 7: white
};
static const rbgtriple_t ansi_colors_bright[10] =
{
{ 102, 102, 102 }, // 0: black
{ 230, 0, 0 }, // 1: red
{ 0, 217, 0 }, // 2: green
{ 230, 230, 0 }, // 3: yellow
{ 0, 0, 255 }, // 4: blue
{ 230, 0, 230 }, // 5: magenta
{ 0, 230, 230 }, // 6: cyan
{ 230, 230, 230 }, // 7: white
};
static const rbgtriple_t ansi_256_colors[256] = // regular 8-bit ANSI colors table
{
// standard colors
{ 0x00, 0x00, 0x00 }, { 0x80, 0x00, 0x00 }, { 0x00, 0x80, 0x00 }, { 0x80, 0x80, 0x00 }, { 0x00, 0x00, 0x80 }, { 0x80, 0x00, 0x80 }, { 0x00, 0x80, 0x80 }, { 0xc0, 0xc0, 0xc0 }, // 0-7
// high intensity colors
{ 0x80, 0x80, 0x80 }, { 0xff, 0x00, 0x00 }, { 0x00, 0xff, 0x00 }, { 0xff, 0xff, 0x00 }, { 0x00, 0x00, 0xff }, { 0xff, 0x00, 0xff }, { 0x00, 0xff, 0xff }, { 0xff, 0xff, 0xff }, // 8-15
// color cubes
{ 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0x5f }, { 0x00, 0x00, 0x87 }, { 0x00, 0x00, 0xaf }, { 0x00, 0x00, 0xd7 }, { 0x00, 0x00, 0xff }, // 16-21
{ 0x00, 0x5f, 0x00 }, { 0x00, 0x5f, 0x5f }, { 0x00, 0x5f, 0x87 }, { 0x00, 0x5f, 0xaf }, { 0x00, 0x5f, 0xd7 }, { 0x00, 0x5f, 0xff }, // 22-27
{ 0x00, 0x87, 0x00 }, { 0x00, 0x87, 0x5f }, { 0x00, 0x87, 0x87 }, { 0x00, 0x87, 0xaf }, { 0x00, 0x87, 0xd7 }, { 0x00, 0x87, 0xff }, // 28-33
{ 0x00, 0xaf, 0x00 }, { 0x00, 0xaf, 0x5f }, { 0x00, 0xaf, 0x87 }, { 0x00, 0xaf, 0xaf }, { 0x00, 0xaf, 0xd7 }, { 0x00, 0xaf, 0xff }, // 34-39
{ 0x00, 0xd7, 0x00 }, { 0x00, 0xd7, 0x5f }, { 0x00, 0xd7, 0x87 }, { 0x00, 0xd7, 0xaf }, { 0x00, 0xd7, 0xd7 }, { 0x00, 0xd7, 0xff }, // 40-45
{ 0x00, 0xff, 0x00 }, { 0x00, 0xff, 0x5f }, { 0x00, 0xff, 0x87 }, { 0x00, 0xff, 0xaf }, { 0x00, 0xff, 0xd7 }, { 0x00, 0xff, 0xff }, // 46-51
{ 0x5f, 0x00, 0x00 }, { 0x5f, 0x00, 0x5f }, { 0x5f, 0x00, 0x87 }, { 0x5f, 0x00, 0xaf }, { 0x5f, 0x00, 0xd7 }, { 0x5f, 0x00, 0xff }, // 52-57
{ 0x5f, 0x5f, 0x00 }, { 0x5f, 0x5f, 0x5f }, { 0x5f, 0x5f, 0x87 }, { 0x5f, 0x5f, 0xaf }, { 0x5f, 0x5f, 0xd7 }, { 0x5f, 0x5f, 0xff }, // 58-63
{ 0x5f, 0x87, 0x00 }, { 0x5f, 0x87, 0x5f }, { 0x5f, 0x87, 0x87 }, { 0x5f, 0x87, 0xaf }, { 0x5f, 0x87, 0xd7 }, { 0x5f, 0x87, 0xff }, // 64-69
{ 0x5f, 0xaf, 0x00 }, { 0x5f, 0xaf, 0x5f }, { 0x5f, 0xaf, 0x87 }, { 0x5f, 0xaf, 0xaf }, { 0x5f, 0xaf, 0xd7 }, { 0x5f, 0xaf, 0xff }, // 70-75
{ 0x5f, 0xd7, 0x00 }, { 0x5f, 0xd7, 0x5f }, { 0x5f, 0xd7, 0x87 }, { 0x5f, 0xd7, 0xaf }, { 0x5f, 0xd7, 0xd7 }, { 0x5f, 0xd7, 0xff }, // 76-81
{ 0x5f, 0xff, 0x00 }, { 0x5f, 0xff, 0x5f }, { 0x5f, 0xff, 0x87 }, { 0x5f, 0xff, 0xaf }, { 0x5f, 0xff, 0xd7 }, { 0x5f, 0xff, 0xff }, // 82-87
{ 0x87, 0x00, 0x00 }, { 0x87, 0x00, 0x5f }, { 0x87, 0x00, 0x87 }, { 0x87, 0x00, 0xaf }, { 0x87, 0x00, 0xd7 }, { 0x87, 0x00, 0xff }, // 88-93
{ 0x87, 0x5f, 0x00 }, { 0x87, 0x5f, 0x5f }, { 0x87, 0x5f, 0x87 }, { 0x87, 0x5f, 0xaf }, { 0x87, 0x5f, 0xd7 }, { 0x87, 0x5f, 0xff }, // 94-99
{ 0x87, 0x87, 0x00 }, { 0x87, 0x87, 0x5f }, { 0x87, 0x87, 0x87 }, { 0x87, 0x87, 0xaf }, { 0x87, 0x87, 0xd7 }, { 0x87, 0x87, 0xff }, // 100-105
{ 0x87, 0xaf, 0x00 }, { 0x87, 0xaf, 0x5f }, { 0x87, 0xaf, 0x87 }, { 0x87, 0xaf, 0xaf }, { 0x87, 0xaf, 0xd7 }, { 0x87, 0xaf, 0xff }, // 106-111
{ 0x87, 0xd7, 0x00 }, { 0x87, 0xd7, 0x5f }, { 0x87, 0xd7, 0x87 }, { 0x87, 0xd7, 0xaf }, { 0x87, 0xd7, 0xd7 }, { 0x87, 0xd7, 0xff }, // 112-117
{ 0x87, 0xff, 0x00 }, { 0x87, 0xff, 0x5f }, { 0x87, 0xff, 0x87 }, { 0x87, 0xff, 0xaf }, { 0x87, 0xff, 0xd7 }, { 0x87, 0xff, 0xff }, // 118-123
{ 0xaf, 0x00, 0x00 }, { 0xaf, 0x00, 0x5f }, { 0xaf, 0x00, 0x87 }, { 0xaf, 0x00, 0xaf }, { 0xaf, 0x00, 0xd7 }, { 0xaf, 0x00, 0xff }, // 124-129
{ 0xaf, 0x5f, 0x00 }, { 0xaf, 0x5f, 0x5f }, { 0xaf, 0x5f, 0x87 }, { 0xaf, 0x5f, 0xaf }, { 0xaf, 0x5f, 0xd7 }, { 0xaf, 0x5f, 0xff }, // 130-135
{ 0xaf, 0x87, 0x00 }, { 0xaf, 0x87, 0x5f }, { 0xaf, 0x87, 0x87 }, { 0xaf, 0x87, 0xaf }, { 0xaf, 0x87, 0xd7 }, { 0xaf, 0x87, 0xff }, // 136-141
{ 0xaf, 0xaf, 0x00 }, { 0xaf, 0xaf, 0x5f }, { 0xaf, 0xaf, 0x87 }, { 0xaf, 0xaf, 0xaf }, { 0xaf, 0xaf, 0xd7 }, { 0xaf, 0xaf, 0xff }, // 142-147
{ 0xaf, 0xd7, 0x00 }, { 0xaf, 0xd7, 0x5f }, { 0xaf, 0xd7, 0x87 }, { 0xaf, 0xd7, 0xaf }, { 0xaf, 0xd7, 0xd7 }, { 0xaf, 0xd7, 0xff }, // 148-153
{ 0xaf, 0xff, 0x00 }, { 0xaf, 0xff, 0x5f }, { 0xaf, 0xff, 0x87 }, { 0xaf, 0xff, 0xaf }, { 0xaf, 0xff, 0xd7 }, { 0xaf, 0xff, 0xff }, // 154-159
{ 0xd7, 0x00, 0x00 }, { 0xd7, 0x00, 0x5f }, { 0xd7, 0x00, 0x87 }, { 0xd7, 0x00, 0xaf }, { 0xd7, 0x00, 0xd7 }, { 0xd7, 0x00, 0xff }, // 160-165
{ 0xd7, 0x5f, 0x00 }, { 0xd7, 0x5f, 0x5f }, { 0xd7, 0x5f, 0x87 }, { 0xd7, 0x5f, 0xaf }, { 0xd7, 0x5f, 0xd7 }, { 0xd7, 0x5f, 0xff }, // 166-171
{ 0xd7, 0x87, 0x00 }, { 0xd7, 0x87, 0x5f }, { 0xd7, 0x87, 0x87 }, { 0xd7, 0x87, 0xaf }, { 0xd7, 0x87, 0xd7 }, { 0xd7, 0x87, 0xff }, // 172-177
{ 0xd7, 0xaf, 0x00 }, { 0xd7, 0xaf, 0x5f }, { 0xd7, 0xaf, 0x87 }, { 0xd7, 0xaf, 0xaf }, { 0xd7, 0xaf, 0xd7 }, { 0xd7, 0xaf, 0xff }, // 178-183
{ 0xd7, 0xd7, 0x00 }, { 0xd7, 0xd7, 0x5f }, { 0xd7, 0xd7, 0x87 }, { 0xd7, 0xd7, 0xaf }, { 0xd7, 0xd7, 0xd7 }, { 0xd7, 0xd7, 0xff }, // 184-189
{ 0xd7, 0xff, 0x00 }, { 0xd7, 0xff, 0x5f }, { 0xd7, 0xff, 0x87 }, { 0xd7, 0xff, 0xaf }, { 0xd7, 0xff, 0xd7 }, { 0xd7, 0xff, 0xff }, // 190-195
{ 0xff, 0x00, 0x00 }, { 0xff, 0x00, 0x5f }, { 0xff, 0x00, 0x87 }, { 0xff, 0x00, 0xaf }, { 0xff, 0x00, 0xd7 }, { 0xff, 0x00, 0xff }, // 196-201
{ 0xff, 0x5f, 0x00 }, { 0xff, 0x5f, 0x5f }, { 0xff, 0x5f, 0x87 }, { 0xff, 0x5f, 0xaf }, { 0xff, 0x5f, 0xd7 }, { 0xff, 0x5f, 0xff }, // 202-207
{ 0xff, 0x87, 0x00 }, { 0xff, 0x87, 0x5f }, { 0xff, 0x87, 0x87 }, { 0xff, 0x87, 0xaf }, { 0xff, 0x87, 0xd7 }, { 0xff, 0x87, 0xff }, // 208-213
{ 0xff, 0xaf, 0x00 }, { 0xff, 0xaf, 0x5f }, { 0xff, 0xaf, 0x87 }, { 0xff, 0xaf, 0xaf }, { 0xff, 0xaf, 0xd7 }, { 0xff, 0xaf, 0xff }, // 214-219
{ 0xff, 0xd7, 0x00 }, { 0xff, 0xd7, 0x5f }, { 0xff, 0xd7, 0x87 }, { 0xff, 0xd7, 0xaf }, { 0xff, 0xd7, 0xd7 }, { 0xff, 0xd7, 0xff }, // 220-225
{ 0xff, 0xff, 0x00 }, { 0xff, 0xff, 0x5f }, { 0xff, 0xff, 0x87 }, { 0xff, 0xff, 0xaf }, { 0xff, 0xff, 0xd7 }, { 0xff, 0xff, 0xff }, // 226-231
// grayscale
{ 0x08, 0x08, 0x08 }, { 0x12, 0x12, 0x12 }, { 0x1c, 0x1c, 0x1c }, { 0x26, 0x26, 0x26 }, { 0x30, 0x30, 0x30 }, { 0x3a, 0x3a, 0x3a }, // 232-
{ 0x44, 0x44, 0x44 }, { 0x4e, 0x4e, 0x4e }, { 0x58, 0x58, 0x58 }, { 0x60, 0x60, 0x60 }, { 0x66, 0x66, 0x66 }, { 0x76, 0x76, 0x76 }, //
{ 0x80, 0x80, 0x80 }, { 0x8a, 0x8a, 0x8a }, { 0x94, 0x94, 0x94 }, { 0x9e, 0x9e, 0x9e }, { 0xa8, 0xa8, 0xa8 }, { 0xb2, 0xb2, 0xb2 }, //
{ 0xbc, 0xbc, 0xbc }, { 0xc6, 0xc6, 0xc6 }, { 0xd0, 0xd0, 0xd0 }, { 0xda, 0xda, 0xda }, { 0xe4, 0xe4, 0xe4 }, { 0xee, 0xee, 0xee } // -255
};
const rbgtriple_t default_foreground_color = { 127, 127, 127 }; // gray
const rbgtriple_t default_background_color = { 0, 0, 0 }; // black
const rbgtriple_t transparent_color = { -1, -1, -1 }; // transparent
rbgtriple_t custom_foreground_color = { 127, 127, 127 }; // gray
rbgtriple_t custom_background_color = { 0, 0, 0 }; // black
const rbgtriple_t *fg_color = &default_foreground_color; // gray
const rbgtriple_t *bg_color = &default_background_color; // black
struct framebuffer_s
{
size_t base_address; // user-supplied
size_t size_in_bytes; // user-supplied
size_t width_in_pixels; // user-supplied
size_t height_in_pixels; // user-supplied
char pixel_format[5]; // user-supplied
uint8_t *virtual_address; // calculated (result of mmap)
rbgtriple_t pixel_indices; // red, green and blue pixel indices in a pixel DWORD (0, 1, 2 or 3) -- calculated out of a user-supplied format string
size_t pixel_size_in_bytes; // calculated
size_t stride_in_pixels; // calculated
size_t stride_in_bytes; // calculated
size_t max_character_lines; // calculated
size_t max_character_columns; // calculated
int cursor_line; // calculated
int cursor_column; // calculated
const uint8_t *characters_table_16x16_8x16; // calculated
int text_style; // calculated
} fb = { 0 };
static char accumulated_characters[4096];
size_t accumulated_character_index = 0;
size_t accumulated_character_count = 0;
size_t accumulated_character_startidx;
size_t column_offset_in_framebuffer;
size_t line_offset_in_framebuffer;
size_t char_row_in_chartable;
size_t char_col_in_chartable;
size_t offset_in_framebuffer;
size_t offset_in_chartable;
size_t char_index;
size_t char_curx;
size_t char_cury;
int current_char;
int next_char;
int escseq_integers[5];
int final_taint;
int character;
int want_debuginfo;
int is_pixel_lit;
int is_backspace = 0;
int repeat_count = 0;
int code_count;
int code_index;
int row_index;
png_struct *png;
png_info *png_info_struct;
char image_color_type;
char image_bit_depth;
char *confstr_word;
int image_height;
int image_width;
int pixel_index;
int is_eos;
uint8_t *image_row;
FILE *fp;
// tell if we want debug info by looking for the presence of a FRAMEBUFFER_DEBUG environment variable
want_debuginfo
= (getenv ("FRAMEBUFFER_DEBUG") != NULL
);
// check that we have all that we need
if (argc == 6)
{
// collect linear framebuffer parameters from command-line arguments if available
fb.
base_address = strtoul (argv
[1], NULL
, 0);
fb.
size_in_bytes = strtoul (argv
[2], NULL
, 0);
fb.
width_in_pixels = strtoul (argv
[3], NULL
, 0);
fb.
height_in_pixels = strtoul (argv
[4], NULL
, 0);
strcpy (fb.
pixel_format, argv
[5]);
}
#ifdef _CS_GRAPHICS
else if (confstr (_CS_GRAPHICS, accumulated_characters, sizeof (accumulated_characters)) > 0)
{
// else (if not supplied from the command line) read them from the _CS_GRAPHICS confstr if available
confstr_word = accumulated_characters; // parse _CS_GRAPHICS configuration string value and stop at each word separator
for (char_index = 0; char_index < sizeof (accumulated_characters); char_index++)
if ((strchr (" \t_", accumulated_characters
[char_index
]) != NULL
) || (accumulated_characters
[char_index
] == 0))
{
is_eos = (accumulated_characters[char_index] == 0); // see if we're at end of string
accumulated_characters[char_index] = 0; // split the conf string at each word separation
if (fb.
base_address == 0) fb.
base_address = strtoul (confstr_word
, NULL
, 0);
else if (fb.
size_in_bytes == 0) fb.
size_in_bytes = strtoul (confstr_word
, NULL
, 0);
else if (fb.
width_in_pixels == 0) fb.
width_in_pixels = strtoul (confstr_word
, NULL
, 0);
else if (fb.
height_in_pixels == 0) fb.
height_in_pixels = strtoul (confstr_word
, NULL
, 0);
else if (fb.
pixel_format[0] == 0) strcpy (fb.
pixel_format, confstr_word
);
if (is_eos)
break; // if end of string is reached, stop parsing
confstr_word = &accumulated_characters[char_index + 1]; // else remember where the next word starts
}
}
#endif // _CS_GRAPHICS
// do we have NO framebuffer specification ?
if (fb.base_address == 0)
{
if ((argc
< 2) || ((strcmp (argv
[1], "-?") != 0) && (strcmp (argv
[1], "--help") != 0)))
fprintf (stderr
, "error: must specify framebuffer address, size, and pixel format (or set the _CS_GRAPHICS configuration string to 'fbaddr_fbsize_width_height_pixfmt')\n");
else
fprintf (stdout
, "Linear framebuffer printer for QNX 8.0 by Pierre-Marie Baty <pm@pmbaty.com>\n");
fprintf (stdout
, "usage (_CS_GRAPHICS set to 'fbaddr_fbsize_width_height_pixfmt'):\n");
fprintf (stdout
, " <pipe>|fbwrite\n");
fprintf (stdout
, "usage (_CS_GRAPHICS not set):\n");
fprintf (stdout
, " <pipe>|fbwrite <fbaddr> <fbsize> <width> <height> <pixfmt>\n");
fprintf (stdout
, " printf 'Hello world!'|fbwrite 0x400000000 1920000 800 600 BGRx\n");
fprintf (stdout
, "Most control chars and ANSI escape sequences are supported, with additions.\n");
fprintf (stdout
, " addition: transparent foreground color: ESC[38;5;256m\n");
fprintf (stdout
, " addition: transparent background color: ESC[48;5;256m\n");
fprintf (stdout
, " addition: draw image at cursor location: ESC]1;<image_pathname>BEL\n");
fprintf (stdout
, "Debug info is printed if the FRAMEBUFFER_DEBUG environment variable is present.\n");
}
// consistency checks
if ((fb.size_in_bytes == 0) || (fb.width_in_pixels == 0) || (fb.height_in_pixels == 0))
{
fprintf (stderr
, "error: neither the framebuffer size in bytes, nor width in pixels nor height in pixels can be zero\n");
}
// compute framebuffer stride based on byte size and pixel height
fb.
pixel_size_in_bytes = strlen (fb.
pixel_format);
if ((fb.pixel_size_in_bytes < 1) || (fb.pixel_size_in_bytes > 4))
{
fprintf (stderr
, "error: invalid/unsupported pixel size (%zd) from pixel format '%s'\n", fb.
pixel_size_in_bytes, fb.
pixel_format);
}
fb.stride_in_bytes = fb.size_in_bytes / fb.height_in_pixels;
fb.stride_in_pixels = fb.stride_in_bytes / fb.pixel_size_in_bytes;
// compute max character lines and columns in framebuffer
fb.max_character_lines = fb.height_in_pixels / CHAR_PIXELS_H;
fb.max_character_columns = fb.width_in_pixels / CHAR_PIXELS_W;
// compute red, green and blue offsets in a single pixel
for (char_index = 0; char_index < fb.pixel_size_in_bytes; char_index++)
{
character = fb.pixel_format[char_index];
if ((character == 'R') || (character == 'r')) fb.pixel_indices.r = char_index;
else if ((character == 'G') || (character == 'g')) fb.pixel_indices.g = char_index;
else if ((character == 'B') || (character == 'b')) fb.pixel_indices.b = char_index;
}
// make the light font the default font
fb.characters_table_16x16_8x16 = characters_table_16x16_8x16_light;
// map the passed physical address to a virtual memory region
fb.virtual_address = mmap (NULL, fb.size_in_bytes, PROT_READ | PROT_WRITE | PROT_NOCACHE, MAP_SHARED | MAP_PHYS, NOFD, fb.base_address);
if (fb.virtual_address == NULL)
{
fprintf (stderr
, "fatal: can't mmap() %zd bytes of framebuffer at 0x%zx\n", fb.
size_in_bytes, fb.
base_address);
; // when we die because of a mmap() failure, we don't want to break the input pipe as this would terminate all feeding processes, so sink everything into oblivion
exit (EXIT_FAILURE
); // once we've received a hangup signal, we can safely commit suicide in a low-carbon, green and Earth-friendly manner.
}
// dump framebuffer info if requested
if (want_debuginfo)
{
fprintf (stderr
, "Framebuffer info:\n");
fprintf (stderr
, " base address: 0x%zx\n", fb.
base_address);
fprintf (stderr
, " size in bytes: %zd\n", fb.
size_in_bytes);
fprintf (stderr
, " width in pixels: %zd\n", fb.
width_in_pixels);
fprintf (stderr
, " height in pixels: %zd\n", fb.
height_in_pixels);
fprintf (stderr
, " pixel format: '%s'\n", fb.
pixel_format);
fprintf (stderr
, " red pixel index: %d\n", fb.
pixel_indices.
r); // calculated
fprintf (stderr
, " red pixel index: %d\n", fb.
pixel_indices.
g); // calculated
fprintf (stderr
, " red pixel index: %d\n", fb.
pixel_indices.
b); // calculated
fprintf (stderr
, " virtual address: 0x%zx\n", (size_t) fb.
virtual_address); // calculated (result of mmap)
fprintf (stderr
, " pixel size in bytes: %zd\n", fb.
pixel_size_in_bytes); // calculated
fprintf (stderr
, " stride in pixels: %zd\n", fb.
stride_in_pixels); // calculated
fprintf (stderr
, " stride in bytes: %zd\n", fb.
stride_in_bytes); // calculated
fprintf (stderr
, " max character lines: %zd\n", fb.
max_character_lines); // calculated
fprintf (stderr
, " max character columns: %zd\n", fb.
max_character_columns); // calculated
fprintf (stderr
, " cursor line: %d\n", fb.
cursor_line); // calculated
fprintf (stderr
, " cursor column: %d\n", fb.
cursor_column); // calculated
}
// read characters, either repeating the current one, or unwinding the accumulator, or from stdin
while ((current_char = GET_NEXT_CHARACTER ()) != EOF)
{
// is it a special character ?
if (current_char == '\x07') // bell
{
#ifdef __QNXNTO__
static size_t pit = 0;
static size_t kbd = 0;
uint8_t byte;
if (pit == 0)
{
ThreadCtl (_NTO_TCTL_IO_LEVEL, (void *) _NTO_IO_LEVEL_1); // give ourselves hardware I/O privileges
pit = mmap_device_io (sizeof (size_t), 0x40); // map 8 bytes at address 0x40 (programmable interrupt timer)
kbd = mmap_device_io (sizeof (size_t), 0x60); // map 8 bytes at address 0x60 (keyboard controller)
}
out8 (pit + 3, 0xb6); // set the PC speaker to output a square wave PCM
out8 (pit + 2, (uint8_t) ((uint16_t) (1193180 / 440) >> 0)); // set the PC speaker period: low byte
out8 (pit + 2, (uint8_t) ((uint16_t) (1193180 / 440) >> 8)); // set the PC speaker period: high byte
byte = in8 (kbd + 1); // read PC speaker state
if (byte != (byte | 3))
out8 (kbd + 1, byte | 3); // start beeping if necessary
usleep (100 * 1000); // wait 100 milliseconds
out8 (kbd + 1, in8 (kbd + 1) & 0xfc); // stop the PC speaker
#endif // __QNXNTO__
if (want_debuginfo)
fprintf (stderr
, "Received bell\n");
continue; // and proceed to the next character
}
else if (current_char == '\x08') // backspace
{
if (fb.cursor_column == 0) // back up one character with line wraparound
{
if (fb.cursor_line > 0) // can we move to the previous line?
{
fb.cursor_line--; // move one line up
fb.cursor_column = fb.max_character_columns - 1; // position at end of line
}
}
else
fb.cursor_column--; // back up one character
current_char = ' '; // and erase it
is_backspace = 1; // remember not to advance the cursor
if (want_debuginfo)
fprintf (stderr
, "Received backspace\n");
}
else if (current_char == '\t') // tab
{
current_char = ' '; // turn tabs to spaces
repeat_count = 7; // and repeat them 8 times
if (want_debuginfo)
fprintf (stderr
, "Received tab\n");
}
else if (current_char == '\n') // line feed
{
fb.cursor_line++; // jump down to next line
fb.cursor_column = 0; // reset cursor to beginning of line
if (want_debuginfo)
fprintf (stderr
, "Received newline\n");
continue; // and proceed to the next character
}
else if (current_char == '\x0c') // form feed
{
memset (fb.
virtual_address, 0, fb.
size_in_bytes); // clear entire scren
fb.cursor_line = 0; // move cursor vertically to top of screen
if (want_debuginfo)
fprintf (stderr
, "Received form feed\n");
continue; // and proceed to the next character
}
else if (current_char == '\r') // carriage return
{
fb.cursor_column = 0; // if so, reset cursor to beginning of line
if (want_debuginfo)
fprintf (stderr
, "Received carriage return\n");
continue; // and proceed to the next character
}
else if (current_char == '\x1b') // possible sequence
{
next_char
= getchar (); // read one character in advance
if (next_char == EOF)
break; // end of stream
else if (accumulated_character_count < sizeof (accumulated_characters))
{
accumulated_character_startidx = accumulated_character_count; // remember where the accumulated data starts
accumulated_characters[accumulated_character_count++] = next_char; // accumulate it
if (next_char == ']') // possible OSC sequence
{
if (want_debuginfo)
fprintf (stderr
, "Received possible OSC escape sequence\n");
// read characters in the accumulator until we find a BEL (in case of OSC sequences the terminator is a BEL code)
while (((next_char
= getchar ()) != EOF
) && (next_char
!= 0x07) && (accumulated_character_count
+ 1 < sizeof (accumulated_characters
)))
accumulated_characters[accumulated_character_count++] = next_char; // accumulate it
if (next_char == EOF)
break; // end of stream
else if (accumulated_character_count + 1 == sizeof (accumulated_characters))
fprintf (stderr
, "warning: character accumulator full while reading possible OSC escape sequence. Unwinding.\n");
else // it's a BEL and the accumulator is not full yet
{
accumulated_characters[accumulated_character_count] = 0; // terminate the accumulated string ourselves
// see what sort of OSC sequence this is
if (strncmp (&accumulated_characters
[accumulated_character_startidx
], "]1;", 3) == 0) // set icon name (i.e. background picture name)
{
fp
= fopen (&accumulated_characters
[accumulated_character_startidx
+ 3], "rb"); // attempt to open the icon file
if (fp != NULL)
{
image_row = NULL;
png = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
png_info_struct = png_create_info_struct (png);
if ((png
!= NULL
) && (png_info_struct
!= NULL
) && (setjmp (png_jmpbuf
(png
)) == 0))
{
png_init_io (png, fp); // read and convert any color_type into 8bit depth, RGBA format - see http://www.libpng.org/pub/png/libpng-manual.txt
png_read_info (png, png_info_struct);
image_color_type = png_get_color_type (png, png_info_struct);
image_bit_depth = png_get_bit_depth (png, png_info_struct);
if (image_bit_depth == 16)
png_set_strip_16 (png); // convert all 16-bit samples to 8-bit
if (image_color_type == PNG_COLOR_TYPE_PALETTE)
png_set_palette_to_rgb (png); // convert all palette indexes to RGB colors
if ((image_color_type == PNG_COLOR_TYPE_GRAY) && (image_bit_depth < 8))
png_set_expand_gray_1_2_4_to_8 (png); // convert all low bit depth grayscales to 8 bits (note: PNG_COLOR_TYPE_GRAY_ALPHA is always 8 or 16bit depth)
if (png_get_valid (png, png_info_struct, PNG_INFO_tRNS))
png_set_tRNS_to_alpha (png); // convert all tRNS transparency chunks to an alpha channel
if ((image_color_type == PNG_COLOR_TYPE_RGB) || (image_color_type == PNG_COLOR_TYPE_GRAY) || (image_color_type == PNG_COLOR_TYPE_PALETTE))
png_set_filler (png, 0xFF, PNG_FILLER_AFTER); // set 0xff as the alpha value of all color types that don't have an alpha channel
if ((image_color_type == PNG_COLOR_TYPE_GRAY) || (image_color_type == PNG_COLOR_TYPE_GRAY_ALPHA))
png_set_gray_to_rgb (png); // convert all grayscale color types to RGB
png_read_update_info (png, png_info_struct); // commit our changes to the PNG info structure
image_width = png_get_image_width (png, png_info_struct);
image_height = png_get_image_height (png, png_info_struct);
image_row
= (uint8_t *) malloc (png_get_rowbytes
(png
, png_info_struct
)); // we'll be reading one row at a time: allocate space for one
if (image_row != NULL)
{
if ((fb.cursor_column * CHAR_PIXELS_W) + image_width > fb.width_in_pixels)
image_width = fb.width_in_pixels - fb.cursor_column; // cap image width so that it doesn't extend past the framebuffer on the right
for (row_index = 0; row_index < image_height; row_index++)
{
// compute the offset of the concerned line in the framebuffer
line_offset_in_framebuffer = ((fb.cursor_line * CHAR_PIXELS_H) + row_index) * fb.stride_in_bytes;
if (line_offset_in_framebuffer > fb.size_in_bytes)
break; // don't draw past the bottom of the framebuffer
png_read_row (png, image_row, NULL); // read one scanline at a time and draw it onto the framebuffer
for (pixel_index = 0; pixel_index < image_width; pixel_index++)
{
// compute the offset of the concerned column in the framebuffer and draw the pixel
column_offset_in_framebuffer = ((fb.cursor_column * CHAR_PIXELS_W) + pixel_index) * fb.pixel_size_in_bytes;
offset_in_framebuffer = line_offset_in_framebuffer + column_offset_in_framebuffer;
fb.virtual_address[offset_in_framebuffer + fb.pixel_indices.r] = image_row[4 * pixel_index + 0]; // red
fb.virtual_address[offset_in_framebuffer + fb.pixel_indices.g] = image_row[4 * pixel_index + 1]; // green
fb.virtual_address[offset_in_framebuffer + fb.pixel_indices.b] = image_row[4 * pixel_index + 2]; // blue
}
}
}
else
fprintf (stderr
, "error: can't allocate enough memory for PNG row\n");
}
else
fprintf (stderr
, "error: can't read '%s': invalid/unsupported PNG image\n", &accumulated_characters
[accumulated_character_startidx
+ 3]);
if (image_row != NULL)
free (image_row
); // free the single scanline buffer
fclose (fp
); // close the input file
}
else
fprintf (stderr
, "error: can't open '%s': %s\n", &accumulated_characters
[accumulated_character_startidx
+ 3], strerror (errno
));
accumulated_character_count = accumulated_character_startidx; // rewind the accumulator
continue; // and proceed to the next character
}
else
accumulated_characters[accumulated_character_count++] = next_char; // not a supported OSC sequence, restore BEL terminator into the accumulator
}
}
else if (next_char == '[') // possible ANSI escape sequence
{
if (want_debuginfo)
fprintf (stderr
, "Received possible ANSI escape sequence\n");
// read characters in the accumulator until we find a something that's NOT a number nor a semicolon (in case of ANSI sequences the terminator is a letter)
while (((next_char
= getchar ()) != EOF
) && (isdigit (next_char
) || (next_char
== ';')) && (accumulated_character_count
+ 1 < sizeof (accumulated_characters
)))
accumulated_characters[accumulated_character_count++] = next_char; // accumulate it
if (next_char == EOF)
break; // end of stream
else if (accumulated_character_count + 1 == sizeof (accumulated_characters))
fprintf (stderr
, "warning: character accumulator full while reading possible ANSI escape sequence. Unwinding.\n");
else // it's a terminator character and the accumulator is not full yet
{
accumulated_characters[accumulated_character_count] = 0; // terminate the accumulated string ourselves
// see what sort of ANSI escape sequence this is
if (next_char == 'A') // CUU: move cursor up
{
if (sscanf (&accumulated_characters
[accumulated_character_startidx
+ 1], "%d", &escseq_integers
[0]) != 1)
escseq_integers[0] = 1; // read optional value (default to 1)
if (want_debuginfo)
fprintf (stderr
, "Identified CUU:%d escape sequence\n", escseq_integers
[0]);
fb.cursor_line = (escseq_integers[0] > fb.cursor_line ? 0 : fb.cursor_line - escseq_integers[0]); // move cursor up N lines
accumulated_character_count = accumulated_character_startidx; // rewind the accumulator
continue; // and proceed to next character
}
else if (next_char == 'B') // CUD: move cursor down
{
if (sscanf (&accumulated_characters
[accumulated_character_startidx
+ 1], "%d", &escseq_integers
[0]) != 1)
escseq_integers[0] = 1; // read optional value (default to 1)
if (want_debuginfo)
fprintf (stderr
, "Identified CUD:%d escape sequence\n", escseq_integers
[0]);
fb.cursor_line = (fb.cursor_line + escseq_integers[0] < fb.max_character_lines - 1 ? fb.cursor_line + escseq_integers[0] : fb.max_character_lines - 1); // move cursor down N lines
accumulated_character_count = accumulated_character_startidx; // rewind the accumulator
continue; // and proceed to next character
}
else if (next_char == 'C') // CUF: move cursor forward
{
if (sscanf (&accumulated_characters
[accumulated_character_startidx
+ 1], "%d", &escseq_integers
[0]) != 1)
escseq_integers[0] = 1; // read optional value (default to 1)
if (want_debuginfo)
fprintf (stderr
, "Identified CUF:%d escape sequence\n", escseq_integers
[0]);
fb.cursor_column = (fb.cursor_column + escseq_integers[0] < fb.max_character_columns - 1 ? fb.cursor_column + escseq_integers[0] : fb.max_character_columns - 1); // move cursor right N columns
accumulated_character_count = accumulated_character_startidx; // rewind the accumulator
continue; // and proceed to next character
}
else if (next_char == 'D') // CUB: move cursor backwards
{
if (sscanf (&accumulated_characters
[accumulated_character_startidx
+ 1], "%d", &escseq_integers
[0]) != 1)
escseq_integers[0] = 1; // read optional value (default to 1)
if (want_debuginfo)
fprintf (stderr
, "Identified CUB:%d escape sequence\n", escseq_integers
[0]);
fb.cursor_column = (escseq_integers[0] > fb.cursor_column ? 0 : fb.cursor_column - escseq_integers[0]); // move cursor left N columns
accumulated_character_count = accumulated_character_startidx; // rewind the accumulator
continue; // and proceed to next character
}
else if (next_char == 'E') // CNL: move cursor at beginning of next line
{
if (sscanf (&accumulated_characters
[accumulated_character_startidx
+ 1], "%d", &escseq_integers
[0]) != 1)
escseq_integers[0] = 1; // read optional value (default to 1)
if (want_debuginfo)
fprintf (stderr
, "Identified CNL:%d escape sequence\n", escseq_integers
[0]);
fb.cursor_line = (fb.cursor_line + escseq_integers[0] < fb.max_character_lines - 1 ? fb.cursor_line + escseq_integers[0] : fb.max_character_lines - 1); // move cursor one line down
fb.cursor_column = 0; // set cursor at beginning of line
accumulated_character_count = accumulated_character_startidx; // rewind the accumulator
continue; // and proceed to next character
}
else if (next_char == 'F') // CPL: move cursor at beginning of previous line
{
if (sscanf (&accumulated_characters
[accumulated_character_startidx
+ 1], "%d", &escseq_integers
[0]) != 1)
escseq_integers[0] = 1; // read optional value (default to 1)
if (want_debuginfo)
fprintf (stderr
, "Identified CPL:%d escape sequence\n", escseq_integers
[0]);
fb.cursor_line = (escseq_integers[0] > fb.cursor_line ? 0 : fb.cursor_line - escseq_integers[0]); // move cursor one line up
fb.cursor_column = 0; // set cursor at beginning of line
accumulated_character_count = accumulated_character_startidx; // rewind the accumulator
continue; // and proceed to next character
}
else if (next_char == 'G') // CHA: move cursor at horizontal absolute position
{
if (sscanf (&accumulated_characters
[accumulated_character_startidx
+ 1], "%d", &escseq_integers
[0]) != 1)
escseq_integers[0] = 1; // read optional value (default to 1)
if (want_debuginfo)
fprintf (stderr
, "Identified CHA:%d escape sequence\n", escseq_integers
[0]);
fb.cursor_column = (escseq_integers[0] - 1 < fb.max_character_columns - 1 ? escseq_integers[0] - 1 : fb.max_character_columns - 1); // move cursor at the desired column
accumulated_character_count = accumulated_character_startidx; // rewind the accumulator
continue; // and proceed to next character
}
else if (next_char == 'H') // CUP: move cursor at absolute position
{
if (sscanf (&accumulated_characters
[accumulated_character_startidx
+ 1], "%d;%d", &escseq_integers
[0], &escseq_integers
[1]) != 1)
{
escseq_integers[1] = 1; // read optional value (default to 1)
if (sscanf (&accumulated_characters
[accumulated_character_startidx
+ 1], "%d", &escseq_integers
[0]) != 1)
escseq_integers[0] = 1; // read optional value (default to 1)
}
if (want_debuginfo)
fprintf (stderr
, "Identified CUP:%d:%d escape sequence\n", escseq_integers
[0], escseq_integers
[0]);
fb.cursor_line = (escseq_integers[0] - 1 < fb.max_character_lines - 1 ? escseq_integers[0] - 1 : fb.max_character_lines - 1); // move cursor at the desired line
fb.cursor_column = (escseq_integers[1] - 1 < fb.max_character_columns - 1 ? escseq_integers[1] - 1 : fb.max_character_columns - 1); // move cursor at the desired column
accumulated_character_count = accumulated_character_startidx; // rewind the accumulator
continue; // and proceed to next character
}
else if (next_char == 'J') // ED: erase part of display
{
if (sscanf (&accumulated_characters
[accumulated_character_startidx
+ 1], "%d", &escseq_integers
[0]) != 1)
escseq_integers[0] = 0; // read optional value (default to 1)
if (want_debuginfo)
fprintf (stderr
, "Identified ED:%d escape sequence\n", escseq_integers
[0]);
if (escseq_integers[0] == 0)
{
for (row_index = 0; row_index < CHAR_PIXELS_H; row_index++)
{
line_offset_in_framebuffer = (fb.cursor_line * CHAR_PIXELS_H + row_index) * fb.stride_in_bytes; // line offset of cursor
column_offset_in_framebuffer = (fb.cursor_column * CHAR_PIXELS_W) * fb.pixel_size_in_bytes; // column offset of cursor
memset (&fb.
virtual_address[line_offset_in_framebuffer
+ column_offset_in_framebuffer
], 0, fb.
stride_in_bytes - column_offset_in_framebuffer
); // erase from cursor to end of line
}
offset_in_framebuffer = (fb.cursor_line + 1) * CHAR_PIXELS_H * fb.stride_in_bytes; // offset of next character line
memset (&fb.
virtual_address[offset_in_framebuffer
], 0, fb.
size_in_bytes - offset_in_framebuffer
); // erase from next line to end of screen
}
else if (escseq_integers[0] == 1)
{
offset_in_framebuffer = fb.cursor_line * CHAR_PIXELS_H * fb.stride_in_bytes; // offset of beginning of current line
memset (&fb.
virtual_address[0], 0, offset_in_framebuffer
); // erase from start of screen to beginning of current line
for (row_index = 0; row_index < CHAR_PIXELS_H; row_index++)
{
line_offset_in_framebuffer = (fb.cursor_line * CHAR_PIXELS_H + row_index) * fb.stride_in_bytes; // line offset of cursor
column_offset_in_framebuffer = (fb.cursor_column * CHAR_PIXELS_W) * fb.pixel_size_in_bytes; // column offset of cursor
memset (&fb.
virtual_address[line_offset_in_framebuffer
], 0, column_offset_in_framebuffer
); // erase from beginning of line to cursor
}
}
else if ((escseq_integers[0] == 2) || (escseq_integers[0] == 3))
memset (fb.
virtual_address, 0, fb.
size_in_bytes); // clear entire scren
accumulated_character_count = accumulated_character_startidx; // rewind the accumulator
continue; // and proceed to next character
}
else if (next_char == 'K') // EL: erase part of line
{
if (sscanf (&accumulated_characters
[accumulated_character_startidx
+ 1], "%d", &escseq_integers
[0]) != 1)
escseq_integers[0] = 0; // read optional value (default to 1)
if (want_debuginfo)
fprintf (stderr
, "Identified EL:%d escape sequence\n", escseq_integers
[0]);
if (escseq_integers[0] == 0)
{
for (row_index = 0; row_index < CHAR_PIXELS_H; row_index++)
{
line_offset_in_framebuffer = (fb.cursor_line * CHAR_PIXELS_H + row_index) * fb.stride_in_bytes; // line offset of cursor
column_offset_in_framebuffer = (fb.cursor_column * CHAR_PIXELS_W) * fb.pixel_size_in_bytes; // column offset of cursor
memset (&fb.
virtual_address[line_offset_in_framebuffer
+ column_offset_in_framebuffer
], 0, fb.
stride_in_bytes - column_offset_in_framebuffer
); // erase from cursor to end of line
}
}
else if (escseq_integers[0] == 1)
{
for (row_index = 0; row_index < CHAR_PIXELS_H; row_index++)
{
line_offset_in_framebuffer = (fb.cursor_line * CHAR_PIXELS_H + row_index) * fb.stride_in_bytes; // line offset of cursor
column_offset_in_framebuffer = (fb.cursor_column * CHAR_PIXELS_W) * fb.pixel_size_in_bytes; // column offset of cursor
memset (&fb.
virtual_address[line_offset_in_framebuffer
], 0, column_offset_in_framebuffer
); // erase from beginning of line to cursor
}
}
else if ((escseq_integers[0] == 2) || (escseq_integers[0] == 3))
{
for (row_index = 0; row_index < CHAR_PIXELS_H; row_index++)
{
line_offset_in_framebuffer = (fb.cursor_line * CHAR_PIXELS_H + row_index) * fb.stride_in_bytes; // line offset of cursor
memset (&fb.
virtual_address[line_offset_in_framebuffer
], 0, fb.
stride_in_bytes); // clear entire line
}
}
accumulated_character_count = accumulated_character_startidx; // rewind the accumulator
continue; // and proceed to next character
}
else if (next_char == 'm') // SGR: select graphics rendition
{
if ( ((code_count
= sscanf (&accumulated_characters
[accumulated_character_startidx
+ 1], "%d;%d;%d;%d;%d", &escseq_integers
[0], &escseq_integers
[1], &escseq_integers
[2], &escseq_integers
[3], &escseq_integers
[4])) == 4)
|| ((code_count
= sscanf (&accumulated_characters
[accumulated_character_startidx
+ 1], "%d;%d;%d;%d", &escseq_integers
[0], &escseq_integers
[1], &escseq_integers
[2], &escseq_integers
[3])) == 4)
|| ((code_count
= sscanf (&accumulated_characters
[accumulated_character_startidx
+ 1], "%d;%d;%d", &escseq_integers
[0], &escseq_integers
[1], &escseq_integers
[2])) == 3)
|| ((code_count
= sscanf (&accumulated_characters
[accumulated_character_startidx
+ 1], "%d;%d", &escseq_integers
[0], &escseq_integers
[1])) == 2)
|| ((code_count
= sscanf (&accumulated_characters
[accumulated_character_startidx
+ 1], "%d", &escseq_integers
[0])) == 1)
|| (code_count == 0))
{
if (code_count == 0)
{
escseq_integers[0] = 0; // default to reset
code_count = 1;
}
for (code_index = 0; code_index < code_count; code_index++)
if (escseq_integers[code_index] == 0)
{
fg_color = &default_foreground_color; // reset color: default foreground
if ((bg_color->r != -1) || (bg_color->g != -1) || (bg_color->b != -1))
bg_color = &default_background_color; // reset color: default background (unless it's transparent)
fb.text_style = TEXTSTYLE_NONE; // reset effects
fb.characters_table_16x16_8x16 = characters_table_16x16_8x16_light; // normal font
}
else if (escseq_integers[code_index] == 1)
fb.text_style = (fb.text_style & ~TEXTSTYLE_DIM) | TEXTSTYLE_BOLD; // increase intensity
else if (escseq_integers[code_index] == 2)
fb.text_style = (fb.text_style & ~TEXTSTYLE_BOLD) | TEXTSTYLE_DIM; // decrease intensity
else if (escseq_integers[code_index] == 3)
fb.text_style |= TEXTSTYLE_ITALIC; // enable italics
else if (escseq_integers[code_index] == 4)
fb.text_style |= TEXTSTYLE_UNDERLINE1; // enable underline
else if (escseq_integers[code_index] == 9)
fb.text_style |= TEXTSTYLE_STRIKETHROUGH; // enable strikethrough
else if (escseq_integers[code_index] == 20)
fb.characters_table_16x16_8x16 = characters_table_16x16_8x16_bold; // gothic font
else if (escseq_integers[code_index] == 21)
fb.text_style |= TEXTSTYLE_UNDERLINE1 | TEXTSTYLE_UNDERLINE2; // enable double underline
else if (escseq_integers[code_index] == 22)
fb.text_style &= ~TEXTSTYLE_BOLD; // normal intensity
else if (escseq_integers[code_index] == 23)
{
fb.text_style &= ~TEXTSTYLE_ITALIC; // disable italics and gothic font
fb.characters_table_16x16_8x16 = characters_table_16x16_8x16_light; // normal font
}
else if (escseq_integers[code_index] == 24)
fb.text_style &= ~(TEXTSTYLE_UNDERLINE1 | TEXTSTYLE_UNDERLINE2); // disable underlines
else if (escseq_integers[code_index] == 29)
fb.text_style &= ~TEXTSTYLE_STRIKETHROUGH; // disable strikethrough
else if ((escseq_integers[code_index] >= 30) && (escseq_integers[code_index] <= 37))
fg_color = &ansi_colors_normal[escseq_integers[code_index] - 30]; // normal foreground
else if ((escseq_integers[code_index] == 38) && (code_index + 3 == code_count) && (escseq_integers[code_index + 1] == 5))
{
if (escseq_integers[code_index + 2] < 256)
{
custom_foreground_color.r = ansi_256_colors[escseq_integers[code_index + 2]].r;
custom_foreground_color.g = ansi_256_colors[escseq_integers[code_index + 2]].g;
custom_foreground_color.b = ansi_256_colors[escseq_integers[code_index + 2]].b;
fg_color = &custom_foreground_color; // 256-colors table indexed foreground color
}
else
fg_color = &transparent_color; // not in the ANSI standard ;)
}
else if ((escseq_integers[code_index] == 38) && (code_index + 5 == code_count) && (escseq_integers[code_index + 1] == 2))
{
custom_foreground_color.r = escseq_integers[code_index + 2];
custom_foreground_color.g = escseq_integers[code_index + 3];
custom_foreground_color.b = escseq_integers[code_index + 4];
fg_color = &custom_foreground_color; // 24-bit foreground color
}
else if (escseq_integers[code_index] == 39)
fg_color = &default_foreground_color; // default foreground color
else if ((escseq_integers[code_index] >= 40) && (escseq_integers[code_index] <= 47))
bg_color = &ansi_colors_normal[escseq_integers[code_index] - 40]; // normal background
else if ((escseq_integers[code_index] == 48) && (code_index + 3 == code_count) && (escseq_integers[code_index + 1] == 5))
{
if (escseq_integers[code_index + 2] < 256)
{
custom_foreground_color.r = ansi_256_colors[escseq_integers[code_index + 2]].r;
custom_foreground_color.g = ansi_256_colors[escseq_integers[code_index + 2]].g;
custom_foreground_color.b = ansi_256_colors[escseq_integers[code_index + 2]].b;
bg_color = &custom_foreground_color; // 256-colors table indexed background color
}
else
bg_color = &transparent_color; // not in the ANSI standard ;)
}
else if ((escseq_integers[code_index] == 48) && (code_index + 5 == code_count) && (escseq_integers[code_index + 1] == 2))
{
custom_background_color.r = escseq_integers[code_index + 2];
custom_background_color.g = escseq_integers[code_index + 3];
custom_background_color.b = escseq_integers[code_index + 4];
bg_color = &custom_background_color; // 24-bit background color
}
else if (escseq_integers[code_index] == 49)
bg_color = &default_background_color; // default background color
else if ((escseq_integers[code_index] >= 90) && (escseq_integers[code_index] <= 97))
fg_color = &ansi_colors_bright[escseq_integers[code_index] - 90]; // bright foreground
else if ((escseq_integers[code_index] >= 100) && (escseq_integers[code_index] <= 107))
bg_color = &ansi_colors_bright[escseq_integers[code_index] - 100]; // bright background
}
if (want_debuginfo)
fprintf (stderr
, "Identified SGR (color) escape sequence\n");
accumulated_character_count = accumulated_character_startidx; // rewind the accumulator
continue; // and proceed to next character
}
else
accumulated_characters[accumulated_character_count++] = next_char; // not a supported ANSI escape sequence, restore terminator character into the accumulator
}
}
} // end if "accumulator is not full yet"
} // end if "current character is ESC"
// compute row and column in character table
char_row_in_chartable = current_char / 16;
char_col_in_chartable = current_char % 16;
// if debug output is enabled, print the character that's about to be written
if (want_debuginfo)
fprintf (stderr
, "Will draw char '%c' at screen pos %d,%d at position in the table: row=%zd col=%zd\n", current_char
, fb.
cursor_line, fb.
cursor_column, char_row_in_chartable
, char_col_in_chartable
);
// for each of the 16 rows of this character, then for each of the 16 columns of it...
for (char_cury = 0; char_cury < CHAR_PIXELS_H; char_cury++)
{
// compute the offset of the concerned line in the framebuffer
line_offset_in_framebuffer = ((CHAR_PIXELS_H * fb.cursor_line) + char_cury) * fb.stride_in_bytes;
for (char_curx = 0; char_curx < CHAR_PIXELS_W; char_curx++)
{
// compute pixel offset in character table and determine if this pixel should be lit
offset_in_chartable = (char_row_in_chartable * (16 * CHAR_PIXELS_W) * CHAR_PIXELS_H) + (char_cury * (16 * CHAR_PIXELS_W)) + char_col_in_chartable * CHAR_PIXELS_W + char_curx;
assert (offset_in_chartable
< sizeof (characters_table_16x16_8x16_light
) && "offset in chartable beyond end of table");
is_pixel_lit = (fb.characters_table_16x16_8x16[offset_in_chartable] != 0);
// if debug output is enabled, print whether this pixel is lit
if (want_debuginfo)
fprintf (stderr
, "%c", (is_pixel_lit
? 'B' : ' '));
// compute the offset of the concerned column in the framebuffer
column_offset_in_framebuffer = ((CHAR_PIXELS_W * fb.cursor_column) + char_curx) * fb.pixel_size_in_bytes;
if (fb.text_style & TEXTSTYLE_ITALIC)
{
// characters which have the italic style are bent rightways (TODO: smooth grayscale blending instead of blocky Bresenham here)
if (char_cury < 1 * CHAR_PIXELS_H / 4)
{
if (line_offset_in_framebuffer + column_offset_in_framebuffer + 3 * fb.pixel_size_in_bytes < fb.size_in_bytes)
column_offset_in_framebuffer += 3 * fb.pixel_size_in_bytes;
}
else if (char_cury < 2 * CHAR_PIXELS_H / 4)
{
if (line_offset_in_framebuffer + column_offset_in_framebuffer + 2 * fb.pixel_size_in_bytes < fb.size_in_bytes)
column_offset_in_framebuffer += 2 * fb.pixel_size_in_bytes;
}
else if (char_cury < 3 * CHAR_PIXELS_H / 4)
{
if (line_offset_in_framebuffer + column_offset_in_framebuffer + 1 * fb.pixel_size_in_bytes < fb.size_in_bytes)
column_offset_in_framebuffer += 1 * fb.pixel_size_in_bytes;
}
}
// compute the framebuffer offset of this pixel
offset_in_framebuffer = line_offset_in_framebuffer + column_offset_in_framebuffer;
assert (offset_in_framebuffer
< fb.
size_in_bytes && "offset in framebuffer beyond end of buffer");
// smack this bitch up?
if (is_pixel_lit
|| ((fb.text_style & TEXTSTYLE_STRIKETHROUGH) && (char_cury == CHAR_PIXELS_H / 2))
|| ((fb.text_style & TEXTSTYLE_UNDERLINE2) && (char_cury == CHAR_PIXELS_H - 3))
|| ((fb.text_style & TEXTSTYLE_UNDERLINE1) && (char_cury == CHAR_PIXELS_H - 1)))
{
if (fg_color->r != -1) // is its red component NOT an explicit transparent color ?
{
final_taint = fg_color->r;
if (fb.text_style & TEXTSTYLE_BOLD)
final_taint += 76; // if the current character style is bold, increase lightness
else if (fb.text_style & TEXTSTYLE_DIM)
final_taint -= 76; // else if it's dim, decrease lightness
fb.virtual_address[offset_in_framebuffer + fb.pixel_indices.r] = (final_taint < 0 ? 0 : (final_taint < 255 ? final_taint : 255)); // clamp it between 0 and 255 and paint it (red component)
}
if (fg_color->g != -1) // is its green component NOT an explicit transparent color ?
{
final_taint = fg_color->g;
if (fb.text_style & TEXTSTYLE_BOLD)
final_taint += 76;
else if (fb.text_style & TEXTSTYLE_DIM)
final_taint -= 76;
fb.virtual_address[offset_in_framebuffer + fb.pixel_indices.g] = (final_taint < 0 ? 0 : (final_taint < 255 ? final_taint : 255)); // clamp it between 0 and 255 and paint it (blue component)
}
if (fg_color->b != -1) // is its blue component NOT an explicit transparent color ?
{
final_taint = fg_color->b;
if (fb.text_style & TEXTSTYLE_BOLD)
final_taint += 76;
else if (fb.text_style & TEXTSTYLE_DIM)
final_taint -= 76;
fb.virtual_address[offset_in_framebuffer + fb.pixel_indices.b] = (final_taint < 0 ? 0 : (final_taint < 255 ? final_taint : 255)); // clamp it between 0 and 255 and paint it (green component)
}
}
else // this pixel should be extinct
{
if (bg_color->r != -1)
fb.virtual_address[offset_in_framebuffer + fb.pixel_indices.r] = (bg_color->r & 0xff); // paint background color (red component) unless it's transparent
if (bg_color->g != -1)
fb.virtual_address[offset_in_framebuffer + fb.pixel_indices.g] = (bg_color->g & 0xff); // paint background color (green component) unless it's transparent
if (bg_color->b != -1)
fb.virtual_address[offset_in_framebuffer + fb.pixel_indices.b] = (bg_color->b & 0xff); // paint background color (blue component) unless it's transparent
}
}
// if debug output is enabled, print the framebuffer offsets concerned at the end of the character scanline
if (want_debuginfo)
fprintf (stderr
, "| offsets 0x%zx-0x%zx\n", line_offset_in_framebuffer
+ ((CHAR_PIXELS_W
* fb.
cursor_column) + 0) * fb.
pixel_size_in_bytes, line_offset_in_framebuffer
+ ((CHAR_PIXELS_W
* fb.
cursor_column) + char_curx
) * fb.
pixel_size_in_bytes);
}
// advance cursor by one column, and wraparound if necessary
if (is_backspace)
is_backspace = 0; // that was a backspace: don't advance this time, but remember to advance next time
else
{
fb.cursor_column++; // advance the cursor by one column
if (fb.cursor_column == fb.max_character_columns)
{
fb.cursor_line++; // wraparound: move one line down
fb.cursor_column = 0; // and position the cursor at the beginning of the line
}
}
// if we should make the console scroll up, do so
if (fb.cursor_line == fb.max_character_lines)
{
offset_in_framebuffer = CHAR_PIXELS_H * fb.stride_in_bytes; // offset of second character line
memmove (&fb.
virtual_address[0], &fb.
virtual_address[offset_in_framebuffer
], fb.
size_in_bytes - offset_in_framebuffer
); // move (max - 1) lines up
offset_in_framebuffer = (fb.max_character_lines - 1) * CHAR_PIXELS_H * fb.stride_in_bytes; // offset of last character line
memset (&fb.
virtual_address[offset_in_framebuffer
], 0, fb.
size_in_bytes - offset_in_framebuffer
); // erase last character line
fb.cursor_line = fb.max_character_lines - 1; // and jump back it
}
}
// finished, cleanup
munmap (fb.virtual_address, fb.size_in_bytes);
exit (EXIT_SUCCESS
); // *stamp* glory to Arstotzka!
}