1
0
mirror of https://github.com/whowechina/aic_pico.git synced 2025-02-28 15:40:36 +01:00

Identifies empty vicinity cards

This commit is contained in:
whowechina 2024-06-21 13:47:43 +08:00
parent f5f9eb8c53
commit 2ca994c3ee
8 changed files with 373 additions and 4 deletions

Binary file not shown.

View File

@ -93,6 +93,8 @@ bool nfc_mifare_read(uint8_t block_id, uint8_t block_data[16]);
bool nfc_felica_read(uint16_t svc_code, uint16_t block_id, uint8_t block_data[16]); bool nfc_felica_read(uint16_t svc_code, uint16_t block_id, uint8_t block_data[16]);
bool nfc_15693_read(const uint8_t uid[8], uint8_t block_id, uint8_t block_data[4]);
void nfc_select(int phase); void nfc_select(int phase);
void nfc_deselect(); void nfc_deselect();

View File

@ -119,8 +119,6 @@ static void draw_home_card()
center_image(&image_aic_nesica); center_image(&image_aic_nesica);
} else if (card_splash.card == CARD_AIC) { } else if (card_splash.card == CARD_AIC) {
center_image(&image_aic_generic); center_image(&image_aic_generic);
} else if (card_splash.card == CARD_EAMUSE) {
center_image(&image_eamuse);
} else if (card_splash.card == CARD_MIFARE) { } else if (card_splash.card == CARD_MIFARE) {
center_image(&image_mifare); center_image(&image_mifare);
} else if (card_splash.card == CARD_AIME) { } else if (card_splash.card == CARD_AIME) {
@ -129,6 +127,10 @@ static void draw_home_card()
center_image(&image_bana); center_image(&image_bana);
} else if (card_splash.card == CARD_NESICA) { } else if (card_splash.card == CARD_NESICA) {
center_image(&image_nesica); center_image(&image_nesica);
} else if (card_splash.card == CARD_VICINITY) {
center_image(&image_vicinity);
} else if (card_splash.card == CARD_EAMUSE) {
center_image(&image_eamuse);
} }
} }

View File

@ -136,6 +136,7 @@ struct {
void (*set_wait_loop)(nfc_wait_loop_t loop); void (*set_wait_loop)(nfc_wait_loop_t loop);
void (*select)(int phase); void (*select)(int phase);
void (*deselect)(); void (*deselect)();
bool (*iso15693_read)(const uint8_t uid[8], uint8_t block_id, uint8_t block_data[4]);
} api[3] = { } api[3] = {
{ {
pn532_firmware_ver, pn532_firmware_ver,
@ -146,6 +147,7 @@ struct {
pn532_set_wait_loop, pn532_set_wait_loop,
pn532_select, pn532_select,
pn532_deselect, pn532_deselect,
func_null,
}, },
{ {
pn5180_firmware_ver, pn5180_firmware_ver,
@ -156,6 +158,7 @@ struct {
pn5180_set_wait_loop, pn5180_set_wait_loop,
pn5180_select, pn5180_select,
pn5180_deselect, pn5180_deselect,
pn5180_15693_read,
}, },
{ 0 }, { 0 },
}; };
@ -325,7 +328,7 @@ nfc_card_t nfc_detect_card()
} else if (card.card_type == NFC_CARD_MIFARE) { } else if (card.card_type == NFC_CARD_MIFARE) {
update_card_name(CARD_MIFARE, false); update_card_name(CARD_MIFARE, false);
} else if (card.card_type == NFC_CARD_VICINITY) { } else if (card.card_type == NFC_CARD_VICINITY) {
update_card_name(CARD_EAMUSE, true); update_card_name(CARD_VICINITY, false);
} }
return card; return card;
@ -371,6 +374,12 @@ static void identify_mifare()
} }
} }
static void identify_15693()
{
uint8_t buf_ignored[16];
nfc_15693_read(last_card.uid, 0x1b, buf_ignored);
}
void nfc_identify_last_card() void nfc_identify_last_card()
{ {
if (time_us_64() - last_card_time > CARD_INFO_TIMEOUT_US) { if (time_us_64() - last_card_time > CARD_INFO_TIMEOUT_US) {
@ -381,6 +390,8 @@ void nfc_identify_last_card()
identify_felica(); identify_felica();
} else if (last_card.card_type == NFC_CARD_MIFARE) { } else if (last_card.card_type == NFC_CARD_MIFARE) {
identify_mifare(); identify_mifare();
} else if (last_card.card_type == NFC_CARD_VICINITY) {
identify_15693();
} }
} }
@ -482,3 +493,24 @@ void nfc_deselect()
api[nfc_module].deselect(); api[nfc_module].deselect();
} }
} }
static void vicinity_report_name(uint8_t block_id, const uint8_t block_data[4])
{
if ((block_id == 0x1b) && (memcmp(block_data, "W_OK", 4) == 0)) {
update_card_name(CARD_EAMUSE, true);
}
}
bool nfc_15693_read(const uint8_t uid[8], uint8_t block_id, uint8_t block_data[4])
{
if (!api[nfc_module].iso15693_read) {
return false;
}
bool read_ok = api[nfc_module].iso15693_read(uid, block_id, block_data);
if (read_ok) {
vicinity_report_name(block_id, block_data);
}
return read_ok;
}

View File

@ -565,3 +565,39 @@ void pn5180_deselect()
{ {
poll_mifare_2(); poll_mifare_2();
} }
bool pn5180_15693_read(const uint8_t uid[8], uint8_t block_id, uint8_t block_data[4])
{
uint8_t cmd[] = { 0x22, 0x20, uid[7], uid[6], uid[5], uid[4],
uid[3], uid[2], uid[1], uid[0], block_id } ;
pn5180_send_data(cmd, sizeof(cmd), 0);
sleep_ms_with_loop(5);
uint32_t status = pn5180_get_irq();
if (0 == (status & 0x4000)) {
return false;
}
while (0 == (status & 0x01)) {
sleep_ms_with_loop(5);
status = pn5180_get_irq();
}
uint16_t len = pn5180_get_rx() & 0x1ff;
uint8_t buf[5] = { 0 };
if (len > sizeof(buf)) {
return false;
}
pn5180_read_data(buf, len);
if ((buf[0] & 0x01) != 0) {
return false;
}
memcpy(block_data, buf + 1, 4);
return true;
}

View File

@ -52,6 +52,8 @@ bool pn5180_mifare_read(uint8_t block_id, uint8_t block_data[16]);
bool pn5180_felica_read(uint16_t svc_code, uint16_t block_id, uint8_t block_data[16]); bool pn5180_felica_read(uint16_t svc_code, uint16_t block_id, uint8_t block_data[16]);
bool pn5180_15693_read(const uint8_t uid[8], uint8_t block_id, uint8_t block_data[4]);
void pn5180_select(int phase); void pn5180_select(int phase);
void pn5180_deselect(); void pn5180_deselect();

View File

