Created
May 31, 2017 06:57
-
-
Save wuuff/dfbeaa0bd67cd0e0e2007da4bedd4012 to your computer and use it in GitHub Desktop.
CHIP-8 interpreter for Pokitto (WIP)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
//#include <SDL/SDL.h> | |
#include "trip8.h" | |
#include "chip8.h" | |
unsigned char chip8_fontset[80] = | |
{ | |
0xF0, 0x90, 0x90, 0x90, 0xF0, // 0 | |
0x20, 0x60, 0x20, 0x20, 0x70, // 1 | |
0xF0, 0x10, 0xF0, 0x80, 0xF0, // 2 | |
0xF0, 0x10, 0xF0, 0x10, 0xF0, // 3 | |
0x90, 0x90, 0xF0, 0x10, 0x10, // 4 | |
0xF0, 0x80, 0xF0, 0x10, 0xF0, // 5 | |
0xF0, 0x80, 0xF0, 0x90, 0xF0, // 6 | |
0xF0, 0x10, 0x20, 0x40, 0x40, // 7 | |
0xF0, 0x90, 0xF0, 0x90, 0xF0, // 8 | |
0xF0, 0x90, 0xF0, 0x10, 0xF0, // 9 | |
0xF0, 0x90, 0xF0, 0x90, 0x90, // A | |
0xE0, 0x90, 0xE0, 0x90, 0xE0, // B | |
0xF0, 0x80, 0x80, 0x80, 0xF0, // C | |
0xE0, 0x90, 0x90, 0x90, 0xE0, // D | |
0xF0, 0x80, 0xF0, 0x80, 0xF0, // E | |
0xF0, 0x80, 0xF0, 0x80, 0x80 // F | |
}; | |
//#undef main | |
//0x000-0x1FF - Chip 8 interpreter (contains font set in emu) | |
//0x050-0x0A0 - Used for the built in 4x5 pixel font set (0-F) | |
//0x200-0xFFF - Program ROM and work RAM | |
void chip8_initialize(C8 *); | |
void chip8_execute(C8 *); | |
//void chip8_draw(C8 *); | |
//void chip8_prec(char *, SDL_Event *); | |
//void chip8_prepare(char *); | |
//void chip8_start(); | |
/*void chip8_start(){ | |
char name[100]; | |
printf("Enter the name of the game: "); | |
scanf("%s", name); | |
chip8_prepare(name); | |
}*/ | |
/*void chip8_prepare(char * name){ | |
C8 CH8; | |
chip8_initialize(&CH8, name); | |
Uint8 * keys; | |
//SDL_Event event; | |
//SDL_Init(SDL_INIT_EVERYTHING); | |
//SDL_SetVideoMode(SCREEN_W, SCREEN_H, SCREEN_BPP, SDL_HWSURFACE | SDL_DOUBLEBUF); | |
for(;;){ | |
if(SDL_PollEvent (&event)) | |
continue; | |
chip8_execute(&CH8); | |
chip8_draw(&CH8); | |
chip8_prec(name, &event); | |
} | |
}*/ | |
void chip8_initialize(C8 * CH8){ | |
int i; | |
memcpy(CH8->memory+0x200,rom, sizeof(rom)); // load game into memory | |
printf("size of rom %u\n", sizeof(rom)); | |
//printf("Start of rom: >%02x< >%02x< >%02x<\n", rom[0],rom[1],rom[2]); | |
//printf("Start of mem: >%02x< >%02x< >%02x<\n", *(CH8->memory+0x200),*(CH8->memory+0x201),*(CH8->memory+0x202)); | |
//scanf((char*)&i); | |
for(i = 0; i < 80; ++i) | |
CH8->memory[i] = chip8_fontset[i]; // load fontset into memory | |
memset(CH8->graphics, 0, sizeof(CH8->graphics)); // clear graphics | |
memset(CH8->stack, 0, sizeof(CH8->stack)); // clear stack | |
memset(CH8->V, 0, sizeof(CH8->V)); // clear chip8 registers | |
CH8->pc = 0x200; | |
CH8->sp &= 0; | |
CH8->opcode = 0x200; | |
} | |
/*void chip8_draw(C8 * CH8){ | |
int i, j; | |
SDL_Surface * surface = SDL_GetVideoSurface(); | |
SDL_LockSurface(surface); | |
Uint32 * screen = (Uint32 *)surface->pixels; | |
memset (screen,0,surface->w*surface->h*sizeof(Uint32)); | |
for (i = 0; i < SCREEN_H; i++) | |
for (j = 0; j < SCREEN_W; j++){ | |
screen[j+i*surface->w] = CH8->graphics[(j/10)+(i/10)*64] ? 0xFFFFFFFF : 0; | |
} | |
SDL_UnlockSurface(surface); | |
SDL_Flip(surface); | |
SDL_Delay(15); | |
}*/ | |
void chip8_timers(C8 * CH8){ | |
if(CH8->delay_timer > 0) | |
CH8->delay_timer--; | |
if(CH8->sound_timer > 0) | |
CH8->sound_timer--; | |
if(CH8->sound_timer != 0) | |
;//printf("%c", 7); | |
} | |
/*void chip8_prec(char * name, SDL_Event * event){ | |
Uint8 * keys = SDL_GetKeyState(NULL); | |
if(keys[SDLK_ESCAPE]) | |
exit(1); | |
if(keys[SDLK_r]) | |
chip8_prepare(name); | |
if(keys[SDLK_c]) | |
chip8_start(); | |
if(keys[SDLK_p]){ | |
while(1){ | |
if(SDL_PollEvent(event)){ | |
keys = SDL_GetKeyState(NULL); | |
if(keys[SDLK_ESCAPE]) | |
exit(1); | |
if(keys[SDLK_u]) | |
break; | |
} | |
} | |
} | |
}*/ | |
void chip8_execute(C8 * CH8){ | |
//Uint8 * keys; | |
int y, x, vx, vy, times, i; | |
unsigned height, pixel; | |
for(times = 0; times < 10; times++){ | |
CH8->opcode = CH8->memory[CH8->pc] << 8 | CH8->memory[CH8->pc + 1]; | |
printf ("Executing %04X at %04X , I:%02X SP:%02X V0:%02X V1:%02X VF:%02X\n", CH8->opcode, CH8->pc, CH8->I, CH8->sp, CH8->V[0], CH8->V[1], CH8->V[0xF]); | |
switch(CH8->opcode & 0xF000){ | |
case 0x0000: | |
switch(CH8->opcode & 0x000F){ | |
case 0x0000: // 00E0: Clears the screen | |
memset(CH8->graphics, 0, sizeof(CH8->graphics)); | |
CH8->pc += 2; | |
break; | |
case 0x000E: // 00EE: Returns from subroutine | |
CH8->pc = CH8->stack[(--CH8->sp)&0xF] + 2; | |
break; | |
default: printf("Wrong opcode: %X\n", CH8->opcode); getchar(); | |
} | |
break; | |
case 0x1000: // 1NNN: Jumps to address NNN | |
CH8->pc = CH8->opcode & 0x0FFF; | |
break; | |
case 0x2000: // 2NNN: Calls subroutine at NNN | |
CH8->stack[(CH8->sp++)&0xF] = CH8->pc; | |
CH8->pc = CH8->opcode & 0x0FFF; | |
break; | |
case 0x3000: // 3XNN: Skips the next instruction if VX equals NN | |
if(CH8->V[(CH8->opcode & 0x0F00) >> 8] == (CH8->opcode & 0x00FF)) | |
CH8->pc += 4; | |
else | |
CH8->pc += 2; | |
break; | |
case 0x4000: // 4XNN: Skips the next instruction if VX doesn't equal NN | |
if(CH8->V[(CH8->opcode & 0x0F00) >> 8] != (CH8->opcode & 0x00FF)) | |
CH8->pc += 4; | |
else | |
CH8->pc += 2; | |
break; | |
case 0x5000: // 5XY0: Skips the next instruction if VX equals VY | |
if(CH8->V[(CH8->opcode & 0x0F00) >> 8] == CH8->V[(CH8->opcode & 0x00F0) >> 4]) | |
CH8->pc += 4; | |
else | |
CH8->pc += 2; | |
break; | |
case 0x6000: // 6XNN: Sets VX to NN | |
CH8->V[(CH8->opcode & 0x0F00) >> 8] = (CH8->opcode & 0x00FF); | |
CH8->pc += 2; | |
break; | |
case 0x7000: // 7XNN: Adds NN to VX | |
CH8->V[(CH8->opcode & 0x0F00) >> 8] += (CH8->opcode & 0x00FF); | |
CH8->pc += 2; | |
break; | |
case 0x8000: | |
switch(CH8->opcode & 0x000F){ | |
case 0x0000: // 8XY0: Sets VX to the value of VY | |
CH8->V[(CH8->opcode & 0x0F00) >> 8] = CH8->V[(CH8->opcode & 0x00F0) >> 4]; | |
CH8->pc += 2; | |
break; | |
case 0x0001: // 8XY1: Sets VX to VX or VY | |
CH8->V[(CH8->opcode & 0x0F00) >> 8] = CH8->V[(CH8->opcode & 0x0F00) >> 8] | CH8->V[(CH8->opcode & 0x00F0) >> 4]; | |
CH8->pc += 2; | |
break; | |
case 0x0002: // 8XY2: Sets VX to VX and VY | |
CH8->V[(CH8->opcode & 0x0F00) >> 8] = CH8->V[(CH8->opcode & 0x0F00) >> 8] & CH8->V[(CH8->opcode & 0x00F0) >> 4]; | |
CH8->pc += 2; | |
break; | |
case 0x0003: // 8XY3: Sets VX to VX xor VY | |
CH8->V[(CH8->opcode & 0x0F00) >> 8] = CH8->V[(CH8->opcode & 0x0F00) >> 8] ^ CH8->V[(CH8->opcode & 0x00F0) >> 4]; | |
CH8->pc += 2; | |
break; | |
case 0x0004: // 8XY4: Adds VY to VX. VF is set to 1 when there's a carry, and to 0 when there isn't | |
if(((int)CH8->V[(CH8->opcode & 0x0F00) >> 8 ] + (int)CH8->V[(CH8->opcode & 0x00F0) >> 4]) < 256) | |
pixel = 0;//CH8->V[0xF] &= 0; | |
else | |
pixel = 1;//CH8->V[0xF] = 1; | |
CH8->V[(CH8->opcode & 0x0F00) >> 8] += CH8->V[(CH8->opcode & 0x00F0) >> 4]; | |
CH8->V[0xF] = pixel; | |
CH8->pc += 2; | |
break; | |
case 0x0005: // 8XY5: VY is subtracted from VX. VF is set to 0 when there's a borrow, and 1 when there isn't | |
if(((int)CH8->V[(CH8->opcode & 0x0F00) >> 8 ] - (int)CH8->V[(CH8->opcode & 0x00F0) >> 4]) >= 0) | |
pixel = 1;//CH8->V[0xF] = 1; | |
else | |
pixel = 0;//CH8->V[0xF] &= 0; | |
CH8->V[(CH8->opcode & 0x0F00) >> 8] -= CH8->V[(CH8->opcode & 0x00F0) >> 4]; | |
CH8->V[0xF] = pixel; | |
CH8->pc += 2; | |
break; | |
case 0x0006: // 8XY6: Shifts VX right by one. VF is set to the value of the least significant bit of VX before the shift | |
CH8->V[0xF] = CH8->V[(CH8->opcode & 0x0F00) >> 8] & 7; | |
CH8->V[(CH8->opcode & 0x0F00) >> 8] = CH8->V[(CH8->opcode & 0x0F00) >> 8] >> 1; | |
CH8->pc += 2; | |
break; | |
case 0x0007: // 8XY7: Sets VX to VY minus VX. VF is set to 0 when there's a borrow, and 1 when there isn't | |
if(((int)CH8->V[(CH8->opcode & 0x00F0) >> 4] - (int)CH8->V[(CH8->opcode & 0x0F00) >> 8]) >= 0) | |
pixel = 1;//CH8->V[0xF] = 1; | |
else | |
pixel = 0;//CH8->V[0xF] &= 0; | |
CH8->V[(CH8->opcode & 0x0F00) >> 8] = CH8->V[(CH8->opcode & 0x00F0) >> 4] - CH8->V[(CH8->opcode & 0x0F00) >> 8]; | |
CH8->V[0xF] = pixel; | |
CH8->pc += 2; | |
break; | |
case 0x000E: // 8XYE: Shifts VX left by one. VF is set to the value of the most significant bit of VX before the shift | |
CH8->V[0xF] = CH8->V[(CH8->opcode & 0x0F00) >> 8] >> 7; | |
CH8->V[(CH8->opcode & 0x0F00) >> 8] = CH8->V[(CH8->opcode & 0x0F00) >> 8] << 1; | |
printf("It is %2x\n",CH8->V[(CH8->opcode & 0x0F00) >> 8]); | |
CH8->pc += 2; | |
break; | |
default: printf("Wrong opcode: %X\n", CH8->opcode); getchar(); | |
} | |
break; | |
case 0x9000: // 9XY0: Skips the next instruction if VX doesn't equal VY | |
if(CH8->V[(CH8->opcode & 0x0F00) >> 8] != CH8->V[(CH8->opcode & 0x00F0) >> 4]) | |
CH8->pc += 4; | |
else | |
CH8->pc += 2; | |
break; | |
case 0xA000: // ANNN: Sets I to the address NNN | |
CH8->I = CH8->opcode & 0x0FFF; | |
CH8->pc += 2; | |
break; | |
case 0xB000: // BNNN: Jumps to the address NNN plus V0 | |
CH8->pc = (CH8->opcode & 0x0FFF) + CH8->V[0]; | |
break; | |
case 0xC000: // CXNN: Sets VX to a random number and NN | |
CH8->V[(CH8->opcode & 0x0F00) >> 8] = rand() & (CH8->opcode & 0x00FF); | |
CH8->pc += 2; | |
break; | |
case 0xD000: // DXYN: Draws a sprite at coordinate (VX, VY) that has a width of 8 pixels and a height of N pixels | |
vx = CH8->V[(CH8->opcode & 0x0F00) >> 8]; | |
vy = CH8->V[(CH8->opcode & 0x00F0) >> 4]; | |
height = CH8->opcode & 0x000F; | |
CH8->V[0xF] &= 0; | |
for(y = 0; y < height; y++){ | |
pixel = CH8->memory[CH8->I + y]; | |
for(x = 0; x < 8; x++){ | |
if(pixel & (0x80 >> x)){ | |
if(CH8->graphics[x+vx+(y+vy)*64]) | |
CH8->V[0xF] = 1; | |
CH8->graphics[x+vx+(y+vy)*64] ^= 1; | |
} | |
} | |
} | |
CH8->pc += 2; | |
break; | |
case 0xE000: | |
switch(CH8->opcode & 0x000F){ | |
case 0x000E: // EX9E: Skips the next instruction if the key stored in VX is pressed | |
//TODO: HANDLE INPUT | |
//keys = SDL_GetKeyState(NULL); | |
//if(keys[keymap[CH8->V[(CH8->opcode & 0x0F00) >> 8]]]) | |
// CH8->pc += 4; | |
//else | |
CH8->pc += 2; | |
break; | |
case 0x0001: // EXA1: Skips the next instruction if the key stored in VX isn't pressed | |
//TODO: HANDLE INPUT | |
//keys = SDL_GetKeyState(NULL); | |
//if(!keys[keymap[CH8->V[(CH8->opcode & 0x0F00) >> 8]]]) | |
CH8->pc += 4; | |
//else | |
// CH8->pc += 2; | |
break; | |
default: printf("Wrong opcode: %X\n", CH8->opcode); getchar(); | |
} | |
break; | |
case 0xF000: | |
switch(CH8->opcode & 0x00FF){ | |
case 0x0007: // FX07: Sets VX to the value of the delay timer | |
CH8->V[(CH8->opcode & 0x0F00) >> 8] = CH8->delay_timer; | |
CH8->pc += 2; | |
break; | |
case 0x000A: // FX0A: A key press is awaited, and then stored in VX | |
//TODO: HANDLE INPUT | |
/*keys = SDL_GetKeyState(NULL); | |
for(i = 0; i < 0x10; i++) | |
if(keys[keymap[i]]){ | |
CH8->V[(CH8->opcode & 0x0F00) >> 8] = i; | |
CH8->pc += 2; | |
}*/CH8->pc += 2; | |
break; | |
case 0x0015: // FX15: Sets the delay timer to VX | |
CH8->delay_timer = CH8->V[(CH8->opcode & 0x0F00) >> 8]; | |
CH8->pc += 2; | |
break; | |
case 0x0018: // FX18: Sets the sound timer to VX | |
CH8->sound_timer = CH8->V[(CH8->opcode & 0x0F00) >> 8]; | |
CH8->pc += 2; | |
break; | |
case 0x001E: // FX1E: Adds VX to I | |
CH8->I += CH8->V[(CH8->opcode & 0x0F00) >> 8]; | |
CH8->pc += 2; | |
break; | |
case 0x0029: // FX29: Sets I to the location of the sprite for the character in VX. Characters 0-F (in hexadecimal) are represented by a 4x5 font | |
CH8->I = CH8->V[(CH8->opcode & 0x0F00) >> 8] * 5; | |
CH8->pc += 2; | |
break; | |
case 0x0033: // FX33: Stores the Binary-coded decimal representation of VX, with the most significant of three digits at the address in I, the middle digit at I plus 1, and the least significant digit at I plus 2 | |
CH8->memory[CH8->I] = CH8->V[(CH8->opcode & 0x0F00) >> 8] / 100; | |
CH8->memory[CH8->I+1] = (CH8->V[(CH8->opcode & 0x0F00) >> 8] / 10) % 10; | |
CH8->memory[CH8->I+2] = CH8->V[(CH8->opcode & 0x0F00) >> 8] % 10; | |
CH8->pc += 2; | |
break; | |
case 0x0055: // FX55: Stores V0 to VX in memory starting at address I | |
for(i = 0; i <= ((CH8->opcode & 0x0F00) >> 8); i++) | |
CH8->memory[CH8->I+i] = CH8->V[i]; | |
CH8->pc += 2; | |
break; | |
case 0x0065: //FX65: Fills V0 to VX with values from memory starting at address I | |
for(i = 0; i <= ((CH8->opcode & 0x0F00) >> 8); i++) | |
CH8->V[i] = CH8->memory[CH8->I + i]; | |
CH8->pc += 2; | |
break; | |
default: printf("Wrong opcode: %X\n", CH8->opcode); getchar(); | |
} | |
break; | |
default: printf("Wrong opcode: %X\n", CH8->opcode); getchar(); | |
} | |
chip8_timers(CH8); | |
} | |
} | |
/*int main(){ | |
chip8_start(); | |
return 0; | |
}*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#ifndef CHIP8 | |
#define CHIP8 | |
#define memsize 4096 | |
#define SCREEN_W 640 | |
#define SCREEN_H 320 | |
#define SCREEN_BPP 32 | |
#define W 64 | |
#define H 32 | |
/*static int keymap[0x10] = { | |
SDLK_0, | |
SDLK_1, | |
SDLK_2, | |
SDLK_3, | |
SDLK_4, | |
SDLK_5, | |
SDLK_6, | |
SDLK_7, | |
SDLK_8, | |
SDLK_9, | |
SDLK_a, | |
SDLK_b, | |
SDLK_c, | |
SDLK_d, | |
SDLK_e, | |
SDLK_f | |
};*/ | |
typedef struct chip8{ | |
//FILE * game; | |
unsigned short opcode; | |
unsigned char memory[memsize]; | |
unsigned char V[0x10]; | |
unsigned short I; | |
unsigned short pc; | |
unsigned char graphics[64 * 32]; | |
unsigned char delay_timer; | |
unsigned char sound_timer; | |
unsigned short stack[0x10]; | |
unsigned short sp; | |
unsigned char key[0x10]; | |
} C8; | |
#endif // CHIP8 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "pokitto.h" | |
Pokitto::Core game; | |
//#define SCREEN_W 110 | |
//#define SCREEN_H 88 | |
extern "C" { | |
#include "chip8.h" | |
void chip8_initialize(C8* CH8); | |
void chip8_execute(C8* CH8); | |
//void chip8_draw(C8* CH8); | |
} | |
C8 CH8; | |
//Just do drawing here so we don't have to add pokitto drawing | |
//functions to the chip8 file | |
void draw(C8* CH8){ | |
int i, j; | |
for (i = 0; i < 32/*SCREEN_H*/; i++) | |
for (j = 0; j < 64/*SCREEN_W*/; j++){ | |
if( CH8->graphics[(j)+(i)*64] && j < 110 && i < 88){ | |
game.display.drawPixel(j,i); | |
} | |
} | |
} | |
int main () { | |
game.begin(); | |
chip8_initialize(&CH8); | |
int counter = 0; | |
while (game.isRunning()) { | |
if (game.update()) { | |
game.display.clear(); | |
game.display.print(counter); | |
counter++; | |
chip8_execute(&CH8); | |
draw(&CH8); | |
} | |
} | |
return 1; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
char rom[] = {0x12, 0x14, 0x52, 0x45, 0x56, 0x49, 0x56, 0x41, 0x4c, | |
0x53, 0x54, 0x55, 0x44, 0x49, 0x4f, 0x53, 0x32, 0x30, | |
0x30, 0x38, 0x00, 0xe0, 0x6d, 0x20, 0xfd, 0x15, 0x23, | |
0xbe, 0x23, 0xc6, 0x6d, 0x40, 0xfd, 0x15, 0x23, 0xbe, | |
0x23, 0xc6, 0x6d, 0x20, 0xfd, 0x15, 0x23, 0xbe, 0xa4, | |
0x83, 0x24, 0x48, 0x6d, 0x80, 0xfd, 0x15, 0x23, 0xbe, | |
0xa4, 0x83, 0x24, 0x48, 0xa5, 0x83, 0x24, 0x48, 0x6d, | |
0x00, 0x6b, 0x00, 0x22, 0xc6, 0x4b, 0x00, 0x22, 0xe4, | |
0x4b, 0x01, 0x23, 0x86, 0x4b, 0x02, 0x22, 0xec, 0x4b, | |
0x03, 0x23, 0x86, 0x4b, 0x04, 0x22, 0xf4, 0x4b, 0x05, | |
0x23, 0x86, 0x60, 0x01, 0xf0, 0x15, 0x23, 0xbe, 0x7d, | |
0x01, 0x60, 0x3f, 0x8c, 0xd0, 0x8c, 0x02, 0x4c, 0x00, | |
0x22, 0x70, 0x12, 0x44, 0x4b, 0x00, 0x22, 0x90, 0x4b, | |
0x01, 0x22, 0xcc, 0x4b, 0x02, 0x22, 0xa2, 0x4b, 0x03, | |
0x22, 0xd4, 0x4b, 0x04, 0x22, 0xb4, 0x4b, 0x05, 0x22, | |
0xdc, 0x7b, 0x01, 0x4b, 0x06, 0x6b, 0x00, 0x00, 0xee, | |
0x23, 0x08, 0xc9, 0x03, 0x89, 0x94, 0x89, 0x94, 0x89, | |
0x94, 0x89, 0x94, 0x89, 0x94, 0x23, 0x66, 0x00, 0xee, | |
0x22, 0xfc, 0xc9, 0x03, 0x89, 0x94, 0x89, 0x94, 0x89, | |
0x94, 0x89, 0x94, 0x89, 0x94, 0x23, 0x66, 0x00, 0xee, | |
0x23, 0x18, 0xc9, 0x03, 0x89, 0x94, 0x89, 0x94, 0x89, | |
0x94, 0x89, 0x94, 0x89, 0x94, 0x23, 0x66, 0x00, 0xee, | |
0x6e, 0x00, 0x23, 0x08, 0x00, 0xee, 0x23, 0x66, 0x6e, | |
0x00, 0x22, 0xfc, 0x00, 0xee, 0x23, 0x66, 0x6e, 0x00, | |
0x23, 0x18, 0x00, 0xee, 0x23, 0x66, 0x6e, 0x00, 0x23, | |
0x08, 0x00, 0xee, 0x23, 0x08, 0x7e, 0x03, 0x23, 0x08, | |
0x00, 0xee, 0x22, 0xfc, 0x7e, 0x02, 0x22, 0xfc, 0x00, | |
0xee, 0x23, 0x18, 0x7e, 0x02, 0x23, 0x18, 0x00, 0xee, | |
0x6c, 0x00, 0x23, 0x3a, 0x23, 0x3a, 0x23, 0x3a, 0x23, | |
0x3a, 0x00, 0xee, 0x6c, 0x00, 0x23, 0x24, 0x23, 0x24, | |
0x23, 0x24, 0x23, 0x24, 0x23, 0x24, 0x23, 0x24, 0x00, | |
0xee, 0x6c, 0x00, 0x23, 0x50, 0x23, 0x50, 0x23, 0x50, | |
0x23, 0x50, 0x00, 0xee, 0xa6, 0x83, 0xfe, 0x1e, 0xfe, | |
0x1e, 0xfe, 0x1e, 0xfe, 0x1e, 0xfc, 0x1e, 0xf1, 0x65, | |
0xa4, 0x7c, 0xd0, 0x14, 0x7c, 0x02, 0x00, 0xee, 0xa9, | |
0x83, 0xfe, 0x1e, 0xfe, 0x1e, 0xfe, 0x1e, 0xfe, 0x1e, | |
0xfc, 0x1e, 0xf1, 0x65, 0xa4, 0x7c, 0xd0, 0x14, 0x7c, | |
0x02, 0x00, 0xee, 0xab, 0x83, 0xfe, 0x1e, 0xfe, 0x1e, | |
0xfe, 0x1e, 0xfe, 0x1e, 0xfc, 0x1e, 0xf1, 0x65, 0xa4, | |
0x7c, 0xd0, 0x14, 0x7c, 0x02, 0x00, 0xee, 0x6c, 0x00, | |
0x60, 0x1f, 0x8a, 0xd0, 0x8a, 0xc4, 0x8a, 0x02, 0x8a, | |
0x94, 0xad, 0x83, 0xfa, 0x1e, 0xfa, 0x1e, 0xf1, 0x65, | |
0xa4, 0x80, 0xd0, 0x13, 0x7c, 0x01, 0x3c, 0x08, 0x13, | |
0x68, 0x00, 0xee, 0x60, 0x1f, 0x8a, 0xd0, 0x8a, 0x02, | |
0x8a, 0x94, 0xad, 0x83, 0xfa, 0x1e, 0xfa, 0x1e, 0xf1, | |
0x65, 0xa4, 0x80, 0xd0, 0x13, 0x60, 0x1f, 0x8a, 0xd0, | |
0x7a, 0x08, 0x8a, 0x02, 0x8a, 0x94, 0xad, 0x83, 0xfa, | |
0x1e, 0xfa, 0x1e, 0xf1, 0x65, 0xa4, 0x80, 0xd0, 0x13, | |
0x00, 0xee, 0xa6, 0x83, 0xfd, 0x1e, 0xf0, 0x65, 0x30, | |
0x00, 0xf0, 0x18, 0x00, 0xee, 0xf0, 0x07, 0x30, 0x00, | |
0x13, 0xbe, 0x00, 0xee, 0x6d, 0x04, 0x61, 0x0c, 0x60, | |
0x1c, 0x62, 0x12, 0xa4, 0x1e, 0xf2, 0x1e, 0xd0, 0x16, | |
0xfd, 0x15, 0x23, 0xbe, 0x60, 0x14, 0x62, 0x0c, 0xa4, | |
0x1e, 0xf2, 0x1e, 0xd0, 0x16, 0x60, 0x24, 0x62, 0x18, | |
0xa4, 0x1e, 0xf2, 0x1e, 0xd0, 0x16, 0xfd, 0x15, 0x23, | |
0xbe, 0x60, 0x0c, 0x62, 0x06, 0xa4, 0x1e, 0xf2, 0x1e, | |
0xd0, 0x16, 0x60, 0x2c, 0x62, 0x1e, 0xa4, 0x1e, 0xf2, | |
0x1e, 0xd0, 0x16, 0xfd, 0x15, 0x23, 0xbe, 0xa4, 0x1e, | |
0x60, 0x04, 0xd0, 0x16, 0x60, 0x34, 0x62, 0x24, 0xa4, | |
0x1e, 0xf2, 0x1e, 0xd0, 0x16, 0xfd, 0x15, 0x23, 0xbe, | |
0x00, 0xee, 0x00, 0x00, 0x0c, 0x11, 0x11, 0x10, 0x00, | |
0x00, 0x95, 0x55, 0x95, 0xcd, 0x00, 0x00, 0x53, 0x55, | |
0x55, 0x33, 0x40, 0x40, 0x44, 0x42, 0x41, 0x46, 0x00, | |
0x40, 0x6a, 0x4a, 0x4a, 0x46, 0x00, 0x20, 0x69, 0xaa, | |
0xaa, 0x69, 0x00, 0x00, 0x20, 0x90, 0x88, 0x30, 0x64, | |
0x01, 0x65, 0x07, 0x62, 0x00, 0x63, 0x00, 0x60, 0x00, | |
0x81, 0x30, 0xd0, 0x11, 0x71, 0x08, 0xf4, 0x1e, 0xd0, | |
0x11, 0x71, 0x08, 0xf4, 0x1e, 0xd0, 0x11, 0x71, 0x08, | |
0xf4, 0x1e, 0xd0, 0x11, 0xf4, 0x1e, 0x70, 0x08, 0x30, | |
0x40, 0x14, 0x52, 0x73, 0x03, 0x83, 0x52, 0x72, 0x01, | |
0x32, 0x08, 0x14, 0x50, 0x00, 0xee, 0x60, 0xb0, 0xf0, | |
0x60, 0x40, 0xa0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | |
0xc6, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x30, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x5f, 0x06, 0x00, 0x00, 0xfe, 0xc6, 0x00, 0x00, 0xd3, | |
0xfb, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, | |
0xf6, 0x00, 0x00, 0x00, 0xfb, 0xe0, 0x00, 0x00, 0xf0, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, | |
0x00, 0xdb, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, | |
0x00, 0x00, 0xc6, 0x00, 0x00, 0x03, 0xf1, 0x00, 0x00, | |
0x30, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, | |
0x00, 0xd9, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x06, | |
0x00, 0x00, 0xff, 0xc6, 0x00, 0x00, 0x69, 0xdb, 0x00, | |
0x00, 0xe0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x76, 0x00, | |
0x00, 0x00, 0xf3, 0xe0, 0x00, 0x00, 0x30, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x1f, 0x07, 0x0f, 0x00, 0xff, 0xfe, 0xfc, 0x7e, | |
0x00, 0x00, 0x3e, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x1b, 0x07, | |
0x00, 0xff, 0xf0, 0xfb, 0x1f, 0x00, 0x00, 0xfe, 0xb0, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x17, 0x0f, 0x00, 0x00, 0xff, 0xf8, 0x7e, | |
0x0f, 0x00, 0x0c, 0x14, 0x38, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x0b, | |
0x0f, 0x00, 0xfe, 0xe0, 0xfc, 0x3f, 0x00, 0x00, 0x7e, | |
0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x17, 0x1f, 0x03, 0x00, 0xff, 0xf0, | |
0xff, 0x1f, 0x80, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, | |
0x0f, 0x00, 0x00, 0xfe, 0xf8, 0x7e, 0x0f, 0x00, 0x1c, | |
0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x0f, 0x00, 0xfe, | |
0xc0, 0xf8, 0x3f, 0x00, 0x00, 0xfe, 0xfc, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
0x2b, 0x1f, 0x00, 0x00, 0xff, 0xe0, 0x7f, 0x1f, 0x80, | |
0x04, 0x1c, 0x3c, 0x04, 0x05, 0x1b, 0x05, 0x1b, 0x17, | |
0x04, 0x17, 0x07, 0x08, 0x17, 0x08, 0x1c, 0x08, 0x15, | |
0x1a, 0x06, 0x03, 0x00, 0x14, 0x1b, 0x0a, 0x16, 0x16, | |
0x1a, 0x0a, 0x0e, 0x1a, 0x08, 0x02, 0x00, 0x10, 0x1e, | |
0x0c, 0x15, 0x17, 0x18, 0x0b, 0x08, 0x19, 0x0b, 0x01, | |
0x00, 0x0d, 0x20, 0x0f, 0x13, 0x19, 0x15, 0x0a, 0x03, | |
0x15, 0x20, 0x12, 0x0e, 0x01, 0x10, 0x1a, 0x01, 0x0b, | |
0x14, 0x08, 0x00, 0x11, 0x1f, 0x14, 0x0d, 0x1b, 0x12, | |
0x01, 0x04, 0x09, 0x15, 0x06, 0x00, 0x0d, 0x1d, 0x16, | |
0x0a, 0x1b, 0x15, 0x03, 0x06, 0x08, 0x18, 0x05, 0x01, | |
0x09, 0x1c, 0x16, 0x06, 0x19, 0x17, 0x05, 0x07, 0x08, | |
0x1b, 0x05, 0x04, 0x05, 0x1b, 0x17, 0x04, 0x17, 0x17, | |
0x08, 0x08, 0x08, 0x04, 0x14, 0x09, 0x02, 0x1a, 0x18, | |
0x1e, 0x07, 0x05, 0x13, 0x08, 0x07, 0x05, 0x12, 0x0e, | |
0x01, 0x19, 0x19, 0x1f, 0x0a, 0x02, 0x12, 0x08, 0x06, | |
0x08, 0x12, 0x14, 0x02, 0x18, 0x1a, 0x20, 0x0c, 0x00, | |
0x10, 0x09, 0x05, 0x0a, 0x12, 0x19, 0x04, 0x15, 0x1b, | |
0x00, 0x0e, 0x1f, 0x0e, 0x0b, 0x03, 0x0c, 0x14, 0x1d, | |
0x08, 0x00, 0x0b, 0x0e, 0x01, 0x11, 0x1b, 0x1d, 0x11, | |
0x0b, 0x17, 0x1f, 0x0d, 0x00, 0x08, 0x12, 0x01, 0x0d, | |
0x1a, 0x1b, 0x12, 0x08, 0x18, 0x1e, 0x12, 0x02, 0x07, | |
0x17, 0x02, 0x0a, 0x17, 0x19, 0x13, 0x1b, 0x17, 0x1b, | |
0x05, 0x04, 0x17, 0x04, 0x05, 0x17, 0x08, 0x17, 0x14, | |
0x1d, 0x0a, 0x06, 0x04, 0x15, 0x1a, 0x01, 0x15, 0x1b, | |
0x09, 0x0b, 0x05, 0x1b, 0x0e, 0x08, 0x03, 0x0e, 0x1b, | |
0x00, 0x11, 0x1e, 0x0c, 0x10, 0x04, 0x17, 0x12, 0x0a, | |
0x02, 0x08, 0x1a, 0x1f, 0x0f, 0x00, 0x0d, 0x16, 0x04, | |
0x10, 0x14, 0x0d, 0x02, 0x1e, 0x14, 0x03, 0x16, 0x1b, | |
0x06, 0x02, 0x09, 0x09, 0x13, 0x10, 0x01, 0x1a, 0x18, | |
0x1f, 0x0a, 0x01, 0x12, 0x07, 0x06, 0x04, 0x0f, 0x14, | |
0x02, 0x13, 0x1b, 0x20, 0x0e, 0x01, 0x0e, 0x0d, 0x05, | |
0x02, 0x0a, 0x18, 0x03, 0x0b, 0x1b, 0x1f, 0x13, 0x04, | |
0x0a, 0x12, 0x05, 0x04, 0x17, 0x04, 0x05, 0x1b, 0x17, | |
0x1b, 0x05, 0x08, 0x14, 0x08, 0x08, 0x15, 0x19, 0x1e, | |
0x08, 0x00, 0x11, 0x09, 0x02, 0x14, 0x17, 0x1b, 0x0c, | |
0x0e, 0x17, 0x1f, 0x0b, 0x00, 0x0b, 0x0f, 0x01, 0x10, | |
0x1a, 0x1c, 0x10, 0x09, 0x13, 0x1f, 0x0e, 0x02, 0x06, | |
0x15, 0x02, 0x0a, 0x1a, 0x1a, 0x15, 0x08, 0x0e, 0x1f, | |
0x0f, 0x08, 0x02, 0x05, 0x18, 0x1a, 0x05, 0x17, 0x19, | |
0x0a, 0x09, 0x1e, 0x12, 0x00, 0x14, 0x0e, 0x01, 0x11, | |
0x1b, 0x1c, 0x09, 0x0f, 0x05, 0x1d, 0x14, 0x00, 0x0e, | |
0x0c, 0x1b, 0x13, 0x02, 0x1d, 0x0e, 0x15, 0x04, 0x1c, | |
0x15, 0x00, 0x0a, 0x07, 0x1a, 0x16, 0x05, 0x1b, 0x11, | |
0x1b, 0x05, 0x04, 0x05, 0x04, 0x17, 0x1b, 0x17, 0x18, | |
0x08, 0x08, 0x08, 0x03, 0x14, 0x0a, 0x02, 0x19, 0x19, | |
0x1f, 0x08, 0x04, 0x12, 0x09, 0x06, 0x05, 0x12, 0x11, | |
0x02, 0x17, 0x1a, 0x20, 0x0c, 0x01, 0x10, 0x0a, 0x05, | |
0x07, 0x11, 0x17, 0x03, 0x14, 0x1b, 0x00, 0x0d, 0x20, | |
0x0f, 0x0c, 0x03, 0x0a, 0x12, 0x1c, 0x07, 0x00, 0x0a, | |
0x11, 0x1b, 0x0f, 0x02, 0x1e, 0x11, 0x0b, 0x14, 0x1f, | |
0x0b, 0x00, 0x08, 0x12, 0x01, 0x0d, 0x1b, 0x1b, 0x13, | |
0x0a, 0x16, 0x1f, 0x0f, 0x02, 0x06, 0x15, 0x01, 0x0a, | |
0x19, 0x19, 0x14, 0x07, 0x17, 0x1e, 0x13, 0x03, 0x06, | |
0x19, 0x03, 0x08, 0x17, 0x18, 0x14, 0x1b, 0x05, 0x04, | |
0x05, 0x1b, 0x17, 0x04, 0x17, 0x17, 0x08, 0x08, 0x08, | |
0x1b, 0x08, 0x16, 0x1a, 0x05, 0x04, 0x01, 0x15, 0x1a, | |
0x09, 0x17, 0x15, 0x1a, 0x0a, 0x11, 0x1b, 0x06, 0x03, | |
0x00, 0x12, 0x1d, 0x0a, 0x17, 0x16, 0x17, 0x0a, 0x0b, | |
0x1a, 0x07, 0x02, 0x00, 0x10, 0x1f, 0x0c, 0x16, 0x17, | |
0x15, 0x0a, 0x06, 0x18, 0x0a, 0x01, 0x20, 0x0e, 0x00, | |
0x0e, 0x14, 0x19, 0x13, 0x08, 0x02, 0x14, 0x20, 0x11, | |
0x0e, 0x01, 0x11, 0x1b, 0x02, 0x0b, 0x14, 0x05, 0x00, | |
0x0f, 0x1f, 0x14, 0x0d, 0x1b, 0x12, 0x02, 0x04, 0x0a, | |
0x17, 0x04, 0x01, 0x0a, 0x1d, 0x15, 0x08, 0x1a, 0x15, | |
0x05, 0x06, 0x09, 0x1b, 0x17, 0x1b, 0x05, 0x04, 0x17, | |
0x04, 0x05, 0x18, 0x08, 0x18, 0x14, 0x02, 0x12, 0x19, | |
0x18, 0x0a, 0x02, 0x1e, 0x07, 0x04, 0x13, 0x14, 0x17, | |
0x04, 0x0e, 0x17, 0x19, 0x11, 0x01, 0x20, 0x0b, 0x01, | |
0x10, 0x0f, 0x18, 0x08, 0x0a, 0x15, 0x1a, 0x17, 0x02, | |
0x20, 0x0f, 0x00, 0x0d, 0x09, 0x18, 0x0f, 0x08, 0x12, | |
0x1a, 0x01, 0x08, 0x1c, 0x06, 0x04, 0x16, 0x1d, 0x13, | |
0x16, 0x09, 0x0f, 0x1b, 0x05, 0x04, 0x00, 0x12, 0x1e, | |
0x0a, 0x18, 0x16, 0x1b, 0x0d, 0x0b, 0x1a, 0x0c, 0x01, | |
0x00, 0x0e, 0x1e, 0x0e, 0x12, 0x17, 0x1d, 0x12, 0x07, | |
0x19, 0x14, 0x01, 0x00, 0x09, 0x1b, 0x12, 0x0d, 0x17, | |
0x04, 0x17, 0x04, 0x05, 0x1b, 0x17, 0x1b, 0x05, 0x08, | |
0x14, 0x08, 0x08, 0x0a, 0x03, 0x01, 0x14, 0x1f, 0x0b, | |
0x16, 0x1a, 0x0b, 0x05, 0x04, 0x10, 0x11, 0x05, 0x00, | |
0x11, 0x20, 0x11, 0x10, 0x1b, 0x0f, 0x02, 0x03, 0x0c, | |
0x16, 0x09, 0x00, 0x0e, 0x1d, 0x16, 0x0a, 0x1a, 0x15, | |
0x02, 0x05, 0x07, 0x17, 0x0e, 0x00, 0x0d, 0x17, 0x1a, | |
0x1a, 0x04, 0x05, 0x17, 0x08, 0x03, 0x15, 0x13, 0x01, | |
0x0a, 0x1f, 0x08, 0x0e, 0x01, 0x11, 0x1b, 0x03, 0x13, | |
0x10, 0x17, 0x02, 0x08, 0x20, 0x0e, 0x13, 0x01, 0x0c, | |
0x1a, 0x02, 0x0e, 0x0a, 0x18, 0x03, 0x07, 0x1f, 0x12, | |
0x18, 0x02, 0x09, 0x17, 0x04, 0x0b, 0x04, 0x05, 0x1b, | |
0x05, 0x1b, 0x17, 0x04, 0x17, 0x1c, 0x08, 0x15, 0x1a, | |
0x06, 0x03, 0x00, 0x14, 0x1a, 0x0a, 0x0e, 0x1a, 0x08, | |
0x02, 0x00, 0x10, 0x18, 0x0b, 0x08, 0x19, 0x0b, 0x01, | |
0x00, 0x0d, 0x15, 0x0a, 0x03, 0x15, 0x0e, 0x01, 0x01, | |
0x0b, 0x14, 0x08, 0x00, 0x11, 0x12, 0x01, 0x14, 0x12, | |
0x15, 0x06, 0x00, 0x0d, 0x13, 0x14, 0x15, 0x03, 0x18, | |
0x05, 0x01, 0x09, 0x11, 0x15, 0x17, 0x05, 0x1b, 0x05, | |
0x04, 0x05, 0x10, 0x15, 0x17, 0x08, 0x09, 0x02, 0x1e, | |
0x07, 0x0e, 0x15, 0x08, 0x07, 0x0e, 0x01, 0x1f, 0x0a, | |
0x0c, 0x15, 0x08, 0x06, 0x14, 0x02, 0x0b, 0x14, 0x20, | |
0x0c, 0x09, 0x05, 0x19, 0x04, 0x0a, 0x14, 0x1f, 0x0e, | |
0x0b, 0x03, 0x1d, 0x08, 0x08, 0x13, 0x0e, 0x01, 0x1d, | |
0x11, 0x1f, 0x0d, 0x12, 0x01, 0x07, 0x11, 0x1b, 0x12, | |
0x1e, 0x12, 0x17, 0x02, 0x06, 0x10, 0x19, 0x13, 0x1b, | |
0x17, 0x1b, 0x05, 0x06, 0x0e, 0x17, 0x08, 0x1d, 0x0a, | |
0x15, 0x1a, 0x07, 0x0c, 0x1b, 0x09, 0x1b, 0x0e, 0x0e, | |
0x1b, 0x08, 0x0a, 0x1e, 0x0c, 0x17, 0x12, 0x08, 0x1a, | |
0x1f, 0x0f, 0x0b, 0x08, 0x10, 0x14, 0x1e, 0x14, 0x03, | |
0x16, 0x0f, 0x07, 0x09, 0x13, 0x1a, 0x18, 0x01, 0x12, | |
0x12, 0x08, 0x04, 0x0f, 0x13, 0x1b, 0x15, 0x09, 0x01, | |
0x0e, 0x02, 0x0a, 0x0b, 0x1b, 0x18, 0x0b, 0x04, 0x0a, | |
0x04, 0x17, 0x04, 0x05, 0x19, 0x0e, 0x08, 0x14, 0x00, | |
0x11, 0x09, 0x02, 0x18, 0x10, 0x06, 0x12, 0x00, 0x0b, | |
0x0f, 0x01, 0x16, 0x13, 0x05, 0x10, 0x02, 0x06, 0x14, | |
0x14, 0x15, 0x02, 0x05, 0x0e, 0x11, 0x14, 0x08, 0x02, | |
0x1a, 0x05, 0x05, 0x0d, 0x0e, 0x13, 0x0e, 0x01, 0x1c, | |
0x09, 0x06, 0x0c, 0x0d, 0x11, 0x13, 0x02, 0x1d, 0x0e, | |
0x06, 0x0a, 0x0e, 0x0f, 0x16, 0x05, 0x1b, 0x11, 0x07, | |
0x09, 0x10, 0x0e, 0x18, 0x08, 0x08, 0x08, 0x08, 0x14, | |
0x12, 0x0e, 0x04, 0x12, 0x09, 0x06, 0x13, 0x16, 0x14, | |
0x0e, 0x01, 0x10, 0x0a, 0x05, 0x0f, 0x16, 0x16, 0x10, | |
0x00, 0x0d, 0x0c, 0x03, 0x0a, 0x15, 0x16, 0x12, 0x00, | |
0x0a, 0x0f, 0x02, 0x07, 0x13, 0x00, 0x08, 0x15, 0x13, | |
0x12, 0x01, 0x05, 0x10, 0x02, 0x06, 0x15, 0x01, 0x13, | |
0x15, 0x05, 0x0e, 0x03, 0x06, 0x19, 0x03, 0x11, 0x15, | |
0x05, 0x0b, 0x1b, 0x05, 0x04, 0x05, 0x0f, 0x15, 0x17, | |
0x08, 0x1b, 0x08, 0x05, 0x04, 0x0e, 0x15, 0x1a, 0x09, | |
0x1a, 0x0a, 0x06, 0x03, 0x0c, 0x14, 0x1d, 0x0a, 0x17, | |
0x0a, 0x07, 0x02, 0x1f, 0x0c, 0x0b, 0x14, 0x15, 0x0a, | |
0x0a, 0x01, 0x20, 0x0e, 0x0a, 0x13, 0x13, 0x08, 0x20, | |
0x11, 0x0e, 0x01, 0x09, 0x12, 0x14, 0x05, 0x1f, 0x14, | |
0x08, 0x11, 0x12, 0x02, 0x17, 0x04, 0x1d, 0x15, 0x07, | |
0x10, 0x15, 0x05, 0x1b, 0x17, 0x1b, 0x05, 0x06, 0x0e, | |
0x18, 0x08, 0x19, 0x18, 0x1e, 0x07, 0x07, 0x0c, 0x14, | |
0x17, 0x17, 0x19, 0x20, 0x0b, 0x08, 0x0a, 0x0f, 0x18, | |
0x15, 0x1a, 0x0b, 0x08, 0x20, 0x0f, 0x09, 0x18, 0x12, | |
0x1a, 0x0e, 0x07, 0x04, 0x16, 0x1d, 0x13, 0x0f, 0x1b, | |
0x12, 0x07, 0x00, 0x12, 0x18, 0x16, 0x0b, 0x1a, 0x00, | |
0x0e, 0x16, 0x09, 0x12, 0x17, 0x07, 0x19, 0x00, 0x09, | |
0x18, 0x0b, 0x0d, 0x17, 0x04, 0x17, 0x04, 0x05, 0x19, | |
0x0e, 0x08, 0x14, 0x0a, 0x03, 0x01, 0x14, 0x18, 0x10, | |
0x0b, 0x05, 0x11, 0x05, 0x00, 0x11, 0x16, 0x12, 0x0f, | |
0x02, 0x16, 0x09, 0x00, 0x0e, 0x15, 0x02, 0x13, 0x13, | |
0x17, 0x0e, 0x00, 0x0d, 0x1a, 0x04, 0x08, 0x03, 0x15, | |
0x13, 0x01, 0x0a, 0x1f, 0x08, 0x0e, 0x01, 0x10, 0x17, | |
0x02, 0x08, 0x20, 0x0e, 0x13, 0x01, 0x0a, 0x18, 0x03, | |
0x07, 0x1f, 0x12, 0x18, 0x02, 0x10, 0x0e, 0x06, 0x07, | |
0x19, 0x07, 0x19, 0x15, 0x0d, 0x0e, 0x1b, 0x09, 0x16, | |
0x17, 0x09, 0x05, 0x0b, 0x0e, 0x1c, 0x0c, 0x12, 0x18, | |
0x0d, 0x04, 0x1c, 0x0e, 0x09, 0x0c, 0x0e, 0x19, 0x11, | |
0x04, 0x1b, 0x0e, 0x09, 0x0a, 0x0b, 0x18, 0x14, 0x05, | |
0x1a, 0x0e, 0x07, 0x16, 0x0a, 0x09, 0x14, 0x12, 0x1a, | |
0x0e, 0x05, 0x14, 0x0c, 0x07, 0x13, 0x14, 0x1a, 0x0e, | |
0x04, 0x11, 0x0e, 0x07, 0x11, 0x15, 0x1b, 0x0e, 0x04, | |
0x0e, 0x10, 0x15, 0x10, 0x07, 0x06, 0x0c, 0x1c, 0x0f, | |
0x0e, 0x15, 0x11, 0x07, 0x0a, 0x0a, 0x1d, 0x10, 0x0c, | |
0x15, 0x13, 0x08, 0x0e, 0x0a, 0x1c, 0x12, 0x0b, 0x14, | |
0x14, 0x08, 0x12, 0x0b, 0x0a, 0x14, 0x1a, 0x14, 0x05, | |
0x08, 0x15, 0x0e, 0x07, 0x06, 0x08, 0x13, 0x17, 0x16, | |
0x15, 0x11, 0x0a, 0x04, 0x07, 0x11, 0x17, 0x0b, 0x13, | |
0x15, 0x0d, 0x04, 0x06, 0x10, 0x18, 0x0c, 0x10, 0x17, | |
0x10, 0x05, 0x06, 0x0e, 0x19, 0x0e, 0x11, 0x07, 0x0b, | |
0x17, 0x18, 0x10, 0x07, 0x0c, 0x11, 0x09, 0x06, 0x16, | |
0x17, 0x12, 0x08, 0x0a, 0x10, 0x0a, 0x03, 0x13, 0x14, | |
0x14, 0x1a, 0x0a, 0x0e, 0x0b, 0x11, 0x15, 0x1d, 0x0d, | |
0x03, 0x0f, 0x0d, 0x0a, 0x1d, 0x10, 0x0d, 0x15, 0x12, | |
0x08, 0x0c, 0x08, 0x1a, 0x14, 0x09, 0x13, 0x15, 0x09, | |
0x0d, 0x06, 0x15, 0x17, 0x07, 0x11, 0x18, 0x0b, 0x10, | |
0x17, 0x10, 0x05, 0x19, 0x0e, 0x06, 0x0e, 0x0a, 0x15, | |
0x13, 0x05, 0x18, 0x10, 0x07, 0x0c, 0x06, 0x10, 0x17, | |
0x05, 0x16, 0x13, 0x09, 0x0a, 0x05, 0x0c, 0x1a, 0x07, | |
0x14, 0x14, 0x0c, 0x09, 0x08, 0x07, 0x11, 0x14, 0x1c, | |
0x0a, 0x05, 0x11, 0x0c, 0x04, 0x0e, 0x13, 0x1d, 0x0d, | |
0x04, 0x0f, 0x0d, 0x11, 0x11, 0x03, 0x1d, 0x10, 0x03, | |
0x0d, 0x0e, 0x0f, 0x16, 0x04, 0x1b, 0x13, 0x04, 0x09, | |
0x10, 0x0e, 0x19, 0x07, 0x06, 0x07, 0x06, 0x15, 0x12, | |
0x0e, 0x04, 0x13, 0x09, 0x05, 0x16, 0x17, 0x14, 0x0e, | |
0x03, 0x10, 0x0d, 0x04, 0x12, 0x18, 0x03, 0x0e, 0x16, | |
0x10, 0x11, 0x03, 0x0e, 0x18, 0x04, 0x0e, 0x16, 0x12, | |
0x14, 0x04, 0x0b, 0x17, 0x05, 0x0e, 0x18, 0x06, 0x15, | |
0x13, 0x0b, 0x0a, 0x05, 0x0e, 0x1a, 0x08, 0x13, 0x15, | |
0x0c, 0x08, 0x05, 0x0e, 0x1b, 0x0b, 0x11, 0x15, 0x0e, | |
0x07, 0x1b, 0x0e, 0x04, 0x0e, 0x0f, 0x15, 0x0f, 0x07, | |
0x19, 0x10, 0x03, 0x0d, 0x11, 0x07, 0x0e, 0x15, 0x15, | |
0x12, 0x02, 0x0c, 0x13, 0x07, 0x0c, 0x14, 0x11, 0x12, | |
0x03, 0x0a, 0x14, 0x08, 0x0b, 0x14, 0x0d, 0x11, 0x15, | |
0x08, 0x05, 0x08, 0x1a, 0x14, 0x0a, 0x0e, 0x18, 0x16, | |
0x17, 0x09, 0x08, 0x06, 0x0a, 0x0b, 0x15, 0x18, 0x18, | |
0x0b, 0x08, 0x11, 0x0c, 0x07, 0x12, 0x18, 0x19, 0x0c, | |
0x07, 0x10, 0x10, 0x17, 0x10, 0x05, 0x06, 0x0e, 0x19, | |
0x0e, 0x0e, 0x15, 0x14, 0x05, 0x07, 0x0c, 0x18, 0x10, | |
0x0e, 0x13, 0x19, 0x06, 0x08, 0x0a, 0x17, 0x12, 0x0f, | |
0x12, 0x1c, 0x09, 0x0b, 0x08, 0x05, 0x12, 0x11, 0x11, | |
0x0e, 0x07, 0x02, 0x0f, 0x1c, 0x0d, 0x12, 0x12, 0x02, | |
0x0c, 0x12, 0x07, 0x0d, 0x14, 0x13, 0x14, 0x05, 0x08, | |
0x16, 0x09, 0x0a, 0x13, 0x12, 0x16, 0x0a, 0x05, 0x18, | |
0x0b, 0x07, 0x11, 0x0f, 0x17, 0x10, 0x05, 0x19, 0x0e, | |
0x06, 0x0e, 0x15, 0x07, 0x0c, 0x17, 0x07, 0x0c, 0x18, | |
0x10, 0x19, 0x0c, 0x08, 0x17, 0x09, 0x09, 0x16, 0x12, | |
0x1a, 0x10, 0x05, 0x15, 0x0b, 0x08, 0x13, 0x13, 0x17, | |
0x15, 0x0e, 0x08, 0x03, 0x12, 0x1a, 0x0b, 0x13, 0x18, | |
0x11, 0x09, 0x02, 0x0f, 0x1b, 0x0d, 0x12, 0x0b, 0x0e, | |
0x19, 0x02, 0x0c, 0x1c, 0x0f, 0x11, 0x0d, 0x09, 0x18, | |
0x04, 0x09, 0x1b, 0x13, 0x10, 0x10, 0x0c, 0x14, 0x07, | |
0x17, 0x04, 0x1a, 0x03, 0x1c, 0x03, 0x1d, 0x05, 0x1d, | |
0x08, 0x1b, 0x0c, 0x19, 0x10, 0x16, 0x14, 0x13, 0x17, | |
0x10, 0x1a, 0x0d, 0x1b, 0x0a, 0x1b, 0x08, 0x19, 0x06, | |
0x17, 0x05, 0x13, 0x06, 0x10, 0x07, 0x0d, 0x08, 0x0a, | |
0x0b, 0x07, 0x0e, 0x06, 0x10, 0x06, 0x12, 0x08, 0x15, | |
0x0a, 0x17, 0x0d, 0x18, 0x10, 0x19, 0x13, 0x19, 0x16, | |
0x18, 0x18, 0x17, 0x19, 0x14, 0x10, 0x19, 0x0f, 0x17, | |
0x0d, 0x17, 0x0a, 0x19, 0x06, 0x1a, 0x06, 0x16, 0x09, | |
0x13, 0x09, 0x11, 0x07, 0x10, 0x03, 0x0e, 0x03, 0x0b, | |
0x08, 0x0b, 0x0b, 0x0b, 0x0c, 0x0a, 0x0c, 0x06, 0x0e, | |
0x02, 0x10, 0x04, 0x11, 0x08, 0x12, 0x0a, 0x14, 0x09, | |
0x19, 0x07, 0x1b, 0x09, 0x19, 0x0d, 0x17, 0x0f, 0x17, | |
0x10, 0x1a, 0x12, 0x1d, 0x15, 0x1a, 0x16, 0x15, 0x15, | |
0x14, 0x16, 0x13, 0x18, 0x12, 0x1d, 0x10, 0x19, 0x0e, | |
0x17, 0x0d, 0x17, 0x0b, 0x17, 0x08, 0x17, 0x05, 0x19, | |
0x02, 0x19, 0x03, 0x17, 0x08, 0x14, 0x0b, 0x12, 0x0e, | |
0x11, 0x10, 0x10, 0x11, 0x10, 0x14, 0x0e, 0x19, 0x0b, | |
0x1c, 0x09, 0x1c, 0x09, 0x19, 0x09, 0x17, 0x0a, 0x16, | |
0x0a, 0x14, 0x09, 0x13, 0x07, 0x11, 0x04, 0x0f, 0x02, | |
0x0b, 0x03, 0x09, 0x06, 0x09, 0x09, 0x09, 0x0a, 0x09, | |
0x0b, 0x08, 0x0b, 0x07, 0x0b, 0x07, 0x0b, 0x10, 0x19, | |
0x13, 0x18, 0x15, 0x17, 0x16, 0x16, 0x18, 0x15, 0x18, | |
0x15, 0x18, 0x14, 0x15, 0x12, 0x10, 0x10, 0x0b, 0x0e, | |
0x09, 0x0c, 0x08, 0x0c, 0x09, 0x0b, 0x0a, 0x0a, 0x0b, | |
0x09, 0x0d, 0x08, 0x10, 0x06, 0x14, 0x04, 0x1a, 0x03, | |
0x1d, 0x04, 0x1c, 0x08, 0x19, 0x0b, 0x15, 0x0d, 0x12, | |
0x0f, 0x10, 0x10, 0x0d, 0x11, 0x0a, 0x13, 0x06, 0x16, | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment