From 2461cd921d45e3d75245568bc59831c1f0a43331 Mon Sep 17 00:00:00 2001 From: EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> Date: Fri, 3 May 2024 01:02:21 -0400 Subject: changed some makefile variables to export --- makefile | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/makefile b/makefile index 8ec9152..ccd252c 100644 --- a/makefile +++ b/makefile @@ -2,13 +2,13 @@ OS_NAME := emuos ARCH = i386 -SYSROOT = $(PWD)/sysroot +export SYSROOT = $(PWD)/sysroot # Variables for easy access of tools like gcc and nasm -CC = i686-elf-gcc -CXX = i686-elf-g++ -LD = i686-elf-ld -NASM = nasm +export CC = i686-elf-gcc +export CXX = i686-elf-g++ +export LD = i686-elf-ld +export NASM = nasm QEMU = qemu-system-i386 ASMFLAGS = -felf32 #CXXFLAGS := -ffreestanding -O2 -Wall -Wextra -fno-exceptions -fno-rtti @@ -20,11 +20,11 @@ all: libck.a kernel.bin grub libck.a: $(info [INFO] Building libck) - $(MAKE) -C ./libs/libck/ ARCH=$(ARCH) PREFIX=$(PWD) CC=$(CC) CXX=$(CXX) LD=$(LD) NASM=$(NASM) SYSROOT=$(SYSROOT) + $(MAKE) -C ./libs/libck/ ARCH=$(ARCH) PREFIX=$(PWD) kernel.bin: $(info [INFO] Building kernel) - $(MAKE) -C ./kernel/ ARCH=$(ARCH) PREFIX=$(PWD) CC=$(CC) CXX=$(CXX) LD=$(LD) NASM=$(NASM) SYSROOT=$(SYSROOT) + $(MAKE) -C ./kernel/ ARCH=$(ARCH) PREFIX=$(PWD) grub: kernel.bin grub.cfg grub-file --is-x86-multiboot $< @@ -38,13 +38,13 @@ qemu: grub install: install-headers install-libraries install-headers: - $(MAKE) -C ./kernel/ install-headers SYSROOT=$(SYSROOT) - $(MAKE) -C ./libs/libck/ install-headers SYSROOT=$(SYSROOT) + $(MAKE) -C ./kernel/ install-headers + $(MAKE) -C ./libs/libck/ install-headers install-libraries: - $(MAKE) -C ./libs/libck/ install-lib SYSROOT=$(SYSROOT) + $(MAKE) -C ./libs/libck/ install-lib clean: - -@$(MAKE) -C ./kernel/ clean SYSROOT=$(SYSROOT) - -@$(MAKE) -C ./libs/libck/ clean SYSROOT=$(SYSROOT) + -@$(MAKE) -C ./kernel/ clean + -@$(MAKE) -C ./libs/libck/ clean -@$(RM) $(wildcard *.bin *.a) -- cgit v1.2.3-70-g09d2 From 2d59766eb330b9d15a9bcbcd7e1695809fc099c5 Mon Sep 17 00:00:00 2001 From: EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> Date: Fri, 3 May 2024 03:39:47 -0400 Subject: renamed i386 to x86 --- kernel/arch/i386/boot.asm | 103 ------------ kernel/arch/i386/crti.asm | 12 -- kernel/arch/i386/crtn.asm | 9 - kernel/arch/i386/gdt.asm | 35 ---- kernel/arch/i386/gdt2.cpp | 51 ------ kernel/arch/i386/idt.cpp | 133 --------------- kernel/arch/i386/isr.asm | 324 ------------------------------------ kernel/arch/i386/isr_handler.cpp | 21 --- kernel/arch/i386/linker.ld | 38 ----- kernel/arch/i386/multiboot.cpp | 30 ---- kernel/arch/i386/multiboot.h | 274 ------------------------------ kernel/arch/i386/pic.cpp | 97 ----------- kernel/arch/i386/ps2_controller.cpp | 191 --------------------- kernel/arch/i386/tmtty.cpp | 78 --------- kernel/arch/i386/vga.h | 35 ---- kernel/arch/x86/boot.asm | 103 ++++++++++++ kernel/arch/x86/crti.asm | 12 ++ kernel/arch/x86/crtn.asm | 9 + kernel/arch/x86/gdt.asm | 35 ++++ kernel/arch/x86/gdt2.cpp | 51 ++++++ kernel/arch/x86/idt.cpp | 133 +++++++++++++++ kernel/arch/x86/isr.asm | 324 ++++++++++++++++++++++++++++++++++++ kernel/arch/x86/isr_handler.cpp | 21 +++ kernel/arch/x86/linker.ld | 38 +++++ kernel/arch/x86/multiboot.cpp | 30 ++++ kernel/arch/x86/multiboot.h | 274 ++++++++++++++++++++++++++++++ kernel/arch/x86/pic.cpp | 97 +++++++++++ kernel/arch/x86/ps2_controller.cpp | 191 +++++++++++++++++++++ kernel/arch/x86/tmtty.cpp | 78 +++++++++ kernel/arch/x86/vga.h | 35 ++++ kernel/makefile | 7 - makefile | 12 +- 32 files changed, 1437 insertions(+), 1444 deletions(-) delete mode 100644 kernel/arch/i386/boot.asm delete mode 100644 kernel/arch/i386/crti.asm delete mode 100644 kernel/arch/i386/crtn.asm delete mode 100644 kernel/arch/i386/gdt.asm delete mode 100644 kernel/arch/i386/gdt2.cpp delete mode 100644 kernel/arch/i386/idt.cpp delete mode 100644 kernel/arch/i386/isr.asm delete mode 100644 kernel/arch/i386/isr_handler.cpp delete mode 100644 kernel/arch/i386/linker.ld delete mode 100644 kernel/arch/i386/multiboot.cpp delete mode 100644 kernel/arch/i386/multiboot.h delete mode 100644 kernel/arch/i386/pic.cpp delete mode 100644 kernel/arch/i386/ps2_controller.cpp delete mode 100644 kernel/arch/i386/tmtty.cpp delete mode 100644 kernel/arch/i386/vga.h create mode 100644 kernel/arch/x86/boot.asm create mode 100644 kernel/arch/x86/crti.asm create mode 100644 kernel/arch/x86/crtn.asm create mode 100644 kernel/arch/x86/gdt.asm create mode 100644 kernel/arch/x86/gdt2.cpp create mode 100644 kernel/arch/x86/idt.cpp create mode 100644 kernel/arch/x86/isr.asm create mode 100644 kernel/arch/x86/isr_handler.cpp create mode 100644 kernel/arch/x86/linker.ld create mode 100644 kernel/arch/x86/multiboot.cpp create mode 100644 kernel/arch/x86/multiboot.h create mode 100644 kernel/arch/x86/pic.cpp create mode 100644 kernel/arch/x86/ps2_controller.cpp create mode 100644 kernel/arch/x86/tmtty.cpp create mode 100644 kernel/arch/x86/vga.h diff --git a/kernel/arch/i386/boot.asm b/kernel/arch/i386/boot.asm deleted file mode 100644 index 42c11e6..0000000 --- a/kernel/arch/i386/boot.asm +++ /dev/null @@ -1,103 +0,0 @@ -; multiboot header constants -MBALIGN equ 1 << 0 -MEMINFO equ 1 << 1 -MBFLAGS equ MBALIGN | MEMINFO -MAGIC equ 0x1BADB002 -CHECKSUM equ -(MAGIC+MBFLAGS) - -; multiboot header -section .multiboot -align 4 - dd MAGIC - dd MBFLAGS - dd CHECKSUM - -section .data -%include "arch/i386/gdt.asm" - -; defines the stack -section .bss -align 16 -stack_bottom: -resb 16384 ; 16 KiB -stack_top: - -; temporary paging tables -align 4 -boot_page_directory: - resb 4096 -boot_page_table: - resb 4096 - - -section .text -global _start:function (_start.end - _start) -_start: - cli - ; setup stack - mov esp, stack_top - - ; push the multiboot header data into the stack for later use - push eax - push ebx - - ; get multiboot header data (for memory map) - ;extern multiboot_main - ;call multiboot_main - - ;extern _init - ;Scall _init - - lgdt [gdt_descriptor] - jmp 0x08:.gdt_jmp - -.gdt_jmp: - mov ax, DATA_SEG - mov ds, ax - mov es, ax - mov fs, ax - mov gs, ax - mov ss, ax - jmp .gdt_jmp2 - -.gdt_jmp2: - ; setup paging (to map kernel to the higher half) - ;mov eax, 0 - ;mov cr3, eax - ;mov eax, cr0 - ;or eax, 0x80000001 - ;mov cr0, eax - - ; setup idt - extern idt_setup - call idt_setup - extern idtr - lidt [idtr] - - ; initialize pic - push ebp - mov ebp, esp - mov ebx, 0x28 - push ebx - mov ebx, 0x20 - push ebx - - extern pic_remap - call pic_remap - - pop ebx - pop ebx - mov esp, ebp - pop ebp - - sti - - ; enter the kernel - extern kernel_main - call kernel_main - - ; indefinite loop once system exits - ;cli -.hang: hlt - jmp .hang -.end: \ No newline at end of file diff --git a/kernel/arch/i386/crti.asm b/kernel/arch/i386/crti.asm deleted file mode 100644 index 51f27d9..0000000 --- a/kernel/arch/i386/crti.asm +++ /dev/null @@ -1,12 +0,0 @@ -; x86 crti.asm -section .init -global _init:function -_init: - push ebp - mov ebp, esp - -section .fini -global _fini:function -_fini: - push ebp - mov ebp, esp \ No newline at end of file diff --git a/kernel/arch/i386/crtn.asm b/kernel/arch/i386/crtn.asm deleted file mode 100644 index 370f4ae..0000000 --- a/kernel/arch/i386/crtn.asm +++ /dev/null @@ -1,9 +0,0 @@ -; x86 crtn.asm - -section .init - pop ebp - ret - -section .fini - pop ebp - ret \ No newline at end of file diff --git a/kernel/arch/i386/gdt.asm b/kernel/arch/i386/gdt.asm deleted file mode 100644 index e3af8bd..0000000 --- a/kernel/arch/i386/gdt.asm +++ /dev/null @@ -1,35 +0,0 @@ -; gdt.asm -; GDT is defined here - -gdt_start: - -gdt_null: ; Null segment - dd 0x0 - dd 0x0 - -gdt_kcode: ; Kernel code segment. Kernel has seperate segment from users for ring level - ; flag and access byte description on osdev wiki - dw 0xffff ; low limit - dw 0x0 ;low base - db 0x0 ; mid base - db 10011010b ; order (reversed): ac, rw, dc, ex, s, privl, pr - db 11001111b ; flags then limit. order (reversed): 0, 0, size bit, granularity bit - db 0x0 ; high limit - -gdt_kdata: ; same as gdt_kcode but for the data segment - dw 0xffff ;low limit - dw 0x0 ;low base - db 0x0 ;mid base - db 10010010b ; order: same as code seg. changed for data seg - db 11001111b ; same as kcode - db 0x0 ; high limit - -gdt_end: - -gdt_descriptor: ; describes the gdt to the lgdt register - dw gdt_end - gdt_start - 1 - - dd gdt_start - -CODE_SEG equ gdt_kcode - gdt_start -DATA_SEG equ gdt_kdata - gdt_start \ No newline at end of file diff --git a/kernel/arch/i386/gdt2.cpp b/kernel/arch/i386/gdt2.cpp deleted file mode 100644 index 0acdb0e..0000000 --- a/kernel/arch/i386/gdt2.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include -#include -/* -// structure to be encoded at encodeGdtEntry() -struct GDT -{ - uint32_t base; - uint32_t limit; - uint8_t access_byte; - uint8_t flags; -}; - -GDT strnulldesc {0, 0, 0, 0}; -GDT strkernelcode {0, 0xFFFFF, 0x9A, 0xC}; -GDT strkerneldata {0, 0xFFFFF, 0x92, 0xC}; -GDT strusercode {0, 0xFFFFF, 0xFA, 0xC}; -GDT struserdata {0, 0xFFFFF, 0xF2, 0xC}; - -uint8_t* nulldesc; -uint8_t* kernelcode; -uint8_t* kerneldata; -uint8_t* usercode; -uint8_t* userdata; - - -void encodeGdtEntry(uint8_t *target, struct GDT source) -{ - // Check the limit to make sure that it can be encoded - if (source.limit > 0xFFFFF) {printf("GDT cannot encode limits larger than 0xFFFFF\n");} - - // Encode the limit - target[0] = source.limit & 0xFF; - target[1] = (source.limit >> 8) & 0xFF; - target[6] = (source.limit >> 16) & 0x0F; - - // Encode the base - target[2] = source.base & 0xFF; - target[3] = (source.base >> 8) & 0xFF; - target[4] = (source.base >> 16) & 0xFF; - target[7] = (source.base >> 24) & 0xFF; - - // Encode the access byte - target[5] = source.access_byte; - - // Encode the flags - target[6] |= (source.flags << 4); -} - -extern "C" void setupGdt() { - -} */ \ No newline at end of file diff --git a/kernel/arch/i386/idt.cpp b/kernel/arch/i386/idt.cpp deleted file mode 100644 index a8f3ff4..0000000 --- a/kernel/arch/i386/idt.cpp +++ /dev/null @@ -1,133 +0,0 @@ -#include -#include - -/* Function prototypes for the ISR functions. IDT[0] to IDT[31] are reserved for hardware exceptions */ -extern "C" void isr0(); -extern "C" void isr1(); -extern "C" void isr2(); -extern "C" void isr3(); -extern "C" void isr4(); -extern "C" void isr5(); -extern "C" void isr6(); -extern "C" void isr7(); -extern "C" void isr8(); -extern "C" void isr9(); -extern "C" void isr10(); -extern "C" void isr11(); -extern "C" void isr12(); -extern "C" void isr13(); -extern "C" void isr14(); -extern "C" void isr15(); -extern "C" void isr16(); -extern "C" void isr17(); -extern "C" void isr18(); -extern "C" void isr19(); -extern "C" void isr20(); -extern "C" void isr21(); -extern "C" void isr22(); -extern "C" void isr23(); -extern "C" void isr24(); -extern "C" void isr25(); -extern "C" void isr26(); -extern "C" void isr27(); -extern "C" void isr28(); -extern "C" void isr29(); -extern "C" void isr30(); -extern "C" void isr31(); -extern "C" void isr32(); -extern "C" void isr33(); -extern "C" void isr34(); -extern "C" void isr35(); -extern "C" void isr36(); -extern "C" void isr37(); -extern "C" void isr38(); -extern "C" void isr39(); -extern "C" void isr40(); -extern "C" void isr41(); -extern "C" void isr42(); -extern "C" void isr43(); -extern "C" void isr44(); -extern "C" void isr45(); -extern "C" void isr46(); -extern "C" void isr47(); - -struct idt_entry -{ - uint16_t offset_low; - uint16_t selector; - uint8_t always0; - uint8_t type_attributes; - uint16_t offset_high; -}__attribute__((packed)); - -struct str_idtr { - uint16_t limit; - uint32_t base; -}__attribute__((packed)); - -idt_entry idt[256]; -str_idtr idtr; - -void idt_new_entry(int num, uint32_t offset, uint16_t sel, uint8_t type_attribs) { - idt[num].offset_low = (offset & 0xFFFF); - idt[num].selector = sel; - idt[num].always0 = 0; - idt[num].type_attributes = type_attribs; - idt[num].offset_high = (offset >> 16) & 0xFFFF; -} - -extern "C" void idt_setup() { - idtr.limit = (sizeof(struct idt_entry) * 256) - 1; - idtr.base = (uint32_t)idt; - - // todo: is there really no other way? - idt_new_entry(0, (unsigned)isr0, 0x08, 0x8E); - idt_new_entry(1, (unsigned)isr1, 0x08, 0x8E); - idt_new_entry(2, (unsigned)isr2, 0x08, 0x8E); - idt_new_entry(3, (unsigned)isr3, 0x08, 0x8E); - idt_new_entry(4, (unsigned)isr4, 0x08, 0x8E); - idt_new_entry(5, (unsigned)isr5, 0x08, 0x8E); - idt_new_entry(6, (unsigned)isr6, 0x08, 0x8E); - idt_new_entry(7, (unsigned)isr7, 0x08, 0x8E); - idt_new_entry(8, (unsigned)isr8, 0x08, 0x8E); - idt_new_entry(9, (unsigned)isr9, 0x08, 0x8E); - idt_new_entry(10, (unsigned)isr10, 0x08, 0x8E); - idt_new_entry(11, (unsigned)isr11, 0x08, 0x8E); - idt_new_entry(12, (unsigned)isr12, 0x08, 0x8E); - idt_new_entry(13, (unsigned)isr13, 0x08, 0x8E); - idt_new_entry(14, (unsigned)isr14, 0x08, 0x8E); - idt_new_entry(15, (unsigned)isr15, 0x08, 0x8E); - idt_new_entry(16, (unsigned)isr16, 0x08, 0x8E); - idt_new_entry(17, (unsigned)isr17, 0x08, 0x8E); - idt_new_entry(18, (unsigned)isr18, 0x08, 0x8E); - idt_new_entry(19, (unsigned)isr19, 0x08, 0x8E); - idt_new_entry(20, (unsigned)isr20, 0x08, 0x8E); - idt_new_entry(21, (unsigned)isr21, 0x08, 0x8E); - idt_new_entry(22, (unsigned)isr22, 0x08, 0x8E); - idt_new_entry(23, (unsigned)isr23, 0x08, 0x8E); - idt_new_entry(24, (unsigned)isr24, 0x08, 0x8E); - idt_new_entry(25, (unsigned)isr25, 0x08, 0x8E); - idt_new_entry(26, (unsigned)isr26, 0x08, 0x8E); - idt_new_entry(27, (unsigned)isr27, 0x08, 0x8E); - idt_new_entry(28, (unsigned)isr28, 0x08, 0x8E); - idt_new_entry(29, (unsigned)isr29, 0x08, 0x8E); - idt_new_entry(30, (unsigned)isr30, 0x08, 0x8E); - idt_new_entry(31, (unsigned)isr31, 0x08, 0x8E); - //PIC entries - idt_new_entry(32, (unsigned)isr32, 0x08, 0x8E); - idt_new_entry(33, (unsigned)isr33, 0x08, 0x8E); - idt_new_entry(34, (unsigned)isr34, 0x08, 0x8E); - idt_new_entry(35, (unsigned)isr35, 0x08, 0x8E); - idt_new_entry(36, (unsigned)isr36, 0x08, 0x8E); - idt_new_entry(37, (unsigned)isr37, 0x08, 0x8E); - idt_new_entry(38, (unsigned)isr38, 0x08, 0x8E); - idt_new_entry(39, (unsigned)isr39, 0x08, 0x8E); - idt_new_entry(40, (unsigned)isr40, 0x08, 0x8E); - idt_new_entry(41, (unsigned)isr41, 0x08, 0x8E); - idt_new_entry(42, (unsigned)isr42, 0x08, 0x8E); - idt_new_entry(43, (unsigned)isr43, 0x08, 0x8E); - idt_new_entry(44, (unsigned)isr44, 0x08, 0x8E); - idt_new_entry(45, (unsigned)isr45, 0x08, 0x8E); - idt_new_entry(46, (unsigned)isr46, 0x08, 0x8E); - idt_new_entry(47, (unsigned)isr47, 0x08, 0x8E); -} \ No newline at end of file diff --git a/kernel/arch/i386/isr.asm b/kernel/arch/i386/isr.asm deleted file mode 100644 index 4ccbaf9..0000000 --- a/kernel/arch/i386/isr.asm +++ /dev/null @@ -1,324 +0,0 @@ -; isr.asm -; ISR functions are defined here. Most code is done in isr_handlers.cpp - -global isr0 -global isr1 -global isr2 -global isr3 -global isr4 -global isr5 -global isr6 -global isr7 -global isr8 -global isr9 -global isr10 -global isr11 -global isr12 -global isr13 -global isr14 -global isr15 -global isr16 -global isr17 -global isr18 -global isr19 -global isr20 -global isr21 -global isr22 -global isr23 -global isr24 -global isr25 -global isr26 -global isr27 -global isr28 -global isr29 -global isr30 -global isr31 -global isr32 -global isr33 -global isr34 -global isr35 -global isr36 -global isr37 -global isr38 -global isr39 -global isr40 -global isr41 -global isr42 -global isr43 -global isr44 -global isr45 -global isr46 -global isr47 - -section .text -align 4 - -isr0: - pushad - mov ebx, 0 - call exception_stub - hlt - popad - iret - -isr1: - pushad - popad - iret - -isr2: - pushad - popad - iret - -isr3: - pushad - popad - iret - -isr4: - pushad - popad - iret - -isr5: - pushad - popad - iret - -isr6: - pushad - mov ebx, 6 - call exception_stub - popad - iret - -isr7: - pushad - popad - iret - -isr8: - pushad - mov ebx, 8 - call exception_stub - popad - iret - -isr9: - pushad - popad - iret - -isr10: - pushad - popad - iret - -isr11: - pushad - mov ebx, 11 - call exception_stub - popad - iret - -isr12: - pushad - popad - iret - -isr13: - pushad - mov ebx, 13 - call exception_stub - popad - iret - -isr14: - pushad - mov ebx, 14 - call exception_stub - popad - iret - -isr15: - pushad - popad - iret - -isr16: - pushad - popad - iret - -isr17: - pushad - popad - iret - -isr18: - pushad - popad - iret - -isr19: - pushad - popad - iret - -isr20: - pushad - popad - iret - -isr21: - pushad - popad - iret - -isr22: - pushad - popad - iret - -isr23: - pushad - popad - iret - -isr24: - pushad - popad - iret - -isr25: - pushad - popad - iret - -isr26: - pushad - popad - iret - -isr27: - pushad - popad - iret -isr28: - pushad - popad - iret - -isr29: - pushad - popad - iret - -isr30: - pushad - popad - iret - -isr31: - pushad - popad - iret - -isr32: - pushad - ;extern pit_handler - ;call pit_handler - popad - iret - -isr33: - pushad - extern ps2_handler - call ps2_handler - popad - iret - -isr34: - pushad - popad - iret - -isr35: - pushad - popad - iret - -isr36: - pushad - popad - iret -isr37: - pushad - popad - iret - -isr38: - pushad - popad - iret - -isr39: - pushad - popad - iret - -isr40: - pushad - xchg bx, bx - popad - iret - -isr41: - pushad - popad - iret - -isr42: - pushad - popad - iret - -isr43: - pushad - popad - iret - -isr44: - pushad - popad - iret - -isr45: - pushad - popad - iret - -isr46: - pushad - popad - iret - -isr47: - pushad - popad - iret - -exception_stub: - push ebp - mov ebp, esp - - push ebx - ;cld - extern exception_handler - call exception_handler - pop ebx - - mov esp, ebp - pop ebp - ret \ No newline at end of file diff --git a/kernel/arch/i386/isr_handler.cpp b/kernel/arch/i386/isr_handler.cpp deleted file mode 100644 index ac8fb49..0000000 --- a/kernel/arch/i386/isr_handler.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -extern "C" void exception_handler(int e) { - //unsigned char errorcode[2]{((unsigned char) e) + 48}; - //terminal_initialize(); - printf("Exception %x\n", e); -} - -#define PS2_DATA 0x60 -extern "C" void ps2_handler() { - keyboard_write(inb(PS2_DATA)); - - pic_send_eoi(1); -} \ No newline at end of file diff --git a/kernel/arch/i386/linker.ld b/kernel/arch/i386/linker.ld deleted file mode 100644 index c4bfa3b..0000000 --- a/kernel/arch/i386/linker.ld +++ /dev/null @@ -1,38 +0,0 @@ -/* Excecution start point symbol */ -ENTRY(_start) - -SECTIONS -{ - . = 1M; - - /* Used to get the beginning and end address of the kernel */ - _kernel_begin = .; - - /* code. multiboot header comes first */ - .text BLOCK(4K) : ALIGN(4K) - { - *(.multiboot) - *(.text) - } - - /* read only data */ - .rodata BLOCK(4K) : ALIGN(4K) - { - *(.rodata) - } - - /* read write data (initialized) */ - .data BLOCK(4K) : ALIGN(4K) - { - *(.data) - } - - /* read write data (uninitialized) and stack */ - .bss BLOCK(4K) : ALIGN(4K) - { - *(COMMON) - *(.bss) - } - - _kernel_end = .; -} \ No newline at end of file diff --git a/kernel/arch/i386/multiboot.cpp b/kernel/arch/i386/multiboot.cpp deleted file mode 100644 index 9f3eedb..0000000 --- a/kernel/arch/i386/multiboot.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include -#include -#include -#include "multiboot.h" -#include - -// gets the memory map and stuff -extern "C" void multiboot_main(multiboot_info_t* mbd, uint32_t magic) { - terminal_initialize(); - //printf("multiboot struc addr: %x\n", mbd); - if (magic != MULTIBOOT_BOOTLOADER_MAGIC) { - printf("Invalid multiboot magic number\n"); - abort(); - } - - // checks bit 6 to see if there's a valid memory map - if (!(mbd->flags >> 6 & 0x1)) { - printf("Invalid GRUB memory map\n"); - abort(); - } - - // loop through memory map and display the values - for (int i = 0; i < mbd->mmap_length; i += sizeof(multiboot_memory_map_t)) { - multiboot_memory_map_t* mmmt = (multiboot_memory_map_t*)(mbd->mmap_addr + i); - - printf("Start Addr: 0x%lx | Length: 0x%lx | Size: 0x%x | Type: %d\n", - mmmt->addr, mmmt->len, mmmt->size, mmmt->type); - //printf("%lx,%x,%x,%d\n", mmmt->size, mmmt->size, mmmt->size, mmmt->size); - } -} \ No newline at end of file diff --git a/kernel/arch/i386/multiboot.h b/kernel/arch/i386/multiboot.h deleted file mode 100644 index 0951ebe..0000000 --- a/kernel/arch/i386/multiboot.h +++ /dev/null @@ -1,274 +0,0 @@ -/* multiboot.h - Multiboot header file. */ -/* Copyright (C) 1999,2003,2007,2008,2009,2010 Free Software Foundation, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ANY - * DEVELOPER OR DISTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR - * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef MULTIBOOT_HEADER -#define MULTIBOOT_HEADER 1 - -/* How many bytes from the start of the file we search for the header. */ -#define MULTIBOOT_SEARCH 8192 -#define MULTIBOOT_HEADER_ALIGN 4 - -/* The magic field should contain this. */ -#define MULTIBOOT_HEADER_MAGIC 0x1BADB002 - -/* This should be in %eax. */ -#define MULTIBOOT_BOOTLOADER_MAGIC 0x2BADB002 - -/* Alignment of multiboot modules. */ -#define MULTIBOOT_MOD_ALIGN 0x00001000 - -/* Alignment of the multiboot info structure. */ -#define MULTIBOOT_INFO_ALIGN 0x00000004 - -/* Flags set in the ’flags’ member of the multiboot header. */ - -/* Align all boot modules on i386 page (4KB) boundaries. */ -#define MULTIBOOT_PAGE_ALIGN 0x00000001 - -/* Must pass memory information to OS. */ -#define MULTIBOOT_MEMORY_INFO 0x00000002 - -/* Must pass video information to OS. */ -#define MULTIBOOT_VIDEO_MODE 0x00000004 - -/* This flag indicates the use of the address fields in the header. */ -#define MULTIBOOT_AOUT_KLUDGE 0x00010000 - -/* Flags to be set in the ’flags’ member of the multiboot info structure. */ - -/* is there basic lower/upper memory information? */ -#define MULTIBOOT_INFO_MEMORY 0x00000001 -/* is there a boot device set? */ -#define MULTIBOOT_INFO_BOOTDEV 0x00000002 -/* is the command-line defined? */ -#define MULTIBOOT_INFO_CMDLINE 0x00000004 -/* are there modules to do something with? */ -#define MULTIBOOT_INFO_MODS 0x00000008 - -/* These next two are mutually exclusive */ - -/* is there a symbol table loaded? */ -#define MULTIBOOT_INFO_AOUT_SYMS 0x00000010 -/* is there an ELF section header table? */ -#define MULTIBOOT_INFO_ELF_SHDR 0X00000020 - -/* is there a full memory map? */ -#define MULTIBOOT_INFO_MEM_MAP 0x00000040 - -/* Is there drive info? */ -#define MULTIBOOT_INFO_DRIVE_INFO 0x00000080 - -/* Is there a config table? */ -#define MULTIBOOT_INFO_CONFIG_TABLE 0x00000100 - -/* Is there a boot loader name? */ -#define MULTIBOOT_INFO_BOOT_LOADER_NAME 0x00000200 - -/* Is there a APM table? */ -#define MULTIBOOT_INFO_APM_TABLE 0x00000400 - -/* Is there video information? */ -#define MULTIBOOT_INFO_VBE_INFO 0x00000800 -#define MULTIBOOT_INFO_FRAMEBUFFER_INFO 0x00001000 - -#ifndef ASM_FILE - -typedef unsigned char multiboot_uint8_t; -typedef unsigned short multiboot_uint16_t; -typedef unsigned int multiboot_uint32_t; -typedef unsigned long long multiboot_uint64_t; - -struct multiboot_header -{ - /* Must be MULTIBOOT_MAGIC - see above. */ - multiboot_uint32_t magic; - - /* Feature flags. */ - multiboot_uint32_t flags; - - /* The above fields plus this one must equal 0 mod 2^32. */ - multiboot_uint32_t checksum; - - /* These are only valid if MULTIBOOT_AOUT_KLUDGE is set. */ - multiboot_uint32_t header_addr; - multiboot_uint32_t load_addr; - multiboot_uint32_t load_end_addr; - multiboot_uint32_t bss_end_addr; - multiboot_uint32_t entry_addr; - - /* These are only valid if MULTIBOOT_VIDEO_MODE is set. */ - multiboot_uint32_t mode_type; - multiboot_uint32_t width; - multiboot_uint32_t height; - multiboot_uint32_t depth; -}; - -/* The symbol table for a.out. */ -struct multiboot_aout_symbol_table -{ - multiboot_uint32_t tabsize; - multiboot_uint32_t strsize; - multiboot_uint32_t addr; - multiboot_uint32_t reserved; -}; -typedef struct multiboot_aout_symbol_table multiboot_aout_symbol_table_t; - -/* The section header table for ELF. */ -struct multiboot_elf_section_header_table -{ - multiboot_uint32_t num; - multiboot_uint32_t size; - multiboot_uint32_t addr; - multiboot_uint32_t shndx; -}; -typedef struct multiboot_elf_section_header_table multiboot_elf_section_header_table_t; - -struct multiboot_info -{ - /* Multiboot info version number */ - multiboot_uint32_t flags; - - /* Available memory from BIOS */ - multiboot_uint32_t mem_lower; - multiboot_uint32_t mem_upper; - - /* "root" partition */ - multiboot_uint32_t boot_device; - - /* Kernel command line */ - multiboot_uint32_t cmdline; - - /* Boot-Module list */ - multiboot_uint32_t mods_count; - multiboot_uint32_t mods_addr; - - union - { - multiboot_aout_symbol_table_t aout_sym; - multiboot_elf_section_header_table_t elf_sec; - } u; - - /* Memory Mapping buffer */ - multiboot_uint32_t mmap_length; - multiboot_uint32_t mmap_addr; - - /* Drive Info buffer */ - multiboot_uint32_t drives_length; - multiboot_uint32_t drives_addr; - - /* ROM configuration table */ - multiboot_uint32_t config_table; - - /* Boot Loader Name */ - multiboot_uint32_t boot_loader_name; - - /* APM table */ - multiboot_uint32_t apm_table; - - /* Video */ - multiboot_uint32_t vbe_control_info; - multiboot_uint32_t vbe_mode_info; - multiboot_uint16_t vbe_mode; - multiboot_uint16_t vbe_interface_seg; - multiboot_uint16_t vbe_interface_off; - multiboot_uint16_t vbe_interface_len; - - multiboot_uint64_t framebuffer_addr; - multiboot_uint32_t framebuffer_pitch; - multiboot_uint32_t framebuffer_width; - multiboot_uint32_t framebuffer_height; - multiboot_uint8_t framebuffer_bpp; -#define MULTIBOOT_FRAMEBUFFER_TYPE_INDEXED 0 -#define MULTIBOOT_FRAMEBUFFER_TYPE_RGB 1 -#define MULTIBOOT_FRAMEBUFFER_TYPE_EGA_TEXT 2 - multiboot_uint8_t framebuffer_type; - union - { - struct - { - multiboot_uint32_t framebuffer_palette_addr; - multiboot_uint16_t framebuffer_palette_num_colors; - }; - struct - { - multiboot_uint8_t framebuffer_red_field_position; - multiboot_uint8_t framebuffer_red_mask_size; - multiboot_uint8_t framebuffer_green_field_position; - multiboot_uint8_t framebuffer_green_mask_size; - multiboot_uint8_t framebuffer_blue_field_position; - multiboot_uint8_t framebuffer_blue_mask_size; - }; - }; -}; -typedef struct multiboot_info multiboot_info_t; - -struct multiboot_color -{ - multiboot_uint8_t red; - multiboot_uint8_t green; - multiboot_uint8_t blue; -}; - -struct multiboot_mmap_entry -{ - multiboot_uint32_t size; - multiboot_uint64_t addr; - multiboot_uint64_t len; -#define MULTIBOOT_MEMORY_AVAILABLE 1 -#define MULTIBOOT_MEMORY_RESERVED 2 -#define MULTIBOOT_MEMORY_ACPI_RECLAIMABLE 3 -#define MULTIBOOT_MEMORY_NVS 4 -#define MULTIBOOT_MEMORY_BADRAM 5 - multiboot_uint32_t type; -} __attribute__((packed)); -typedef struct multiboot_mmap_entry multiboot_memory_map_t; - -struct multiboot_mod_list -{ - /* the memory used goes from bytes ’mod_start’ to ’mod_end-1’ inclusive */ - multiboot_uint32_t mod_start; - multiboot_uint32_t mod_end; - - /* Module command line */ - multiboot_uint32_t cmdline; - - /* padding to take it to 16 bytes (must be zero) */ - multiboot_uint32_t pad; -}; -typedef struct multiboot_mod_list multiboot_module_t; - -/* APM BIOS info. */ -struct multiboot_apm_info -{ - multiboot_uint16_t version; - multiboot_uint16_t cseg; - multiboot_uint32_t offset; - multiboot_uint16_t cseg_16; - multiboot_uint16_t dseg; - multiboot_uint16_t flags; - multiboot_uint16_t cseg_len; - multiboot_uint16_t cseg_16_len; - multiboot_uint16_t dseg_len; -}; - -#endif /* ! ASM_FILE */ - -#endif /* ! MULTIBOOT_HEADER */ \ No newline at end of file diff --git a/kernel/arch/i386/pic.cpp b/kernel/arch/i386/pic.cpp deleted file mode 100644 index 78cbcf8..0000000 --- a/kernel/arch/i386/pic.cpp +++ /dev/null @@ -1,97 +0,0 @@ -#include -#include -#include -#include - -#define PIC1 0x20 -#define PIC2 0xA0 -#define PIC1_CMD PIC1 -#define PIC1_DATA (PIC1 + 1) -#define PIC2_CMD PIC2 -#define PIC2_DATA (PIC2 + 1) -#define PIC_READ_IRR 0x0a // OCW3 irq ready next CMD read -#define PIC_READ_ISR 0x0b // OCW3 irq service next CMD read - -#define PIC_EOI 0x20 - -// pic reinitialization constants -#define ICW1_ICW4 0x01 // indicates icw4 will be present -#define ICW1_SINGLE 0x02 // single cascade mode -#define ICW1_INTERVAL4 0x04 // call address interval 4 -#define ICW1_LEVEL 0x08 // level triggered (edge) mode -#define ICW1_INIT 0x10 // initialization - -#define ICW4_8086 0x01 // 8086 mode -#define ICW4_AUTO 0x02 // auto (normal) eoi -#define ICW4_BUF_SLAVE 0x08 // buffered mode/slave -#define ICW4_BUF_MASTER 0x0C // buffered mode/master -#define ICW4_SFNM 0x10 // special fully nested (not) - -void pic_send_eoi(unsigned char irq) { - if (irq >= 8) { - outb(PIC2_CMD, PIC_EOI); - } - outb(PIC1_CMD, PIC_EOI); -} - -// offset 1 is for master, offset 2 is for slave -void pic_remap(int offset1, int offset2) { - unsigned char a1, a2; - - a1 = inb(PIC1_DATA); // save masks - a2 = inb(PIC2_DATA); - - outb(PIC1_CMD, ICW1_INIT | ICW1_ICW4); // starts initialization in cascade mode - io_wait(); - outb(PIC2_CMD, ICW1_INIT | ICW1_ICW4); - io_wait(); - outb(PIC1_DATA, offset1); // icw2: master and slave vector offset set - io_wait(); - outb(PIC2_DATA, offset2); - io_wait(); - outb(PIC1_DATA, 4); // tells master pic theres a slave pic at irq2 - io_wait(); - outb(PIC2_DATA, 2); // tells slave pic its cascade identity - io_wait(); - - outb(PIC1_DATA, ICW4_8086); - io_wait(); - outb(PIC2_DATA, ICW4_8086); - io_wait(); - - outb(PIC1_DATA, a1); // restore masks - outb(PIC2_DATA, a2); - - for (char i = 0; i < 15; i++) - { - irq_set_mask(i); - } -} - -void irq_set_mask(unsigned char irq) { - uint16_t port; - uint8_t value; - - if (irq < 8) { - port = PIC1_DATA; - } else { - port = PIC2_DATA; - irq -= 8; - } - value = inb(port) | (1 << irq); - outb(port, value); -} - -void irq_clear_mask(unsigned char irq) { - uint16_t port; - uint8_t value; - - if (irq < 8) { - port = PIC1_DATA; - } else { - port = PIC2_DATA; - irq -= 8; - } - value = inb(port) & ~(1 << irq); - outb(port, value); -} \ No newline at end of file diff --git a/kernel/arch/i386/ps2_controller.cpp b/kernel/arch/i386/ps2_controller.cpp deleted file mode 100644 index 9424233..0000000 --- a/kernel/arch/i386/ps2_controller.cpp +++ /dev/null @@ -1,191 +0,0 @@ -#include -#include -#include -#include - -#define PS2_DATA 0x60 // data port -#define PS2_STATUS 0x64 // status register -#define PS2_COMMAND 0x64 // command register - -// set to true if 2nd ps2 port is available -bool ps2SecondaryEnabled = false; - -void initialize_ps2_controller() { - inputbuffer_wait(); - outb(PS2_COMMAND, 0xAD); // disable devices - inputbuffer_wait(); - outb(PS2_COMMAND, 0xA7); - - outputbuffer_wait(); - inb(PS2_DATA); // flush output buffer - inb(PS2_DATA); - inb(PS2_DATA); - inb(PS2_DATA); - inb(PS2_DATA); - inb(PS2_DATA); - inb(PS2_DATA); - inb(PS2_DATA); - inb(PS2_DATA); - inb(PS2_DATA); - - - inputbuffer_wait(); - outb(PS2_COMMAND, 0x20); // set controller configuration byte - outputbuffer_wait(); - uint8_t conconfig = inb(PS2_DATA); - conconfig &= 0b00110100; - inputbuffer_wait(); - outb(PS2_COMMAND, 0x60); - inputbuffer_wait(); - outb(PS2_DATA, conconfig); - - inputbuffer_wait(); - outb(PS2_COMMAND, 0xAA); // performs controller self test - outputbuffer_wait(); - if (inb(PS2_DATA) == 0xFC) { - printf("PS/2 controller failed self test\n"); - } - inputbuffer_wait(); - outb(PS2_COMMAND, 0x60); // in case the controller resets from the test - inputbuffer_wait(); - outb(PS2_DATA, conconfig); - - int portcount = 1; - inputbuffer_wait(); - outb(PS2_COMMAND, 0xA8); // check if ps2 controller is dual channel - inputbuffer_wait(); - outb(PS2_COMMAND, 0x20); - outputbuffer_wait(); - conconfig = inb(PS2_DATA); - if ((conconfig & 0b00100000) == 0b00000000) { // checks if bit 5 is cleared - ps2SecondaryEnabled = true; - //printf("Dual channel PS/2\n"); - portcount = 2; - } else { - //printf("Single channel PS/2\n"); - } - - inputbuffer_wait(); - outb(PS2_COMMAND, 0xAB); // tests ps2 ports - outputbuffer_wait(); - if (inb(PS2_DATA) != 0x00) { - printf("PS/2 port 1 failed self test\n"); - --portcount; - } - if (ps2SecondaryEnabled) { - inputbuffer_wait(); - outb(PS2_COMMAND, 0xA9); - outputbuffer_wait(); - if (inb(PS2_DATA) != 0x00) { - printf("PS/2 port 2 failed self test\n"); - --portcount; - } - } - if (!portcount) { - printf("PS/2 initialization failed\n"); - return; - } - - conconfig |= 0b00000011; - inputbuffer_wait(); - outb(PS2_COMMAND, 0xAE); // enable ps2 ports - conconfig |= 0b00000001; - if (ps2SecondaryEnabled) { - inputbuffer_wait(); - outb(PS2_COMMAND, 0xA8); - outb(PS2_COMMAND, 0x60); - conconfig |= 0b00000011; - outb(PS2_DATA, conconfig); - } else { - inputbuffer_wait(); - outb(PS2_COMMAND, 0x60); - conconfig |= 0b00000001; - outb(PS2_DATA, conconfig); - } - - //ps2_dev_send_command(0, 0xFF); // reset devices - //inb(PS2_DATA); - //io_wait(); - if (ps2SecondaryEnabled) { - //ps2_dev_send_command(1, 0xFF); - //inb(PS2_DATA); - //io_wait(); - } - - //printf("PS/2 controller initialized\n"); -} - -// waits for input buffer (write) to be filled -void inputbuffer_wait() { - for (int i = 0; i < 15; i++) { - uint8_t status_reg = inb(PS2_STATUS); - if ((status_reg & 0b00000010)) { - return; - } - io_wait(); - } -} - -// waits for outbut buffer (read) to be filled -void outputbuffer_wait() { - for (int i = 0; i < 15; i++) { - uint8_t status_reg = inb(PS2_STATUS); - if ((status_reg & 0b00000001)) { - return; - } - io_wait(); - } -} - -// checks if inpbut buffer is set -bool inputbuffer_check() { - uint8_t status_reg = inb(PS2_STATUS); - if ((status_reg & 0b00000010)) { - return true; - } else { - return false; - } -} - -bool outputbuffer_check() { - uint8_t status_reg = inb(PS2_STATUS); - if ((status_reg & 0b00000001)) { - return true; - } else { - return false; - } -} - -/* Sends a command byte to a ps2 device -Port numbers start from 0 */ -int ps2_dev_send_command(int port, unsigned char command) { - //bool commandRecieved = false; - switch (port) - { - case 0: - for (int i = 0; i < 5; i++) { - uint8_t status_reg = inb(PS2_STATUS); - if ((status_reg & 0b00000010) == 0b00000000) { - outb(PS2_DATA, command); - return 0; - } - inb(PS2_DATA); - io_wait(); - } - return 1; // error returned if timeout expires - case 1: - outb(PS2_COMMAND, 0xD4); - for (int i = 0; i < 5; i++) { - uint8_t status_reg = inb(PS2_STATUS); - if ((status_reg & 0b00000010) == 0b00000000) { - outb(PS2_DATA, command); - return 0; - } - inb(PS2_DATA); - io_wait(); - } - return 1; - default: - return 2; // out of port range - } -} \ No newline at end of file diff --git a/kernel/arch/i386/tmtty.cpp b/kernel/arch/i386/tmtty.cpp deleted file mode 100644 index d4dc772..0000000 --- a/kernel/arch/i386/tmtty.cpp +++ /dev/null @@ -1,78 +0,0 @@ -#include -#include -#include -#include -#include - -#include "vga.h" - -/* Text mode tty */ - -static const size_t VGA_WIDTH = 80; -static const size_t VGA_HEIGHT = 25; -static uint16_t* const VGA_MEMORY = (uint16_t*) 0xB8000; - -size_t terminal_row; -size_t terminal_column; -uint8_t terminal_color; -uint16_t* terminal_buffer; - -void terminal_clear(void) { - terminal_row = 0; - terminal_column = 0; - for (size_t y = 0; y < VGA_HEIGHT; y++) { - for (size_t x = 0; x < VGA_WIDTH; x++) { - const size_t i = y * VGA_WIDTH + x; - terminal_buffer[i] = vga_entry(' ', terminal_color); - } - } -} - -void terminal_initialize(void) { - terminal_color = vga_entry_color(VGA_COLOR_WHITE, VGA_COLOR_BLACK); - terminal_buffer = VGA_MEMORY; - terminal_clear(); -} - -void terminal_setcolor(uint8_t color) { - terminal_color = color; -} - -void terminal_putentryat(char c, uint8_t color, size_t x, size_t y) { - const size_t i = y * VGA_WIDTH + x; - terminal_buffer[i] = vga_entry(c, color); -} - -void terminal_scroll() { - memmove(VGA_MEMORY, (VGA_MEMORY + VGA_WIDTH), (VGA_HEIGHT * VGA_WIDTH) - VGA_WIDTH); - memset(VGA_MEMORY + (VGA_WIDTH * VGA_HEIGHT) - VGA_WIDTH, 0x0, VGA_WIDTH * 2); - --terminal_row; -} - -void terminal_putchar(char c) { - unsigned char uc = c; - if (uc == '\n') { - terminal_column = 0; - if (terminal_row++ == VGA_HEIGHT) - terminal_scroll(); - return; - } - terminal_putentryat(uc, terminal_color, terminal_column, terminal_row); - - if (++terminal_column == VGA_WIDTH) { - terminal_column = 0; - if (++terminal_row == VGA_HEIGHT) { - terminal_scroll(); - } - } -} - -void terminal_write(const char* data, size_t size) { - for (size_t i = 0; i < size; i++) { - terminal_putchar(data[i]); - } -} - -void terminal_writestring(const char* data) { - terminal_write(data, strlen(data)); -} \ No newline at end of file diff --git a/kernel/arch/i386/vga.h b/kernel/arch/i386/vga.h deleted file mode 100644 index 5b6b351..0000000 --- a/kernel/arch/i386/vga.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef ARCH_I386_VGA_H -#define ARCH_I386_VGA_H - -#include - -// hardware text mode constants -enum vga_color { - VGA_COLOR_BLACK = 0, - VGA_COLOR_BLUE = 1, - VGA_COLOR_GREEN = 2, - VGA_COLOR_CYAN = 3, - VGA_COLOR_RED = 4, - VGA_COLOR_MAGENTA = 5, - VGA_COLOR_BROWN = 6, - VGA_COLOR_LIGHT_GREY = 7, - VGA_COLOR_DARK_GREY = 8, - VGA_COLOR_LIGHT_BLUE = 9, - VGA_COLOR_LIGHT_GREEN = 10, - VGA_COLOR_LIGHT_CYAN = 11, - VGA_COLOR_LIGHT_RED = 12, - VGA_COLOR_LIGHT_MAGENTA = 13, - VGA_COLOR_LIGHT_BROWN = 14, - VGA_COLOR_WHITE = 15, -}; - -static inline uint8_t vga_entry_color(enum vga_color fg, enum vga_color bg) { - return fg | bg << 4; -} - -// returns the character/color of a terminal entry -static inline uint16_t vga_entry(unsigned char uc, uint8_t color) { - return (uint16_t) uc | (uint16_t) color << 8; -} - -#endif \ No newline at end of file diff --git a/kernel/arch/x86/boot.asm b/kernel/arch/x86/boot.asm new file mode 100644 index 0000000..42c11e6 --- /dev/null +++ b/kernel/arch/x86/boot.asm @@ -0,0 +1,103 @@ +; multiboot header constants +MBALIGN equ 1 << 0 +MEMINFO equ 1 << 1 +MBFLAGS equ MBALIGN | MEMINFO +MAGIC equ 0x1BADB002 +CHECKSUM equ -(MAGIC+MBFLAGS) + +; multiboot header +section .multiboot +align 4 + dd MAGIC + dd MBFLAGS + dd CHECKSUM + +section .data +%include "arch/i386/gdt.asm" + +; defines the stack +section .bss +align 16 +stack_bottom: +resb 16384 ; 16 KiB +stack_top: + +; temporary paging tables +align 4 +boot_page_directory: + resb 4096 +boot_page_table: + resb 4096 + + +section .text +global _start:function (_start.end - _start) +_start: + cli + ; setup stack + mov esp, stack_top + + ; push the multiboot header data into the stack for later use + push eax + push ebx + + ; get multiboot header data (for memory map) + ;extern multiboot_main + ;call multiboot_main + + ;extern _init + ;Scall _init + + lgdt [gdt_descriptor] + jmp 0x08:.gdt_jmp + +.gdt_jmp: + mov ax, DATA_SEG + mov ds, ax + mov es, ax + mov fs, ax + mov gs, ax + mov ss, ax + jmp .gdt_jmp2 + +.gdt_jmp2: + ; setup paging (to map kernel to the higher half) + ;mov eax, 0 + ;mov cr3, eax + ;mov eax, cr0 + ;or eax, 0x80000001 + ;mov cr0, eax + + ; setup idt + extern idt_setup + call idt_setup + extern idtr + lidt [idtr] + + ; initialize pic + push ebp + mov ebp, esp + mov ebx, 0x28 + push ebx + mov ebx, 0x20 + push ebx + + extern pic_remap + call pic_remap + + pop ebx + pop ebx + mov esp, ebp + pop ebp + + sti + + ; enter the kernel + extern kernel_main + call kernel_main + + ; indefinite loop once system exits + ;cli +.hang: hlt + jmp .hang +.end: \ No newline at end of file diff --git a/kernel/arch/x86/crti.asm b/kernel/arch/x86/crti.asm new file mode 100644 index 0000000..51f27d9 --- /dev/null +++ b/kernel/arch/x86/crti.asm @@ -0,0 +1,12 @@ +; x86 crti.asm +section .init +global _init:function +_init: + push ebp + mov ebp, esp + +section .fini +global _fini:function +_fini: + push ebp + mov ebp, esp \ No newline at end of file diff --git a/kernel/arch/x86/crtn.asm b/kernel/arch/x86/crtn.asm new file mode 100644 index 0000000..370f4ae --- /dev/null +++ b/kernel/arch/x86/crtn.asm @@ -0,0 +1,9 @@ +; x86 crtn.asm + +section .init + pop ebp + ret + +section .fini + pop ebp + ret \ No newline at end of file diff --git a/kernel/arch/x86/gdt.asm b/kernel/arch/x86/gdt.asm new file mode 100644 index 0000000..e3af8bd --- /dev/null +++ b/kernel/arch/x86/gdt.asm @@ -0,0 +1,35 @@ +; gdt.asm +; GDT is defined here + +gdt_start: + +gdt_null: ; Null segment + dd 0x0 + dd 0x0 + +gdt_kcode: ; Kernel code segment. Kernel has seperate segment from users for ring level + ; flag and access byte description on osdev wiki + dw 0xffff ; low limit + dw 0x0 ;low base + db 0x0 ; mid base + db 10011010b ; order (reversed): ac, rw, dc, ex, s, privl, pr + db 11001111b ; flags then limit. order (reversed): 0, 0, size bit, granularity bit + db 0x0 ; high limit + +gdt_kdata: ; same as gdt_kcode but for the data segment + dw 0xffff ;low limit + dw 0x0 ;low base + db 0x0 ;mid base + db 10010010b ; order: same as code seg. changed for data seg + db 11001111b ; same as kcode + db 0x0 ; high limit + +gdt_end: + +gdt_descriptor: ; describes the gdt to the lgdt register + dw gdt_end - gdt_start - 1 + + dd gdt_start + +CODE_SEG equ gdt_kcode - gdt_start +DATA_SEG equ gdt_kdata - gdt_start \ No newline at end of file diff --git a/kernel/arch/x86/gdt2.cpp b/kernel/arch/x86/gdt2.cpp new file mode 100644 index 0000000..0acdb0e --- /dev/null +++ b/kernel/arch/x86/gdt2.cpp @@ -0,0 +1,51 @@ +#include +#include +/* +// structure to be encoded at encodeGdtEntry() +struct GDT +{ + uint32_t base; + uint32_t limit; + uint8_t access_byte; + uint8_t flags; +}; + +GDT strnulldesc {0, 0, 0, 0}; +GDT strkernelcode {0, 0xFFFFF, 0x9A, 0xC}; +GDT strkerneldata {0, 0xFFFFF, 0x92, 0xC}; +GDT strusercode {0, 0xFFFFF, 0xFA, 0xC}; +GDT struserdata {0, 0xFFFFF, 0xF2, 0xC}; + +uint8_t* nulldesc; +uint8_t* kernelcode; +uint8_t* kerneldata; +uint8_t* usercode; +uint8_t* userdata; + + +void encodeGdtEntry(uint8_t *target, struct GDT source) +{ + // Check the limit to make sure that it can be encoded + if (source.limit > 0xFFFFF) {printf("GDT cannot encode limits larger than 0xFFFFF\n");} + + // Encode the limit + target[0] = source.limit & 0xFF; + target[1] = (source.limit >> 8) & 0xFF; + target[6] = (source.limit >> 16) & 0x0F; + + // Encode the base + target[2] = source.base & 0xFF; + target[3] = (source.base >> 8) & 0xFF; + target[4] = (source.base >> 16) & 0xFF; + target[7] = (source.base >> 24) & 0xFF; + + // Encode the access byte + target[5] = source.access_byte; + + // Encode the flags + target[6] |= (source.flags << 4); +} + +extern "C" void setupGdt() { + +} */ \ No newline at end of file diff --git a/kernel/arch/x86/idt.cpp b/kernel/arch/x86/idt.cpp new file mode 100644 index 0000000..a8f3ff4 --- /dev/null +++ b/kernel/arch/x86/idt.cpp @@ -0,0 +1,133 @@ +#include +#include + +/* Function prototypes for the ISR functions. IDT[0] to IDT[31] are reserved for hardware exceptions */ +extern "C" void isr0(); +extern "C" void isr1(); +extern "C" void isr2(); +extern "C" void isr3(); +extern "C" void isr4(); +extern "C" void isr5(); +extern "C" void isr6(); +extern "C" void isr7(); +extern "C" void isr8(); +extern "C" void isr9(); +extern "C" void isr10(); +extern "C" void isr11(); +extern "C" void isr12(); +extern "C" void isr13(); +extern "C" void isr14(); +extern "C" void isr15(); +extern "C" void isr16(); +extern "C" void isr17(); +extern "C" void isr18(); +extern "C" void isr19(); +extern "C" void isr20(); +extern "C" void isr21(); +extern "C" void isr22(); +extern "C" void isr23(); +extern "C" void isr24(); +extern "C" void isr25(); +extern "C" void isr26(); +extern "C" void isr27(); +extern "C" void isr28(); +extern "C" void isr29(); +extern "C" void isr30(); +extern "C" void isr31(); +extern "C" void isr32(); +extern "C" void isr33(); +extern "C" void isr34(); +extern "C" void isr35(); +extern "C" void isr36(); +extern "C" void isr37(); +extern "C" void isr38(); +extern "C" void isr39(); +extern "C" void isr40(); +extern "C" void isr41(); +extern "C" void isr42(); +extern "C" void isr43(); +extern "C" void isr44(); +extern "C" void isr45(); +extern "C" void isr46(); +extern "C" void isr47(); + +struct idt_entry +{ + uint16_t offset_low; + uint16_t selector; + uint8_t always0; + uint8_t type_attributes; + uint16_t offset_high; +}__attribute__((packed)); + +struct str_idtr { + uint16_t limit; + uint32_t base; +}__attribute__((packed)); + +idt_entry idt[256]; +str_idtr idtr; + +void idt_new_entry(int num, uint32_t offset, uint16_t sel, uint8_t type_attribs) { + idt[num].offset_low = (offset & 0xFFFF); + idt[num].selector = sel; + idt[num].always0 = 0; + idt[num].type_attributes = type_attribs; + idt[num].offset_high = (offset >> 16) & 0xFFFF; +} + +extern "C" void idt_setup() { + idtr.limit = (sizeof(struct idt_entry) * 256) - 1; + idtr.base = (uint32_t)idt; + + // todo: is there really no other way? + idt_new_entry(0, (unsigned)isr0, 0x08, 0x8E); + idt_new_entry(1, (unsigned)isr1, 0x08, 0x8E); + idt_new_entry(2, (unsigned)isr2, 0x08, 0x8E); + idt_new_entry(3, (unsigned)isr3, 0x08, 0x8E); + idt_new_entry(4, (unsigned)isr4, 0x08, 0x8E); + idt_new_entry(5, (unsigned)isr5, 0x08, 0x8E); + idt_new_entry(6, (unsigned)isr6, 0x08, 0x8E); + idt_new_entry(7, (unsigned)isr7, 0x08, 0x8E); + idt_new_entry(8, (unsigned)isr8, 0x08, 0x8E); + idt_new_entry(9, (unsigned)isr9, 0x08, 0x8E); + idt_new_entry(10, (unsigned)isr10, 0x08, 0x8E); + idt_new_entry(11, (unsigned)isr11, 0x08, 0x8E); + idt_new_entry(12, (unsigned)isr12, 0x08, 0x8E); + idt_new_entry(13, (unsigned)isr13, 0x08, 0x8E); + idt_new_entry(14, (unsigned)isr14, 0x08, 0x8E); + idt_new_entry(15, (unsigned)isr15, 0x08, 0x8E); + idt_new_entry(16, (unsigned)isr16, 0x08, 0x8E); + idt_new_entry(17, (unsigned)isr17, 0x08, 0x8E); + idt_new_entry(18, (unsigned)isr18, 0x08, 0x8E); + idt_new_entry(19, (unsigned)isr19, 0x08, 0x8E); + idt_new_entry(20, (unsigned)isr20, 0x08, 0x8E); + idt_new_entry(21, (unsigned)isr21, 0x08, 0x8E); + idt_new_entry(22, (unsigned)isr22, 0x08, 0x8E); + idt_new_entry(23, (unsigned)isr23, 0x08, 0x8E); + idt_new_entry(24, (unsigned)isr24, 0x08, 0x8E); + idt_new_entry(25, (unsigned)isr25, 0x08, 0x8E); + idt_new_entry(26, (unsigned)isr26, 0x08, 0x8E); + idt_new_entry(27, (unsigned)isr27, 0x08, 0x8E); + idt_new_entry(28, (unsigned)isr28, 0x08, 0x8E); + idt_new_entry(29, (unsigned)isr29, 0x08, 0x8E); + idt_new_entry(30, (unsigned)isr30, 0x08, 0x8E); + idt_new_entry(31, (unsigned)isr31, 0x08, 0x8E); + //PIC entries + idt_new_entry(32, (unsigned)isr32, 0x08, 0x8E); + idt_new_entry(33, (unsigned)isr33, 0x08, 0x8E); + idt_new_entry(34, (unsigned)isr34, 0x08, 0x8E); + idt_new_entry(35, (unsigned)isr35, 0x08, 0x8E); + idt_new_entry(36, (unsigned)isr36, 0x08, 0x8E); + idt_new_entry(37, (unsigned)isr37, 0x08, 0x8E); + idt_new_entry(38, (unsigned)isr38, 0x08, 0x8E); + idt_new_entry(39, (unsigned)isr39, 0x08, 0x8E); + idt_new_entry(40, (unsigned)isr40, 0x08, 0x8E); + idt_new_entry(41, (unsigned)isr41, 0x08, 0x8E); + idt_new_entry(42, (unsigned)isr42, 0x08, 0x8E); + idt_new_entry(43, (unsigned)isr43, 0x08, 0x8E); + idt_new_entry(44, (unsigned)isr44, 0x08, 0x8E); + idt_new_entry(45, (unsigned)isr45, 0x08, 0x8E); + idt_new_entry(46, (unsigned)isr46, 0x08, 0x8E); + idt_new_entry(47, (unsigned)isr47, 0x08, 0x8E); +} \ No newline at end of file diff --git a/kernel/arch/x86/isr.asm b/kernel/arch/x86/isr.asm new file mode 100644 index 0000000..4ccbaf9 --- /dev/null +++ b/kernel/arch/x86/isr.asm @@ -0,0 +1,324 @@ +; isr.asm +; ISR functions are defined here. Most code is done in isr_handlers.cpp + +global isr0 +global isr1 +global isr2 +global isr3 +global isr4 +global isr5 +global isr6 +global isr7 +global isr8 +global isr9 +global isr10 +global isr11 +global isr12 +global isr13 +global isr14 +global isr15 +global isr16 +global isr17 +global isr18 +global isr19 +global isr20 +global isr21 +global isr22 +global isr23 +global isr24 +global isr25 +global isr26 +global isr27 +global isr28 +global isr29 +global isr30 +global isr31 +global isr32 +global isr33 +global isr34 +global isr35 +global isr36 +global isr37 +global isr38 +global isr39 +global isr40 +global isr41 +global isr42 +global isr43 +global isr44 +global isr45 +global isr46 +global isr47 + +section .text +align 4 + +isr0: + pushad + mov ebx, 0 + call exception_stub + hlt + popad + iret + +isr1: + pushad + popad + iret + +isr2: + pushad + popad + iret + +isr3: + pushad + popad + iret + +isr4: + pushad + popad + iret + +isr5: + pushad + popad + iret + +isr6: + pushad + mov ebx, 6 + call exception_stub + popad + iret + +isr7: + pushad + popad + iret + +isr8: + pushad + mov ebx, 8 + call exception_stub + popad + iret + +isr9: + pushad + popad + iret + +isr10: + pushad + popad + iret + +isr11: + pushad + mov ebx, 11 + call exception_stub + popad + iret + +isr12: + pushad + popad + iret + +isr13: + pushad + mov ebx, 13 + call exception_stub + popad + iret + +isr14: + pushad + mov ebx, 14 + call exception_stub + popad + iret + +isr15: + pushad + popad + iret + +isr16: + pushad + popad + iret + +isr17: + pushad + popad + iret + +isr18: + pushad + popad + iret + +isr19: + pushad + popad + iret + +isr20: + pushad + popad + iret + +isr21: + pushad + popad + iret + +isr22: + pushad + popad + iret + +isr23: + pushad + popad + iret + +isr24: + pushad + popad + iret + +isr25: + pushad + popad + iret + +isr26: + pushad + popad + iret + +isr27: + pushad + popad + iret +isr28: + pushad + popad + iret + +isr29: + pushad + popad + iret + +isr30: + pushad + popad + iret + +isr31: + pushad + popad + iret + +isr32: + pushad + ;extern pit_handler + ;call pit_handler + popad + iret + +isr33: + pushad + extern ps2_handler + call ps2_handler + popad + iret + +isr34: + pushad + popad + iret + +isr35: + pushad + popad + iret + +isr36: + pushad + popad + iret +isr37: + pushad + popad + iret + +isr38: + pushad + popad + iret + +isr39: + pushad + popad + iret + +isr40: + pushad + xchg bx, bx + popad + iret + +isr41: + pushad + popad + iret + +isr42: + pushad + popad + iret + +isr43: + pushad + popad + iret + +isr44: + pushad + popad + iret + +isr45: + pushad + popad + iret + +isr46: + pushad + popad + iret + +isr47: + pushad + popad + iret + +exception_stub: + push ebp + mov ebp, esp + + push ebx + ;cld + extern exception_handler + call exception_handler + pop ebx + + mov esp, ebp + pop ebp + ret \ No newline at end of file diff --git a/kernel/arch/x86/isr_handler.cpp b/kernel/arch/x86/isr_handler.cpp new file mode 100644 index 0000000..ac8fb49 --- /dev/null +++ b/kernel/arch/x86/isr_handler.cpp @@ -0,0 +1,21 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +extern "C" void exception_handler(int e) { + //unsigned char errorcode[2]{((unsigned char) e) + 48}; + //terminal_initialize(); + printf("Exception %x\n", e); +} + +#define PS2_DATA 0x60 +extern "C" void ps2_handler() { + keyboard_write(inb(PS2_DATA)); + + pic_send_eoi(1); +} \ No newline at end of file diff --git a/kernel/arch/x86/linker.ld b/kernel/arch/x86/linker.ld new file mode 100644 index 0000000..c4bfa3b --- /dev/null +++ b/kernel/arch/x86/linker.ld @@ -0,0 +1,38 @@ +/* Excecution start point symbol */ +ENTRY(_start) + +SECTIONS +{ + . = 1M; + + /* Used to get the beginning and end address of the kernel */ + _kernel_begin = .; + + /* code. multiboot header comes first */ + .text BLOCK(4K) : ALIGN(4K) + { + *(.multiboot) + *(.text) + } + + /* read only data */ + .rodata BLOCK(4K) : ALIGN(4K) + { + *(.rodata) + } + + /* read write data (initialized) */ + .data BLOCK(4K) : ALIGN(4K) + { + *(.data) + } + + /* read write data (uninitialized) and stack */ + .bss BLOCK(4K) : ALIGN(4K) + { + *(COMMON) + *(.bss) + } + + _kernel_end = .; +} \ No newline at end of file diff --git a/kernel/arch/x86/multiboot.cpp b/kernel/arch/x86/multiboot.cpp new file mode 100644 index 0000000..9f3eedb --- /dev/null +++ b/kernel/arch/x86/multiboot.cpp @@ -0,0 +1,30 @@ +#include +#include +#include +#include "multiboot.h" +#include + +// gets the memory map and stuff +extern "C" void multiboot_main(multiboot_info_t* mbd, uint32_t magic) { + terminal_initialize(); + //printf("multiboot struc addr: %x\n", mbd); + if (magic != MULTIBOOT_BOOTLOADER_MAGIC) { + printf("Invalid multiboot magic number\n"); + abort(); + } + + // checks bit 6 to see if there's a valid memory map + if (!(mbd->flags >> 6 & 0x1)) { + printf("Invalid GRUB memory map\n"); + abort(); + } + + // loop through memory map and display the values + for (int i = 0; i < mbd->mmap_length; i += sizeof(multiboot_memory_map_t)) { + multiboot_memory_map_t* mmmt = (multiboot_memory_map_t*)(mbd->mmap_addr + i); + + printf("Start Addr: 0x%lx | Length: 0x%lx | Size: 0x%x | Type: %d\n", + mmmt->addr, mmmt->len, mmmt->size, mmmt->type); + //printf("%lx,%x,%x,%d\n", mmmt->size, mmmt->size, mmmt->size, mmmt->size); + } +} \ No newline at end of file diff --git a/kernel/arch/x86/multiboot.h b/kernel/arch/x86/multiboot.h new file mode 100644 index 0000000..0951ebe --- /dev/null +++ b/kernel/arch/x86/multiboot.h @@ -0,0 +1,274 @@ +/* multiboot.h - Multiboot header file. */ +/* Copyright (C) 1999,2003,2007,2008,2009,2010 Free Software Foundation, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ANY + * DEVELOPER OR DISTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef MULTIBOOT_HEADER +#define MULTIBOOT_HEADER 1 + +/* How many bytes from the start of the file we search for the header. */ +#define MULTIBOOT_SEARCH 8192 +#define MULTIBOOT_HEADER_ALIGN 4 + +/* The magic field should contain this. */ +#define MULTIBOOT_HEADER_MAGIC 0x1BADB002 + +/* This should be in %eax. */ +#define MULTIBOOT_BOOTLOADER_MAGIC 0x2BADB002 + +/* Alignment of multiboot modules. */ +#define MULTIBOOT_MOD_ALIGN 0x00001000 + +/* Alignment of the multiboot info structure. */ +#define MULTIBOOT_INFO_ALIGN 0x00000004 + +/* Flags set in the ’flags’ member of the multiboot header. */ + +/* Align all boot modules on i386 page (4KB) boundaries. */ +#define MULTIBOOT_PAGE_ALIGN 0x00000001 + +/* Must pass memory information to OS. */ +#define MULTIBOOT_MEMORY_INFO 0x00000002 + +/* Must pass video information to OS. */ +#define MULTIBOOT_VIDEO_MODE 0x00000004 + +/* This flag indicates the use of the address fields in the header. */ +#define MULTIBOOT_AOUT_KLUDGE 0x00010000 + +/* Flags to be set in the ’flags’ member of the multiboot info structure. */ + +/* is there basic lower/upper memory information? */ +#define MULTIBOOT_INFO_MEMORY 0x00000001 +/* is there a boot device set? */ +#define MULTIBOOT_INFO_BOOTDEV 0x00000002 +/* is the command-line defined? */ +#define MULTIBOOT_INFO_CMDLINE 0x00000004 +/* are there modules to do something with? */ +#define MULTIBOOT_INFO_MODS 0x00000008 + +/* These next two are mutually exclusive */ + +/* is there a symbol table loaded? */ +#define MULTIBOOT_INFO_AOUT_SYMS 0x00000010 +/* is there an ELF section header table? */ +#define MULTIBOOT_INFO_ELF_SHDR 0X00000020 + +/* is there a full memory map? */ +#define MULTIBOOT_INFO_MEM_MAP 0x00000040 + +/* Is there drive info? */ +#define MULTIBOOT_INFO_DRIVE_INFO 0x00000080 + +/* Is there a config table? */ +#define MULTIBOOT_INFO_CONFIG_TABLE 0x00000100 + +/* Is there a boot loader name? */ +#define MULTIBOOT_INFO_BOOT_LOADER_NAME 0x00000200 + +/* Is there a APM table? */ +#define MULTIBOOT_INFO_APM_TABLE 0x00000400 + +/* Is there video information? */ +#define MULTIBOOT_INFO_VBE_INFO 0x00000800 +#define MULTIBOOT_INFO_FRAMEBUFFER_INFO 0x00001000 + +#ifndef ASM_FILE + +typedef unsigned char multiboot_uint8_t; +typedef unsigned short multiboot_uint16_t; +typedef unsigned int multiboot_uint32_t; +typedef unsigned long long multiboot_uint64_t; + +struct multiboot_header +{ + /* Must be MULTIBOOT_MAGIC - see above. */ + multiboot_uint32_t magic; + + /* Feature flags. */ + multiboot_uint32_t flags; + + /* The above fields plus this one must equal 0 mod 2^32. */ + multiboot_uint32_t checksum; + + /* These are only valid if MULTIBOOT_AOUT_KLUDGE is set. */ + multiboot_uint32_t header_addr; + multiboot_uint32_t load_addr; + multiboot_uint32_t load_end_addr; + multiboot_uint32_t bss_end_addr; + multiboot_uint32_t entry_addr; + + /* These are only valid if MULTIBOOT_VIDEO_MODE is set. */ + multiboot_uint32_t mode_type; + multiboot_uint32_t width; + multiboot_uint32_t height; + multiboot_uint32_t depth; +}; + +/* The symbol table for a.out. */ +struct multiboot_aout_symbol_table +{ + multiboot_uint32_t tabsize; + multiboot_uint32_t strsize; + multiboot_uint32_t addr; + multiboot_uint32_t reserved; +}; +typedef struct multiboot_aout_symbol_table multiboot_aout_symbol_table_t; + +/* The section header table for ELF. */ +struct multiboot_elf_section_header_table +{ + multiboot_uint32_t num; + multiboot_uint32_t size; + multiboot_uint32_t addr; + multiboot_uint32_t shndx; +}; +typedef struct multiboot_elf_section_header_table multiboot_elf_section_header_table_t; + +struct multiboot_info +{ + /* Multiboot info version number */ + multiboot_uint32_t flags; + + /* Available memory from BIOS */ + multiboot_uint32_t mem_lower; + multiboot_uint32_t mem_upper; + + /* "root" partition */ + multiboot_uint32_t boot_device; + + /* Kernel command line */ + multiboot_uint32_t cmdline; + + /* Boot-Module list */ + multiboot_uint32_t mods_count; + multiboot_uint32_t mods_addr; + + union + { + multiboot_aout_symbol_table_t aout_sym; + multiboot_elf_section_header_table_t elf_sec; + } u; + + /* Memory Mapping buffer */ + multiboot_uint32_t mmap_length; + multiboot_uint32_t mmap_addr; + + /* Drive Info buffer */ + multiboot_uint32_t drives_length; + multiboot_uint32_t drives_addr; + + /* ROM configuration table */ + multiboot_uint32_t config_table; + + /* Boot Loader Name */ + multiboot_uint32_t boot_loader_name; + + /* APM table */ + multiboot_uint32_t apm_table; + + /* Video */ + multiboot_uint32_t vbe_control_info; + multiboot_uint32_t vbe_mode_info; + multiboot_uint16_t vbe_mode; + multiboot_uint16_t vbe_interface_seg; + multiboot_uint16_t vbe_interface_off; + multiboot_uint16_t vbe_interface_len; + + multiboot_uint64_t framebuffer_addr; + multiboot_uint32_t framebuffer_pitch; + multiboot_uint32_t framebuffer_width; + multiboot_uint32_t framebuffer_height; + multiboot_uint8_t framebuffer_bpp; +#define MULTIBOOT_FRAMEBUFFER_TYPE_INDEXED 0 +#define MULTIBOOT_FRAMEBUFFER_TYPE_RGB 1 +#define MULTIBOOT_FRAMEBUFFER_TYPE_EGA_TEXT 2 + multiboot_uint8_t framebuffer_type; + union + { + struct + { + multiboot_uint32_t framebuffer_palette_addr; + multiboot_uint16_t framebuffer_palette_num_colors; + }; + struct + { + multiboot_uint8_t framebuffer_red_field_position; + multiboot_uint8_t framebuffer_red_mask_size; + multiboot_uint8_t framebuffer_green_field_position; + multiboot_uint8_t framebuffer_green_mask_size; + multiboot_uint8_t framebuffer_blue_field_position; + multiboot_uint8_t framebuffer_blue_mask_size; + }; + }; +}; +typedef struct multiboot_info multiboot_info_t; + +struct multiboot_color +{ + multiboot_uint8_t red; + multiboot_uint8_t green; + multiboot_uint8_t blue; +}; + +struct multiboot_mmap_entry +{ + multiboot_uint32_t size; + multiboot_uint64_t addr; + multiboot_uint64_t len; +#define MULTIBOOT_MEMORY_AVAILABLE 1 +#define MULTIBOOT_MEMORY_RESERVED 2 +#define MULTIBOOT_MEMORY_ACPI_RECLAIMABLE 3 +#define MULTIBOOT_MEMORY_NVS 4 +#define MULTIBOOT_MEMORY_BADRAM 5 + multiboot_uint32_t type; +} __attribute__((packed)); +typedef struct multiboot_mmap_entry multiboot_memory_map_t; + +struct multiboot_mod_list +{ + /* the memory used goes from bytes ’mod_start’ to ’mod_end-1’ inclusive */ + multiboot_uint32_t mod_start; + multiboot_uint32_t mod_end; + + /* Module command line */ + multiboot_uint32_t cmdline; + + /* padding to take it to 16 bytes (must be zero) */ + multiboot_uint32_t pad; +}; +typedef struct multiboot_mod_list multiboot_module_t; + +/* APM BIOS info. */ +struct multiboot_apm_info +{ + multiboot_uint16_t version; + multiboot_uint16_t cseg; + multiboot_uint32_t offset; + multiboot_uint16_t cseg_16; + multiboot_uint16_t dseg; + multiboot_uint16_t flags; + multiboot_uint16_t cseg_len; + multiboot_uint16_t cseg_16_len; + multiboot_uint16_t dseg_len; +}; + +#endif /* ! ASM_FILE */ + +#endif /* ! MULTIBOOT_HEADER */ \ No newline at end of file diff --git a/kernel/arch/x86/pic.cpp b/kernel/arch/x86/pic.cpp new file mode 100644 index 0000000..78cbcf8 --- /dev/null +++ b/kernel/arch/x86/pic.cpp @@ -0,0 +1,97 @@ +#include +#include +#include +#include + +#define PIC1 0x20 +#define PIC2 0xA0 +#define PIC1_CMD PIC1 +#define PIC1_DATA (PIC1 + 1) +#define PIC2_CMD PIC2 +#define PIC2_DATA (PIC2 + 1) +#define PIC_READ_IRR 0x0a // OCW3 irq ready next CMD read +#define PIC_READ_ISR 0x0b // OCW3 irq service next CMD read + +#define PIC_EOI 0x20 + +// pic reinitialization constants +#define ICW1_ICW4 0x01 // indicates icw4 will be present +#define ICW1_SINGLE 0x02 // single cascade mode +#define ICW1_INTERVAL4 0x04 // call address interval 4 +#define ICW1_LEVEL 0x08 // level triggered (edge) mode +#define ICW1_INIT 0x10 // initialization + +#define ICW4_8086 0x01 // 8086 mode +#define ICW4_AUTO 0x02 // auto (normal) eoi +#define ICW4_BUF_SLAVE 0x08 // buffered mode/slave +#define ICW4_BUF_MASTER 0x0C // buffered mode/master +#define ICW4_SFNM 0x10 // special fully nested (not) + +void pic_send_eoi(unsigned char irq) { + if (irq >= 8) { + outb(PIC2_CMD, PIC_EOI); + } + outb(PIC1_CMD, PIC_EOI); +} + +// offset 1 is for master, offset 2 is for slave +void pic_remap(int offset1, int offset2) { + unsigned char a1, a2; + + a1 = inb(PIC1_DATA); // save masks + a2 = inb(PIC2_DATA); + + outb(PIC1_CMD, ICW1_INIT | ICW1_ICW4); // starts initialization in cascade mode + io_wait(); + outb(PIC2_CMD, ICW1_INIT | ICW1_ICW4); + io_wait(); + outb(PIC1_DATA, offset1); // icw2: master and slave vector offset set + io_wait(); + outb(PIC2_DATA, offset2); + io_wait(); + outb(PIC1_DATA, 4); // tells master pic theres a slave pic at irq2 + io_wait(); + outb(PIC2_DATA, 2); // tells slave pic its cascade identity + io_wait(); + + outb(PIC1_DATA, ICW4_8086); + io_wait(); + outb(PIC2_DATA, ICW4_8086); + io_wait(); + + outb(PIC1_DATA, a1); // restore masks + outb(PIC2_DATA, a2); + + for (char i = 0; i < 15; i++) + { + irq_set_mask(i); + } +} + +void irq_set_mask(unsigned char irq) { + uint16_t port; + uint8_t value; + + if (irq < 8) { + port = PIC1_DATA; + } else { + port = PIC2_DATA; + irq -= 8; + } + value = inb(port) | (1 << irq); + outb(port, value); +} + +void irq_clear_mask(unsigned char irq) { + uint16_t port; + uint8_t value; + + if (irq < 8) { + port = PIC1_DATA; + } else { + port = PIC2_DATA; + irq -= 8; + } + value = inb(port) & ~(1 << irq); + outb(port, value); +} \ No newline at end of file diff --git a/kernel/arch/x86/ps2_controller.cpp b/kernel/arch/x86/ps2_controller.cpp new file mode 100644 index 0000000..9424233 --- /dev/null +++ b/kernel/arch/x86/ps2_controller.cpp @@ -0,0 +1,191 @@ +#include +#include +#include +#include + +#define PS2_DATA 0x60 // data port +#define PS2_STATUS 0x64 // status register +#define PS2_COMMAND 0x64 // command register + +// set to true if 2nd ps2 port is available +bool ps2SecondaryEnabled = false; + +void initialize_ps2_controller() { + inputbuffer_wait(); + outb(PS2_COMMAND, 0xAD); // disable devices + inputbuffer_wait(); + outb(PS2_COMMAND, 0xA7); + + outputbuffer_wait(); + inb(PS2_DATA); // flush output buffer + inb(PS2_DATA); + inb(PS2_DATA); + inb(PS2_DATA); + inb(PS2_DATA); + inb(PS2_DATA); + inb(PS2_DATA); + inb(PS2_DATA); + inb(PS2_DATA); + inb(PS2_DATA); + + + inputbuffer_wait(); + outb(PS2_COMMAND, 0x20); // set controller configuration byte + outputbuffer_wait(); + uint8_t conconfig = inb(PS2_DATA); + conconfig &= 0b00110100; + inputbuffer_wait(); + outb(PS2_COMMAND, 0x60); + inputbuffer_wait(); + outb(PS2_DATA, conconfig); + + inputbuffer_wait(); + outb(PS2_COMMAND, 0xAA); // performs controller self test + outputbuffer_wait(); + if (inb(PS2_DATA) == 0xFC) { + printf("PS/2 controller failed self test\n"); + } + inputbuffer_wait(); + outb(PS2_COMMAND, 0x60); // in case the controller resets from the test + inputbuffer_wait(); + outb(PS2_DATA, conconfig); + + int portcount = 1; + inputbuffer_wait(); + outb(PS2_COMMAND, 0xA8); // check if ps2 controller is dual channel + inputbuffer_wait(); + outb(PS2_COMMAND, 0x20); + outputbuffer_wait(); + conconfig = inb(PS2_DATA); + if ((conconfig & 0b00100000) == 0b00000000) { // checks if bit 5 is cleared + ps2SecondaryEnabled = true; + //printf("Dual channel PS/2\n"); + portcount = 2; + } else { + //printf("Single channel PS/2\n"); + } + + inputbuffer_wait(); + outb(PS2_COMMAND, 0xAB); // tests ps2 ports + outputbuffer_wait(); + if (inb(PS2_DATA) != 0x00) { + printf("PS/2 port 1 failed self test\n"); + --portcount; + } + if (ps2SecondaryEnabled) { + inputbuffer_wait(); + outb(PS2_COMMAND, 0xA9); + outputbuffer_wait(); + if (inb(PS2_DATA) != 0x00) { + printf("PS/2 port 2 failed self test\n"); + --portcount; + } + } + if (!portcount) { + printf("PS/2 initialization failed\n"); + return; + } + + conconfig |= 0b00000011; + inputbuffer_wait(); + outb(PS2_COMMAND, 0xAE); // enable ps2 ports + conconfig |= 0b00000001; + if (ps2SecondaryEnabled) { + inputbuffer_wait(); + outb(PS2_COMMAND, 0xA8); + outb(PS2_COMMAND, 0x60); + conconfig |= 0b00000011; + outb(PS2_DATA, conconfig); + } else { + inputbuffer_wait(); + outb(PS2_COMMAND, 0x60); + conconfig |= 0b00000001; + outb(PS2_DATA, conconfig); + } + + //ps2_dev_send_command(0, 0xFF); // reset devices + //inb(PS2_DATA); + //io_wait(); + if (ps2SecondaryEnabled) { + //ps2_dev_send_command(1, 0xFF); + //inb(PS2_DATA); + //io_wait(); + } + + //printf("PS/2 controller initialized\n"); +} + +// waits for input buffer (write) to be filled +void inputbuffer_wait() { + for (int i = 0; i < 15; i++) { + uint8_t status_reg = inb(PS2_STATUS); + if ((status_reg & 0b00000010)) { + return; + } + io_wait(); + } +} + +// waits for outbut buffer (read) to be filled +void outputbuffer_wait() { + for (int i = 0; i < 15; i++) { + uint8_t status_reg = inb(PS2_STATUS); + if ((status_reg & 0b00000001)) { + return; + } + io_wait(); + } +} + +// checks if inpbut buffer is set +bool inputbuffer_check() { + uint8_t status_reg = inb(PS2_STATUS); + if ((status_reg & 0b00000010)) { + return true; + } else { + return false; + } +} + +bool outputbuffer_check() { + uint8_t status_reg = inb(PS2_STATUS); + if ((status_reg & 0b00000001)) { + return true; + } else { + return false; + } +} + +/* Sends a command byte to a ps2 device +Port numbers start from 0 */ +int ps2_dev_send_command(int port, unsigned char command) { + //bool commandRecieved = false; + switch (port) + { + case 0: + for (int i = 0; i < 5; i++) { + uint8_t status_reg = inb(PS2_STATUS); + if ((status_reg & 0b00000010) == 0b00000000) { + outb(PS2_DATA, command); + return 0; + } + inb(PS2_DATA); + io_wait(); + } + return 1; // error returned if timeout expires + case 1: + outb(PS2_COMMAND, 0xD4); + for (int i = 0; i < 5; i++) { + uint8_t status_reg = inb(PS2_STATUS); + if ((status_reg & 0b00000010) == 0b00000000) { + outb(PS2_DATA, command); + return 0; + } + inb(PS2_DATA); + io_wait(); + } + return 1; + default: + return 2; // out of port range + } +} \ No newline at end of file diff --git a/kernel/arch/x86/tmtty.cpp b/kernel/arch/x86/tmtty.cpp new file mode 100644 index 0000000..d4dc772 --- /dev/null +++ b/kernel/arch/x86/tmtty.cpp @@ -0,0 +1,78 @@ +#include +#include +#include +#include +#include + +#include "vga.h" + +/* Text mode tty */ + +static const size_t VGA_WIDTH = 80; +static const size_t VGA_HEIGHT = 25; +static uint16_t* const VGA_MEMORY = (uint16_t*) 0xB8000; + +size_t terminal_row; +size_t terminal_column; +uint8_t terminal_color; +uint16_t* terminal_buffer; + +void terminal_clear(void) { + terminal_row = 0; + terminal_column = 0; + for (size_t y = 0; y < VGA_HEIGHT; y++) { + for (size_t x = 0; x < VGA_WIDTH; x++) { + const size_t i = y * VGA_WIDTH + x; + terminal_buffer[i] = vga_entry(' ', terminal_color); + } + } +} + +void terminal_initialize(void) { + terminal_color = vga_entry_color(VGA_COLOR_WHITE, VGA_COLOR_BLACK); + terminal_buffer = VGA_MEMORY; + terminal_clear(); +} + +void terminal_setcolor(uint8_t color) { + terminal_color = color; +} + +void terminal_putentryat(char c, uint8_t color, size_t x, size_t y) { + const size_t i = y * VGA_WIDTH + x; + terminal_buffer[i] = vga_entry(c, color); +} + +void terminal_scroll() { + memmove(VGA_MEMORY, (VGA_MEMORY + VGA_WIDTH), (VGA_HEIGHT * VGA_WIDTH) - VGA_WIDTH); + memset(VGA_MEMORY + (VGA_WIDTH * VGA_HEIGHT) - VGA_WIDTH, 0x0, VGA_WIDTH * 2); + --terminal_row; +} + +void terminal_putchar(char c) { + unsigned char uc = c; + if (uc == '\n') { + terminal_column = 0; + if (terminal_row++ == VGA_HEIGHT) + terminal_scroll(); + return; + } + terminal_putentryat(uc, terminal_color, terminal_column, terminal_row); + + if (++terminal_column == VGA_WIDTH) { + terminal_column = 0; + if (++terminal_row == VGA_HEIGHT) { + terminal_scroll(); + } + } +} + +void terminal_write(const char* data, size_t size) { + for (size_t i = 0; i < size; i++) { + terminal_putchar(data[i]); + } +} + +void terminal_writestring(const char* data) { + terminal_write(data, strlen(data)); +} \ No newline at end of file diff --git a/kernel/arch/x86/vga.h b/kernel/arch/x86/vga.h new file mode 100644 index 0000000..5b6b351 --- /dev/null +++ b/kernel/arch/x86/vga.h @@ -0,0 +1,35 @@ +#ifndef ARCH_I386_VGA_H +#define ARCH_I386_VGA_H + +#include + +// hardware text mode constants +enum vga_color { + VGA_COLOR_BLACK = 0, + VGA_COLOR_BLUE = 1, + VGA_COLOR_GREEN = 2, + VGA_COLOR_CYAN = 3, + VGA_COLOR_RED = 4, + VGA_COLOR_MAGENTA = 5, + VGA_COLOR_BROWN = 6, + VGA_COLOR_LIGHT_GREY = 7, + VGA_COLOR_DARK_GREY = 8, + VGA_COLOR_LIGHT_BLUE = 9, + VGA_COLOR_LIGHT_GREEN = 10, + VGA_COLOR_LIGHT_CYAN = 11, + VGA_COLOR_LIGHT_RED = 12, + VGA_COLOR_LIGHT_MAGENTA = 13, + VGA_COLOR_LIGHT_BROWN = 14, + VGA_COLOR_WHITE = 15, +}; + +static inline uint8_t vga_entry_color(enum vga_color fg, enum vga_color bg) { + return fg | bg << 4; +} + +// returns the character/color of a terminal entry +static inline uint16_t vga_entry(unsigned char uc, uint8_t color) { + return (uint16_t) uc | (uint16_t) color << 8; +} + +#endif \ No newline at end of file diff --git a/kernel/makefile b/kernel/makefile index 88659d9..7d02b32 100644 --- a/kernel/makefile +++ b/kernel/makefile @@ -1,25 +1,18 @@ # Kernel makefile -ifndef GAS - GAS = i686-elf-as -endif - ifndef CFLAGS CFLAGS = -ffreestanding -Wall -Wextra -g -std=gnu99 -O2 -Iinclude - CFLAGS += --sysroot="$(SYSROOT)" CFLAGS += -isystem="/usr/include" endif ifndef CXXFLAGS CXXFLAGS = -ffreestanding -Wall -Wextra -fno-exceptions -fno-rtti -D__is_kernel -g -O2 -Iinclude CXXFLAGS += -Iinclude - CXXFLAGS += --sysroot="$(SYSROOT)" CXXFLAGS += -isystem="/usr/include" endif ifndef LDFLAGS LDFLAGS = -T arch/$(ARCH)/linker.ld -ffreestanding -g -O2 -Iinclude - LDFLAGS += --sysroot="$(SYSROOT)" LDFLAGS += -isystem="/usr/include" endif diff --git a/makefile b/makefile index ccd252c..c52dd4c 100644 --- a/makefile +++ b/makefile @@ -1,16 +1,16 @@ # The makefile OS_NAME := emuos -ARCH = i386 +ARCH ?= x86_64 export SYSROOT = $(PWD)/sysroot # Variables for easy access of tools like gcc and nasm -export CC = i686-elf-gcc -export CXX = i686-elf-g++ -export LD = i686-elf-ld +export CC = $(ARCH)-elf-gcc +export CXX = $(ARCH)-elf-g++ +export LD = $(ARCH)-elf-ld export NASM = nasm -QEMU = qemu-system-i386 -ASMFLAGS = -felf32 +QEMU = qemu-system-x86_64 +#ASMFLAGS = -felf32 #CXXFLAGS := -ffreestanding -O2 -Wall -Wextra -fno-exceptions -fno-rtti #LDFLAGS := -ffreestanding -O2 -nostdlib -- cgit v1.2.3-70-g09d2 From 4aa74dbe2a35a45668b33d688f17b680c2232572 Mon Sep 17 00:00:00 2001 From: EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> Date: Sun, 5 May 2024 01:08:00 -0400 Subject: improved makefile somewhat --- .gitignore | 6 +- isodir/boot/grub/grub.cfg | 9 + isodir/boot/limine/limine.cfg | 6 + kernel/arch/x86_64/crti.asm | 12 + kernel/arch/x86_64/crtn.asm | 9 + kernel/arch/x86_64/limine.h | 587 +++++++++++++++++++++++++++++++++++++++++ kernel/makefile | 35 ++- libc/README.txt | 5 + libc/abort.c | 11 + libc/include/stdio.h | 18 ++ libc/include/stdlib.h | 15 ++ libc/include/string.h | 20 ++ libc/include/sys/cdefs.h | 6 + libc/makefile | 79 ++++++ libc/memcmp.c | 13 + libc/memcpy.c | 9 + libc/memmove.c | 14 + libc/memset.c | 8 + libc/printf.c | 191 ++++++++++++++ libc/putchar.c | 9 + libc/puts.c | 5 + libc/strlen.c | 9 + libs/libck/README.txt | 5 - libs/libck/abort.c | 11 - libs/libck/include/stdio.h | 18 -- libs/libck/include/stdlib.h | 15 -- libs/libck/include/string.h | 20 -- libs/libck/include/sys/cdefs.h | 6 - libs/libck/makefile | 79 ------ libs/libck/memcmp.c | 13 - libs/libck/memcpy.c | 9 - libs/libck/memmove.c | 14 - libs/libck/memset.c | 8 - libs/libck/printf.c | 191 -------------- libs/libck/putchar.c | 9 - libs/libck/puts.c | 5 - libs/libck/strlen.c | 9 - makefile | 35 +-- 38 files changed, 1073 insertions(+), 450 deletions(-) create mode 100644 isodir/boot/grub/grub.cfg create mode 100644 isodir/boot/limine/limine.cfg create mode 100644 kernel/arch/x86_64/crti.asm create mode 100644 kernel/arch/x86_64/crtn.asm create mode 100644 kernel/arch/x86_64/limine.h create mode 100644 libc/README.txt create mode 100644 libc/abort.c create mode 100644 libc/include/stdio.h create mode 100644 libc/include/stdlib.h create mode 100644 libc/include/string.h create mode 100644 libc/include/sys/cdefs.h create mode 100644 libc/makefile create mode 100644 libc/memcmp.c create mode 100644 libc/memcpy.c create mode 100644 libc/memmove.c create mode 100644 libc/memset.c create mode 100644 libc/printf.c create mode 100644 libc/putchar.c create mode 100644 libc/puts.c create mode 100644 libc/strlen.c delete mode 100644 libs/libck/README.txt delete mode 100644 libs/libck/abort.c delete mode 100644 libs/libck/include/stdio.h delete mode 100644 libs/libck/include/stdlib.h delete mode 100644 libs/libck/include/string.h delete mode 100644 libs/libck/include/sys/cdefs.h delete mode 100644 libs/libck/makefile delete mode 100644 libs/libck/memcmp.c delete mode 100644 libs/libck/memcpy.c delete mode 100644 libs/libck/memmove.c delete mode 100644 libs/libck/memset.c delete mode 100644 libs/libck/printf.c delete mode 100644 libs/libck/putchar.c delete mode 100644 libs/libck/puts.c delete mode 100644 libs/libck/strlen.c diff --git a/.gitignore b/.gitignore index cc56a26..be76e0b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ # directories that have to exist but shouldn't be added to git -isodir/ sysroot/ build/ @@ -9,12 +8,15 @@ build/ *.o *.d *.a +*.sys +*.efi # i have no idea what this is for bx_enh_dbg.ini -# temporarily ignored cause i have no idea how to set up cmake with this and dont really have much else to use it for yet misc/ # not important make.png + +.vscode/ diff --git a/isodir/boot/grub/grub.cfg b/isodir/boot/grub/grub.cfg new file mode 100644 index 0000000..71b0917 --- /dev/null +++ b/isodir/boot/grub/grub.cfg @@ -0,0 +1,9 @@ +set timeout_style=menu +if [ "${timeout}" = 0 ]; then + #set timeout=10 # comment this original + set timeout=0 # add this +fi + +menuentry "emuos" { + multiboot /boot/kernel.bin +} \ No newline at end of file diff --git a/isodir/boot/limine/limine.cfg b/isodir/boot/limine/limine.cfg new file mode 100644 index 0000000..dd5e60b --- /dev/null +++ b/isodir/boot/limine/limine.cfg @@ -0,0 +1,6 @@ +TIMEOUT=5 + +:emuos + PROTOCOL=limine + KERNEL_PATH=boot:///boot/kernel.bin + KASLR=off \ No newline at end of file diff --git a/kernel/arch/x86_64/crti.asm b/kernel/arch/x86_64/crti.asm new file mode 100644 index 0000000..73ac499 --- /dev/null +++ b/kernel/arch/x86_64/crti.asm @@ -0,0 +1,12 @@ +; x86 crti.asm +section .init +global _init:function +_init: + push rbp + mov rbp, rsp + +section .fini +global _fini:function +_fini: + push rbp + mov rbp, rsp \ No newline at end of file diff --git a/kernel/arch/x86_64/crtn.asm b/kernel/arch/x86_64/crtn.asm new file mode 100644 index 0000000..322b3a2 --- /dev/null +++ b/kernel/arch/x86_64/crtn.asm @@ -0,0 +1,9 @@ +; x86 crtn.asm + +section .init + pop rbp + ret + +section .fini + pop rbp + ret \ No newline at end of file diff --git a/kernel/arch/x86_64/limine.h b/kernel/arch/x86_64/limine.h new file mode 100644 index 0000000..0e7e87a --- /dev/null +++ b/kernel/arch/x86_64/limine.h @@ -0,0 +1,587 @@ +/* BSD Zero Clause License */ + +/* Copyright (C) 2022-2024 mintsuki and contributors. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef LIMINE_H +#define LIMINE_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* Misc */ + +#ifdef LIMINE_NO_POINTERS +# define LIMINE_PTR(TYPE) uint64_t +#else +# define LIMINE_PTR(TYPE) TYPE +#endif + +#ifdef __GNUC__ +# define LIMINE_DEPRECATED __attribute__((__deprecated__)) +# define LIMINE_DEPRECATED_IGNORE_START \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +# define LIMINE_DEPRECATED_IGNORE_END \ + _Pragma("GCC diagnostic pop") +#else +# define LIMINE_DEPRECATED +# define LIMINE_DEPRECATED_IGNORE_START +# define LIMINE_DEPRECATED_IGNORE_END +#endif + +#define LIMINE_REQUESTS_START_MARKER \ + uint64_t limine_requests_start_marker[4] = { 0xf6b8f4b39de7d1ae, 0xfab91a6940fcb9cf, \ + 0x785c6ed015d3e316, 0x181e920a7852b9d9 }; +#define LIMINE_REQUESTS_END_MARKER \ + uint64_t limine_requests_end_marker[2] = { 0xadc0e0531bb10d03, 0x9572709f31764c62 }; + +#define LIMINE_REQUESTS_DELIMITER LIMINE_REQUESTS_END_MARKER + +#define LIMINE_BASE_REVISION(N) \ + uint64_t limine_base_revision[3] = { 0xf9562b2d5c95a6c8, 0x6a7b384944536bdc, (N) }; + +#define LIMINE_BASE_REVISION_SUPPORTED (limine_base_revision[2] == 0) + +#define LIMINE_COMMON_MAGIC 0xc7b1dd30df4c8b88, 0x0a82e883a194f07b + +struct limine_uuid { + uint32_t a; + uint16_t b; + uint16_t c; + uint8_t d[8]; +}; + +#define LIMINE_MEDIA_TYPE_GENERIC 0 +#define LIMINE_MEDIA_TYPE_OPTICAL 1 +#define LIMINE_MEDIA_TYPE_TFTP 2 + +struct limine_file { + uint64_t revision; + LIMINE_PTR(void *) address; + uint64_t size; + LIMINE_PTR(char *) path; + LIMINE_PTR(char *) cmdline; + uint32_t media_type; + uint32_t unused; + uint32_t tftp_ip; + uint32_t tftp_port; + uint32_t partition_index; + uint32_t mbr_disk_id; + struct limine_uuid gpt_disk_uuid; + struct limine_uuid gpt_part_uuid; + struct limine_uuid part_uuid; +}; + +/* Boot info */ + +#define LIMINE_BOOTLOADER_INFO_REQUEST { LIMINE_COMMON_MAGIC, 0xf55038d8e2a1202f, 0x279426fcf5f59740 } + +struct limine_bootloader_info_response { + uint64_t revision; + LIMINE_PTR(char *) name; + LIMINE_PTR(char *) version; +}; + +struct limine_bootloader_info_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_bootloader_info_response *) response; +}; + +/* Stack size */ + +#define LIMINE_STACK_SIZE_REQUEST { LIMINE_COMMON_MAGIC, 0x224ef0460a8e8926, 0xe1cb0fc25f46ea3d } + +struct limine_stack_size_response { + uint64_t revision; +}; + +struct limine_stack_size_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_stack_size_response *) response; + uint64_t stack_size; +}; + +/* HHDM */ + +#define LIMINE_HHDM_REQUEST { LIMINE_COMMON_MAGIC, 0x48dcf1cb8ad2b852, 0x63984e959a98244b } + +struct limine_hhdm_response { + uint64_t revision; + uint64_t offset; +}; + +struct limine_hhdm_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_hhdm_response *) response; +}; + +/* Framebuffer */ + +#define LIMINE_FRAMEBUFFER_REQUEST { LIMINE_COMMON_MAGIC, 0x9d5827dcd881dd75, 0xa3148604f6fab11b } + +#define LIMINE_FRAMEBUFFER_RGB 1 + +struct limine_video_mode { + uint64_t pitch; + uint64_t width; + uint64_t height; + uint16_t bpp; + uint8_t memory_model; + uint8_t red_mask_size; + uint8_t red_mask_shift; + uint8_t green_mask_size; + uint8_t green_mask_shift; + uint8_t blue_mask_size; + uint8_t blue_mask_shift; +}; + +struct limine_framebuffer { + LIMINE_PTR(void *) address; + uint64_t width; + uint64_t height; + uint64_t pitch; + uint16_t bpp; + uint8_t memory_model; + uint8_t red_mask_size; + uint8_t red_mask_shift; + uint8_t green_mask_size; + uint8_t green_mask_shift; + uint8_t blue_mask_size; + uint8_t blue_mask_shift; + uint8_t unused[7]; + uint64_t edid_size; + LIMINE_PTR(void *) edid; + /* Response revision 1 */ + uint64_t mode_count; + LIMINE_PTR(struct limine_video_mode **) modes; +}; + +struct limine_framebuffer_response { + uint64_t revision; + uint64_t framebuffer_count; + LIMINE_PTR(struct limine_framebuffer **) framebuffers; +}; + +struct limine_framebuffer_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_framebuffer_response *) response; +}; + +/* Terminal */ + +#define LIMINE_TERMINAL_REQUEST { LIMINE_COMMON_MAGIC, 0xc8ac59310c2b0844, 0xa68d0c7265d38878 } + +#define LIMINE_TERMINAL_CB_DEC 10 +#define LIMINE_TERMINAL_CB_BELL 20 +#define LIMINE_TERMINAL_CB_PRIVATE_ID 30 +#define LIMINE_TERMINAL_CB_STATUS_REPORT 40 +#define LIMINE_TERMINAL_CB_POS_REPORT 50 +#define LIMINE_TERMINAL_CB_KBD_LEDS 60 +#define LIMINE_TERMINAL_CB_MODE 70 +#define LIMINE_TERMINAL_CB_LINUX 80 + +#define LIMINE_TERMINAL_CTX_SIZE ((uint64_t)(-1)) +#define LIMINE_TERMINAL_CTX_SAVE ((uint64_t)(-2)) +#define LIMINE_TERMINAL_CTX_RESTORE ((uint64_t)(-3)) +#define LIMINE_TERMINAL_FULL_REFRESH ((uint64_t)(-4)) + +/* Response revision 1 */ +#define LIMINE_TERMINAL_OOB_OUTPUT_GET ((uint64_t)(-10)) +#define LIMINE_TERMINAL_OOB_OUTPUT_SET ((uint64_t)(-11)) + +#define LIMINE_TERMINAL_OOB_OUTPUT_OCRNL (1 << 0) +#define LIMINE_TERMINAL_OOB_OUTPUT_OFDEL (1 << 1) +#define LIMINE_TERMINAL_OOB_OUTPUT_OFILL (1 << 2) +#define LIMINE_TERMINAL_OOB_OUTPUT_OLCUC (1 << 3) +#define LIMINE_TERMINAL_OOB_OUTPUT_ONLCR (1 << 4) +#define LIMINE_TERMINAL_OOB_OUTPUT_ONLRET (1 << 5) +#define LIMINE_TERMINAL_OOB_OUTPUT_ONOCR (1 << 6) +#define LIMINE_TERMINAL_OOB_OUTPUT_OPOST (1 << 7) + +LIMINE_DEPRECATED_IGNORE_START + +struct LIMINE_DEPRECATED limine_terminal; + +typedef void (*limine_terminal_write)(struct limine_terminal *, const char *, uint64_t); +typedef void (*limine_terminal_callback)(struct limine_terminal *, uint64_t, uint64_t, uint64_t, uint64_t); + +struct LIMINE_DEPRECATED limine_terminal { + uint64_t columns; + uint64_t rows; + LIMINE_PTR(struct limine_framebuffer *) framebuffer; +}; + +struct LIMINE_DEPRECATED limine_terminal_response { + uint64_t revision; + uint64_t terminal_count; + LIMINE_PTR(struct limine_terminal **) terminals; + LIMINE_PTR(limine_terminal_write) write; +}; + +struct LIMINE_DEPRECATED limine_terminal_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_terminal_response *) response; + LIMINE_PTR(limine_terminal_callback) callback; +}; + +LIMINE_DEPRECATED_IGNORE_END + +/* Paging mode */ + +#define LIMINE_PAGING_MODE_REQUEST { LIMINE_COMMON_MAGIC, 0x95c1a0edab0944cb, 0xa4e5cb3842f7488a } + +#if defined (__x86_64__) || defined (__i386__) +#define LIMINE_PAGING_MODE_X86_64_4LVL 0 +#define LIMINE_PAGING_MODE_X86_64_5LVL 1 +#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_X86_64_5LVL +#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_X86_64_4LVL +#elif defined (__aarch64__) +#define LIMINE_PAGING_MODE_AARCH64_4LVL 0 +#define LIMINE_PAGING_MODE_AARCH64_5LVL 1 +#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_AARCH64_5LVL +#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_AARCH64_4LVL +#elif defined (__riscv) && (__riscv_xlen == 64) +#define LIMINE_PAGING_MODE_RISCV_SV39 0 +#define LIMINE_PAGING_MODE_RISCV_SV48 1 +#define LIMINE_PAGING_MODE_RISCV_SV57 2 +#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_RISCV_SV57 +#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_RISCV_SV48 +#else +#error Unknown architecture +#endif + +struct limine_paging_mode_response { + uint64_t revision; + uint64_t mode; + uint64_t flags; +}; + +struct limine_paging_mode_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_paging_mode_response *) response; + uint64_t mode; + uint64_t flags; +}; + +/* 5-level paging */ + +#define LIMINE_5_LEVEL_PAGING_REQUEST { LIMINE_COMMON_MAGIC, 0x94469551da9b3192, 0xebe5e86db7382888 } + +LIMINE_DEPRECATED_IGNORE_START + +struct LIMINE_DEPRECATED limine_5_level_paging_response { + uint64_t revision; +}; + +struct LIMINE_DEPRECATED limine_5_level_paging_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_5_level_paging_response *) response; +}; + +LIMINE_DEPRECATED_IGNORE_END + +/* SMP */ + +#define LIMINE_SMP_REQUEST { LIMINE_COMMON_MAGIC, 0x95a67b819a1b857e, 0xa0b61b723b6a73e0 } + +struct limine_smp_info; + +typedef void (*limine_goto_address)(struct limine_smp_info *); + +#if defined (__x86_64__) || defined (__i386__) + +#define LIMINE_SMP_X2APIC (1 << 0) + +struct limine_smp_info { + uint32_t processor_id; + uint32_t lapic_id; + uint64_t reserved; + LIMINE_PTR(limine_goto_address) goto_address; + uint64_t extra_argument; +}; + +struct limine_smp_response { + uint64_t revision; + uint32_t flags; + uint32_t bsp_lapic_id; + uint64_t cpu_count; + LIMINE_PTR(struct limine_smp_info **) cpus; +}; + +#elif defined (__aarch64__) + +struct limine_smp_info { + uint32_t processor_id; + uint32_t gic_iface_no; + uint64_t mpidr; + uint64_t reserved; + LIMINE_PTR(limine_goto_address) goto_address; + uint64_t extra_argument; +}; + +struct limine_smp_response { + uint64_t revision; + uint64_t flags; + uint64_t bsp_mpidr; + uint64_t cpu_count; + LIMINE_PTR(struct limine_smp_info **) cpus; +}; + +#elif defined (__riscv) && (__riscv_xlen == 64) + +struct limine_smp_info { + uint64_t processor_id; + uint64_t hartid; + uint64_t reserved; + LIMINE_PTR(limine_goto_address) goto_address; + uint64_t extra_argument; +}; + +struct limine_smp_response { + uint64_t revision; + uint64_t flags; + uint64_t bsp_hartid; + uint64_t cpu_count; + LIMINE_PTR(struct limine_smp_info **) cpus; +}; + +#else +#error Unknown architecture +#endif + +struct limine_smp_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_smp_response *) response; + uint64_t flags; +}; + +/* Memory map */ + +#define LIMINE_MEMMAP_REQUEST { LIMINE_COMMON_MAGIC, 0x67cf3d9d378a806f, 0xe304acdfc50c3c62 } + +#define LIMINE_MEMMAP_USABLE 0 +#define LIMINE_MEMMAP_RESERVED 1 +#define LIMINE_MEMMAP_ACPI_RECLAIMABLE 2 +#define LIMINE_MEMMAP_ACPI_NVS 3 +#define LIMINE_MEMMAP_BAD_MEMORY 4 +#define LIMINE_MEMMAP_BOOTLOADER_RECLAIMABLE 5 +#define LIMINE_MEMMAP_KERNEL_AND_MODULES 6 +#define LIMINE_MEMMAP_FRAMEBUFFER 7 + +struct limine_memmap_entry { + uint64_t base; + uint64_t length; + uint64_t type; +}; + +struct limine_memmap_response { + uint64_t revision; + uint64_t entry_count; + LIMINE_PTR(struct limine_memmap_entry **) entries; +}; + +struct limine_memmap_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_memmap_response *) response; +}; + +/* Entry point */ + +#define LIMINE_ENTRY_POINT_REQUEST { LIMINE_COMMON_MAGIC, 0x13d86c035a1cd3e1, 0x2b0caa89d8f3026a } + +typedef void (*limine_entry_point)(void); + +struct limine_entry_point_response { + uint64_t revision; +}; + +struct limine_entry_point_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_entry_point_response *) response; + LIMINE_PTR(limine_entry_point) entry; +}; + +/* Kernel File */ + +#define LIMINE_KERNEL_FILE_REQUEST { LIMINE_COMMON_MAGIC, 0xad97e90e83f1ed67, 0x31eb5d1c5ff23b69 } + +struct limine_kernel_file_response { + uint64_t revision; + LIMINE_PTR(struct limine_file *) kernel_file; +}; + +struct limine_kernel_file_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_kernel_file_response *) response; +}; + +/* Module */ + +#define LIMINE_MODULE_REQUEST { LIMINE_COMMON_MAGIC, 0x3e7e279702be32af, 0xca1c4f3bd1280cee } + +#define LIMINE_INTERNAL_MODULE_REQUIRED (1 << 0) +#define LIMINE_INTERNAL_MODULE_COMPRESSED (1 << 1) + +struct limine_internal_module { + LIMINE_PTR(const char *) path; + LIMINE_PTR(const char *) cmdline; + uint64_t flags; +}; + +struct limine_module_response { + uint64_t revision; + uint64_t module_count; + LIMINE_PTR(struct limine_file **) modules; +}; + +struct limine_module_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_module_response *) response; + + /* Request revision 1 */ + uint64_t internal_module_count; + LIMINE_PTR(struct limine_internal_module **) internal_modules; +}; + +/* RSDP */ + +#define LIMINE_RSDP_REQUEST { LIMINE_COMMON_MAGIC, 0xc5e77b6b397e7b43, 0x27637845accdcf3c } + +struct limine_rsdp_response { + uint64_t revision; + LIMINE_PTR(void *) address; +}; + +struct limine_rsdp_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_rsdp_response *) response; +}; + +/* SMBIOS */ + +#define LIMINE_SMBIOS_REQUEST { LIMINE_COMMON_MAGIC, 0x9e9046f11e095391, 0xaa4a520fefbde5ee } + +struct limine_smbios_response { + uint64_t revision; + LIMINE_PTR(void *) entry_32; + LIMINE_PTR(void *) entry_64; +}; + +struct limine_smbios_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_smbios_response *) response; +}; + +/* EFI system table */ + +#define LIMINE_EFI_SYSTEM_TABLE_REQUEST { LIMINE_COMMON_MAGIC, 0x5ceba5163eaaf6d6, 0x0a6981610cf65fcc } + +struct limine_efi_system_table_response { + uint64_t revision; + LIMINE_PTR(void *) address; +}; + +struct limine_efi_system_table_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_efi_system_table_response *) response; +}; + +/* EFI memory map */ + +#define LIMINE_EFI_MEMMAP_REQUEST { LIMINE_COMMON_MAGIC, 0x7df62a431d6872d5, 0xa4fcdfb3e57306c8 } + +struct limine_efi_memmap_response { + uint64_t revision; + LIMINE_PTR(void *) memmap; + uint64_t memmap_size; + uint64_t desc_size; + uint64_t desc_version; +}; + +struct limine_efi_memmap_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_efi_memmap_response *) response; +}; + +/* Boot time */ + +#define LIMINE_BOOT_TIME_REQUEST { LIMINE_COMMON_MAGIC, 0x502746e184c088aa, 0xfbc5ec83e6327893 } + +struct limine_boot_time_response { + uint64_t revision; + int64_t boot_time; +}; + +struct limine_boot_time_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_boot_time_response *) response; +}; + +/* Kernel address */ + +#define LIMINE_KERNEL_ADDRESS_REQUEST { LIMINE_COMMON_MAGIC, 0x71ba76863cc55f63, 0xb2644a48c516a487 } + +struct limine_kernel_address_response { + uint64_t revision; + uint64_t physical_base; + uint64_t virtual_base; +}; + +struct limine_kernel_address_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_kernel_address_response *) response; +}; + +/* Device Tree Blob */ + +#define LIMINE_DTB_REQUEST { LIMINE_COMMON_MAGIC, 0xb40ddb48fb54bac7, 0x545081493f81ffb7 } + +struct limine_dtb_response { + uint64_t revision; + LIMINE_PTR(void *) dtb_ptr; +}; + +struct limine_dtb_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_dtb_response *) response; +}; + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/kernel/makefile b/kernel/makefile index 7d02b32..b2a2660 100644 --- a/kernel/makefile +++ b/kernel/makefile @@ -1,19 +1,15 @@ # Kernel makefile -ifndef CFLAGS - CFLAGS = -ffreestanding -Wall -Wextra -g -std=gnu99 -O2 -Iinclude - CFLAGS += -isystem="/usr/include" -endif - -ifndef CXXFLAGS - CXXFLAGS = -ffreestanding -Wall -Wextra -fno-exceptions -fno-rtti -D__is_kernel -g -O2 -Iinclude - CXXFLAGS += -Iinclude - CXXFLAGS += -isystem="/usr/include" -endif - -ifndef LDFLAGS - LDFLAGS = -T arch/$(ARCH)/linker.ld -ffreestanding -g -O2 -Iinclude - LDFLAGS += -isystem="/usr/include" +CFLAGS := -ffreestanding -Wall -Wextra -g -std=gnu99 -O2 -Iinclude +CXXFLAGS := -ffreestanding -Wall -Wextra -fno-exceptions -fno-rtti -g -O2 -Iinclude +LDFLAGS := -T arch/$(ARCH)/linker.ld -ffreestanding -g -O2 -Iinclude +ASMFLAGS := + +ifeq ($(ARCH),x86_64) +CFLAGS += -mno-red-zone +CXXFLAGS += -mno-red-zone +LDFLAGS += -mno-red-zone +ASMFLAGS += -felf64 endif ifndef SYSROOT @@ -21,14 +17,13 @@ ifndef SYSROOT endif -LIBS = -nostdlib -lgcc -lck +LIBS = -nostdlib -lck -lgcc #Find all the source files C_SOURCES := $(shell find $(PWD)/kernel -type f -name '*.c') CPP_SOURCES := $(shell find $(PWD)/kernel -type f -name '*.cpp') HEADERS := $(shell find $(PWD) -type f -name '*.h') ASMFILES := $(shell find $(PWD) -type f -name '*.asm' ! -name 'crti.asm' ! -name 'crtn.asm') -GASFILES := $(wildcard *.s) CRTBEGIN := $(shell $(CXX) $(CXXFLAGS) -print-file-name=crtbegin.o) CRTEND := $(shell $(CXX) $(CXXFLAGS) -print-file-name=crtend.o) @@ -54,7 +49,7 @@ all: crti.o crtn.o kernel.bin kernel.bin: ${OBJECTS} $(info [INFO] Linking kernel) - $(CXX) ${LDFLAGS} -o ${PREFIX}/kernel.bin $(LINKLST) + $(CXX) ${LDFLAGS} -o $@ $(LINKLST) %.o: %.cpp $(info [INFO] Compiling $<) @@ -66,13 +61,13 @@ kernel.bin: ${OBJECTS} %.o: %.asm $(info [INFO] Assembling $<) - $(NASM) $< -felf32 -o $@ -g + $(NASM) $< $(ASMFLAGS) -o $@ -g crti.o: - $(NASM) arch/$(ARCH)/crti.asm -felf32 -o $@ + $(NASM) arch/$(ARCH)/crti.asm $(ASMFLAGS) -o $@ crtn.o: - $(NASM) arch/$(ARCH)/crtn.asm -felf32 -o $@ + $(NASM) arch/$(ARCH)/crtn.asm $(ASMFLAGS) -o $@ install-headers: cp -r --preserve=timestamps include/. $(SYSROOT)/usr/include diff --git a/libc/README.txt b/libc/README.txt new file mode 100644 index 0000000..6806bd4 --- /dev/null +++ b/libc/README.txt @@ -0,0 +1,5 @@ +a temporary(?) libc for the kernel + +code based off meaty skeleton from osdev.org + +todo: \ No newline at end of file diff --git a/libc/abort.c b/libc/abort.c new file mode 100644 index 0000000..83873e8 --- /dev/null +++ b/libc/abort.c @@ -0,0 +1,11 @@ +#include +#include + +__attribute__((__noreturn__)) +void abort(void) { + // TODO: Add proper kernel panic. + printf("kernel: panic: abort()\n"); + asm volatile("hlt"); + while (1) { } + __builtin_unreachable(); +} \ No newline at end of file diff --git a/libc/include/stdio.h b/libc/include/stdio.h new file mode 100644 index 0000000..eb4e45b --- /dev/null +++ b/libc/include/stdio.h @@ -0,0 +1,18 @@ +#ifndef _STDIO_H +#define _STDIO_H 1 + +#define EOF (-1) + +#ifdef __cplusplus +extern "C" { +#endif + +int printf(const char* __restrict, ...); +int putchar(int); +int puts(const char*); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h new file mode 100644 index 0000000..1d1ee32 --- /dev/null +++ b/libc/include/stdlib.h @@ -0,0 +1,15 @@ +#ifndef _STDLIB_H +#define _STDLIB_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +__attribute__((__noreturn__)) +void abort(void); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/libc/include/string.h b/libc/include/string.h new file mode 100644 index 0000000..4f6b5bd --- /dev/null +++ b/libc/include/string.h @@ -0,0 +1,20 @@ +#ifndef _STRING_H +#define _STRING_H 1 + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int memcmp(const void*, const void*, size_t); +void* memcpy(void* __restrict, const void* __restrict, size_t); +void* memmove(void*, const void*, size_t); +void* memset(void*, int, size_t); +size_t strlen(const char*); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/libc/include/sys/cdefs.h b/libc/include/sys/cdefs.h new file mode 100644 index 0000000..1e2c277 --- /dev/null +++ b/libc/include/sys/cdefs.h @@ -0,0 +1,6 @@ +#ifndef _SYS_CDEFS_H +#define _SYS_CDEFS_H 1 + + + +#endif \ No newline at end of file diff --git a/libc/makefile b/libc/makefile new file mode 100644 index 0000000..2e1912e --- /dev/null +++ b/libc/makefile @@ -0,0 +1,79 @@ +# libck makefile + +ifndef AR + AR = i686-elf-ar +endif + +ifndef CFLAGS + CFLAGS = -ffreestanding -Wall -Wextra -g -std=gnu11 -O2 -Iinclude + CFLAGS += --sysroot="$(SYSROOT)" + CFLAGS += -isystem="/usr/include" +endif + +ifndef CXXFLAGS + CXXFLAGS = -ffreestanding -Wall -Wextra -fno-exceptions -fno-rtti -D__is_kernel -g -O2 -Iinclude + CXXFLAGS += -Iinclude + CXXFLAGS += --sysroot="$(SYSROOT)" + CXXFLAGS += -isystem="/usr/include" +endif + +ifndef LDFLAGS + LDFLAGS = -T arch/$(ARCH)/linker.ld -ffreestanding -g -O2 -Iinclude + LDFLAGS += --sysroot="$(SYSROOT)" + LDFLAGS += -isystem="/usr/include" +endif + +ifndef SYSROOT + $(error No sysroot specified) +endif + + +LIBS = -nostdlib -lgcc + +#Find all the source files +C_SOURCES := $(shell find $(PWD) -type f -name '*.c') +#CPP_SOURCES := $(shell find $(PWD)/kernel -type f -name '*.cpp') +HEADERS := $(shell find $(PWD) -type f -name '*.h') +#ASMFILES := $(shell find $(PWD) -type f -name '*.asm') + +OBJECTS := $(patsubst %.c,%.o,$(C_SOURCES)) +# OBJECTS += $(patsubst %.cpp,%.o,$(CPP_SOURCES)) +# OBJECTS += $(patsubst %.asm,%.o,$(ASMFILES)) + +DEPFILES := $(patsubst %.c,%.d,$(C_SOURCES)) +# DEPFILES += $(patsubst %.cpp,%.d,$(CPP_SOURCES)) + +LINKLST += $(OBJECTS) +LINKLST += $(LIBS) + +-include $(DEPFILES) + +.PHONY: all install-headers install-lib clean + +all: libc.a install-lib + +libc.a: ${OBJECTS} + $(info [INFO] Linking $<) + $(AR) rcs $@ $(OBJECTS) + +%.o: %.cpp + $(info [INFO] Compiling $<) + $(CXX) ${CXXFLAGS} -MMD -MP -c $< -o $@ + +%.o: %.c + $(info [INFO] Compiling $<) + $(CC) $(CFLAGS) -MMD -MP -c $< -o $@ + +%.o: %.asm + $(info [INFO] Assembling $<) + $(NASM) $< -felf32 -o $@ -g + +install-headers: + cp -r --preserve=timestamps include/. $(SYSROOT)/usr/include + +install-lib: libck.a + cp -r $< $(SYSROOT)/usr/lib/. + +clean: + $(info [INFO] Cleaning) + $(RM) ${OBJECTS} $(DEPFILES) \ No newline at end of file diff --git a/libc/memcmp.c b/libc/memcmp.c new file mode 100644 index 0000000..93141e1 --- /dev/null +++ b/libc/memcmp.c @@ -0,0 +1,13 @@ +#include + +int memcmp(const void* aptr, const void* bptr, size_t size) { + const unsigned char* a = (const unsigned char*) aptr; + const unsigned char* b = (const unsigned char*) bptr; + for (size_t i = 0; i < size; i++) { + if (a[i] < b[i]) + return -1; + else if (b[i] < a[i]) + return 1; + } + return 0; +} \ No newline at end of file diff --git a/libc/memcpy.c b/libc/memcpy.c new file mode 100644 index 0000000..7e09be7 --- /dev/null +++ b/libc/memcpy.c @@ -0,0 +1,9 @@ +#include + +void* memcpy(void* restrict dstptr, const void* restrict srcptr, size_t size) { + unsigned char* dst = (unsigned char*) dstptr; + const unsigned char* src = (const unsigned char*) srcptr; + for (size_t i=0; i < size; i++) + dst[i] = src[i]; + return dstptr; +} \ No newline at end of file diff --git a/libc/memmove.c b/libc/memmove.c new file mode 100644 index 0000000..98c787f --- /dev/null +++ b/libc/memmove.c @@ -0,0 +1,14 @@ +#include + +void* memmove(void* dstptr, const void* srcptr, size_t size) { + unsigned char* dst = (unsigned char*) dstptr; + const unsigned char* src = (const unsigned char*) srcptr; + if (dst < src) { + for (size_t i = 0; i < size; i++) + dst[i] = src[i]; + } else { + for (size_t i = size; i != 0; i--) + dst[i-1] = src[i-1]; + } + return dstptr; +} \ No newline at end of file diff --git a/libc/memset.c b/libc/memset.c new file mode 100644 index 0000000..67dadfe --- /dev/null +++ b/libc/memset.c @@ -0,0 +1,8 @@ +#include + +void* memset(void* bufptr, int value, size_t size) { + unsigned char* buf = (unsigned char*) bufptr; + for (size_t i = 0; i < size; i++) + buf[i] = (unsigned char) value; + return bufptr; +} \ No newline at end of file diff --git a/libc/printf.c b/libc/printf.c new file mode 100644 index 0000000..72a4749 --- /dev/null +++ b/libc/printf.c @@ -0,0 +1,191 @@ +#include +#include +#include +#include +#include +#include + +static bool print(const char* data, size_t length) { + const unsigned char* bytes = (const unsigned char*) data; + for (size_t i = 0; i < length; i++) + if (putchar(bytes[i]) == EOF) + return false; + return true; +} + +// for %d and %x. +static const char* itoa(unsigned int num, char* str, unsigned int base) { + int cou = 0; // nt + + if (num == 0) { // 0 + str[cou] = '0'; + str[++cou] = '\0'; + return str; + } + + while (num) + { + unsigned int rem = (num % base); + // brings the number up to ascii 0 + the digit + if (rem > 9) { + str[cou] = rem + '7'; // 7 = 55 + 10(A) = 65 + } else { + str[cou] = rem + '0'; + } + num /= base; + ++cou; + } + + // reverse the string + for (int i = 0; i < cou; i++) { + char temp = str[i]; + str[i] = str[cou - i - 1]; + str[cou - 1] = temp; + } + + str[cou] = '\0'; + return str; +} + +// have no idea if there's a better way to do this. for %lx +static const char* itoa_u64(unsigned long long num, char* str, int base) { + int cou = 0; // nt + + if (num == 0) { // 0 + str[cou] = '0'; + str[++cou] = '\0'; + return str; + } + + while (num) + { + unsigned long long rem = num % base; + // brings the number up to ascii 0 + the digit + if (rem > 9) { + str[cou] = rem + '7'; // 7 = 55 + 10(A) = 65 + } else { + str[cou] = rem + '0'; + } + num /= base; + ++cou; + } + + // reverse the string + for (int i = 0; i < cou; i++) { + char temp = str[i]; + str[i] = str[cou - i - 1]; + str[cou - 1] = temp; + } + + str[cou] = '\0'; + return str; +} + +int printf(const char* restrict format, ...) { + va_list parameters; + va_start(parameters, format); + + int written = 0; + + while (*format != '\0') { + size_t maxrem = INT_MAX - written; + + if (format[0] != '%' || format[1] == '%') { + if (format[0] == '%') + format++; + size_t amount = 1; + while (format[amount] && format[amount] != '%') + amount++; + if (maxrem < amount) { + // TODO: Set errno to EOVERFLOW. + return -1; + } + if (!print(format, amount)) + return -1; + format += amount; + written += amount; + continue; + } + + const char* format_begun_at = format++; + + if (*format == 'c') { + format++; + char c = (char) va_arg(parameters, int /* char promotes to int */); + if (!maxrem) { + // TODO: Set errno to EOVERFLOW. + return -1; + } + if (!print(&c, sizeof(c))) + return -1; + written++; + } else if (*format == 'd') { + format++; + char str[20]; // probably a long enough buffer + unsigned int d = va_arg(parameters, unsigned int); + itoa(d, str, 10); + size_t len = strlen(str); + if (maxrem < len) { + // TODO: Set errno to EOVERFLOW. + return -1; + } + if (!print(str, len)) + return -1; + written += len; + } else if (*format == 'x') { + format++; + char str[20]; // probably a long enough buffer + unsigned int d = va_arg(parameters, unsigned int); + itoa(d, str, 16); + size_t len = strlen(str); + if (maxrem < len) { + // TODO: Set errno to EOVERFLOW. + return -1; + } + if (!print(str, len)) + return -1; + written += len; + } else if (*format == 'l') { // for %lx and others that start with l + format++; + if (*format == 'x') { + format++; + char str[20]; // probably a long enough buffer + unsigned long long d = va_arg(parameters, unsigned long long); + itoa_u64(d, str, 16); + size_t len = strlen(str); + if (maxrem < len) { + // TODO: Set errno to EOVERFLOW. + return -1; + } + if (!print(str, len)) + return -1; + written += len; + } + } else if (*format == 's') { + format++; + const char* str = va_arg(parameters, const char*); + size_t len = strlen(str); + if (maxrem < len) { + // TODO: Set errno to EOVERFLOW. + return -1; + } + if (!print(str, len)) + return -1; + written += len; + } else { + format = format_begun_at; + size_t len = strlen(format); + if (maxrem < len) { + // TODO: Set errno to EOVERFLOW. + return -1; + } + if (!print(format, len)) + return -1; + written += len; + format += len; + } + } + + va_end(parameters); + return written; +} \ No newline at end of file diff --git a/libc/putchar.c b/libc/putchar.c new file mode 100644 index 0000000..c5a7976 --- /dev/null +++ b/libc/putchar.c @@ -0,0 +1,9 @@ +#include + +#include + +int putchar(int ic) { + char c = (char) ic; + terminal_write(&c, sizeof(c)); + return ic; +} \ No newline at end of file diff --git a/libc/puts.c b/libc/puts.c new file mode 100644 index 0000000..8c8c036 --- /dev/null +++ b/libc/puts.c @@ -0,0 +1,5 @@ +#include + +int puts(const char* string) { + return printf("%s\n", string); +} \ No newline at end of file diff --git a/libc/strlen.c b/libc/strlen.c new file mode 100644 index 0000000..441622a --- /dev/null +++ b/libc/strlen.c @@ -0,0 +1,9 @@ +#include + +size_t strlen(const char* str) { + size_t len = 0; + while (str[len]) { + ++len; + } + return len; +} \ No newline at end of file diff --git a/libs/libck/README.txt b/libs/libck/README.txt deleted file mode 100644 index 6806bd4..0000000 --- a/libs/libck/README.txt +++ /dev/null @@ -1,5 +0,0 @@ -a temporary(?) libc for the kernel - -code based off meaty skeleton from osdev.org - -todo: \ No newline at end of file diff --git a/libs/libck/abort.c b/libs/libck/abort.c deleted file mode 100644 index 83873e8..0000000 --- a/libs/libck/abort.c +++ /dev/null @@ -1,11 +0,0 @@ -#include -#include - -__attribute__((__noreturn__)) -void abort(void) { - // TODO: Add proper kernel panic. - printf("kernel: panic: abort()\n"); - asm volatile("hlt"); - while (1) { } - __builtin_unreachable(); -} \ No newline at end of file diff --git a/libs/libck/include/stdio.h b/libs/libck/include/stdio.h deleted file mode 100644 index eb4e45b..0000000 --- a/libs/libck/include/stdio.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef _STDIO_H -#define _STDIO_H 1 - -#define EOF (-1) - -#ifdef __cplusplus -extern "C" { -#endif - -int printf(const char* __restrict, ...); -int putchar(int); -int puts(const char*); - -#ifdef __cplusplus -} -#endif - -#endif \ No newline at end of file diff --git a/libs/libck/include/stdlib.h b/libs/libck/include/stdlib.h deleted file mode 100644 index 1d1ee32..0000000 --- a/libs/libck/include/stdlib.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _STDLIB_H -#define _STDLIB_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -__attribute__((__noreturn__)) -void abort(void); - -#ifdef __cplusplus -} -#endif - -#endif \ No newline at end of file diff --git a/libs/libck/include/string.h b/libs/libck/include/string.h deleted file mode 100644 index 4f6b5bd..0000000 --- a/libs/libck/include/string.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef _STRING_H -#define _STRING_H 1 - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -int memcmp(const void*, const void*, size_t); -void* memcpy(void* __restrict, const void* __restrict, size_t); -void* memmove(void*, const void*, size_t); -void* memset(void*, int, size_t); -size_t strlen(const char*); - -#ifdef __cplusplus -} -#endif - -#endif \ No newline at end of file diff --git a/libs/libck/include/sys/cdefs.h b/libs/libck/include/sys/cdefs.h deleted file mode 100644 index 1e2c277..0000000 --- a/libs/libck/include/sys/cdefs.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _SYS_CDEFS_H -#define _SYS_CDEFS_H 1 - - - -#endif \ No newline at end of file diff --git a/libs/libck/makefile b/libs/libck/makefile deleted file mode 100644 index 5f7b270..0000000 --- a/libs/libck/makefile +++ /dev/null @@ -1,79 +0,0 @@ -# libck makefile - -ifndef AR - AR = i686-elf-ar -endif - -ifndef CFLAGS - CFLAGS = -ffreestanding -Wall -Wextra -g -std=gnu11 -O2 -Iinclude - CFLAGS += --sysroot="$(SYSROOT)" - CFLAGS += -isystem="/usr/include" -endif - -ifndef CXXFLAGS - CXXFLAGS = -ffreestanding -Wall -Wextra -fno-exceptions -fno-rtti -D__is_kernel -g -O2 -Iinclude - CXXFLAGS += -Iinclude - CXXFLAGS += --sysroot="$(SYSROOT)" - CXXFLAGS += -isystem="/usr/include" -endif - -ifndef LDFLAGS - LDFLAGS = -T arch/$(ARCH)/linker.ld -ffreestanding -g -O2 -Iinclude - LDFLAGS += --sysroot="$(SYSROOT)" - LDFLAGS += -isystem="/usr/include" -endif - -ifndef SYSROOT - $(error No sysroot specified) -endif - - -LIBS = -nostdlib -lgcc - -#Find all the source files -C_SOURCES := $(shell find $(PWD) -type f -name '*.c') -#CPP_SOURCES := $(shell find $(PWD)/kernel -type f -name '*.cpp') -HEADERS := $(shell find $(PWD) -type f -name '*.h') -#ASMFILES := $(shell find $(PWD) -type f -name '*.asm') - -OBJECTS := $(patsubst %.c,%.o,$(C_SOURCES)) -# OBJECTS += $(patsubst %.cpp,%.o,$(CPP_SOURCES)) -# OBJECTS += $(patsubst %.asm,%.o,$(ASMFILES)) - -DEPFILES := $(patsubst %.c,%.d,$(C_SOURCES)) -# DEPFILES += $(patsubst %.cpp,%.d,$(CPP_SOURCES)) - -LINKLST += $(OBJECTS) -LINKLST += $(LIBS) - --include $(DEPFILES) - -.PHONY: all install-headers install-lib clean - -all: libck.a install-headers install-lib - -libck.a: ${OBJECTS} - $(info [INFO] Linking $<) - $(AR) rcs $@ $(OBJECTS) - -%.o: %.cpp - $(info [INFO] Compiling $<) - $(CXX) ${CXXFLAGS} -MMD -MP -c $< -o $@ - -%.o: %.c - $(info [INFO] Compiling $<) - $(CC) $(CFLAGS) -MMD -MP -c $< -o $@ - -%.o: %.asm - $(info [INFO] Assembling $<) - $(NASM) $< -felf32 -o $@ -g - -install-headers: - cp -r --preserve=timestamps include/. $(SYSROOT)/usr/include - -install-lib: libck.a - cp -r $< $(SYSROOT)/usr/lib/. - -clean: - $(info [INFO] Cleaning) - $(RM) ${OBJECTS} $(DEPFILES) \ No newline at end of file diff --git a/libs/libck/memcmp.c b/libs/libck/memcmp.c deleted file mode 100644 index 93141e1..0000000 --- a/libs/libck/memcmp.c +++ /dev/null @@ -1,13 +0,0 @@ -#include - -int memcmp(const void* aptr, const void* bptr, size_t size) { - const unsigned char* a = (const unsigned char*) aptr; - const unsigned char* b = (const unsigned char*) bptr; - for (size_t i = 0; i < size; i++) { - if (a[i] < b[i]) - return -1; - else if (b[i] < a[i]) - return 1; - } - return 0; -} \ No newline at end of file diff --git a/libs/libck/memcpy.c b/libs/libck/memcpy.c deleted file mode 100644 index 7e09be7..0000000 --- a/libs/libck/memcpy.c +++ /dev/null @@ -1,9 +0,0 @@ -#include - -void* memcpy(void* restrict dstptr, const void* restrict srcptr, size_t size) { - unsigned char* dst = (unsigned char*) dstptr; - const unsigned char* src = (const unsigned char*) srcptr; - for (size_t i=0; i < size; i++) - dst[i] = src[i]; - return dstptr; -} \ No newline at end of file diff --git a/libs/libck/memmove.c b/libs/libck/memmove.c deleted file mode 100644 index 98c787f..0000000 --- a/libs/libck/memmove.c +++ /dev/null @@ -1,14 +0,0 @@ -#include - -void* memmove(void* dstptr, const void* srcptr, size_t size) { - unsigned char* dst = (unsigned char*) dstptr; - const unsigned char* src = (const unsigned char*) srcptr; - if (dst < src) { - for (size_t i = 0; i < size; i++) - dst[i] = src[i]; - } else { - for (size_t i = size; i != 0; i--) - dst[i-1] = src[i-1]; - } - return dstptr; -} \ No newline at end of file diff --git a/libs/libck/memset.c b/libs/libck/memset.c deleted file mode 100644 index 67dadfe..0000000 --- a/libs/libck/memset.c +++ /dev/null @@ -1,8 +0,0 @@ -#include - -void* memset(void* bufptr, int value, size_t size) { - unsigned char* buf = (unsigned char*) bufptr; - for (size_t i = 0; i < size; i++) - buf[i] = (unsigned char) value; - return bufptr; -} \ No newline at end of file diff --git a/libs/libck/printf.c b/libs/libck/printf.c deleted file mode 100644 index 72a4749..0000000 --- a/libs/libck/printf.c +++ /dev/null @@ -1,191 +0,0 @@ -#include -#include -#include -#include -#include -#include - -static bool print(const char* data, size_t length) { - const unsigned char* bytes = (const unsigned char*) data; - for (size_t i = 0; i < length; i++) - if (putchar(bytes[i]) == EOF) - return false; - return true; -} - -// for %d and %x. -static const char* itoa(unsigned int num, char* str, unsigned int base) { - int cou = 0; // nt - - if (num == 0) { // 0 - str[cou] = '0'; - str[++cou] = '\0'; - return str; - } - - while (num) - { - unsigned int rem = (num % base); - // brings the number up to ascii 0 + the digit - if (rem > 9) { - str[cou] = rem + '7'; // 7 = 55 + 10(A) = 65 - } else { - str[cou] = rem + '0'; - } - num /= base; - ++cou; - } - - // reverse the string - for (int i = 0; i < cou; i++) { - char temp = str[i]; - str[i] = str[cou - i - 1]; - str[cou - 1] = temp; - } - - str[cou] = '\0'; - return str; -} - -// have no idea if there's a better way to do this. for %lx -static const char* itoa_u64(unsigned long long num, char* str, int base) { - int cou = 0; // nt - - if (num == 0) { // 0 - str[cou] = '0'; - str[++cou] = '\0'; - return str; - } - - while (num) - { - unsigned long long rem = num % base; - // brings the number up to ascii 0 + the digit - if (rem > 9) { - str[cou] = rem + '7'; // 7 = 55 + 10(A) = 65 - } else { - str[cou] = rem + '0'; - } - num /= base; - ++cou; - } - - // reverse the string - for (int i = 0; i < cou; i++) { - char temp = str[i]; - str[i] = str[cou - i - 1]; - str[cou - 1] = temp; - } - - str[cou] = '\0'; - return str; -} - -int printf(const char* restrict format, ...) { - va_list parameters; - va_start(parameters, format); - - int written = 0; - - while (*format != '\0') { - size_t maxrem = INT_MAX - written; - - if (format[0] != '%' || format[1] == '%') { - if (format[0] == '%') - format++; - size_t amount = 1; - while (format[amount] && format[amount] != '%') - amount++; - if (maxrem < amount) { - // TODO: Set errno to EOVERFLOW. - return -1; - } - if (!print(format, amount)) - return -1; - format += amount; - written += amount; - continue; - } - - const char* format_begun_at = format++; - - if (*format == 'c') { - format++; - char c = (char) va_arg(parameters, int /* char promotes to int */); - if (!maxrem) { - // TODO: Set errno to EOVERFLOW. - return -1; - } - if (!print(&c, sizeof(c))) - return -1; - written++; - } else if (*format == 'd') { - format++; - char str[20]; // probably a long enough buffer - unsigned int d = va_arg(parameters, unsigned int); - itoa(d, str, 10); - size_t len = strlen(str); - if (maxrem < len) { - // TODO: Set errno to EOVERFLOW. - return -1; - } - if (!print(str, len)) - return -1; - written += len; - } else if (*format == 'x') { - format++; - char str[20]; // probably a long enough buffer - unsigned int d = va_arg(parameters, unsigned int); - itoa(d, str, 16); - size_t len = strlen(str); - if (maxrem < len) { - // TODO: Set errno to EOVERFLOW. - return -1; - } - if (!print(str, len)) - return -1; - written += len; - } else if (*format == 'l') { // for %lx and others that start with l - format++; - if (*format == 'x') { - format++; - char str[20]; // probably a long enough buffer - unsigned long long d = va_arg(parameters, unsigned long long); - itoa_u64(d, str, 16); - size_t len = strlen(str); - if (maxrem < len) { - // TODO: Set errno to EOVERFLOW. - return -1; - } - if (!print(str, len)) - return -1; - written += len; - } - } else if (*format == 's') { - format++; - const char* str = va_arg(parameters, const char*); - size_t len = strlen(str); - if (maxrem < len) { - // TODO: Set errno to EOVERFLOW. - return -1; - } - if (!print(str, len)) - return -1; - written += len; - } else { - format = format_begun_at; - size_t len = strlen(format); - if (maxrem < len) { - // TODO: Set errno to EOVERFLOW. - return -1; - } - if (!print(format, len)) - return -1; - written += len; - format += len; - } - } - - va_end(parameters); - return written; -} \ No newline at end of file diff --git a/libs/libck/putchar.c b/libs/libck/putchar.c deleted file mode 100644 index c5a7976..0000000 --- a/libs/libck/putchar.c +++ /dev/null @@ -1,9 +0,0 @@ -#include - -#include - -int putchar(int ic) { - char c = (char) ic; - terminal_write(&c, sizeof(c)); - return ic; -} \ No newline at end of file diff --git a/libs/libck/puts.c b/libs/libck/puts.c deleted file mode 100644 index 8c8c036..0000000 --- a/libs/libck/puts.c +++ /dev/null @@ -1,5 +0,0 @@ -#include - -int puts(const char* string) { - return printf("%s\n", string); -} \ No newline at end of file diff --git a/libs/libck/strlen.c b/libs/libck/strlen.c deleted file mode 100644 index 441622a..0000000 --- a/libs/libck/strlen.c +++ /dev/null @@ -1,9 +0,0 @@ -#include - -size_t strlen(const char* str) { - size_t len = 0; - while (str[len]) { - ++len; - } - return len; -} \ No newline at end of file diff --git a/makefile b/makefile index c52dd4c..21c698c 100644 --- a/makefile +++ b/makefile @@ -7,30 +7,33 @@ export SYSROOT = $(PWD)/sysroot # Variables for easy access of tools like gcc and nasm export CC = $(ARCH)-elf-gcc export CXX = $(ARCH)-elf-g++ -export LD = $(ARCH)-elf-ld +export AR = $(ARCH)-elf-ar export NASM = nasm -QEMU = qemu-system-x86_64 +QEMU = qemu-system-x86_64 #ASMFLAGS = -felf32 #CXXFLAGS := -ffreestanding -O2 -Wall -Wextra -fno-exceptions -fno-rtti #LDFLAGS := -ffreestanding -O2 -nostdlib -.PHONY: all kernel.bin grub multiboot_test clean +.PHONY: all grub clean build-all -all: libck.a kernel.bin grub +all: build-all grub -libck.a: - $(info [INFO] Building libck) - $(MAKE) -C ./libs/libck/ ARCH=$(ARCH) PREFIX=$(PWD) +build-all: kernel/kernel.bin libc.a -kernel.bin: +libc/libc.a: install-headers + $(info [INFO] Building libc) + $(MAKE) -C ./libc/ ARCH=$(ARCH) PREFIX=$(PWD) + +kernel/kernel.bin: libc/libc.a install-headers $(info [INFO] Building kernel) $(MAKE) -C ./kernel/ ARCH=$(ARCH) PREFIX=$(PWD) -grub: kernel.bin grub.cfg - grub-file --is-x86-multiboot $< - cp kernel.bin isodir/boot - cp grub.cfg isodir/boot/grub - grub-mkrescue -o $(OS_NAME).iso isodir +grub: build-all grub.cfg + xorriso -as mkisofs -b boot/limine/limine-bios-cd.bin \ + -no-emul-boot -boot-load-size 4 -boot-info-table \ + --efi-boot boot/limine/limine-uefi-cd.bin \ + -efi-boot-part --efi-boot-image --protective-msdos-label \ + isodir -o emuos.iso qemu: grub $(QEMU) -no-shutdown -no-reboot --serial stdio -s -m 512 -hda $(OS_NAME).iso @@ -39,12 +42,12 @@ install: install-headers install-libraries install-headers: $(MAKE) -C ./kernel/ install-headers - $(MAKE) -C ./libs/libck/ install-headers + $(MAKE) -C ./libs/libc/ install-headers install-libraries: - $(MAKE) -C ./libs/libck/ install-lib + $(MAKE) -C ./libs/libc/ install-lib clean: -@$(MAKE) -C ./kernel/ clean - -@$(MAKE) -C ./libs/libck/ clean + -@$(MAKE) -C ./libs/libc/ clean -@$(RM) $(wildcard *.bin *.a) -- cgit v1.2.3-70-g09d2 From 982baec992d48343e455bf6e32ca96fbdcddda01 Mon Sep 17 00:00:00 2001 From: EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> Date: Sun, 5 May 2024 03:36:30 -0400 Subject: liminefied x86_64 boot --- .gitignore | 1 + kernel/arch/x86_64/crti.asm | 12 -------- kernel/arch/x86_64/crtn.asm | 9 ------ kernel/arch/x86_64/limine.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++ kernel/kernel.cpp | 12 ++++---- 5 files changed, 75 insertions(+), 27 deletions(-) delete mode 100644 kernel/arch/x86_64/crti.asm delete mode 100644 kernel/arch/x86_64/crtn.asm create mode 100644 kernel/arch/x86_64/limine.cpp diff --git a/.gitignore b/.gitignore index be76e0b..ce75dcb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # directories that have to exist but shouldn't be added to git sysroot/ build/ +isodir/ # compiled files files *.bin diff --git a/kernel/arch/x86_64/crti.asm b/kernel/arch/x86_64/crti.asm deleted file mode 100644 index 73ac499..0000000 --- a/kernel/arch/x86_64/crti.asm +++ /dev/null @@ -1,12 +0,0 @@ -; x86 crti.asm -section .init -global _init:function -_init: - push rbp - mov rbp, rsp - -section .fini -global _fini:function -_fini: - push rbp - mov rbp, rsp \ No newline at end of file diff --git a/kernel/arch/x86_64/crtn.asm b/kernel/arch/x86_64/crtn.asm deleted file mode 100644 index 322b3a2..0000000 --- a/kernel/arch/x86_64/crtn.asm +++ /dev/null @@ -1,9 +0,0 @@ -; x86 crtn.asm - -section .init - pop rbp - ret - -section .fini - pop rbp - ret \ No newline at end of file diff --git a/kernel/arch/x86_64/limine.cpp b/kernel/arch/x86_64/limine.cpp new file mode 100644 index 0000000..84f8642 --- /dev/null +++ b/kernel/arch/x86_64/limine.cpp @@ -0,0 +1,68 @@ +#include +#include +#include +#include "limine.h" + +namespace { +__attribute__((used, section(".requests"))) +volatile LIMINE_BASE_REVISION(2); +} + +namespace { +__attribute__((used, section(".requests"))) +volatile limine_framebuffer_request framebuffer_request = { + .id = LIMINE_FRAMEBUFFER_REQUEST, + .revision = 0, + .response = nullptr +}; +} + +namespace { +__attribute__((used, section(".requests_start_marker"))) +volatile LIMINE_REQUESTS_START_MARKER; + +__attribute__((used, section(".requests_end_marker"))) +volatile LIMINE_REQUESTS_END_MARKER; +} + +namespace { +void hcf() { + asm("cli"); + for (;;) { + asm("hlt"); + } +} +} + +extern void (*__init_array[])(); +extern void (*__init_array_end[])(); + + +extern "C" void _start() { + if (!LIMINE_BASE_REVISION_SUPPORTED) { + hcf(); + } + + // initialize global constructors + for (size_t i = 0; &__init_array[i] != __init_array_end; i++) { + __init_array[i](); + } + + // Ensure we got a framebuffer. + if (framebuffer_request.response == nullptr + || framebuffer_request.response->framebuffer_count < 1) { + hcf(); + } + + // Fetch the first framebuffer. + limine_framebuffer *framebuffer = framebuffer_request.response->framebuffers[0]; + + // Note: we assume the framebuffer model is RGB with 32-bit pixels. + for (std::size_t i = 0; i < 100; i++) { + volatile uint32_t *fb_ptr = static_cast(framebuffer->address); + fb_ptr[i * (framebuffer->pitch / 4) + i] = 0xffffff; + } + + // We're done, just hang... + hcf(); +} \ No newline at end of file diff --git a/kernel/kernel.cpp b/kernel/kernel.cpp index a877be2..f8f36b5 100644 --- a/kernel/kernel.cpp +++ b/kernel/kernel.cpp @@ -3,9 +3,9 @@ #include #include -#include -#include -#include +//#include +//#include +//#include // linker symbols unsigned int _kernel_begin; @@ -19,7 +19,7 @@ extern "C" void kernel_main(void) { //initialize_ps2_controller(); //keyboard_init(); - printf("Hello world!\n"); - printf("a%db\n", 1); - printf("_begin: %x, _end: %x", &_kernel_begin, &_kernel_end); + //printf("Hello world!\n"); + //printf("a%db\n", 1); + //printf("_begin: %x, _end: %x", &_kernel_begin, &_kernel_end); } -- cgit v1.2.3-70-g09d2 From 33bc3446d237a95f1bbf9d5d70a170fa4c4241cd Mon Sep 17 00:00:00 2001 From: EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> Date: Mon, 6 May 2024 23:00:36 -0400 Subject: Improved makefile a bit more and got it working with the other files --- kernel/arch/x86_64/limine.cpp | 6 ++-- kernel/arch/x86_64/limine.h | 2 +- kernel/arch/x86_64/linker.ld | 78 +++++++++++++++++++++++++++++++++++++++++++ kernel/dev/ps2kbd.cpp | 34 +++++++++---------- kernel/kernel.cpp | 6 ++-- kernel/makefile | 68 ++++++++++++++++++------------------- libc/makefile | 4 +-- libc/putchar.c | 4 +-- makefile | 25 +++++++------- run-qemu.bat | 2 +- setup_sysroot.sh | 9 +++++ 11 files changed, 163 insertions(+), 75 deletions(-) create mode 100644 kernel/arch/x86_64/linker.ld create mode 100644 setup_sysroot.sh diff --git a/kernel/arch/x86_64/limine.cpp b/kernel/arch/x86_64/limine.cpp index 84f8642..8c67c52 100644 --- a/kernel/arch/x86_64/limine.cpp +++ b/kernel/arch/x86_64/limine.cpp @@ -1,4 +1,3 @@ -#include #include #include #include "limine.h" @@ -37,6 +36,7 @@ void hcf() { extern void (*__init_array[])(); extern void (*__init_array_end[])(); +extern "C" void kernel_main(); extern "C" void _start() { if (!LIMINE_BASE_REVISION_SUPPORTED) { @@ -58,11 +58,13 @@ extern "C" void _start() { limine_framebuffer *framebuffer = framebuffer_request.response->framebuffers[0]; // Note: we assume the framebuffer model is RGB with 32-bit pixels. - for (std::size_t i = 0; i < 100; i++) { + for (size_t i = 0; i < 100; i++) { volatile uint32_t *fb_ptr = static_cast(framebuffer->address); fb_ptr[i * (framebuffer->pitch / 4) + i] = 0xffffff; } + + // We're done, just hang... hcf(); } \ No newline at end of file diff --git a/kernel/arch/x86_64/limine.h b/kernel/arch/x86_64/limine.h index 0e7e87a..b4afb43 100644 --- a/kernel/arch/x86_64/limine.h +++ b/kernel/arch/x86_64/limine.h @@ -584,4 +584,4 @@ struct limine_dtb_request { } #endif -#endif \ No newline at end of file +#endif diff --git a/kernel/arch/x86_64/linker.ld b/kernel/arch/x86_64/linker.ld new file mode 100644 index 0000000..5724ecf --- /dev/null +++ b/kernel/arch/x86_64/linker.ld @@ -0,0 +1,78 @@ +OUTPUT_FORMAT(elf64-x86-64) +OUTPUT_ARCH(i386:x86-64) + +/* Excecution entry point symbol */ +ENTRY(_start) + +PHDRS +{ + requests PT_LOAD FLAGS((1 << 1) | (1 << 2)); /* Write + Read */ + text PT_LOAD FLAGS((1 << 0) | (1 << 2)); /* Execute + Read */ + rodata PT_LOAD FLAGS((1 << 2)); /* Read only */ + data PT_LOAD FLAGS((1 << 1) | (1 << 2)); /* Write + Read */ + dynamic PT_DYNAMIC FLAGS((1 << 1) | (1 << 2)); /* Dynamic PHDR for relocations */ +} + +SECTIONS +{ + /* Places kernel in the top 2GiB of the address space */ + . = 0xffffffff80000000; + + /* Used to get the beginning and end address of the kernel */ + __kernel_begin = .; + + .requests : { + KEEP(*(.requests_start_marker)) + KEEP(*(.requests)) + KEEP(*(.requests_end_marker)) + } :requests + + . += CONSTANT(MAXPAGESIZE); + + /* code. multiboot header comes first */ + .text : { + *(.text .text.*) + } :text + + . += CONSTANT(MAXPAGESIZE); + + /* read only data */ + .rodata : { + *(. .rodata.*) + } :rodata + + /* init array symbols used to get start and end address of the array */ + .init_array : { + __init_array = .; + *(.init_array .init_array.*) + __init_array_end = .; + } :rodata + + . += CONSTANT(MAXPAGESIZE); + + /* read write data (initialized) */ + .data : { + *(.data .data.*) + } :data + + /* Dynamic section for relocations, both in its own PHDR and inside data PHDR */ + .dynamic : { + *(.dynamic) + } :data :dynamic + + . += CONSTANT(MAXPAGESIZE); + + /* read write data (uninitialized) and stack */ + .bss : { + *(.bss .bss.*) + *(COMMON) + } :data + + /* Discard .note.* and .eh_frame since they may cause issues on some hosts */ + /DISCARD/ : { + *(.eh_frame) + *(.note .note.*) + } + + __kernel_end = .; +} \ No newline at end of file diff --git a/kernel/dev/ps2kbd.cpp b/kernel/dev/ps2kbd.cpp index ee282b6..ffb1189 100644 --- a/kernel/dev/ps2kbd.cpp +++ b/kernel/dev/ps2kbd.cpp @@ -1,25 +1,25 @@ #include -#include -#include +//#include +//#include #include // Keycodes are sorted from left to right, up to down starting with esc // 0x80 is reserved for nonexistant scancodes // used for scan code set 2 -constexpr uint8_t scancodes[] = { - 9, 0x80, 5, 3, 1, 2, 12, 0x80, - 10, 8, 6, 4, 27, -}; +// constexpr uint8_t scancodes[] = { +// 9, 0x80, 5, 3, 1, 2, 12, 0x80, +// 10, 8, 6, 4, 27, +// }; -void keyboard_init() { - irq_clear_mask(1); - outb(0x60, 0xF4); - inb(0x60); -} +// void keyboard_init() { +// irq_clear_mask(1); +// outb(0x60, 0xF4); +// inb(0x60); +// } -void keyboard_write(uint8_t scancode) { - printf("a\n"); - /*for (int i = 0; i < 7; i++) { - inputbuffer |= inb(PS2_DATA) << (i * 8); // lsb is the first scan code - }*/ -} \ No newline at end of file +// void keyboard_write(uint8_t scancode) { +// printf("a\n"); +// /*for (int i = 0; i < 7; i++) { +// inputbuffer |= inb(PS2_DATA) << (i * 8); // lsb is the first scan code +// }*/ +// } \ No newline at end of file diff --git a/kernel/kernel.cpp b/kernel/kernel.cpp index f8f36b5..a0394ea 100644 --- a/kernel/kernel.cpp +++ b/kernel/kernel.cpp @@ -1,7 +1,7 @@ #include -#include -#include -#include +//#include +//#include +//#include //#include //#include diff --git a/kernel/makefile b/kernel/makefile index b2a2660..8c2832d 100644 --- a/kernel/makefile +++ b/kernel/makefile @@ -1,14 +1,14 @@ # Kernel makefile -CFLAGS := -ffreestanding -Wall -Wextra -g -std=gnu99 -O2 -Iinclude -CXXFLAGS := -ffreestanding -Wall -Wextra -fno-exceptions -fno-rtti -g -O2 -Iinclude -LDFLAGS := -T arch/$(ARCH)/linker.ld -ffreestanding -g -O2 -Iinclude +CFLAGS := -ffreestanding -Wall -Wextra -g -std=gnu99 -O2 -Iinclude --sysroot=$(SYSROOT) +CXXFLAGS := -ffreestanding -Wall -Wextra -fno-exceptions -fno-rtti -g -O2 -Iinclude --sysroot=$(SYSROOT) +LDFLAGS := -T arch/$(ARCH)/linker.ld -ffreestanding -g -O2 -Iinclude --sysroot=$(SYSROOT) ASMFLAGS := ifeq ($(ARCH),x86_64) -CFLAGS += -mno-red-zone -CXXFLAGS += -mno-red-zone -LDFLAGS += -mno-red-zone +CFLAGS += -mno-red-zone -mcmodel=kernel -mno-sse -mno-sse2 -mno-mmx +CXXFLAGS += -mno-red-zone -mcmodel=kernel -mno-sse -mno-sse2 -mno-mmx +LDFLAGS += -mno-red-zone -mcmodel=kernel -mno-sse -mno-sse2 -mno-mmx ASMFLAGS += -felf64 endif @@ -16,38 +16,36 @@ ifndef SYSROOT $(error No sysroot specified) endif - -LIBS = -nostdlib -lck -lgcc +LIBS = -nostdlib -lc -lgcc #Find all the source files -C_SOURCES := $(shell find $(PWD)/kernel -type f -name '*.c') -CPP_SOURCES := $(shell find $(PWD)/kernel -type f -name '*.cpp') -HEADERS := $(shell find $(PWD) -type f -name '*.h') -ASMFILES := $(shell find $(PWD) -type f -name '*.asm' ! -name 'crti.asm' ! -name 'crtn.asm') -CRTBEGIN := $(shell $(CXX) $(CXXFLAGS) -print-file-name=crtbegin.o) -CRTEND := $(shell $(CXX) $(CXXFLAGS) -print-file-name=crtend.o) - -OBJECTS := $(patsubst %.c,%.o,$(C_SOURCES)) -OBJECTS += $(patsubst %.cpp,%.o,$(CPP_SOURCES)) -OBJECTS += $(patsubst %.asm,%.o,$(ASMFILES)) - -DEPFILES := $(patsubst %.c,%.d,$(C_SOURCES)) -DEPFILES += $(patsubst %.cpp,%.d,$(CPP_SOURCES)) - -LINKLST := crti.o -LINKLST += $(CRTBEGIN) -LINKLST += $(OBJECTS) +CPP_SRCS := $(shell find . -type f -name '*.cpp' -not -path './arch/*') \ + $(shell find $(PWD)/kernel/arch/$(ARCH) -type f -name '*.cpp') +#HEADERS := $(shell find $(PWD) -type f -name '*.h') +#ASMFILES := $(shell find $(PWD) -type f -name '*.asm' -prune $(PWD)/arch) \ + $(shell find $(PWD)/kernel/arch/$(ARCH) -type f -name '*.asm') + +#OBJS := $(patsubst %.c,%.o,$(C_SOURCES)) +OBJS := $(patsubst %.cpp,%.o,$(CPP_SRCS)) +OBJS += $(patsubst %.asm,%.o,$(ASMFILES)) + +#DEPFILES := $(patsubst %.c,%.d,$(C_SOURCES)) +DEPFILES := $(patsubst %.cpp,%.d,$(CPP_SRCS)) + +# LINKLST := crti.o +# LINKLST += $(CRTBEGIN) +LINKLST += $(OBJS) LINKLST += $(LIBS) -LINKLST += $(CRTEND) -LINKLST += crtn.o +# LINKLST += $(CRTEND) +# LINKLST += crtn.o -include $(DEPFILES) -.PHONY: all crt clean kernel.bin +.PHONY: all clean -all: crti.o crtn.o kernel.bin +all: kernel.bin -kernel.bin: ${OBJECTS} +kernel.bin: ${OBJS} $(info [INFO] Linking kernel) $(CXX) ${LDFLAGS} -o $@ $(LINKLST) @@ -63,15 +61,15 @@ kernel.bin: ${OBJECTS} $(info [INFO] Assembling $<) $(NASM) $< $(ASMFLAGS) -o $@ -g -crti.o: - $(NASM) arch/$(ARCH)/crti.asm $(ASMFLAGS) -o $@ +# crti.o: +# $(NASM) arch/$(ARCH)/crti.asm $(ASMFLAGS) -o $@ -crtn.o: - $(NASM) arch/$(ARCH)/crtn.asm $(ASMFLAGS) -o $@ +# crtn.o: +# $(NASM) arch/$(ARCH)/crtn.asm $(ASMFLAGS) -o $@ install-headers: cp -r --preserve=timestamps include/. $(SYSROOT)/usr/include clean: $(info [INFO] Cleaning) - $(RM) ${OBJECTS} $(DEPFILES) crti.o crtn.o \ No newline at end of file + $(RM) ${OBJS} $(DEPFILES) \ No newline at end of file diff --git a/libc/makefile b/libc/makefile index 2e1912e..560efb7 100644 --- a/libc/makefile +++ b/libc/makefile @@ -1,4 +1,4 @@ -# libck makefile +# libc makefile ifndef AR AR = i686-elf-ar @@ -71,7 +71,7 @@ libc.a: ${OBJECTS} install-headers: cp -r --preserve=timestamps include/. $(SYSROOT)/usr/include -install-lib: libck.a +install-lib: libc.a cp -r $< $(SYSROOT)/usr/lib/. clean: diff --git a/libc/putchar.c b/libc/putchar.c index c5a7976..48147bf 100644 --- a/libc/putchar.c +++ b/libc/putchar.c @@ -1,9 +1,9 @@ #include -#include +//#include int putchar(int ic) { char c = (char) ic; - terminal_write(&c, sizeof(c)); + //terminal_write(&c, sizeof(c)); return ic; } \ No newline at end of file diff --git a/makefile b/makefile index 21c698c..2581e21 100644 --- a/makefile +++ b/makefile @@ -1,24 +1,24 @@ # The makefile -OS_NAME := emuos -ARCH ?= x86_64 -export SYSROOT = $(PWD)/sysroot +OS_NAME := emuos +export ARCH ?= x86_64 +export SYSROOT = $(PWD)/sysroot # Variables for easy access of tools like gcc and nasm export CC = $(ARCH)-elf-gcc export CXX = $(ARCH)-elf-g++ export AR = $(ARCH)-elf-ar export NASM = nasm -QEMU = qemu-system-x86_64 +QEMU = qemu-system-$(ARCH) #ASMFLAGS = -felf32 #CXXFLAGS := -ffreestanding -O2 -Wall -Wextra -fno-exceptions -fno-rtti #LDFLAGS := -ffreestanding -O2 -nostdlib -.PHONY: all grub clean build-all +.PHONY: all limine clean build-all -all: build-all grub +all: build-all limine -build-all: kernel/kernel.bin libc.a +build-all: kernel/kernel.bin libc/libc.a libc/libc.a: install-headers $(info [INFO] Building libc) @@ -28,26 +28,27 @@ kernel/kernel.bin: libc/libc.a install-headers $(info [INFO] Building kernel) $(MAKE) -C ./kernel/ ARCH=$(ARCH) PREFIX=$(PWD) -grub: build-all grub.cfg +limine: build-all + cp kernel/kernel.bin isodir/boot xorriso -as mkisofs -b boot/limine/limine-bios-cd.bin \ -no-emul-boot -boot-load-size 4 -boot-info-table \ --efi-boot boot/limine/limine-uefi-cd.bin \ -efi-boot-part --efi-boot-image --protective-msdos-label \ isodir -o emuos.iso -qemu: grub +qemu: limine $(QEMU) -no-shutdown -no-reboot --serial stdio -s -m 512 -hda $(OS_NAME).iso install: install-headers install-libraries install-headers: $(MAKE) -C ./kernel/ install-headers - $(MAKE) -C ./libs/libc/ install-headers + $(MAKE) -C ./libc/ install-headers install-libraries: - $(MAKE) -C ./libs/libc/ install-lib + $(MAKE) -C ./libc/ install-lib clean: -@$(MAKE) -C ./kernel/ clean - -@$(MAKE) -C ./libs/libc/ clean + -@$(MAKE) -C ./libc/ clean -@$(RM) $(wildcard *.bin *.a) diff --git a/run-qemu.bat b/run-qemu.bat index 19a5ae8..ddf7afa 100644 --- a/run-qemu.bat +++ b/run-qemu.bat @@ -1,2 +1,2 @@ @echo off -qemu-system-i386 -m 128 -drive format=raw,media=cdrom,file=emuos.iso \ No newline at end of file +qemu-system-x86_64 -m 128 -drive format=raw,media=cdrom,file=emuos.iso \ No newline at end of file diff --git a/setup_sysroot.sh b/setup_sysroot.sh new file mode 100644 index 0000000..5c48677 --- /dev/null +++ b/setup_sysroot.sh @@ -0,0 +1,9 @@ +# Copies include/ header files to sysroot/ + +# creates the needed sysroot folders if non existant +mkdir -p sysroot/usr/include +mkdir -p sysroot/usr/lib + +# copies all needed header files for compiling +cp -r kernel/include/* sysroot/usr/include +cp -r libc/include/* sysroot/usr/include \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 47d94ed4fd724d0e8b7819e7e3d0783c798ea190 Mon Sep 17 00:00:00 2001 From: EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> Date: Mon, 6 May 2024 23:05:13 -0400 Subject: removed isodir/ and grub.cfg from being commited --- grub.cfg | 9 --------- isodir/boot/grub/grub.cfg | 9 --------- isodir/boot/limine/limine.cfg | 6 ------ 3 files changed, 24 deletions(-) delete mode 100644 grub.cfg delete mode 100644 isodir/boot/grub/grub.cfg delete mode 100644 isodir/boot/limine/limine.cfg diff --git a/grub.cfg b/grub.cfg deleted file mode 100644 index 71b0917..0000000 --- a/grub.cfg +++ /dev/null @@ -1,9 +0,0 @@ -set timeout_style=menu -if [ "${timeout}" = 0 ]; then - #set timeout=10 # comment this original - set timeout=0 # add this -fi - -menuentry "emuos" { - multiboot /boot/kernel.bin -} \ No newline at end of file diff --git a/isodir/boot/grub/grub.cfg b/isodir/boot/grub/grub.cfg deleted file mode 100644 index 71b0917..0000000 --- a/isodir/boot/grub/grub.cfg +++ /dev/null @@ -1,9 +0,0 @@ -set timeout_style=menu -if [ "${timeout}" = 0 ]; then - #set timeout=10 # comment this original - set timeout=0 # add this -fi - -menuentry "emuos" { - multiboot /boot/kernel.bin -} \ No newline at end of file diff --git a/isodir/boot/limine/limine.cfg b/isodir/boot/limine/limine.cfg deleted file mode 100644 index dd5e60b..0000000 --- a/isodir/boot/limine/limine.cfg +++ /dev/null @@ -1,6 +0,0 @@ -TIMEOUT=5 - -:emuos - PROTOCOL=limine - KERNEL_PATH=boot:///boot/kernel.bin - KASLR=off \ No newline at end of file -- cgit v1.2.3-70-g09d2 From abaab98bd757cd0818cfcddc983eee25ab7672ed Mon Sep 17 00:00:00 2001 From: EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> Date: Tue, 7 May 2024 11:07:03 -0400 Subject: Made framebuffer class, serial write functions, and finally got makefile to build without having to make clean --- .gitignore | 1 + kernel/arch/x86_64/limine.cpp | 8 ++++++++ kernel/arch/x86_64/serial.cpp | 23 +++++++++++++++++++++++ kernel/framebuffer.cpp | 22 ++++++++++++++++++++++ kernel/include/arch/x86_64/serial.h | 19 +++++++++++++++++++ kernel/include/framebuffer.h | 18 ++++++++++++++++++ kernel/makefile | 19 +++++++++++-------- libc/makefile | 14 +++++++------- libc/putchar.c | 2 ++ makefile | 4 ++-- run-qemu.bat | 2 +- 11 files changed, 114 insertions(+), 18 deletions(-) create mode 100644 kernel/arch/x86_64/serial.cpp create mode 100644 kernel/framebuffer.cpp create mode 100644 kernel/include/arch/x86_64/serial.h create mode 100644 kernel/include/framebuffer.h diff --git a/.gitignore b/.gitignore index ce75dcb..2d6918b 100644 --- a/.gitignore +++ b/.gitignore @@ -19,5 +19,6 @@ misc/ # not important make.png +.clangd .vscode/ diff --git a/kernel/arch/x86_64/limine.cpp b/kernel/arch/x86_64/limine.cpp index 8c67c52..9ea2bbc 100644 --- a/kernel/arch/x86_64/limine.cpp +++ b/kernel/arch/x86_64/limine.cpp @@ -1,6 +1,9 @@ #include #include +#include +#include #include "limine.h" +#include namespace { __attribute__((used, section(".requests"))) @@ -63,7 +66,12 @@ extern "C" void _start() { fb_ptr[i * (framebuffer->pitch / 4) + i] = 0xffffff; } + Framebuffer fb((uint32_t*)framebuffer->address, framebuffer->width, framebuffer->height); + fb.drawpixel(727, 727, 0x9528fd); + printf("video modes: %lx", framebuffer->mode_count); + + kernel_main(); // We're done, just hang... hcf(); diff --git a/kernel/arch/x86_64/serial.cpp b/kernel/arch/x86_64/serial.cpp new file mode 100644 index 0000000..e90bcde --- /dev/null +++ b/kernel/arch/x86_64/serial.cpp @@ -0,0 +1,23 @@ +#include +#include + +#define PORT 0x3f8 + +int is_transmit_empty() { + return inb(PORT + 5) & 0x20; +} + +extern "C" void serial_putchar(char c) { + while (is_transmit_empty() == 0); + outb(PORT, c); +} + +void serial_write(const char* data, size_t size) { + for (size_t i = 0; i < size; i++) { + serial_putchar(data[i]); + } +} + +void serial_writestring(const char* data) { + serial_write(data, strlen(data)); +} \ No newline at end of file diff --git a/kernel/framebuffer.cpp b/kernel/framebuffer.cpp new file mode 100644 index 0000000..a07d61a --- /dev/null +++ b/kernel/framebuffer.cpp @@ -0,0 +1,22 @@ +#include +#include +#include + +Framebuffer::Framebuffer(uint32_t* addr, const uint64_t width, const uint64_t height) + : addr {addr}, width {width}, height {height} { + clear(); +} + +void Framebuffer::clear() { + for (size_t y = 0; y < height; y++) { + for (size_t x = 0; x < width; x++) { + const size_t i = y * width + x; + addr[i] = 0x000000; + } + } +} + +void Framebuffer::drawpixel(const uint64_t x, const uint64_t y, const uint32_t color) { + const size_t pos = y * width + x; + addr[pos] = color; +} \ No newline at end of file diff --git a/kernel/include/arch/x86_64/serial.h b/kernel/include/arch/x86_64/serial.h new file mode 100644 index 0000000..2ee63c5 --- /dev/null +++ b/kernel/include/arch/x86_64/serial.h @@ -0,0 +1,19 @@ +#ifndef SERIAL_H +#define SERIAL_H + +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + +void serial_putchar(char c); +void serial_write(const char* data, size_t size); +void serial_writestring(const char* data); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/kernel/include/framebuffer.h b/kernel/include/framebuffer.h new file mode 100644 index 0000000..6080810 --- /dev/null +++ b/kernel/include/framebuffer.h @@ -0,0 +1,18 @@ +#ifndef FRAMEBUFFER_H +#define FRAMEBUFFER_H + +#include + +class Framebuffer { + private: + uint32_t* addr; + const uint64_t width; + const uint64_t height; + + public: + Framebuffer(uint32_t* addr, const uint64_t width, const uint64_t height); + void clear(); + void drawpixel(const uint64_t x, const uint64_t y, const uint32_t color); +}; + +#endif \ No newline at end of file diff --git a/kernel/makefile b/kernel/makefile index 8c2832d..33ab941 100644 --- a/kernel/makefile +++ b/kernel/makefile @@ -1,8 +1,11 @@ # Kernel makefile -CFLAGS := -ffreestanding -Wall -Wextra -g -std=gnu99 -O2 -Iinclude --sysroot=$(SYSROOT) -CXXFLAGS := -ffreestanding -Wall -Wextra -fno-exceptions -fno-rtti -g -O2 -Iinclude --sysroot=$(SYSROOT) -LDFLAGS := -T arch/$(ARCH)/linker.ld -ffreestanding -g -O2 -Iinclude --sysroot=$(SYSROOT) +CFLAGS := -ffreestanding -Wall -Wextra -g -std=gnu99 -O2 -Iinclude --sysroot=$(SYSROOT) \ + -isystem="/usr/include" +CXXFLAGS := -ffreestanding -Wall -Wextra -fno-exceptions -fno-rtti -g -O2 -Iinclude --sysroot=$(SYSROOT) \ + -isystem="/usr/include" +LDFLAGS := -T arch/$(ARCH)/linker.ld -ffreestanding -g -O2 -Iinclude --sysroot=$(SYSROOT) \ + -isystem="/usr/include" ASMFLAGS := ifeq ($(ARCH),x86_64) @@ -21,7 +24,7 @@ LIBS = -nostdlib -lc -lgcc #Find all the source files CPP_SRCS := $(shell find . -type f -name '*.cpp' -not -path './arch/*') \ $(shell find $(PWD)/kernel/arch/$(ARCH) -type f -name '*.cpp') -#HEADERS := $(shell find $(PWD) -type f -name '*.h') +HEADERS := $(shell find ./include -type f -name '*.h') #ASMFILES := $(shell find $(PWD) -type f -name '*.asm' -prune $(PWD)/arch) \ $(shell find $(PWD)/kernel/arch/$(ARCH) -type f -name '*.asm') @@ -50,11 +53,11 @@ kernel.bin: ${OBJS} $(CXX) ${LDFLAGS} -o $@ $(LINKLST) %.o: %.cpp - $(info [INFO] Compiling $<) +# $(info [INFO] Compiling $<) $(CXX) ${CXXFLAGS} -MMD -MP -c $< -o $@ %.o: %.c - $(info [INFO] Compiling $<) +# $(info [INFO] Compiling $<) $(CC) $(CFLAGS) -MMD -MP -c $< -o $@ %.o: %.asm @@ -67,9 +70,9 @@ kernel.bin: ${OBJS} # crtn.o: # $(NASM) arch/$(ARCH)/crtn.asm $(ASMFLAGS) -o $@ -install-headers: +install-headers: $(HEADERS) cp -r --preserve=timestamps include/. $(SYSROOT)/usr/include clean: $(info [INFO] Cleaning) - $(RM) ${OBJS} $(DEPFILES) \ No newline at end of file + $(RM) ${OBJS} $(DEPFILES) kernel.bin \ No newline at end of file diff --git a/libc/makefile b/libc/makefile index 560efb7..aec21ef 100644 --- a/libc/makefile +++ b/libc/makefile @@ -6,21 +6,21 @@ endif ifndef CFLAGS CFLAGS = -ffreestanding -Wall -Wextra -g -std=gnu11 -O2 -Iinclude - CFLAGS += --sysroot="$(SYSROOT)" - CFLAGS += -isystem="/usr/include" + CFLAGS += --sysroot=$(SYSROOT) + CFLAGS += -isystem $(SYSROOT)/usr/include endif ifndef CXXFLAGS CXXFLAGS = -ffreestanding -Wall -Wextra -fno-exceptions -fno-rtti -D__is_kernel -g -O2 -Iinclude CXXFLAGS += -Iinclude - CXXFLAGS += --sysroot="$(SYSROOT)" - CXXFLAGS += -isystem="/usr/include" + CXXFLAGS += --sysroot=$(SYSROOT) + CXXFLAGS += -isystem $(SYSROOT)/usr/include endif ifndef LDFLAGS LDFLAGS = -T arch/$(ARCH)/linker.ld -ffreestanding -g -O2 -Iinclude - LDFLAGS += --sysroot="$(SYSROOT)" - LDFLAGS += -isystem="/usr/include" + LDFLAGS += --sysroot=$(SYSROOT) + LDFLAGS += -isystem $(SYSROOT)/usr/include endif ifndef SYSROOT @@ -76,4 +76,4 @@ install-lib: libc.a clean: $(info [INFO] Cleaning) - $(RM) ${OBJECTS} $(DEPFILES) \ No newline at end of file + $(RM) ${OBJECTS} $(DEPFILES) libc.a \ No newline at end of file diff --git a/libc/putchar.c b/libc/putchar.c index 48147bf..f0f5783 100644 --- a/libc/putchar.c +++ b/libc/putchar.c @@ -1,9 +1,11 @@ #include //#include +#include int putchar(int ic) { char c = (char) ic; + serial_putchar(c); //terminal_write(&c, sizeof(c)); return ic; } \ No newline at end of file diff --git a/makefile b/makefile index 2581e21..d8535bc 100644 --- a/makefile +++ b/makefile @@ -22,11 +22,11 @@ build-all: kernel/kernel.bin libc/libc.a libc/libc.a: install-headers $(info [INFO] Building libc) - $(MAKE) -C ./libc/ ARCH=$(ARCH) PREFIX=$(PWD) + $(MAKE) -C ./libc/ all kernel/kernel.bin: libc/libc.a install-headers $(info [INFO] Building kernel) - $(MAKE) -C ./kernel/ ARCH=$(ARCH) PREFIX=$(PWD) + $(MAKE) -C ./kernel/ all limine: build-all cp kernel/kernel.bin isodir/boot diff --git a/run-qemu.bat b/run-qemu.bat index ddf7afa..b9c277b 100644 --- a/run-qemu.bat +++ b/run-qemu.bat @@ -1,2 +1,2 @@ @echo off -qemu-system-x86_64 -m 128 -drive format=raw,media=cdrom,file=emuos.iso \ No newline at end of file +qemu-system-x86_64 -m 128 -drive format=raw,media=cdrom,file=emuos.iso -serial stdio \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 975a9ec96e282e437ccc1bdf1e660dcbf4542791 Mon Sep 17 00:00:00 2001 From: EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> Date: Fri, 10 May 2024 01:44:59 -0400 Subject: Added GDT and basic IDT as well as a bitmap drawing function --- bochsrc.bxrc | 6 +- kernel/arch/x86/idt.cpp | 4 +- kernel/arch/x86_64/bitmap_test.h | 308 ++++++++++++++++++++++++++++++++++++ kernel/arch/x86_64/gdt.cpp | 34 ++++ kernel/arch/x86_64/gdt.h | 38 +++++ kernel/arch/x86_64/idt.cpp | 94 +++++++++++ kernel/arch/x86_64/idt.h | 24 +++ kernel/arch/x86_64/isr.asm | 312 +++++++++++++++++++++++++++++++++++++ kernel/arch/x86_64/isr_handler.cpp | 6 + kernel/arch/x86_64/limine.cpp | 48 ++++-- kernel/arch/x86_64/load_desc.asm | 29 ++++ kernel/framebuffer.cpp | 37 +++-- kernel/include/framebuffer.h | 15 +- kernel/makefile | 2 +- run-qemu.bat | 2 +- 15 files changed, 922 insertions(+), 37 deletions(-) create mode 100644 kernel/arch/x86_64/bitmap_test.h create mode 100644 kernel/arch/x86_64/gdt.cpp create mode 100644 kernel/arch/x86_64/gdt.h create mode 100644 kernel/arch/x86_64/idt.cpp create mode 100644 kernel/arch/x86_64/idt.h create mode 100644 kernel/arch/x86_64/isr.asm create mode 100644 kernel/arch/x86_64/isr_handler.cpp create mode 100644 kernel/arch/x86_64/load_desc.asm diff --git a/bochsrc.bxrc b/bochsrc.bxrc index 6bc50da..94e03eb 100644 --- a/bochsrc.bxrc +++ b/bochsrc.bxrc @@ -9,6 +9,8 @@ vga: extension=vbe magic_break: enabled=1 -clock: sync=none, time0=local +clock: sync=realtime, time0=local -cpu: reset_on_triple_fault=0 \ No newline at end of file +cpu: reset_on_triple_fault=0 + +com1: enabled=1, mode=file, dev=misc/bochs.txt \ No newline at end of file diff --git a/kernel/arch/x86/idt.cpp b/kernel/arch/x86/idt.cpp index a8f3ff4..bede1f8 100644 --- a/kernel/arch/x86/idt.cpp +++ b/kernel/arch/x86/idt.cpp @@ -60,13 +60,13 @@ struct idt_entry uint16_t offset_high; }__attribute__((packed)); -struct str_idtr { +struct idtr { uint16_t limit; uint32_t base; }__attribute__((packed)); idt_entry idt[256]; -str_idtr idtr; +idtr idtr; void idt_new_entry(int num, uint32_t offset, uint16_t sel, uint8_t type_attribs) { idt[num].offset_low = (offset & 0xFFFF); diff --git a/kernel/arch/x86_64/bitmap_test.h b/kernel/arch/x86_64/bitmap_test.h new file mode 100644 index 0000000..86f7a97 --- /dev/null +++ b/kernel/arch/x86_64/bitmap_test.h @@ -0,0 +1,308 @@ +#ifndef BITMAP_TEST_H +#define BITMAP_TEST_H + +#include + +const uint32_t emu_bm [] = { + // '2emu, 96x96px + 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x003d3d3d, 0x003d3d3d, 0x003d3d3d, 0x003d3d3d, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x00222222, 0x00222222, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x003d3d3d, 0x003d3d3d, 0x003d3d3d, 0x003d3d3d, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x00222222, 0x00222222, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x006a13d7, 0x006a13d7, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x006a13d7, 0x006a13d7, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x003d3d3d, 0x003d3d3d, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x0040775d, 0x0040775d, 0x0040775d, 0x0040775d, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x003d3d3d, 0x003d3d3d, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x0040775d, 0x0040775d, 0x0040775d, 0x0040775d, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x0040775d, 0x0040775d, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x0040775d, 0x0040775d, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x006a13d7, 0x006a13d7, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x0040775d, 0x0040775d, 0x0040775d, 0x0040775d, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x006a13d7, 0x006a13d7, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x0040775d, 0x0040775d, 0x0040775d, 0x0040775d, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x0040775d, 0x0040775d, 0x0040775d, 0x0040775d, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x0040775d, 0x0040775d, 0x0040775d, 0x0040775d, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x0040775d, 0x0040775d, 0x00386650, 0x00386650, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x0040775d, 0x0040775d, 0x00386650, 0x00386650, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00c59aa6, 0x00c59aa6, 0x00ffd6ba, 0x00ffd6ba, 0x006a13d7, 0x006a13d7, 0x005d0dc0, 0x005d0dc0, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00386650, 0x00386650, 0x00386650, 0x00386650, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00c59aa6, 0x00c59aa6, 0x00ffd6ba, 0x00ffd6ba, 0x006a13d7, 0x006a13d7, 0x005d0dc0, 0x005d0dc0, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00386650, 0x00386650, 0x00386650, 0x00386650, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x005d0dc0, 0x005d0dc0, 0x005d0dc0, 0x005d0dc0, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x005d0dc0, 0x005d0dc0, 0x005d0dc0, 0x005d0dc0, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00956991, 0x00956991, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00956991, 0x00956991, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00956991, 0x00956991, 0x00956991, 0x00956991, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00956991, 0x00956991, 0x00956991, 0x00956991, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00956991, 0x00956991, 0x00956991, 0x00956991, 0x00956991, 0x00956991, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x003d3d3d, 0x003d3d3d, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x00956991, 0x00956991, 0x00956991, 0x00956991, 0x00956991, 0x00956991, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x00c59aa6, 0x00c59aa6, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x00956991, 0x00956991, 0x00956991, 0x00956991, 0x00956991, 0x00956991, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x00222222, 0x00222222, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x001b1b1b, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x00c59aa6, 0x00c59aa6, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00ffd6ba, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x001b1b1b, 0x001b1b1b, 0x00956991, 0x00956991, 0x00956991, 0x00956991, 0x00956991, 0x00956991, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x003d3d3d, 0x003d3d3d, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x001b1b1b, 0x001b1b1b, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00956991, 0x00956991, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x003d3d3d, 0x003d3d3d, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x001b1b1b, 0x001b1b1b, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00956991, 0x00956991, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x0061789d, 0x0061789d, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x0061789d, 0x0061789d, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x0061789d, 0x0061789d, 0x0061789d, 0x0061789d, 0x003d567d, 0x003d567d, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x0061789d, 0x0061789d, 0x0061789d, 0x0061789d, 0x003d567d, 0x003d567d, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x00c59aa6, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x007a0fff, 0x007a0fff, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x0061789d, 0x0061789d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0052a7cc, 0x0052a7cc, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, + 0x007a0fff, 0x007a0fff, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x006a13d7, 0x0061789d, 0x0061789d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0052a7cc, 0x0052a7cc, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, + 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x0061789d, 0x0061789d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0052a7cc, 0x0052a7cc, 0x00ba8ca0, 0x00ba8ca0, 0x00c2c8d3, 0x00c2c8d3, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, + 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x007a0fff, 0x0061789d, 0x0061789d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x003d567d, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c, 0x0052a7cc, 0x0052a7cc, 0x00ba8ca0, 0x00ba8ca0, 0x00c2c8d3, 0x00c2c8d3, 0x0033496c, 0x0033496c, 0x0033496c, 0x0033496c +}; + +const uint32_t red_bm [] = { + // 'Red, 150x198px + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000a01, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000201, 0x00000501, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000501, 0x00000201, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000201, 0x00000201, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000201, 0x00000201, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00020001, 0x00050001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00050001, 0x00020001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00050001, 0x000c0001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x000c0001, 0x00050001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00080001, 0x00150001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x00150001, 0x00080001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000b0001, 0x001e0001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x001e0001, 0x000b0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002d1a20, 0x00260000, 0x00320000, 0x00340000, 0x00320000, 0x00340000, 0x00320000, 0x00340000, 0x00320000, 0x00480014, 0x00460014, 0x00480014, 0x00460014, 0x00480014, 0x00460014, 0x00480014, 0x00460014, 0x00480014, 0x00460014, 0x00480014, 0x00460014, 0x00480014, 0x00460014, 0x00480014, 0x00460014, 0x00340000, 0x00320000, 0x00340000, 0x00320000, 0x00340000, 0x00320000, 0x00340000, 0x00260000, 0x002d1a20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002f1820, 0x00300000, 0x003f0000, 0x003f0000, 0x003f0000, 0x003f0000, 0x003f0000, 0x003f0000, 0x003f0000, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x003f0000, 0x003f0000, 0x003f0000, 0x003f0000, 0x003f0000, 0x003f0000, 0x003f0000, 0x00300000, 0x002f1820, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00321720, 0x003f0007, 0x00510007, 0x00510007, 0x00510007, 0x00510007, 0x00510007, 0x00510007, 0x00510007, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x00510007, 0x00510007, 0x00510007, 0x00510007, 0x00510007, 0x00510007, 0x00510007, 0x003f0007, 0x00321720, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00351520, 0x00570018, 0x006c0018, 0x006c0018, 0x006c0018, 0x006c0018, 0x006c0018, 0x006c0018, 0x006c0018, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x006c0018, 0x006c0018, 0x006c0018, 0x006c0018, 0x006c0018, 0x006c0018, 0x006c0018, 0x00570018, 0x00351520, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00361520, 0x006f0529, 0x00860029, 0x00860029, 0x00860029, 0x00860029, 0x00860029, 0x00860029, 0x00860029, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00860029, 0x00860029, 0x00860029, 0x00860029, 0x00860029, 0x00860029, 0x00860029, 0x006e0629, 0x00381420, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00391320, 0x00831339, 0x009d0639, 0x009d0639, 0x009d0639, 0x009d0639, 0x009d0639, 0x009d0639, 0x009d0639, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x009d0639, 0x009d0639, 0x009d0639, 0x009d0639, 0x009d0639, 0x009d0639, 0x009d0639, 0x00831339, 0x00391320, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x003b1220, 0x00951e46, 0x00ae1146, 0x00ae1146, 0x00ae1146, 0x00ae1146, 0x00ae1146, 0x00ae1146, 0x00ae1146, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ae1146, 0x00ae1146, 0x00ae1146, 0x00ae1146, 0x00ae1146, 0x00ae1146, 0x00ae1146, 0x00951e46, 0x003b1220, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00070000, 0x00120000, 0x00170000, 0x00170000, 0x00170000, 0x00170000, 0x00170000, 0x00170000, 0x00170000, 0x00361712, 0x00361712, 0x00361712, 0x00361712, 0x00361712, 0x00361712, 0x00361712, 0x004d0c12, 0x00a8213f, 0x00bf163f, 0x00bf163f, 0x00bf163f, 0x00bf163f, 0x00bf163f, 0x00bf163f, 0x00bf163f, 0x00de355e, 0x00de355e, 0x00de355e, 0x00de355e, 0x00de355e, 0x00de355e, 0x00de355e, 0x00df355c, 0x00e0345a, 0x00e23459, 0x00e23459, 0x00e23459, 0x00e23459, 0x00e23459, 0x00e23459, 0x00e23459, 0x00c3153a, 0x00c3153a, 0x00c3153a, 0x00c3153a, 0x00c3153a, 0x00c3153a, 0x00c3153a, 0x00ac1f3f, 0x0051081b, 0x003b1220, 0x003b1220, 0x003b1220, 0x003b1220, 0x003b1220, 0x003b1220, 0x003b1220, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x00150001, 0x00080001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00120000, 0x00320000, 0x00430000, 0x00430000, 0x00430000, 0x00430000, 0x00500000, 0x005d0000, 0x00630600, 0x00832615, 0x00832615, 0x00832615, 0x00832615, 0x00832615, 0x00832615, 0x00832615, 0x00931e15, 0x00b00f15, 0x00c00715, 0x00c00715, 0x00c00715, 0x00c00715, 0x00c00715, 0x00c00715, 0x00c00715, 0x00c00715, 0x00c00715, 0x00c00715, 0x00c00715, 0x00c00715, 0x00c00715, 0x00c00715, 0x00c20712, 0x00c90509, 0x00cc0406, 0x00cc0406, 0x00cc0406, 0x00cc0406, 0x00cc0406, 0x00cc0406, 0x00cc0406, 0x00cc0406, 0x00cc0406, 0x00cc0406, 0x00cc0406, 0x00cc0406, 0x00cc0406, 0x00cc0406, 0x00bd0914, 0x009f1232, 0x00901740, 0x00901740, 0x00901740, 0x00901740, 0x00901740, 0x00901740, 0x00901740, 0x00500000, 0x00500000, 0x00500000, 0x00500000, 0x00500000, 0x00500000, 0x00500000, 0x003c0000, 0x00150001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00170000, 0x00430000, 0x005a0000, 0x005a0000, 0x005a0000, 0x005e0000, 0x006e0000, 0x007a0000, 0x00810400, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x00a51807, 0x00bb0c07, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00cb0502, 0x00d20300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00c90507, 0x00b3092d, 0x00a80b40, 0x00a80b40, 0x00a80b40, 0x00a80b40, 0x00a80b40, 0x00a80b40, 0x00a80b40, 0x00680000, 0x00680000, 0x00680000, 0x00680000, 0x00680000, 0x00680000, 0x00680000, 0x004f0000, 0x001c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00170000, 0x00430000, 0x005a0000, 0x005a0000, 0x005a0000, 0x006a0000, 0x007a0000, 0x00870a00, 0x008e1100, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x00a51807, 0x00bb0c07, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c90604, 0x00ce0500, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00c5060d, 0x00af0b2e, 0x00a40d40, 0x00a40d40, 0x00a40d40, 0x00a40d40, 0x00a40d40, 0x00a40d40, 0x00a40d40, 0x006b0007, 0x006b0007, 0x006b0007, 0x006b0007, 0x006b0007, 0x006b0007, 0x006b0007, 0x00510007, 0x001a0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00170000, 0x00430000, 0x005a0000, 0x005a0000, 0x00690000, 0x007a0000, 0x008b0e00, 0x00971a04, 0x009e210b, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x00a51807, 0x00bb0c07, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70706, 0x00c90506, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00be0912, 0x00a80e32, 0x009d1140, 0x009d1140, 0x009d1140, 0x009d1140, 0x009d1140, 0x009d1140, 0x009d1140, 0x00750018, 0x00750018, 0x00750018, 0x00750018, 0x00750018, 0x00750018, 0x00750018, 0x005d0018, 0x00190001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00170000, 0x00430000, 0x005e0000, 0x006a0000, 0x007a0000, 0x008c0f00, 0x009c1f09, 0x00a92c16, 0x00af321c, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x00a51807, 0x00bb0c07, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c50709, 0x00c2080d, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00b60b1b, 0x009f1234, 0x00941540, 0x00941540, 0x00941540, 0x00941540, 0x00941540, 0x00941540, 0x00941540, 0x007d0029, 0x007d0029, 0x007d0029, 0x007d0029, 0x007d0029, 0x007d0029, 0x007d0029, 0x00680929, 0x00160001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00170000, 0x00500000, 0x006e0000, 0x007a0000, 0x008b0e00, 0x009c1f09, 0x00ac2f19, 0x00b93c26, 0x00c0432d, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x00a51807, 0x00bb0c07, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c2080d, 0x00bb0915, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00ac0f24, 0x00961637, 0x008a1a40, 0x008a1a40, 0x008a1a40, 0x008a1a40, 0x008a1a40, 0x008a1a40, 0x008a1a40, 0x00831339, 0x00831339, 0x00831339, 0x00831339, 0x00831339, 0x00831339, 0x00831339, 0x00711c39, 0x00130001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00170000, 0x005d0000, 0x007a0000, 0x00870a00, 0x00971a04, 0x00a92c16, 0x00b93c26, 0x00c54832, 0x00cc4f39, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x00a51807, 0x00bb0c07, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c00810, 0x00b30c20, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00a1122e, 0x008a1b3b, 0x007f2040, 0x007f2040, 0x007f2040, 0x007f2040, 0x007f2040, 0x007f2040, 0x007f2040, 0x00852646, 0x00852646, 0x00852646, 0x00852646, 0x00852646, 0x00852646, 0x00852646, 0x00762e46, 0x00100001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00170000, 0x00630600, 0x00810400, 0x008e1100, 0x009e210b, 0x00af321c, 0x00c0432d, 0x00cc4f39, 0x00d35640, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x00a51807, 0x00bb0c07, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bd0914, 0x00a90e2d, 0x009f1137, 0x00a11039, 0x009f1137, 0x00a11039, 0x009f1137, 0x00a11039, 0x009f1137, 0x00a11039, 0x009f1137, 0x00a11039, 0x009f1137, 0x00a11039, 0x009f1137, 0x00a11039, 0x0094163b, 0x007f203e, 0x00722640, 0x00742640, 0x00722640, 0x00742640, 0x00722640, 0x00742640, 0x00722640, 0x0081334d, 0x007f334d, 0x0081334d, 0x007f334d, 0x0081334d, 0x007f334d, 0x0081334d, 0x00733a4d, 0x000e0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00361712, 0x00832615, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x00a51807, 0x00bb0c07, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00ba0a17, 0x00810017, 0x00730027, 0x00740029, 0x00730027, 0x00740029, 0x00730027, 0x00740029, 0x00730027, 0x00740029, 0x00730027, 0x00740029, 0x00730027, 0x00740029, 0x00730027, 0x00740029, 0x00680025, 0x00520622, 0x00460d20, 0x00470c20, 0x00460d20, 0x00470c20, 0x00460d20, 0x00470c20, 0x00460d20, 0x00470c20, 0x00460d20, 0x00470c20, 0x00460d20, 0x00470c20, 0x00460d20, 0x00470c20, 0x003d1120, 0x002a1b20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00361712, 0x00832615, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x00a51807, 0x00bb0c07, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b70b1b, 0x00770024, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x005c0032, 0x00460c25, 0x003b1220, 0x003b1220, 0x003b1220, 0x003b1220, 0x003b1220, 0x003b1220, 0x003b1220, 0x003b1220, 0x003b1220, 0x003b1220, 0x003b1220, 0x003b1220, 0x003b1220, 0x003b1220, 0x00341620, 0x00271c20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00361712, 0x00832615, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x00a51807, 0x00bb0c07, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b40b1e, 0x006f002e, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x0051013c, 0x003b1129, 0x002f1820, 0x002f1820, 0x002f1820, 0x002f1820, 0x002f1820, 0x002f1820, 0x002f1820, 0x002f1820, 0x002f1820, 0x002f1820, 0x002f1820, 0x002f1820, 0x002f1820, 0x002f1820, 0x002b1a20, 0x00241e20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00361712, 0x00832615, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x00a51807, 0x00bb0c07, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b20c22, 0x00680037, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00470545, 0x0031152c, 0x00261d20, 0x00261d20, 0x00261d20, 0x00261d20, 0x00261d20, 0x00261d20, 0x00261d20, 0x00261d20, 0x00261d20, 0x00261d20, 0x00261d20, 0x00261d20, 0x00261d20, 0x00261d20, 0x00241e20, 0x00211f20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00361712, 0x00832615, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x00a51807, 0x00bb0c07, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00af0d24, 0x00600040, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x003d084c, 0x00271930, 0x001c2220, 0x001c2220, 0x001c2220, 0x001c2220, 0x001c2220, 0x001c2220, 0x001c2220, 0x001c2220, 0x001c2220, 0x001c2220, 0x001c2220, 0x001c2220, 0x001c2220, 0x001c2220, 0x001d2120, 0x001f2120, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00361712, 0x00832615, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x00a51807, 0x00bb0c07, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00ad0d27, 0x005b0045, 0x00420165, 0x00430165, 0x00420165, 0x00430165, 0x00420165, 0x00430165, 0x00420165, 0x00430165, 0x00420165, 0x00430165, 0x00420165, 0x00430165, 0x00420165, 0x00430165, 0x00360b53, 0x00211c32, 0x00152620, 0x00162520, 0x00152620, 0x00162520, 0x00152620, 0x00162520, 0x00152620, 0x00162520, 0x00152620, 0x00162520, 0x00152620, 0x00162520, 0x00152620, 0x00162520, 0x00182420, 0x001d2120, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00361712, 0x00832615, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x009a1d07, 0x00a51807, 0x00bb0c07, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00ac0d29, 0x0058004b, 0x003d036a, 0x003f026a, 0x003d036a, 0x003f026a, 0x003d036a, 0x003f026a, 0x003d036a, 0x003f026a, 0x003d036a, 0x003f026a, 0x003d036a, 0x003f026a, 0x003d036a, 0x003f026a, 0x00320c59, 0x001d1e33, 0x00112820, 0x00122720, 0x00112820, 0x00122720, 0x00112820, 0x00122720, 0x00112820, 0x00122720, 0x00112820, 0x00122720, 0x00112820, 0x00122720, 0x00112820, 0x00122720, 0x00152620, 0x001c2220, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000201, 0x00000201, 0x00000301, 0x00000201, 0x00000201, 0x00020001, 0x00050001, 0x00080001, 0x000b0001, 0x002d1a20, 0x002f1820, 0x00321720, 0x00351520, 0x00381420, 0x00391320, 0x003b1220, 0x004d0c12, 0x00931e15, 0x00a51807, 0x00a51807, 0x00a51807, 0x00a51807, 0x00a51807, 0x00a51807, 0x00a51807, 0x00a51807, 0x00a51807, 0x00a51807, 0x00a51807, 0x00a51807, 0x00a51807, 0x00a51807, 0x00ac130b, 0x00bd0912, 0x00c40515, 0x00c20615, 0x00c10715, 0x00be0815, 0x00bb0915, 0x00b90b15, 0x00b60c15, 0x00b30e15, 0x00b00f15, 0x00ad1115, 0x00ab1215, 0x00a91315, 0x00a61415, 0x00a51515, 0x008f1b32, 0x0040074c, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x00211557, 0x00112432, 0x00082c20, 0x00082c20, 0x00082c20, 0x00082c20, 0x00082c20, 0x00082c20, 0x00082c20, 0x00082c20, 0x00082c20, 0x00082c20, 0x00082c20, 0x00082c20, 0x00082c20, 0x00082c20, 0x000e2920, 0x001a2320, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000201, 0x00000601, 0x00000701, 0x00000501, 0x00000201, 0x00050001, 0x000c0001, 0x00150001, 0x001e0001, 0x00260000, 0x00300000, 0x003f0007, 0x00570018, 0x006f0529, 0x00831339, 0x00951e46, 0x00a8213f, 0x00b00f15, 0x00bb0c07, 0x00bb0c07, 0x00bb0c07, 0x00bb0c07, 0x00bb0c07, 0x00bb0c07, 0x00bb0c07, 0x00bb0c07, 0x00bb0c07, 0x00bb0c07, 0x00bb0c07, 0x00bb0c07, 0x00bb0c07, 0x00bb0c07, 0x00bb0a12, 0x00be0527, 0x00bd0332, 0x00ba0532, 0x00b40732, 0x00ad0b32, 0x00a60f32, 0x009e1332, 0x00941832, 0x006c0012, 0x00620112, 0x00590512, 0x00520912, 0x004d0c12, 0x00470f12, 0x00431112, 0x00321625, 0x00262e5c, 0x0016336f, 0x0016336f, 0x0016336f, 0x0016336f, 0x0016336f, 0x0016336f, 0x0016336f, 0x00324f8b, 0x00324f8b, 0x00324f8b, 0x00324f8b, 0x00324f8b, 0x00324f8b, 0x00324f8b, 0x0030537b, 0x002a5c5d, 0x0027604d, 0x0027604d, 0x0027604d, 0x0027604d, 0x0027604d, 0x0027604d, 0x0027604d, 0x0027604d, 0x0027604d, 0x0027604d, 0x0027604d, 0x0027604d, 0x0027604d, 0x0027604d, 0x00315b4d, 0x00374641, 0x00414141, 0x00414141, 0x00414141, 0x00414141, 0x00414141, 0x00414141, 0x00414141, 0x004b4b4b, 0x004b4b4b, 0x004b4b4b, 0x004b4b4b, 0x004b4b4b, 0x004b4b4b, 0x004b4b4b, 0x004b4b4b, 0x002d2d2d, 0x002f2f2f, 0x00343434, 0x003a3a3a, 0x00414141, 0x00474747, 0x004c4c4c, 0x004f4f4f, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00340000, 0x003f0000, 0x00510007, 0x006c0018, 0x00860029, 0x009d0639, 0x00ae1146, 0x00bf163f, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c40515, 0x00bd0332, 0x00b70340, 0x00b30540, 0x00ac0940, 0x00a40d40, 0x00981340, 0x008d1940, 0x00821e40, 0x00550520, 0x00490b20, 0x003d1120, 0x00341620, 0x002b1a20, 0x00241e20, 0x00202020, 0x0013242e, 0x00042f51, 0x0000325f, 0x0000325f, 0x0000325f, 0x0000325f, 0x0000325f, 0x0000325f, 0x0000325f, 0x00003865, 0x00003865, 0x00003865, 0x00003865, 0x00003865, 0x00003865, 0x00003865, 0x00003b57, 0x0000403a, 0x0000432c, 0x0000432c, 0x0000432c, 0x0000432c, 0x0000432c, 0x0000432c, 0x0000432c, 0x0000432c, 0x0000432c, 0x0000432c, 0x0000432c, 0x0000432c, 0x0000432c, 0x0000432c, 0x000a3d2c, 0x001c2d27, 0x00272727, 0x00272727, 0x00272727, 0x00272727, 0x00272727, 0x00272727, 0x00272727, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00242424, 0x00252525, 0x00282828, 0x002a2a2a, 0x002e2e2e, 0x00303030, 0x00333333, 0x00343434, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00340000, 0x003f0000, 0x00510007, 0x006c0018, 0x00860029, 0x009d0639, 0x00ae1146, 0x00bf163f, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c20615, 0x00ba0532, 0x00b30540, 0x00ad0840, 0x00a80b40, 0x009f0f40, 0x00941540, 0x00891b40, 0x007c2140, 0x00510720, 0x00440d20, 0x00391320, 0x002f1820, 0x00271c20, 0x00202020, 0x001c2220, 0x000f262e, 0x00002748, 0x00002956, 0x00002956, 0x00002956, 0x00002956, 0x00002956, 0x00002956, 0x00002956, 0x00002e5b, 0x00002e5b, 0x00002e5b, 0x00002e5b, 0x00002e5b, 0x00002e5b, 0x00002e5b, 0x0000314d, 0x00003630, 0x00003922, 0x00003922, 0x00003922, 0x00003922, 0x00003922, 0x00003922, 0x00003922, 0x00003922, 0x00003922, 0x00003922, 0x00003922, 0x00003922, 0x00003922, 0x00003922, 0x00003322, 0x001e2f29, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001f1f1f, 0x001e1e1e, 0x001b1b1b, 0x00181818, 0x00141414, 0x00111111, 0x000e0e0e, 0x000c0c0c, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00340000, 0x003f0000, 0x00510007, 0x006c0018, 0x00860029, 0x009d0639, 0x00ae1146, 0x00bf163f, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c10715, 0x00b40732, 0x00ac0940, 0x00a80b40, 0x00a10f40, 0x00981340, 0x008f1840, 0x00821e40, 0x00772440, 0x004a0b20, 0x003f1020, 0x00321720, 0x00281c20, 0x00202020, 0x00192420, 0x00152620, 0x000a292e, 0x00012f50, 0x0000315e, 0x0000315e, 0x0000315e, 0x0000315e, 0x0000315e, 0x0000315e, 0x0000315e, 0x0028618e, 0x0028618e, 0x0028618e, 0x0028618e, 0x0028618e, 0x0028618e, 0x0028618e, 0x00286480, 0x00286963, 0x00286c55, 0x00286c55, 0x00286c55, 0x00286c55, 0x00286c55, 0x00286c55, 0x00286c55, 0x00286c55, 0x00286c55, 0x00286c55, 0x00286c55, 0x00286c55, 0x00286c55, 0x00286c55, 0x00336655, 0x0061726c, 0x006c6c6c, 0x006c6c6c, 0x006c6c6c, 0x006c6c6c, 0x006c6c6c, 0x006c6c6c, 0x006c6c6c, 0x00232323, 0x00232323, 0x00232323, 0x00232323, 0x00232323, 0x00232323, 0x00232323, 0x00232323, 0x002e2e2e, 0x00292929, 0x00202020, 0x00141414, 0x00070707, 0x00000000, 0x00000000, 0x00000000, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00340000, 0x003f0000, 0x00510007, 0x006c0018, 0x00860029, 0x009d0639, 0x00ae1146, 0x00bf163f, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00be0815, 0x00ad0b32, 0x00a40d40, 0x009f0f40, 0x00981340, 0x008f1840, 0x00851d40, 0x00792340, 0x006e2840, 0x00420f20, 0x00351520, 0x002a1b20, 0x00202020, 0x00182420, 0x00112820, 0x000c2a20, 0x00042c2e, 0x00215473, 0x001b5481, 0x001b5481, 0x001b5481, 0x001b5481, 0x001b5481, 0x001b5481, 0x001b5481, 0x007eb7e4, 0x007eb7e4, 0x007eb7e4, 0x007eb7e4, 0x007eb7e4, 0x007eb7e4, 0x007eb7e4, 0x007ebad6, 0x007ebfb9, 0x007ec2ab, 0x007ec2ab, 0x007ec2ab, 0x007ec2ab, 0x007ec2ab, 0x007ec2ab, 0x007ec2ab, 0x007ec2ab, 0x007ec2ab, 0x007ec2ab, 0x007ec2ab, 0x007ec2ab, 0x007ec2ab, 0x007ec2ab, 0x0089bcab, 0x00c8d9d3, 0x00d3d3d3, 0x00d3d3d3, 0x00d3d3d3, 0x00d3d3d3, 0x00d3d3d3, 0x00d3d3d3, 0x00d3d3d3, 0x008a8a8a, 0x008a8a8a, 0x008a8a8a, 0x008a8a8a, 0x008a8a8a, 0x008a8a8a, 0x008a8a8a, 0x008a8a8a, 0x00585858, 0x004f4f4f, 0x003f3f3f, 0x002b2b2b, 0x00141414, 0x00000000, 0x00000000, 0x00000000, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00340000, 0x003f0000, 0x00510007, 0x006c0018, 0x00860029, 0x009d0639, 0x00ae1146, 0x00bf163f, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bb0915, 0x00a60f32, 0x00981340, 0x00941540, 0x008f1840, 0x00851d40, 0x007b2240, 0x00702840, 0x00632e40, 0x00381420, 0x002b1a20, 0x00202020, 0x00162520, 0x000e2920, 0x00072d20, 0x00032f20, 0x00002f2e, 0x00578eac, 0x00548dba, 0x00548dba, 0x00548dba, 0x00548dba, 0x00548dba, 0x00548dba, 0x00548dba, 0x00b1eaff, 0x00b1eaff, 0x00b1eaff, 0x00b1eaff, 0x00b1eaff, 0x00b1eaff, 0x00b1eaff, 0x00b1edff, 0x00b1f2ec, 0x00b1f5de, 0x00b1f5de, 0x00b1f5de, 0x00b1f5de, 0x00b1f5de, 0x00b1f5de, 0x00b1f5de, 0x00b1f5de, 0x00b1f5de, 0x00b1f5de, 0x00b1f5de, 0x00b1f5de, 0x00b1f5de, 0x00b1f5de, 0x00bcefde, 0x00f4ffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00e6e6e6, 0x00e6e6e6, 0x00e6e6e6, 0x00e6e6e6, 0x00e6e6e6, 0x00e6e6e6, 0x00e6e6e6, 0x00e6e6e6, 0x00979797, 0x008b8b8b, 0x00757575, 0x00585858, 0x00383838, 0x001b1b1b, 0x00050505, 0x00000000, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00340000, 0x003f0000, 0x00510007, 0x006c0018, 0x00860029, 0x009d0639, 0x00ae1146, 0x00bf163f, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b90b15, 0x009e1332, 0x008d1940, 0x00891b40, 0x00821e40, 0x00792340, 0x00702840, 0x00642d40, 0x00583440, 0x002d1a20, 0x00202020, 0x00152620, 0x000b2b20, 0x00013020, 0x00003320, 0x00003520, 0x0000332e, 0x008fcbe7, 0x008fc8f5, 0x008fc8f5, 0x008fc8f5, 0x008fc8f5, 0x008fc8f5, 0x008fc8f5, 0x008fc8f5, 0x00a7e0ff, 0x00a7e0ff, 0x00a7e0ff, 0x00a7e0ff, 0x00a7e0ff, 0x00a7e0ff, 0x00a7e0ff, 0x00a7e3ff, 0x00a7e8e2, 0x00a7ebd4, 0x00a7ebd4, 0x00a7ebd4, 0x00a7ebd4, 0x00a7ebd4, 0x00a7ebd4, 0x00a7ebd4, 0x00a7ebd4, 0x00a7ebd4, 0x00a7ebd4, 0x00a7ebd4, 0x00a7ebd4, 0x00a7ebd4, 0x00a7ebd4, 0x00b2e5d4, 0x00f4ffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00d7d7d7, 0x00c9c9c9, 0x00adadad, 0x008a8a8a, 0x00646464, 0x00404040, 0x00252525, 0x00171717, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00340000, 0x003f0000, 0x00510007, 0x006c0018, 0x00860029, 0x009d0639, 0x00ae1146, 0x00bf163f, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b60c15, 0x00941832, 0x00821e40, 0x007c2140, 0x00772440, 0x006e2840, 0x00632e40, 0x00593340, 0x004d3a40, 0x00202020, 0x00132620, 0x000a2b20, 0x00003120, 0x00003520, 0x00003920, 0x00003b20, 0x0000382e, 0x00b2f2ff, 0x00b5eeff, 0x00b5eeff, 0x00b5eeff, 0x00b5eeff, 0x00b5eeff, 0x00b5eeff, 0x00b5eeff, 0x0086bfec, 0x0086bfec, 0x0086bfec, 0x0086bfec, 0x0086bfec, 0x0086bfec, 0x0086bfec, 0x0086c2de, 0x0086c7c1, 0x0086cab3, 0x0086cab3, 0x0086cab3, 0x0086cab3, 0x0086cab3, 0x0086cab3, 0x0086cab3, 0x0086cab3, 0x0086cab3, 0x0086cab3, 0x0086cab3, 0x0086cab3, 0x0086cab3, 0x0086cab3, 0x0091c4b3, 0x00f4ffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00f0f0f0, 0x00d2d2d2, 0x00ababab, 0x00818181, 0x005a5a5a, 0x003d3d3d, 0x002d2d2d, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b30e15, 0x006c0012, 0x00550520, 0x00510720, 0x004a0b20, 0x00420f20, 0x00361520, 0x002d1a20, 0x00202020, 0x00273a34, 0x0022483b, 0x00245947, 0x00296f57, 0x00328569, 0x003d9879, 0x0044a886, 0x004ea99a, 0x008ed1eb, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093cfeb, 0x0093d4ce, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0086cab3, 0x008dd1ba, 0x009adec7, 0x00aaeed7, 0x00bbffe8, 0x00ccfff9, 0x00d2ffff, 0x00ddffff, 0x00f4ffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00e2e2e2, 0x00f4f4f4, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00d8d8d8, 0x00a9a9a9, 0x008a8a8a, 0x00595959, 0x00434343, 0x00252525, 0x00131313, 0x001a1a1a, 0x00393939, 0x00606060, 0x007b7b7b, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b00f15, 0x00620112, 0x00490b20, 0x00440d20, 0x003f1020, 0x00351520, 0x002b1a20, 0x00202020, 0x00132620, 0x001c4034, 0x00174e3b, 0x00175f47, 0x001e7457, 0x00278b69, 0x00309e79, 0x0039ad86, 0x0044ae9a, 0x008bd3eb, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093cfeb, 0x0093d4ce, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0086cab3, 0x008dd1ba, 0x009adec7, 0x00aaeed7, 0x00bbffe8, 0x00ccfff9, 0x00d2ffff, 0x00ddffff, 0x00f4ffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00e2e2e2, 0x00f4f4f4, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00d8d8d8, 0x00a9a9a9, 0x008a8a8a, 0x00626262, 0x004b4b4b, 0x002b2b2b, 0x00151515, 0x00181818, 0x00333333, 0x00585858, 0x00727272, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00ad1115, 0x00590512, 0x003d1120, 0x00391320, 0x00321720, 0x002a1b20, 0x00202020, 0x00152620, 0x00082c20, 0x00114634, 0x000b533b, 0x000c6547, 0x00127a57, 0x001a9169, 0x0025a479, 0x002eb386, 0x003cb29a, 0x0088d4eb, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093cfeb, 0x0093d4ce, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0086cab3, 0x008dd1ba, 0x009adec7, 0x00aaeed7, 0x00bbffe8, 0x00ccfff9, 0x00d2ffff, 0x00ddffff, 0x00f4ffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00e2e2e2, 0x00f4f4f4, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00d8d8d8, 0x00a9a9a9, 0x008a8a8a, 0x00737373, 0x005a5a5a, 0x00343434, 0x00181818, 0x00151515, 0x002a2a2a, 0x00494949, 0x00606060, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00ab1215, 0x00520912, 0x00341620, 0x002f1820, 0x00281c20, 0x00202020, 0x00162520, 0x000b2b20, 0x00003120, 0x00064c34, 0x0002583b, 0x00026a47, 0x00087f57, 0x00119669, 0x001aaa79, 0x0022b986, 0x0035b69a, 0x0085d6eb, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093cfeb, 0x0093d4ce, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0086cab3, 0x008dd1ba, 0x009adec7, 0x00aaeed7, 0x00bbffe8, 0x00ccfff9, 0x00d2ffff, 0x00ddffff, 0x00f4ffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00e2e2e2, 0x00f4f4f4, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00d8d8d8, 0x00a9a9a9, 0x008a8a8a, 0x008a8a8a, 0x006d6d6d, 0x00414141, 0x001d1d1d, 0x00101010, 0x001d1d1d, 0x00363636, 0x004a4a4a, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00a81315, 0x004d0c12, 0x002b1a20, 0x00271c20, 0x00202020, 0x00182420, 0x000e2920, 0x00013020, 0x00003520, 0x00005034, 0x00005d3b, 0x00006f47, 0x00008457, 0x00089a69, 0x0011ae79, 0x001abd86, 0x002eb99a, 0x0082d7eb, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093cfeb, 0x0093d4ce, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0086cab3, 0x008dd1ba, 0x009adec7, 0x00aaeed7, 0x00bbffe8, 0x00ccfff9, 0x00d2ffff, 0x00ddffff, 0x00f4ffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00e2e2e2, 0x00f4f4f4, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00d8d8d8, 0x00a9a9a9, 0x008a8a8a, 0x00a2a2a2, 0x00818181, 0x004f4f4f, 0x00222222, 0x000b0b0b, 0x000f0f0f, 0x00222222, 0x00323232, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00a61415, 0x00470f12, 0x00241e20, 0x00202020, 0x00192420, 0x00112820, 0x00072d20, 0x00003320, 0x00003920, 0x00005334, 0x0000603b, 0x00007247, 0x00008857, 0x00019e69, 0x000cb179, 0x0013c186, 0x0028bc9a, 0x0081d8eb, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093cfeb, 0x0093d4ce, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0086cab3, 0x008dd1ba, 0x009adec7, 0x00aaeed7, 0x00bbffe8, 0x00ccfff9, 0x00d2ffff, 0x00ddffff, 0x00f4ffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00e2e2e2, 0x00f4f4f4, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00d8d8d8, 0x00a9a9a9, 0x008a8a8a, 0x00b9b9b9, 0x00949494, 0x005c5c5c, 0x00262626, 0x00070707, 0x00020202, 0x000f0f0f, 0x001b1b1b, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00a51515, 0x00431112, 0x00202020, 0x001c2220, 0x00152620, 0x000c2a20, 0x00032f20, 0x00003520, 0x00003b20, 0x00005634, 0x0000623b, 0x00007447, 0x00008a57, 0x0000a069, 0x0006b479, 0x000fc386, 0x0026bd9a, 0x0080d9eb, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093cfeb, 0x0093d4ce, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0093d7c0, 0x0086cab3, 0x008dd1ba, 0x009adec7, 0x00aaeed7, 0x00bbffe8, 0x00ccfff9, 0x00d2ffff, 0x00ddffff, 0x00f4ffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00e2e2e2, 0x00f4f4f4, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00d8d8d8, 0x00a9a9a9, 0x008a8a8a, 0x00cacaca, 0x00a3a3a3, 0x00656565, 0x002a2a2a, 0x00030303, 0x00000000, 0x00000000, 0x000a0a0a, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000201, 0x00000201, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000501, 0x00000801, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00a21619, 0x0039141c, 0x0013242e, 0x000f262e, 0x000a292e, 0x00042c2e, 0x00002f2e, 0x0000332e, 0x0000382e, 0x00005142, 0x00005d49, 0x00006d55, 0x00008165, 0x000b9677, 0x0015a987, 0x0020b794, 0x0032b5a5, 0x0085d5ee, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ceee, 0x0093d2d9, 0x0093d4ce, 0x0093d4ce, 0x0093d4ce, 0x0093d4ce, 0x0093d4ce, 0x0093d4ce, 0x0093d4ce, 0x0086c7c1, 0x008dcec8, 0x009adbd5, 0x00aaebe5, 0x00bbfcf6, 0x00ccffff, 0x00d2ffff, 0x00dbffff, 0x00ebffff, 0x00f4ffff, 0x00f4ffff, 0x00f4ffff, 0x00f4ffff, 0x00f4ffff, 0x00f4ffff, 0x00f4ffff, 0x00f4ffff, 0x00f4ffff, 0x00f4ffff, 0x00f4ffff, 0x00f4ffff, 0x00f4ffff, 0x00f4ffff, 0x00f4ffff, 0x00d7e5f0, 0x00e9f7ff, 0x00f4ffff, 0x00f4ffff, 0x00f4ffff, 0x00cddbe6, 0x009eacb7, 0x007f8d98, 0x00c8d6e1, 0x00a0aeb9, 0x00606e79, 0x00212f3a, 0x00000510, 0x0000030e, 0x0000030e, 0x0000020b, 0x001d2124, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000201, 0x00000601, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000801, 0x00000901, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x009d1720, 0x00281832, 0x0000294b, 0x00002a4b, 0x00002b4b, 0x00002c4b, 0x00002d4b, 0x00002f4b, 0x0000304b, 0x002e718b, 0x002b738b, 0x0028748b, 0x0025768b, 0x0022778b, 0x0021788b, 0x0020798b, 0x0024768e, 0x006fafd5, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093cdf5, 0x0093ceee, 0x0093cfeb, 0x0093cfeb, 0x0093cfeb, 0x0093cfeb, 0x0093cfeb, 0x0093cfeb, 0x0093cfeb, 0x0093cfeb, 0x0093cfeb, 0x0093cfeb, 0x0093cfeb, 0x0093cfeb, 0x0093cfeb, 0x0093cfeb, 0x0096cdeb, 0x009ccaeb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x009ec9eb, 0x00c0ebff, 0x009ac5e7, 0x005f8aac, 0x00265173, 0x00032e50, 0x00002648, 0x00042f51, 0x00183851, 0x0018222b, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x009a1824, 0x00201a3c, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x00b5eeff, 0x008fc8f5, 0x00548dba, 0x001b5481, 0x0000315e, 0x00002956, 0x0000325f, 0x000f3a5c, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000201, 0x00000501, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000901, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x009a1824, 0x00201a3c, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x00b5eeff, 0x008fc8f5, 0x00548dba, 0x001b5481, 0x0000315e, 0x00002956, 0x0000325f, 0x000f3a5c, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000201, 0x00000201, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000501, 0x00000801, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x009a1824, 0x00201a3c, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x00b5eeff, 0x008fc8f5, 0x00548dba, 0x001b5481, 0x0000315e, 0x00002956, 0x0000325f, 0x000f3a5c, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00020001, 0x00050001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00010101, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x009a1824, 0x00201a3c, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x00b5eeff, 0x008fc8f5, 0x00548dba, 0x001b5481, 0x0000315e, 0x00002956, 0x0000325f, 0x000f3a5c, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00050001, 0x000c0001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00080001, 0x00000501, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x009a1824, 0x00201a3c, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x00b5eeff, 0x008fc8f5, 0x00548dba, 0x001b5481, 0x0000315e, 0x00002956, 0x0000325f, 0x000f3a5c, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00080001, 0x00150001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x00100001, 0x00000401, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x009a1824, 0x00201a3c, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x00b5eeff, 0x008fc8f5, 0x00548dba, 0x001b5481, 0x0000315e, 0x00002956, 0x0000325f, 0x000f3a5c, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000b0001, 0x001e0001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x001a0001, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x009a1824, 0x00201a3c, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0073acd9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x00b5eeff, 0x008fc8f5, 0x00548dba, 0x001b5481, 0x0000315e, 0x00002956, 0x0000325f, 0x000f3a5c, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002d1a20, 0x003a0114, 0x00460014, 0x00480014, 0x00460014, 0x00480014, 0x00460014, 0x00480014, 0x00460014, 0x0081334d, 0x00782c46, 0x006d1f39, 0x005b0f29, 0x004c0018, 0x00390007, 0x00340000, 0x00220000, 0x00010101, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x009a1824, 0x00201a3c, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x00bff8ff, 0x00bff8ff, 0x00bff8ff, 0x00bff8ff, 0x00bff8ff, 0x00bff8ff, 0x00bff8ff, 0x00bff8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x009fd8ff, 0x003f78a5, 0x0039729f, 0x002c6592, 0x001c5582, 0x000a4370, 0x00003360, 0x00002754, 0x00001d3f, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002f1820, 0x004b031b, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x005a001b, 0x008c2d4d, 0x00852646, 0x00781939, 0x00680929, 0x00570018, 0x00460007, 0x003f0000, 0x002b0000, 0x00040001, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x009a1824, 0x00201a3c, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x00b8f1ff, 0x00b8f1ff, 0x00b8f1ff, 0x00b8f1ff, 0x00b8f1ff, 0x00b8f1ff, 0x00b8f1ff, 0x00b8f1ff, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x0098d1fe, 0x003f78a5, 0x0039729f, 0x002c6592, 0x001c5582, 0x000a4370, 0x00003360, 0x00002754, 0x00001d3f, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00321720, 0x005f0a27, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x00710127, 0x0097274d, 0x00902046, 0x00831339, 0x00730329, 0x00620018, 0x00510007, 0x004a0000, 0x00340000, 0x00070001, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x009a1824, 0x00201a3c, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x00ace5ff, 0x00ace5ff, 0x00ace5ff, 0x00ace5ff, 0x00ace5ff, 0x00ace5ff, 0x00ace5ff, 0x00ace5ff, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x008cc5f2, 0x003f78a5, 0x0039729f, 0x002c6592, 0x001c5582, 0x000a4370, 0x00003360, 0x00002754, 0x00001d3f, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00351520, 0x00761737, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x008b0c37, 0x00a1224d, 0x009a1b46, 0x008d0e39, 0x007d0029, 0x006c0018, 0x005b0007, 0x00540000, 0x003b0000, 0x00090001, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x009a1824, 0x00201a3c, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x009cd5ff, 0x009cd5ff, 0x009cd5ff, 0x009cd5ff, 0x009cd5ff, 0x009cd5ff, 0x009cd5ff, 0x009cd5ff, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x007cb5e2, 0x003f78a5, 0x0039729f, 0x002c6592, 0x001c5582, 0x000a4370, 0x00003360, 0x00002754, 0x00001d3f, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00361520, 0x008f2549, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00a61a49, 0x00aa1e4d, 0x00a31746, 0x00960a39, 0x00860029, 0x00750018, 0x00640007, 0x005d0000, 0x00400000, 0x000c0001, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x009a1824, 0x00201a3c, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x008ac3f0, 0x008ac3f0, 0x008ac3f0, 0x008ac3f0, 0x008ac3f0, 0x008ac3f0, 0x008ac3f0, 0x008ac3f0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x006aa3d0, 0x003f78a5, 0x0039729f, 0x002c6592, 0x001c5582, 0x000a4370, 0x00003360, 0x00002754, 0x00001d3f, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00391320, 0x00a33359, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00bd2659, 0x00b11a4d, 0x00aa1346, 0x009d0639, 0x008d0029, 0x007c0018, 0x006b0007, 0x00640000, 0x00460000, 0x000e0001, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x009a1824, 0x00201a3c, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x007ab3e0, 0x007ab3e0, 0x007ab3e0, 0x007ab3e0, 0x007ab3e0, 0x007ab3e0, 0x007ab3e0, 0x007ab3e0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x005a93c0, 0x003f78a5, 0x0039729f, 0x002c6592, 0x001c5582, 0x000a4370, 0x00003360, 0x00002754, 0x00001d3f, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x003b1220, 0x00b53e66, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00ce3166, 0x00b5184d, 0x00ae1146, 0x00a10439, 0x00910029, 0x00800018, 0x006f0007, 0x00680000, 0x004a0000, 0x000f0001, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x009a1824, 0x00201a3c, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00002c59, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00336c99, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x006da6d3, 0x006da6d3, 0x006da6d3, 0x006da6d3, 0x006da6d3, 0x006da6d3, 0x006da6d3, 0x006da6d3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x004d86b3, 0x003f78a5, 0x0039729f, 0x002c6592, 0x001c5582, 0x000a4370, 0x00003360, 0x00002754, 0x00001d3f, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00000301, 0x00000301, 0x00000201, 0x00000201, 0x00020001, 0x00050001, 0x00080001, 0x000b0001, 0x002d1a20, 0x002f1820, 0x00321720, 0x00351520, 0x00381420, 0x00391320, 0x003b1220, 0x004d0920, 0x00c0416c, 0x00d2386c, 0x00d2386c, 0x00d2386c, 0x00d2386c, 0x00d2386c, 0x00d2386c, 0x00d2386c, 0x00b3194d, 0x00ac1246, 0x009f0539, 0x008f0029, 0x007e0018, 0x006d0007, 0x00660000, 0x00490000, 0x000e0001, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00a11520, 0x00341332, 0x000e214b, 0x000c224b, 0x000a234b, 0x0008244b, 0x0005254b, 0x0003274b, 0x0000284b, 0x003d6a8b, 0x003a6b8b, 0x00376c8b, 0x00356e8b, 0x00336f8b, 0x0030708b, 0x002f718b, 0x00306f8e, 0x00528db5, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x004780ad, 0x004780ad, 0x004780ad, 0x004780ad, 0x004780ad, 0x004780ad, 0x004780ad, 0x004780ad, 0x004780ad, 0x004780ad, 0x004780ad, 0x004780ad, 0x004780ad, 0x004780ad, 0x004780ad, 0x004780ad, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0093ccf9, 0x0067a0cd, 0x0067a0cd, 0x0067a0cd, 0x0067a0cd, 0x0067a0cd, 0x0067a0cd, 0x0067a0cd, 0x006a9fc9, 0x00507ea2, 0x00527d9f, 0x00527d9f, 0x00527d9f, 0x00527d9f, 0x00527d9f, 0x00527d9f, 0x00527d9f, 0x004a7597, 0x00446f91, 0x00376284, 0x00275274, 0x00154062, 0x00053052, 0x00002446, 0x00001b34, 0x0018222b, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00000701, 0x00000701, 0x00000501, 0x00000201, 0x00050001, 0x000c0001, 0x00150001, 0x001e0001, 0x00260000, 0x00300000, 0x003f0007, 0x00570018, 0x006f0529, 0x00831339, 0x00951e46, 0x00a0234d, 0x009b1240, 0x009e1040, 0x009e1040, 0x009e1040, 0x009e1040, 0x009e1040, 0x009e1040, 0x009e1040, 0x00ab1d4d, 0x00a41646, 0x00970939, 0x00870029, 0x00760018, 0x00650007, 0x005e0000, 0x00420000, 0x000c0001, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00ad1019, 0x005c021c, 0x00420c2e, 0x003d0e2e, 0x0038112e, 0x0032142e, 0x002b182e, 0x00231c2e, 0x0019212e, 0x0031454e, 0x002e5155, 0x00316161, 0x003b7672, 0x00478a83, 0x00529e94, 0x005aaca0, 0x0062b0b2, 0x00508fae, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x005c8aae, 0x007891a5, 0x00818f9a, 0x00818f9a, 0x00818f9a, 0x00818f9a, 0x00818f9a, 0x00818f9a, 0x00818f9a, 0x0015232e, 0x0015232e, 0x0015232e, 0x0015232e, 0x0015232e, 0x0015232e, 0x0015232e, 0x0018222b, 0x00000205, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00340000, 0x003f0000, 0x00510007, 0x006c0018, 0x00860029, 0x009d0639, 0x00ae1146, 0x00b3194d, 0x009e1040, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a71f4d, 0x00a01846, 0x00930b39, 0x00830029, 0x00720018, 0x00610007, 0x005a0000, 0x003f0000, 0x000b0001, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b40d15, 0x00700012, 0x005b0220, 0x00570420, 0x00500820, 0x00470c20, 0x003d1120, 0x00321720, 0x00261d20, 0x00343d3a, 0x002e4940, 0x00305c4d, 0x0036715d, 0x003f876f, 0x00489b7f, 0x0050a98b, 0x0059ada0, 0x004f91ab, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x005e89ab, 0x007b8994, 0x00868686, 0x00868686, 0x00868686, 0x00868686, 0x00868686, 0x00868686, 0x00868686, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00340000, 0x003f0000, 0x00510007, 0x006c0018, 0x00860029, 0x009d0639, 0x00ae1146, 0x00b3194d, 0x009e1040, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a71f4d, 0x00a01846, 0x00930b39, 0x00830029, 0x00720018, 0x00610007, 0x005a0000, 0x003f0000, 0x000b0001, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b40d15, 0x00700012, 0x005b0220, 0x00570420, 0x00500820, 0x00470c20, 0x003d1120, 0x00321720, 0x00261d20, 0x0027302d, 0x00223d34, 0x00234f40, 0x00296450, 0x00327a62, 0x003b8e72, 0x00449d7f, 0x004ca093, 0x004f91ab, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x005e89ab, 0x006e7c87, 0x00797979, 0x00797979, 0x00797979, 0x00797979, 0x00797979, 0x00797979, 0x00797979, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00340000, 0x003f0000, 0x00510007, 0x006c0018, 0x00860029, 0x009d0639, 0x00ae1146, 0x00b3194d, 0x009e1040, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a71f4d, 0x00a01846, 0x00930b39, 0x00830029, 0x00720018, 0x00610007, 0x005a0000, 0x003f0000, 0x000b0001, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b40d15, 0x00700012, 0x005b0220, 0x00570420, 0x00500820, 0x00470c20, 0x003d1120, 0x00321720, 0x00261d20, 0x0017201d, 0x00122d24, 0x00133f30, 0x00195440, 0x00226a52, 0x002b7e62, 0x00348d6f, 0x003c9083, 0x004f91ab, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x005e89ab, 0x005e6c77, 0x00696969, 0x00696969, 0x00696969, 0x00696969, 0x00696969, 0x00696969, 0x00696969, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00340000, 0x003f0000, 0x00510007, 0x006c0018, 0x00860029, 0x009d0639, 0x00ae1146, 0x00b3194d, 0x009e1040, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a71f4d, 0x00a01846, 0x00930b39, 0x00830029, 0x00720018, 0x00610007, 0x005a0000, 0x003f0000, 0x000b0001, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b40d15, 0x00700012, 0x005b0220, 0x00570420, 0x00500820, 0x00470c20, 0x003d1120, 0x00321720, 0x00261d20, 0x00050e0b, 0x00001b12, 0x00012d1e, 0x0008432f, 0x00105840, 0x001a6d51, 0x00227b5d, 0x002b7f72, 0x004f91ab, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x005e89ab, 0x004c5a65, 0x00575757, 0x00575757, 0x00575757, 0x00575757, 0x00575757, 0x00575757, 0x00575757, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00340000, 0x003f0000, 0x00510007, 0x006c0018, 0x00860029, 0x009d0639, 0x00ae1146, 0x00b3194d, 0x009e1040, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a71f4d, 0x00a01846, 0x00930b39, 0x00830029, 0x00720018, 0x00610007, 0x005a0000, 0x003f0000, 0x000b0001, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b40d15, 0x00700012, 0x005b0220, 0x00570420, 0x00500820, 0x00470c20, 0x003d1120, 0x00321720, 0x00261d20, 0x00000300, 0x00000b02, 0x00001d0e, 0x0000321e, 0x00004830, 0x00095c40, 0x00126b4d, 0x001a6e61, 0x004f91ab, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x005e89ab, 0x003c4a55, 0x00474747, 0x00474747, 0x00474747, 0x00474747, 0x00474747, 0x00474747, 0x00474747, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00340000, 0x003f0000, 0x00510007, 0x006c0018, 0x00860029, 0x009d0639, 0x00ae1146, 0x00b3194d, 0x009e1040, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a71f4d, 0x00a01846, 0x00930b39, 0x00830029, 0x00720018, 0x00610007, 0x005a0000, 0x003f0000, 0x000b0001, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b40d15, 0x00700012, 0x005b0220, 0x00570420, 0x00500820, 0x00470c20, 0x003d1120, 0x00321720, 0x00261d20, 0x00000300, 0x00000900, 0x00001102, 0x00002612, 0x00003c24, 0x00005034, 0x00055e40, 0x000e6255, 0x004f91ab, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x005e89ab, 0x00303e49, 0x003b3b3b, 0x003b3b3b, 0x003b3b3b, 0x003b3b3b, 0x003b3b3b, 0x003b3b3b, 0x003b3b3b, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00340000, 0x003f0000, 0x00510007, 0x006c0018, 0x00860029, 0x009d0639, 0x00ae1146, 0x00b3194d, 0x009e1040, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a71f4d, 0x00a01846, 0x00930b39, 0x00830029, 0x00720018, 0x00610007, 0x005a0000, 0x003f0000, 0x000b0001, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b40d15, 0x00700012, 0x005b0220, 0x00570420, 0x00500820, 0x00470c20, 0x003d1120, 0x00321720, 0x00261d20, 0x00000300, 0x00000900, 0x00000f00, 0x00001f0b, 0x0000351d, 0x0000492d, 0x0000583a, 0x00075b4e, 0x004f91ab, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x00538cb9, 0x005e89ab, 0x00293742, 0x00343434, 0x00343434, 0x00343434, 0x00343434, 0x00343434, 0x00343434, 0x00343434, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x005f0020, 0x002a1b20, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b40d15, 0x00901a32, 0x007b2240, 0x00772440, 0x00702840, 0x00672c40, 0x005d3140, 0x00523740, 0x00463d40, 0x001a2320, 0x000e2920, 0x00032f20, 0x00003420, 0x00003820, 0x00003c20, 0x00003e20, 0x00003b2e, 0x003b7d97, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x005f98c5, 0x005f98c5, 0x005f98c5, 0x005f98c5, 0x005f98c5, 0x005f98c5, 0x005f98c5, 0x005f98c5, 0x005f98c5, 0x005f98c5, 0x005f98c5, 0x005f98c5, 0x005f98c5, 0x005f98c5, 0x005f98c5, 0x005f98c5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x003f78a5, 0x004a7597, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x005f0020, 0x002a1b20, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b40d15, 0x00901a32, 0x007b2240, 0x00772440, 0x00702840, 0x00672c40, 0x005d3140, 0x00523740, 0x00463d40, 0x001a2320, 0x000e2920, 0x00032f20, 0x00003420, 0x00003820, 0x00003c20, 0x00003e20, 0x00003b2e, 0x00357791, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x005992bf, 0x005992bf, 0x005992bf, 0x005992bf, 0x005992bf, 0x005992bf, 0x005992bf, 0x005992bf, 0x005992bf, 0x005992bf, 0x005992bf, 0x005992bf, 0x005992bf, 0x005992bf, 0x005992bf, 0x005992bf, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x0039729f, 0x00446f91, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x005f0020, 0x002a1b20, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b40d15, 0x00901a32, 0x007b2240, 0x00772440, 0x00702840, 0x00672c40, 0x005d3140, 0x00523740, 0x00463d40, 0x001a2320, 0x000e2920, 0x00032f20, 0x00003420, 0x00003820, 0x00003c20, 0x00003e20, 0x00003b2e, 0x00286a84, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x004c85b2, 0x004c85b2, 0x004c85b2, 0x004c85b2, 0x004c85b2, 0x004c85b2, 0x004c85b2, 0x004c85b2, 0x004c85b2, 0x004c85b2, 0x004c85b2, 0x004c85b2, 0x004c85b2, 0x004c85b2, 0x004c85b2, 0x004c85b2, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x002c6592, 0x00376284, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x005f0020, 0x002a1b20, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b40d15, 0x00901a32, 0x007b2240, 0x00772440, 0x00702840, 0x00672c40, 0x005d3140, 0x00523740, 0x00463d40, 0x001a2320, 0x000e2920, 0x00032f20, 0x00003420, 0x00003820, 0x00003c20, 0x00003e20, 0x00003b2e, 0x00185a74, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x003c75a2, 0x003c75a2, 0x003c75a2, 0x003c75a2, 0x003c75a2, 0x003c75a2, 0x003c75a2, 0x003c75a2, 0x003c75a2, 0x003c75a2, 0x003c75a2, 0x003c75a2, 0x003c75a2, 0x003c75a2, 0x003c75a2, 0x003c75a2, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x001c5582, 0x00275274, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x005f0020, 0x002a1b20, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b40d15, 0x00901a32, 0x007b2240, 0x00772440, 0x00702840, 0x00672c40, 0x005d3140, 0x00523740, 0x00463d40, 0x001a2320, 0x000e2920, 0x00032f20, 0x00003420, 0x00003820, 0x00003c20, 0x00003e20, 0x00003b2e, 0x00064862, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x002a6390, 0x002a6390, 0x002a6390, 0x002a6390, 0x002a6390, 0x002a6390, 0x002a6390, 0x002a6390, 0x002a6390, 0x002a6390, 0x002a6390, 0x002a6390, 0x002a6390, 0x002a6390, 0x002a6390, 0x002a6390, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x000a4370, 0x00154062, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x005f0020, 0x002a1b20, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b40d15, 0x00901a32, 0x007b2240, 0x00772440, 0x00702840, 0x00672c40, 0x005d3140, 0x00523740, 0x00463d40, 0x001a2320, 0x000e2920, 0x00032f20, 0x00003420, 0x00003820, 0x00003c20, 0x00003e20, 0x00003b2e, 0x00003852, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x001a5380, 0x001a5380, 0x001a5380, 0x001a5380, 0x001a5380, 0x001a5380, 0x001a5380, 0x001a5380, 0x001a5380, 0x001a5380, 0x001a5380, 0x001a5380, 0x001a5380, 0x001a5380, 0x001a5380, 0x001a5380, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00003360, 0x00053052, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x005f0020, 0x002a1b20, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b40d15, 0x00901a32, 0x007b2240, 0x00772440, 0x00702840, 0x00672c40, 0x005d3140, 0x00523740, 0x00463d40, 0x001a2320, 0x000e2920, 0x00032f20, 0x00003420, 0x00003820, 0x00003c20, 0x00003e20, 0x00003b2e, 0x00002c46, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x000e4774, 0x000e4774, 0x000e4774, 0x000e4774, 0x000e4774, 0x000e4774, 0x000e4774, 0x000e4774, 0x000e4774, 0x000e4774, 0x000e4774, 0x000e4774, 0x000e4774, 0x000e4774, 0x000e4774, 0x000e4774, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002754, 0x00002446, 0x0015232e, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00840020, 0x00760020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x00570420, 0x00271c20, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b90c12, 0x009e1527, 0x008f1b32, 0x008a1d32, 0x00852032, 0x007f2332, 0x00782632, 0x00702a32, 0x00662f32, 0x003d1412, 0x00341912, 0x002b1d12, 0x00242112, 0x001f2312, 0x00192612, 0x00152812, 0x000f2825, 0x0000173f, 0x00001652, 0x00001652, 0x00001652, 0x00001652, 0x00001652, 0x00001652, 0x00001652, 0x00001652, 0x00001652, 0x00001652, 0x00001652, 0x00001652, 0x00001652, 0x00001652, 0x00001752, 0x00113a72, 0x000e3b72, 0x000e3b72, 0x000e3b72, 0x000e3b72, 0x000e3b72, 0x000e3b72, 0x000e3b72, 0x000e3b72, 0x000e3b72, 0x000e3b72, 0x000e3b72, 0x000e3b72, 0x000e3b72, 0x000e3b72, 0x000d3c72, 0x00001d52, 0x00001d52, 0x00001d52, 0x00001d52, 0x00001d52, 0x00001d52, 0x00001d52, 0x00001d52, 0x00001d52, 0x00001d52, 0x00001d52, 0x00001d52, 0x00001d52, 0x00001d52, 0x00001d52, 0x00001742, 0x002a1830, 0x003b1220, 0x00391320, 0x00361520, 0x00351520, 0x00321720, 0x002f1820, 0x002d1a20, 0x002a1b20, 0x00271c20, 0x00241e20, 0x00211f20, 0x001f2120, 0x001d2120, 0x001c2220, 0x001d2120, 0x00000201, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007e0020, 0x00650020, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00460d20, 0x00211f20, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c2080b, 0x00b90c12, 0x00b40d15, 0x00b30e15, 0x00b00f15, 0x00af1015, 0x00ac1115, 0x00a91315, 0x00a61415, 0x00a41615, 0x00a11715, 0x009e1815, 0x009b1a15, 0x009a1b15, 0x00971c15, 0x00961d15, 0x00822132, 0x003d084c, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x002a0d69, 0x00211169, 0x00111a69, 0x00081e69, 0x00081e69, 0x00081e69, 0x00081e69, 0x00081e69, 0x00081e69, 0x00081e69, 0x00081e69, 0x00081e69, 0x00081e69, 0x00081e69, 0x00081e69, 0x00081e69, 0x00081e69, 0x00051f69, 0x00002269, 0x00002469, 0x00002369, 0x00002469, 0x00002369, 0x00002469, 0x00002369, 0x00002469, 0x001e4389, 0x001d4489, 0x001e4389, 0x001d4489, 0x001e4389, 0x001d4489, 0x001e4389, 0x003a3877, 0x00812f5f, 0x00951e46, 0x00831339, 0x006e0629, 0x00570018, 0x003f0007, 0x00300000, 0x00260000, 0x001e0001, 0x00150001, 0x000c0001, 0x00050001, 0x00000201, 0x00000501, 0x00000701, 0x00000601, 0x00000201, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00ac0d29, 0x0058004b, 0x003d036a, 0x003f026a, 0x003d036a, 0x003f026a, 0x003d036a, 0x003f026a, 0x003d036a, 0x003f026a, 0x003d036a, 0x003f026a, 0x003d036a, 0x003f026a, 0x003d036a, 0x003f026a, 0x0032086a, 0x001d136a, 0x0011196a, 0x0012196a, 0x0011196a, 0x0012196a, 0x0011196a, 0x0012196a, 0x0011196a, 0x0012196a, 0x0011196a, 0x0012196a, 0x0011196a, 0x0012196a, 0x0011196a, 0x0012196a, 0x0011196a, 0x000e1b6a, 0x000c1c6a, 0x000c1c6a, 0x000c1c6a, 0x000c1c6a, 0x000c1c6a, 0x000c1c6a, 0x000c1c6a, 0x002c3c8a, 0x002c3c8a, 0x002c3c8a, 0x002c3c8a, 0x002c3c8a, 0x002c3c8a, 0x002c3c8a, 0x004b2f79, 0x00972360, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00ad0d27, 0x005b0045, 0x00420165, 0x00430165, 0x00420165, 0x00430165, 0x00420165, 0x00430165, 0x00420165, 0x00430165, 0x00420165, 0x00430165, 0x00420165, 0x00430165, 0x00420165, 0x00430165, 0x00360765, 0x00211265, 0x00151865, 0x00161865, 0x00151865, 0x00161865, 0x00151865, 0x00161865, 0x00151865, 0x00161865, 0x00151865, 0x00161865, 0x00151865, 0x00161865, 0x00151865, 0x00161865, 0x00191665, 0x001f1365, 0x00211265, 0x00211265, 0x00211265, 0x00211265, 0x00211265, 0x00211265, 0x00211265, 0x00413285, 0x00413285, 0x00413285, 0x00413285, 0x00413285, 0x00413285, 0x00413285, 0x005c2873, 0x009d215f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00af0d24, 0x00600040, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x0049005c, 0x003d055c, 0x0027115c, 0x001c165c, 0x001c165c, 0x001c165c, 0x001c165c, 0x001c165c, 0x001c165c, 0x001c165c, 0x001c165c, 0x001c165c, 0x001c165c, 0x001c165c, 0x001c165c, 0x001c165c, 0x001c165c, 0x0024125c, 0x00350a5c, 0x003d055c, 0x003d055c, 0x003d055c, 0x003d055c, 0x003d055c, 0x003d055c, 0x003d055c, 0x005d257c, 0x005d257c, 0x005d257c, 0x005d257c, 0x005d257c, 0x005d257c, 0x005d257c, 0x00711e6c, 0x00a41e5d, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b20c22, 0x00680037, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00520052, 0x00470252, 0x00310e52, 0x00261452, 0x00261452, 0x00261452, 0x00261452, 0x00261452, 0x00261452, 0x00261452, 0x00261452, 0x00261452, 0x00261452, 0x00261452, 0x00261452, 0x00261452, 0x00261452, 0x00340c52, 0x00500052, 0x005e0052, 0x005e0052, 0x005e0052, 0x005e0052, 0x005e0052, 0x005e0052, 0x005e0052, 0x007e1772, 0x007e1772, 0x007e1772, 0x007e1772, 0x007e1772, 0x007e1772, 0x007e1772, 0x00891465, 0x00ac1a59, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b40b1e, 0x006f002e, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x005c0045, 0x00510045, 0x003b0b45, 0x002f1145, 0x002f1145, 0x002f1145, 0x002f1145, 0x002f1145, 0x002f1145, 0x002f1145, 0x002f1145, 0x002f1145, 0x002f1145, 0x002f1145, 0x002f1145, 0x002f1145, 0x002f1145, 0x00430745, 0x00690045, 0x007d0045, 0x007d0045, 0x007d0045, 0x007d0045, 0x007d0045, 0x007d0045, 0x007d0045, 0x009d0a65, 0x009d0a65, 0x009d0a65, 0x009d0a65, 0x009d0a65, 0x009d0a65, 0x009d0a65, 0x00a1095c, 0x00b51656, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00b70b1b, 0x00770024, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x00680037, 0x005c0037, 0x00460837, 0x003b0e37, 0x003b0e37, 0x003b0e37, 0x003b0e37, 0x003b0e37, 0x003b0e37, 0x003b0e37, 0x003b0e37, 0x003b0e37, 0x003b0e37, 0x003b0e37, 0x003b0e37, 0x003b0e37, 0x003b0e37, 0x00520237, 0x00820037, 0x009a0037, 0x009a0037, 0x009a0037, 0x009a0037, 0x009a0037, 0x009a0037, 0x009a0037, 0x00ba0057, 0x00ba0057, 0x00ba0057, 0x00ba0057, 0x00ba0057, 0x00ba0057, 0x00ba0057, 0x00b60152, 0x00bc1452, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00ba0a17, 0x00810017, 0x00730027, 0x00740029, 0x00730027, 0x00740029, 0x00730027, 0x00740029, 0x00730027, 0x00740029, 0x00730027, 0x00740029, 0x00730027, 0x00740029, 0x00730027, 0x00740029, 0x00680027, 0x00520529, 0x00460b27, 0x00470a29, 0x00460b27, 0x00470a29, 0x00460b27, 0x00470a29, 0x00460b27, 0x00470a29, 0x00460b27, 0x00470a29, 0x00460b27, 0x00470a29, 0x00460b27, 0x00470a29, 0x00600027, 0x00940029, 0x00ae0027, 0x00ae0029, 0x00ae0027, 0x00ae0029, 0x00ae0027, 0x00ae0029, 0x00ae0027, 0x00ce0049, 0x00ce0047, 0x00ce0049, 0x00ce0047, 0x00ce0049, 0x00ce0047, 0x00ce0049, 0x00c50045, 0x00c0124f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bd0914, 0x00a90e2d, 0x009f1137, 0x00a11039, 0x009f1137, 0x00a11039, 0x009f1137, 0x00a11039, 0x009f1137, 0x00a11039, 0x009f1137, 0x00a11039, 0x009f1137, 0x00a11039, 0x009f1137, 0x00a11039, 0x00941737, 0x007f2139, 0x00722837, 0x00742739, 0x00722837, 0x00742739, 0x00722837, 0x00742739, 0x00722837, 0x00742739, 0x00722837, 0x00742739, 0x00722837, 0x00742739, 0x00722837, 0x00742739, 0x008d1a37, 0x00c00039, 0x00da0037, 0x00da0039, 0x00da0037, 0x00da0039, 0x00da0037, 0x00da0039, 0x00da0037, 0x00da0039, 0x00da0037, 0x00da0039, 0x00da0037, 0x00da0039, 0x00da0037, 0x00da0039, 0x00ce003b, 0x00c3114b, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c00810, 0x00b30c20, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00ac0d29, 0x00a11329, 0x008a1f29, 0x007f2429, 0x007f2429, 0x007f2429, 0x007f2429, 0x007f2429, 0x007f2429, 0x007f2429, 0x007f2429, 0x007f2429, 0x007f2429, 0x007f2429, 0x007f2429, 0x007f2429, 0x007f2429, 0x00971829, 0x00c50129, 0x00dd0029, 0x00dd0029, 0x00dd0029, 0x00dd0029, 0x00dd0029, 0x00dd0029, 0x00dd0029, 0x00dd0029, 0x00dd0029, 0x00dd0029, 0x00dd0029, 0x00dd0029, 0x00dd0029, 0x00dd0029, 0x00d0002e, 0x00c41148, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c2080d, 0x00bb0915, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00b70b1b, 0x00ac101b, 0x00961c1b, 0x008a211b, 0x008a211b, 0x008a211b, 0x008a211b, 0x008a211b, 0x008a211b, 0x008a211b, 0x008a211b, 0x008a211b, 0x008a211b, 0x008a211b, 0x008a211b, 0x008a211b, 0x008a211b, 0x009e171b, 0x00c4041b, 0x00d7001b, 0x00d7001b, 0x00d7001b, 0x00d7001b, 0x00d7001b, 0x00d7001b, 0x00d7001b, 0x00d7001b, 0x00d7001b, 0x00d7001b, 0x00d7001b, 0x00d7001b, 0x00d7001b, 0x00d7001b, 0x00cc0024, 0x00c31344, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c50709, 0x00c2080d, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00c1080e, 0x00b60e0e, 0x009f190e, 0x00941f0e, 0x00941f0e, 0x00941f0e, 0x00941f0e, 0x00941f0e, 0x00941f0e, 0x00941f0e, 0x00941f0e, 0x00941f0e, 0x00941f0e, 0x00941f0e, 0x00941f0e, 0x00941f0e, 0x00941f0e, 0x00a2180e, 0x00be090e, 0x00cc020e, 0x00ce020e, 0x00cc020e, 0x00ce020e, 0x00cc020e, 0x00ce020e, 0x00cc020e, 0x00ce020e, 0x00cc020e, 0x00ce020e, 0x00cc020e, 0x00ce020e, 0x00cc020e, 0x00ce020e, 0x00c4041b, 0x00c01541, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70706, 0x00c90506, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00c90604, 0x00be0b04, 0x00a81704, 0x009d1d04, 0x009d1d04, 0x009d1d04, 0x009d1d04, 0x009d1d04, 0x009d1d04, 0x009d1d04, 0x009d1d04, 0x009d1d04, 0x009d1d04, 0x009d1d04, 0x009d1d04, 0x009d1d04, 0x009d1d04, 0x00a51804, 0x00b61004, 0x00bd0c04, 0x00be0b04, 0x00bd0c04, 0x00be0b04, 0x00bd0c04, 0x00be0b04, 0x00bd0c04, 0x00be0b04, 0x00bd0c04, 0x00be0b04, 0x00bd0c04, 0x00be0b04, 0x00bd0c04, 0x00be0b04, 0x00b90c12, 0x00bc173f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c90604, 0x00ce0500, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00d00400, 0x00c50a00, 0x00af1500, 0x00a41b00, 0x00a41b00, 0x00a41b00, 0x00a41b00, 0x00a41b00, 0x00a41b00, 0x00a41b00, 0x00a41b00, 0x00a41b00, 0x00a41b00, 0x00a41b00, 0x00a41b00, 0x00a41b00, 0x00a41b00, 0x00a61900, 0x00ac1600, 0x00af1500, 0x00b01400, 0x00af1500, 0x00b01400, 0x00af1500, 0x00b01400, 0x00af1500, 0x00b01400, 0x00af1500, 0x00b01400, 0x00af1500, 0x00b01400, 0x00af1500, 0x00b01400, 0x00af120d, 0x00b9193b, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00cb0502, 0x00d20300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00d50300, 0x00c90800, 0x00b31400, 0x00a81a00, 0x00a81a00, 0x00a81a00, 0x00a81a00, 0x00a81a00, 0x00a81a00, 0x00a81a00, 0x00a81a00, 0x00a81a00, 0x00a81a00, 0x00a81a00, 0x00a81a00, 0x00a81a00, 0x00a81a00, 0x00a61a00, 0x00a41c00, 0x00a21c00, 0x00a41c00, 0x00a21c00, 0x00a41c00, 0x00a21c00, 0x00a41c00, 0x00a21c00, 0x00a41c00, 0x00a21c00, 0x00a41c00, 0x00a21c00, 0x00a41c00, 0x00a21c00, 0x00a41c00, 0x00a51807, 0x00b61b3a, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00742640, 0x007f2040, 0x008a1a40, 0x00941540, 0x009d1140, 0x00a40d40, 0x00a80b40, 0x00b20932, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c90604, 0x00d00400, 0x00d30300, 0x00d30300, 0x00d30300, 0x00d30300, 0x00d30300, 0x00d30300, 0x00d30300, 0x00d30300, 0x00d30300, 0x00d30300, 0x00d30300, 0x00d30300, 0x00d30300, 0x00d30300, 0x00cb0700, 0x00ba1000, 0x00b21400, 0x00b21400, 0x00b21400, 0x00b21400, 0x00b21400, 0x00b21400, 0x00b21400, 0x00b21400, 0x00b21400, 0x00b21400, 0x00b21400, 0x00b21400, 0x00b21400, 0x00b21400, 0x00af1600, 0x00a91900, 0x00a61a00, 0x00a81900, 0x00a61a00, 0x00a81900, 0x00a61a00, 0x00a81900, 0x00a61a00, 0x00a81900, 0x00a61a00, 0x00a81900, 0x00a61a00, 0x00a81900, 0x00a61a00, 0x00a81900, 0x00a81609, 0x00b61b3b, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c80606, 0x00c90604, 0x00cb0502, 0x00cb0502, 0x00cb0502, 0x00cb0502, 0x00cb0502, 0x00cb0502, 0x00cb0502, 0x00cb0502, 0x00cb0502, 0x00cb0502, 0x00cb0502, 0x00cb0502, 0x00cb0502, 0x00cb0502, 0x00c80702, 0x00c20a02, 0x00c00b02, 0x00c00b02, 0x00c00b02, 0x00c00b02, 0x00c00b02, 0x00c00b02, 0x00c00b02, 0x00c00b02, 0x00c00b02, 0x00c00b02, 0x00c00b02, 0x00c00b02, 0x00c00b02, 0x00c00b02, 0x00be0c02, 0x00bd0c02, 0x00bb0d02, 0x00bd0c02, 0x00bb0d02, 0x00bd0c02, 0x00bb0d02, 0x00bd0c02, 0x00bb0d02, 0x00bd0c02, 0x00bb0d02, 0x00bd0c02, 0x00bb0d02, 0x00bd0c02, 0x00bb0d02, 0x00bd0c02, 0x00b70c12, 0x00bc183d, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c00715, 0x00bf163f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c00715, 0x00bf163f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c00715, 0x00bf163f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c00715, 0x00bf163f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c00715, 0x00bf163f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c00715, 0x00bf163f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c00715, 0x00bf163f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c00715, 0x00bf163f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c00715, 0x00bf163f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c00715, 0x00bf163f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c00715, 0x00bf163f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c00715, 0x00bf163f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c00715, 0x00bf163f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000a01, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x007b0020, 0x005c0120, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00920012, 0x00c00715, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c00715, 0x00bf163f, 0x00ae1146, 0x009d0639, 0x00860029, 0x006c0018, 0x00510007, 0x003f0000, 0x00320000, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00000201, 0x00010101, 0x00040001, 0x00090001, 0x00100001, 0x00170001, 0x00200001, 0x002a0001, 0x00510720, 0x005b0220, 0x00630020, 0x006a0020, 0x00710020, 0x00760020, 0x007a0020, 0x00700020, 0x00580320, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x001f2120, 0x00112820, 0x00162520, 0x001c2220, 0x00261d20, 0x002f1820, 0x003b1220, 0x00460d20, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x008f0015, 0x00b70920, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00be0912, 0x00c4070b, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c4070b, 0x00be0912, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00b30c20, 0x00b11c42, 0x00a01846, 0x008f0d39, 0x00790029, 0x00620018, 0x004a0007, 0x003b0000, 0x00310000, 0x002a0001, 0x00200001, 0x00170001, 0x00100001, 0x00090001, 0x00040001, 0x00010101, 0x00000201, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x001e0001, 0x001e0001, 0x00200001, 0x00210001, 0x00240001, 0x00270001, 0x002a0001, 0x002c0001, 0x004e0820, 0x00510720, 0x00540620, 0x00570420, 0x00590320, 0x005b0220, 0x005c0120, 0x00580320, 0x00510720, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x0089001c, 0x00a60e35, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00ad0d27, 0x00be0912, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00be0912, 0x00ad0d27, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x009b1435, 0x00932a49, 0x00822746, 0x00741b39, 0x00610c29, 0x004f0018, 0x003b0007, 0x00310000, 0x002e0000, 0x002c0001, 0x002a0001, 0x00270001, 0x00240001, 0x00210001, 0x00200001, 0x001e0001, 0x00170001, 0x00080001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x009e1040, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a50f32, 0x00bb0915, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bb0915, 0x00a50f32, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x008f1840, 0x0085304d, 0x00732f46, 0x00662239, 0x00561229, 0x00450118, 0x00340007, 0x002d0000, 0x002d0000, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x009e1040, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a50f32, 0x00bb0915, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bb0915, 0x00a50f32, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x008f1840, 0x0085304d, 0x00732f46, 0x00662239, 0x00561229, 0x00450118, 0x00340007, 0x002d0000, 0x002d0000, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x009e1040, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a50f32, 0x00bb0915, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bb0915, 0x00a50f32, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x008f1840, 0x0085304d, 0x00732f46, 0x00662239, 0x00561229, 0x00450118, 0x00340007, 0x002d0000, 0x002d0000, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x009e1040, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a50f32, 0x00bb0915, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bb0915, 0x00a50f32, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x008f1840, 0x0085304d, 0x00732f46, 0x00662239, 0x00561229, 0x00450118, 0x00340007, 0x002d0000, 0x002d0000, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x009e1040, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a50f32, 0x00bb0915, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bb0915, 0x00a50f32, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x008f1840, 0x0085304d, 0x00732f46, 0x00662239, 0x00561229, 0x00450118, 0x00340007, 0x002d0000, 0x002d0000, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x009e1040, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a50f32, 0x00bb0915, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bb0915, 0x00a50f32, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x008f1840, 0x0085304d, 0x00732f46, 0x00662239, 0x00561229, 0x00450118, 0x00340007, 0x002d0000, 0x002d0000, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x009e1040, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a50f32, 0x00bb0915, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bb0915, 0x00a50f32, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x008f1840, 0x0085304d, 0x00732f46, 0x00662239, 0x00561229, 0x00450118, 0x00340007, 0x002d0000, 0x002d0000, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a50f32, 0x00bb0915, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bb0915, 0x00a50f32, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x006f0020, 0x00580320, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a50f32, 0x00bb0915, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bb0915, 0x00a50f32, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x006f0020, 0x00580320, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a50f32, 0x00bb0915, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bb0915, 0x00a50f32, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x006f0020, 0x00580320, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a50f32, 0x00bb0915, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bb0915, 0x00a50f32, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x006f0020, 0x00580320, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a50f32, 0x00bb0915, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bb0915, 0x00a50f32, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x006f0020, 0x00580320, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a50f32, 0x00bb0915, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bb0915, 0x00a50f32, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x006f0020, 0x00580320, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a50f32, 0x00bb0915, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00c70607, 0x00bb0915, 0x00a50f32, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x006f0020, 0x00580320, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00230001, 0x00230001, 0x00230001, 0x00230001, 0x00230001, 0x00230001, 0x00230001, 0x00230001, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00440d20, 0x004a0b20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x00a21035, 0x00b30c20, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00bb0915, 0x00b30c20, 0x00a21035, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x006c0020, 0x00500820, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00230001, 0x00230001, 0x00230001, 0x00230001, 0x00230001, 0x00230001, 0x00230001, 0x001a0001, 0x00090001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x00341620, 0x00440d20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007d001c, 0x00820015, 0x00850012, 0x00850012, 0x00850012, 0x00850012, 0x00850012, 0x00850012, 0x00850012, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a50f32, 0x00a21035, 0x007d001c, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00660020, 0x003f1020, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x00090001, 0x00040001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002b1a20, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00361520, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002b1a20, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00361520, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002b1a20, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00361520, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002b1a20, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00361520, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002b1a20, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00361520, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002b1a20, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00361520, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002b1a20, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x009a1240, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00361520, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x003d1120, 0x00000201, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00090001, 0x00391320, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00351520, 0x00000301, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007b0020, 0x007d0020, 0x007e0020, 0x007d0020, 0x007a0020, 0x00780020, 0x00760020, 0x00730020, 0x00700020, 0x006d0020, 0x006a0020, 0x00680020, 0x00650020, 0x00620020, 0x00600020, 0x005f0020, 0x00600020, 0x00620020, 0x00630020, 0x00630020, 0x00630020, 0x00630020, 0x00630020, 0x00630020, 0x00630020, 0x00630020, 0x00630020, 0x00630020, 0x00630020, 0x00630020, 0x00630020, 0x00630020, 0x00660020, 0x006c0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x00710020, 0x00770020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00040001, 0x00090001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x00050001, 0x00000601, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007d0020, 0x00840020, 0x00850020, 0x00810020, 0x007b0020, 0x00760020, 0x006f0020, 0x00660020, 0x005c0120, 0x00540620, 0x004a0b20, 0x00420f20, 0x003b1220, 0x00341620, 0x002e1920, 0x002b1a20, 0x002d1a20, 0x00150001, 0x00170001, 0x00170001, 0x00170001, 0x00170001, 0x00170001, 0x00170001, 0x00170001, 0x00170001, 0x00170001, 0x00170001, 0x00170001, 0x00170001, 0x00170001, 0x00170001, 0x00200001, 0x00310001, 0x00390001, 0x00390001, 0x00390001, 0x00390001, 0x00390001, 0x00390001, 0x00390001, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00600020, 0x00710020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00470c20, 0x003b1220, 0x002f1820, 0x00261d20, 0x001c2220, 0x00152620, 0x00122720, 0x00132620, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00230001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x00580320, 0x006f0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00470c20, 0x003b1220, 0x002f1820, 0x00261d20, 0x001c2220, 0x00152620, 0x00122720, 0x00132620, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00230001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x00580320, 0x006f0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00470c20, 0x003b1220, 0x002f1820, 0x00261d20, 0x001c2220, 0x00152620, 0x00122720, 0x00132620, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00230001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x00580320, 0x006f0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00470c20, 0x003b1220, 0x002f1820, 0x00261d20, 0x001c2220, 0x00152620, 0x00122720, 0x00132620, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00230001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x00580320, 0x006f0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00470c20, 0x003b1220, 0x002f1820, 0x00261d20, 0x001c2220, 0x00152620, 0x00122720, 0x00132620, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00230001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x00580320, 0x006f0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00470c20, 0x003b1220, 0x002f1820, 0x00261d20, 0x001c2220, 0x00152620, 0x00122720, 0x00132620, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00230001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x00580320, 0x006f0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00470c20, 0x003b1220, 0x002f1820, 0x00261d20, 0x001c2220, 0x00152620, 0x00122720, 0x00132620, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00230001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x00580320, 0x006f0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00470c20, 0x003b1220, 0x002f1820, 0x00261d20, 0x001c2220, 0x00152620, 0x00122720, 0x00132620, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x00580320, 0x006f0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00470c20, 0x003b1220, 0x002f1820, 0x00261d20, 0x001c2220, 0x00152620, 0x00122720, 0x00132620, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x00580320, 0x006f0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00470c20, 0x003b1220, 0x002f1820, 0x00261d20, 0x001c2220, 0x00152620, 0x00122720, 0x00132620, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x00580320, 0x006f0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00470c20, 0x003b1220, 0x002f1820, 0x00261d20, 0x001c2220, 0x00152620, 0x00122720, 0x00132620, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x00580320, 0x006f0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00470c20, 0x003b1220, 0x002f1820, 0x00261d20, 0x001c2220, 0x00152620, 0x00122720, 0x00132620, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x00580320, 0x006f0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00470c20, 0x003b1220, 0x002f1820, 0x00261d20, 0x001c2220, 0x00152620, 0x00122720, 0x00132620, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x00580320, 0x006f0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00470c20, 0x003b1220, 0x002f1820, 0x00261d20, 0x001c2220, 0x00152620, 0x00122720, 0x00132620, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x00580320, 0x006f0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x00630020, 0x00170001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00470c20, 0x003b1220, 0x002f1820, 0x00261d20, 0x001c2220, 0x00152620, 0x00122720, 0x00132620, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x00550520, 0x00660020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x006f0020, 0x005b0220, 0x00150001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x00500820, 0x00550520, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x00580320, 0x0085304d, 0x007e2946, 0x00711c39, 0x00610c29, 0x00500018, 0x003f0007, 0x00380000, 0x002a0000, 0x000f0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x007a364d, 0x00732f46, 0x00662239, 0x00561229, 0x00450118, 0x00340007, 0x002d0000, 0x00220000, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x007a364d, 0x00732f46, 0x00662239, 0x00561229, 0x00450118, 0x00340007, 0x002d0000, 0x00220000, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x007a364d, 0x00732f46, 0x00662239, 0x00561229, 0x00450118, 0x00340007, 0x002d0000, 0x00220000, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x007a364d, 0x00732f46, 0x00662239, 0x00561229, 0x00450118, 0x00340007, 0x002d0000, 0x00220000, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x007a364d, 0x00732f46, 0x00662239, 0x00561229, 0x00450118, 0x00340007, 0x002d0000, 0x00220000, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x007a364d, 0x00732f46, 0x00662239, 0x00561229, 0x00450118, 0x00340007, 0x002d0000, 0x00220000, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000301, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000301, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x000c0001, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x007a364d, 0x00732f46, 0x00662239, 0x00561229, 0x00450118, 0x00340007, 0x002d0000, 0x00220000, 0x000c0001, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000200, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000200, 0x00000000, 0x00070707, 0x00181818, 0x00292929, 0x00393939, 0x00464646, 0x004d4d4d, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002b1a20, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x002b1a20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000200, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000200, 0x00000000, 0x00070707, 0x00181818, 0x00292929, 0x00393939, 0x00464646, 0x004d4d4d, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002b1a20, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x002b1a20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00030907, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000200, 0x00000000, 0x00070707, 0x00181818, 0x00292929, 0x00393939, 0x00464646, 0x004d4d4d, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002b1a20, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x002b1a20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00141a18, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000200, 0x00000000, 0x00070707, 0x00181818, 0x00292929, 0x00393939, 0x00464646, 0x004d4d4d, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002b1a20, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x002b1a20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00252b29, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000200, 0x00000000, 0x00070707, 0x00181818, 0x00292929, 0x00393939, 0x00464646, 0x004d4d4d, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002b1a20, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x002b1a20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00353b39, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000200, 0x00000000, 0x00070707, 0x00181818, 0x00292929, 0x00393939, 0x00464646, 0x004d4d4d, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002b1a20, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x002b1a20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00424846, 0x00000701, 0x00000901, 0x00000601, 0x00000301, 0x00070001, 0x00100001, 0x001c0001, 0x00270001, 0x00540620, 0x005f0020, 0x006a0020, 0x00740020, 0x007d0020, 0x00840020, 0x00880020, 0x00860020, 0x007e0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007a0020, 0x007e0020, 0x00860020, 0x00880020, 0x00840020, 0x007d0020, 0x00740020, 0x006a0020, 0x005f0020, 0x00520620, 0x00280001, 0x001c0001, 0x00100001, 0x00070001, 0x00000301, 0x00000701, 0x00000801, 0x00000701, 0x00000200, 0x00000000, 0x00070707, 0x00181818, 0x00292929, 0x00393939, 0x00464646, 0x004d4d4d, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002b1a20, 0x00420f20, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x004d0920, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x002e0001, 0x00230001, 0x002b1a20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004a4e4d, 0x00000601, 0x00000701, 0x00000501, 0x00000201, 0x00050001, 0x000c0001, 0x00150001, 0x001e0001, 0x00460d20, 0x00500820, 0x00580320, 0x005f0020, 0x00660020, 0x006a0020, 0x006f0020, 0x00730020, 0x007b0020, 0x007e0020, 0x007e0020, 0x007e0020, 0x007e0020, 0x007e0020, 0x007e0020, 0x007e0020, 0x007e0020, 0x007e0020, 0x007e0020, 0x007e0020, 0x007e0020, 0x007e0020, 0x007e0020, 0x007a0020, 0x00740020, 0x006f0020, 0x006a0020, 0x00650020, 0x005f0020, 0x00580320, 0x00500820, 0x00460d20, 0x001e0001, 0x00150001, 0x000c0001, 0x00050001, 0x00000201, 0x00000501, 0x00000701, 0x00000601, 0x00000100, 0x00000000, 0x00070707, 0x00181818, 0x00292929, 0x00393939, 0x00464646, 0x004d4d4d, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00281c20, 0x00391320, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00420f20, 0x00230001, 0x00230001, 0x00230001, 0x00230001, 0x00230001, 0x00230001, 0x00230001, 0x001a0001, 0x00281c20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x003f4140, 0x001d2120, 0x001c2220, 0x001d2120, 0x001f2120, 0x00211f20, 0x00241e20, 0x00271c20, 0x002a1b20, 0x002d1a20, 0x002f1820, 0x00321720, 0x00351520, 0x00381420, 0x00391320, 0x003b1220, 0x004d0920, 0x00740020, 0x00860020, 0x00860020, 0x00860020, 0x00860020, 0x00860020, 0x00860020, 0x00860020, 0x00860020, 0x00860020, 0x00860020, 0x00860020, 0x00860020, 0x00860020, 0x00860020, 0x00730020, 0x004e0820, 0x003b1220, 0x00391320, 0x00361520, 0x00351520, 0x00321720, 0x002f1820, 0x002d1a20, 0x000b0001, 0x00080001, 0x00050001, 0x00020001, 0x00000201, 0x00000201, 0x00000301, 0x00000201, 0x003f4140, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00231f20, 0x00281c20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x000c0001, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x002b1a20, 0x000b0000, 0x000b0000, 0x000b0000, 0x000b0000, 0x000b0000, 0x000b0000, 0x000b0000, 0x00080000, 0x00433f40, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x003b1220, 0x006f0020, 0x00880020, 0x00880020, 0x00880020, 0x00880020, 0x00880020, 0x00880020, 0x00880020, 0x00880020, 0x00880020, 0x00880020, 0x00880020, 0x00880020, 0x00880020, 0x00880020, 0x006f0020, 0x003b1220, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00391320, 0x006a0020, 0x00840020, 0x00840020, 0x00840020, 0x00840020, 0x00840020, 0x00840020, 0x00840020, 0x00840020, 0x00840020, 0x00840020, 0x00840020, 0x00840020, 0x00840020, 0x00840020, 0x006a0020, 0x00391320, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00361520, 0x00660020, 0x007d0020, 0x007d0020, 0x007d0020, 0x007d0020, 0x007d0020, 0x007d0020, 0x007d0020, 0x007d0020, 0x007d0020, 0x007d0020, 0x007d0020, 0x007d0020, 0x007d0020, 0x007d0020, 0x00650020, 0x00381420, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00351520, 0x005f0020, 0x00740020, 0x00740020, 0x00740020, 0x00740020, 0x00740020, 0x00740020, 0x00740020, 0x00740020, 0x00740020, 0x00740020, 0x00740020, 0x00740020, 0x00740020, 0x00740020, 0x005f0020, 0x00351520, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00321720, 0x00580320, 0x006a0020, 0x006a0020, 0x006a0020, 0x006a0020, 0x006a0020, 0x006a0020, 0x006a0020, 0x006a0020, 0x006a0020, 0x006a0020, 0x006a0020, 0x006a0020, 0x006a0020, 0x006a0020, 0x00580320, 0x00321720, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002f1820, 0x00500820, 0x005f0020, 0x005f0020, 0x005f0020, 0x005f0020, 0x005f0020, 0x005f0020, 0x005f0020, 0x005f0020, 0x005f0020, 0x005f0020, 0x005f0020, 0x005f0020, 0x005f0020, 0x005f0020, 0x00500820, 0x002f1820, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002d1a20, 0x00460d20, 0x00520620, 0x00540620, 0x00520620, 0x00540620, 0x00520620, 0x00540620, 0x00520620, 0x00540620, 0x00520620, 0x00540620, 0x00520620, 0x00540620, 0x00520620, 0x00540620, 0x00460d20, 0x002d1a20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x002a1b20, 0x001e0001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x00270001, 0x00280001, 0x001e0001, 0x002a1b20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00271c20, 0x00150001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x001c0001, 0x00150001, 0x00271c20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00241e20, 0x000c0001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x00100001, 0x000c0001, 0x00241e20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00211f20, 0x00050001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00070001, 0x00050001, 0x00211f20, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x001f2120, 0x00000201, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000301, 0x00000201, 0x001f2120, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x001d2120, 0x00000501, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000701, 0x00000601, 0x00000501, 0x001d2120, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x001c2220, 0x00000701, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000901, 0x00000801, 0x00000701, 0x001c2220, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x001d2120, 0x00000601, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000701, 0x00000601, 0x001d2120, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004c4e4d, 0x004a4e4d, 0x00494f4d, 0x00494f4d, 0x00494f4d, 0x00494f4d, 0x00494f4d, 0x00494f4d, 0x00494f4d, 0x00494f4d, 0x00494f4d, 0x00494f4d, 0x00494f4d, 0x00494f4d, 0x00494f4d, 0x00494f4d, 0x004a4e4d, 0x003f4140, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x004d4d4d, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00464646, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00393939, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00292929, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00181818, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00070707, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101 +}; + +#endif \ No newline at end of file diff --git a/kernel/arch/x86_64/gdt.cpp b/kernel/arch/x86_64/gdt.cpp new file mode 100644 index 0000000..19ec98e --- /dev/null +++ b/kernel/arch/x86_64/gdt.cpp @@ -0,0 +1,34 @@ +#include +#include "gdt.h" + +void gdt_entry(SegDesc* seg, uint32_t base, uint32_t limit, uint8_t access, uint8_t flags) { + // setting each part of the base by masking the part being set and shifting it to the right position + seg->base_low = base & 0xFFFF; + seg->base_mid = (base & 0xFF0000) >> 16; + seg->base_high = (base & 0xFF000000) >> 24; + + seg->limit_low = limit & 0xFFFF; + seg->flag_limit_high = (limit & 0xF0000) >> 16; + + // shifts flags to the right position and ors it with limit + seg->flag_limit_high |= (flags & 0xF) << 4; + + seg->access = access; +} + +void gdt_tss_entry(TssSegDesc* seg, uint64_t base, uint32_t limit, uint8_t access, uint8_t flags) { + // setting each part of the base by masking the part being set and shifting it to the right position + seg->base1 = base & 0xFFFF; + seg->base2 = (base & 0xFF0000) >> 16; + seg->base3 = (base & 0xFF000000) >> 24; + seg->base4 = (base & 0xFFFFFFFF00000000) >> 32; + + seg->limit_low = limit & 0xFFFF; + seg->flag_limit_high = (limit & 0xF0000) >> 16; + + // shifts flags to the right position and ors it with limit + seg->flag_limit_high |= (flags & 0xF) << 4; + + seg->access = access; + seg->reserved = 0; +} \ No newline at end of file diff --git a/kernel/arch/x86_64/gdt.h b/kernel/arch/x86_64/gdt.h new file mode 100644 index 0000000..4f68977 --- /dev/null +++ b/kernel/arch/x86_64/gdt.h @@ -0,0 +1,38 @@ +#ifndef GDT_H +#define GDT_H + +#include + +struct GDTR { + uint16_t size; + uint64_t offset; +}__attribute__((packed)); + +struct SegDesc { + uint16_t limit_low; + uint16_t base_low; + uint8_t base_mid; + uint8_t access; + uint8_t flag_limit_high; + uint8_t base_high; +}__attribute__((packed)); + +// tss segment descriptor is larger than the normal ones +struct TssSegDesc { + uint16_t limit_low; + uint16_t base1; // lowest base + uint8_t base2; + uint8_t access; + uint8_t flag_limit_high; // both in the same 8 bits + uint8_t base3; + uint32_t base4; // highest base + uint32_t reserved; +}__attribute__((packed)); + +void gdt_entry(SegDesc* seg, uint32_t base, uint32_t limit, uint8_t access, uint8_t flags); +void gdt_tss_entry(TssSegDesc* seg, uint64_t base, uint32_t limit, uint8_t access, uint8_t flags); + +extern "C" void load_gdt(GDTR*); +extern "C" void reload_segments(); + +#endif \ No newline at end of file diff --git a/kernel/arch/x86_64/idt.cpp b/kernel/arch/x86_64/idt.cpp new file mode 100644 index 0000000..fe3f45f --- /dev/null +++ b/kernel/arch/x86_64/idt.cpp @@ -0,0 +1,94 @@ +#include +#include "idt.h" + +extern "C" void isr0(); +extern "C" void isr1(); +extern "C" void isr2(); +extern "C" void isr3(); +extern "C" void isr4(); +extern "C" void isr5(); +extern "C" void isr6(); +extern "C" void isr7(); +extern "C" void isr8(); +extern "C" void isr9(); +extern "C" void isr10(); +extern "C" void isr11(); +extern "C" void isr12(); +extern "C" void isr13(); +extern "C" void isr14(); +extern "C" void isr15(); +extern "C" void isr16(); +extern "C" void isr17(); +extern "C" void isr18(); +extern "C" void isr19(); +extern "C" void isr20(); +extern "C" void isr21(); +extern "C" void isr22(); +extern "C" void isr23(); +extern "C" void isr24(); +extern "C" void isr25(); +extern "C" void isr26(); +extern "C" void isr27(); +extern "C" void isr28(); +extern "C" void isr29(); +extern "C" void isr30(); +extern "C" void isr31(); + +IdtEntry idt[256]; +IDTR idtr; + +void idt_entry(int num, uint64_t offset, uint16_t sel, uint8_t ist, uint8_t type_attributes) { + idt[num].offset_low = (uint64_t)offset & 0xFFFF; + idt[num].offset_mid = ((uint64_t)offset & 0xFFFF0000) >> 16; + idt[num].offset_high = ((uint64_t)offset & 0xFFFFFFFF00000000) >> 32; + + idt[num].seg_sel = sel; + + idt[num].ist = ist & 0b111; + + idt[num].type_attributes = type_attributes; + + idt[num].reserved = 0; +} + +extern "C" void load_idt(IDTR*); + +void setup_idt() { + idtr.size = (sizeof(struct IDTR) * 256); + idtr.offset = (uint64_t)idt; + + idt_entry(0, (uint64_t)isr0, 0x08, 0, 0x8E); + idt_entry(1, (uint64_t)isr1, 0x08, 0, 0x8E); + idt_entry(2, (uint64_t)isr2, 0x08, 0, 0x8E); + idt_entry(3, (uint64_t)isr3, 0x08, 0, 0x8E); + idt_entry(4, (uint64_t)isr4, 0x08, 0, 0x8E); + idt_entry(5, (uint64_t)isr5, 0x08, 0, 0x8E); + idt_entry(6, (uint64_t)isr6, 0x08, 0, 0x8E); + idt_entry(7, (uint64_t)isr7, 0x08, 0, 0x8E); + idt_entry(8, (uint64_t)isr8, 0x08, 0, 0x8E); + idt_entry(9, (uint64_t)isr9, 0x08, 0, 0x8E); + idt_entry(10, (uint64_t)isr10, 0x08, 0, 0x8E); + idt_entry(11, (uint64_t)isr11, 0x08, 0, 0x8E); + idt_entry(12, (uint64_t)isr12, 0x08, 0, 0x8E); + idt_entry(13, (uint64_t)isr13, 0x08, 0, 0x8E); + idt_entry(14, (uint64_t)isr14, 0x08, 0, 0x8E); + idt_entry(15, (uint64_t)isr15, 0x08, 0, 0x8E); + idt_entry(16, (uint64_t)isr16, 0x08, 0, 0x8E); + idt_entry(17, (uint64_t)isr17, 0x08, 0, 0x8E); + idt_entry(18, (uint64_t)isr18, 0x08, 0, 0x8E); + idt_entry(19, (uint64_t)isr19, 0x08, 0, 0x8E); + idt_entry(20, (uint64_t)isr20, 0x08, 0, 0x8E); + idt_entry(21, (uint64_t)isr21, 0x08, 0, 0x8E); + idt_entry(22, (uint64_t)isr22, 0x08, 0, 0x8E); + idt_entry(23, (uint64_t)isr23, 0x08, 0, 0x8E); + idt_entry(24, (uint64_t)isr24, 0x08, 0, 0x8E); + idt_entry(25, (uint64_t)isr25, 0x08, 0, 0x8E); + idt_entry(26, (uint64_t)isr26, 0x08, 0, 0x8E); + idt_entry(27, (uint64_t)isr27, 0x08, 0, 0x8E); + idt_entry(28, (uint64_t)isr28, 0x08, 0, 0x8E); + idt_entry(29, (uint64_t)isr29, 0x08, 0, 0x8E); + idt_entry(30, (uint64_t)isr30, 0x08, 0, 0x8E); + idt_entry(31, (uint64_t)isr31, 0x08, 0, 0x8E); + + load_idt(&idtr); +} \ No newline at end of file diff --git a/kernel/arch/x86_64/idt.h b/kernel/arch/x86_64/idt.h new file mode 100644 index 0000000..e6e2494 --- /dev/null +++ b/kernel/arch/x86_64/idt.h @@ -0,0 +1,24 @@ +#ifndef IDT_H +#define IDT_H + +#include + +struct IDTR { + uint16_t size; + uint64_t offset; +}__attribute__((packed)); + +struct IdtEntry { + uint16_t offset_low; + uint16_t seg_sel; + uint8_t ist; + uint8_t type_attributes; + uint16_t offset_mid; + uint32_t offset_high; + uint32_t reserved; +}__attribute__((packed)); + +void idt_entry(int num, uint64_t* offset, uint16_t sel, uint8_t ist, uint8_t type_attributes); +void setup_idt(); + +#endif \ No newline at end of file diff --git a/kernel/arch/x86_64/isr.asm b/kernel/arch/x86_64/isr.asm new file mode 100644 index 0000000..8f9d6d6 --- /dev/null +++ b/kernel/arch/x86_64/isr.asm @@ -0,0 +1,312 @@ +; The assembly part of the interrupt service routines + +global isr0 +global isr1 +global isr2 +global isr3 +global isr4 +global isr5 +global isr6 +global isr7 +global isr8 +global isr9 +global isr10 +global isr11 +global isr12 +global isr13 +global isr14 +global isr15 +global isr16 +global isr17 +global isr18 +global isr19 +global isr20 +global isr21 +global isr22 +global isr23 +global isr24 +global isr25 +global isr26 +global isr27 +global isr28 +global isr29 +global isr30 +global isr31 +global isr32 + +; macros to make up for the lack of pusha/popa +%macro pushregs 0 + push rax + push rdi + push rsi + push rdx + push rcx + push r8 + push r9 + push r10 + push r11 +%endmacro + +%macro popregs 0 + pop r11 + pop r10 + pop r9 + pop r8 + pop rcx + pop rdx + pop rsi + pop rdi + pop rax +%endmacro + +%macro halt 0 + .loop + hlt + jmp .loop +%endmacro + +section .text +align 4 + +extern exception_handler + +isr0: + xchg bx, bx + pushregs + mov rdi, 0 + call exception_handler + halta + popregs + iretq + +isr1: + pushregs + mov rdi, 1 + call exception_handler + xchg bx, bx + popregs + iretq + +isr2: + pushregs + mov rdi, 2 + call exception_handler + popregs + iretq + +isr3: + pushregs + mov rdi, 3 + call exception_handler + popregs + iretq + +isr4: + pushregs + mov rdi, 4 + call exception_handler + popregs + iretq + +isr5: + pushregs + mov rdi, 5 + call exception_handler + popregs + iretq + +isr6: + pushregs + mov rdi, 6 + call exception_handler + halt + popregs + iretq + +isr7: + pushregs + mov rdi, 7 + call exception_handler + popregs + iretq + +isr8: + pushregs + mov rdi, 8 + call exception_handler + halt + popregs + iretq + +isr9: + pushregs + mov rdi, 9 + call exception_handler + popregs + iretq + +isr10: + pushregs + mov rdi, 10 + call exception_handler + popregs + ; will deal with error codes later. need to be removed from the stack first + ; not sure if this works right yet + sub esp, 8 + iretq + +isr11: + pushregs + mov rdi, 11 + call exception_handler + popregs + sub esp, 8 + iretq + +isr12: + pushregs + mov rdi, 12 + call exception_handler + popregs + sub esp, 8 + iretq + +isr13: + pushregs + mov rdi, 13 + call exception_handler + popregs + sub esp, 8 + iretq + +isr14: + pushregs + mov rdi, 14 + call exception_handler + popregs + sub esp, 8 + iretq + +isr15: + pushregs + mov rdi, 15 + call exception_handler + popregs + iretq + +isr16: + pushregs + mov rdi, 16 + call exception_handler + popregs + iretq + +isr17: + pushregs + mov rdi, 17 + call exception_handler + popregs + sub esp, 8 + iretq + +isr18: + pushregs + mov rdi, 18 + call exception_handler + halt + popregs + iretq + +isr19: + pushregs + mov rdi, 19 + call exception_handler + popregs + iretq + +isr20: + pushregs + mov rdi, 20 + call exception_handler + popregs + iretq + +isr21: + pushregs + mov rdi, 21 + call exception_handler + popregs + sub esp, 8 + iretq + +isr22: + pushregs + mov rdi, 22 + call exception_handler + popregs + iretq + +isr23: + pushregs + mov rdi, 23 + call exception_handler + popregs + iretq + +isr24: + pushregs + mov rdi, 24 + call exception_handler + popregs + iretq + +isr25: + pushregs + mov rdi, 25 + call exception_handler + popregs + iretq + +isr26: + pushregs + mov rdi, 26 + call exception_handler + popregs + iretq + +isr27: + pushregs + mov rdi, 27 + call exception_handler + popregs + iretq + +isr28: + pushregs + mov rdi, 28 + call exception_handler + popregs + iretq + +isr29: + pushregs + mov rdi, 29 + call exception_handler + popregs + sub esp, 8 + iretq + +isr30: + pushregs + mov rdi, 30 + call exception_handler + popregs + sub esp, 8 + iretq + +isr31: + pushregs + mov rdi, 31 + call exception_handler + popregs + iretq \ No newline at end of file diff --git a/kernel/arch/x86_64/isr_handler.cpp b/kernel/arch/x86_64/isr_handler.cpp new file mode 100644 index 0000000..caae24d --- /dev/null +++ b/kernel/arch/x86_64/isr_handler.cpp @@ -0,0 +1,6 @@ +#include +#include + +extern "C" void exception_handler(int e) { + printf("Exception: %x", e); +} \ No newline at end of file diff --git a/kernel/arch/x86_64/limine.cpp b/kernel/arch/x86_64/limine.cpp index 9ea2bbc..6d7984e 100644 --- a/kernel/arch/x86_64/limine.cpp +++ b/kernel/arch/x86_64/limine.cpp @@ -3,6 +3,8 @@ #include #include #include "limine.h" +#include "gdt.h" +#include "idt.h" #include namespace { @@ -42,10 +44,26 @@ extern void (*__init_array_end[])(); extern "C" void kernel_main(); extern "C" void _start() { + asm("cli"); if (!LIMINE_BASE_REVISION_SUPPORTED) { hcf(); } + // setup gdt + SegDesc segs[5]; + GDTR gdtr{sizeof(struct SegDesc) * 5 - 1, (uint64_t)&segs}; + + gdt_entry(&segs[0], 0, 0, 0, 0); // null desc + gdt_entry(&segs[1], 0, 0xFFFFF, 0x9A, 0xA); // kcode + gdt_entry(&segs[2], 0, 0xFFFFF, 0x92, 0xA); // kdata + gdt_entry(&segs[3], 0, 0xFFFFF, 0xFA, 0xA); // ucode + gdt_entry(&segs[4], 0, 0xFFFFF, 0xF2, 0xA); // udata + + load_gdt(&gdtr); + reload_segments(); + + setup_idt(); + // initialize global constructors for (size_t i = 0; &__init_array[i] != __init_array_end; i++) { __init_array[i](); @@ -61,15 +79,27 @@ extern "C" void _start() { limine_framebuffer *framebuffer = framebuffer_request.response->framebuffers[0]; // Note: we assume the framebuffer model is RGB with 32-bit pixels. - for (size_t i = 0; i < 100; i++) { - volatile uint32_t *fb_ptr = static_cast(framebuffer->address); - fb_ptr[i * (framebuffer->pitch / 4) + i] = 0xffffff; - } - - Framebuffer fb((uint32_t*)framebuffer->address, framebuffer->width, framebuffer->height); - fb.drawpixel(727, 727, 0x9528fd); - - printf("video modes: %lx", framebuffer->mode_count); + // for (size_t i = 0; i < 100; i++) { + // volatile uint32_t *fb_ptr = static_cast(framebuffer->address); + // fb_ptr[i * (framebuffer->pitch / 4) + i] = 0xffffff; + // } + + asm("xchgw %bx, %bx"); + fb_init((uint32_t*)framebuffer->address, framebuffer->width, framebuffer->height); + draw_pixel(727, 727, 0x9528fd); + draw_pixel(0, 0, 0xff0000); + draw_pixel(1919, 1079, 0x00ff00); + // for (size_t i = 0; i < framebuffer->mode_count; i++) { + // printf("Mode %d\n", i); + // printf("Pitch %d\nWidth %d\nHeight %d\nbpp %d\nmem_model %d\n", + // framebuffer->modes[i]->pitch, framebuffer->modes[i]->width, framebuffer->modes[i]->height, + // framebuffer->modes[i]->bpp, framebuffer->modes[i]->memory_model); + // } + + printf("Actual framebuffer:\n"); + printf("Pitch %d\nWidth %d\nHeight %d\nbpp %d\nmem_model %d\n", + framebuffer->pitch, framebuffer->width, framebuffer->height, + framebuffer->bpp, framebuffer->memory_model); kernel_main(); diff --git a/kernel/arch/x86_64/load_desc.asm b/kernel/arch/x86_64/load_desc.asm new file mode 100644 index 0000000..df65c72 --- /dev/null +++ b/kernel/arch/x86_64/load_desc.asm @@ -0,0 +1,29 @@ +; GDT and IDT loading routines + +section .text +global load_gdt:function +load_gdt: + lgdt [rdi] + ret + +global reload_segments:function +reload_segments: + ; reload cs register + push 0x08 + lea rax, [rel .reload_cs] + push rax + retfq + +.reload_cs: + mov ax, 0x10 + mov ds, ax + mov es, ax + mov fs, ax + mov gs, ax + mov ss, ax + ret + +global load_idt:function +load_idt: + lidt [rdi] + ret \ No newline at end of file diff --git a/kernel/framebuffer.cpp b/kernel/framebuffer.cpp index a07d61a..ca6ddb6 100644 --- a/kernel/framebuffer.cpp +++ b/kernel/framebuffer.cpp @@ -2,21 +2,36 @@ #include #include -Framebuffer::Framebuffer(uint32_t* addr, const uint64_t width, const uint64_t height) - : addr {addr}, width {width}, height {height} { - clear(); +uint32_t* fb_addr; +uint64_t fb_width; +uint64_t fb_height; + +void fb_init(uint32_t* addr, uint64_t width, uint64_t height) { + fb_addr = addr; + fb_width = width; + fb_height = height; + fb_clear(); } -void Framebuffer::clear() { - for (size_t y = 0; y < height; y++) { - for (size_t x = 0; x < width; x++) { - const size_t i = y * width + x; - addr[i] = 0x000000; +void fb_clear() { + for (size_t y = 0; y < fb_height; y++) { + for (size_t x = 0; x < fb_width; x++) { + const size_t i = y * fb_width + x; + fb_addr[i] = 0x000000; } } } -void Framebuffer::drawpixel(const uint64_t x, const uint64_t y, const uint32_t color) { - const size_t pos = y * width + x; - addr[pos] = color; +void draw_pixel(const uint64_t x, const uint64_t y, const uint32_t color) { + const size_t pos = y * fb_width + x; + fb_addr[pos] = color; +} + +void draw_bitmap(const uint32_t* bitmap, const uint64_t x_pos, const uint64_t y_pos, const uint64_t width, const uint64_t height) { + for (size_t y = 0; y < height; y++) { + for (size_t x = 0; x < width; x++) { + const size_t i = y * width + x; + draw_pixel(x_pos + x, y_pos + y, bitmap[i]); + } + } } \ No newline at end of file diff --git a/kernel/include/framebuffer.h b/kernel/include/framebuffer.h index 6080810..b7f8ba2 100644 --- a/kernel/include/framebuffer.h +++ b/kernel/include/framebuffer.h @@ -3,16 +3,9 @@ #include -class Framebuffer { - private: - uint32_t* addr; - const uint64_t width; - const uint64_t height; - - public: - Framebuffer(uint32_t* addr, const uint64_t width, const uint64_t height); - void clear(); - void drawpixel(const uint64_t x, const uint64_t y, const uint32_t color); -}; +void fb_init(uint32_t* addr, uint64_t width, uint64_t height); +void fb_clear(); +void draw_pixel(const uint64_t x, const uint64_t y, const uint32_t color); +void draw_bitmap(const uint32_t* bitmap, const uint64_t x_pos, const uint64_t y_pos, const uint64_t width, const uint64_t height); #endif \ No newline at end of file diff --git a/kernel/makefile b/kernel/makefile index 33ab941..dfced86 100644 --- a/kernel/makefile +++ b/kernel/makefile @@ -25,7 +25,7 @@ LIBS = -nostdlib -lc -lgcc CPP_SRCS := $(shell find . -type f -name '*.cpp' -not -path './arch/*') \ $(shell find $(PWD)/kernel/arch/$(ARCH) -type f -name '*.cpp') HEADERS := $(shell find ./include -type f -name '*.h') -#ASMFILES := $(shell find $(PWD) -type f -name '*.asm' -prune $(PWD)/arch) \ +ASMFILES := $(shell find . -type f -name '*.asm' -not -path './arch/*') \ $(shell find $(PWD)/kernel/arch/$(ARCH) -type f -name '*.asm') #OBJS := $(patsubst %.c,%.o,$(C_SOURCES)) diff --git a/run-qemu.bat b/run-qemu.bat index b9c277b..1586d8c 100644 --- a/run-qemu.bat +++ b/run-qemu.bat @@ -1,2 +1,2 @@ @echo off -qemu-system-x86_64 -m 128 -drive format=raw,media=cdrom,file=emuos.iso -serial stdio \ No newline at end of file +qemu-system-x86_64 -m 128 -drive format=raw,media=cdrom,file=emuos.iso -serial stdio -no-reboot -no-shutdown \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 4956918086a85031bb47b28e868c0ff8e6cc8f95 Mon Sep 17 00:00:00 2001 From: EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> Date: Sat, 11 May 2024 23:50:41 -0400 Subject: changed width and height to be uint32_t instead of uint64_t --- kernel/framebuffer.cpp | 10 +++++----- kernel/include/framebuffer.h | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/kernel/framebuffer.cpp b/kernel/framebuffer.cpp index ca6ddb6..62ffee7 100644 --- a/kernel/framebuffer.cpp +++ b/kernel/framebuffer.cpp @@ -3,10 +3,10 @@ #include uint32_t* fb_addr; -uint64_t fb_width; -uint64_t fb_height; +uint32_t fb_width; +uint32_t fb_height; -void fb_init(uint32_t* addr, uint64_t width, uint64_t height) { +void fb_init(uint32_t* addr, uint32_t width, uint32_t height) { fb_addr = addr; fb_width = width; fb_height = height; @@ -22,12 +22,12 @@ void fb_clear() { } } -void draw_pixel(const uint64_t x, const uint64_t y, const uint32_t color) { +void draw_pixel(const uint32_t x, const uint32_t y, const uint32_t color) { const size_t pos = y * fb_width + x; fb_addr[pos] = color; } -void draw_bitmap(const uint32_t* bitmap, const uint64_t x_pos, const uint64_t y_pos, const uint64_t width, const uint64_t height) { +void draw_bitmap(const uint32_t* bitmap, const uint32_t x_pos, const uint32_t y_pos, const uint32_t width, const uint32_t height) { for (size_t y = 0; y < height; y++) { for (size_t x = 0; x < width; x++) { const size_t i = y * width + x; diff --git a/kernel/include/framebuffer.h b/kernel/include/framebuffer.h index b7f8ba2..7379d90 100644 --- a/kernel/include/framebuffer.h +++ b/kernel/include/framebuffer.h @@ -3,9 +3,9 @@ #include -void fb_init(uint32_t* addr, uint64_t width, uint64_t height); +void fb_init(uint32_t* addr, uint32_t width, uint32_t height); void fb_clear(); -void draw_pixel(const uint64_t x, const uint64_t y, const uint32_t color); -void draw_bitmap(const uint32_t* bitmap, const uint64_t x_pos, const uint64_t y_pos, const uint64_t width, const uint64_t height); +void draw_pixel(const uint32_t x, const uint32_t y, const uint32_t color); +void draw_bitmap(const uint32_t* bitmap, const uint32_t x_pos, const uint32_t y_pos, const uint32_t width, const uint32_t height); #endif \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 1bd17dce9a8297f86f3bb34b3f440490b601eca6 Mon Sep 17 00:00:00 2001 From: EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> Date: Fri, 31 May 2024 21:08:22 -0400 Subject: started working on pmm and fixed printf doing weird things to the numbers --- .bochsrc | 8 +- kernel/arch/x86_64/limine.cpp | 45 +++- kernel/arch/x86_64/limine.h | 587 ------------------------------------------ kernel/include/limine.h | 587 ++++++++++++++++++++++++++++++++++++++++++ kernel/include/mm/pmm.h | 27 ++ kernel/kernel.cpp | 2 +- kernel/makefile | 11 +- kernel/mm/pmm.cpp | 55 ++++ libc/printf.c | 26 +- makefile | 5 +- 10 files changed, 740 insertions(+), 613 deletions(-) delete mode 100644 kernel/arch/x86_64/limine.h create mode 100644 kernel/include/limine.h create mode 100644 kernel/include/mm/pmm.h create mode 100644 kernel/mm/pmm.cpp diff --git a/.bochsrc b/.bochsrc index 8cd280b..924ea32 100644 --- a/.bochsrc +++ b/.bochsrc @@ -3,13 +3,15 @@ boot: cdrom megs: 256 -display_library: sdl2 -#display_library: sdl2, options="gui_debug" +#display_library: sdl2 +display_library: sdl2, options="gui_debug" vga: extension=vbe magic_break: enabled=1 -clock: sync=none, time0=local +clock: sync=realtime, time0=local cpu: reset_on_triple_fault=0 + +com1: enabled=1, mode=file, dev=misc/bochs.txt \ No newline at end of file diff --git a/kernel/arch/x86_64/limine.cpp b/kernel/arch/x86_64/limine.cpp index 6d7984e..b592592 100644 --- a/kernel/arch/x86_64/limine.cpp +++ b/kernel/arch/x86_64/limine.cpp @@ -2,10 +2,11 @@ #include #include #include -#include "limine.h" +#include #include "gdt.h" #include "idt.h" #include +#include namespace { __attribute__((used, section(".requests"))) @@ -21,6 +22,24 @@ volatile limine_framebuffer_request framebuffer_request = { }; } +namespace { +__attribute__((used, section(".requests"))) +volatile limine_memmap_request memmap_request = { + .id = LIMINE_MEMMAP_REQUEST, + .revision = 0, + .response = nullptr +}; +} + +namespace { +__attribute__((used, section(".requests"))) +volatile limine_hhdm_request hhdm_request = { + .id = LIMINE_HHDM_REQUEST, + .revision = 0, + .response = nullptr +}; +} + namespace { __attribute__((used, section(".requests_start_marker"))) volatile LIMINE_REQUESTS_START_MARKER; @@ -30,7 +49,7 @@ volatile LIMINE_REQUESTS_END_MARKER; } namespace { -void hcf() { +[[noreturn]] void hcf() { asm("cli"); for (;;) { asm("hlt"); @@ -41,7 +60,7 @@ void hcf() { extern void (*__init_array[])(); extern void (*__init_array_end[])(); -extern "C" void kernel_main(); +void kernel_main(); extern "C" void _start() { asm("cli"); @@ -75,8 +94,12 @@ extern "C" void _start() { hcf(); } + if (memmap_request.response == nullptr) { + hcf(); + } + // Fetch the first framebuffer. - limine_framebuffer *framebuffer = framebuffer_request.response->framebuffers[0]; + limine_framebuffer* framebuffer = framebuffer_request.response->framebuffers[0]; // Note: we assume the framebuffer model is RGB with 32-bit pixels. // for (size_t i = 0; i < 100; i++) { @@ -84,11 +107,10 @@ extern "C" void _start() { // fb_ptr[i * (framebuffer->pitch / 4) + i] = 0xffffff; // } - asm("xchgw %bx, %bx"); fb_init((uint32_t*)framebuffer->address, framebuffer->width, framebuffer->height); draw_pixel(727, 727, 0x9528fd); draw_pixel(0, 0, 0xff0000); - draw_pixel(1919, 1079, 0x00ff00); + draw_pixel(framebuffer->width - 1, framebuffer->height - 1, 0x00ff00); // for (size_t i = 0; i < framebuffer->mode_count; i++) { // printf("Mode %d\n", i); // printf("Pitch %d\nWidth %d\nHeight %d\nbpp %d\nmem_model %d\n", @@ -100,6 +122,17 @@ extern "C" void _start() { printf("Pitch %d\nWidth %d\nHeight %d\nbpp %d\nmem_model %d\n", framebuffer->pitch, framebuffer->width, framebuffer->height, framebuffer->bpp, framebuffer->memory_model); + + limine_memmap_response* memmap = memmap_request.response; + for (int i = 0; i < memmap->entry_count; i++) { + printf("base: %lx\nlength: %lx\ntype: %d\n\n", + memmap->entries[i]->base, memmap->entries[i]->length, memmap->entries[i]->type); + } + + // broken printf mirroring 64 bit values for some reason + //uint64_t tester = 0xFFFE0000000000AE + 1; + //printf("aaaa: %lx\n", tester); + pmm_init(memmap_request.response, hhdm_request.response->offset); kernel_main(); diff --git a/kernel/arch/x86_64/limine.h b/kernel/arch/x86_64/limine.h deleted file mode 100644 index b4afb43..0000000 --- a/kernel/arch/x86_64/limine.h +++ /dev/null @@ -1,587 +0,0 @@ -/* BSD Zero Clause License */ - -/* Copyright (C) 2022-2024 mintsuki and contributors. - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#ifndef LIMINE_H -#define LIMINE_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* Misc */ - -#ifdef LIMINE_NO_POINTERS -# define LIMINE_PTR(TYPE) uint64_t -#else -# define LIMINE_PTR(TYPE) TYPE -#endif - -#ifdef __GNUC__ -# define LIMINE_DEPRECATED __attribute__((__deprecated__)) -# define LIMINE_DEPRECATED_IGNORE_START \ - _Pragma("GCC diagnostic push") \ - _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") -# define LIMINE_DEPRECATED_IGNORE_END \ - _Pragma("GCC diagnostic pop") -#else -# define LIMINE_DEPRECATED -# define LIMINE_DEPRECATED_IGNORE_START -# define LIMINE_DEPRECATED_IGNORE_END -#endif - -#define LIMINE_REQUESTS_START_MARKER \ - uint64_t limine_requests_start_marker[4] = { 0xf6b8f4b39de7d1ae, 0xfab91a6940fcb9cf, \ - 0x785c6ed015d3e316, 0x181e920a7852b9d9 }; -#define LIMINE_REQUESTS_END_MARKER \ - uint64_t limine_requests_end_marker[2] = { 0xadc0e0531bb10d03, 0x9572709f31764c62 }; - -#define LIMINE_REQUESTS_DELIMITER LIMINE_REQUESTS_END_MARKER - -#define LIMINE_BASE_REVISION(N) \ - uint64_t limine_base_revision[3] = { 0xf9562b2d5c95a6c8, 0x6a7b384944536bdc, (N) }; - -#define LIMINE_BASE_REVISION_SUPPORTED (limine_base_revision[2] == 0) - -#define LIMINE_COMMON_MAGIC 0xc7b1dd30df4c8b88, 0x0a82e883a194f07b - -struct limine_uuid { - uint32_t a; - uint16_t b; - uint16_t c; - uint8_t d[8]; -}; - -#define LIMINE_MEDIA_TYPE_GENERIC 0 -#define LIMINE_MEDIA_TYPE_OPTICAL 1 -#define LIMINE_MEDIA_TYPE_TFTP 2 - -struct limine_file { - uint64_t revision; - LIMINE_PTR(void *) address; - uint64_t size; - LIMINE_PTR(char *) path; - LIMINE_PTR(char *) cmdline; - uint32_t media_type; - uint32_t unused; - uint32_t tftp_ip; - uint32_t tftp_port; - uint32_t partition_index; - uint32_t mbr_disk_id; - struct limine_uuid gpt_disk_uuid; - struct limine_uuid gpt_part_uuid; - struct limine_uuid part_uuid; -}; - -/* Boot info */ - -#define LIMINE_BOOTLOADER_INFO_REQUEST { LIMINE_COMMON_MAGIC, 0xf55038d8e2a1202f, 0x279426fcf5f59740 } - -struct limine_bootloader_info_response { - uint64_t revision; - LIMINE_PTR(char *) name; - LIMINE_PTR(char *) version; -}; - -struct limine_bootloader_info_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_bootloader_info_response *) response; -}; - -/* Stack size */ - -#define LIMINE_STACK_SIZE_REQUEST { LIMINE_COMMON_MAGIC, 0x224ef0460a8e8926, 0xe1cb0fc25f46ea3d } - -struct limine_stack_size_response { - uint64_t revision; -}; - -struct limine_stack_size_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_stack_size_response *) response; - uint64_t stack_size; -}; - -/* HHDM */ - -#define LIMINE_HHDM_REQUEST { LIMINE_COMMON_MAGIC, 0x48dcf1cb8ad2b852, 0x63984e959a98244b } - -struct limine_hhdm_response { - uint64_t revision; - uint64_t offset; -}; - -struct limine_hhdm_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_hhdm_response *) response; -}; - -/* Framebuffer */ - -#define LIMINE_FRAMEBUFFER_REQUEST { LIMINE_COMMON_MAGIC, 0x9d5827dcd881dd75, 0xa3148604f6fab11b } - -#define LIMINE_FRAMEBUFFER_RGB 1 - -struct limine_video_mode { - uint64_t pitch; - uint64_t width; - uint64_t height; - uint16_t bpp; - uint8_t memory_model; - uint8_t red_mask_size; - uint8_t red_mask_shift; - uint8_t green_mask_size; - uint8_t green_mask_shift; - uint8_t blue_mask_size; - uint8_t blue_mask_shift; -}; - -struct limine_framebuffer { - LIMINE_PTR(void *) address; - uint64_t width; - uint64_t height; - uint64_t pitch; - uint16_t bpp; - uint8_t memory_model; - uint8_t red_mask_size; - uint8_t red_mask_shift; - uint8_t green_mask_size; - uint8_t green_mask_shift; - uint8_t blue_mask_size; - uint8_t blue_mask_shift; - uint8_t unused[7]; - uint64_t edid_size; - LIMINE_PTR(void *) edid; - /* Response revision 1 */ - uint64_t mode_count; - LIMINE_PTR(struct limine_video_mode **) modes; -}; - -struct limine_framebuffer_response { - uint64_t revision; - uint64_t framebuffer_count; - LIMINE_PTR(struct limine_framebuffer **) framebuffers; -}; - -struct limine_framebuffer_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_framebuffer_response *) response; -}; - -/* Terminal */ - -#define LIMINE_TERMINAL_REQUEST { LIMINE_COMMON_MAGIC, 0xc8ac59310c2b0844, 0xa68d0c7265d38878 } - -#define LIMINE_TERMINAL_CB_DEC 10 -#define LIMINE_TERMINAL_CB_BELL 20 -#define LIMINE_TERMINAL_CB_PRIVATE_ID 30 -#define LIMINE_TERMINAL_CB_STATUS_REPORT 40 -#define LIMINE_TERMINAL_CB_POS_REPORT 50 -#define LIMINE_TERMINAL_CB_KBD_LEDS 60 -#define LIMINE_TERMINAL_CB_MODE 70 -#define LIMINE_TERMINAL_CB_LINUX 80 - -#define LIMINE_TERMINAL_CTX_SIZE ((uint64_t)(-1)) -#define LIMINE_TERMINAL_CTX_SAVE ((uint64_t)(-2)) -#define LIMINE_TERMINAL_CTX_RESTORE ((uint64_t)(-3)) -#define LIMINE_TERMINAL_FULL_REFRESH ((uint64_t)(-4)) - -/* Response revision 1 */ -#define LIMINE_TERMINAL_OOB_OUTPUT_GET ((uint64_t)(-10)) -#define LIMINE_TERMINAL_OOB_OUTPUT_SET ((uint64_t)(-11)) - -#define LIMINE_TERMINAL_OOB_OUTPUT_OCRNL (1 << 0) -#define LIMINE_TERMINAL_OOB_OUTPUT_OFDEL (1 << 1) -#define LIMINE_TERMINAL_OOB_OUTPUT_OFILL (1 << 2) -#define LIMINE_TERMINAL_OOB_OUTPUT_OLCUC (1 << 3) -#define LIMINE_TERMINAL_OOB_OUTPUT_ONLCR (1 << 4) -#define LIMINE_TERMINAL_OOB_OUTPUT_ONLRET (1 << 5) -#define LIMINE_TERMINAL_OOB_OUTPUT_ONOCR (1 << 6) -#define LIMINE_TERMINAL_OOB_OUTPUT_OPOST (1 << 7) - -LIMINE_DEPRECATED_IGNORE_START - -struct LIMINE_DEPRECATED limine_terminal; - -typedef void (*limine_terminal_write)(struct limine_terminal *, const char *, uint64_t); -typedef void (*limine_terminal_callback)(struct limine_terminal *, uint64_t, uint64_t, uint64_t, uint64_t); - -struct LIMINE_DEPRECATED limine_terminal { - uint64_t columns; - uint64_t rows; - LIMINE_PTR(struct limine_framebuffer *) framebuffer; -}; - -struct LIMINE_DEPRECATED limine_terminal_response { - uint64_t revision; - uint64_t terminal_count; - LIMINE_PTR(struct limine_terminal **) terminals; - LIMINE_PTR(limine_terminal_write) write; -}; - -struct LIMINE_DEPRECATED limine_terminal_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_terminal_response *) response; - LIMINE_PTR(limine_terminal_callback) callback; -}; - -LIMINE_DEPRECATED_IGNORE_END - -/* Paging mode */ - -#define LIMINE_PAGING_MODE_REQUEST { LIMINE_COMMON_MAGIC, 0x95c1a0edab0944cb, 0xa4e5cb3842f7488a } - -#if defined (__x86_64__) || defined (__i386__) -#define LIMINE_PAGING_MODE_X86_64_4LVL 0 -#define LIMINE_PAGING_MODE_X86_64_5LVL 1 -#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_X86_64_5LVL -#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_X86_64_4LVL -#elif defined (__aarch64__) -#define LIMINE_PAGING_MODE_AARCH64_4LVL 0 -#define LIMINE_PAGING_MODE_AARCH64_5LVL 1 -#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_AARCH64_5LVL -#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_AARCH64_4LVL -#elif defined (__riscv) && (__riscv_xlen == 64) -#define LIMINE_PAGING_MODE_RISCV_SV39 0 -#define LIMINE_PAGING_MODE_RISCV_SV48 1 -#define LIMINE_PAGING_MODE_RISCV_SV57 2 -#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_RISCV_SV57 -#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_RISCV_SV48 -#else -#error Unknown architecture -#endif - -struct limine_paging_mode_response { - uint64_t revision; - uint64_t mode; - uint64_t flags; -}; - -struct limine_paging_mode_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_paging_mode_response *) response; - uint64_t mode; - uint64_t flags; -}; - -/* 5-level paging */ - -#define LIMINE_5_LEVEL_PAGING_REQUEST { LIMINE_COMMON_MAGIC, 0x94469551da9b3192, 0xebe5e86db7382888 } - -LIMINE_DEPRECATED_IGNORE_START - -struct LIMINE_DEPRECATED limine_5_level_paging_response { - uint64_t revision; -}; - -struct LIMINE_DEPRECATED limine_5_level_paging_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_5_level_paging_response *) response; -}; - -LIMINE_DEPRECATED_IGNORE_END - -/* SMP */ - -#define LIMINE_SMP_REQUEST { LIMINE_COMMON_MAGIC, 0x95a67b819a1b857e, 0xa0b61b723b6a73e0 } - -struct limine_smp_info; - -typedef void (*limine_goto_address)(struct limine_smp_info *); - -#if defined (__x86_64__) || defined (__i386__) - -#define LIMINE_SMP_X2APIC (1 << 0) - -struct limine_smp_info { - uint32_t processor_id; - uint32_t lapic_id; - uint64_t reserved; - LIMINE_PTR(limine_goto_address) goto_address; - uint64_t extra_argument; -}; - -struct limine_smp_response { - uint64_t revision; - uint32_t flags; - uint32_t bsp_lapic_id; - uint64_t cpu_count; - LIMINE_PTR(struct limine_smp_info **) cpus; -}; - -#elif defined (__aarch64__) - -struct limine_smp_info { - uint32_t processor_id; - uint32_t gic_iface_no; - uint64_t mpidr; - uint64_t reserved; - LIMINE_PTR(limine_goto_address) goto_address; - uint64_t extra_argument; -}; - -struct limine_smp_response { - uint64_t revision; - uint64_t flags; - uint64_t bsp_mpidr; - uint64_t cpu_count; - LIMINE_PTR(struct limine_smp_info **) cpus; -}; - -#elif defined (__riscv) && (__riscv_xlen == 64) - -struct limine_smp_info { - uint64_t processor_id; - uint64_t hartid; - uint64_t reserved; - LIMINE_PTR(limine_goto_address) goto_address; - uint64_t extra_argument; -}; - -struct limine_smp_response { - uint64_t revision; - uint64_t flags; - uint64_t bsp_hartid; - uint64_t cpu_count; - LIMINE_PTR(struct limine_smp_info **) cpus; -}; - -#else -#error Unknown architecture -#endif - -struct limine_smp_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_smp_response *) response; - uint64_t flags; -}; - -/* Memory map */ - -#define LIMINE_MEMMAP_REQUEST { LIMINE_COMMON_MAGIC, 0x67cf3d9d378a806f, 0xe304acdfc50c3c62 } - -#define LIMINE_MEMMAP_USABLE 0 -#define LIMINE_MEMMAP_RESERVED 1 -#define LIMINE_MEMMAP_ACPI_RECLAIMABLE 2 -#define LIMINE_MEMMAP_ACPI_NVS 3 -#define LIMINE_MEMMAP_BAD_MEMORY 4 -#define LIMINE_MEMMAP_BOOTLOADER_RECLAIMABLE 5 -#define LIMINE_MEMMAP_KERNEL_AND_MODULES 6 -#define LIMINE_MEMMAP_FRAMEBUFFER 7 - -struct limine_memmap_entry { - uint64_t base; - uint64_t length; - uint64_t type; -}; - -struct limine_memmap_response { - uint64_t revision; - uint64_t entry_count; - LIMINE_PTR(struct limine_memmap_entry **) entries; -}; - -struct limine_memmap_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_memmap_response *) response; -}; - -/* Entry point */ - -#define LIMINE_ENTRY_POINT_REQUEST { LIMINE_COMMON_MAGIC, 0x13d86c035a1cd3e1, 0x2b0caa89d8f3026a } - -typedef void (*limine_entry_point)(void); - -struct limine_entry_point_response { - uint64_t revision; -}; - -struct limine_entry_point_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_entry_point_response *) response; - LIMINE_PTR(limine_entry_point) entry; -}; - -/* Kernel File */ - -#define LIMINE_KERNEL_FILE_REQUEST { LIMINE_COMMON_MAGIC, 0xad97e90e83f1ed67, 0x31eb5d1c5ff23b69 } - -struct limine_kernel_file_response { - uint64_t revision; - LIMINE_PTR(struct limine_file *) kernel_file; -}; - -struct limine_kernel_file_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_kernel_file_response *) response; -}; - -/* Module */ - -#define LIMINE_MODULE_REQUEST { LIMINE_COMMON_MAGIC, 0x3e7e279702be32af, 0xca1c4f3bd1280cee } - -#define LIMINE_INTERNAL_MODULE_REQUIRED (1 << 0) -#define LIMINE_INTERNAL_MODULE_COMPRESSED (1 << 1) - -struct limine_internal_module { - LIMINE_PTR(const char *) path; - LIMINE_PTR(const char *) cmdline; - uint64_t flags; -}; - -struct limine_module_response { - uint64_t revision; - uint64_t module_count; - LIMINE_PTR(struct limine_file **) modules; -}; - -struct limine_module_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_module_response *) response; - - /* Request revision 1 */ - uint64_t internal_module_count; - LIMINE_PTR(struct limine_internal_module **) internal_modules; -}; - -/* RSDP */ - -#define LIMINE_RSDP_REQUEST { LIMINE_COMMON_MAGIC, 0xc5e77b6b397e7b43, 0x27637845accdcf3c } - -struct limine_rsdp_response { - uint64_t revision; - LIMINE_PTR(void *) address; -}; - -struct limine_rsdp_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_rsdp_response *) response; -}; - -/* SMBIOS */ - -#define LIMINE_SMBIOS_REQUEST { LIMINE_COMMON_MAGIC, 0x9e9046f11e095391, 0xaa4a520fefbde5ee } - -struct limine_smbios_response { - uint64_t revision; - LIMINE_PTR(void *) entry_32; - LIMINE_PTR(void *) entry_64; -}; - -struct limine_smbios_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_smbios_response *) response; -}; - -/* EFI system table */ - -#define LIMINE_EFI_SYSTEM_TABLE_REQUEST { LIMINE_COMMON_MAGIC, 0x5ceba5163eaaf6d6, 0x0a6981610cf65fcc } - -struct limine_efi_system_table_response { - uint64_t revision; - LIMINE_PTR(void *) address; -}; - -struct limine_efi_system_table_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_efi_system_table_response *) response; -}; - -/* EFI memory map */ - -#define LIMINE_EFI_MEMMAP_REQUEST { LIMINE_COMMON_MAGIC, 0x7df62a431d6872d5, 0xa4fcdfb3e57306c8 } - -struct limine_efi_memmap_response { - uint64_t revision; - LIMINE_PTR(void *) memmap; - uint64_t memmap_size; - uint64_t desc_size; - uint64_t desc_version; -}; - -struct limine_efi_memmap_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_efi_memmap_response *) response; -}; - -/* Boot time */ - -#define LIMINE_BOOT_TIME_REQUEST { LIMINE_COMMON_MAGIC, 0x502746e184c088aa, 0xfbc5ec83e6327893 } - -struct limine_boot_time_response { - uint64_t revision; - int64_t boot_time; -}; - -struct limine_boot_time_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_boot_time_response *) response; -}; - -/* Kernel address */ - -#define LIMINE_KERNEL_ADDRESS_REQUEST { LIMINE_COMMON_MAGIC, 0x71ba76863cc55f63, 0xb2644a48c516a487 } - -struct limine_kernel_address_response { - uint64_t revision; - uint64_t physical_base; - uint64_t virtual_base; -}; - -struct limine_kernel_address_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_kernel_address_response *) response; -}; - -/* Device Tree Blob */ - -#define LIMINE_DTB_REQUEST { LIMINE_COMMON_MAGIC, 0xb40ddb48fb54bac7, 0x545081493f81ffb7 } - -struct limine_dtb_response { - uint64_t revision; - LIMINE_PTR(void *) dtb_ptr; -}; - -struct limine_dtb_request { - uint64_t id[4]; - uint64_t revision; - LIMINE_PTR(struct limine_dtb_response *) response; -}; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/kernel/include/limine.h b/kernel/include/limine.h new file mode 100644 index 0000000..b4afb43 --- /dev/null +++ b/kernel/include/limine.h @@ -0,0 +1,587 @@ +/* BSD Zero Clause License */ + +/* Copyright (C) 2022-2024 mintsuki and contributors. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef LIMINE_H +#define LIMINE_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* Misc */ + +#ifdef LIMINE_NO_POINTERS +# define LIMINE_PTR(TYPE) uint64_t +#else +# define LIMINE_PTR(TYPE) TYPE +#endif + +#ifdef __GNUC__ +# define LIMINE_DEPRECATED __attribute__((__deprecated__)) +# define LIMINE_DEPRECATED_IGNORE_START \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +# define LIMINE_DEPRECATED_IGNORE_END \ + _Pragma("GCC diagnostic pop") +#else +# define LIMINE_DEPRECATED +# define LIMINE_DEPRECATED_IGNORE_START +# define LIMINE_DEPRECATED_IGNORE_END +#endif + +#define LIMINE_REQUESTS_START_MARKER \ + uint64_t limine_requests_start_marker[4] = { 0xf6b8f4b39de7d1ae, 0xfab91a6940fcb9cf, \ + 0x785c6ed015d3e316, 0x181e920a7852b9d9 }; +#define LIMINE_REQUESTS_END_MARKER \ + uint64_t limine_requests_end_marker[2] = { 0xadc0e0531bb10d03, 0x9572709f31764c62 }; + +#define LIMINE_REQUESTS_DELIMITER LIMINE_REQUESTS_END_MARKER + +#define LIMINE_BASE_REVISION(N) \ + uint64_t limine_base_revision[3] = { 0xf9562b2d5c95a6c8, 0x6a7b384944536bdc, (N) }; + +#define LIMINE_BASE_REVISION_SUPPORTED (limine_base_revision[2] == 0) + +#define LIMINE_COMMON_MAGIC 0xc7b1dd30df4c8b88, 0x0a82e883a194f07b + +struct limine_uuid { + uint32_t a; + uint16_t b; + uint16_t c; + uint8_t d[8]; +}; + +#define LIMINE_MEDIA_TYPE_GENERIC 0 +#define LIMINE_MEDIA_TYPE_OPTICAL 1 +#define LIMINE_MEDIA_TYPE_TFTP 2 + +struct limine_file { + uint64_t revision; + LIMINE_PTR(void *) address; + uint64_t size; + LIMINE_PTR(char *) path; + LIMINE_PTR(char *) cmdline; + uint32_t media_type; + uint32_t unused; + uint32_t tftp_ip; + uint32_t tftp_port; + uint32_t partition_index; + uint32_t mbr_disk_id; + struct limine_uuid gpt_disk_uuid; + struct limine_uuid gpt_part_uuid; + struct limine_uuid part_uuid; +}; + +/* Boot info */ + +#define LIMINE_BOOTLOADER_INFO_REQUEST { LIMINE_COMMON_MAGIC, 0xf55038d8e2a1202f, 0x279426fcf5f59740 } + +struct limine_bootloader_info_response { + uint64_t revision; + LIMINE_PTR(char *) name; + LIMINE_PTR(char *) version; +}; + +struct limine_bootloader_info_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_bootloader_info_response *) response; +}; + +/* Stack size */ + +#define LIMINE_STACK_SIZE_REQUEST { LIMINE_COMMON_MAGIC, 0x224ef0460a8e8926, 0xe1cb0fc25f46ea3d } + +struct limine_stack_size_response { + uint64_t revision; +}; + +struct limine_stack_size_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_stack_size_response *) response; + uint64_t stack_size; +}; + +/* HHDM */ + +#define LIMINE_HHDM_REQUEST { LIMINE_COMMON_MAGIC, 0x48dcf1cb8ad2b852, 0x63984e959a98244b } + +struct limine_hhdm_response { + uint64_t revision; + uint64_t offset; +}; + +struct limine_hhdm_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_hhdm_response *) response; +}; + +/* Framebuffer */ + +#define LIMINE_FRAMEBUFFER_REQUEST { LIMINE_COMMON_MAGIC, 0x9d5827dcd881dd75, 0xa3148604f6fab11b } + +#define LIMINE_FRAMEBUFFER_RGB 1 + +struct limine_video_mode { + uint64_t pitch; + uint64_t width; + uint64_t height; + uint16_t bpp; + uint8_t memory_model; + uint8_t red_mask_size; + uint8_t red_mask_shift; + uint8_t green_mask_size; + uint8_t green_mask_shift; + uint8_t blue_mask_size; + uint8_t blue_mask_shift; +}; + +struct limine_framebuffer { + LIMINE_PTR(void *) address; + uint64_t width; + uint64_t height; + uint64_t pitch; + uint16_t bpp; + uint8_t memory_model; + uint8_t red_mask_size; + uint8_t red_mask_shift; + uint8_t green_mask_size; + uint8_t green_mask_shift; + uint8_t blue_mask_size; + uint8_t blue_mask_shift; + uint8_t unused[7]; + uint64_t edid_size; + LIMINE_PTR(void *) edid; + /* Response revision 1 */ + uint64_t mode_count; + LIMINE_PTR(struct limine_video_mode **) modes; +}; + +struct limine_framebuffer_response { + uint64_t revision; + uint64_t framebuffer_count; + LIMINE_PTR(struct limine_framebuffer **) framebuffers; +}; + +struct limine_framebuffer_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_framebuffer_response *) response; +}; + +/* Terminal */ + +#define LIMINE_TERMINAL_REQUEST { LIMINE_COMMON_MAGIC, 0xc8ac59310c2b0844, 0xa68d0c7265d38878 } + +#define LIMINE_TERMINAL_CB_DEC 10 +#define LIMINE_TERMINAL_CB_BELL 20 +#define LIMINE_TERMINAL_CB_PRIVATE_ID 30 +#define LIMINE_TERMINAL_CB_STATUS_REPORT 40 +#define LIMINE_TERMINAL_CB_POS_REPORT 50 +#define LIMINE_TERMINAL_CB_KBD_LEDS 60 +#define LIMINE_TERMINAL_CB_MODE 70 +#define LIMINE_TERMINAL_CB_LINUX 80 + +#define LIMINE_TERMINAL_CTX_SIZE ((uint64_t)(-1)) +#define LIMINE_TERMINAL_CTX_SAVE ((uint64_t)(-2)) +#define LIMINE_TERMINAL_CTX_RESTORE ((uint64_t)(-3)) +#define LIMINE_TERMINAL_FULL_REFRESH ((uint64_t)(-4)) + +/* Response revision 1 */ +#define LIMINE_TERMINAL_OOB_OUTPUT_GET ((uint64_t)(-10)) +#define LIMINE_TERMINAL_OOB_OUTPUT_SET ((uint64_t)(-11)) + +#define LIMINE_TERMINAL_OOB_OUTPUT_OCRNL (1 << 0) +#define LIMINE_TERMINAL_OOB_OUTPUT_OFDEL (1 << 1) +#define LIMINE_TERMINAL_OOB_OUTPUT_OFILL (1 << 2) +#define LIMINE_TERMINAL_OOB_OUTPUT_OLCUC (1 << 3) +#define LIMINE_TERMINAL_OOB_OUTPUT_ONLCR (1 << 4) +#define LIMINE_TERMINAL_OOB_OUTPUT_ONLRET (1 << 5) +#define LIMINE_TERMINAL_OOB_OUTPUT_ONOCR (1 << 6) +#define LIMINE_TERMINAL_OOB_OUTPUT_OPOST (1 << 7) + +LIMINE_DEPRECATED_IGNORE_START + +struct LIMINE_DEPRECATED limine_terminal; + +typedef void (*limine_terminal_write)(struct limine_terminal *, const char *, uint64_t); +typedef void (*limine_terminal_callback)(struct limine_terminal *, uint64_t, uint64_t, uint64_t, uint64_t); + +struct LIMINE_DEPRECATED limine_terminal { + uint64_t columns; + uint64_t rows; + LIMINE_PTR(struct limine_framebuffer *) framebuffer; +}; + +struct LIMINE_DEPRECATED limine_terminal_response { + uint64_t revision; + uint64_t terminal_count; + LIMINE_PTR(struct limine_terminal **) terminals; + LIMINE_PTR(limine_terminal_write) write; +}; + +struct LIMINE_DEPRECATED limine_terminal_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_terminal_response *) response; + LIMINE_PTR(limine_terminal_callback) callback; +}; + +LIMINE_DEPRECATED_IGNORE_END + +/* Paging mode */ + +#define LIMINE_PAGING_MODE_REQUEST { LIMINE_COMMON_MAGIC, 0x95c1a0edab0944cb, 0xa4e5cb3842f7488a } + +#if defined (__x86_64__) || defined (__i386__) +#define LIMINE_PAGING_MODE_X86_64_4LVL 0 +#define LIMINE_PAGING_MODE_X86_64_5LVL 1 +#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_X86_64_5LVL +#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_X86_64_4LVL +#elif defined (__aarch64__) +#define LIMINE_PAGING_MODE_AARCH64_4LVL 0 +#define LIMINE_PAGING_MODE_AARCH64_5LVL 1 +#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_AARCH64_5LVL +#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_AARCH64_4LVL +#elif defined (__riscv) && (__riscv_xlen == 64) +#define LIMINE_PAGING_MODE_RISCV_SV39 0 +#define LIMINE_PAGING_MODE_RISCV_SV48 1 +#define LIMINE_PAGING_MODE_RISCV_SV57 2 +#define LIMINE_PAGING_MODE_MAX LIMINE_PAGING_MODE_RISCV_SV57 +#define LIMINE_PAGING_MODE_DEFAULT LIMINE_PAGING_MODE_RISCV_SV48 +#else +#error Unknown architecture +#endif + +struct limine_paging_mode_response { + uint64_t revision; + uint64_t mode; + uint64_t flags; +}; + +struct limine_paging_mode_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_paging_mode_response *) response; + uint64_t mode; + uint64_t flags; +}; + +/* 5-level paging */ + +#define LIMINE_5_LEVEL_PAGING_REQUEST { LIMINE_COMMON_MAGIC, 0x94469551da9b3192, 0xebe5e86db7382888 } + +LIMINE_DEPRECATED_IGNORE_START + +struct LIMINE_DEPRECATED limine_5_level_paging_response { + uint64_t revision; +}; + +struct LIMINE_DEPRECATED limine_5_level_paging_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_5_level_paging_response *) response; +}; + +LIMINE_DEPRECATED_IGNORE_END + +/* SMP */ + +#define LIMINE_SMP_REQUEST { LIMINE_COMMON_MAGIC, 0x95a67b819a1b857e, 0xa0b61b723b6a73e0 } + +struct limine_smp_info; + +typedef void (*limine_goto_address)(struct limine_smp_info *); + +#if defined (__x86_64__) || defined (__i386__) + +#define LIMINE_SMP_X2APIC (1 << 0) + +struct limine_smp_info { + uint32_t processor_id; + uint32_t lapic_id; + uint64_t reserved; + LIMINE_PTR(limine_goto_address) goto_address; + uint64_t extra_argument; +}; + +struct limine_smp_response { + uint64_t revision; + uint32_t flags; + uint32_t bsp_lapic_id; + uint64_t cpu_count; + LIMINE_PTR(struct limine_smp_info **) cpus; +}; + +#elif defined (__aarch64__) + +struct limine_smp_info { + uint32_t processor_id; + uint32_t gic_iface_no; + uint64_t mpidr; + uint64_t reserved; + LIMINE_PTR(limine_goto_address) goto_address; + uint64_t extra_argument; +}; + +struct limine_smp_response { + uint64_t revision; + uint64_t flags; + uint64_t bsp_mpidr; + uint64_t cpu_count; + LIMINE_PTR(struct limine_smp_info **) cpus; +}; + +#elif defined (__riscv) && (__riscv_xlen == 64) + +struct limine_smp_info { + uint64_t processor_id; + uint64_t hartid; + uint64_t reserved; + LIMINE_PTR(limine_goto_address) goto_address; + uint64_t extra_argument; +}; + +struct limine_smp_response { + uint64_t revision; + uint64_t flags; + uint64_t bsp_hartid; + uint64_t cpu_count; + LIMINE_PTR(struct limine_smp_info **) cpus; +}; + +#else +#error Unknown architecture +#endif + +struct limine_smp_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_smp_response *) response; + uint64_t flags; +}; + +/* Memory map */ + +#define LIMINE_MEMMAP_REQUEST { LIMINE_COMMON_MAGIC, 0x67cf3d9d378a806f, 0xe304acdfc50c3c62 } + +#define LIMINE_MEMMAP_USABLE 0 +#define LIMINE_MEMMAP_RESERVED 1 +#define LIMINE_MEMMAP_ACPI_RECLAIMABLE 2 +#define LIMINE_MEMMAP_ACPI_NVS 3 +#define LIMINE_MEMMAP_BAD_MEMORY 4 +#define LIMINE_MEMMAP_BOOTLOADER_RECLAIMABLE 5 +#define LIMINE_MEMMAP_KERNEL_AND_MODULES 6 +#define LIMINE_MEMMAP_FRAMEBUFFER 7 + +struct limine_memmap_entry { + uint64_t base; + uint64_t length; + uint64_t type; +}; + +struct limine_memmap_response { + uint64_t revision; + uint64_t entry_count; + LIMINE_PTR(struct limine_memmap_entry **) entries; +}; + +struct limine_memmap_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_memmap_response *) response; +}; + +/* Entry point */ + +#define LIMINE_ENTRY_POINT_REQUEST { LIMINE_COMMON_MAGIC, 0x13d86c035a1cd3e1, 0x2b0caa89d8f3026a } + +typedef void (*limine_entry_point)(void); + +struct limine_entry_point_response { + uint64_t revision; +}; + +struct limine_entry_point_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_entry_point_response *) response; + LIMINE_PTR(limine_entry_point) entry; +}; + +/* Kernel File */ + +#define LIMINE_KERNEL_FILE_REQUEST { LIMINE_COMMON_MAGIC, 0xad97e90e83f1ed67, 0x31eb5d1c5ff23b69 } + +struct limine_kernel_file_response { + uint64_t revision; + LIMINE_PTR(struct limine_file *) kernel_file; +}; + +struct limine_kernel_file_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_kernel_file_response *) response; +}; + +/* Module */ + +#define LIMINE_MODULE_REQUEST { LIMINE_COMMON_MAGIC, 0x3e7e279702be32af, 0xca1c4f3bd1280cee } + +#define LIMINE_INTERNAL_MODULE_REQUIRED (1 << 0) +#define LIMINE_INTERNAL_MODULE_COMPRESSED (1 << 1) + +struct limine_internal_module { + LIMINE_PTR(const char *) path; + LIMINE_PTR(const char *) cmdline; + uint64_t flags; +}; + +struct limine_module_response { + uint64_t revision; + uint64_t module_count; + LIMINE_PTR(struct limine_file **) modules; +}; + +struct limine_module_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_module_response *) response; + + /* Request revision 1 */ + uint64_t internal_module_count; + LIMINE_PTR(struct limine_internal_module **) internal_modules; +}; + +/* RSDP */ + +#define LIMINE_RSDP_REQUEST { LIMINE_COMMON_MAGIC, 0xc5e77b6b397e7b43, 0x27637845accdcf3c } + +struct limine_rsdp_response { + uint64_t revision; + LIMINE_PTR(void *) address; +}; + +struct limine_rsdp_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_rsdp_response *) response; +}; + +/* SMBIOS */ + +#define LIMINE_SMBIOS_REQUEST { LIMINE_COMMON_MAGIC, 0x9e9046f11e095391, 0xaa4a520fefbde5ee } + +struct limine_smbios_response { + uint64_t revision; + LIMINE_PTR(void *) entry_32; + LIMINE_PTR(void *) entry_64; +}; + +struct limine_smbios_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_smbios_response *) response; +}; + +/* EFI system table */ + +#define LIMINE_EFI_SYSTEM_TABLE_REQUEST { LIMINE_COMMON_MAGIC, 0x5ceba5163eaaf6d6, 0x0a6981610cf65fcc } + +struct limine_efi_system_table_response { + uint64_t revision; + LIMINE_PTR(void *) address; +}; + +struct limine_efi_system_table_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_efi_system_table_response *) response; +}; + +/* EFI memory map */ + +#define LIMINE_EFI_MEMMAP_REQUEST { LIMINE_COMMON_MAGIC, 0x7df62a431d6872d5, 0xa4fcdfb3e57306c8 } + +struct limine_efi_memmap_response { + uint64_t revision; + LIMINE_PTR(void *) memmap; + uint64_t memmap_size; + uint64_t desc_size; + uint64_t desc_version; +}; + +struct limine_efi_memmap_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_efi_memmap_response *) response; +}; + +/* Boot time */ + +#define LIMINE_BOOT_TIME_REQUEST { LIMINE_COMMON_MAGIC, 0x502746e184c088aa, 0xfbc5ec83e6327893 } + +struct limine_boot_time_response { + uint64_t revision; + int64_t boot_time; +}; + +struct limine_boot_time_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_boot_time_response *) response; +}; + +/* Kernel address */ + +#define LIMINE_KERNEL_ADDRESS_REQUEST { LIMINE_COMMON_MAGIC, 0x71ba76863cc55f63, 0xb2644a48c516a487 } + +struct limine_kernel_address_response { + uint64_t revision; + uint64_t physical_base; + uint64_t virtual_base; +}; + +struct limine_kernel_address_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_kernel_address_response *) response; +}; + +/* Device Tree Blob */ + +#define LIMINE_DTB_REQUEST { LIMINE_COMMON_MAGIC, 0xb40ddb48fb54bac7, 0x545081493f81ffb7 } + +struct limine_dtb_response { + uint64_t revision; + LIMINE_PTR(void *) dtb_ptr; +}; + +struct limine_dtb_request { + uint64_t id[4]; + uint64_t revision; + LIMINE_PTR(struct limine_dtb_response *) response; +}; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/kernel/include/mm/pmm.h b/kernel/include/mm/pmm.h new file mode 100644 index 0000000..bfe21c5 --- /dev/null +++ b/kernel/include/mm/pmm.h @@ -0,0 +1,27 @@ +#ifndef PMM_H +#define PMM_H + +#include +#include +#include + +enum mm_type { + MEM_USABLE, + MEM_RESERVED +}; + +struct MMEntry { + uint64_t base; + uint64_t length; + mm_type type; +}; + +struct PBitmap { + uint64_t* addr; + size_t size; + MMEntry entry; +}; + +void pmm_init(limine_memmap_response* memmap, uint64_t hhdm_offset); + +#endif \ No newline at end of file diff --git a/kernel/kernel.cpp b/kernel/kernel.cpp index a0394ea..e72500e 100644 --- a/kernel/kernel.cpp +++ b/kernel/kernel.cpp @@ -12,7 +12,7 @@ unsigned int _kernel_begin; unsigned int _kernel_end; -extern "C" void kernel_main(void) { +void kernel_main(void) { // Initialize terminal //terminal_initialize(); diff --git a/kernel/makefile b/kernel/makefile index dfced86..030caaa 100644 --- a/kernel/makefile +++ b/kernel/makefile @@ -3,15 +3,16 @@ CFLAGS := -ffreestanding -Wall -Wextra -g -std=gnu99 -O2 -Iinclude --sysroot=$(SYSROOT) \ -isystem="/usr/include" CXXFLAGS := -ffreestanding -Wall -Wextra -fno-exceptions -fno-rtti -g -O2 -Iinclude --sysroot=$(SYSROOT) \ - -isystem="/usr/include" + -isystem="/usr/include" -std=gnu++20 LDFLAGS := -T arch/$(ARCH)/linker.ld -ffreestanding -g -O2 -Iinclude --sysroot=$(SYSROOT) \ -isystem="/usr/include" ASMFLAGS := ifeq ($(ARCH),x86_64) -CFLAGS += -mno-red-zone -mcmodel=kernel -mno-sse -mno-sse2 -mno-mmx -CXXFLAGS += -mno-red-zone -mcmodel=kernel -mno-sse -mno-sse2 -mno-mmx -LDFLAGS += -mno-red-zone -mcmodel=kernel -mno-sse -mno-sse2 -mno-mmx +CFLAGS += -mno-red-zone -mcmodel=kernel -mno-80387 -mno-sse -mno-sse2 -mno-mmx +CXXFLAGS += -mno-red-zone -mcmodel=kernel -mno-80387 -mno-sse -mno-sse2 -mno-mmx +LDFLAGS += -mno-red-zone -mcmodel=kernel -mno-80387 -mno-sse -mno-sse2 -mno-mmx \ + -z max-page-size=0x1000 ASMFLAGS += -felf64 endif @@ -75,4 +76,4 @@ install-headers: $(HEADERS) clean: $(info [INFO] Cleaning) - $(RM) ${OBJS} $(DEPFILES) kernel.bin \ No newline at end of file + $(RM) ${OBJS} $(DEPFILES) kernel.bin diff --git a/kernel/mm/pmm.cpp b/kernel/mm/pmm.cpp new file mode 100644 index 0000000..bd8f12c --- /dev/null +++ b/kernel/mm/pmm.cpp @@ -0,0 +1,55 @@ +#include +#include + +PBitmap bitmap; + +// Finds the biggest chunk of memory +static MMEntry find_mem_chunk(limine_memmap_response* memmap) { + uint64_t highestmem = 0; + size_t highestindex = 0; + limine_memmap_entry* entries = memmap->entries[0]; + for (size_t i = 0; i < memmap->entry_count; i++) { + if (entries[i].type == LIMINE_MEMMAP_USABLE && entries[i].length > highestmem) { + highestmem = entries[i].length; + highestindex = i; + } + } + + return MMEntry{ + entries[highestindex].base, + entries[highestindex].length, + MEM_USABLE + }; +} + +void pmm_init(limine_memmap_response* memmap, uint64_t hhdm_offset) { + MMEntry mem_entry = find_mem_chunk(memmap); + + // Round any numbers needed to 4K boudaries + //mem_entry.base += 4096 - (mem_entry.base % 4096); + mem_entry.length -= mem_entry.length % 4096; + + // setup bitmap at the beginning of the chunk + bitmap.entry = mem_entry; + bitmap.addr = (uint64_t*)(bitmap.entry.base + hhdm_offset); + // divided by byte size since size is for iterating over the bitmap + bitmap.size = mem_entry.length / 4096 / sizeof(uint64_t); + + printf("addr: %lx\nsize: %lx\n", (uint64_t)bitmap.addr, bitmap.size); + printf("hhdm offset: %lx\n", hhdm_offset); + + // write test + for (size_t i = 0; i < 100; i++) { + bitmap.addr[i] = i; + //printf("value %d: %lx\n", i, bitmap.addr[i]); + } + + // read test + for (size_t i = 0; i < bitmap.size; i++) { + //printf("value %d: %lx\n"); + } +} + +uint64_t get_phys_page() { + +} \ No newline at end of file diff --git a/libc/printf.c b/libc/printf.c index 72a4749..0bb5506 100644 --- a/libc/printf.c +++ b/libc/printf.c @@ -37,10 +37,14 @@ static const char* itoa(unsigned int num, char* str, unsigned int base) { } // reverse the string - for (int i = 0; i < cou; i++) { - char temp = str[i]; - str[i] = str[cou - i - 1]; - str[cou - 1] = temp; + size_t start = 0; + size_t end = cou - 1; + while (start < end) { + char temp = str[start]; + str[start] = str[end]; + str[end] = temp; + ++start; + --end; } str[cou] = '\0'; @@ -49,7 +53,7 @@ static const char* itoa(unsigned int num, char* str, unsigned int base) { // have no idea if there's a better way to do this. for %lx static const char* itoa_u64(unsigned long long num, char* str, int base) { - int cou = 0; // nt + size_t cou = 0; // nt if (num == 0) { // 0 str[cou] = '0'; @@ -71,10 +75,14 @@ static const char* itoa_u64(unsigned long long num, char* str, int base) { } // reverse the string - for (int i = 0; i < cou; i++) { - char temp = str[i]; - str[i] = str[cou - i - 1]; - str[cou - 1] = temp; + size_t start = 0; + size_t end = cou - 1; + while (start < end) { + char temp = str[start]; + str[start] = str[end]; + str[end] = temp; + ++start; + --end; } str[cou] = '\0'; diff --git a/makefile b/makefile index d8535bc..8717518 100644 --- a/makefile +++ b/makefile @@ -34,10 +34,11 @@ limine: build-all -no-emul-boot -boot-load-size 4 -boot-info-table \ --efi-boot boot/limine/limine-uefi-cd.bin \ -efi-boot-part --efi-boot-image --protective-msdos-label \ - isodir -o emuos.iso + isodir -o $(OS_NAME).iso + limine bios-install $(OS_NAME).iso qemu: limine - $(QEMU) -no-shutdown -no-reboot --serial stdio -s -m 512 -hda $(OS_NAME).iso + $(QEMU) -no-shutdown -no-reboot --serial stdio -s -m 1024 -hda $(OS_NAME).iso install: install-headers install-libraries -- cgit v1.2.3-70-g09d2 From e5267be3ba480ffca40a7a2b5f3bb957ec45975e Mon Sep 17 00:00:00 2001 From: Emu <89668582+EmulatedSeasons@users.noreply.github.com> Date: Fri, 31 May 2024 23:01:36 -0400 Subject: Create LICENSE.txt --- LICENSE.txt | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE.txt diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..656108d --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 EmulatedSeasons + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. -- cgit v1.2.3-70-g09d2 From fd5a1699592ce0afafc42ebf22401596abcdfc28 Mon Sep 17 00:00:00 2001 From: Emu <89668582+EmulatedSeasons@users.noreply.github.com> Date: Fri, 31 May 2024 23:34:47 -0400 Subject: Update README.md --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f16025f..b1143ee 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # i have no idea what to name this project -isodir/boot/grub and sysroot/ should be created before building for the first time -requires an `i686-elf` cross compiler as well as nasm and gnumake. can only be built on linux and wsl. +Requires an `x86_64-elf` cross compiler as well as nasm and gnumake. libgcc must be built without redzone and mcmodel=kernel. -to build use `make` \ No newline at end of file +isodir/boot/grub and sysroot/ should be created before building for the first time. Headers also have to be copied to sysroot/include first time. Can be done with `make install-headers` or running `setup_sysroot.sh` which also sets up the folders that need to be present in the sysroot. + +To build use `make` -- cgit v1.2.3-70-g09d2