@ -0,0 +1,294 @@
#include <stdint.h>
#include "../gfx.h"
const uint8_t image_vicinity_pixels[] = {
// image_vicinity_pixels (15180 -> RLE 4246)
0x00, 0x02, 0x01, 0x00, 0x22, 0x00, 0x33, 0x63, 0x22, 0x00, 0x10, 0x00, 0x00, 0x04, 0x01, 0x00,
0x23, 0x00, 0x33, 0x65, 0x32, 0x00, 0x10, 0x00, 0x00, 0x03, 0x23, 0x00, 0x33, 0x67, 0x32, 0x00,
0x00, 0x02, 0x02, 0x00, 0x33, 0x69, 0x20, 0x00, 0x00, 0x01, 0x23, 0x00, 0x33, 0x69, 0x32, 0x00,
0x00, 0x00, 0x01, 0x00, 0x33, 0x6b, 0x10, 0x00, 0x02, 0x00, 0x33, 0x6b, 0x20, 0x00, 0x13, 0x00,
0x33, 0x6b, 0x31, 0x00, 0x23, 0x00, 0x33, 0x6b, 0x32, 0x00, 0x23, 0x00, 0x33, 0x6b, 0x32, 0x00,
0x33, 0xff, 0x33, 0xff, 0x33, 0xff, 0x33, 0xff, 0x33, 0xff, 0x33, 0xff, 0x33, 0xff, 0x33, 0xff,
0x33, 0xff, 0x33, 0xff, 0x33, 0xff, 0x33, 0xff, 0x33, 0x1d, 0x68, 0x00, 0x88, 0x00, 0x89, 0x00,
0x33, 0x04, 0xd8, 0x00, 0x88, 0x00, 0x89, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x03,
0x39, 0x00, 0xac, 0x00, 0x6e, 0x00, 0x7e, 0x00, 0xdb, 0x00, 0x93, 0x00, 0x33, 0x02, 0x3d, 0x00,
0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00, 0x88, 0x00, 0x79, 0x00, 0x33, 0x03, 0xd8, 0x00,
0x88, 0x00, 0xb3, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x00, 0x48, 0x00,
0x88, 0x07, 0xe3, 0x00, 0xc8, 0x00, 0x88, 0x00, 0x8c, 0x00, 0x33, 0x03, 0x34, 0x00, 0x88, 0x01,
0xf9, 0x00, 0x33, 0x29, 0xb8, 0x00, 0x88, 0x00, 0x8b, 0x00, 0x33, 0x03, 0x39, 0x00, 0x78, 0x00,
0x88, 0x00, 0xd3, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x03, 0xbf, 0x00, 0x88, 0x03,
0x7b, 0x00, 0x93, 0x00, 0x33, 0x01, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00,
0x88, 0x00, 0x8d, 0x00, 0x33, 0x03, 0xd8, 0x00, 0x88, 0x00, 0xb3, 0x00, 0x33, 0x00, 0x3d, 0x00,
0x88, 0x00, 0x8d, 0x00, 0x33, 0x00, 0xa8, 0x00, 0x88, 0x07, 0xe3, 0x00, 0x4f, 0x00, 0x88, 0x01,
0x43, 0x00, 0x33, 0x02, 0x3d, 0x00, 0x88, 0x01, 0xa3, 0x00, 0x33, 0x29, 0x98, 0x00, 0x88, 0x00,
0x86, 0x00, 0x33, 0x03, 0x3a, 0x00, 0x88, 0x01, 0xa3, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00,
0x33, 0x02, 0x3d, 0x00, 0x88, 0x05, 0xd9, 0x00, 0x33, 0x01, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00,
0x33, 0x01, 0xc8, 0x00, 0x88, 0x01, 0x43, 0x00, 0x33, 0x02, 0xd8, 0x00, 0x88, 0x00, 0xb3, 0x00,
0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x00, 0x48, 0x00, 0x88, 0x07, 0xe3, 0x00,
0x3b, 0x00, 0x88, 0x01, 0x63, 0x00, 0x33, 0x02, 0xa8, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x2a,
0x3d, 0x00, 0x88, 0x01, 0x43, 0x00, 0x33, 0x02, 0x3d, 0x00, 0x88, 0x00, 0x87, 0x00, 0x93, 0x00,
0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x02, 0x68, 0x00, 0x88, 0x05, 0x8d, 0x00, 0x33, 0x01,
0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00, 0x88, 0x01, 0xe3, 0x00, 0x33, 0x02,
0xd8, 0x00, 0x88, 0x00, 0xb3, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x00,
0xa8, 0x00, 0x88, 0x07, 0xe3, 0x00, 0x33, 0x00, 0xd8, 0x00, 0x88, 0x00, 0x8a, 0x00, 0x33, 0x02,
0xe8, 0x00, 0x88, 0x00, 0x74, 0x00, 0x33, 0x2a, 0x3a, 0x00, 0x88, 0x01, 0xb3, 0x00, 0x33, 0x02,
0x97, 0x00, 0x88, 0x00, 0x8c, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01,
0x3c, 0x00, 0x88, 0x01, 0x7b, 0x00, 0x43, 0x00, 0x34, 0x00, 0xc8, 0x00, 0x88, 0x01, 0xa3, 0x00,
0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00, 0x88, 0x01, 0x8b, 0x00,
0x33, 0x02, 0xd8, 0x00, 0x88, 0x00, 0xb3, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00,
0x33, 0x03, 0x3b, 0x00, 0x88, 0x01, 0x93, 0x00, 0x33, 0x03, 0x48, 0x00, 0x88, 0x00, 0x8f, 0x00,
0x93, 0x00, 0x33, 0x00, 0x3b, 0x00, 0x88, 0x01, 0xb3, 0x00, 0x33, 0x2a, 0x39, 0x00, 0x78, 0x00,
0x88, 0x00, 0x63, 0x00, 0x33, 0x02, 0xa8, 0x00, 0x88, 0x00, 0x8a, 0x00, 0x33, 0x00, 0x3d, 0x00,
0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0x98, 0x00, 0x88, 0x00, 0x8f, 0x00, 0x93, 0x00, 0x33, 0x01,
0x3b, 0x00, 0x88, 0x01, 0xe3, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01,
0xc8, 0x00, 0x88, 0x01, 0x8f, 0x00, 0x93, 0x00, 0x33, 0x01, 0xd8, 0x00, 0x88, 0x00, 0xb3, 0x00,
0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x03, 0x3b, 0x00, 0x88, 0x01, 0x93, 0x00,
0x33, 0x03, 0x3b, 0x00, 0x88, 0x01, 0xb3, 0x00, 0x33, 0x00, 0x97, 0x00, 0x88, 0x00, 0x86, 0x00,
0x93, 0x00, 0x33, 0x2b, 0xc8, 0x00, 0x88, 0x00, 0x84, 0x00, 0x33, 0x02, 0xd8, 0x00, 0x88, 0x00,
0xf3, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00, 0x88, 0x00,
0x8a, 0x00, 0x33, 0x03, 0xd8, 0x00, 0x88, 0x00, 0x84, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00,
0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00, 0x88, 0x02, 0xc3, 0x00, 0x33, 0x01, 0xd8, 0x00, 0x88, 0x00,
0xb3, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x03, 0x3b, 0x00, 0x88, 0x01,
0x93, 0x00, 0x33, 0x03, 0x39, 0x00, 0xe8, 0x00, 0x88, 0x00, 0x84, 0x00, 0x33, 0x00, 0xc8, 0x00,
0x88, 0x00, 0x84, 0x00, 0x33, 0x2c, 0xa8, 0x00, 0x88, 0x00, 0x8b, 0x00, 0x33, 0x01, 0x39, 0x00,
0x78, 0x00, 0x88, 0x00, 0xc3, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01,
0xe8, 0x00, 0x88, 0x00, 0x63, 0x00, 0x33, 0x03, 0xa6, 0x00, 0xca, 0x00, 0x43, 0x00, 0x33, 0x00,
0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00, 0x88, 0x00, 0xdf, 0x00, 0x88, 0x00,
0x89, 0x00, 0x33, 0x01, 0xd8, 0x00, 0x88, 0x00, 0xb3, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00,
0x8d, 0x00, 0x33, 0x03, 0x3b, 0x00, 0x88, 0x01, 0x93, 0x00, 0x33, 0x04, 0x48, 0x00, 0x88, 0x00,
0x8d, 0x00, 0x34, 0x00, 0x88, 0x01, 0xc3, 0x00, 0x33, 0x2c, 0x3f, 0x00, 0x88, 0x00, 0x8e, 0x00,
0x33, 0x01, 0x3a, 0x00, 0x88, 0x01, 0x43, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00,
0x33, 0x00, 0x39, 0x00, 0x88, 0x01, 0xb3, 0x00, 0x33, 0x07, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00,
0x33, 0x01, 0xc8, 0x00, 0x88, 0x00, 0xcb, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xd8, 0x00,
0x88, 0x00, 0xb3, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x03, 0x3b, 0x00,
0x88, 0x01, 0x93, 0x00, 0x33, 0x04, 0x3c, 0x00, 0x88, 0x01, 0xa6, 0x00, 0x88, 0x00, 0x8f, 0x00,
0x33, 0x2d, 0x3c, 0x00, 0x88, 0x01, 0x43, 0x00, 0x33, 0x00, 0x3c, 0x00, 0x88, 0x00, 0x8e, 0x00,
0x33, 0x01, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x00, 0x3a, 0x00, 0x88, 0x01, 0xa3, 0x00,
0x33, 0x07, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00, 0x88, 0x00, 0xc3, 0x00,
0x68, 0x00, 0x88, 0x00, 0xa3, 0x00, 0x33, 0x00, 0xd8, 0x00, 0x88, 0x00, 0xb3, 0x00, 0x33, 0x00,
0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x03, 0x3b, 0x00, 0x88, 0x01, 0x93, 0x00, 0x33, 0x04,
0x39, 0x00, 0xf8, 0x00, 0x88, 0x00, 0x78, 0x00, 0x88, 0x00, 0x8a, 0x00, 0x33, 0x2d, 0x34, 0x00,
0x88, 0x01, 0xb3, 0x00, 0x33, 0x00, 0x97, 0x00, 0x88, 0x00, 0x8b, 0x00, 0x33, 0x01, 0x3d, 0x00,
0x88, 0x00, 0x8d, 0x00, 0x33, 0x00, 0x3a, 0x00, 0x88, 0x01, 0xa3, 0x00, 0x33, 0x07, 0x3d, 0x00,
0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00, 0x88, 0x00, 0xc3, 0x00, 0xa8, 0x00, 0x88, 0x00,
0xe3, 0x00, 0x33, 0x00, 0xd8, 0x00, 0x88, 0x00, 0xb3, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00,
0x8d, 0x00, 0x33, 0x03, 0x3b, 0x00, 0x88, 0x01, 0x93, 0x00, 0x33, 0x05, 0xa8, 0x00, 0x88, 0x02,
0xd3, 0x00, 0x33, 0x2e, 0xe8, 0x00, 0x88, 0x00, 0xe3, 0x00, 0x33, 0x00, 0xa8, 0x00, 0x88, 0x00,
0x84, 0x00, 0x33, 0x01, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x00, 0x3b, 0x00, 0x88, 0x01,
0x43, 0x00, 0x33, 0x07, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00, 0x88, 0x00,
0xc3, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8b, 0x00, 0x33, 0x00, 0xd8, 0x00, 0x88, 0x00, 0xb3, 0x00,
0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x03, 0x3b, 0x00, 0x88, 0x01, 0x93, 0x00,
0x33, 0x05, 0x3d, 0x00, 0x88, 0x01, 0x87, 0x00, 0x93, 0x00, 0x33, 0x2e, 0xb8, 0x00, 0x88, 0x00,
0x84, 0x00, 0x33, 0x00, 0xc8, 0x00, 0x88, 0x00, 0x63, 0x00, 0x33, 0x01, 0x3d, 0x00, 0x88, 0x00,
0x8d, 0x00, 0x33, 0x00, 0x3a, 0x00, 0x88, 0x01, 0xa3, 0x00, 0x33, 0x07, 0x3d, 0x00, 0x88, 0x00,
0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00, 0x88, 0x00, 0xc3, 0x00, 0x39, 0x00, 0x78, 0x00, 0x8f, 0x00,
0x93, 0x00, 0xd8, 0x00, 0x88, 0x00, 0xb3, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00,
0x33, 0x03, 0x3b, 0x00, 0x88, 0x01, 0x93, 0x00, 0x33, 0x05, 0x34, 0x00, 0x78, 0x00, 0x88, 0x00,
0x8b, 0x00, 0x33, 0x2f, 0x48, 0x00, 0x88, 0x00, 0x8c, 0x00, 0x39, 0x00, 0x78, 0x00, 0x88, 0x00,
0xb3, 0x00, 0x33, 0x01, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x00, 0x3a, 0x00, 0x88, 0x01,
0xa3, 0x00, 0x33, 0x07, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00, 0x88, 0x00,
0xc3, 0x00, 0x33, 0x00, 0xc8, 0x00, 0x88, 0x00, 0xc3, 0x00, 0xd8, 0x00, 0x88, 0x00, 0xb3, 0x00,
0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x03, 0x3b, 0x00, 0x88, 0x01, 0x93, 0x00,
0x33, 0x06, 0xc8, 0x00, 0x88, 0x00, 0xf3, 0x00, 0x33, 0x2f, 0x36, 0x00, 0x88, 0x00, 0x8e, 0x00,
0x3a, 0x00, 0x88, 0x01, 0x93, 0x00, 0x33, 0x01, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x00,
0x34, 0x00, 0x88, 0x01, 0xc3, 0x00, 0x33, 0x03, 0x9e, 0x00, 0xca, 0x00, 0x43, 0x00, 0x33, 0x00,
0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00, 0x88, 0x00, 0xc3, 0x00, 0x33, 0x00,
0x3f, 0x00, 0x88, 0x00, 0x84, 0x00, 0xd8, 0x00, 0x88, 0x00, 0xb3, 0x00, 0x33, 0x00, 0x3d, 0x00,
0x88, 0x00, 0x8d, 0x00, 0x33, 0x03, 0x3b, 0x00, 0x88, 0x01, 0x93, 0x00, 0x33, 0x06, 0xc8, 0x00,
0x88, 0x00, 0xf3, 0x00, 0x33, 0x2f, 0x3b, 0x00, 0x88, 0x01, 0x4c, 0x00, 0x88, 0x00, 0x8d, 0x00,
0x33, 0x02, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xf8, 0x00, 0x88, 0x00, 0x63, 0x00,
0x33, 0x03, 0xb8, 0x00, 0x88, 0x00, 0x84, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00,
0x33, 0x01, 0xc8, 0x00, 0x88, 0x00, 0xc3, 0x00, 0x33, 0x00, 0x3a, 0x00, 0x88, 0x00, 0x8d, 0x00,
0xd8, 0x00, 0x88, 0x00, 0xb3, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x03,
0x3b, 0x00, 0x88, 0x01, 0x93, 0x00, 0x33, 0x06, 0xc8, 0x00, 0x88, 0x00, 0xf3, 0x00, 0x33, 0x2f,
0x39, 0x00, 0x88, 0x01, 0xc7, 0x00, 0x88, 0x00, 0x8a, 0x00, 0x33, 0x02, 0x3d, 0x00, 0x88, 0x00,
0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00, 0x88, 0x00, 0x8a, 0x00, 0x33, 0x03, 0xe8, 0x00, 0x88, 0x00,
0xf3, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00, 0x88, 0x00,
0xc3, 0x00, 0x33, 0x01, 0x68, 0x00, 0x88, 0x00, 0x78, 0x00, 0x88, 0x00, 0xb3, 0x00, 0x33, 0x00,
0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x03, 0x3b, 0x00, 0x88, 0x01, 0x93, 0x00, 0x33, 0x06,
0xc8, 0x00, 0x88, 0x00, 0xf3, 0x00, 0x33, 0x30, 0xd8, 0x00, 0x88, 0x02, 0x79, 0x00, 0x33, 0x02,
0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0x48, 0x00, 0x88, 0x00, 0x8e, 0x00, 0x43, 0x00,
0x33, 0x01, 0x3c, 0x00, 0x88, 0x01, 0xb3, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00,
0x33, 0x01, 0xc8, 0x00, 0x88, 0x00, 0xc3, 0x00, 0x33, 0x01, 0x48, 0x00, 0x88, 0x02, 0xb3, 0x00,
0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x03, 0x3b, 0x00, 0x88, 0x01, 0x93, 0x00,
0x33, 0x06, 0xc8, 0x00, 0x88, 0x00, 0xf3, 0x00, 0x33, 0x30, 0xa8, 0x00, 0x88, 0x02, 0xc3, 0x00,
0x33, 0x02, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0x3c, 0x00, 0x88, 0x01, 0xfb, 0x00,
0x43, 0x00, 0x94, 0x00, 0xd8, 0x00, 0x88, 0x00, 0x8f, 0x00, 0x93, 0x00, 0x33, 0x00, 0x3d, 0x00,
0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00, 0x88, 0x00, 0xc3, 0x00, 0x33, 0x01, 0x3c, 0x00,
0x88, 0x02, 0xb3, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x03, 0x3b, 0x00,
0x88, 0x01, 0x93, 0x00, 0x33, 0x06, 0xc8, 0x00, 0x88, 0x00, 0xf3, 0x00, 0x33, 0x30, 0x97, 0x00,
0x88, 0x02, 0xa3, 0x00, 0x33, 0x02, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0x39, 0x00,
0x68, 0x00, 0x88, 0x05, 0x8a, 0x00, 0x33, 0x01, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01,
0xc8, 0x00, 0x88, 0x00, 0xc3, 0x00, 0x33, 0x01, 0x39, 0x00, 0x78, 0x00, 0x88, 0x01, 0xb3, 0x00,
0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x03, 0x3b, 0x00, 0x88, 0x01, 0x93, 0x00,
0x33, 0x06, 0xc8, 0x00, 0x88, 0x00, 0xf3, 0x00, 0x33, 0x30, 0x3c, 0x00, 0x88, 0x01, 0x8f, 0x00,
0x33, 0x03, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x02, 0x9d, 0x00, 0x88, 0x05, 0xb3, 0x00,
0x33, 0x01, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00, 0x88, 0x00, 0xc3, 0x00,
0x33, 0x02, 0xb8, 0x00, 0x88, 0x01, 0xb3, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00,
0x33, 0x03, 0x3b, 0x00, 0x88, 0x01, 0x93, 0x00, 0x33, 0x06, 0xc8, 0x00, 0x88, 0x00, 0xf3, 0x00,
0x33, 0x30, 0x3a, 0x00, 0x88, 0x01, 0x8c, 0x00, 0x33, 0x03, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00,
0x33, 0x03, 0xb7, 0x00, 0x88, 0x03, 0xfa, 0x00, 0x33, 0x02, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00,
0x33, 0x01, 0xc8, 0x00, 0x88, 0x00, 0xc3, 0x00, 0x33, 0x02, 0x3e, 0x00, 0x88, 0x01, 0xb3, 0x00,
0x33, 0x00, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x03, 0x3b, 0x00, 0x88, 0x01, 0x93, 0x00,
0x33, 0x06, 0xc8, 0x00, 0x88, 0x00, 0xf3, 0x00, 0x33, 0x31, 0xf8, 0x00, 0x88, 0x00, 0x84, 0x00,
0x33, 0x03, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x03, 0x39, 0x00, 0xad, 0x00, 0x67, 0x00,
0xfe, 0x00, 0xca, 0x00, 0x33, 0x03, 0x3d, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x33, 0x01, 0xc8, 0x00,
0x88, 0x00, 0xc3, 0x00, 0x33, 0x02, 0x3a, 0x00, 0x88, 0x01, 0xb3, 0x00, 0x33, 0x00, 0x3d, 0x00,
0x88, 0x00, 0x8d, 0x00, 0x33, 0x03, 0x3b, 0x00, 0x88, 0x01, 0x93, 0x00, 0x33, 0x06, 0xc8, 0x00,
0x88, 0x00, 0xf3, 0x00, 0x33, 0xff, 0x33, 0xff, 0x33, 0xff, 0x33, 0xff, 0x33, 0xff, 0x33, 0xff,
0x33, 0x30, 0x39, 0x00, 0xc9, 0x00, 0x33, 0x0b, 0x3a, 0x00, 0xb9, 0x00, 0x33, 0x5d, 0x9e, 0x00,
0x5a, 0x00, 0x33, 0x0b, 0x3c, 0x00, 0x5c, 0x00, 0x33, 0x09, 0x45, 0x00, 0x55, 0x00, 0xc3, 0x00,
0x33, 0x03, 0xe5, 0x00, 0x55, 0x03, 0x56, 0x00, 0x33, 0x03, 0x3a, 0x00, 0xce, 0x00, 0x7f, 0x00,
0xda, 0x00, 0x33, 0x04, 0x9b, 0x00, 0xdf, 0x00, 0x7e, 0x00, 0xca, 0x00, 0x33, 0x05, 0xac, 0x00,
0xe7, 0x00, 0xed, 0x00, 0xb3, 0x00, 0x33, 0x2b, 0xd5, 0x00, 0xc3, 0x00, 0x33, 0x0b, 0x39, 0x00,
0xe5, 0x00, 0xb3, 0x00, 0x33, 0x08, 0xc5, 0x00, 0x55, 0x00, 0xb3, 0x00, 0x33, 0x02, 0x39, 0x00,
0x55, 0x04, 0x5d, 0x00, 0x33, 0x02, 0x39, 0x00, 0xd5, 0x00, 0x55, 0x02, 0xd3, 0x00, 0x33, 0x02,
0x3a, 0x00, 0xf5, 0x00, 0x55, 0x02, 0xd3, 0x00, 0x33, 0x03, 0x9d, 0x00, 0x55, 0x02, 0x5e, 0x00,
0x43, 0x00, 0x33, 0x29, 0x3b, 0x00, 0x5d, 0x00, 0x93, 0x00, 0x3a, 0x00, 0xc9, 0x00, 0x33, 0x07,
0x3a, 0x00, 0xc9, 0x00, 0x33, 0x00, 0x97, 0x00, 0x74, 0x00, 0x33, 0x07, 0x3a, 0x00, 0x55, 0x01,
0xc3, 0x00, 0x33, 0x02, 0x34, 0x00, 0x55, 0x04, 0x56, 0x00, 0x33, 0x02, 0x9e, 0x00, 0x55, 0x03,
0x5d, 0x00, 0x33, 0x02, 0xa5, 0x00, 0x55, 0x03, 0x56, 0x00, 0x93, 0x00, 0x33, 0x01, 0x39, 0x00,
0x65, 0x00, 0x55, 0x03, 0x74, 0x00, 0x33, 0x29, 0x97, 0x00, 0xf4, 0x00, 0x33, 0x00, 0x47, 0x00,
0x74, 0x00, 0x33, 0x07, 0x3b, 0x00, 0x56, 0x00, 0x93, 0x00, 0x3a, 0x00, 0x5d, 0x00, 0x33, 0x07,
0xa5, 0x00, 0x55, 0x01, 0xb3, 0x00, 0x33, 0x02, 0x3a, 0x00, 0x55, 0x04, 0x5d, 0x00, 0x33, 0x02,
0xd5, 0x00, 0x55, 0x04, 0xa3, 0x00, 0x33, 0x00, 0x39, 0x00, 0x75, 0x00, 0x55, 0x04, 0xc3, 0x00,
0x33, 0x01, 0x3b, 0x00, 0x55, 0x04, 0x56, 0x00, 0x33, 0x29, 0xc5, 0x00, 0xb3, 0x00, 0x39, 0x00,
0xe5, 0x00, 0xa3, 0x00, 0x33, 0x08, 0xc5, 0x00, 0xc3, 0x00, 0x33, 0x00, 0x65, 0x00, 0xa3, 0x00,
0x33, 0x05, 0x3c, 0x00, 0x55, 0x02, 0xc3, 0x00, 0x33, 0x02, 0x3c, 0x00, 0x55, 0x00, 0x5a, 0x00,
0x33, 0x05, 0x3a, 0x00, 0x55, 0x01, 0x64, 0x00, 0x94, 0x00, 0xf5, 0x00, 0x55, 0x00, 0xd3, 0x00,
0x33, 0x00, 0x3b, 0x00, 0x55, 0x01, 0xb9, 0x00, 0x3a, 0x00, 0xe5, 0x00, 0x55, 0x00, 0x59, 0x00,
0x33, 0x01, 0x3f, 0x00, 0x55, 0x00, 0x56, 0x00, 0x43, 0x00, 0x46, 0x00, 0x55, 0x01, 0x43, 0x00,
0x33, 0x27, 0x39, 0x00, 0x7f, 0x00, 0x93, 0x00, 0x3c, 0x00, 0x5c, 0x00, 0x33, 0x00, 0x3b, 0x00,
0xd3, 0x00, 0x33, 0x03, 0x34, 0x00, 0x6a, 0x00, 0x33, 0x00, 0x9e, 0x00, 0x54, 0x00, 0x33, 0x00,
0xa5, 0x00, 0xc9, 0x00, 0x33, 0x04, 0x3a, 0x00, 0xe5, 0x00, 0x55, 0x02, 0xb3, 0x00, 0x33, 0x02,
0x3d, 0x00, 0x55, 0x00, 0x54, 0x00, 0x33, 0x05, 0x3d, 0x00, 0x55, 0x00, 0x57, 0x00, 0x93, 0x00,
0x33, 0x00, 0xa5, 0x00, 0x55, 0x00, 0x79, 0x00, 0x33, 0x00, 0x36, 0x00, 0x55, 0x00, 0x5c, 0x00,
0x33, 0x01, 0x97, 0x00, 0x55, 0x00, 0x5b, 0x00, 0x33, 0x01, 0x45, 0x00, 0x55, 0x00, 0xf9, 0x00,
0x33, 0x00, 0x34, 0x00, 0x55, 0x01, 0xa3, 0x00, 0x33, 0x27, 0x3a, 0x00, 0x5c, 0x00, 0x33, 0x00,
0x97, 0x00, 0xf9, 0x00, 0x33, 0x00, 0xa5, 0x00, 0xe3, 0x00, 0x33, 0x03, 0x34, 0x00, 0x5f, 0x00,
0x43, 0x00, 0x3a, 0x00, 0x5d, 0x00, 0x33, 0x00, 0x3e, 0x00, 0x59, 0x00, 0x33, 0x04, 0xb5, 0x00,
0x55, 0x00, 0x57, 0x00, 0xf5, 0x00, 0x55, 0x00, 0xc3, 0x00, 0x33, 0x02, 0x37, 0x00, 0x55, 0x00,
0x59, 0x00, 0x33, 0x05, 0x35, 0x00, 0x55, 0x00, 0x5c, 0x00, 0x33, 0x01, 0x9f, 0x00, 0x6c, 0x00,
0xb9, 0x00, 0x33, 0x00, 0x3f, 0x00, 0x55, 0x00, 0x5a, 0x00, 0x33, 0x01, 0x9c, 0x00, 0x55, 0x00,
0x5d, 0x00, 0x33, 0x01, 0x9b, 0x00, 0xc6, 0x00, 0xc3, 0x00, 0x33, 0x00, 0x39, 0x00, 0x55, 0x01,
0x43, 0x00, 0x33, 0x27, 0x3c, 0x00, 0x54, 0x00, 0x33, 0x00, 0xb5, 0x00, 0xb3, 0x00, 0x39, 0x00,
0x77, 0x00, 0x43, 0x00, 0x33, 0x04, 0xb5, 0x00, 0xd3, 0x00, 0x33, 0x00, 0x65, 0x00, 0x43, 0x00,
0x3b, 0x00, 0x5a, 0x00, 0x33, 0x04, 0xa5, 0x00, 0x55, 0x00, 0xf4, 0x00, 0x65, 0x00, 0x55, 0x00,
0xb3, 0x00, 0x33, 0x02, 0x95, 0x00, 0x55, 0x00, 0xfa, 0x00, 0xdf, 0x00, 0xfd, 0x00, 0xa9, 0x00,
0x33, 0x02, 0x45, 0x00, 0x55, 0x00, 0x5a, 0x00, 0x33, 0x05, 0x3f, 0x00, 0x55, 0x00, 0x5a, 0x00,
0x33, 0x01, 0x3c, 0x00, 0x55, 0x00, 0x57, 0x00, 0x33, 0x05, 0x3a, 0x00, 0x55, 0x00, 0x5f, 0x00,
0x93, 0x00, 0x33, 0x27, 0x3f, 0x00, 0x79, 0x00, 0x33, 0x00, 0xd5, 0x00, 0x43, 0x00, 0x3b, 0x00,
0x5b, 0x00, 0x33, 0x01, 0xac, 0x00, 0xdc, 0x00, 0x93, 0x00, 0x33, 0x00, 0x36, 0x00, 0x54, 0x00,
0x33, 0x00, 0xb5, 0x00, 0xb3, 0x00, 0x3a, 0x00, 0x5c, 0x00, 0x33, 0x04, 0xb5, 0x00, 0x5c, 0x00,
0x93, 0x00, 0xd5, 0x00, 0x55, 0x00, 0xc3, 0x00, 0x33, 0x02, 0xa5, 0x00, 0x55, 0x03, 0x56, 0x00,
0x93, 0x00, 0x33, 0x01, 0xa5, 0x00, 0x55, 0x00, 0x59, 0x00, 0x33, 0x05, 0x36, 0x00, 0x55, 0x00,
0x5c, 0x00, 0x33, 0x01, 0x3e, 0x00, 0x55, 0x01, 0x93, 0x00, 0x33, 0x03, 0x39, 0x00, 0xaf, 0x00,
0x55, 0x00, 0x5a, 0x00, 0x33, 0x28, 0x95, 0x00, 0x63, 0x00, 0x33, 0x00, 0x7f, 0x00, 0x33, 0x00,
0x3e, 0x00, 0x74, 0x00, 0x33, 0x00, 0x3a, 0x00, 0x55, 0x01, 0xf4, 0x00, 0x33, 0x00, 0x3a, 0x00,
0x5c, 0x00, 0x33, 0x00, 0x45, 0x00, 0xc3, 0x00, 0x39, 0x00, 0x5d, 0x00, 0x33, 0x04, 0xac, 0x00,
0x93, 0x00, 0x33, 0x00, 0xd5, 0x00, 0x55, 0x00, 0xb3, 0x00, 0x33, 0x02, 0xb5, 0x00, 0x55, 0x04,
0xf9, 0x00, 0x33, 0x01, 0xb5, 0x00, 0x55, 0x00, 0x53, 0x00, 0xad, 0x00, 0xff, 0x00, 0x6b, 0x00,
0x33, 0x02, 0x3c, 0x00, 0x55, 0x01, 0xc9, 0x00, 0x34, 0x00, 0xd5, 0x00, 0x55, 0x01, 0x43, 0x00,
0x33, 0x03, 0xd5, 0x00, 0x55, 0x00, 0x57, 0x00, 0xb3, 0x00, 0x33, 0x28, 0x45, 0x00, 0xc3, 0x00,
0x39, 0x00, 0x5d, 0x00, 0x33, 0x00, 0x95, 0x00, 0x63, 0x00, 0x33, 0x00, 0x97, 0x00, 0x55, 0x01,
0x5d, 0x00, 0x33, 0x00, 0x39, 0x00, 0x5d, 0x00, 0x33, 0x00, 0x35, 0x00, 0x63, 0x00, 0x39, 0x00,
0x7e, 0x00, 0x33, 0x07, 0xd5, 0x00, 0x55, 0x00, 0xc3, 0x00, 0x33, 0x02, 0xc5, 0x00, 0x55, 0x04,
0x5d, 0x00, 0x33, 0x01, 0xb5, 0x00, 0x55, 0x00, 0xfc, 0x00, 0x55, 0x02, 0xf4, 0x00, 0x33, 0x01,
0x39, 0x00, 0x55, 0x06, 0x43, 0x00, 0x33, 0x03, 0xe5, 0x00, 0x55, 0x00, 0x5c, 0x00, 0x33, 0x29,
0x45, 0x00, 0xc3, 0x00, 0x34, 0x00, 0x5c, 0x00, 0x33, 0x00, 0x45, 0x00, 0xc3, 0x00, 0x33, 0x00,
0xa5, 0x00, 0x55, 0x01, 0x57, 0x00, 0x93, 0x00, 0x33, 0x00, 0x7e, 0x00, 0x33, 0x00, 0x37, 0x00,
0xe3, 0x00, 0x33, 0x00, 0xff, 0x00, 0x33, 0x07, 0xd5, 0x00, 0x55, 0x00, 0xb3, 0x00, 0x33, 0x02,
0xe5, 0x00, 0x55, 0x00, 0xea, 0x00, 0x39, 0x00, 0xaf, 0x00, 0x55, 0x01, 0x43, 0x00, 0x33, 0x00,
0xc5, 0x00, 0x55, 0x04, 0x57, 0x00, 0x43, 0x00, 0x33, 0x01, 0xb5, 0x00, 0x55, 0x05, 0xa3, 0x00,
0x33, 0x03, 0x55, 0x02, 0xfa, 0x00, 0x33, 0x28, 0x45, 0x00, 0xc3, 0x00, 0x34, 0x00, 0x5c, 0x00,
0x33, 0x00, 0x45, 0x00, 0xd3, 0x00, 0x33, 0x00, 0x45, 0x00, 0x55, 0x01, 0x57, 0x00, 0x33, 0x01,
0x56, 0x00, 0x33, 0x00, 0x37, 0x00, 0xe3, 0x00, 0x33, 0x00, 0xff, 0x00, 0x33, 0x07, 0xd5, 0x00,
0x55, 0x00, 0xc3, 0x00, 0x33, 0x02, 0xbc, 0x00, 0x66, 0x00, 0x93, 0x00, 0x33, 0x00, 0x3a, 0x00,
0x55, 0x01, 0xb3, 0x00, 0x33, 0x00, 0xc5, 0x00, 0x55, 0x05, 0x63, 0x00, 0x33, 0x01, 0x3b, 0x00,
0x55, 0x02, 0x7c, 0x00, 0x55, 0x01, 0x43, 0x00, 0x33, 0x03, 0x93, 0x00, 0x9b, 0x00, 0x55, 0x01,
0xa3, 0x00, 0x33, 0x27, 0x45, 0x00, 0xd3, 0x00, 0x39, 0x00, 0x56, 0x00, 0x33, 0x00, 0x35, 0x00,
0x63, 0x00, 0x33, 0x00, 0x9f, 0x00, 0x55, 0x01, 0x5c, 0x00, 0x33, 0x00, 0x34, 0x00, 0x5d, 0x00,
0x33, 0x00, 0x95, 0x00, 0x63, 0x00, 0x33, 0x00, 0x5e, 0x00, 0x33, 0x07, 0xd5, 0x00, 0x55, 0x00,
0xb3, 0x00, 0x33, 0x07, 0xe5, 0x00, 0x55, 0x00, 0xd3, 0x00, 0x33, 0x00, 0xb5, 0x00, 0x55, 0x01,
0xb9, 0x00, 0x34, 0x00, 0xd5, 0x00, 0x55, 0x00, 0x54, 0x00, 0x33, 0x02, 0x9c, 0x00, 0xe7, 0x00,
0xec, 0x00, 0x4a, 0x00, 0x55, 0x01, 0x43, 0x00, 0x33, 0x05, 0xb5, 0x00, 0x55, 0x00, 0xe3, 0x00,
0x33, 0x27, 0x35, 0x00, 0x63, 0x00, 0x33, 0x00, 0xff, 0x00, 0x33, 0x00, 0x36, 0x00, 0x54, 0x00,
0x33, 0x00, 0x3a, 0x00, 0xf5, 0x00, 0x55, 0x00, 0x69, 0x00, 0x33, 0x00, 0x3b, 0x00, 0x5b, 0x00,
0x33, 0x00, 0x45, 0x00, 0xc3, 0x00, 0x39, 0x00, 0x5d, 0x00, 0x33, 0x07, 0xd5, 0x00, 0x55, 0x00,
0xc3, 0x00, 0x33, 0x07, 0xd5, 0x00, 0x55, 0x00, 0xd3, 0x00, 0x33, 0x00, 0xb5, 0x00, 0x55, 0x00,
0x5c, 0x00, 0x33, 0x01, 0x9f, 0x00, 0x55, 0x00, 0x5b, 0x00, 0x33, 0x05, 0x3b, 0x00, 0x55, 0x01,
0x93, 0x00, 0x33, 0x05, 0x45, 0x00, 0x55, 0x00, 0x54, 0x00, 0x33, 0x27, 0x3e, 0x00, 0x53, 0x00,
0x33, 0x00, 0xd5, 0x00, 0x43, 0x00, 0x3b, 0x00, 0x5c, 0x00, 0x33, 0x01, 0x9b, 0x00, 0xba, 0x00,
0x93, 0x00, 0x33, 0x00, 0x3e, 0x00, 0x59, 0x00, 0x33, 0x00, 0xb5, 0x00, 0xa3, 0x00, 0x3a, 0x00,
0x5b, 0x00, 0x33, 0x07, 0xd5, 0x00, 0x55, 0x00, 0xb3, 0x00, 0x33, 0x07, 0xc5, 0x00, 0x55, 0x00,
0xd3, 0x00, 0x33, 0x00, 0x45, 0x00, 0x55, 0x00, 0x5a, 0x00, 0x33, 0x01, 0x3d, 0x00, 0x55, 0x00,
0x5c, 0x00, 0x33, 0x05, 0x3c, 0x00, 0x55, 0x00, 0x5f, 0x00, 0x33, 0x06, 0x95, 0x00, 0x55, 0x00,
0x5a, 0x00, 0x33, 0x27, 0x3c, 0x00, 0x5a, 0x00, 0x33, 0x00, 0xa5, 0x00, 0xc3, 0x00, 0x39, 0x00,
0xe5, 0x00, 0xa3, 0x00, 0x33, 0x04, 0xc5, 0x00, 0xc3, 0x00, 0x33, 0x00, 0xf7, 0x00, 0x93, 0x00,
0x3c, 0x00, 0x5a, 0x00, 0x33, 0x07, 0xd5, 0x00, 0x55, 0x00, 0xc3, 0x00, 0x33, 0x01, 0x3a, 0x00,
0xcd, 0x00, 0xee, 0x00, 0x33, 0x02, 0xe5, 0x00, 0x55, 0x00, 0xc3, 0x00, 0x33, 0x00, 0x45, 0x00,
0x55, 0x00, 0x5a, 0x00, 0x33, 0x01, 0x3c, 0x00, 0x55, 0x00, 0x5b, 0x00, 0x33, 0x00, 0x34, 0x00,
0xcc, 0x00, 0x6d, 0x00, 0x33, 0x01, 0x3f, 0x00, 0x55, 0x00, 0x5d, 0x00, 0x33, 0x01, 0xac, 0x00,
0xde, 0x00, 0xb3, 0x00, 0x33, 0x01, 0x45, 0x00, 0x55, 0x00, 0x5a, 0x00, 0x33, 0x27, 0x3a, 0x00,
0x5c, 0x00, 0x33, 0x00, 0x9f, 0x00, 0x74, 0x00, 0x33, 0x00, 0xa7, 0x00, 0x73, 0x00, 0x33, 0x03,
0x3a, 0x00, 0x5e, 0x00, 0x93, 0x00, 0x3b, 0x00, 0x5c, 0x00, 0x93, 0x00, 0x3f, 0x00, 0x73, 0x00,
0x33, 0x07, 0xd5, 0x00, 0x55, 0x00, 0xb3, 0x00, 0x33, 0x01, 0x3a, 0x00, 0x55, 0x01, 0xa3, 0x00,
0x33, 0x00, 0x3a, 0x00, 0x55, 0x01, 0xa3, 0x00, 0x33, 0x00, 0x36, 0x00, 0x55, 0x00, 0x5d, 0x00,
0x33, 0x01, 0x3e, 0x00, 0x55, 0x00, 0x5b, 0x00, 0x33, 0x00, 0x3a, 0x00, 0x55, 0x00, 0x57, 0x00,
0x93, 0x00, 0x33, 0x00, 0xa5, 0x00, 0x55, 0x00, 0x5a, 0x00, 0x33, 0x01, 0xc5, 0x00, 0x55, 0x00,
0xf3, 0x00, 0x33, 0x01, 0xc5, 0x00, 0x55, 0x00, 0x54, 0x00, 0x33, 0x28, 0xf7, 0x00, 0x93, 0x00,
0x3b, 0x00, 0x5d, 0x00, 0x33, 0x00, 0x3a, 0x00, 0xb3, 0x00, 0x33, 0x03, 0x39, 0x00, 0xc4, 0x00,
0x33, 0x00, 0x9f, 0x00, 0x74, 0x00, 0x33, 0x00, 0xa5, 0x00, 0xc3, 0x00, 0x33, 0x07, 0xd5, 0x00,
0x55, 0x00, 0xc3, 0x00, 0x33, 0x02, 0x75, 0x00, 0x55, 0x00, 0x7a, 0x00, 0x93, 0x00, 0xaf, 0x00,
0x55, 0x00, 0x5f, 0x00, 0x33, 0x01, 0x3b, 0x00, 0x55, 0x01, 0xc4, 0x00, 0x34, 0x00, 0xc5, 0x00,
0x55, 0x00, 0x54, 0x00, 0x33, 0x00, 0x39, 0x00, 0x85, 0x00, 0x55, 0x00, 0xd4, 0x00, 0x3a, 0x00,
0x75, 0x00, 0x55, 0x00, 0x79, 0x00, 0x33, 0x01, 0x45, 0x00, 0x55, 0x00, 0x56, 0x00, 0x49, 0x00,
0x9c, 0x00, 0x55, 0x01, 0xe3, 0x00, 0x33, 0x28, 0xb5, 0x00, 0xc3, 0x00, 0x33, 0x00, 0xd5, 0x00,
0xc3, 0x00, 0x33, 0x07, 0x39, 0x00, 0x65, 0x00, 0xb3, 0x00, 0x33, 0x00, 0xe5, 0x00, 0x43, 0x00,
0x33, 0x07, 0xd5, 0x00, 0x55, 0x00, 0xb3, 0x00, 0x33, 0x02, 0xb5, 0x00, 0x55, 0x04, 0x5a, 0x00,
0x33, 0x02, 0xe5, 0x00, 0x55, 0x04, 0xd3, 0x00, 0x33, 0x01, 0xc5, 0x00, 0x55, 0x04, 0xb3, 0x00,
0x33, 0x01, 0x3d, 0x00, 0x55, 0x05, 0xa3, 0x00, 0x33, 0x28, 0x9e, 0x00, 0x54, 0x00, 0x33, 0x00,
0x4e, 0x00, 0x54, 0x00, 0x33, 0x07, 0x3b, 0x00, 0x5d, 0x00, 0x33, 0x00, 0x3b, 0x00, 0x5c, 0x00,
0x33, 0x08, 0xd5, 0x00, 0x55, 0x00, 0xc3, 0x00, 0x33, 0x02, 0x9d, 0x00, 0x55, 0x04, 0xc3, 0x00,
0x33, 0x02, 0x47, 0x00, 0x55, 0x03, 0x5f, 0x00, 0x93, 0x00, 0x33, 0x01, 0x97, 0x00, 0x55, 0x03,
0x5c, 0x00, 0x33, 0x02, 0x39, 0x00, 0xf5, 0x00, 0x55, 0x03, 0x5b, 0x00, 0x33, 0x29, 0x3a, 0x00,
0x5e, 0x00, 0x93, 0x00, 0x34, 0x00, 0xb3, 0x00, 0x33, 0x07, 0x39, 0x00, 0xb3, 0x00, 0x33, 0x00,
0x45, 0x00, 0xf9, 0x00, 0x33, 0x08, 0xd5, 0x00, 0x55, 0x00, 0xb3, 0x00, 0x33, 0x02, 0x39, 0x00,
0xc5, 0x00, 0x55, 0x02, 0x5b, 0x00, 0x33, 0x03, 0x34, 0x00, 0xe5, 0x00, 0x55, 0x02, 0x69, 0x00,
0x33, 0x02, 0x34, 0x00, 0xf5, 0x00, 0x55, 0x01, 0x58, 0x00, 0xb9, 0x00, 0x33, 0x03, 0x96, 0x00,
0x55, 0x02, 0x57, 0x00, 0xb3, 0x00, 0x33, 0x2a, 0xc5, 0x00, 0xd3, 0x00, 0x33, 0x0b, 0x34, 0x00,
0xf5, 0x00, 0xa3, 0x00, 0x33, 0x08, 0xd5, 0x00, 0x55, 0x00, 0xc3, 0x00, 0x33, 0x03, 0x94, 0x00,
0xce, 0x00, 0x7f, 0x00, 0x6b, 0x00, 0x43, 0x00, 0x33, 0x04, 0x9a, 0x00, 0xdf, 0x00, 0x7e, 0x00,
0xca, 0x00, 0x33, 0x04, 0x4b, 0x00, 0x67, 0x00, 0xf6, 0x00, 0xb4, 0x00, 0x33, 0x05, 0xac, 0x00,
0xe7, 0x00, 0xf6, 0x00, 0xb9, 0x00, 0x33, 0x2b, 0x3d, 0x00, 0x5a, 0x00, 0x33, 0x0b, 0x3c, 0x00,
0x5b, 0x00, 0x33, 0x5d, 0x39, 0x00, 0xa9, 0x00, 0x33, 0x0b, 0x34, 0x00, 0xa3, 0x00, 0x33, 0xff,
0x33, 0xff, 0x33, 0xff, 0x33, 0xff, 0x33, 0xff, 0x33, 0xff, 0x33, 0xff, 0x33, 0xff, 0x33, 0xff,
0x33, 0xff, 0x33, 0xff, 0x33, 0xe2, 0x23, 0x00, 0x33, 0x6b, 0x32, 0x00, 0x23, 0x00, 0x33, 0x6b,
0x32, 0x00, 0x13, 0x00, 0x33, 0x6b, 0x31, 0x00, 0x02, 0x00, 0x33, 0x6b, 0x20, 0x00, 0x01, 0x00,
0x33, 0x6b, 0x10, 0x00, 0x00, 0x00, 0x23, 0x00, 0x33, 0x69, 0x32, 0x00, 0x00, 0x01, 0x02, 0x00,
0x33, 0x69, 0x20, 0x00, 0x00, 0x02, 0x23, 0x00, 0x33, 0x67, 0x32, 0x00, 0x00, 0x03, 0x01, 0x00,
0x23, 0x00, 0x33, 0x65, 0x32, 0x00, 0x10, 0x00, 0x00, 0x04, 0x01, 0x00, 0x22, 0x00, 0x33, 0x63,
0x22, 0x00, 0x10, 0x00, 0x00, 0x02,
};
const uint32_t image_vicinity_pal[] = {
// image_vicinity_pal Pallete (RGB565A8*16)
0x000000, 0x2effff, 0x8dffff, 0xfeffff,
0xffe73c, 0xff0000, 0xff738e, 0xff2947,
0xff008b, 0xfff79e, 0xffce7a, 0xffb5b7,
0xff9cf4, 0xff7bf1, 0xff5acc, 0xff420a,
};
const image_t image_vicinity = {
.width = 220,
.height = 138,
.pixels = {
.input = image_vicinity_pixels,
.bits = 4,
.size = sizeof(image_vicinity_pixels),
.encoding = RLE_RLE,
},
.pallete = image_vicinity_pal,
};

View File

@ -12,11 +12,12 @@
#include "image_aic_konami.h" #include "image_aic_konami.h"
#include "image_aic_sega.h" #include "image_aic_sega.h"
#include "image_aic_nesica.h" #include "image_aic_nesica.h"
#include "image_eamuse.h"
#include "image_mifare.h" #include "image_mifare.h"
#include "image_bana.h" #include "image_bana.h"
#include "image_aime.h" #include "image_aime.h"
#include "image_nesica.h" #include "image_nesica.h"
#include "image_vicinity.h"
#include "image_eamuse.h"
#include "font_conthrax.h" #include "font_conthrax.h"
#include "font_ltsaeada.h" #include "font_ltsaeada.h"