feat: F1/F4/F5 phase-1 skeleton + insane-roadmap docs rework

- docs: ROADMAP_INSANE (five-phase plan), TASKBOARD, STATUS single source of truth, PHILOSOPHY; rewrite README/ARCHITECTURE non-goals; archive ROADMAP phase 0-9; drop contradictory dev-plan doc
- F1: unified lotus panic screen (panic_full: fb draw + regs dump + DRR crash archive); IDT exception path and dkm_api_panic routed through it
- F4: leveled boot selftest (FUCK [boot] selftest=0|1|2), IDT/CS fatal checks + DMA probe
- F5: [dsk] skip_firstinit direct-to-desktop; build/configs dev+release templates now injected
This commit is contained in:
Linehu
2026-10-01 23:29:49 +08:00
parent 1074962546
commit e4307ff0ec
43 changed files with 3078 additions and 385 deletions
+32 -19
View File
@@ -2,6 +2,7 @@
#include <utsm/log.h>
#include <utsm/types.h>
#include <utsm/instr.h>
#include <utsm/panic.h>
/* IDT gate descriptor (64-bit) */
typedef struct __attribute__((packed)) {
@@ -628,29 +629,41 @@ void idt_handler(isr_frame *frame) {
return;
}
/* CR2: #PF 的 fault 线性地址;CR3: 当前页表基址。
* 寄存器 dump 用于定位 fault 指令的操作数来源。 */
* 寄存器 dump 用于定位 fault 指令的操作数来源。
* F1: 异常统一走莲花崩溃屏(panic_full 内部保留串口 dump +
* DRR 归档 + 帧缓冲直绘,最后 halt——不返回)。 */
u64 cr2, cr3;
__asm__ volatile("mov %%cr2, %0" : "=r"(cr2));
__asm__ volatile("mov %%cr3, %0" : "=r"(cr3));
(void)cr3;
INSTR_PROBE(EXCP, frame->vector, frame->error_code, frame->rip, 0);
log_error("[IDT] exception");
log_hex64("[IDT] vector=", frame->vector);
log_hex64("[IDT] err=", frame->error_code);
log_hex64("[IDT] rip=", frame->rip);
log_hex64("[IDT] cr2=", cr2);
log_hex64("[IDT] cr3=", cr3);
log_hex64("[IDT] rax=", frame->rax);
log_hex64("[IDT] rcx=", frame->rcx);
log_hex64("[IDT] rdx=", frame->rdx);
log_hex64("[IDT] rsi=", frame->rsi);
log_hex64("[IDT] rdi=", frame->rdi);
log_hex64("[IDT] r8=", frame->r8);
log_hex64("[IDT] r9=", frame->r9);
log_hex64("[IDT] r10=", frame->r10);
log_hex64("[IDT] r11=", frame->r11);
log_hex64("[IDT] cs=", frame->cs);
log_hex64("[IDT] rflags=", frame->rflags);
for (;;) { __asm__ volatile ("cli; hlt"); }
panic_regs pr;
pr.rip = frame->rip;
pr.rsp = 0; /* isr_frame 不含 rsp(stub 内使用),置 0 */
pr.rflags = frame->rflags;
pr.cs = frame->cs;
pr.err = frame->error_code;
pr.vector = frame->vector;
pr.cr2 = cr2;
pr.rax = frame->rax;
pr.rcx = frame->rcx;
pr.rdx = frame->rdx;
pr.rsi = frame->rsi;
pr.rdi = frame->rdi;
pr.r8 = frame->r8;
pr.r9 = frame->r9;
pr.r10 = frame->r10;
pr.r11 = frame->r11;
char sym[16];
sym[0] = 'U'; sym[1] = 'T'; sym[2] = 'S'; sym[3] = 'M'; sym[4] = '-';
sym[5] = 'E'; sym[6] = 'X'; sym[7] = 'C';
u32 v = frame->vector;
u32 hi = (v >> 4) & 0xF, lo = v & 0xF;
sym[8] = (char)(hi < 10 ? '0' + hi : 'A' + hi - 10);
sym[9] = (char)(lo < 10 ? '0' + lo : 'A' + lo - 10);
sym[10] = 0;
panic_full(sym, "cpu exception", &pr);
for (;;) { __asm__ volatile ("cli; hlt"); } /* 兜底(panic_full 不返回) */
}
/* PIC IRQ: vectors 0x20-0x2F (32-47)
+8
View File
@@ -0,0 +1,8 @@
arch/x86_64/idt.o: arch\x86_64\idt.c include\utsm\idt.h \
include\utsm\types.h include\utsm\log.h include\utsm\instr.h \
include\utsm\panic.h
include\utsm\idt.h:
include\utsm\types.h:
include\utsm\log.h:
include\utsm\instr.h:
include\utsm\panic.h:
Binary file not shown.
+3 -1
View File
@@ -3,6 +3,7 @@
#include <utsm/idt.h>
#include <utsm/net.h>
#include <utsm/mm.h>
#include <utsm/panic.h>
static void dkm_api_info(const char *msg) {
log_info(msg);
@@ -17,7 +18,8 @@ static void dkm_api_error(const char *msg) {
}
static void dkm_api_panic(const char *msg) {
log_error(msg);
/* F1: 驱动 panic 统一走莲花崩溃屏(串口 dump + DRR 归档 + 帧缓冲) */
panic_full("DKM-PANIC", msg, 0);
for (;;) {
__asm__ volatile("cli; hlt");
}
+16
View File
@@ -0,0 +1,16 @@
dkm/kernel_api.o: dkm\kernel_api.c include\utsm\dkm.h \
include\utsm\types.h include\utsm\dma.h include\utsm\block.h \
include\utsm\net.h include\utsm\paging.h include\utsm\log.h \
include\utsm\idt.h include\utsm\mm.h include\utsm\panic.h \
dkm\..\arch\x86_64\limine.h
include\utsm\dkm.h:
include\utsm\types.h:
include\utsm\dma.h:
include\utsm\block.h:
include\utsm\net.h:
include\utsm\paging.h:
include\utsm\log.h:
include\utsm\idt.h:
include\utsm\mm.h:
include\utsm\panic.h:
dkm\..\arch\x86_64\limine.h:
Binary file not shown.
+24
View File
@@ -316,6 +316,30 @@ void drr_report_fault(const char *reason) {
g_drr.recovery_generation++;
}
/* ---- F1: 崩溃归档(panic_full 调用;crash_buf 写 symbol+msg+rip 简表) ----
* 返回 0=已归档;-1=DRR 未初始化(crash_buf 不可用)。 */
int drr_crash_archive(const char *symbol, const char *msg, const void *regs) {
if (!g_drr.initialized || !g_drr.crash_buf || g_drr.crash_buf_size == 0) {
return -1;
}
u64 i = 0;
u8 *b = g_drr.crash_buf;
u64 cap = g_drr.crash_buf_size - 1;
/* 头部标记 */
const char *magic = "CRASH1";
for (const char *s = magic; *s && i < cap; s++) b[i++] = (u8)*s;
b[i++] = '|';
for (const char *s = symbol ? symbol : "UNKNOWN"; *s && i < cap; s++) b[i++] = (u8)*s;
b[i++] = '|';
for (const char *s = msg ? msg : "-"; *s && i < cap; s++) b[i++] = (u8)*s;
b[i] = 0;
/* recovery generation 前进(归档计数) */
g_drr.recovery_generation++;
log_error("[DRR] crash archived");
log_hex64("[DRR] generation=", g_drr.recovery_generation);
return 0;
}
/* ---- Recovery Log ---- */
void drr_log_write_intent(u32 segment_slot, u64 offset, u64 len) {
if (!g_drr.initialized || !g_drr.log_base) return;
Binary file not shown.
+1
View File
@@ -2,6 +2,7 @@
#define UTSM_ASSERT_H
#include <utsm/log.h>
#include <utsm/panic.h>
#define UTSM_ASSERT(cond) do { if (!(cond)) { panic("assertion failed: " #cond); } } while (0)
+2
View File
@@ -105,6 +105,8 @@ void drr_init(void);
const u64 *drr_get_root_key(void);
u64 drr_recovery_generation(void);
void drr_report_fault(const char *reason);
/* F1: 崩溃归档(crash_buf 写入;返回 0=已归档,-1=DRR 未初始化) */
int drr_crash_archive(const char *symbol, const char *msg, const void *regs);
void drr_log_write_intent(u32 segment_slot, u64 offset, u64 len);
void drr_log_write_commit(u32 segment_slot, u64 offset, u64 len);
+36
View File
@@ -0,0 +1,36 @@
#ifndef UTSM_PANIC_H
#define UTSM_PANIC_H
#include <utsm/types.h>
/* ===================================================================
* F1: 内核 panic 统一兜底(莲花崩溃屏)
*
* 崩了也得崩出莲花:
* - 帧缓冲直接绘制(不走 console_fb 驱动——崩溃时驱动可能已挂)
* - 淡金莲花 + panic_symbol + 消息 + 寄存器简表
* - DRR 归档(crash_buf)后 halt
*
* 本路径只依赖:Limine framebuffer(Limine 常驻映射)+ serial + DRR
* Emergency Pool(静态区),不依赖堆/驱动/中断。
* =================================================================== */
/* 寄存器简表(可传 0:无异常帧的普通 panic) */
typedef struct panic_regs {
u64 rip;
u64 rsp;
u64 rflags;
u64 cs;
u64 err;
u64 vector;
u64 cr2;
u64 rax, rcx, rdx, rsi, rdi, r8, r9, r10, r11;
} panic_regs;
/* 统一 panic 入口:画莲花崩溃屏 + 串口日志 + DRR 归档 + halt(不返回) */
void panic_full(const char *symbol, const char *msg, const panic_regs *regs);
/* 兼容旧接口:panic("msg") = panic_full("UTSM-PANIC", msg, 0) */
void panic(const char *msg);
#endif /* UTSM_PANIC_H */
+136
View File
@@ -0,0 +1,136 @@
#include <utsm/log.h>
#include <utsm/types.h>
#include <utsm/panic.h>
#include <utsm/drr.h>
#include <utsm/dkm.h>
#include <utsm/dma.h>
#include "ini_parser.h"
/* ===================================================================
* F4: boot_ok 分级启动自检
*
* "知道自己是几成疯。"
* FUCK [boot] selftest=0|1|2:
* 0 = 关闭(仅打一行 skip)
* 1 = 快速:结构健全性检查(IDT/GDT/配置/DRR/调度器服务表)
* 2 = 全量:快速 + 功能探针(DMA alloc/write/free、段分配)
*
* 失败语义:致命项(IDT/CS)→ 莲花 panic;非致命项 → WARN 继续。
* 输出:串口 + 每项一行 [boot] 明细。
* =================================================================== */
/* 致命项返回 -1(调用方 halt / panic),非致命返回计数。 */
typedef struct {
int level;
int pass;
int warn;
int fail;
} bself_ctx;
static void bself_line(bself_ctx *c, const char *name, int fatal, int ok) {
if (ok) {
c->pass++;
log_info("[boot] selftest [OK] ");
log_info(name);
} else if (fatal) {
c->fail++;
log_error("[boot] selftest [FATAL]");
log_error(name);
} else {
c->warn++;
log_warn("[boot] selftest [WARN]");
log_warn(name);
}
}
/* IDTR 健全性:limit==4095(256 项)且 base 非零 */
static int check_idt(u64 *base_out) {
/* sidt 写 10 字节:limit(2) + base(8) */
u8 buf[10] __attribute__((aligned(2)));
__asm__ volatile("sidt %0" : "=m"(buf));
u16 limit = *(u16 *)&buf[0];
u64 base = *(u64 *)&buf[2];
*base_out = base;
return (limit == 4095) && (base != 0);
}
static int check_cs_valid(void) {
u64 cs;
__asm__ volatile("mov %%cs, %0" : "=r"(cs));
return cs != 0;
}
int boot_selftest_run(int level) {
bself_ctx c = { level, 0, 0, 0 };
log_info("[boot] selftest begin");
log_info("[boot] level:");
log_hex64("[boot] ", (u64)level);
if (level <= 0) {
log_info("[boot] selftest skipped (selftest=0)");
return 0;
}
/* ---- 致命项 1: IDT 覆盖 ---- */
u64 idt_base = 0;
int idt_ok = check_idt(&idt_base);
bself_line(&c, "IDT: limit/base", 1, idt_ok);
if (!idt_ok) {
panic_full("UTSM-BST", "IDT malformed at boot selftest", 0);
}
/* ---- 致命项 2: CS 有效 ---- */
int cs_ok = check_cs_valid();
bself_line(&c, "CS: ring0 selector", 1, cs_ok);
if (!cs_ok) {
panic_full("UTSM-BST", "CS invalid at boot selftest", 0);
}
/* ---- 非致命: DRR 初始化 ---- */
int drr_ok = drr_recovery_generation() >= 1;
bself_line(&c, "DRR: emergency pool + ckpt slots", 0, drr_ok);
/* ---- 非致命: 内核服务表(调度器) ---- */
int sched_ok = utsm_sched_get_api() != 0;
bself_line(&c, "SCHED: service table", 0, sched_ok);
/* ---- 非致命: kernel_api 平台信息 ---- */
const dkm_kernel_api *api = dkm_get_kernel_api();
bself_line(&c, "KAPI: kernel_api present", 0, api != 0);
if (level >= 2) {
/* ---- 功能探针: DMA 页分配 + 写读回 ---- */
dkm_dma_buffer buf;
int dma_ok = 0;
if (dma_alloc_pages(1, 4096, 0xFFFFFFFFULL, &buf) == 0 && buf.virt) {
volatile u64 *p = (volatile u64 *)buf.virt;
p[0] = 0x4C4F545553533FULL; /* "LOTUSS" 探针值 */
dma_ok = (p[0] == 0x4C4F545553533FULL);
if (dma_ok) {
/* 注意:当前 DMA 分配器无 free 接口,1 页探针为一次性成本 */
log_info("[boot] selftest dma probe page kept (no free API)");
}
}
bself_line(&c, "DMA: alloc+rw probe", 0, dma_ok);
}
log_info("[boot] selftest summary:");
log_hex64("[boot] pass=", (u64)c.pass);
log_hex64("[boot] warn=", (u64)c.warn);
log_hex64("[boot] fail=", (u64)c.fail);
log_info(c.fail ? "[boot] BOOT-OK: FATAL-FAIL" : "[boot] BOOT-OK");
return c.fail ? -1 : 0;
}
/* F1 验证钩子:FUCK [boot] panic_test=1 时触发莲花崩溃屏(默认 0)。
* 用于 QEMU 演示/回归:panic_full → 串口 dump + DRR 归档 + 帧缓冲 + halt。 */
void boot_panic_test(const ini_config *cfg);
void boot_panic_test(const ini_config *cfg) {
extern int ini_get_bool(const ini_config *cfg, const char *section, const char *key, int defval);
if (ini_get_bool(cfg, "boot", "panic_test", 0)) {
log_warn("[boot] panic_test=1 -> triggering lotus panic screen");
panic_full("UTSM-E42", "lotus panic selftest", 0);
}
}
+16
View File
@@ -0,0 +1,16 @@
kernel/boot_selftest.o: kernel\boot_selftest.c include\utsm\log.h \
include\utsm\types.h include\utsm\panic.h include\utsm\drr.h \
include\utsm\config.h include\utsm\dkm.h include\utsm\dma.h \
include\utsm\block.h include\utsm\net.h include\utsm\paging.h \
kernel\ini_parser.h
include\utsm\log.h:
include\utsm\types.h:
include\utsm\panic.h:
include\utsm\drr.h:
include\utsm\config.h:
include\utsm\dkm.h:
include\utsm\dma.h:
include\utsm\block.h:
include\utsm\net.h:
include\utsm\paging.h:
kernel\ini_parser.h:
+19 -14
View File
@@ -472,21 +472,26 @@ void kernel_main(void) {
dsm_load_by_manifest_ex(cfg);
INSTR_TS_END(ts_dsm, "dsm_load_manifest");
/* === selftest — 可通过 FUCK [boot] selftest=0 跳过 === */
int run_selftest = ini_get_bool(cfg, "boot", "selftest", 1);
if (run_selftest) {
INSTR_TS_DECL(ts_self);
INSTR_TS_BEGIN(ts_self);
int result = utsm_selftest_run();
INSTR_TS_END(ts_self, "selftest");
if (result == 0) {
log_info("[UTSM] SELFTEST PASS");
} else {
log_error("[UTSM] SELFTEST FAIL");
arch_halt_forever();
/* === F4: 分级启动自检 — FUCK [boot] selftest=0|1|2 ===
* 0=关 / 1=快速(结构健全性) / 2=全量(+DMA 探针 + UTSM selftest) */
{
int self_level = ini_get_int(cfg, "boot", "selftest", 1);
extern int boot_selftest_run(int level);
extern void boot_panic_test(const ini_config *cfg);
boot_selftest_run(self_level);
boot_panic_test(cfg);
if (self_level >= 2) {
INSTR_TS_DECL(ts_self);
INSTR_TS_BEGIN(ts_self);
int result = utsm_selftest_run();
INSTR_TS_END(ts_self, "selftest");
if (result == 0) {
log_info("[UTSM] SELFTEST PASS");
} else {
log_error("[UTSM] SELFTEST FAIL");
arch_halt_forever();
}
}
} else {
log_info("[UTSM] selftest skipped by FUCK config");
}
/* === SAS-R0-PCQ 调度器:demo 任务 + LAPIC tick 抢占启用(Phase 7) ===
Binary file not shown.
+244 -3
View File
@@ -1,9 +1,250 @@
#include <utsm/log.h>
#include <utsm/types.h>
#include <utsm/panic.h>
#include <utsm/drr.h>
#include "../arch/x86_64/limine.h"
/* ===================================================================
* F1: 莲花崩溃屏(panic_full)
*
* "崩了也得崩出莲花。"
* 帧缓冲直绘:淡金莲花 + panic_symbol + 消息 + 寄存器简表,
* DRR crash_buf 归档后 halt。不依赖驱动/堆/中断。
* =================================================================== */
void arch_halt_forever(void);
void panic(const char *msg) {
log_error("[PANIC]");
log_error(msg);
extern volatile struct limine_framebuffer_request g_fb_request;
/* 11x18 Consolas 灰度字库(同 firstInit/ascii_bitmaps.c,自动生成) */
#include "panic_font.inc"
/* ---- 最小绘制原语(32bpp XRGB,带边界检查) ---- */
typedef struct {
u32 *fb;
u64 w, h, pitch;
} pfb;
static int pfb_init(pfb *p) {
if (!g_fb_request.response || g_fb_request.response->framebuffer_count == 0)
return -1;
struct limine_framebuffer *fb = g_fb_request.response->framebuffers[0];
if (fb->bpp < 32 || !fb->address) return -1;
p->fb = (u32 *)fb->address;
p->w = fb->width;
p->h = fb->height;
p->pitch = fb->pitch;
return 0;
}
static inline void ppx(pfb *p, i64 x, i64 y, u32 c) {
if (x < 0 || (u64)x >= p->w || y < 0 || (u64)y >= p->h) return;
*(u32 *)((u8 *)p->fb + (u64)y * p->pitch + (u64)x * 4) = c;
}
static void prect(pfb *p, i64 x, i64 y, i64 w, i64 h, u32 c) {
for (i64 r = 0; r < h; r++)
for (i64 c2 = 0; c2 < w; c2++)
ppx(p, x + c2, y + r, c);
}
static u32 pgrad(u32 top, u32 bot, i64 y, i64 h) {
if (h <= 1) return top;
if (y < 0) y = 0;
if (y >= h) y = h - 1;
u32 a = (u32)(((u64)y * 255ULL) / (u64)(h - 1));
u32 na = 256 - a;
u32 r = (((top >> 16) & 0xFF) * na + ((bot >> 16) & 0xFF) * a) >> 8;
u32 g = (((top >> 8) & 0xFF) * na + ((bot >> 8) & 0xFF) * a) >> 8;
u32 b = ((top & 0xFF) * na + (bot & 0xFF) * a) >> 8;
return 0xFF000000u | (r << 16) | (g << 8) | b;
}
/* 11x18 灰度字符(g_ascii: ASCII 32..126) */
static void pchar(pfb *p, char ch, i64 x, i64 y, u32 fg) {
u32 idx = (u32)ch - 32;
if (idx > 94) idx = 0;
const u8 *g = g_ascii[idx];
for (i64 r = 0; r < g_ascii_h; r++) {
for (i64 c = 0; c < g_ascii_w; c++) {
u8 a = g[r * g_ascii_w + c];
if (a < 24) continue;
ppx(p, x + c, y + r, fg);
}
}
}
static void pstr(pfb *p, const char *s, i64 x, i64 y, u32 fg) {
i64 cx = x;
while (*s) {
pchar(p, *s, cx, y, fg);
cx += g_ascii_w;
s++;
}
}
static void pstr_center(pfb *p, const char *s, i64 y, u32 fg) {
i64 w = 0;
for (const char *q = s; *q; q++) w += g_ascii_w;
pstr(p, s, ((i64)p->w - w) / 2, y, fg);
}
/* ---- 莲花:8 瓣椭圆花瓣 + 金芯(淡金 on 暗底) ---- */
/* sin 表:33 项覆盖 [0, π/2],步长 (π/2)/32,值×1000。
* cos(i) = SIN33[32-i]。视觉用途精度足够。 */
static const i16 SIN33[33] = {
0, 49, 98, 146, 195, 242, 290, 336,
383, 428, 471, 513, 556, 597, 635, 671,
707, 740, 773, 803, 831, 857, 882, 905,
924, 941, 958, 972, 984, 993, 999, 1000, 1000
};
/* a: q12 角度(0..3071,3072=整圈),输出 sin/cos ×1000 */
static void sincos_q12(i64 a, i64 *so, i64 *co) {
a %= 3072;
if (a < 0) a += 3072;
i32 qs = (i32)(a / 768);
i32 idx = (i32)((a % 768) / 24);
i64 s = 0, c = 0;
switch (qs) {
case 0: s = SIN33[idx]; c = SIN33[32 - idx]; break;
case 1: s = SIN33[32 - idx]; c = -SIN33[idx]; break;
case 2: s = -SIN33[idx]; c = -SIN33[32 - idx]; break;
default: s = -SIN33[32 - idx]; c = SIN33[idx]; break;
}
*so = s;
*co = c;
}
static void petal(pfb *p, i64 cx, i64 cy, i64 angle_q12, i64 len, i64 wid, u32 color) {
/* 花瓣局部坐标系:u 沿长轴(尖端收窄),v 沿短轴;旋转到屏幕坐标 */
i64 s, c;
sincos_q12(angle_q12, &s, &c);
i64 len1000 = len ? len * 1000 : 1;
i64 wid1000 = wid ? wid * 1000 : 1;
for (i64 u = -len; u <= len; u++) {
for (i64 v = -wid; v <= wid; v++) {
i64 eu = (u * 1000 * 1000) / len1000; /* -1000..1000 */
i64 ev = (v * 1000 * 1000) / wid1000;
if (eu > 200) ev = (ev * (1000 - (eu - 200) * 2)) / 1000; /* 收尖 */
if (eu * eu + ev * ev > 1000 * 1000) continue;
i64 dx = (u * c - v * s) / 1000;
i64 dy = (u * s + v * c) / 1000;
ppx(p, cx + dx, cy + dy, color);
}
}
}
static void lotus(pfb *p, i64 cx, i64 cy) {
const u32 petal_c = 0xFFD8B4E8; /* 淡粉金 */
const u32 petal_c2 = 0xFFC498D8; /* 深一档 */
const u32 core_c = 0xFFF0D080; /* 金芯 */
for (i64 k = 0; k < 8; k++) {
i64 ang = k * 384; /* 3072/8 */
petal(p, cx, cy, ang, 46, 15, (k & 1) ? petal_c : petal_c2);
}
/* 金芯圆 */
for (i64 dy = -12; dy <= 12; dy++)
for (i64 dx = -12; dx <= 12; dx++)
if (dx * dx + dy * dy <= 144)
ppx(p, cx + dx, cy + dy, core_c);
/* 芯内小点 */
for (i64 dy = -4; dy <= 4; dy++)
for (i64 dx = -4; dx <= 4; dx++)
if (dx * dx + dy * dy <= 16)
ppx(p, cx + dx, cy + dy, 0xFF7050A0);
}
/* ---- hex 输出 ---- */
static void phex64(pfb *p, u64 v, i64 x, i64 y, u32 fg) {
char buf[19];
buf[0] = '0'; buf[1] = 'x';
for (i32 i = 0; i < 16; i++) {
u32 nib = (u32)((v >> ((15 - i) * 4)) & 0xF);
buf[2 + i] = (char)(nib < 10 ? '0' + nib : 'A' + nib - 10);
}
buf[18] = 0;
pstr(p, buf, x, y, fg);
}
static void pregline(pfb *p, const char *name, u64 v, i64 x, i64 y, u32 fg) {
pstr(p, name, x, y, fg);
phex64(p, v, x + 5 * g_ascii_w, y, fg);
}
/* ---- DRR 归档(drr.h 声明,drr_stub.c 提供;未初始化时返回 -1) ---- */
void panic_full(const char *symbol, const char *msg, const panic_regs *regs) {
log_error("[PANIC] ==========================================");
log_error("[PANIC] panic_full: 莲花崩溃屏");
if (symbol) { log_error("[PANIC] symbol:"); log_error(symbol); }
if (msg) { log_error("[PANIC] msg:"); log_error(msg); }
if (regs) {
log_hex64("[PANIC] vector=", regs->vector);
log_hex64("[PANIC] err=", regs->err);
log_hex64("[PANIC] rip=", regs->rip);
log_hex64("[PANIC] rsp=", regs->rsp);
log_hex64("[PANIC] rflags=", regs->rflags);
log_hex64("[PANIC] cr2=", regs->cr2);
log_hex64("[PANIC] rax=", regs->rax);
log_hex64("[PANIC] rcx=", regs->rcx);
log_hex64("[PANIC] rdx=", regs->rdx);
}
int archived = drr_crash_archive(symbol, msg, regs);
if (archived == 0) {
log_error("[PANIC] 本次崩溃已归档至 DRR");
} else {
log_warn("[PANIC] DRR 归档不可用(未初始化),仅留串口日志");
}
/* 屏幕绘制放在归档之后:绘制循环中再出异常也不丢归档 */
pfb P, *p = &P;
if (pfb_init(p) == 0) {
/* 暗夜渐变:深蓝 → 暗紫 */
const u32 top = 0xFF101830, bot = 0xFF241430;
for (u64 y = 0; y < p->h; y++) {
u32 c = pgrad(top, bot, (i64)y, (i64)p->h);
u32 *line = (u32 *)((u8 *)p->fb + y * p->pitch);
for (u64 x = 0; x < p->w; x++) line[x] = c;
}
lotus(p, (i64)p->w / 2, (i64)p->h / 2 - 120);
const u32 fg = 0xFFF0E8D8, dim = 0xFFB0A8C0, acc = 0xFFF0D080;
pstr_center(p, "DESHAB PANIC", (i64)p->h / 2 + 10, acc);
i64 y = (i64)p->h / 2 + 60;
if (symbol) pstr_center(p, symbol, y, fg), y += g_ascii_h + 8;
if (msg) {
/* 单行截断 60 字符 */
char line[61];
u32 i = 0;
while (msg[i] && i < 60) { line[i] = msg[i]; i++; }
line[i] = 0;
pstr_center(p, line, y, fg), y += g_ascii_h + 8;
}
if (regs) {
if (y + g_ascii_h * 6 < (i64)p->h) {
pregline(p, "RIP ", regs->rip, (i64)p->w / 2 - 14 * g_ascii_w / 2, y, dim); y += g_ascii_h + 2;
pregline(p, "RSP ", regs->rsp, (i64)p->w / 2 - 14 * g_ascii_w / 2, y, dim); y += g_ascii_h + 2;
pregline(p, "FLG ", regs->rflags, (i64)p->w / 2 - 14 * g_ascii_w / 2, y, dim); y += g_ascii_h + 2;
if (regs->vector == 14) {
pregline(p, "CR2 ", regs->cr2, (i64)p->w / 2 - 14 * g_ascii_w / 2, y, dim); y += g_ascii_h + 2;
}
}
}
pstr_center(p, archived == 0 ? "crash archived to DRR" : "DRR archive unavailable",
(i64)p->h - g_ascii_h - 24, dim);
}
log_error("[PANIC] halt");
arch_halt_forever();
}
void panic(const char *msg) {
panic_full("UTSM-PANIC", msg, 0);
}
+10
View File
@@ -0,0 +1,10 @@
kernel/panic.o: kernel\panic.c include\utsm\log.h include\utsm\types.h \
include\utsm\panic.h include\utsm\drr.h include\utsm\config.h \
kernel\..\arch\x86_64\limine.h kernel\panic_font.inc
include\utsm\log.h:
include\utsm\types.h:
include\utsm\panic.h:
include\utsm\drr.h:
include\utsm\config.h:
kernel\..\arch\x86_64\limine.h:
kernel\panic_font.inc:
Binary file not shown.
+1908
View File
@@ -0,0 +1,1908 @@
/* Auto-generated by render_ascii.py - Consolas 18px grayscale */
/* 95 glyphs: ASCII 32 (space) .. 126 (~), cell 11x18 */
/* Do not edit - regenerate via: py render_ascii.py */
static const int g_ascii_w = 11;
static const int g_ascii_h = 18;
static const unsigned char g_ascii[95][11*18] = {
/* 'space' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x21' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 253, 216, 0, 0, 0, 0, 0,
0, 0, 0, 0, 246, 210, 0, 0, 0, 0, 0,
0, 0, 0, 0, 239, 204, 0, 0, 0, 0, 0,
0, 0, 0, 0, 232, 198, 0, 0, 0, 0, 0,
0, 0, 0, 0, 226, 192, 0, 0, 0, 0, 0,
0, 0, 0, 0, 219, 186, 0, 0, 0, 0, 0,
0, 0, 0, 0, 212, 180, 0, 0, 0, 0, 0,
0, 0, 0, 0, 205, 174, 0, 0, 0, 0, 0,
0, 0, 0, 0, 198, 168, 0, 0, 0, 0, 0,
0, 0, 0, 0, 191, 162, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 21, 223, 202, 3, 0, 0, 0, 0,
0, 0, 0, 22, 224, 204, 3, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x22' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 181, 255, 43, 73, 255, 151, 0, 0, 0,
0, 0, 165, 255, 27, 57, 255, 135, 0, 0, 0,
0, 0, 149, 255, 11, 41, 255, 119, 0, 0, 0,
0, 0, 132, 251, 0, 24, 255, 103, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x23' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 245, 83, 0, 105, 226, 0, 0, 0,
0, 0, 14, 255, 59, 0, 130, 199, 0, 0, 0,
0, 0, 39, 255, 35, 0, 155, 173, 0, 0, 0,
44, 255, 255, 255, 255, 255, 255, 255, 255, 132, 0,
0, 0, 95, 234, 0, 0, 213, 118, 0, 0, 0,
0, 0, 123, 209, 0, 0, 238, 91, 0, 0, 0,
0, 0, 150, 184, 0, 7, 255, 65, 0, 0, 0,
160, 255, 255, 255, 255, 255, 255, 255, 255, 12, 0,
0, 0, 207, 125, 0, 67, 255, 9, 0, 0, 0,
0, 0, 235, 97, 0, 95, 237, 0, 0, 0, 0,
0, 7, 254, 69, 0, 122, 209, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x24' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 219, 108, 0, 0, 0, 0,
0, 0, 0, 0, 0, 246, 78, 0, 0, 0, 0,
0, 0, 72, 192, 242, 255, 255, 255, 8, 0, 0,
0, 99, 254, 109, 83, 253, 5, 0, 0, 0, 0,
0, 215, 196, 0, 99, 226, 0, 0, 0, 0, 0,
0, 217, 230, 20, 133, 193, 0, 0, 0, 0, 0,
0, 75, 249, 235, 220, 164, 0, 0, 0, 0, 0,
0, 0, 40, 164, 251, 254, 184, 49, 0, 0, 0,
0, 0, 0, 0, 236, 166, 226, 249, 67, 0, 0,
0, 0, 0, 11, 255, 55, 19, 240, 193, 0, 0,
0, 0, 0, 44, 255, 23, 1, 229, 191, 0, 0,
0, 0, 0, 76, 247, 29, 144, 251, 72, 0, 0,
8, 255, 255, 255, 254, 227, 173, 58, 0, 0, 0,
0, 0, 0, 159, 169, 0, 0, 0, 0, 0, 0,
0, 0, 0, 194, 133, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x25' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7, 158, 240, 216, 60, 0, 0, 26, 241, 103, 0,
114, 221, 23, 137, 214, 0, 0, 171, 199, 1, 0,
162, 166, 0, 71, 251, 1, 74, 251, 46, 0, 0,
127, 217, 19, 143, 203, 10, 223, 137, 0, 0, 0,
15, 179, 244, 205, 47, 137, 224, 10, 0, 0, 0,
0, 0, 0, 0, 45, 251, 75, 0, 0, 0, 0,
0, 0, 0, 1, 198, 171, 0, 0, 0, 0, 0,
0, 0, 0, 104, 241, 26, 0, 0, 0, 0, 0,
0, 0, 23, 239, 108, 62, 212, 242, 164, 5, 0,
0, 0, 166, 203, 5, 231, 120, 27, 234, 98, 0,
0, 70, 252, 49, 26, 255, 46, 0, 191, 136, 0,
8, 220, 142, 0, 4, 242, 112, 30, 237, 87, 0,
132, 227, 12, 0, 0, 82, 225, 238, 144, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x26' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 54, 198, 243, 208, 72, 0, 0, 0, 0,
0, 19, 239, 143, 14, 140, 246, 28, 0, 0, 0,
0, 96, 255, 33, 0, 38, 255, 94, 0, 0, 0,
0, 116, 255, 44, 0, 65, 255, 83, 0, 0, 0,
0, 74, 255, 126, 8, 195, 241, 20, 0, 0, 0,
0, 3, 215, 240, 202, 248, 81, 0, 0, 0, 0,
0, 2, 161, 255, 248, 49, 0, 0, 0, 0, 0,
0, 165, 252, 188, 255, 125, 0, 147, 240, 0, 0,
62, 255, 122, 3, 191, 253, 66, 168, 211, 0, 0,
115, 255, 35, 0, 23, 230, 232, 231, 150, 0, 0,
96, 255, 56, 0, 0, 62, 252, 255, 64, 0, 0,
21, 235, 199, 40, 16, 94, 243, 254, 185, 2, 0,
0, 44, 180, 235, 246, 197, 71, 128, 255, 129, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x27' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 4, 255, 235, 0, 0, 0, 0, 0,
0, 0, 0, 0, 245, 219, 0, 0, 0, 0, 0,
0, 0, 0, 0, 229, 203, 0, 0, 0, 0, 0,
0, 0, 0, 0, 212, 187, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x28' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 8, 177, 60, 0, 0, 0,
0, 0, 0, 0, 0, 170, 241, 43, 0, 0, 0,
0, 0, 0, 0, 108, 254, 72, 0, 0, 0, 0,
0, 0, 0, 22, 243, 163, 0, 0, 0, 0, 0,
0, 0, 0, 130, 251, 27, 0, 0, 0, 0, 0,
0, 0, 0, 215, 186, 0, 0, 0, 0, 0, 0,
0, 0, 31, 255, 110, 0, 0, 0, 0, 0, 0,
0, 0, 64, 255, 77, 0, 0, 0, 0, 0, 0,
0, 0, 85, 255, 58, 0, 0, 0, 0, 0, 0,
0, 0, 67, 255, 79, 0, 0, 0, 0, 0, 0,
0, 0, 37, 255, 113, 0, 0, 0, 0, 0, 0,
0, 0, 1, 224, 190, 0, 0, 0, 0, 0, 0,
0, 0, 0, 134, 252, 32, 0, 0, 0, 0, 0,
0, 0, 0, 25, 241, 170, 0, 0, 0, 0, 0,
0, 0, 0, 0, 109, 255, 79, 0, 0, 0, 0,
0, 0, 0, 0, 2, 171, 244, 48, 0, 0, 0,
0, 0, 0, 0, 0, 7, 176, 56, 0, 0, 0,
},
/* '0x29' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 76, 167, 4, 0, 0, 0, 0, 0, 0,
0, 0, 69, 251, 153, 0, 0, 0, 0, 0, 0,
0, 0, 0, 106, 255, 90, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 233, 13, 0, 0, 0, 0,
0, 0, 0, 0, 56, 255, 115, 0, 0, 0, 0,
0, 0, 0, 0, 0, 219, 207, 0, 0, 0, 0,
0, 0, 0, 0, 0, 143, 255, 16, 0, 0, 0,
0, 0, 0, 0, 0, 109, 255, 52, 0, 0, 0,
0, 0, 0, 0, 0, 87, 255, 62, 0, 0, 0,
0, 0, 0, 0, 0, 105, 255, 40, 0, 0, 0,
0, 0, 0, 0, 0, 137, 253, 11, 0, 0, 0,
0, 0, 0, 0, 0, 212, 201, 0, 0, 0, 0,
0, 0, 0, 0, 48, 255, 108, 0, 0, 0, 0,
0, 0, 0, 0, 189, 229, 9, 0, 0, 0, 0,
0, 0, 0, 98, 255, 82, 0, 0, 0, 0, 0,
0, 0, 63, 249, 145, 0, 0, 0, 0, 0, 0,
0, 0, 82, 162, 2, 0, 0, 0, 0, 0, 0,
},
/* '0x2a' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 163, 137, 0, 0, 0, 0, 0,
0, 58, 169, 17, 144, 117, 27, 184, 36, 0, 0,
0, 34, 167, 226, 182, 173, 235, 165, 30, 0, 0,
0, 0, 0, 89, 253, 247, 69, 0, 0, 0, 0,
0, 31, 161, 228, 189, 180, 233, 146, 23, 0, 0,
0, 67, 169, 18, 146, 118, 30, 186, 37, 0, 0,
0, 0, 0, 0, 163, 138, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x2b' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 208, 180, 0, 0, 0, 0, 0,
0, 0, 0, 0, 208, 180, 0, 0, 0, 0, 0,
0, 0, 0, 0, 208, 180, 0, 0, 0, 0, 0,
0, 0, 0, 0, 208, 180, 0, 0, 0, 0, 0,
68, 255, 255, 255, 255, 255, 255, 255, 255, 40, 0,
0, 0, 0, 0, 208, 180, 0, 0, 0, 0, 0,
0, 0, 0, 0, 208, 180, 0, 0, 0, 0, 0,
0, 0, 0, 0, 208, 180, 0, 0, 0, 0, 0,
0, 0, 0, 0, 208, 180, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x2c' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 42, 231, 182, 2, 0, 0, 0, 0,
0, 0, 0, 86, 255, 255, 62, 0, 0, 0, 0,
0, 0, 0, 7, 221, 255, 79, 0, 0, 0, 0,
0, 0, 0, 0, 168, 252, 27, 0, 0, 0, 0,
0, 0, 9, 83, 243, 138, 0, 0, 0, 0, 0,
0, 0, 223, 207, 101, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x2d' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 172, 255, 255, 255, 255, 148, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x2e' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 48, 227, 200, 13, 0, 0, 0, 0,
0, 0, 0, 136, 255, 255, 73, 0, 0, 0, 0,
0, 0, 0, 51, 230, 204, 14, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x2f' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 40, 255, 76, 0, 0,
0, 0, 0, 0, 0, 0, 142, 226, 3, 0, 0,
0, 0, 0, 0, 0, 8, 237, 126, 0, 0, 0,
0, 0, 0, 0, 0, 92, 252, 27, 0, 0, 0,
0, 0, 0, 0, 0, 195, 176, 0, 0, 0, 0,
0, 0, 0, 0, 42, 255, 73, 0, 0, 0, 0,
0, 0, 0, 0, 145, 224, 2, 0, 0, 0, 0,
0, 0, 0, 9, 238, 123, 0, 0, 0, 0, 0,
0, 0, 0, 95, 251, 25, 0, 0, 0, 0, 0,
0, 0, 0, 198, 173, 0, 0, 0, 0, 0, 0,
0, 0, 45, 255, 70, 0, 0, 0, 0, 0, 0,
0, 0, 148, 222, 1, 0, 0, 0, 0, 0, 0,
0, 10, 240, 120, 0, 0, 0, 0, 0, 0, 0,
0, 98, 250, 23, 0, 0, 0, 0, 0, 0, 0,
0, 201, 171, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 44, 179, 241, 244, 186, 49, 0, 0, 0,
0, 38, 240, 156, 20, 30, 178, 242, 35, 0, 0,
0, 172, 220, 3, 0, 0, 13, 241, 160, 0, 0,
5, 248, 138, 0, 0, 0, 104, 250, 234, 0, 0,
39, 255, 97, 0, 4, 149, 202, 147, 255, 16, 0,
52, 255, 85, 19, 190, 164, 8, 112, 255, 28, 0,
42, 255, 129, 218, 120, 0, 0, 131, 255, 15, 0,
9, 252, 242, 77, 0, 0, 0, 162, 230, 0, 0,
0, 189, 214, 2, 0, 0, 10, 235, 148, 0, 0,
0, 58, 250, 150, 20, 25, 173, 231, 25, 0, 0,
0, 0, 65, 198, 247, 239, 173, 35, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '1' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 67, 206, 255, 52, 0, 0, 0, 0,
0, 45, 183, 184, 151, 255, 52, 0, 0, 0, 0,
0, 130, 117, 1, 128, 255, 52, 0, 0, 0, 0,
0, 0, 0, 0, 128, 255, 52, 0, 0, 0, 0,
0, 0, 0, 0, 128, 255, 52, 0, 0, 0, 0,
0, 0, 0, 0, 128, 255, 52, 0, 0, 0, 0,
0, 0, 0, 0, 128, 255, 52, 0, 0, 0, 0,
0, 0, 0, 0, 128, 255, 52, 0, 0, 0, 0,
0, 0, 0, 0, 128, 255, 52, 0, 0, 0, 0,
0, 0, 0, 0, 128, 255, 52, 0, 0, 0, 0,
0, 116, 255, 255, 255, 255, 255, 255, 196, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '2' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 6, 119, 215, 248, 225, 148, 16, 0, 0, 0,
0, 77, 196, 56, 8, 65, 237, 182, 0, 0, 0,
0, 0, 0, 0, 0, 0, 139, 255, 27, 0, 0,
0, 0, 0, 0, 0, 0, 113, 255, 51, 0, 0,
0, 0, 0, 0, 0, 0, 179, 246, 13, 0, 0,
0, 0, 0, 0, 0, 94, 255, 140, 0, 0, 0,
0, 0, 0, 0, 74, 250, 201, 7, 0, 0, 0,
0, 0, 0, 67, 247, 204, 17, 0, 0, 0, 0,
0, 0, 59, 244, 198, 15, 0, 0, 0, 0, 0,
0, 52, 241, 192, 12, 0, 0, 0, 0, 0, 0,
0, 179, 255, 255, 255, 255, 255, 255, 220, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '3' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 64, 255, 255, 250, 222, 146, 19, 0, 0, 0,
0, 0, 0, 0, 8, 66, 238, 185, 0, 0, 0,
0, 0, 0, 0, 0, 0, 148, 253, 10, 0, 0,
0, 0, 0, 0, 0, 0, 165, 242, 2, 0, 0,
0, 0, 0, 0, 12, 94, 250, 103, 0, 0, 0,
0, 0, 40, 255, 255, 255, 187, 36, 0, 0, 0,
0, 0, 0, 0, 8, 49, 179, 246, 49, 0, 0,
0, 0, 0, 0, 0, 0, 13, 253, 146, 0, 0,
0, 0, 0, 0, 0, 0, 31, 255, 127, 0, 0,
0, 0, 0, 0, 10, 64, 202, 221, 20, 0, 0,
0, 144, 255, 255, 244, 208, 131, 17, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '4' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 23, 239, 255, 120, 0, 0, 0,
0, 0, 0, 0, 164, 234, 255, 120, 0, 0, 0,
0, 0, 0, 65, 255, 96, 255, 120, 0, 0, 0,
0, 0, 6, 215, 170, 24, 255, 120, 0, 0, 0,
0, 0, 123, 242, 27, 24, 255, 120, 0, 0, 0,
0, 33, 246, 112, 0, 24, 255, 120, 0, 0, 0,
0, 180, 207, 3, 0, 24, 255, 120, 0, 0, 0,
82, 254, 56, 0, 0, 24, 255, 120, 0, 0, 0,
160, 255, 255, 255, 255, 255, 255, 255, 255, 112, 0,
0, 0, 0, 0, 0, 24, 255, 120, 0, 0, 0,
0, 0, 0, 0, 0, 24, 255, 120, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '5' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 255, 255, 255, 255, 244, 0, 0, 0,
0, 60, 255, 52, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 52, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 52, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 255, 247, 222, 150, 36, 0, 0, 0,
0, 0, 0, 0, 16, 68, 215, 238, 28, 0, 0,
0, 0, 0, 0, 0, 0, 63, 255, 118, 0, 0,
0, 0, 0, 0, 0, 0, 34, 255, 133, 0, 0,
0, 0, 0, 0, 0, 0, 102, 255, 71, 0, 0,
0, 0, 0, 0, 23, 100, 241, 158, 0, 0, 0,
0, 112, 255, 255, 241, 189, 75, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '6' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 42, 151, 223, 249, 255, 28, 0, 0,
0, 0, 88, 245, 148, 40, 6, 0, 0, 0, 0,
0, 32, 248, 112, 0, 0, 0, 0, 0, 0, 0,
0, 137, 236, 1, 0, 0, 0, 0, 0, 0, 0,
0, 198, 190, 121, 222, 247, 214, 116, 3, 0, 0,
0, 224, 245, 121, 27, 15, 105, 255, 122, 0, 0,
0, 231, 172, 0, 0, 0, 0, 191, 221, 0, 0,
0, 210, 193, 0, 0, 0, 0, 161, 247, 0, 0,
0, 153, 243, 10, 0, 0, 0, 208, 198, 0, 0,
0, 40, 247, 168, 27, 18, 134, 251, 53, 0, 0,
0, 0, 59, 194, 246, 244, 186, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '7' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 248, 255, 255, 255, 255, 255, 255, 204, 0, 0,
0, 0, 0, 0, 0, 0, 18, 242, 141, 0, 0,
0, 0, 0, 0, 0, 0, 133, 248, 26, 0, 0,
0, 0, 0, 0, 0, 18, 242, 151, 0, 0, 0,
0, 0, 0, 0, 0, 133, 251, 33, 0, 0, 0,
0, 0, 0, 0, 18, 242, 161, 0, 0, 0, 0,
0, 0, 0, 0, 133, 253, 40, 0, 0, 0, 0,
0, 0, 0, 18, 242, 170, 0, 0, 0, 0, 0,
0, 0, 0, 133, 255, 48, 0, 0, 0, 0, 0,
0, 0, 18, 242, 180, 0, 0, 0, 0, 0, 0,
0, 0, 132, 255, 57, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '8' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 74, 194, 237, 240, 201, 89, 0, 0, 0,
0, 71, 254, 113, 14, 18, 136, 255, 72, 0, 0,
0, 162, 232, 0, 0, 0, 5, 252, 142, 0, 0,
0, 143, 251, 35, 0, 0, 46, 255, 107, 0, 0,
0, 27, 223, 229, 79, 63, 225, 189, 8, 0, 0,
0, 0, 26, 225, 255, 255, 212, 17, 0, 0, 0,
0, 38, 221, 205, 51, 88, 230, 224, 36, 0, 0,
0, 188, 231, 12, 0, 0, 31, 246, 173, 0, 0,
0, 231, 196, 0, 0, 0, 0, 219, 209, 0, 0,
0, 158, 252, 100, 14, 16, 114, 254, 113, 0, 0,
0, 8, 127, 214, 244, 239, 199, 93, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '9' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 64, 196, 247, 239, 170, 31, 0, 0, 0,
0, 83, 254, 111, 15, 39, 191, 223, 12, 0, 0,
2, 230, 180, 0, 0, 0, 37, 255, 106, 0, 0,
24, 255, 133, 0, 0, 0, 0, 228, 171, 0, 0,
4, 249, 160, 0, 0, 0, 0, 205, 196, 0, 0,
0, 154, 247, 81, 11, 34, 136, 251, 194, 0, 0,
0, 9, 135, 220, 249, 216, 106, 216, 169, 0, 0,
0, 0, 0, 0, 0, 0, 11, 248, 108, 0, 0,
0, 0, 0, 0, 0, 0, 125, 236, 15, 0, 0,
0, 0, 0, 12, 54, 154, 238, 64, 0, 0, 0,
0, 108, 254, 241, 207, 138, 28, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x3a' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 23, 216, 200, 10, 0, 0, 0, 0,
0, 0, 0, 89, 255, 255, 63, 0, 0, 0, 0,
0, 0, 0, 25, 218, 203, 11, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 23, 216, 200, 10, 0, 0, 0, 0,
0, 0, 0, 89, 255, 255, 63, 0, 0, 0, 0,
0, 0, 0, 25, 218, 203, 11, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x3b' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 23, 216, 200, 10, 0, 0, 0, 0,
0, 0, 0, 89, 255, 255, 63, 0, 0, 0, 0,
0, 0, 0, 25, 218, 203, 11, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 26, 224, 198, 10, 0, 0, 0, 0,
0, 0, 0, 62, 255, 255, 86, 0, 0, 0, 0,
0, 0, 0, 1, 199, 255, 103, 0, 0, 0, 0,
0, 0, 0, 0, 141, 255, 47, 0, 0, 0, 0,
0, 0, 7, 70, 234, 162, 0, 0, 0, 0, 0,
0, 0, 197, 213, 115, 3, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x3c' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 123, 149, 0, 0, 0,
0, 0, 0, 0, 6, 162, 253, 117, 0, 0, 0,
0, 0, 0, 20, 195, 243, 77, 0, 0, 0, 0,
0, 0, 41, 221, 224, 45, 0, 0, 0, 0, 0,
0, 68, 239, 198, 22, 0, 0, 0, 0, 0, 0,
0, 69, 240, 202, 25, 0, 0, 0, 0, 0, 0,
0, 0, 41, 221, 227, 48, 0, 0, 0, 0, 0,
0, 0, 0, 20, 195, 244, 79, 0, 0, 0, 0,
0, 0, 0, 0, 6, 162, 253, 117, 0, 0, 0,
0, 0, 0, 0, 0, 0, 124, 150, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x3d' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 212, 255, 255, 255, 255, 255, 255, 188, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 212, 255, 255, 255, 255, 255, 255, 188, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x3e' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 3, 167, 102, 0, 0, 0, 0, 0, 0, 0,
0, 2, 138, 255, 141, 2, 0, 0, 0, 0, 0,
0, 0, 0, 98, 250, 177, 11, 0, 0, 0, 0,
0, 0, 0, 0, 63, 237, 206, 27, 0, 0, 0,
0, 0, 0, 0, 0, 36, 216, 229, 51, 0, 0,
0, 0, 0, 0, 0, 32, 211, 229, 51, 0, 0,
0, 0, 0, 0, 59, 234, 207, 28, 0, 0, 0,
0, 0, 0, 95, 249, 178, 11, 0, 0, 0, 0,
0, 2, 136, 255, 142, 2, 0, 0, 0, 0, 0,
0, 3, 167, 103, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x3f' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 87, 239, 204, 120, 11, 0, 0, 0, 0,
0, 0, 0, 25, 90, 226, 219, 26, 0, 0, 0,
0, 0, 0, 0, 0, 40, 245, 181, 0, 0, 0,
0, 0, 0, 0, 0, 0, 170, 254, 10, 0, 0,
0, 0, 0, 0, 0, 0, 153, 253, 8, 0, 0,
0, 0, 0, 0, 2, 47, 229, 185, 0, 0, 0,
0, 0, 0, 117, 255, 231, 159, 22, 0, 0, 0,
0, 0, 0, 110, 255, 1, 0, 0, 0, 0, 0,
0, 0, 0, 103, 251, 0, 0, 0, 0, 0, 0,
0, 0, 0, 96, 246, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 157, 239, 57, 0, 0, 0, 0, 0,
0, 0, 0, 160, 239, 59, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x40' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 63, 195, 247, 227, 126, 3, 0, 0,
0, 0, 88, 239, 93, 10, 50, 216, 146, 0, 0,
0, 35, 246, 79, 0, 0, 0, 52, 252, 30, 0,
0, 156, 179, 0, 0, 0, 0, 0, 215, 106, 0,
16, 245, 71, 0, 0, 0, 0, 0, 163, 155, 0,
85, 236, 3, 25, 188, 244, 214, 118, 136, 184, 0,
142, 183, 0, 182, 168, 43, 255, 87, 124, 196, 0,
189, 135, 31, 255, 55, 53, 255, 51, 122, 193, 0,
208, 112, 93, 252, 5, 87, 255, 15, 132, 179, 0,
224, 96, 126, 231, 0, 121, 234, 0, 156, 150, 0,
226, 92, 130, 226, 0, 159, 205, 0, 199, 99, 0,
212, 105, 101, 245, 38, 229, 217, 45, 243, 21, 0,
180, 139, 18, 205, 232, 70, 210, 237, 92, 0, 0,
126, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0,
41, 254, 55, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 226, 66, 8, 39, 125, 102, 0, 0, 0,
0, 4, 124, 222, 249, 225, 161, 41, 0, 0, 0,
},
/* 'A' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 69, 246, 255, 55, 0, 0, 0, 0,
0, 0, 0, 157, 165, 214, 143, 0, 0, 0, 0,
0, 0, 6, 239, 87, 135, 228, 1, 0, 0, 0,
0, 0, 79, 250, 15, 56, 255, 62, 0, 0, 0,
0, 0, 167, 187, 0, 1, 231, 150, 0, 0, 0,
0, 11, 244, 109, 0, 0, 154, 234, 3, 0, 0,
0, 89, 255, 31, 0, 0, 75, 255, 69, 0, 0,
0, 178, 255, 255, 255, 255, 255, 255, 157, 0, 0,
16, 249, 97, 0, 0, 0, 0, 146, 238, 5, 0,
99, 255, 29, 0, 0, 0, 0, 76, 255, 76, 0,
188, 217, 0, 0, 0, 0, 0, 12, 250, 164, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'B' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 156, 255, 255, 254, 233, 189, 69, 0, 0, 0,
0, 156, 244, 0, 3, 37, 178, 250, 46, 0, 0,
0, 156, 244, 0, 0, 0, 44, 255, 115, 0, 0,
0, 156, 244, 0, 0, 0, 59, 255, 102, 0, 0,
0, 156, 244, 0, 3, 45, 201, 214, 14, 0, 0,
0, 156, 255, 255, 255, 255, 241, 90, 0, 0, 0,
0, 156, 244, 0, 3, 34, 146, 255, 123, 0, 0,
0, 156, 244, 0, 0, 0, 0, 213, 222, 0, 0,
0, 156, 244, 0, 0, 0, 0, 216, 213, 0, 0,
0, 156, 244, 0, 1, 26, 132, 254, 93, 0, 0,
0, 156, 255, 255, 251, 226, 175, 63, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'C' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 110, 205, 245, 231, 177, 49, 0, 0,
0, 3, 183, 236, 92, 14, 12, 82, 151, 0, 0,
0, 116, 255, 69, 0, 0, 0, 0, 0, 0, 0,
0, 222, 203, 0, 0, 0, 0, 0, 0, 0, 0,
23, 255, 153, 0, 0, 0, 0, 0, 0, 0, 0,
43, 255, 125, 0, 0, 0, 0, 0, 0, 0, 0,
34, 255, 136, 0, 0, 0, 0, 0, 0, 0, 0,
3, 243, 186, 0, 0, 0, 0, 0, 0, 0, 0,
0, 160, 251, 42, 0, 0, 0, 0, 0, 0, 0,
0, 23, 223, 225, 79, 12, 12, 83, 151, 0, 0,
0, 0, 20, 141, 219, 249, 228, 165, 38, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'D' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12, 255, 255, 255, 245, 214, 141, 23, 0, 0, 0,
12, 255, 132, 0, 24, 69, 204, 230, 31, 0, 0,
12, 255, 132, 0, 0, 0, 19, 238, 175, 0, 0,
12, 255, 132, 0, 0, 0, 0, 158, 252, 10, 0,
12, 255, 132, 0, 0, 0, 0, 115, 255, 48, 0,
12, 255, 132, 0, 0, 0, 0, 103, 255, 58, 0,
12, 255, 132, 0, 0, 0, 0, 118, 255, 39, 0,
12, 255, 132, 0, 0, 0, 0, 171, 237, 3, 0,
12, 255, 132, 0, 0, 0, 40, 249, 137, 0, 0,
12, 255, 132, 0, 19, 90, 229, 190, 10, 0, 0,
12, 255, 255, 251, 230, 191, 99, 3, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'E' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 255, 255, 255, 255, 255, 76, 0, 0,
0, 60, 255, 84, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 84, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 84, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 84, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 255, 255, 255, 255, 255, 28, 0, 0,
0, 60, 255, 84, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 84, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 84, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 84, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 255, 255, 255, 255, 255, 76, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'F' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 52, 255, 255, 255, 255, 255, 255, 72, 0, 0,
0, 52, 255, 104, 0, 0, 0, 0, 0, 0, 0,
0, 52, 255, 104, 0, 0, 0, 0, 0, 0, 0,
0, 52, 255, 104, 0, 0, 0, 0, 0, 0, 0,
0, 52, 255, 104, 0, 0, 0, 0, 0, 0, 0,
0, 52, 255, 255, 255, 255, 255, 255, 8, 0, 0,
0, 52, 255, 104, 0, 0, 0, 0, 0, 0, 0,
0, 52, 255, 104, 0, 0, 0, 0, 0, 0, 0,
0, 52, 255, 104, 0, 0, 0, 0, 0, 0, 0,
0, 52, 255, 104, 0, 0, 0, 0, 0, 0, 0,
0, 52, 255, 104, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'G' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 9, 116, 204, 244, 235, 183, 60, 0, 0,
0, 16, 205, 225, 84, 14, 11, 75, 165, 0, 0,
0, 163, 241, 31, 0, 0, 0, 0, 0, 0, 0,
24, 253, 141, 0, 0, 0, 0, 0, 0, 0, 0,
82, 255, 90, 0, 0, 0, 0, 0, 0, 0, 0,
103, 255, 63, 0, 0, 255, 255, 255, 228, 0, 0,
91, 255, 82, 0, 0, 0, 0, 168, 228, 0, 0,
44, 255, 126, 0, 0, 0, 0, 168, 228, 0, 0,
0, 205, 230, 9, 0, 0, 0, 168, 228, 0, 0,
0, 47, 239, 196, 58, 8, 13, 184, 228, 0, 0,
0, 0, 33, 156, 225, 251, 243, 203, 119, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'H' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8, 255, 140, 0, 0, 0, 0, 164, 240, 0, 0,
8, 255, 140, 0, 0, 0, 0, 164, 240, 0, 0,
8, 255, 140, 0, 0, 0, 0, 164, 240, 0, 0,
8, 255, 140, 0, 0, 0, 0, 164, 240, 0, 0,
8, 255, 140, 0, 0, 0, 0, 164, 240, 0, 0,
8, 255, 255, 255, 255, 255, 255, 255, 240, 0, 0,
8, 255, 140, 0, 0, 0, 0, 164, 240, 0, 0,
8, 255, 140, 0, 0, 0, 0, 164, 240, 0, 0,
8, 255, 140, 0, 0, 0, 0, 164, 240, 0, 0,
8, 255, 140, 0, 0, 0, 0, 164, 240, 0, 0,
8, 255, 140, 0, 0, 0, 0, 164, 240, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'I' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 124, 255, 255, 255, 255, 255, 255, 100, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 124, 255, 255, 255, 255, 255, 255, 100, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'J' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 64, 255, 255, 255, 255, 255, 180, 0, 0, 0,
0, 0, 0, 0, 0, 0, 224, 180, 0, 0, 0,
0, 0, 0, 0, 0, 0, 224, 180, 0, 0, 0,
0, 0, 0, 0, 0, 0, 224, 180, 0, 0, 0,
0, 0, 0, 0, 0, 0, 224, 180, 0, 0, 0,
0, 0, 0, 0, 0, 0, 224, 180, 0, 0, 0,
0, 0, 0, 0, 0, 0, 224, 180, 0, 0, 0,
0, 0, 0, 0, 0, 0, 225, 175, 0, 0, 0,
0, 0, 0, 0, 0, 7, 249, 139, 0, 0, 0,
0, 90, 115, 21, 17, 150, 247, 36, 0, 0, 0,
0, 17, 153, 235, 247, 196, 52, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'K' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 160, 240, 0, 0, 0, 63, 252, 149, 0, 0,
0, 160, 240, 0, 0, 21, 229, 188, 4, 0, 0,
0, 160, 240, 0, 1, 185, 219, 18, 0, 0, 0,
0, 160, 240, 0, 124, 240, 40, 0, 0, 0, 0,
0, 160, 240, 63, 249, 72, 0, 0, 0, 0, 0,
0, 160, 241, 219, 174, 0, 0, 0, 0, 0, 0,
0, 160, 240, 91, 254, 90, 0, 0, 0, 0, 0,
0, 160, 240, 0, 143, 248, 60, 0, 0, 0, 0,
0, 160, 240, 0, 4, 190, 235, 35, 0, 0, 0,
0, 160, 240, 0, 0, 21, 225, 216, 17, 0, 0,
0, 160, 240, 0, 0, 0, 51, 247, 191, 6, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'L' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 244, 164, 0, 0, 0, 0, 0, 0, 0,
0, 0, 244, 164, 0, 0, 0, 0, 0, 0, 0,
0, 0, 244, 164, 0, 0, 0, 0, 0, 0, 0,
0, 0, 244, 164, 0, 0, 0, 0, 0, 0, 0,
0, 0, 244, 164, 0, 0, 0, 0, 0, 0, 0,
0, 0, 244, 164, 0, 0, 0, 0, 0, 0, 0,
0, 0, 244, 164, 0, 0, 0, 0, 0, 0, 0,
0, 0, 244, 164, 0, 0, 0, 0, 0, 0, 0,
0, 0, 244, 164, 0, 0, 0, 0, 0, 0, 0,
0, 0, 244, 164, 0, 0, 0, 0, 0, 0, 0,
0, 0, 244, 255, 255, 255, 255, 255, 168, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'M' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
6, 255, 246, 13, 0, 0, 47, 255, 238, 0, 0,
20, 255, 236, 95, 0, 0, 143, 232, 251, 0, 0,
33, 255, 132, 186, 0, 4, 229, 110, 255, 8, 0,
46, 255, 38, 242, 23, 77, 178, 72, 255, 21, 0,
59, 255, 18, 164, 110, 170, 81, 64, 255, 34, 0,
72, 255, 11, 68, 204, 223, 5, 57, 255, 47, 0,
85, 255, 5, 2, 225, 144, 0, 50, 255, 60, 0,
98, 254, 0, 0, 0, 0, 0, 42, 255, 73, 0,
111, 248, 0, 0, 0, 0, 0, 35, 255, 86, 0,
124, 241, 0, 0, 0, 0, 0, 27, 255, 99, 0,
137, 235, 0, 0, 0, 0, 0, 20, 255, 113, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'N' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 244, 255, 72, 0, 0, 0, 152, 220, 0, 0,
0, 244, 206, 185, 0, 0, 0, 152, 220, 0, 0,
0, 244, 131, 227, 43, 0, 0, 152, 220, 0, 0,
0, 244, 128, 128, 156, 0, 0, 152, 220, 0, 0,
0, 244, 128, 23, 240, 21, 0, 152, 220, 0, 0,
0, 244, 128, 0, 158, 126, 0, 152, 220, 0, 0,
0, 244, 128, 0, 44, 231, 7, 152, 220, 0, 0,
0, 244, 128, 0, 0, 186, 95, 152, 220, 0, 0,
0, 244, 128, 0, 0, 73, 201, 152, 220, 0, 0,
0, 244, 128, 0, 0, 1, 213, 202, 220, 0, 0,
0, 244, 128, 0, 0, 0, 101, 255, 220, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'O' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 58, 185, 243, 244, 196, 72, 0, 0, 0,
0, 71, 250, 136, 17, 21, 145, 254, 82, 0, 0,
3, 222, 190, 0, 0, 0, 0, 205, 226, 2, 0,
61, 255, 96, 0, 0, 0, 0, 117, 255, 50, 0,
109, 255, 53, 0, 0, 0, 0, 79, 255, 89, 0,
124, 255, 37, 0, 0, 0, 0, 62, 255, 99, 0,
113, 255, 54, 0, 0, 0, 0, 81, 255, 83, 0,
75, 255, 91, 0, 0, 0, 0, 124, 255, 33, 0,
11, 242, 180, 0, 0, 0, 5, 216, 197, 0, 0,
0, 109, 255, 124, 15, 22, 166, 243, 47, 0, 0,
0, 0, 92, 205, 247, 239, 175, 44, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'P' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 156, 255, 255, 253, 230, 179, 66, 0, 0, 0,
0, 156, 244, 0, 3, 37, 167, 252, 78, 0, 0,
0, 156, 244, 0, 0, 0, 4, 227, 207, 0, 0,
0, 156, 244, 0, 0, 0, 0, 191, 232, 0, 0,
0, 156, 244, 0, 0, 0, 7, 231, 181, 0, 0,
0, 156, 244, 0, 5, 42, 173, 242, 46, 0, 0,
0, 156, 255, 255, 252, 230, 162, 37, 0, 0, 0,
0, 156, 244, 0, 0, 0, 0, 0, 0, 0, 0,
0, 156, 244, 0, 0, 0, 0, 0, 0, 0, 0,
0, 156, 244, 0, 0, 0, 0, 0, 0, 0, 0,
0, 156, 244, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'Q' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 54, 182, 242, 244, 196, 72, 0, 0, 0,
0, 65, 249, 136, 17, 22, 148, 254, 82, 0, 0,
1, 218, 190, 0, 0, 0, 0, 206, 226, 2, 0,
57, 255, 94, 0, 0, 0, 0, 117, 255, 51, 0,
106, 255, 53, 0, 0, 0, 0, 79, 255, 90, 0,
122, 255, 37, 0, 0, 0, 0, 62, 255, 99, 0,
105, 255, 54, 0, 0, 0, 0, 80, 255, 84, 0,
75, 255, 92, 0, 0, 0, 0, 123, 255, 37, 0,
9, 238, 180, 0, 0, 0, 4, 215, 203, 0, 0,
0, 121, 255, 124, 15, 22, 165, 247, 55, 0, 0,
0, 0, 105, 218, 255, 250, 186, 52, 0, 0, 0,
0, 0, 0, 0, 198, 178, 0, 0, 0, 0, 0,
0, 0, 0, 0, 106, 253, 88, 13, 92, 133, 0,
0, 0, 0, 0, 0, 116, 220, 245, 204, 77, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'R' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 128, 255, 255, 254, 237, 178, 46, 0, 0, 0,
0, 128, 255, 16, 3, 47, 209, 231, 18, 0, 0,
0, 128, 255, 16, 0, 0, 87, 255, 77, 0, 0,
0, 128, 255, 16, 0, 0, 98, 255, 68, 0, 0,
0, 128, 255, 16, 7, 62, 225, 203, 3, 0, 0,
0, 128, 255, 255, 255, 254, 138, 12, 0, 0, 0,
0, 128, 255, 16, 36, 210, 226, 27, 0, 0, 0,
0, 128, 255, 16, 0, 55, 255, 165, 0, 0, 0,
0, 128, 255, 16, 0, 0, 186, 251, 29, 0, 0,
0, 128, 255, 16, 0, 0, 64, 255, 141, 0, 0,
0, 128, 255, 16, 0, 0, 0, 197, 242, 15, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'S' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 78, 189, 240, 248, 194, 77, 0, 0, 0,
0, 97, 255, 123, 24, 7, 58, 183, 7, 0, 0,
0, 201, 211, 0, 0, 0, 0, 0, 0, 0, 0,
0, 196, 243, 31, 0, 0, 0, 0, 0, 0, 0,
0, 68, 248, 239, 133, 33, 0, 0, 0, 0, 0,
0, 0, 38, 162, 248, 254, 181, 46, 0, 0, 0,
0, 0, 0, 0, 16, 110, 232, 249, 59, 0, 0,
0, 0, 0, 0, 0, 0, 28, 246, 178, 0, 0,
0, 0, 0, 0, 0, 0, 3, 244, 174, 0, 0,
7, 187, 70, 15, 6, 35, 160, 251, 66, 0, 0,
0, 77, 182, 238, 247, 223, 164, 54, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'T' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
64, 255, 255, 255, 255, 255, 255, 255, 255, 36, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'U' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12, 255, 132, 0, 0, 0, 0, 156, 244, 0, 0,
12, 255, 132, 0, 0, 0, 0, 156, 244, 0, 0,
12, 255, 132, 0, 0, 0, 0, 156, 244, 0, 0,
12, 255, 132, 0, 0, 0, 0, 156, 244, 0, 0,
12, 255, 132, 0, 0, 0, 0, 156, 244, 0, 0,
12, 255, 132, 0, 0, 0, 0, 156, 244, 0, 0,
12, 255, 132, 0, 0, 0, 0, 156, 244, 0, 0,
5, 253, 137, 0, 0, 0, 0, 163, 235, 0, 0,
0, 222, 175, 0, 0, 0, 0, 209, 186, 0, 0,
0, 109, 253, 100, 17, 21, 130, 251, 62, 0, 0,
0, 1, 111, 213, 249, 243, 186, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'V' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
204, 239, 6, 0, 0, 0, 0, 8, 242, 174, 0,
115, 255, 76, 0, 0, 0, 0, 81, 255, 83, 0,
28, 254, 162, 0, 0, 0, 0, 167, 240, 8, 0,
0, 194, 240, 6, 0, 0, 8, 243, 157, 0, 0,
0, 105, 255, 77, 0, 0, 82, 255, 66, 0, 0,
0, 20, 251, 163, 0, 0, 168, 229, 2, 0, 0,
0, 0, 183, 241, 7, 9, 243, 140, 0, 0, 0,
0, 0, 95, 255, 77, 82, 255, 49, 0, 0, 0,
0, 0, 14, 247, 160, 167, 214, 0, 0, 0, 0,
0, 0, 0, 173, 238, 243, 123, 0, 0, 0, 0,
0, 0, 0, 84, 255, 255, 33, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'W' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
147, 230, 0, 0, 0, 0, 0, 0, 235, 118, 0,
128, 245, 0, 0, 0, 0, 0, 0, 248, 101, 0,
110, 255, 3, 0, 0, 0, 0, 5, 255, 83, 0,
91, 255, 17, 0, 0, 0, 0, 19, 255, 65, 0,
73, 255, 31, 0, 197, 163, 0, 33, 255, 47, 0,
54, 255, 45, 23, 237, 242, 8, 46, 255, 29, 0,
36, 255, 59, 102, 153, 215, 82, 60, 255, 12, 0,
17, 255, 73, 182, 75, 131, 170, 73, 249, 0, 0,
1, 253, 109, 233, 6, 42, 245, 101, 232, 0, 0,
0, 236, 230, 162, 0, 0, 209, 227, 214, 0, 0,
0, 217, 255, 78, 0, 0, 120, 255, 196, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'X' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
55, 252, 175, 0, 0, 0, 1, 189, 241, 29, 0,
0, 140, 255, 104, 0, 0, 108, 255, 101, 0, 0,
0, 9, 218, 246, 43, 35, 245, 187, 0, 0, 0,
0, 0, 60, 254, 210, 196, 242, 31, 0, 0, 0,
0, 0, 0, 146, 255, 255, 104, 0, 0, 0, 0,
0, 0, 0, 51, 255, 255, 45, 0, 0, 0, 0,
0, 0, 3, 200, 247, 254, 200, 2, 0, 0, 0,
0, 0, 122, 255, 111, 153, 255, 112, 0, 0, 0,
0, 45, 249, 195, 2, 14, 226, 244, 32, 0, 0,
5, 206, 246, 36, 0, 0, 72, 255, 184, 0, 0,
129, 255, 113, 0, 0, 0, 0, 160, 255, 93, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'Y' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
180, 253, 47, 0, 0, 0, 0, 46, 253, 151, 0,
36, 248, 190, 0, 0, 0, 0, 185, 237, 19, 0,
0, 133, 255, 80, 0, 0, 72, 255, 105, 0, 0,
0, 10, 226, 219, 6, 3, 211, 207, 2, 0, 0,
0, 0, 85, 255, 110, 99, 255, 59, 0, 0, 0,
0, 0, 0, 188, 233, 228, 163, 0, 0, 0, 0,
0, 0, 0, 41, 250, 242, 25, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 216, 188, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'Z' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 220, 255, 255, 255, 255, 255, 255, 167, 0, 0,
0, 0, 0, 0, 0, 0, 110, 245, 30, 0, 0,
0, 0, 0, 0, 0, 23, 240, 120, 0, 0, 0,
0, 0, 0, 0, 0, 163, 216, 6, 0, 0, 0,
0, 0, 0, 0, 62, 254, 67, 0, 0, 0, 0,
0, 0, 0, 4, 211, 168, 0, 0, 0, 0, 0,
0, 0, 0, 114, 243, 27, 0, 0, 0, 0, 0,
0, 0, 26, 242, 114, 0, 0, 0, 0, 0, 0,
0, 0, 168, 211, 4, 0, 0, 0, 0, 0, 0,
0, 66, 254, 61, 0, 0, 0, 0, 0, 0, 0,
1, 215, 255, 255, 255, 255, 255, 255, 232, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x5b' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 255, 255, 255, 92, 0, 0, 0,
0, 0, 0, 248, 124, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 124, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 124, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 124, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 124, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 124, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 124, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 124, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 124, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 124, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 124, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 124, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 124, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 124, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 124, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 255, 255, 255, 92, 0, 0, 0,
},
/* '0x5c' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 101, 249, 21, 0, 0, 0, 0, 0, 0, 0,
0, 12, 242, 117, 0, 0, 0, 0, 0, 0, 0,
0, 0, 151, 219, 1, 0, 0, 0, 0, 0, 0,
0, 0, 48, 255, 67, 0, 0, 0, 0, 0, 0,
0, 0, 0, 201, 170, 0, 0, 0, 0, 0, 0,
0, 0, 0, 98, 250, 23, 0, 0, 0, 0, 0,
0, 0, 0, 10, 240, 120, 0, 0, 0, 0, 0,
0, 0, 0, 0, 148, 221, 1, 0, 0, 0, 0,
0, 0, 0, 0, 45, 255, 70, 0, 0, 0, 0,
0, 0, 0, 0, 0, 198, 173, 0, 0, 0, 0,
0, 0, 0, 0, 0, 95, 251, 25, 0, 0, 0,
0, 0, 0, 0, 0, 9, 239, 123, 0, 0, 0,
0, 0, 0, 0, 0, 0, 145, 224, 2, 0, 0,
0, 0, 0, 0, 0, 0, 42, 255, 73, 0, 0,
0, 0, 0, 0, 0, 0, 0, 195, 176, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x5d' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 120, 255, 255, 255, 220, 0, 0, 0, 0,
0, 0, 0, 0, 0, 156, 220, 0, 0, 0, 0,
0, 0, 0, 0, 0, 156, 220, 0, 0, 0, 0,
0, 0, 0, 0, 0, 156, 220, 0, 0, 0, 0,
0, 0, 0, 0, 0, 156, 220, 0, 0, 0, 0,
0, 0, 0, 0, 0, 156, 220, 0, 0, 0, 0,
0, 0, 0, 0, 0, 156, 220, 0, 0, 0, 0,
0, 0, 0, 0, 0, 156, 220, 0, 0, 0, 0,
0, 0, 0, 0, 0, 156, 220, 0, 0, 0, 0,
0, 0, 0, 0, 0, 156, 220, 0, 0, 0, 0,
0, 0, 0, 0, 0, 156, 220, 0, 0, 0, 0,
0, 0, 0, 0, 0, 156, 220, 0, 0, 0, 0,
0, 0, 0, 0, 0, 156, 220, 0, 0, 0, 0,
0, 0, 0, 0, 0, 156, 220, 0, 0, 0, 0,
0, 0, 0, 0, 0, 156, 220, 0, 0, 0, 0,
0, 0, 0, 0, 0, 156, 220, 0, 0, 0, 0,
0, 0, 120, 255, 255, 255, 220, 0, 0, 0, 0,
},
/* '0x5e' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 15, 237, 205, 1, 0, 0, 0, 0,
0, 0, 0, 134, 201, 244, 95, 0, 0, 0, 0,
0, 0, 25, 245, 59, 129, 228, 10, 0, 0, 0,
0, 0, 153, 185, 0, 13, 233, 127, 0, 0, 0,
0, 38, 251, 55, 0, 0, 108, 244, 26, 0, 0,
0, 171, 181, 0, 0, 0, 5, 220, 159, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x5f' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 0,
},
/* '0x60' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 20, 176, 248, 78, 0, 0, 0, 0, 0, 0,
0, 0, 0, 103, 240, 91, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'a' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 81, 187, 241, 239, 191, 63, 0, 0, 0,
0, 23, 181, 64, 9, 28, 182, 244, 32, 0, 0,
0, 0, 0, 0, 0, 0, 48, 255, 96, 0, 0,
0, 0, 0, 0, 0, 0, 24, 255, 116, 0, 0,
0, 1, 111, 208, 240, 255, 255, 255, 116, 0, 0,
0, 122, 254, 100, 15, 0, 24, 255, 116, 0, 0,
0, 197, 212, 0, 0, 0, 45, 255, 116, 0, 0,
0, 163, 244, 52, 12, 95, 229, 253, 116, 0, 0,
0, 24, 175, 239, 244, 184, 56, 239, 116, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'b' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 240, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 240, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 240, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 239, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 231, 37, 179, 244, 233, 118, 0, 0, 0,
0, 152, 239, 225, 102, 15, 114, 255, 73, 0, 0,
0, 152, 255, 87, 0, 0, 0, 223, 176, 0, 0,
0, 152, 240, 0, 0, 0, 0, 174, 218, 0, 0,
0, 152, 240, 0, 0, 0, 0, 160, 237, 0, 0,
0, 152, 240, 0, 0, 0, 0, 181, 213, 0, 0,
0, 152, 240, 0, 0, 0, 13, 241, 139, 0, 0,
0, 152, 246, 57, 9, 37, 186, 226, 21, 0, 0,
0, 70, 180, 231, 250, 233, 159, 27, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'c' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 97, 205, 247, 224, 141, 7, 0, 0,
0, 0, 128, 250, 117, 22, 33, 121, 61, 0, 0,
0, 40, 250, 133, 0, 0, 0, 0, 0, 0, 0,
0, 124, 255, 35, 0, 0, 0, 0, 0, 0, 0,
0, 151, 255, 5, 0, 0, 0, 0, 0, 0, 0,
0, 136, 255, 26, 0, 0, 0, 0, 0, 0, 0,
0, 76, 255, 106, 0, 0, 0, 0, 0, 0, 0,
0, 2, 193, 241, 95, 19, 30, 127, 62, 0, 0,
0, 0, 10, 135, 220, 249, 221, 132, 6, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'd' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 24, 255, 116, 0, 0,
0, 0, 0, 0, 0, 0, 24, 255, 116, 0, 0,
0, 0, 0, 0, 0, 0, 24, 255, 116, 0, 0,
0, 0, 0, 0, 0, 0, 24, 255, 116, 0, 0,
0, 0, 37, 168, 236, 249, 225, 255, 116, 0, 0,
0, 35, 238, 169, 34, 11, 79, 255, 116, 0, 0,
0, 166, 229, 6, 0, 0, 24, 255, 116, 0, 0,
0, 239, 162, 0, 0, 0, 24, 255, 116, 0, 0,
6, 255, 138, 0, 0, 0, 24, 255, 116, 0, 0,
0, 245, 150, 0, 0, 0, 27, 255, 116, 0, 0,
0, 205, 196, 0, 0, 0, 156, 255, 116, 0, 0,
0, 102, 254, 90, 17, 142, 192, 247, 116, 0, 0,
0, 0, 126, 238, 239, 153, 12, 239, 116, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'e' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 32, 169, 240, 245, 187, 43, 0, 0, 0,
0, 17, 230, 177, 28, 31, 171, 246, 33, 0, 0,
0, 138, 240, 15, 0, 0, 12, 240, 152, 0, 0,
0, 221, 183, 0, 0, 0, 0, 200, 198, 0, 0,
0, 241, 255, 255, 255, 255, 255, 255, 216, 0, 0,
0, 215, 178, 0, 0, 0, 0, 0, 0, 0, 0,
0, 169, 233, 11, 0, 0, 0, 0, 0, 0, 0,
0, 50, 249, 183, 46, 5, 0, 0, 0, 0, 0,
0, 0, 54, 182, 238, 254, 255, 255, 100, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'f' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 43, 178, 231, 255, 255, 60, 0,
0, 0, 0, 16, 230, 189, 32, 0, 0, 0, 0,
0, 0, 0, 82, 255, 55, 0, 0, 0, 0, 0,
0, 0, 0, 113, 255, 25, 0, 0, 0, 0, 0,
0, 0, 0, 116, 255, 24, 0, 0, 0, 0, 0,
76, 255, 255, 255, 255, 255, 255, 255, 248, 0, 0,
0, 0, 0, 116, 255, 24, 0, 0, 0, 0, 0,
0, 0, 0, 116, 255, 24, 0, 0, 0, 0, 0,
0, 0, 0, 116, 255, 24, 0, 0, 0, 0, 0,
0, 0, 0, 116, 255, 24, 0, 0, 0, 0, 0,
0, 0, 0, 116, 255, 24, 0, 0, 0, 0, 0,
0, 0, 0, 116, 255, 24, 0, 0, 0, 0, 0,
0, 0, 0, 116, 255, 24, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'g' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 62, 194, 242, 255, 255, 255, 255, 44, 0,
0, 44, 248, 153, 19, 42, 214, 238, 10, 0, 0,
0, 132, 251, 9, 0, 0, 92, 255, 55, 0, 0,
0, 146, 251, 8, 0, 0, 93, 255, 44, 0, 0,
0, 54, 253, 150, 17, 42, 215, 203, 2, 0, 0,
0, 82, 247, 197, 246, 230, 159, 24, 0, 0, 0,
0, 194, 174, 0, 0, 0, 0, 0, 0, 0, 0,
0, 181, 222, 48, 20, 10, 0, 0, 0, 0, 0,
0, 68, 255, 236, 234, 243, 244, 191, 55, 0, 0,
4, 222, 206, 9, 0, 0, 24, 198, 238, 4, 0,
34, 255, 126, 0, 0, 0, 0, 147, 255, 22, 0,
3, 232, 212, 52, 8, 19, 90, 244, 175, 0, 0,
0, 41, 170, 232, 252, 246, 210, 122, 7, 0, 0,
},
/* 'h' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 240, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 240, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 240, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 240, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 235, 36, 184, 247, 221, 94, 0, 0, 0,
0, 152, 243, 222, 88, 12, 138, 252, 39, 0, 0,
0, 152, 253, 75, 0, 0, 26, 255, 103, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 127, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 128, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 128, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 128, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 128, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'i' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 24, 223, 211, 11, 0, 0, 0, 0,
0, 0, 0, 24, 224, 211, 11, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 52, 255, 255, 255, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 124, 255, 255, 255, 255, 255, 255, 152, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'j' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 123, 245, 104, 0, 0, 0,
0, 0, 0, 0, 0, 124, 245, 105, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 124, 255, 255, 255, 255, 255, 100, 0, 0, 0,
0, 0, 0, 0, 0, 40, 255, 100, 0, 0, 0,
0, 0, 0, 0, 0, 40, 255, 100, 0, 0, 0,
0, 0, 0, 0, 0, 40, 255, 100, 0, 0, 0,
0, 0, 0, 0, 0, 40, 255, 100, 0, 0, 0,
0, 0, 0, 0, 0, 40, 255, 100, 0, 0, 0,
0, 0, 0, 0, 0, 40, 255, 100, 0, 0, 0,
0, 0, 0, 0, 0, 40, 255, 100, 0, 0, 0,
0, 0, 0, 0, 0, 40, 255, 100, 0, 0, 0,
0, 0, 0, 0, 0, 58, 255, 89, 0, 0, 0,
0, 0, 0, 0, 0, 120, 255, 41, 0, 0, 0,
0, 151, 59, 8, 66, 238, 164, 0, 0, 0, 0,
0, 60, 203, 250, 228, 131, 7, 0, 0, 0, 0,
},
/* 'k' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 104, 255, 32, 0, 0, 0, 0, 0, 0, 0,
0, 104, 255, 32, 0, 0, 0, 0, 0, 0, 0,
0, 104, 255, 32, 0, 0, 0, 0, 0, 0, 0,
0, 104, 255, 32, 0, 0, 0, 0, 0, 0, 0,
0, 104, 255, 32, 0, 0, 104, 254, 150, 1, 0,
0, 104, 255, 32, 0, 103, 254, 143, 0, 0, 0,
0, 104, 255, 32, 102, 254, 135, 0, 0, 0, 0,
0, 104, 255, 133, 254, 128, 0, 0, 0, 0, 0,
0, 104, 255, 159, 255, 100, 0, 0, 0, 0, 0,
0, 104, 255, 33, 169, 251, 73, 0, 0, 0, 0,
0, 104, 255, 32, 9, 203, 243, 50, 0, 0, 0,
0, 104, 255, 32, 0, 26, 229, 230, 31, 0, 0,
0, 104, 255, 32, 0, 0, 52, 246, 214, 17, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'l' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 52, 255, 255, 255, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 0, 0, 0, 152, 244, 0, 0, 0, 0, 0,
0, 124, 255, 255, 255, 255, 255, 255, 152, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'm' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
52, 252, 53, 226, 222, 32, 164, 242, 124, 0, 0,
52, 255, 202, 37, 219, 204, 137, 106, 246, 4, 0,
52, 255, 127, 0, 193, 231, 9, 77, 255, 24, 0,
52, 255, 52, 0, 192, 164, 0, 76, 255, 28, 0,
52, 255, 52, 0, 192, 164, 0, 76, 255, 28, 0,
52, 255, 52, 0, 192, 164, 0, 76, 255, 28, 0,
52, 255, 52, 0, 192, 164, 0, 76, 255, 28, 0,
52, 255, 52, 0, 192, 164, 0, 76, 255, 28, 0,
52, 255, 52, 0, 192, 164, 0, 76, 255, 28, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'n' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 201, 49, 191, 247, 222, 97, 0, 0, 0,
0, 152, 238, 231, 80, 12, 136, 253, 41, 0, 0,
0, 152, 253, 70, 0, 0, 26, 255, 104, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 127, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 128, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 128, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 128, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 128, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'o' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 54, 183, 242, 246, 194, 69, 0, 0, 0,
0, 51, 248, 148, 17, 29, 157, 253, 71, 0, 0,
0, 196, 204, 0, 0, 0, 3, 221, 198, 0, 0,
21, 255, 124, 0, 0, 0, 0, 152, 252, 6, 0,
43, 255, 102, 0, 0, 0, 0, 127, 255, 18, 0,
28, 255, 124, 0, 0, 0, 0, 150, 247, 3, 0,
0, 225, 196, 0, 0, 0, 3, 225, 177, 0, 0,
0, 96, 255, 135, 23, 21, 163, 240, 43, 0, 0,
0, 0, 87, 206, 248, 240, 176, 31, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'p' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 203, 45, 185, 245, 232, 118, 0, 0, 0,
0, 152, 238, 233, 102, 15, 114, 255, 73, 0, 0,
0, 152, 255, 87, 0, 0, 0, 223, 176, 0, 0,
0, 152, 240, 0, 0, 0, 0, 174, 218, 0, 0,
0, 152, 240, 0, 0, 0, 0, 163, 237, 0, 0,
0, 152, 240, 0, 0, 0, 0, 187, 215, 0, 0,
0, 152, 240, 0, 0, 0, 19, 244, 143, 0, 0,
0, 152, 246, 56, 9, 40, 187, 228, 23, 0, 0,
0, 152, 254, 245, 254, 233, 159, 27, 0, 0, 0,
0, 152, 240, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 240, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 240, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 240, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'q' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 38, 171, 236, 248, 214, 202, 110, 0, 0,
0, 36, 238, 169, 34, 11, 79, 255, 116, 0, 0,
0, 165, 230, 6, 0, 0, 24, 255, 116, 0, 0,
0, 227, 162, 0, 0, 0, 24, 255, 116, 0, 0,
4, 254, 138, 0, 0, 0, 24, 255, 116, 0, 0,
0, 245, 149, 0, 0, 0, 27, 255, 116, 0, 0,
0, 205, 196, 0, 0, 0, 156, 255, 116, 0, 0,
0, 105, 254, 91, 17, 142, 211, 255, 116, 0, 0,
0, 2, 140, 239, 240, 158, 34, 255, 116, 0, 0,
0, 0, 0, 0, 0, 0, 23, 255, 116, 0, 0,
0, 0, 0, 0, 0, 0, 24, 255, 116, 0, 0,
0, 0, 0, 0, 0, 0, 24, 255, 116, 0, 0,
0, 0, 0, 0, 0, 0, 24, 255, 116, 0, 0,
},
/* 'r' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 51, 129, 226, 244, 189, 36, 0, 0,
0, 60, 255, 224, 169, 33, 30, 222, 191, 0, 0,
0, 60, 255, 159, 0, 0, 0, 146, 246, 0, 0,
0, 60, 255, 80, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 80, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 80, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 80, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 80, 0, 0, 0, 0, 0, 0, 0,
0, 60, 255, 80, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 's' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 43, 176, 238, 243, 186, 57, 0, 0, 0,
0, 14, 230, 174, 29, 14, 77, 154, 0, 0, 0,
0, 58, 255, 89, 0, 0, 0, 0, 0, 0, 0,
0, 14, 232, 234, 115, 29, 0, 0, 0, 0, 0,
0, 0, 39, 175, 250, 254, 195, 60, 0, 0, 0,
0, 0, 0, 0, 17, 99, 222, 249, 36, 0, 0,
0, 0, 0, 0, 0, 0, 65, 255, 87, 0, 0,
0, 93, 143, 49, 10, 26, 162, 244, 30, 0, 0,
0, 13, 133, 211, 245, 237, 176, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 't' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 176, 129, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 140, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 140, 0, 0, 0, 0, 0, 0,
116, 255, 255, 255, 255, 255, 255, 255, 132, 0, 0,
0, 0, 0, 248, 140, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 140, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 140, 0, 0, 0, 0, 0, 0,
0, 0, 0, 248, 140, 0, 0, 0, 0, 0, 0,
0, 0, 0, 247, 140, 0, 0, 0, 0, 0, 0,
0, 0, 0, 223, 161, 0, 0, 0, 0, 0, 0,
0, 0, 0, 150, 243, 67, 5, 0, 0, 0, 0,
0, 0, 0, 14, 151, 228, 254, 255, 132, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'u' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 128, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 128, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 128, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 128, 0, 0,
0, 152, 240, 0, 0, 0, 8, 255, 128, 0, 0,
0, 151, 240, 0, 0, 0, 8, 255, 128, 0, 0,
0, 130, 252, 4, 0, 0, 92, 255, 128, 0, 0,
0, 66, 255, 114, 10, 97, 229, 247, 128, 0, 0,
0, 0, 122, 228, 247, 183, 38, 228, 128, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'v' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
59, 255, 125, 0, 0, 0, 0, 151, 249, 20, 0,
0, 216, 210, 0, 0, 0, 2, 232, 172, 0, 0,
0, 119, 255, 38, 0, 0, 63, 255, 74, 0, 0,
0, 24, 251, 122, 0, 0, 147, 229, 3, 0, 0,
0, 0, 178, 206, 0, 1, 229, 133, 0, 0, 0,
0, 0, 80, 255, 34, 59, 255, 36, 0, 0, 0,
0, 0, 4, 232, 117, 141, 193, 0, 0, 0, 0,
0, 0, 0, 140, 194, 218, 95, 0, 0, 0, 0,
0, 0, 0, 41, 253, 242, 10, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'w' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
155, 222, 0, 0, 0, 0, 0, 2, 251, 129, 0,
119, 249, 1, 0, 0, 0, 0, 24, 255, 93, 0,
83, 255, 25, 0, 195, 157, 0, 50, 255, 56, 0,
47, 255, 54, 13, 243, 232, 1, 76, 255, 20, 0,
11, 255, 84, 79, 176, 224, 55, 102, 239, 0, 0,
0, 231, 113, 149, 105, 152, 132, 129, 203, 0, 0,
0, 195, 146, 220, 32, 77, 213, 157, 166, 0, 0,
0, 159, 240, 214, 0, 10, 247, 244, 130, 0, 0,
0, 122, 255, 140, 0, 0, 182, 255, 94, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'x' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8, 210, 241, 29, 0, 0, 21, 235, 209, 8, 0,
0, 42, 246, 183, 0, 0, 171, 244, 40, 0, 0,
0, 0, 102, 255, 96, 87, 255, 95, 0, 0, 0,
0, 0, 0, 171, 239, 235, 163, 0, 0, 0, 0,
0, 0, 0, 44, 255, 255, 41, 0, 0, 0, 0,
0, 0, 3, 195, 206, 218, 194, 3, 0, 0, 0,
0, 0, 134, 252, 50, 65, 255, 131, 0, 0, 0,
0, 70, 254, 139, 0, 0, 159, 253, 66, 0, 0,
25, 234, 222, 10, 0, 0, 18, 234, 230, 22, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* 'y' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
58, 255, 127, 0, 0, 0, 0, 153, 248, 19, 0,
0, 213, 215, 0, 0, 0, 5, 236, 165, 0, 0,
0, 113, 255, 48, 0, 0, 76, 255, 62, 0, 0,
0, 19, 249, 136, 0, 0, 165, 215, 0, 0, 0,
0, 0, 168, 223, 0, 10, 244, 112, 0, 0, 0,
0, 0, 68, 255, 56, 87, 247, 18, 0, 0, 0,
0, 0, 1, 221, 150, 179, 163, 0, 0, 0, 0,
0, 0, 0, 123, 248, 250, 62, 0, 0, 0, 0,
0, 0, 0, 26, 252, 226, 1, 0, 0, 0, 0,
0, 0, 0, 29, 252, 127, 0, 0, 0, 0, 0,
0, 0, 0, 144, 242, 20, 0, 0, 0, 0, 0,
0, 8, 101, 253, 99, 0, 0, 0, 0, 0, 0,
124, 251, 214, 93, 0, 0, 0, 0, 0, 0, 0,
},
/* 'z' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 112, 255, 255, 255, 255, 255, 253, 42, 0, 0,
0, 0, 0, 0, 0, 10, 221, 145, 0, 0, 0,
0, 0, 0, 0, 0, 141, 223, 11, 0, 0, 0,
0, 0, 0, 0, 53, 252, 70, 0, 0, 0, 0,
0, 0, 0, 5, 210, 159, 0, 0, 0, 0, 0,
0, 0, 0, 126, 232, 18, 0, 0, 0, 0, 0,
0, 0, 41, 249, 84, 0, 0, 0, 0, 0, 0,
0, 2, 198, 174, 0, 0, 0, 0, 0, 0, 0,
0, 103, 255, 255, 255, 255, 255, 255, 140, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
/* '0x7b' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 12, 151, 237, 227, 0, 0, 0,
0, 0, 0, 0, 159, 223, 51, 2, 0, 0, 0,
0, 0, 0, 1, 248, 113, 0, 0, 0, 0, 0,
0, 0, 0, 22, 255, 85, 0, 0, 0, 0, 0,
0, 0, 0, 28, 255, 84, 0, 0, 0, 0, 0,
0, 0, 0, 28, 255, 82, 0, 0, 0, 0, 0,
0, 0, 0, 42, 255, 60, 0, 0, 0, 0, 0,
0, 0, 20, 157, 220, 5, 0, 0, 0, 0, 0,
0, 148, 255, 233, 59, 0, 0, 0, 0, 0, 0,
0, 0, 24, 160, 238, 17, 0, 0, 0, 0, 0,
0, 0, 0, 38, 255, 74, 0, 0, 0, 0, 0,
0, 0, 0, 28, 255, 88, 0, 0, 0, 0, 0,
0, 0, 0, 28, 255, 88, 0, 0, 0, 0, 0,
0, 0, 0, 27, 255, 88, 0, 0, 0, 0, 0,
0, 0, 0, 5, 252, 108, 0, 0, 0, 0, 0,
0, 0, 0, 0, 183, 216, 45, 2, 0, 0, 0,
0, 0, 0, 0, 25, 165, 232, 227, 0, 0, 0,
},
/* '0x7c' */ {
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
0, 0, 0, 0, 196, 172, 0, 0, 0, 0, 0,
},
/* '0x7d' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 249, 223, 137, 8, 0, 0, 0, 0, 0,
0, 0, 4, 64, 239, 131, 0, 0, 0, 0, 0,
0, 0, 0, 0, 147, 221, 0, 0, 0, 0, 0,
0, 0, 0, 0, 117, 251, 1, 0, 0, 0, 0,
0, 0, 0, 0, 116, 255, 4, 0, 0, 0, 0,
0, 0, 0, 0, 114, 255, 4, 0, 0, 0, 0,
0, 0, 0, 0, 93, 255, 20, 0, 0, 0, 0,
0, 0, 0, 0, 22, 240, 151, 21, 0, 0, 0,
0, 0, 0, 0, 0, 78, 241, 255, 124, 0, 0,
0, 0, 0, 0, 27, 244, 121, 16, 0, 0, 0,
0, 0, 0, 0, 94, 255, 11, 0, 0, 0, 0,
0, 0, 0, 0, 108, 255, 4, 0, 0, 0, 0,
0, 0, 0, 0, 108, 255, 4, 0, 0, 0, 0,
0, 0, 0, 0, 108, 255, 3, 0, 0, 0, 0,
0, 0, 0, 0, 128, 235, 0, 0, 0, 0, 0,
0, 0, 3, 52, 227, 159, 0, 0, 0, 0, 0,
0, 0, 251, 237, 155, 16, 0, 0, 0, 0, 0,
},
/* '0x7e' */ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 98, 224, 226, 82, 0, 0, 0, 0, 0, 0,
34, 252, 81, 66, 240, 65, 0, 28, 255, 66, 0,
93, 255, 5, 0, 90, 232, 48, 100, 244, 17, 0,
0, 0, 0, 0, 0, 105, 233, 222, 83, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
};